unit U_PBSHSMCK; 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; type TfrmPBSHSMCK = class(TForm) ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; DS_MainSel: TDataSource; CDS_MainSel: TClientDataSet; cxGridPopupMenu4: TcxGridPopupMenu; cxGrid3: TcxGrid; Tv3: TcxGridDBTableView; cxGridDBColumn1: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; v3Column1: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; v3Column2: TcxGridDBColumn; Panel2: TPanel; Label5: TLabel; Label4: TLabel; CKPSQty: TEdit; CKOrdNo: TEdit; BaoID: TEdit; CRTime: TDateTimePicker; Button2: TButton; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; Label2: TLabel; Label3: TLabel; Edit1: TEdit; Label12: TLabel; CDS_Main: TClientDataSet; CRType: TEdit; Button1: TButton; v3Column4: TcxGridDBColumn; Label7: TLabel; RMXLSExport1: TRMXLSExport; RMDBMX: TRMDBDataSet; RM1: TRMGridReport; CDS_JuanPRT: TClientDataSet; v3Column3: TcxGridDBColumn; v3Column5: TcxGridDBColumn; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure BaoIDKeyPress(Sender: TObject; var Key: Char); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); function YSData(Order_Main10: TClientDataSet): Boolean; procedure Button3Click(Sender: TObject); private { Private declarations } FCKOrdNo, FSMStr, JXFlag: string; procedure TMPanDuan(); public { Public declarations } end; var frmPBSHSMCK: TfrmPBSHSMCK; implementation uses U_DataLink, U_RTFun, U_RTFun, MMSystem, U_FHSQListSel, U_PBKCListSel; {$R *.dfm} function TfrmPBSHSMCK.YSData(Order_Main10: TClientDataSet): Boolean; var CRID, YFID, PriceUnit, OrderUnit, FComTaiTou, FromSubID: string; fprice, huilv: double; begin // Result:=False; // fprice:=0; // huilv:=0; // PriceUnit:='RMB'; // with Order_Main10 do // begin // begin // with ADOQueryTemp do // begin // Close; // SQL.Clear; // sql.Add('select *,fPrice=dbo.F_Get_Order_Price(MainID,subID) from JYOrder_Sub Where subID='''+Trim(Order_Main10.fieldbyname('subID').AsString)+''''); // Open; // end; // IF not ADOQueryTemp.IsEmpty then // begin // PriceUnit:=Trim(ADOQueryTemp.fieldbyname('PriceUnit').AsString); // OrderUnit:=Trim(ADOQueryTemp.fieldbyname('OrderUnit').AsString); // fPrice:= ADOQueryTemp.fieldbyname('fPrice').AsFloat; // huilv:= ADOQueryTemp.fieldbyname('huilv').AsFloat; // end; // IF huilv=0 then huilv:=1; // CRID:='0'; // with ADOQueryTemp do // begin // Close; // sql.Clear; // sql.Add(' select * from YF_Money_CR '); // sql.Add(' where mainID='''+Trim(Order_Main10.fieldbyname('mainID').AsString)+''''); // sql.Add(' and subID='''+Trim(Order_Main10.fieldbyname('subID').AsString)+''''); // sql.Add(' and CRTime='''+FormatDateTime('yyyy-MM-dd',CRTime.Date)+'''') ; // sql.Add(' and YFName=''销售金额'' '); // Open; // end; // if ADOQueryTemp.IsEmpty then // begin // if GetLSNo(ADOQueryCmd,YFID,'CS','YF_Money_CR',3,1)=False then // begin // Application.MessageBox('取成品应收最大号失败!','提示',0); // Exit; // end; // with ADOQueryCmd do // begin // Close; // sql.Clear; // sql.Add('select * from YF_Money_CR where 1<>1'); // Open; // end; // with ADOQueryCmd do // begin // Append; // FieldByName('YFID').Value:=Trim(YFID); // FieldByName('YFTypeId').Value:=Trim(Order_Main10.fieldbyname('mainID').AsString); // FieldByName('CRID').Value:=StrToInt(CRID); // FieldByName('Filler').Value:=Trim(DName); // FieldByName('CRType').Value:='应收款登记'; // FieldByName('CRFlag').Value:='应收收'; // FieldByName('QtyFlag').Value:=1; // FieldByName('FactoryName').Value:=Trim(TocustName.Text); // FieldByName('CRTime').Value:=Trim(FormatDateTime('yyyy-MM-dd',CRTime.Date)); // FieldByName('YFType').Value:='自动生成'; // FieldByName('Price').Value:=fprice; // FieldByName('HuiLv').Value:=huilv; // FieldByName('BZType').Value:=Trim(PriceUnit); // FieldByName('QtyUnit').Value:=Trim(OrderUnit); // FieldByName('ComTaiTou').Value:=Trim(FComTaiTou); // FieldByName('YFName').Value:='销售金额'; // FieldByName('MainId').Value:=Trim(Order_Main10.fieldbyname('Mainid').AsString); // FieldByName('subID').Value:=Trim(Order_Main10.fieldbyname('subID').AsString); // FieldByName('OrderNO').Value:=Trim(Order_Main10.fieldbyname('OrderNO').AsString); // FieldByName('P_CodeName').Value:=Trim(Order_Main10.fieldbyname('MprtCodeName').AsString); // FieldByName('P_Spec').Value:=Trim(Order_Main10.fieldbyname('MprtSpec').AsString); // FieldByName('P_color').Value:=Trim(Order_Main10.fieldbyname('PRTColor').AsString); // FieldByName('status').Value:='0'; // Post; // end; // end // else // begin // YFID:=Trim(ADOQueryTemp.fieldbyname('YFID').AsString); // end; // IF uppercase(OrderUnit)='KG' then // begin // with ADOQueryCmd do // begin // Close; // sql.Clear; // sql.Add('update YF_Money_CR Set Qty=(select isnull(Sum(B.MJQty4),0) from CK_BanCP_CR A,WFB_MJJY B where A.MJID=B.MJID and A.MainID=YF_Money_CR.MainID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') '); // sql.Add(',PS=(select isnull(count(A.mainID),0) from CK_BanCP_CR A where A.maiNID=YF_Money_CR.maiNID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') '); // sql.Add(' where YFID='''+Trim(YFID)+''''); // ExecSQL; // end; // end // else // IF (uppercase(OrderUnit)='Y') and (uppercase(Trim(Order_Main10.fieldbyname('QtyUnit').AsString))='M') then // begin // with ADOQueryCmd do // begin // Close; // sql.Clear; // sql.Add('update YF_Money_CR Set Qty=(select cast(isnull(Sum(A.Qty),0)/0.9144 as decimal(18,1)) from CK_BanCP_CR A where A.MainID=YF_Money_CR.MainID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') '); // sql.Add(',PS=(select isnull(count(A.mainID),0) from CK_BanCP_CR A where A.maiNID=YF_Money_CR.maiNID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') '); // sql.Add(' where YFID='''+Trim(YFID)+''''); // ExecSQL; // end; // end // else // IF (uppercase(OrderUnit)='M') and (uppercase(Trim(Order_Main10.fieldbyname('QtyUnit').AsString))='Y') then // begin // with ADOQueryCmd do // begin // Close; // sql.Clear; // sql.Add('update YF_Money_CR Set Qty=(select cast(isnull(Sum(A.Qty),0)*0.9144 as decimal(18,1)) from CK_BanCP_CR A where A.MainID=YF_Money_CR.MainID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') '); // sql.Add(',PS=(select isnull(count(A.mainID),0) from CK_BanCP_CR A where A.maiNID=YF_Money_CR.maiNID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') '); // sql.Add(' where YFID='''+Trim(YFID)+''''); // ExecSQL; // end; // end // else // begin // with ADOQueryCmd do // begin // Close; // sql.Clear; // sql.Add('update YF_Money_CR Set Qty=(select isnull(Sum(A.Qty),0) from CK_BanCP_CR A where A.MainID=YF_Money_CR.MainID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') '); // sql.Add(',PS=(select isnull(count(A.mainID),0) from CK_BanCP_CR A where A.maiNID=YF_Money_CR.maiNID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') '); // sql.Add(' where YFID='''+Trim(YFID)+''''); // ExecSQL; // end; // end; // with ADOQueryCmd do // begin // Close; // sql.Clear; // sql.Add('Update YF_Money_CR Set Money=Price*Qty,BBMoney=Price*Qty*HuiLv'); // sql.Add(' where YFID='''+Trim(YFID)+''''); // ExecSQL; // end; // with ADOQueryTemp do // begin // Close; // sql.Clear; // sql.Add('select * from YF_Money_CR where YFId='''+Trim(YFID)+''''); // Open; // end; // if ADOQueryTemp.FieldByName('Qty').Value=0 then // begin // with ADOQueryCmd do // begin // Close; // sql.Clear; // sql.Add('delete from YF_Money_CR where YFID='''+Trim(YFID)+''''); // ExecSQL; // end; // end; // //Next; // end; // end; // Result:=True; end; procedure TfrmPBSHSMCK.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmPBSHSMCK.FormDestroy(Sender: TObject); begin frmPBSHSMCK := nil; end; procedure TfrmPBSHSMCK.FormShow(Sender: TObject); begin BaoID.SetFocus; ReadCxGrid('扫描出库', Tv3, '坯布仓库'); CRTime.DateTime := SGetServerDate(ADOQueryTemp); end; procedure TfrmPBSHSMCK.TMPanDuan(); begin //判断扫描的是发货申请单,还是布匹条码 ,判断是否已经扫描过发货单 ,或者更改了发货单 JXFlag := ''; FSMStr := Trim(BaoID.Text); if Copy(FSMStr, 1, 2) = 'SM' then begin 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 begin JXFlag := '999'; PlaySound('申请单不存在暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); Exit; end; with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from FHSQ_Main'); sql.Add('where FSID=' + quotedstr(trim(FSMStr))); Open; end; if Trim(ADOQueryTemp.fieldbyname('YSID').AsString) <> '' then begin JXFlag := '999'; PlaySound('wav\已对账暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); Exit; end; if Trim(CKOrdNo.Text) <> '' then begin FCKOrdNo := Trim(CKOrdNo.Text); end; CKOrdNo.Text := Trim(FSMStr); if FSMStr <> FCKOrdNo then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select B.* '); sql.Add(' from CK_PBCP_CR A'); sql.Add(' inner join WFB_MJJY_PB B on A.MJID=B.MJID'); sql.Add(' where A.CKOrdNO=''' + Trim(CKOrdNo.Text) + ''''); Open; end; SCreateCDS(ADOQueryTemp, CDS_MainSel); SInitCDSData(ADOQueryTemp, CDS_MainSel); if CDS_MainSel.IsEmpty = False then Edit1.Text := IntToStr(Tv3.DataController.Summary.FooterSummaryValues[2]) else Edit1.Text := '0'; end; BaoID.Text := ''; JXFlag := '888'; end else begin if Trim(CKOrdNo.Text) = '' then begin JXFlag := '999'; PlaySound('wav\未扫描申请单暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); Exit; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from WFB_MJJY_PB A '); sql.Add('where exists (select Y.SubId from FHSQ_Sub Y where Y.SubId=A.SubId and Y.FSId=' + quotedstr(Trim(CKOrdNo.Text)) + ')'); sql.Add('and A.MJID=' + quotedstr(Trim(FSMStr))); Open; end; if ADOQueryTemp.IsEmpty then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.APID from WFB_MJJY_PB A '); sql.Add('where A.APID=' + quotedstr(Trim(FSMStr))); Open; end; if ADOQueryTemp.IsEmpty then begin JXFlag := '999'; PlaySound('wav\未检验暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); Exit; end else begin JXFlag := '999'; PlaySound('wav\条码错误暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); Exit; end; end else begin end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.CKOrdNo from CK_PBCP_CR A '); sql.Add('where exists (select Y.SubId from FHSQ_Sub Y where Y.SubId=A.SubId and Y.FSId=' + quotedstr(Trim(CKOrdNo.Text)) + ')'); sql.Add(' and A.MJID=' + quotedstr(Trim(FSMStr))); sql.Add(' and A.CRFlag=''出库'' '); Open; end; if not ADOQueryTemp.IsEmpty then begin if Trim(ADOQueryTemp.fieldbyname('CKOrdNo').AsString) = Trim(CKOrdNo.Text) then begin JXFlag := '999'; PlaySound('wav\已扫描.wav', 0, SND_FILENAME or SND_ASYNC); Exit; end else begin JXFlag := '999'; PlaySound('wav\已出库暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); Exit; end; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.CKOrdNo from CK_PBCP_CR A '); sql.Add('where exists (select Y.SubId from FHSQ_Sub Y where Y.SubId=A.SubId and Y.FSId=' + quotedstr(Trim(CKOrdNo.Text)) + ')'); sql.Add(' and A.MJID=' + quotedstr(Trim(FSMStr))); sql.Add(' and A.CRFlag=''入库'' '); Open; end; if ADOQueryTemp.IsEmpty then begin JXFlag := '999'; PlaySound('wav\未入库暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); Exit; end; if Trim(Edit1.Text) <> '' then begin if StrToInt(Edit1.Text) >= StrToInt(CKPSQty.Text) then begin JXFlag := '999'; PlaySound('wav\超出发货上限暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); Exit; end; end; end; //判断扫描的是发货申请单,还是布匹条码 ,判断是否已经扫描过发货单 ,或者更改了发货单 FHDate end; procedure TfrmPBSHSMCK.BaoIDKeyPress(Sender: TObject; var Key: Char); var maxno, SMFlag, KYCKFlag, FMainId: string; FFQty: Integer; begin if Key = #13 then begin TMPanDuan(); if Trim(JXFlag) = '999' then begin BaoID.Text := ''; Exit; end; if Trim(JXFlag) = '888' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.* ,KHName=CustomerNoName,CKPSQty=A.SQPSHZ '); sql.Add(' from FHSQ_Main A'); sql.Add(' where FSId=''' + Trim(CKOrdNo.Text) + ''' '); Open; end; SCSHData(ADOQueryTemp, Panel2, 2); Exit; end; with ADOQueryTemp do begin close; sql.Clear; sql.Add(' select A.*,B.CRID '); sql.Add(' from WFB_MJJY_PB A'); sql.Add(' inner join CK_PBCP_CR B on A.MJID=B.MJID and B.CRFlag=''入库'' '); sql.Add(' where A. MJID=''' + Trim(BaoID.Text) + ''''); Open; end; SCreateCDS(ADOQueryTemp, CDS_Main); SInitCDSData(ADOQueryTemp, CDS_Main); try with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from CK_PBCp_KC where MJID=''' + Trim(BaoID.Text) + ''''); sql.Add(' and KCKGQty>0'); Open; end; if ADOQueryTemp.IsEmpty then begin KYCKFlag := '不能出库'; end else begin KYCKFlag := '能出库'; end; if Trim(KYCKFlag) = '能出库' then begin ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('exec P_Do_PBCK @CRFlag=''直接出库'', @CKOrdNo=' + quotedstr(trim(CKOrdNo.Text)) + ', @MJID=' + quotedstr(trim(CDS_Main.fieldbyname('MJID').asstring)) + ', @DName=' + quotedstr(trim(DName))); ExecSQL; end; FMainId := Trim(CDS_Main.fieldbyname('MainID').AsString); with ADOQueryCmd do begin Close; sql.Clear; sql.Add('exec P_Do_FHSQ ''' + Trim(CKOrdNo.Text) + ''''); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; with CDS_MainSel do begin Append; FieldByName('Mainid').Value := Self.CDS_Main.fieldbyname('Mainid').Value; FieldByName('SubID').Value := Self.CDS_Main.fieldbyname('SubID').Value; FieldByName('MJMaoZ').Value := Self.CDS_Main.fieldbyname('MJMaoZ').Value; FieldByName('MJId').Value := Self.CDS_Main.fieldbyname('MJId').Value; FieldByName('APXH').Value := Self.CDS_Main.fieldbyname('APXH').Value; FieldByName('CarNo').Value := Self.CDS_Main.fieldbyname('CarNo').Value; FieldByName('APBatchNo').Value := Self.CDS_Main.fieldbyname('APBatchNo').Value; Post; end; if CDS_MainSel.IsEmpty = False then Edit1.Text := IntToStr(Tv3.DataController.Summary.FooterSummaryValues[2]) else Edit1.Text := '0'; with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select COUNT(*) fhjs from CK_PBCP_CR where CKOrdNo= ''' + Trim(CKOrdNo.Text) + ''''); Open; end; if StrToInt(Edit1.Text) <> ADOQueryTemp.FieldByName('fhjs').AsInteger then begin PlaySound('数据保存失败暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); Application.MessageBox('出库异常,请重新选择申请单!', '提示', 0); end; BaoID.Text := ''; PlaySound('正确.wav', 0, SND_FILENAME or SND_ASYNC); Exit; end; except BaoID.Text := ''; PlaySound('数据保存失败暂停发货.wav', 0, SND_FILENAME or SND_ASYNC); ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('出库异常!', '提示', 0); end; end; end; procedure TfrmPBSHSMCK.Button2Click(Sender: TObject); begin Close; WriteCxGrid('扫描出库', Tv3, '坯布仓库'); end; procedure TfrmPBSHSMCK.Button1Click(Sender: TObject); var MKey: Char; begin MKey := #13; try frmPBKCListSel := TfrmPBKCListSel.Create(Application); with frmPBKCListSel do begin FCKOrdNo := trim(CKOrdNo.text); if ShowModal = 1 then begin with frmPBKCListSel.CDS_Main do begin First; while not Eof do begin if Fieldbyname('ssel').AsBoolean then begin BaoID.Text := Trim(Fieldbyname('MJID').AsString); BaoIDKeyPress(BaoID, MKey); Sleep(200); end; Next; end; end; end; end; finally frmPBKCListSel.Free; end; end; procedure TfrmPBSHSMCK.Button3Click(Sender: TObject); var fPrintFile: string; begin if Trim(CKOrdNo.Text) = '' then EXIT; ExportFtErpFile(trim(ComboBox1.Text) + '.rmf', ADOQueryTemp); if ComboBox1.Text = '普通码单' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.add('exec P_Print_CKMDZZ1 ' + quotedstr(Trim(CKOrdNo.Text))); Open; end; SCreateCDS(ADOQueryTemp, CDS_JuanPRT); SInitCDSData(ADOQueryTemp, CDS_JuanPRT); end; if trim(ComboBox1.Text) = '普通机台码单' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.add('exec P_Print_CKMDZZ2 ' + quotedstr(Trim(CKOrdNo.Text))); Open; end; SCreateCDS(ADOQueryTemp, CDS_JuanPRT); SInitCDSData(ADOQueryTemp, CDS_JuanPRT); end; if ComboBox1.Text = '单页机台码单' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.add('exec P_Print_CKMDZZ3 ' + quotedstr(Trim(CKOrdNo.Text))); Open; end; SCreateCDS(ADOQueryTemp, CDS_JuanPRT); SInitCDSData(ADOQueryTemp, CDS_JuanPRT); end; fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + Trim(ComboBox1.Text) + '.rmf'; if FileExists(fPrintFile) then begin // RMVariables['OrdNo'] := Trim(CDS_Main.fieldbyname('OrdNo').AsString); RM1.DefaultCopies := 2; RM1.LoadFromFile(fPrintFile); RM1.ShowReport; end else begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); end; end; end.