unit U_SXCKNewList; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls, ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient, cxDropDownEdit, cxCheckBox, RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport, Menus, cxCalendar, cxButtonEdit, cxTextEdit, cxPC; type TfrmSXCKNewList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBExport: TToolButton; TBClose: TToolButton; Panel1: TPanel; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; Label1: TLabel; Label2: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; CDS_Main: TClientDataSet; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; Label3: TLabel; Label4: TLabel; Label12: TLabel; YLName: TEdit; FactoryName: TEdit; CRType: TComboBox; Label9: TLabel; SSType: TComboBox; ToolButton1: TToolButton; cxTabControl1: TcxTabControl; cxGridPopupMenu1: TcxGridPopupMenu; Label10: TLabel; cxGrid2: TcxGrid; Tv1: TcxGridDBTableView; v1CRTime: TcxGridDBColumn; v1CRType: TcxGridDBColumn; v1FactoryName: TcxGridDBColumn; v1YLName: TcxGridDBColumn; v2Qty: TcxGridDBColumn; v1QtyUnit: TcxGridDBColumn; v1YFPrice: TcxGridDBColumn; v1Note: TcxGridDBColumn; cxGrid2Level1: TcxGridLevel; v1Ssel: TcxGridDBColumn; v1YLQName: TcxGridDBColumn; Label5: TLabel; YLQName: TEdit; v1CheDui: TcxGridDBColumn; v1tuobie: TcxGridDBColumn; Label6: TLabel; CheDui: TEdit; Label7: TLabel; tuobie: TEdit; v1QWEType: TcxGridDBColumn; Label8: TLabel; QWEType: TEdit; v1DHDate: TcxGridDBColumn; v1Column1: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure ConNoMChange(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure SPIDKeyPress(Sender: TObject; var Key: Char); procedure SPIDChange(Sender: TObject); procedure SPSpecChange(Sender: TObject); procedure FactoryNameChange(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private canshu1,canshu2:string; procedure InitGrid(); function YFData():Boolean; function YSYFData():Boolean; { Private declarations } public { Public declarations } end; var frmSXCKNewList: TfrmSXCKNewList; implementation uses U_DataLink,U_Fun; {$R *.dfm} function TfrmSXCKNewList.YFData():Boolean; var CRID,OrdMainId,YFID,FComTaiTou,FCRID,FFactoryName:String; begin Result:=False; with ADOQueryTemp do begin Close; SQL.Clear; sql.Add('select * from YF_Money_KC where FactoryName='+quotedstr(Trim(CDS_Main.fieldbyname('FactoryName').AsString))); Open; end; if ADOQueryTemp.IsEmpty=False then begin CRID:=ADOQueryTemp.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=2'); Open; end; with ADOQueryCmd do begin Append; FieldByName('CRID').Value:=StrToInt(CRID); FieldByName('FactoryName').Value:=Trim(CDS_Main.fieldbyname('factoryName').AsString); FieldByName('ZdyStr1').Value:='应付付'; Post; end; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR where FactoryName='+quotedstr(Trim(CDS_Main.fieldbyname('factoryName').AsString))); sql.Add(' and mainID='''+Trim(CDS_Main.fieldbyname('SPID').AsString)+''''); Open; end; if ADOQueryTemp.IsEmpty then begin if GetLSNo(ADOQueryCmd,YFID,'YF','YF_Money_CR',4,1)=False then begin Application.MessageBox('取坯布应付最大号失败!','提示',0); Exit; end; end else begin YFID:=Trim(ADOQueryTemp.fieldbyname('YFID').AsString); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR where YFID='''+Trim(YFID)+''''); Open; end; with ADOQueryCmd do begin if ADOQueryTemp.IsEmpty then Append else Edit; FieldByName('YFID').Value:=Trim(YFID); FieldByName('YFTypeId').Value:=Trim(CDS_Main.fieldbyname('SPID').AsString); FieldByName('YLQName').Value:=Trim(CDS_Main.fieldbyname('YLQName').AsString); FieldByName('KPType').Value:=Trim(CDS_Main.fieldbyname('KPType').AsString); FieldByName('CRID').Value:=StrToInt(CRID); FieldByName('Filler').Value:=Trim(DName); FieldByName('CRType').Value:='应付款登记'; FieldByName('CRFlag').Value:='应付付'; FieldByName('QtyFlag').Value:=1; FieldByName('CheDui').Value:=Trim(CDS_Main.fieldbyname('CheDui').AsString); IF Trim(CDS_Main.fieldbyname('CRType').AsString)='采购退货' then begin FieldByName('YFName').Value:='退货费'; FieldByName('FactoryName').Value:=Trim(CDS_Main.fieldbyname('FactoryName').AsString); FieldByName('money').Value:=-CDS_Main.fieldbyname('Price').AsFloat*CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('BBmoney').Value:=-CDS_Main.fieldbyname('Price').AsFloat*CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('Qty').Value:=-CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('MQty').Value:=-CDS_Main.fieldbyname('Qty').AsFloat; end else begin if CDS_Main.FieldByName('QWEType').Value='原料' then begin fieldbyname('YFName').Value:='原料费'; end; if CDS_Main.FieldByName('QWEType').Value='机物料' then begin fieldbyname('YFName').Value:='机物料费'; end; FieldByName('FactoryName').Value:=Trim(CDS_Main.fieldbyname('factoryName').AsString); FieldByName('money').Value:=CDS_Main.fieldbyname('Price').AsFloat*CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('BBmoney').Value:=CDS_Main.fieldbyname('Price').AsFloat*CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('Qty').Value:=CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('MQty').Value:=CDS_Main.fieldbyname('Qty').AsFloat; end; FieldByName('PBNote').Value:=trim(CDS_Main.fieldbyname('Note').AsString); FieldByName('CRTime').Value:=CDS_Main.fieldbyname('CRTime').AsDateTime; FieldByName('DHDate').Value:=CDS_Main.fieldbyname('DHDate').AsDateTime; FieldByName('YFType').Value:='自动生成'; FieldByName('Price').Value:=CDS_Main.fieldbyname('Price').AsFloat; FieldByName('HuiLv').Value:=1; FieldByName('BZType').Value:='RMB'; FieldByName('ComTaiTou').Value:='山峰'; FieldByName('QtyUnit').Value:=Trim(CDS_Main.fieldbyname('QtyUnit').AsString); FieldByName('P_CodeName').Value:=Trim(CDS_Main.fieldbyname('YLName').AsString); FieldByName('MainId').Value:=Trim(CDS_Main.fieldbyname('SPID').AsString); FieldByName('status').Value:='0'; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_KC Set KCMoney=(select isnull(Sum(Money*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)'); sql.Add(',KCBBMoney=(select isnull(Sum(BBMoney*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)'); sql.Add(' where CRID='+CRID); ExecSQL; end; Result:=True; end; function TfrmSXCKNewList.YSYFData():Boolean; var CRID,OrdMainId,YFID,FComTaiTou,FCRID,FFactoryName:String; begin Result:=False; with ADOQueryTemp do begin Close; SQL.Clear; sql.Add('select * from YF_Money_KC where FactoryName='+quotedstr(Trim(CDS_Main.fieldbyname('CheDui').AsString))); Open; end; if ADOQueryTemp.IsEmpty=False then begin CRID:=ADOQueryTemp.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=2'); Open; end; with ADOQueryCmd do begin Append; FieldByName('CRID').Value:=StrToInt(CRID); FieldByName('FactoryName').Value:=Trim(CDS_Main.fieldbyname('CheDui').AsString); FieldByName('ZdyStr1').Value:='应付付'; Post; end; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR where FactoryName='+quotedstr(Trim(CDS_Main.fieldbyname('CheDui').AsString))); sql.Add(' and mainID='''+Trim(CDS_Main.fieldbyname('SPID').AsString)+''''); Open; end; if ADOQueryTemp.IsEmpty then begin if GetLSNo(ADOQueryCmd,YFID,'CF','YF_Money_CR',3,1)=False then begin Application.MessageBox('取坯布应付最大号失败!','提示',0); Exit; end; end else begin YFID:=Trim(ADOQueryTemp.fieldbyname('YFID').AsString); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR where YFID='''+Trim(YFID)+''''); Open; end; with ADOQueryCmd do begin if ADOQueryTemp.IsEmpty then Append else Edit; FieldByName('YFID').Value:=Trim(YFID); FieldByName('YFTypeId').Value:=Trim(CDS_Main.fieldbyname('SPID').AsString); FieldByName('YLQName').Value:=Trim(CDS_Main.fieldbyname('YLQName').AsString); FieldByName('KPType').Value:=Trim(CDS_Main.fieldbyname('KPType').AsString); FieldByName('CRID').Value:=StrToInt(CRID); FieldByName('Filler').Value:=Trim(DName); FieldByName('CRType').Value:='应付款登记'; FieldByName('CRFlag').Value:='应付付'; FieldByName('QtyFlag').Value:=1; FieldByName('CheDui').Value:=Trim(CDS_Main.fieldbyname('FactoryName').AsString); FieldByName('FactoryName').Value:=Trim(CDS_Main.fieldbyname('CheDui').AsString); FieldByName('money').Value:=CDS_Main.fieldbyname('YFPrice').AsFloat*CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('BBmoney').Value:=CDS_Main.fieldbyname('YFPrice').AsFloat*CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('Qty').Value:=CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('MQty').Value:=CDS_Main.fieldbyname('Qty').AsFloat; FieldByName('PBNote').Value:=trim(CDS_Main.fieldbyname('Note').AsString); FieldByName('CRTime').Value:=CDS_Main.fieldbyname('CRTime').AsDateTime; FieldByName('YFType').Value:='自动生成'; FieldByName('Price').Value:=CDS_Main.fieldbyname('YFPrice').AsFloat; FieldByName('HuiLv').Value:=1; FieldByName('BZType').Value:='RMB'; FieldByName('ComTaiTou').Value:=''; FieldByName('QtyUnit').Value:=Trim(CDS_Main.fieldbyname('QtyUnit').AsString); FieldByName('P_CodeName').Value:=Trim(CDS_Main.fieldbyname('YLName').AsString); fieldbyname('YFName').Value:='运费'; FieldByName('MainId').Value:=Trim(CDS_Main.fieldbyname('SPID').AsString); FieldByName('status').Value:='0'; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_KC Set KCMoney=(select isnull(Sum(Money*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)'); sql.Add(',KCBBMoney=(select isnull(Sum(BBMoney*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)'); sql.Add(' where CRID='+CRID); ExecSQL; end; Result:=True; end; procedure TfrmSXCKNewList.FormDestroy(Sender: TObject); begin frmSXCKNewList:=nil; end; procedure TfrmSXCKNewList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmSXCKNewList.FormCreate(Sender: TObject); begin //cxGrid1.Align:=alClient; EndDate.DateTime:=SGetServerDate10(ADOQueryTemp); BegDate.DateTime:=EndDate.DateTime; canshu1:=Trim(DParameters1); canshu2:=Trim(DParameters2); end; procedure TfrmSXCKNewList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add(' select A.CRTime,A.DHDate,A.CRType,A.YLName,A.YLQName,A.Price,A.Qty,A.QtyUnit,A.YFPrice,A.CheDui,A.tuobie,A.Note,A.SPID'); sql.add(',cast(''原料'' as varchar(10)) QWEType'); sql.Add(',KPType=(select Top 1 KPType from KH_Zdy_Attachment KZA where KZA.ZdyName=A.FactoryName and KZA.Type=''GYS'' and isnull(KZA.KPTYpe,'''')<>'''' )'); sql.Add(',FactoryName=(select Top 1 ZDYNameZ from KH_Zdy_Attachment KZA where KZA.ZdyName=A.FactoryName and KZA.Type=''GYS'')'); sql.Add(' from CK_SXPB_CR A'); sql.add(' where CRType in(''采购入库'',''采购退货'',''回修完成'',''退货出库'')'); sql.Add(' and A.CRTime>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.DateTime))+''''); sql.Add(' and A.CRTime<'''+Trim(FormatDateTime('yyyy-MM-dd',enddate.DateTime+1))+''''); IF cxTabControl1.TabIndex=0 then SQL.Add(' and not exists(select maiNID from YF_Money_CR X where X.MainID=A.SPID)') else begin SQL.Add(' and exists(select maiNID from YF_Money_CR X where X.MainID=A.SPID )'); end; sql.add(' union all'); sql.Add(' select A.CRTime,DHDate=A.CRTime,A.CRType,A.YCLName YLName,A.YCLName YLQName,cast(0 as decimal(18,2)) Price,A.CRQty Qty,A.CRUnit QtyUnit'); sql.Add(',cast(0 as decimal(18,2)) YFPrice,cast('''' as varchar(50)) CheDui,cast('''' as varchar(50)) tuobie,A.Note,A.MSID SPID'); sql.add(',cast(''机物料'' as varchar(10)) QWEType'); sql.Add(',KPType=(select Top 1 KPType from KH_Zdy_Attachment KZA where KZA.ZdyName=A.GYSName and KZA.Type=''GYS'' and isnull(KPTYpe,'''')<>'''' )'); SQL.Add(',A.GYSName FactoryName'); sql.add(' from CK_YCLONE_CR A'); sql.Add(' where CRType in (''正常入库'',''退货出库'')'); sql.Add(' and A.CRTime>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.DateTime))+''''); sql.Add(' and A.CRTime<'''+Trim(FormatDateTime('yyyy-MM-dd',enddate.DateTime+1))+''''); IF cxTabControl1.TabIndex=0 then SQL.Add(' and not exists(select maiNID from YF_Money_CR X where X.MainID=A.MSID)') else begin SQL.Add(' and exists(select maiNID from YF_Money_CR X where X.MainID=A.MSID )'); end; Open; //ShowMessage(SQL.Text); end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); finally; ADOQueryMain.EnableControls; end; end; procedure TfrmSXCKNewList.TBRafreshClick(Sender: TObject); begin BegDate.SetFocus; InitGrid(); end; procedure TfrmSXCKNewList.ConNoMChange(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); end; end; procedure TfrmSXCKNewList.TBCloseClick(Sender: TObject); begin WriteCxGrid(self.Caption,Tv1,'坯布仓库'); Close; end; procedure TfrmSXCKNewList.FormShow(Sender: TObject); begin ReadCxGrid(self.Caption,Tv1,'坯布仓库'); { if Trim(canshu2)='查看' then begin TBAdd.Visible:=False; TBDel.Visible:=False; TBEdit.Visible:=False; end else begin TBAdd.Visible:=True; TBDel.Visible:=True; TBEdit.Visible:=True; end;} //InitGrid(); end; procedure TfrmSXCKNewList.TBExportClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then exit; TcxGridToExcel('坯布入库列表',cxGrid2); end; procedure TfrmSXCKNewList.TBFindClick(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); end; end; procedure TfrmSXCKNewList.N1Click(Sender: TObject); begin SelOKNo(CDS_Main,True); end; procedure TfrmSXCKNewList.N2Click(Sender: TObject); begin SelOKNo(CDS_Main,False); end; procedure TfrmSXCKNewList.SPIDKeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then begin {if Length(Trim(SPID.Text))<4 then Exit; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add(' select A.* '); sql.Add(',ConNo=(select ConNo from Contract_Main CM where CM.MainId=A.CGMainId)'); //sql.Add(' ,ConNo=(select ConNo from Contract_Main CM where CM.MainId=A.CGMainId )'); sql.Add(' from CK_SXPB_CR A'); sql.add(' where SPID like :SXID'); Parameters.ParamByName('SXID').Value:='%'+Trim(SXID.Text)+'%'; Open; //ShowMessage(SQL.Text); end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); finally ADOQueryMain.EnableControls; end; } end; end; procedure TfrmSXCKNewList.SPIDChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmSXCKNewList.SPSpecChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmSXCKNewList.FactoryNameChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmSXCKNewList.ToolButton1Click(Sender: TObject); begin IF CDS_Main.IsEmpty then exit; if cxtabControl1.TabIndex<>0 then exit; IF not CDS_Main.Locate('ssel',true,[]) then begin application.MessageBox('没有选择数据!','提示信息',0); exit; end; ADOQueryCmd.Connection.BeginTrans; try with CDS_Main do begin DisableControls; first; while not eof do begin IF fieldbyname('ssel').AsBoolean then begin IF not YFData() then begin ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('生成应付款失败!','提示信息',0); end; if CDS_Main.FieldByName('CheDui').AsString<>'' then begin IF not YSYFData() then begin ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('生成应付款失败!','提示信息',0); end; end; end; next; end; first; EnableControls; end; ADOQueryCmd.Connection.CommitTrans; application.MessageBox('生成应付款成功!','提示信息'); initGrid(); except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('生成应付款失败!','提示信息',0); end; end; procedure TfrmSXCKNewList.cxTabControl1Change(Sender: TObject); begin INITGrid(); end; procedure TfrmSXCKNewList.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button=mbright then end; end.