unit U_BpDYlist; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, StdCtrls, ExtCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxButtonEdit, cxDropDownEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, RM_Common, RM_Class, RM_e_Xls, RM_GridReport, RM_System, RM_Dataset, cxPC, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu; type TfrmBpDYlist = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBAdd: TToolButton; TBEdit: TToolButton; TBDel: TToolButton; TBExport: TToolButton; TBPrint: TToolButton; TBClose: TToolButton; Panel1: TPanel; Label1: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1P_CodeName: TcxGridDBColumn; v1P_SPEC: TcxGridDBColumn; v1P_MF: TcxGridDBColumn; v1P_KZ: TcxGridDBColumn; v1RollNum: TcxGridDBColumn; v1Qty: TcxGridDBColumn; v1QtyUnit: TcxGridDBColumn; v1Note: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; v1CRType: TcxGridDBColumn; v1CRTime: TcxGridDBColumn; v1Filler: TcxGridDBColumn; v1FillTime: TcxGridDBColumn; Label3: TLabel; Label4: TLabel; P_CodeName: TEdit; P_Code: TEdit; CRType: TComboBox; Label5: TLabel; ADOQueryCmd: TADOQuery; ADOQueryTmp: TADOQuery; DataSource1: TDataSource; CDS_Main: TClientDataSet; cxGridPopupMenu1: TcxGridPopupMenu; v1CPTYPE: TcxGridDBColumn; ckName: TComboBox; Label6: TLabel; v1P_Color: TcxGridDBColumn; ADOPrint: TADOQuery; RMDB_MD: TRMDBDataSet; RMGridReport1: TRMGridReport; RMXLSExport1: TRMXLSExport; v1P_Code: TcxGridDBColumn; v1inoutNO: TcxGridDBColumn; TBsmADD: TToolButton; ywy: TEdit; Label7: TLabel; v1custName: TcxGridDBColumn; TbPrint1: TToolButton; v1Column1: TcxGridDBColumn; kuwei: TEdit; Label8: TLabel; v1Column3: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1defnote5: TcxGridDBColumn; v1Column2: TcxGridDBColumn; cxTabControl1: TcxTabControl; v1Column6: TcxGridDBColumn; v1Column7: TcxGridDBColumn; P_Color: TEdit; Label9: TLabel; custName: TEdit; Label2: TLabel; Tchk: TToolButton; Tnochk: TToolButton; v1Column8: TcxGridDBColumn; v1Column9: TcxGridDBColumn; ToolButton1: TToolButton; ADOQuery1: TADOQuery; Label10: TLabel; KHShortName: TEdit; Tv1Column1: TcxGridDBColumn; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure TBAddClick(Sender: TObject); procedure P_CodeNameChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBPrintClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBsmADDClick(Sender: TObject); procedure TbPrint1Click(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure TchkClick(Sender: TObject); procedure TnochkClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); private procedure InitGrid(); procedure SetComboBox(); procedure SetStatus(); function YSData(fYFName: string): Boolean; { Private declarations } public fCKName: string; canshu1, canshu2: string; { Public declarations } end; var frmBpDYlist: TfrmBpDYlist; implementation uses U_DataLink, U_Fun10, U_ZDYHelp, U_BpDY, U_BpSmCk; {$R *.dfm} procedure TfrmBpDYlist.SetStatus(); begin TBedit.Visible := false; Tbdel.Visible := false; Tchk.Visible := false; Tnochk.Visible := false; if trim(canshu1) = '' then begin case cxTabControl1.TabIndex of 0: begin TBedit.Visible := true; Tbdel.Visible := true; end; 1: begin // tbcdel.Visible:=true; end; end; end else begin case cxTabControl1.TabIndex of 0: begin TBedit.Visible := true; Tbdel.Visible := true; Tchk.Visible := true; end; 1: begin Tnochk.Visible := true; end; end; end; end; procedure TfrmBpDYlist.SetComboBox(); begin ckName.Items.Clear; with adoQueryTmp do begin close; sql.Clear; sql.Add('select * from KH_ZDY where Type=''YPCK'' '); if trim(fCKName) <> '' then sql.Add('and zdyName=' + quotedstr(trim(fCKName))); open; while not eof do begin ckName.Items.Add(trim(fieldbyname('zdyName').AsString)); next; end; end; if ckName.Items.Count > 0 then ckName.ItemIndex := 0; CRType.Items.Clear; CRType.Items.Add(''); with adoQueryTmp do begin close; sql.Clear; sql.Add('select * from KH_ZDY where Type=''YPCKTYPE'''); if trim(fCKName) <> '' then sql.Add('and note=' + quotedstr(trim(fCKName))); open; while not eof do begin CRType.Items.Add(trim(fieldbyname('zdyName').AsString)); next; end; end; if CRType.Items.Count > 0 then CRType.ItemIndex := 0; end; procedure TfrmBpDYlist.InitGrid(); begin try with adoqueryTmp do begin close; sql.Clear; sql.Add('select A.*,B.CYMF,B.CYKZ,B.defnote5 '); sql.Add(',KHShortName=(select top 1 ZdyNameZ from KH_Zdy_Attachment X where X.zdyname=A.custname and type=''KHName'' )'); sql.Add('from YP_InOut A'); sql.Add('left join CP_YDang B on B.CYNO=A.P_Code'); sql.Add('where CRTime>=''' + formatdateTime('yyyy-MM-dd', begdate.Date) + ''' '); sql.Add('and CRTime<''' + formatdateTime('yyyy-MM-dd', enddate.Date + 1) + ''' '); sql.Add('and CRFlag=''出库'' '); sql.Add('and valid=''Y'' '); SQL.Add('and crtype=''寄样'' '); // if trim(FckName)<>'' then // sql.Add('and ckName='+quotedstr(trim(FckName)) ); if cxTabControl1.TabIndex < 2 then sql.Add('and A.status=''' + inttostr(cxTabControl1.TabIndex) + ''' '); open; end; SCreateCDS20(adoqueryTmp, CDS_Main); SInitCDSData20(adoqueryTmp, CDS_Main); finally end; end; procedure TfrmBpDYlist.FormClose(Sender: TObject; var Action: TCloseAction); begin writeCxGrid(self.Caption, Tv1, '成品仓库'); Action := cafree; end; procedure TfrmBpDYlist.FormDestroy(Sender: TObject); begin frmBpDYlist := nil; end; procedure TfrmBpDYlist.TBAddClick(Sender: TObject); begin frmbpDY := TfrmbpDY.create(self); with frmbpDY do begin fkeyNo := ''; fType := 0; fckName := self.fckName; if trim(self.canshu1) = '业务员' then begin ywy.text := trim(Dname); ywy.Enabled := false; end; if showmodal = 1 then begin TBRafresh.Click; self.CDS_Main.Locate('crNo', trim(fkeyNo), []); end; free; end; end; procedure TfrmBpDYlist.P_CodeNameChange(Sender: TObject); begin if ADOQueryTmp.Active = False then Exit; SDofilter(ADOQueryTmp, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryTmp, CDS_Main); SInitCDSData20(ADOQueryTmp, CDS_Main); end; procedure TfrmBpDYlist.FormShow(Sender: TObject); begin readCxGrid(self.Caption, Tv1, '成品仓库'); SetComboBox(); SetStatus(); InitGrid(); end; procedure TfrmBpDYlist.FormCreate(Sender: TObject); begin BegDate.Date := DServerDate - 7; EndDate.Date := DServerDate; cxGrid1.Align := alclient; end; procedure TfrmBpDYlist.TBCloseClick(Sender: TObject); begin close; end; procedure TfrmBpDYlist.TBEditClick(Sender: TObject); begin if cds_main.IsEmpty then exit; if canshu2 = '查询' then begin if Trim(DName) <> CDS_Main.FieldByName('ywy').AsString then begin Application.MessageBox('不能操作他人数据!', '提示', 0); Exit; end; end; with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add(' select 1 from YF_Money_CR '); SQL.Add(' where status=''1'' and CRTime=''' + CDS_Main.FieldByName('CRTime').AsString + ''' '); SQL.Add(' and MainId=''' + Trim(CDS_Main.FieldByName('CRNO').AsString) + ''' '); SQL.Add(' and SubId=''' + Trim(CDS_Main.FieldByName('CRID').AsString) + ''' '); Open; end; if not ADOQueryCmd.IsEmpty then begin Application.MessageBox('应收款数据已审核,不能修改!', '提示', 0); Exit; end; { with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from BP_InOut A'); SQL.Add('where A.kcid='''+Trim(CDS_Main.fieldbyname('kcid').AsString)+''' '); sQL.Add('and A.CRFlag=''出库'''); Open; end; if not ADOQueryCmd.IsEmpty then begin Application.MessageBox('已产生出库数据,不能修改!','提示',0); Exit; end; } frmbpdy := Tfrmbpdy.create(self); with frmbpdy do begin fkeyNo := self.cds_main.fieldbyname('CRNO').AsString; fType := 1; fckName := self.fckName; if showmodal = 1 then begin TBRafresh.Click; self.CDS_Main.Locate('crNo', trim(fkeyNo), []); end; free; end; end; procedure TfrmBpDYlist.TBDelClick(Sender: TObject); var YFID, CRID: string; begin if CDS_Main.IsEmpty then Exit; if canshu2 = '查询' then begin if Trim(DName) <> CDS_Main.FieldByName('ywy').AsString then begin Application.MessageBox('不能操作他人数据!', '提示', 0); Exit; end; end; with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add(' select 1 from YF_Money_CR '); SQL.Add(' where status=''1'' and CRTime=''' + CDS_Main.FieldByName('CRTime').AsString + ''' '); SQL.Add(' and MainId=''' + Trim(CDS_Main.FieldByName('CRNO').AsString) + ''' '); SQL.Add(' and SubId=''' + Trim(CDS_Main.FieldByName('CRID').AsString) + ''' '); Open; end; if not ADOQueryCmd.IsEmpty then begin Application.MessageBox('应收款数据已审核,不能删除!', '提示', 0); Exit; end; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; try with ADOQueryCmd do begin Close; sql.Clear; sql.Add('update YP_InOut SET valid=''N'' '); sql.Add(',editer=' + quotedstr(trim(DName))); sql.Add(',edittime=getdate()'); SQL.Add('where CRNO=''' + Trim(CDS_Main.fieldbyname('CRNO').AsString) + ''' '); sql.Add(' and crid=''' + Trim(CDS_Main.fieldbyname('CRID').AsString) + ''''); sql.Add('delete from YF_money_CR '); SQL.Add('where mainID=''' + Trim(CDS_Main.fieldbyname('CRNO').AsString) + ''' '); SQL.Add('and subID=''' + Trim(CDS_Main.fieldbyname('CRID').AsString) + ''' '); execsql; end; TBRafresh.Click; except Application.MessageBox('数据删除失败!', '提示信息', 0); end; end; procedure TfrmBpDYlist.TBRafreshClick(Sender: TObject); begin initGrid(); end; procedure TfrmBpDYlist.TBPrintClick(Sender: TObject); var filepath: string; begin if CDS_Main.IsEmpty then exit; with AdoPrint do begin close; sql.Clear; sql.Add('exec P_Print_cpCkMd '); sql.Add('@inoutNo=' + quotedstr(trim(CDS_Main.fieldbyname('inoutNO').AsString))); sql.Add(',@flag=' + quotedstr(trim(''))); open; end; try filepath := ExtractFilePath(Application.ExeName) + 'report\出库码单.rmf'; if not FileExists(Pchar(filepath)) then begin application.MessageBox(pchar('文件[' + filepath + ']不存在!'), '提示信息', MB_IConError); exit; end; RMVariables['dtxz'] := FormatDateTime('yyyy-mm-dd', date()); RMVariables['zdr'] := trim(DName); RMVariables['Filler'] := trim(CDS_Main.fieldbyname('Filler').AsString); RMGridReport1.LoadFromFile(filepath); RMGridReport1.ShowReport; finally end; end; procedure TfrmBpDYlist.TBExportClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid1); end; procedure TfrmBpDYlist.TBsmADDClick(Sender: TObject); begin frmbpsmck := Tfrmbpsmck.create(self); with frmbpsmck do begin fkeyNo := ''; fType := 0; fckName := self.fckName; if showmodal = 1 then begin TBRafresh.Click; // self.CDS_Main.Locate('crNo',trim(fkeyNo),[]) ; end; TBRafresh.Click; free; end; end; procedure TfrmBpDYlist.TbPrint1Click(Sender: TObject); var filepath: string; begin if CDS_Main.IsEmpty then exit; with AdoPrint do begin close; sql.Clear; sql.Add(' select A.*,B.CYMF,B.CYKZ,B.defnote5, '); sql.Add(' FilesOther=(select top 1 X1.FilesOther from TP_File X1,CP_YDang X2 where X1.WBID=X2.CYID and X2.CYNo=A.P_Code and X1.TFType=''样品'') '); sql.Add(' from YP_INout A '); sql.Add(' left join CP_YDang B on B.CYNO=A.P_Code'); sql.Add(' where A.inoutNo=' + quotedstr(trim(CDS_Main.fieldbyname('inoutNO').AsString))); open; end; try filepath := ExtractFilePath(Application.ExeName) + 'report\样品发货单.rmf'; if not FileExists(Pchar(filepath)) then begin application.MessageBox(pchar('文件[' + filepath + ']不存在!'), '提示信息', MB_IConError); exit; end; RMVariables['dtxz'] := FormatDateTime('yyyy-mm-dd', date()); RMVariables['zdr'] := trim(DName); RMVariables['Filler'] := trim(CDS_Main.fieldbyname('Filler').AsString); RMGridReport1.LoadFromFile(filepath); RMGridReport1.ShowReport; finally end; end; procedure TfrmBpDYlist.cxTabControl1Change(Sender: TObject); begin SetStatus(); initGrid(); end; procedure TfrmBpDYlist.TchkClick(Sender: TObject); begin if CDS_Main.IsEmpty then exit; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update YP_InOut SET status=''1'' '); sql.Add('where CRNO=' + quotedstr(trim(CDS_Main.fieldbyname('CRNO').AsString))); execsql; end; application.MessageBox('审核成功!', '提示信息'); TBRafresh.Click; except application.MessageBox('审核失败!', '提示信息', 0); end; end; procedure TfrmBpDYlist.TnochkClick(Sender: TObject); begin if CDS_Main.IsEmpty then exit; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update YP_InOut SET status=''0'' '); sql.Add('where CRNO=' + quotedstr(trim(CDS_Main.fieldbyname('CRNO').AsString))); execsql; end; application.MessageBox('撤销审核成功!', '提示信息'); TBRafresh.Click; except application.MessageBox('撤销审核失败!', '提示信息', 0); end; end; procedure TfrmBpDYlist.ToolButton1Click(Sender: TObject); var i: integer; begin i := 0; if Application.MessageBox('确定要同步数据吗?', '提示', 32 + 4) <> IDYES then Exit; try cds_Main.DisableControls; ADOQuerytmp.Connection.BeginTrans; with ADOQuerytmp do begin close; sql.Clear; sql.add('select * from YP_InOut A'); sql.add('where not exists (select * from YF_Money_CR B where A.CRNO=B.MainId and A.crid=B.subid and B.YFName=''寄样销售'') and CRType=''寄样'' '); sql.add('and valid<>''N'' '); open; SCreateCDS20(adoqueryTmp, CDS_Main); SInitCDSData20(adoqueryTmp, CDS_Main); with cds_main do begin first; while not eof do begin if not YSData('寄样销售') then begin ADOQuerytmp.Connection.RollbackTrans; exit; end; i := i + 1; next; end; end; end; ADOQuerytmp.Connection.CommitTrans; cds_main.EnableControls; application.MessageBox(pchar('成功同步' + inttostr(i) + '条数据!'), '提示信息'); initgrid(); exit; except ADOQuerytmp.Connection.RollbackTrans; cds_main.EnableControls; application.MessageBox('数据同步失败!', '提示信息', 0); end; end; function TfrmBpDYlist.YSData(fYFName: string): Boolean; var CRID, YFID, Price, PriceUnit, OrderUnit, FComTaiTou, cust: string; begin Result := False; with ADOQueryTmp do begin Close; SQL.Clear; sql.Add('select * from YF_Money_KC where FactoryName=''' + Trim(custName.Text) + ''' '); Open; end; if not ADOQueryTmp.IsEmpty then begin CRID := ADOQueryTmp.fieldbyname('CRID').AsString; end else begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_CRID set CRID=CRID+1'); sql.Add('select * from YF_Money_CRID '); Open; end; CRID := ADOQueryCmd.fieldbyname('CRID').AsString; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from YF_Money_KC where 1<>1'); Open; end; with ADOQueryCmd do begin Append; FieldByName('CRID').Value := StrToInt(CRID); FieldByName('FactoryName').Value := Trim(custName.Text); FieldByName('ZdyStr1').Value := '应收收'; Post; end; end; with ADOQueryTmp do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR '); sql.Add(' where MainID=''' + Trim(CDS_Main.fieldbyname('CRNO').AsString) + ''''); sql.Add(' and subID=''' + Trim(CDS_Main.fieldbyname('CRID').AsString) + ''''); sql.Add(' and YFName=''' + trim(fYFName) + ''' '); Open; end; if ADOQueryTmp.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(CDS_Main.fieldbyname('CRNO').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(CDS_Main.fieldbyname('custName').AsString); FieldByName('CRTime').Value := CDS_Main.fieldbyname('crtime').AsDateTime; FieldByName('YFType').Value := '自动生成'; FieldByName('ps').Value := CDS_Main.fieldbyname('RollNum').AsFloat; FieldByName('Qty').Value := CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('Price').Value := CDS_Main.fieldbyname('Price').AsFloat; FieldByName('Money').Value := CDS_Main.fieldbyname('Money').AsFloat; FieldByName('BBMoney').Value := CDS_Main.fieldbyname('Money').AsFloat; FieldByName('HuiLv').Value := 1; FieldByName('BZType').Value := 'RMB'; FieldByName('QtyUnit').Value := Trim(CDS_Main.fieldbyname('QtyUnit').AsString); FieldByName('ComTaiTou').Value := Trim(CDS_Main.fieldbyname('custName').AsString); FieldByName('YFName').Value := fYFName; FieldByName('MainId').Value := Trim(CDS_Main.fieldbyname('CRNO').AsString); FieldByName('subID').Value := Trim(CDS_Main.fieldbyname('CRID').AsString); FieldByName('orderNo').Value := Trim(CDS_Main.fieldbyname('P_Code').AsString); FieldByName('P_CodeName').Value := Trim(CDS_Main.fieldbyname('P_CodeName').AsString); FieldByName('P_Spec').Value := Trim(CDS_Main.fieldbyname('P_Spec').AsString); FieldByName('P_Color').Value := Trim(CDS_Main.fieldbyname('P_Color').AsString); FieldByName('status').Value := '0'; Post; end; end else begin YFID := Trim(ADOQueryTmp.fieldbyname('YFID').AsString); end; Result := True; end; end.