unit U_YEYarnDROutEdit; 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 TfrmYEYarnDROutEdit = 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; v3Column1: TcxGridDBColumn; v3Column2: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; cxGrid1: TcxGrid; TV4: TcxGridDBTableView; cCXCONNO: TcxGridDBColumn; cV4Column1: TcxGridDBColumn; cCXCOLOR: TcxGridDBColumn; VC_SQQTY: TcxGridDBColumn; cCXFHPS: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; TV4Column1: TcxGridDBColumn; TV4Column2: TcxGridDBColumn; TV4Column3: TcxGridDBColumn; OutNo: TEdit; Tv3Column2: TcxGridDBColumn; GPM_2: TcxGridPopupMenu; TV4Column5: 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 frmYEYarnDROutEdit: TfrmYEYarnDROutEdit; implementation uses U_DataLink, U_RTFun, MMSystem, U_YEYarnDRSel; procedure TfrmYEYarnDROutEdit.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 TfrmYEYarnDROutEdit.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 YE_Need_Up(UType,UDataId) values(''加弹丝成品出库'',' + quotedstr(OutNo.Text) + ') '); Sql.Add('exec P_YE_Yarn_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_YE_Yarn_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 TfrmYEYarnDROutEdit.TV4MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited; InitCKGrid(); end; function TfrmYEYarnDROutEdit.SaveCKJTM(MStkIds: string): Boolean; begin try if Trim(OutNo.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('此条码不包含在待出库的卷数据中'); try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; Sql.Clear; sql.Add('insert into YE_Need_Up(UType,UDataId) values(''加弹丝成品出库'',' + quotedstr(OutNo.Text) + ') '); Sql.Add('exec P_YE_Yarn_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)); // 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; except ADOQueryCmd.Connection.RollbackTrans; raise Exception.Create(PChar(Exception(ExceptObject).Message)); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('exec P_YE_Yarn_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; PlayWav('正确'); Result := True; except Result := False; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlayWav('发货错误'); end; end; {$R *.dfm} function TfrmYEYarnDROutEdit.JudgeSQD(): Boolean; begin Result := false; try with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from YE_Yarn_DR_Main A inner join YE_Yarn_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 TfrmYEYarnDROutEdit.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmYEYarnDROutEdit.FormDestroy(Sender: TObject); begin inherited; frmYEYarnDROutEdit := nil; end; procedure TfrmYEYarnDROutEdit.FormShow(Sender: TObject); begin inherited; edtScan.SetFocus; ReadCxGrid(trim(Self.Caption) + 'Tv4', Tv4, '加弹纱线仓库'); ReadCxGrid(trim(Self.Caption) + 'Tv3', Tv3, '加弹纱线仓库'); CRTime.DateTime := SGetServerDate(ADOQueryTemp); end; procedure TfrmYEYarnDROutEdit.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) = 'DM' then //扫描框是加弹纱线仓库主键 begin if not JudgeSQD() then exit; end else begin if Trim(edtIsSMTH.Text) = '' then //没有勾选扫描退回 begin if SaveCKJTM(FSMStr) then //保存出库卷条码 begin PlayWav('正确'); end else exit; end else begin SaveCKJTMCX(); //撤销出库 end; InitSQGrid(); InitCKGrid(); end; edtScan.Text := ''; end; end; procedure TfrmYEYarnDROutEdit.Button2Click(Sender: TObject); begin WriteCxGrid(trim(Self.Caption) + 'Tv4', Tv4, '加弹纱线仓库'); WriteCxGrid(trim(Self.Caption) + 'Tv3', Tv3, '加弹纱线仓库'); Close; end; procedure TfrmYEYarnDROutEdit.Button1Click(Sender: TObject); var MKey: Char; begin MKey := #13; try frmYEYarnDRSel := TfrmYEYarnDRSel.Create(self); with frmYEYarnDRSel do begin if ShowModal = 1 then begin edtScan.Text := Trim(Order_Main.fieldbyname('DRMID').AsString); edtScanKeyPress(edtScan, MKey); end; end; finally frmYEYarnDRSel.Free; end; end; procedure TfrmYEYarnDROutEdit.edtIsSMTHClick(Sender: TObject); begin if Trim(edtIsSMTH.Text) = '' then edtIsSMTH.Text := '√' else edtIsSMTH.Text := ''; end; procedure TfrmYEYarnDROutEdit.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 TfrmYEYarnDROutEdit.InitSQGrid(); begin if OutNo.Text <> '' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('SELECT * FROM YE_Yarn_DR_Sub B'); sql.Add('inner join YE_Yarn_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 TfrmYEYarnDROutEdit.InitCKGrid(); begin if OutNo.Text <> '' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * '); sql.Add(' from YE_Yarn_Stock A inner join YE_Yarn_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.