unit U_TradeClothInEdit; interface uses Windows, Messages, strUtils, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, StdCtrls, ExtCtrls, ADODB, DBClient, cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, MMSystem, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, MovePanel, cxCheckBox, Menus, ComCtrls, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, U_BaseList, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, RM_Common, RM_Class, RM_GridReport, RM_Dataset, Vcl.ToolWin, dxSkinBasic, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee, dxSkinDarkroom, dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray, dxSkinOffice2013White, dxSkinOffice2016Colorful, dxSkinOffice2016Dark, dxSkinOffice2019Black, dxSkinOffice2019Colorful, dxSkinOffice2019DarkGray, dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver, dxSkinSpringtime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinTheBezier, dxSkinValentine, dxSkinVisualStudio2013Blue, dxSkinVisualStudio2013Dark, dxSkinVisualStudio2013Light, dxSkinVS2010, dxSkinWhiteprint, dxSkinWXI, dxSkinXmas2008Blue, dxScrollbarAnnotations; type TfrmTradeClothInEdit = class(TfrmBaseList) GPM_1: TcxGridPopupMenu; CDS_1: TClientDataSet; DS_1: TDataSource; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; Panel1: TPanel; CDS_2: TClientDataSet; DS_2: TDataSource; GPM_2: TcxGridPopupMenu; DS_3: TDataSource; CDS_3: TClientDataSet; GPM_3: TcxGridPopupMenu; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; v1OrderNo: TcxGridDBColumn; v2Column2: TcxGridDBColumn; cxGridDBColumn2: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column14: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; v1PRTMF: TcxGridDBColumn; v1PRTKZ: TcxGridDBColumn; cxGrid2Level1: TcxGridLevel; Panel2: TPanel; Panel4: TPanel; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column6: TcxGridDBColumn; v1Column11: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column3: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v2Column6: TcxGridDBColumn; v2Column5: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; ToolBar1: TToolBar; ToolButton2: TToolButton; cxGrid3: TcxGrid; Tv3: TcxGridDBTableView; v3Column5: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; v3MJID: TcxGridDBColumn; v3Column3: TcxGridDBColumn; Tv3Column1: TcxGridDBColumn; v3Column4: TcxGridDBColumn; cxGridDBColumn6: TcxGridDBColumn; v3Column1: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ToolBar2: TToolBar; ToolButton1: TToolButton; Panel3: TPanel; Label4: TLabel; Label5: TLabel; Label11: TLabel; CRTime: TDateTimePicker; InNo: TEdit; CRType: TComboBox; ToolBar3: TToolBar; ToolButton3: TToolButton; btnGetOutNo: TToolButton; ToolButton6: TToolButton; ToolButton7: TToolButton; ToolButton8: TToolButton; edtScan: TEdit; Label6: TLabel; ToolButton9: TToolButton; ToolButton10: TToolButton; ToolButton11: TToolButton; ToolButton12: TToolButton; Tv2Column2: TcxGridDBColumn; ToolButton4: TToolButton; Tv1Column2: TcxGridDBColumn; Tv3Column2: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; Tv3Column3: TcxGridDBColumn; Tv2Column1: TcxGridDBColumn; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure btnGetOutNoClick(Sender: TObject); procedure ToolButton7Click(Sender: TObject); procedure ToolButton8Click(Sender: TObject); procedure edtScanKeyPress(Sender: TObject; var Key: Char); procedure ToolButton9Click(Sender: TObject); procedure ToolButton10Click(Sender: TObject); procedure ToolButton11Click(Sender: TObject); procedure ToolButton12Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); private { Private declarations } FScan, FSubIds: string; procedure PlayWav(MWav: string); procedure InitGrid1(); procedure InitGrid2(); procedure InitGrid3(); procedure ScanSubID(); procedure ScanCIID(); public { Public declarations } end; var frmTradeClothInEdit: TfrmTradeClothInEdit; implementation uses U_DataLink, U_RTFun, U_TradeClothWaitStorage, U_LabelPrint; {$R *.dfm} procedure TfrmTradeClothInEdit.PlayWav(MWav: string); begin if FileExists(PChar(ExtractFilePath(Application.ExeName) + 'wav\' + MWav + '.wav')) then PlaySound(PChar(ExtractFilePath(Application.ExeName) + 'wav\' + MWav + '.wav'), 0, SND_ASYNC); end; procedure TfrmTradeClothInEdit.InitGrid2(); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.*,B.* '); sql.Add(' from Trade_Plan_Main A inner join Trade_Plan_Sub B on A.MainId=B.Mainid'); if TRIm(FSubIds) <> '' then sql.add('and SubId in (' + FSubIds + ')') else sql.add('and 1=2'); Open; end; SCreateCDS(ADOQueryTemp, CDS_2); SInitCDSData(ADOQueryTemp, CDS_2); end; procedure TfrmTradeClothInEdit.InitGrid1(); begin with ADOQueryMain do begin Close; sql.Clear; sql.Add('select A.IOFlag,A.IONo,A.IOID,B.* from Trade_Cloth_IO A '); sql.Add('right join Trade_Cloth_Stock B on A.StkId=B.StkId '); sql.Add('where B.StkExists=0 and B.StkCycles=0 '); if TRIm(FSubIds) <> '' then begin sql.add('and SubID in (' + FSubIds + ')'); end else sql.add('and 1=2'); Open; end; SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); end; procedure TfrmTradeClothInEdit.InitGrid3(); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.IOFlag,A.IONo,A.IOID,B.* from Trade_Cloth_IO A '); sql.Add('inner join Trade_Cloth_Stock B on A.StkId=B.StkId and A.IOCycles=B.StkCycles '); sql.Add('where A.IOFlag=''入库'' and B.StkExists=1 '); if TRIm(InNo.Text) <> '' then sql.add('and IONO =' + QuotedStr(TRIm(InNo.Text))) else sql.add('and 1=2'); Open; end; SCreateCDS(ADOQueryTemp, CDS_3); SInitCDSData(ADOQueryTemp, CDS_3); end; procedure TfrmTradeClothInEdit.ScanSubID(); var MStkIds: string; begin try if Trim(InNo.Text) = '' then raise Exception.Create('入库单号不能为空!'); if CDS_2.IsEmpty then raise Exception.Create('未选单不能扫描出库!'); if not CDS_1.Locate('IONo', Trim(FScan), []) then raise Exception.Create('此入库单不包含在待入库的卷数据中'); MStkIds := ''; with CDS_1 do begin First; while CDS_1.Locate('IONo', Trim(FScan), []) = True do begin MStkIds := MStkIds + (Trim(CDS_1.FieldByName('StkId').AsString)) + ','; MoveCDS(CDS_1, CDS_3); CDS_1.Delete; end; end; MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1); try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; Sql.Clear; Sql.Add('exec P_Trade_Cloth_In '); Sql.Add('@StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', CRTime.DateTime))); Sql.Add(',@IOType=' + Quotedstr(crtype.Text)); Sql.Add(',@IONO=' + Quotedstr(InNo.Text)); Sql.Add(',@StkPosition=' + Quotedstr('')); Sql.Add(',@FillId=' + Quotedstr(DCode)); Sql.Add(',@Filler=' + Quotedstr(DName)); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; ADOQueryCmd.Connection.CommitTrans; PlayWav('正确'); except ADOQueryCmd.Connection.RollbackTrans; raise Exception.Create(PChar(Exception(ExceptObject).Message)); end; except application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlayWav('发货错误'); end; end; procedure TfrmTradeClothInEdit.ScanCIID(); var MStkIds: string; begin try if Trim(InNo.Text) = '' then raise Exception.Create('入库单号不能为空!'); if CDS_2.IsEmpty then raise Exception.Create('未选单不能扫描出库!'); if not CDS_1.Locate('StkId', Trim(FScan), []) then raise Exception.Create('此条码不包含在待入库的卷数据中'); MStkIds := (Trim(CDS_1.FieldByName('StkId').AsString)); MoveCDS(CDS_1, CDS_3); CDS_1.Delete; try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; Sql.Clear; Sql.Add('exec P_Trade_Cloth_In '); Sql.Add('@StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', CRTime.DateTime))); Sql.Add(',@IOType=' + Quotedstr(crtype.Text)); Sql.Add(',@IONO=' + Quotedstr(InNo.Text)); Sql.Add(',@StkPosition=' + Quotedstr('')); Sql.Add(',@FillId=' + Quotedstr(DCode)); Sql.Add(',@Filler=' + Quotedstr(DName)); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; ADOQueryCmd.Connection.CommitTrans; PlayWav('正确'); except ADOQueryCmd.Connection.RollbackTrans; raise Exception.Create(PChar(Exception(ExceptObject).Message)); end; except application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlayWav('发货错误'); end; end; procedure TfrmTradeClothInEdit.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmTradeClothInEdit.FormDestroy(Sender: TObject); begin inherited; frmTradeClothInEdit := nil; end; procedure TfrmTradeClothInEdit.FormShow(Sender: TObject); begin inherited; ReadCxGrid(self.caption + 'Tv1', Tv1, '成品仓库'); ReadCxGrid(self.caption + 'Tv2', Tv2, '成品仓库'); ReadCxGrid(self.caption + 'Tv3', Tv3, '成品仓库'); InitGrid2(); InitGrid1(); InitGrid3(); CRTime.DateTime := SGetServerDate(ADOQueryTemp); end; procedure TfrmTradeClothInEdit.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin if CDS_3.IsEmpty = False then Exit; if CDS_2.IsEmpty then Exit; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; CDS_1.DisableControls; with CDS_1 do begin First; while not Eof do begin if Trim(CDS_1.fieldbyname('SubId').AsString) = Trim(CDS_2.fieldbyname('SubId').AsString) then begin CDS_1.Delete; end else Next; end; end; CDS_1.EnableControls; CDS_2.Delete; end; procedure TfrmTradeClothInEdit.edtScanKeyPress(Sender: TObject; var Key: Char); var maxno, SMFlag, KYCKFlag, FMainId, ff: string; FFQty: Integer; begin if Key = #13 then begin FScan := TRIM(edtScan.Text); edtScan.Text := ''; if Copy(FScan, 1, 2) = 'RK' then begin ScanSubID(); end else begin ScanCIID(); {if Trim(edtIsSMTH.Text) = '' then begin if Copy(FScan, 1, 2) = 'BI' then begin if not JudgeBao() then exit; SaveCKBao(); PlaySound('wav/正确.wav', 0, SND_FILENAME or SND_ASYNC); end else begin if not JudgeJTM() then exit; SaveCKJTM(); PlaySound('wav/正确.wav', 0, SND_FILENAME or SND_ASYNC); end; end else begin if JudgeJTMCX() then //检测卷条码 SaveCKJTMCX(); end; } // with ADOQueryCmd do // begin // Close; // sql.Clear; // sql.Add('exec P_FH_UP_FHQty ''' + Trim(CKNO.Text) + ''''); // ExecSQL; // end; end; end; end; procedure TfrmTradeClothInEdit.ToolButton10Click(Sender: TObject); begin SelOKNo(CDS_1, False); end; procedure TfrmTradeClothInEdit.ToolButton11Click(Sender: TObject); begin SelOKNo(CDS_3, True); end; procedure TfrmTradeClothInEdit.ToolButton12Click(Sender: TObject); begin SelOKNo(CDS_3, False); end; procedure TfrmTradeClothInEdit.ToolButton1Click(Sender: TObject); var MStkIds, MIOIDS: string; begin if CDS_3.IsEmpty then Exit; if Application.MessageBox('确定要执行此操作吗?', '提示', 32 + 4) <> IDYES then Exit; try if not CDS_3.Locate('SSel', True, []) then raise Exception.Create('请选择数据'); MStkIds := ''; MIOIDS := ''; with CDS_3 do begin while CDS_3.Locate('SSel', True, []) do begin MStkIds := MStkIds + (Trim(CDS_3.FieldByName('StkId').AsString)) + ','; MIOIDS := MIOIDS + (Trim(CDS_3.FieldByName('IOID').AsString)) + ','; CDS_3.Delete; end; end; MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1); MIOIDS := copy(MIOIDS, 1, Length(MIOIDS) - 1); try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; Sql.Clear; Sql.Add('exec P_Trade_Cloth_ReIn '); Sql.Add('@StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOIDS=' + quotedstr(trim(MIOIDS))); Sql.Add(',@FillId=' + Quotedstr(DCode)); Sql.Add(',@Filler=' + Quotedstr(DName)); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; ADOQueryCmd.Connection.CommitTrans; PlayWav('正确'); InitGrid1(); except ADOQueryCmd.Connection.RollbackTrans; raise Exception.Create(PChar(Exception(ExceptObject).Message)); end; except InitGrid1(); InitGrid3(); application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlayWav('发货错误'); end; end; procedure TfrmTradeClothInEdit.ToolButton2Click(Sender: TObject); var MStkIds: string; begin try if Trim(InNo.Text) = '' then raise Exception.Create('入库单号不能为空!'); if CDS_2.IsEmpty then raise Exception.Create('未选单不能扫描出库!'); if not CDS_1.Locate('SSel', True, []) then raise Exception.Create('请选择数据'); MStkIds := ''; with CDS_1 do begin while CDS_1.Locate('SSel', True, []) = True do begin MStkIds := MStkIds + Trim(CDS_1.FieldByName('StkId').AsString) + ','; CDS_1.Delete; end; end; MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1); try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; Sql.Clear; Sql.Add('exec P_Trade_Cloth_In '); Sql.Add('@StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', CRTime.DateTime))); Sql.Add(',@IOType=' + Quotedstr(crtype.Text)); Sql.Add(',@IONO=' + Quotedstr(InNo.Text)); Sql.Add(',@StkPosition=' + Quotedstr('')); Sql.Add(',@FillId=' + Quotedstr(DCode)); Sql.Add(',@Filler=' + Quotedstr(DName)); // ShowMessage(SQL.Text); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; ADOQueryCmd.Connection.CommitTrans; PlayWav('正确'); InitGrid3(); except ADOQueryCmd.Connection.RollbackTrans; raise Exception.Create(PChar(Exception(ExceptObject).Message)); end; except InitGrid1(); InitGrid3(); application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlayWav('发货错误'); end; end; procedure TfrmTradeClothInEdit.ToolButton3Click(Sender: TObject); begin if Trim(InNo.Text) = '' then Exit; try frmLabelPrint := TfrmLabelPrint.Create(Application); with frmLabelPrint do begin FLMType := 'TradeClothIn1'; FFiltration1 := Trim(Self.InNo.Text); if ShowModal = 1 then begin end; end; finally frmLabelPrint.Free; end; end; procedure TfrmTradeClothInEdit.ToolButton4Click(Sender: TObject); begin FSubIds := ''; InitGrid2(); end; procedure TfrmTradeClothInEdit.btnGetOutNoClick(Sender: TObject); var maxNo: string; begin if GetLSNo(ADOQueryCmd, maxNo, 'RK', 'Trade_Cloth_IO', 3, 1) = False then begin Application.MessageBox('取入库单号失败!', '提示', 0); Exit; end; InNo.Text := Trim(maxNo); CRTime.DateTime := SGetServerDate(ADOQueryTemp); InitGrid3(); end; procedure TfrmTradeClothInEdit.ToolButton6Click(Sender: TObject); var maxno, fsj: string; begin try frmTradeClothWaitStorage := TfrmTradeClothWaitStorage.Create(Application); with frmTradeClothWaitStorage do begin if ShowModal = 1 then begin CDS_OrderSel.DisableControls; with CDS_OrderSel do begin First; while not Eof do begin if FieldByName('SSel').Value = True then begin if Self.CDS_2.Locate('SubID', Trim(CDS_OrderSel.fieldbyname('SubID').AsString), []) = False then begin with Self.CDS_2 do begin Append; FieldByName('MainId').Value := Trim(CDS_OrderSel.fieldbyname('MainId').AsString); FieldByName('SubID').Value := Trim(CDS_OrderSel.fieldbyname('SubID').AsString); FieldByName('CustNo').Value := Trim(CDS_OrderSel.fieldbyname('CustNo').AsString); FieldByName('CustName').Value := Trim(CDS_OrderSel.fieldbyname('CustName').AsString); FieldByName('C_Name').Value := Trim(CDS_OrderSel.fieldbyname('C_Name').AsString); FieldByName('OrdPiece').Value := CDS_OrderSel.fieldbyname('OrdPiece').Value; FieldByName('OrdQty').Value := CDS_OrderSel.fieldbyname('OrdQty').Value; FieldByName('OrdUnit').Value := Trim(CDS_OrderSel.fieldbyname('OrdUnit').AsString); FieldByName('C_Color').Value := Trim(CDS_OrderSel.fieldbyname('C_Color').AsString); FieldByName('C_Width').Value := Trim(CDS_OrderSel.fieldbyname('C_Width').AsString); FieldByName('orderno').Value := Trim(CDS_OrderSel.fieldbyname('orderno').AsString); FieldByName('C_GramWeight').Value := Trim(CDS_OrderSel.fieldbyname('C_GramWeight').AsString); FieldByName('C_Pattern').Value := Trim(CDS_OrderSel.fieldbyname('C_Pattern').AsString); Post; end; end; end; Next; end; end; CDS_OrderSel.EnableControls; end; end; finally frmTradeClothWaitStorage.Free; end; FSubIds := ''; CDS_2.DisableControls; with CDS_2 do begin First; while not Eof do begin FSubIds := FSubIds + Quotedstr(Trim(CDS_2.FieldByName('SubID').AsString)) + ','; Next; end; end; FSubIds := copy(FSubIds, 1, Length(FSubIds) - 1); CDS_2.EnableControls; if Trim(InNo.Text) = '' then btnGetOutNo.Click; InitGrid1(); InitGrid3(); end; procedure TfrmTradeClothInEdit.ToolButton7Click(Sender: TObject); begin tv1.Controller.EditingController.ShowEdit(); tv3.Controller.EditingController.ShowEdit(); Close; end; procedure TfrmTradeClothInEdit.ToolButton8Click(Sender: TObject); begin WriteCxGrid(self.caption + 'Tv2', Tv2, '成品仓库'); WriteCxGrid(self.caption + 'Tv1', Tv1, '成品仓库'); WriteCxGrid(self.caption + 'Tv3', Tv3, '成品仓库'); end; procedure TfrmTradeClothInEdit.ToolButton9Click(Sender: TObject); begin SelOKNo(CDS_1, True); end; end.