unit U_TradeClothDROutEdit; 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, cxNavigator, dxDateRanges, dxBarBuiltInMenu, U_BaseList; type TfrmTradeClothDROutEdit = 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; KHName: 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; CKNO: TEdit; Tv3Column2: TcxGridDBColumn; Tv3Column3: TcxGridDBColumn; GPM_2: TcxGridPopupMenu; TV4Column4: 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(); function JudgeSQD(): Boolean; function JudgeBao(): Boolean; procedure SaveCKBao(); function JudgeJTM(): Boolean; procedure SaveCKJTM(); function JudgeJTMCX(): Boolean; procedure SaveCKJTMCX(); public { Public declarations } end; var frmTradeClothDROutEdit: TfrmTradeClothDROutEdit; implementation uses U_DataLink, U_RTFun, MMSystem; //, U_FHSQListSel, U_CKProductCPKCListSel, U_CKProductBCPKCListSel procedure TfrmTradeClothDROutEdit.SaveCKJTMCX(); begin try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update CK_Cloth_CR Set CRFlag=''待出库'',CRType='''',CRTime=NULL,CRNote='''',CKNO='''' '); sql.Add(' where CK_Cloth_CR=CRID = ( select top 1 X.CRID from CK_Cloth_CR X inner join CK_Cloth_KC Y on X.JYID=Y.JYID and X.Cycles=Y.Cycles '); sql.Add(' where X.CRFlag=''出库'' and X.JYID=' + Quotedstr(Trim(FSMStr)) + ' ) '); sql.Add(' UPdate CK_Cloth_KC Set Valid=''Y'' '); sql.Add(' where CK_Cloth_KC.JYID=' + Quotedstr(Trim(FSMStr))); sql.Add(' and Valid=''N'' '); sql.Add(' Update JY_Cloth Set JYCRType=''已入库'' '); sql.Add(' where JY_Cloth.JYID=' + Quotedstr(Trim(FSMStr))); SQL.Add(' and JY_Cloth.JYCRType=''已出库'' '); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( '); sql.Add(' ' + quotedstr(trim(DName))); sql.Add(',getdate() '); sql.Add(',' + quotedstr('')); sql.Add(',' + quotedstr(trim('出库扫描撤销'))); sql.Add(',' + quotedstr('卷条码:' + trim(FSMStr) + ' 出库单号:' + trim(FCKNO))); sql.Add(',' + quotedstr(trim('成功'))); sql.Add(')'); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('撤销出库失败!', '提示信息', 0); end; end; procedure TfrmTradeClothDROutEdit.TV4MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited; // InitCKGrid(); end; function TfrmTradeClothDROutEdit.JudgeJTMCX(): Boolean; begin try if Trim(CKNO.Text) = '' then raise Exception.Create('出库单号不能为空!'); if CDS_MainSel.IsEmpty then raise Exception.Create('无可撤销的数据!'); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('SELECT RKNO,CKNO FROM CK_Cloth_CR where CRFlag=''出库'' and JYID=' + quotedstr(FSMStr)); Open; end; if ADOQueryTemp.IsEmpty then raise Exception.Create('无可撤销的数据!'); Result := True; except Result := false; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; procedure TfrmTradeClothDROutEdit.SaveCKJTM(); begin try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPDATE CK_Cloth_CR Set '); sql.add(' CRTime=' + quotedstr(FormatDateTime('yyyy-MM-dd', CRTime.DateTime)) + ',CRType=''扫描出库'',CRFlag=''出库'' '); sql.add(',CKNO=' + Quotedstr(CKNO.Text)); sql.Add(' where CK_Cloth_CR.JYID=' + Quotedstr(Trim(FSMStr))); sql.Add('and CK_Cloth_CR.CRFlag=''待出库'' '); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPDATE CK_Cloth_KC Set '); sql.add(' Valid=''N'' '); sql.Add(' where CK_Cloth_KC.JYID=' + Quotedstr(Trim(FSMStr))); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPDATE JY_Cloth Set JYCRType=''已出库'' '); sql.Add(' where JY_Cloth.JYID=' + Quotedstr(Trim(FSMStr))); SQL.Add(' and JY_Cloth.JYCRType=''已入库'' '); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('出库失败!', '提示信息', 0); end; end; {$R *.dfm} function TfrmTradeClothDROutEdit.JudgeJTM(): Boolean; begin try if Trim(CKNO.Text) = '' then raise Exception.Create('未扫描申请单暂停发货!'); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select JYID from JY_Cloth where JYID=' + quotedstr(trim(FSMStr))); // ShowMessage(SQL.Text); Open; end; if ADOQueryTemp.IsEmpty then begin raise Exception.Create('条码错误暂停发货'); end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.CRFlag from CK_Cloth_CR A inner join CK_Cloth_KC B on A.JYID=B.JYID and A.Cycles=B.Cycles '); sql.Add('where A.CRFlag=''入库'' and A.JYID=' + quotedstr(trim(FSMStr))); Open; end; if ADOQueryTemp.IsEmpty then begin raise Exception.Create('未入库暂停发货'); end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.CKNO from CK_Cloth_CR A inner join CK_Cloth_KC B on A.JYID=B.JYID and A.Cycles=B.Cycles '); sql.Add('where A.CRFlag=''出库'' and A.JYID=' + quotedstr(trim(FSMStr))); Open; end; if ADOQueryTemp.IsEmpty = False then begin if Trim(ADOQueryTemp.fieldbyname('CKNO').AsString) = Trim(CKNO.Text) then begin raise Exception.Create('已扫描'); end else begin raise Exception.Create('已出库暂停发货'); end; end; Result := True; except Result := false; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlaySound('wav\'+Exception(ExceptObject).Message+'.wav', 0, SND_FILENAME or SND_ASYNC); end; end; function TfrmTradeClothDROutEdit.JudgeBao(): Boolean; begin try if Trim(CKNO.Text) = '' then raise Exception.Create('未扫描申请单暂停发货!'); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from JY_Cloth A '); sql.Add('where edtScan=' + quotedstr(trim(FSMStr))); Open; end; if ADOQueryTemp.IsEmpty then raise Exception.Create('条码错误暂停发货!'); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.CRFlag from CK_Cloth_CR A inner join CK_Cloth_KC B on A.JYID=B.JYID and A.Cycles=B.Cycles '); sql.Add('where A.CRFlag=''入库'' and A.edtScan=' + quotedstr(trim(FSMStr))); Open; end; if ADOQueryTemp.IsEmpty then begin raise Exception.Create('未入库暂停发货'); end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.CRFlag from CK_Cloth_CR A inner join CK_Cloth_KC B on A.JYID=B.JYID and A.Cycles=B.Cycles '); sql.Add('where A.CRFlag=''出库'' and A.edtScan=' + quotedstr(trim(FSMStr))); Open; end; if not ADOQueryTemp.IsEmpty then raise Exception.Create('已扫描!'); Result := True; except Result := false; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; procedure TfrmTradeClothDROutEdit.SaveCKBao(); begin try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPDATE CK_Cloth_KC Set '); sql.add(' Valid=''N'' '); sql.Add(' where exists(select JYID from CK_Cloth_CR X where CK_Cloth_KC.JYID=X.JYID and X.CRFlag=''入库'' and X.edtScan=' + Quotedstr(FSMStr) + ') '); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPDATE CK_Cloth_CR Set '); sql.add(' CRTime=getdate(),CRType=''扫描出库'',CRFlag=''出库'' '); sql.add(',CKNO=' + Quotedstr(CKNO.Text)); sql.Add(' where exists(select JYID from CK_Cloth_CR X where CK_Cloth_CR.JYID=X.JYID and X.CRFlag=''入库'' and X.edtScan=' + Quotedstr(FSMStr) + ') '); sql.Add('and CK_Cloth_CR.CRFlag=''待出库'' '); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPDATE JY_Cloth Set JYCRType=''已出库'' '); sql.Add(' where exists (select JYID from CK_Cloth_CR X where JY_Cloth.JYID=X.JYID and X.CRFlag=''入库'' and X.edtScan=' + Quotedstr(FSMStr) + ') '); SQL.Add(' and JY_Cloth.JYCRType=''已入库'' '); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('出库失败!', '提示信息', 0); end; end; function TfrmTradeClothDROutEdit.JudgeSQD(): Boolean; begin Result := false; try with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from FHSQ_Main A inner join FHSQ_Sub B on A.FSID=B.FSID where A.FSID=''' + Trim(FSMStr) + ''''); Open; end; if ADOQueryTemp.IsEmpty then raise Exception.Create('申请单不存在暂停发货!'); if Trim(CKNO.Text) <> '' then begin FCKNO := Trim(CKNO.Text); end; CKNO.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 TfrmTradeClothDROutEdit.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmTradeClothDROutEdit.FormDestroy(Sender: TObject); begin inherited; frmTradeClothDROutEdit := nil; end; procedure TfrmTradeClothDROutEdit.FormShow(Sender: TObject); begin inherited; edtScan.SetFocus; ReadCxGrid('扫描出库Tv4', Tv4, '发货申请'); ReadCxGrid('扫描出库Tv3', Tv3, '发货申请'); CRTime.DateTime := SGetServerDate(ADOQueryTemp); end; procedure TfrmTradeClothDROutEdit.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, 2) = 'SM' then begin if not JudgeSQD() then exit; end else begin if Trim(edtIsSMTH.Text) = '' then begin if Copy(FSMStr, 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; InitSQGrid(); InitCKGrid(); end; edtScan.Text := ''; end; end; procedure TfrmTradeClothDROutEdit.Button2Click(Sender: TObject); begin WriteCxGrid('扫描出库Tv4', Tv4, '发货申请'); WriteCxGrid('扫描出库Tv3', Tv3, '发货申请'); Close; end; procedure TfrmTradeClothDROutEdit.Button1Click(Sender: TObject); var MKey: Char; begin MKey := #13; // try // frmFHSQListSel := TfrmFHSQListSel.Create(self); // with frmFHSQListSel do // begin // if ShowModal = 1 then // begin // edtScan.Text := Trim(Order_Main.fieldbyname('FSID').AsString); // edtScanKeyPress(edtScan, MKey); // end; // end; // finally // frmFHSQListSel.Free; // end; end; procedure TfrmTradeClothDROutEdit.edtIsSMTHClick(Sender: TObject); begin if Trim(edtIsSMTH.Text) = '' then edtIsSMTH.Text := '√' else edtIsSMTH.Text := ''; end; procedure TfrmTradeClothDROutEdit.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 TfrmTradeClothDROutEdit.InitSQGrid(); begin if CKNO.Text <> '' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('SELECT b.*,A.ConNo FROM FHSQ_Sub B'); sql.Add('inner join FHSQ_Main A ON A.FSId=B.FSId '); sql.Add('WHERE B.FSId=''' + Trim(CKNO.Text) + ''''); // ShowMessage(SQL.Text); Open; end; SCreateCDS(ADOQueryTemp, DS1); SInitCDSData(ADOQueryTemp, DS1); end; end; procedure TfrmTradeClothDROutEdit.InitCKGrid(); begin if CKNO.Text <> '' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select *'); sql.Add(' from CK_Cloth_CR A'); sql.Add(' where A.CKNo=''' + Trim(CKNO.Text) + ''''); Open; end; SCreateCDS(ADOQueryTemp, CDS_MainSel); SInitCDSData(ADOQueryTemp, CDS_MainSel); end; end; end.