unit U_SXCKNewList_SKMgg; 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_SKMgg = 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; BNo: TEdit; CustomerNoName: TEdit; Label7: TLabel; OrderNo: TEdit; Label9: TLabel; SSType: TComboBox; ToolButton1: TToolButton; cxTabControl1: TcxTabControl; cxGridPopupMenu1: TcxGridPopupMenu; Label11: TLabel; ConNO: TEdit; cxGrid2: TcxGrid; Tv1: TcxGridDBTableView; v1CRTime: TcxGridDBColumn; v1ConNO: TcxGridDBColumn; V1orderNo: TcxGridDBColumn; v1CustomerNoName: TcxGridDBColumn; v1YLName: TcxGridDBColumn; v2CPFLQty: TcxGridDBColumn; v1TeXing: TcxGridDBColumn; cxGrid2Level1: TcxGridLevel; v1Ssel: TcxGridDBColumn; v1GCName: TcxGridDBColumn; Label6: TLabel; GCName: TEdit; Label5: TLabel; TeXing: TEdit; v1SGFangshi: TcxGridDBColumn; Label8: TLabel; SGFangshi: TEdit; v1XFBFB: TcxGridDBColumn; v1ConType: TcxGridDBColumn; v1XXPrice: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1Column6: 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 CustomerNoNameChange(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure OrderNoKeyPress(Sender: TObject; var Key: Char); procedure ConNOKeyPress(Sender: TObject; var Key: Char); private canshu1,canshu2:string; procedure InitGrid(); function YFData():Boolean; { Private declarations } public FfeeType:string; { Public declarations } end; var frmSXCKNewList_SKMgg: TfrmSXCKNewList_SKMgg; implementation uses U_DataLink,U_Fun; {$R *.dfm} function TfrmSXCKNewList_SKMgg.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('CustomerNoName').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('CustomerNoName').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('CustomerNoName').AsString))); sql.Add(' and YFTypeId='''+Trim(CDS_Main.fieldbyname('Mainid').AsString)+''''); sql.Add(' and SGFangshi='''+Trim(CDS_Main.fieldbyname('SGFangshi').AsString)+''''); sql.Add(' and TeXing='''+Trim(CDS_Main.fieldbyname('TeXing').AsString)+''''); sql.Add(' and P_CodeName='''+Trim(CDS_Main.fieldbyname('BNo').AsString)+''''); sql.Add(' and GCName='''+Trim(CDS_Main.fieldbyname('GCName').AsString)+''''); SQL.Add(' and CRTime='''+trim(formatdatetime('yyyy-MM-dd',CDS_Main.fieldbyname('CRTime').AsDateTime))+''''); Open; end; if ADOQueryTemp.IsEmpty then begin if GetLSNo(ADOQueryCmd,YFID,'YS','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 ADOQueryCmd.IsEmpty then Append else Edit; FieldByName('YFID').Value:=Trim(YFID); FieldByName('YFTypeId').Value:=Trim(CDS_Main.fieldbyname('Mainid').AsString); //明细 FieldByName('ConSubID').Value:=Trim(CDS_Main.fieldbyname('ConSubID').AsString); FieldByName('TeXing').Value:=Trim(CDS_Main.fieldbyname('TeXing').AsString); FieldByName('SGFangshi').Value:=Trim(CDS_Main.fieldbyname('SGFangshi').AsString); FieldByName('CRID').Value:=StrToInt(CRID); FieldByName('Filler').Value:=Trim(DName); fieldbyname('KPType').Value:=Trim(CDS_Main.fieldbyname('KPType').AsString); FieldByName('CRType').Value:='应收款登记'; FieldByName('CRFlag').Value:='应收收'; FieldByName('QtyFlag').Value:=1; FieldByName('FactoryName').Value:=Trim(CDS_Main.fieldbyname('CustomerNoName').AsString); FieldByName('CRTime').Value:=trim(formatdatetime('yyyy-MM-dd',CDS_Main.fieldbyname('CRTime').AsDateTime)); FieldByName('P_CodeName').Value:=trim(CDS_Main.fieldbyname('BNo').AsString); FieldByName('GCName').Value:=trim(CDS_Main.fieldbyname('GCName').AsString); FieldByName('YFType').Value:='自动生成'; if CDS_Main.fieldbyname('TeXing').AsString<>'' then FieldByName('JSType').Value:=Trim(CDS_Main.fieldbyname('TeXing').AsString) else begin if (CDS_Main.fieldbyname('SGFangshi').AsString='非泵') or (CDS_Main.fieldbyname('SGFangshi').AsString='塔吊') then begin FieldByName('JSType').Value:='非泵'; end; if (CDS_Main.fieldbyname('SGFangshi').AsString='泵送') or (CDS_Main.fieldbyname('SGFangshi').AsString='拖泵') or (CDS_Main.fieldbyname('SGFangshi').AsString='车载泵') then begin FieldByName('JSType').Value:='泵送'; end; end; FieldByName('HuiLv').Value:=1; fieldbyname('SLV').Value:=1; FieldByName('BZType').Value:='¥'; FieldByName('ComTaiTou').Value:='山峰'; fieldbyname('OrderNo').Value:=trim(CDS_Main.fieldbyname('OrderNo').AsString); fieldbyname('Qty').Value:=CDS_Main.fieldbyname('CPFLQty').AsFloat; fieldbyname('CPFLQty').Value:=CDS_Main.fieldbyname('CPFLQty').AsFloat; FieldByName('XXPrice').Value:=CDS_Main.fieldbyname('XXPrice').AsFloat; FieldByName('XFBFB').Value:=CDS_Main.fieldbyname('XFBFB').AsFloat; FieldByName('GuDingPrice').Value:=CDS_Main.fieldbyname('GuDingPrice').Value; FieldByName('OtherPrice').Value:=CDS_Main.fieldbyname('OtherPrice').Value; FieldByName('BengSongFee').Value:=CDS_Main.fieldbyname('BengSongFee').Value; fieldbyname('YFName').Value:='销售费'; FieldByName('MainId').Value:=Trim(CDS_Main.fieldbyname('Mainid').AsString); //汇总 Fieldbyname('ConNO').Value:=trim(CDS_Main.fieldbyname('ConNO').AsString); Fieldbyname('ConID').Value:=trim(CDS_Main.fieldbyname('ConSubid').AsString); FieldByName('status').Value:='0'; FieldByName('Chkstatus').Value:='0'; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_CR Set Price=isnull(GuDingPrice,0)+isnull(OtherPrice,0)');//+isnull(KSFee,0) sql.Add(' where YFID='''+Trim(YFID)+''''); sql.Add(' and isnull(GuDingPrice,0)>0'); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_CR Set Price=XXPrice*(1-isnull(XFBFB,0)*0.01)+isnull(OtherPrice,0)');//+isnull(KSFee,0) sql.Add(' where YFID='''+Trim(YFID)+''''); sql.Add(' and isnull(GuDingPrice,0)=0'); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_CR Set Money=Qty*Price+isnull(BengSongFee,0),BBMoney=Qty*Price+isnull(BengSongFee,0)'); sql.Add(' where YFID='''+Trim(YFID)+''''); ExecSQL; 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_SKMgg.FormDestroy(Sender: TObject); begin frmSXCKNewList_SKMgg:=nil; end; procedure TfrmSXCKNewList_SKMgg.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmSXCKNewList_SKMgg.FormCreate(Sender: TObject); begin //cxGrid1.Align:=alClient; EndDate.DateTime:=SGetServerDate10(ADOQueryTemp); BegDate.DateTime:=EndDate.DateTime; canshu1:=Trim(DParameters1); canshu2:=Trim(DParameters2); end; procedure TfrmSXCKNewList_SKMgg.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add(' select '); sql.Add(' ConType=(select Top 1 JS.ConType from JYOrderCon_Main JS inner join JYOrder_Main JM on JS.ConNo=JM.ConNo where JM.Mainid=A.Mainid)'); sql.Add(' ,KPType=(select Top 1 JS.KPType from JYOrderCon_Main JS inner join JYOrder_Main JM on JS.ConNo=JM.ConNo where JM.Mainid=A.Mainid)'); sql.Add(',A.SGFangshi'); sql.Add(',CRTime=convert(char(10),A.CRTime,120),A.ConSubid,A.ConNO'); sql.Add(',A.Mainid,A.OrderNo,A.GCName,A.CustomerNoName,A.BNo,A.TeXing,Sum(A.CPFLQty) CPFLQty'); sql.Add(',B.GuDingPrice,B.XFBFB,B.OtherPrice,B.BengSongFee'); sql.Add(',XXPrice=(select Top 1 C.XXPrice from JYOrder_HuiLV C where convert(varchar(7),C.BegDate,120)=convert(varchar(7),A.CRTime,120)'); sql.Add(' and C.TeXing=(case when isnull(A.TeXing,'''')<>'''' then A.TeXing else (case when isnull(A.SGFangshi,'''') in (''非泵'',''塔吊'') then ''非泵'' '); sql.Add(' else (case when isnull(A.SGFangshi,'''') in (''泵送'',''拖泵'',''车载泵'') then ''泵送'' else '''' end) end) end) and C.BNo=A.BNo)'); sql.Add(' from CK_CP_CR A'); sql.Add(' left join JYOrderCon_Sub B on B.Subid=A.ConSubid'); sql.add(' where A.CRType=''销售出库'' '); sql.add(' and A.CRTime>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date))+''''); sql.Add(' and A.CRTime<'''+Trim(FormatDateTime('yyyy-MM-dd',enddate.Date+1))+''''); IF cxTabControl1.TabIndex=0 then begin SQL.Add(' and not exists(select maiNID from YF_Money_CR X where X.MainID=A.MainID and isnull(X.SGFangshi,'''')=isnull(A.SGFangshi,'''') and isnull(X.GCName,'''')=isnull(A.GCName,'''')'); sql.Add(' and convert(char(10),X.CRTime,120)=convert(char(10),A.CRTime,120) and X.P_CodeName=A.BNo and isnull(X.TeXing,'''')=isnull(A.TeXing,'''')) '); end else begin SQL.Add(' and exists(select maiNID from YF_Money_CR X where X.MainID=A.MainID and isnull(X.SGFangshi,'''')=isnull(A.SGFangshi,'''') and isnull(X.GCName,'''')=isnull(A.GCName,'''')'); sql.Add(' and convert(char(10),X.CRTime,120)=convert(char(10),A.CRTime,120) and X.P_CodeName=A.BNo and isnull(X.TeXing,'''')=isnull(A.TeXing,'''')) '); end; sql.Add(' group by A.Mainid,A.SGFangshi,convert(char(10),A.CRTime,120),A.ConSubid '); sql.Add(' ,A.ConNO,A.Mainid,A.OrderNo,A.GCName,A.CustomerNoName,A.BNo,A.TeXing'); sql.Add(' ,B.GuDingPrice,B.XFBFB,B.OtherPrice,B.BengSongFee'); sql.Add(' ,convert(varchar(7),A.CRTime,120)'); //ShowMessage(sql.Text); Open; end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); finally; ADOQueryMain.EnableControls; end; end; procedure TfrmSXCKNewList_SKMgg.TBRafreshClick(Sender: TObject); begin BegDate.SetFocus; InitGrid(); end; procedure TfrmSXCKNewList_SKMgg.ConNoMChange(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); end; end; procedure TfrmSXCKNewList_SKMgg.TBCloseClick(Sender: TObject); begin WriteCxGrid(self.Caption+'SF1',Tv1,'坯布仓库'); Close; end; procedure TfrmSXCKNewList_SKMgg.FormShow(Sender: TObject); begin ReadCxGrid(self.Caption+'SF1',Tv1,'坯布仓库'); InitGrid(); end; procedure TfrmSXCKNewList_SKMgg.TBExportClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then exit; TcxGridToExcel('坯布入库列表',cxGrid2); end; procedure TfrmSXCKNewList_SKMgg.TBFindClick(Sender: TObject); begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); end; procedure TfrmSXCKNewList_SKMgg.N1Click(Sender: TObject); begin SelOKNo(CDS_Main,True); end; procedure TfrmSXCKNewList_SKMgg.N2Click(Sender: TObject); begin SelOKNo(CDS_Main,False); end; procedure TfrmSXCKNewList_SKMgg.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_SKMgg.SPIDChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmSXCKNewList_SKMgg.SPSpecChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmSXCKNewList_SKMgg.CustomerNoNameChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmSXCKNewList_SKMgg.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 Trim(fieldbyname('KPType').AsString)<>'' then begin IF not YFData() 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_SKMgg.cxTabControl1Change(Sender: TObject); begin INITGrid(); end; procedure TfrmSXCKNewList_SKMgg.OrderNoKeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then begin if length(OrderNo.Text)<3 then begin application.MessageBox('不得少于3个字','提示'); exit; end; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add(' select isnull(A.FactoryName,A.ToFactoryName) FactoryName '); sql.add(',HYPrice=(select HYPrice from JYOrderCon_Sub JS inner join JYOrder_Main JM on JS.Subid=JM.ConSubid where JM.Mainid=A.OrdMainidCK)'); sql.Add(',OrderNO=(select OrderNO from JYOrder_Main JM where JM.MainId=A.ORDMainIdCK)'); sql.Add(',ConNO=(select ConNO from JYOrder_Main JM where JM.MainId=A.ORDMainIdCK),A.*'); sql.Add(' from CK_SXPB_CR A'); sql.add(' where (select OrderNO from JYOrder_Main JM where JM.MainId=A.ORDMainIdCK) like '''+'%'+trim(OrderNo.Text)+'%'+''''); sql.Add(' and CRType in(''销售出库'')'); //sql.add(' and isnull(BPType,'''')<>''次品'''); //SQL.Add(' and CRFlag=''入库'' '); IF cxTabControl1.TabIndex=0 then SQL.Add(' and not exists(select maiNID from YF_Money_CR X where X.MainID=A.SPID ) ') else SQL.Add(' and exists(select maiNID from YF_Money_CR X where X.MainID=A.SPID )'); Open; //ShowMessage(SQL.Text); end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); end; end; procedure TfrmSXCKNewList_SKMgg.ConNOKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add(' select isnull(A.FactoryName,A.ToFactoryName) FactoryName '); sql.add(',HYPrice=(select HYPrice from JYOrderCon_Sub JS inner join JYOrder_Main JM on JS.Subid=JM.ConSubid where JM.Mainid=A.OrdMainidCK)'); sql.Add(',OrderNO=(select OrderNO from JYOrder_Main JM where JM.MainId=A.ORDMainIdCK)'); sql.Add(',ConNO=(select ConNO from JYOrder_Main JM where JM.MainId=A.ORDMainIdCK),A.*'); sql.Add(' from CK_SXPB_CR A'); sql.add(' where (select ConNO from JYOrder_Main JM where JM.MainId=A.ORDMainIdCK) like '''+'%'+trim(ConNO.Text)+'%'+''''); sql.Add(' and CRType in(''销售出库'')'); //sql.add(' and isnull(BPType,'''')<>''次品'''); //SQL.Add(' and CRFlag=''入库'' '); IF cxTabControl1.TabIndex=0 then SQL.Add(' and not exists(select maiNID from YF_Money_CR X where X.MainID=A.SPID ) ') else SQL.Add(' and exists(select maiNID from YF_Money_CR X where X.MainID=A.SPID )'); Open; //ShowMessage(SQL.Text); end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); end; end; end.