unit U_DyeClothDROutEdit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, StdCtrls, ExtCtrls, ADODB, DBClient, cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, MovePanel, cxCheckBox, Menus, ComCtrls, BtnEdit, ShellAPI, cxTextEdit, RM_Common, RM_Class, RM_GridReport, RM_System, RM_Dataset, RM_e_Xls, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters, cxNavigator, dxDateRanges, dxBarBuiltInMenu, U_BaseList; type TfrmDyeClothDROutEdit = class(TfrmBaseList) ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; DS_MainSel: TDataSource; CDS_MainSel: TClientDataSet; GPM_1: TcxGridPopupMenu; Panel2: TPanel; Label5: TLabel; Label4: TLabel; Label9: TLabel; edtScan: TEdit; CRTime: TDateTimePicker; ToCoName: TEdit; Button2: TButton; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; Label12: TLabel; CDS_Main: TClientDataSet; CRType: TEdit; Button1: TButton; RMXLSExport1: TRMXLSExport; RMDBMX: TRMDBDataSet; RM1: TRMGridReport; CDS_JuanPRT: TClientDataSet; Label10: TLabel; edtIsSMTH: TEdit; btn1: TButton; ds1: TClientDataSet; ds2: TDataSource; Panel1: TPanel; cxGrid3: TcxGrid; Tv3: TcxGridDBTableView; cv3Column3: TcxGridDBColumn; VC_MJXH: TcxGridDBColumn; v3Column1: TcxGridDBColumn; v3Column2: TcxGridDBColumn; cv3Column4: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; cxGrid1: TcxGrid; TV4: TcxGridDBTableView; cCXCONNO: TcxGridDBColumn; cV4Column1: TcxGridDBColumn; cCXCOLOR: TcxGridDBColumn; VC_SQQTY: TcxGridDBColumn; cCXFHPS: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; TV4Column1: TcxGridDBColumn; Tv3Column1: TcxGridDBColumn; TV4Column2: TcxGridDBColumn; TV4Column3: TcxGridDBColumn; OutNo: TEdit; Tv3Column2: TcxGridDBColumn; Tv3Column3: TcxGridDBColumn; GPM_2: TcxGridPopupMenu; TV4Column5: TcxGridDBColumn; Tv3Column4: TcxGridDBColumn; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure edtScanKeyPress(Sender: TObject; var Key: Char); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure edtIsSMTHClick(Sender: TObject); procedure btn1Click(Sender: TObject); procedure TV4MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } FCKNO, FSMStr, JXFlag, CZZT, fcuowu: string; procedure InitCKGrid(); procedure InitSQGrid(); procedure PlayWav(MWav: string); function JudgeSQD(): Boolean; function SaveCKJTM(MStkIds: string): Boolean;//保存出库 procedure SaveCKJTMCX(); //撤销出库 public { Public declarations } end; var frmDyeClothDROutEdit: TfrmDyeClothDROutEdit; implementation uses U_DataLink, U_RTFun, MMSystem, U_DyeDRSel; procedure TfrmDyeClothDROutEdit.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 TfrmDyeClothDROutEdit.SaveCKJTMCX(); begin try if Trim(OutNo.Text) = '' then raise Exception.Create('出库单号不能为空!'); if CDS_MainSel.IsEmpty then raise Exception.Create('无可撤销的数据!'); try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; Sql.Clear; sql.Add('insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule) '); sql.Add('values(''印染成品出库'' '); sql.Add(',' + quotedstr(OutNo.Text)); sql.Add(',''出库'' '); sql.Add(',' + quotedstr(dname)); sql.Add(',' + quotedstr(self.Caption)); sql.Add(') '); Sql.Add('exec P_Dye_Cloth_ReOut '); Sql.Add(' @StkIds=' + quotedstr(trim(FSMStr))); Sql.Add(',@IOIDS=' + quotedstr(trim(''))); 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; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('exec P_Dye_Cloth_DR @OutNo=' + Quotedstr(Trim(OutNo.Text))); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; except application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlayWav('发货错误'); end; end; procedure TfrmDyeClothDROutEdit.TV4MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited; InitCKGrid(); end; function TfrmDyeClothDROutEdit.SaveCKJTM(MStkIds: string): Boolean; begin try if Trim(OutNo.Text) = '' then raise Exception.Create('出库单号不能为空!'); try with ADOQueryCmd do begin Close; sql.Clear; sql.Add('exec P_Dye_Cloth_DRJudge @OutNo=' + Quotedstr(Trim(OutNo.Text))); sql.Add(',@StkIds=' + Quotedstr(Trim(MStkIds))); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; ADOQueryCmd.Connection.BeginTrans; // with ADOQueryCmd do // begin // Close; // sql.Clear; // sql.Add('insert into Dye_Need_Up(UType,UDataId,UOperation,UOperator,UModule,UDetails) '); // sql.Add('values(''印染成品出库'' '); // sql.Add(',' + quotedstr(MPCIDS)); // sql.Add(',''出库'' '); // sql.Add(',' + quotedstr(DName)); // sql.Add(',' + quotedstr(trim(self.Caption))); // sql.Add(',' + quotedstr(MStkIds)); // sql.Add(') '); // execsql; // end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule,UDetails) '); sql.Add('values(''印染成品出库'' '); sql.Add(',' + quotedstr(OutNo.Text)); sql.Add(',''出库'' '); sql.Add(',' + quotedstr(DName)); sql.Add(',' + quotedstr(trim(self.Caption))); sql.Add(',' + quotedstr(MStkIds)); sql.Add(') '); execsql; end; with ADOQueryCmd do begin Close; Sql.Clear; sql.Add('insert into Finance_Need_Up(UType,UDataId) values(''印染成品出库'',' + quotedstr(OutNo.Text) + ') '); Sql.Add('exec P_Dye_Cloth_Out '); 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(OutNo.Text)); 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; except ADOQueryCmd.Connection.RollbackTrans; raise Exception.Create(PChar(Exception(ExceptObject).Message)); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('exec P_Dye_Cloth_DR @OutNoS=' + Quotedstr(Trim(OutNo.Text))); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; PlayWav('正确'); Result := True; except Result := False; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlayWav('发货错误'); end; end; {$R *.dfm} function TfrmDyeClothDROutEdit.JudgeSQD(): Boolean; begin Result := false; try with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from Dye_Cloth_DR_Main A inner join Dye_Cloth_DR_Sub B on A.DRMID=B.DRMID where A.DRMID=''' + Trim(FSMStr) + ''''); Open; end; if ADOQueryTemp.IsEmpty then raise Exception.Create('申请单不存在暂停发货!'); if Trim(OutNo.Text) <> '' then begin FCKNO := Trim(OutNo.Text); end; OutNo.Text := Trim(FSMStr); if FSMStr <> FCKNO then begin InitCKGrid(); InitSQGrid(); end; Result := True; except Result := false; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlaySound('未扫描申请单暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); end; end; procedure TfrmDyeClothDROutEdit.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmDyeClothDROutEdit.FormDestroy(Sender: TObject); begin inherited; frmDyeClothDROutEdit := nil; end; procedure TfrmDyeClothDROutEdit.FormShow(Sender: TObject); begin inherited; edtScan.SetFocus; ReadCxGrid('扫描出库Tv4', Tv4, '发货申请'); ReadCxGrid('扫描出库Tv3', Tv3, '发货申请'); CRTime.DateTime := SGetServerDate(ADOQueryTemp); end; procedure TfrmDyeClothDROutEdit.edtScanKeyPress(Sender: TObject; var Key: Char); var maxno, SMFlag, KYCKFlag, FMainId, ff: string; FFQty: Integer; begin if Key = #13 then begin FSMStr := TRIM(edtScan.Text); if Copy(FSMStr, 1, 3) = 'TDM' then begin if not JudgeSQD() then exit; end else begin if Trim(edtIsSMTH.Text) = '' then begin if Copy(FSMStr, 1, 2) = 'BI' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select StkIdS=CAST((select distinct lTRIM(RTRIM(X.StkId)) + '','' '); sql.Add(' from Dye_Cloth_Stock X where X.PacketId=' + quotedstr(FSMStr) + ' for xml path('''') ) AS NVARCHAR(MAX)) '); Open; end; if SaveCKJTM(ADOQueryTemp.FieldByName('StkIdS').AsString) then begin PlayWav('正确'); end else exit; end else begin if SaveCKJTM(FSMStr) then begin PlayWav('正确'); end else exit; end; end else begin SaveCKJTMCX(); end; InitSQGrid(); InitCKGrid(); end; edtScan.Text := ''; end; end; procedure TfrmDyeClothDROutEdit.Button2Click(Sender: TObject); begin WriteCxGrid('扫描出库Tv4', Tv4, '发货申请'); WriteCxGrid('扫描出库Tv3', Tv3, '发货申请'); Close; end; procedure TfrmDyeClothDROutEdit.Button1Click(Sender: TObject); var MKey: Char; begin MKey := #13; try frmTatDRSel := TfrmTatDRSel.Create(self); with frmTatDRSel do begin if ShowModal = 1 then begin edtScan.Text := Trim(Order_Main.fieldbyname('DRMID').AsString); edtScanKeyPress(edtScan, MKey); end; end; finally frmTatDRSel.Free; end; end; procedure TfrmDyeClothDROutEdit.edtIsSMTHClick(Sender: TObject); begin if Trim(edtIsSMTH.Text) = '' then edtIsSMTH.Text := '√' else edtIsSMTH.Text := ''; end; procedure TfrmDyeClothDROutEdit.btn1Click(Sender: TObject); var MKey: Char; begin MKey := #13; CZZT := '选择库存'; fcuowu := '1'; // try // frmCKProductCPKCListSel := TfrmCKProductCPKCListSel.Create(Application); // with frmCKProductCPKCListSel do // begin //// CustomerNoName.text := trim(Self.KHName.text); // if ShowModal = 1 then // begin // with frmCKProductCPKCListSel.CDS_Main do // begin // First; // while not Eof do // begin // if Fieldbyname('ssel').AsBoolean then // begin // // Self.edtScan.Text := Trim(Fieldbyname('JYID').AsString); // edtScanKeyPress(Self.edtScan, MKey); // if fcuowu = '错误' then // begin // Break; // end; // Sleep(200); // end; // Next; // end; // end; // end; // end; // finally // frmCKProductCPKCListSel.Free; // end; InitCKGrid(); end; procedure TfrmDyeClothDROutEdit.InitSQGrid(); begin if OutNo.Text <> '' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('SELECT * FROM Dye_Cloth_DR_Sub B'); sql.Add('inner join Dye_Cloth_DR_Main A ON A.DRMID=B.DRMID '); sql.Add('WHERE B.DRMID=''' + Trim(OutNo.Text) + ''''); Open; end; SCreateCDS(ADOQueryTemp, DS1); SInitCDSData(ADOQueryTemp, DS1); crtype.Text := Trim(ADOQueryTemp.FieldByName('OutType').AsString); ToCoName.Text := Trim(ADOQueryTemp.FieldByName('ToCoName').AsString); end; end; procedure TfrmDyeClothDROutEdit.InitCKGrid(); begin if OutNo.Text <> '' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * '); sql.Add(' from Dye_Cloth_Stock A inner join Dye_Cloth_IO B on A.STKID=B.StkId '); sql.Add(' where B.IONO=''' + Trim(OutNo.Text) + ''''); Open; end; SCreateCDS(ADOQueryTemp, CDS_MainSel); SInitCDSData(ADOQueryTemp, CDS_MainSel); end; end; end.