unit U_PBCKNewList; 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 TfrmPBCKNewList = 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; Label5: TLabel; C_CodeName: TEdit; FactoryName10: TEdit; CKOrdNo: TEdit; ToolButton1: TToolButton; cxTabControl1: TcxTabControl; cxGridPopupMenu1: TcxGridPopupMenu; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn13: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn6: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; cxGridDBColumn11: TcxGridDBColumn; cxGridDBColumn14: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; v0Column2: TcxGridDBColumn; v0Column3: TcxGridDBColumn; v0Column4: TcxGridDBColumn; Label6: TLabel; ConNo: TEdit; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; Label7: TLabel; C_Code: TEdit; Label8: TLabel; C_Spec: TEdit; ToolButton2: TToolButton; v1Column3: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column7: TcxGridDBColumn; Label12: TLabel; Label13: TLabel; SQGCCode: TEdit; SQBatchNoHZ: TEdit; v1Column8: TcxGridDBColumn; v1Column9: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column11: TcxGridDBColumn; Label9: TLabel; FHTaiTou: TEdit; v1Column12: 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 CKOrdNoChange(Sender: TObject); procedure SPSpecChange(Sender: TObject); procedure FactoryName10Change(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure v0Column2PropertiesEditValueChanged(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure cxGridDBColumn3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); private canshu1,canshu2:string; procedure InitGrid(); function YFData():Boolean; { Private declarations } public { Public declarations } end; var frmPBCKNewList: TfrmPBCKNewList; implementation uses U_DataLink,U_Fun,U_RTFun; {$R *.dfm} function TfrmPBCKNewList.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('KHName').AsString))); sql.Add(' and KCType=''KH'' '); Open; end; if ADOQueryTemp.IsEmpty=False then begin CRID:=ADOQueryTemp.fieldbyname('CRID').AsString; end else begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from YF_Money_CRID'); Open; end; if ADOQueryTemp.IsEmpty=False then 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; end else begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('insert into YF_Money_CRID select 0 '); sql.Add('select * from YF_Money_CRID '); Open; end; 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(CDS_Main.fieldbyname('KHName').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('KHName').AsString))); sql.Add(' and YFTypeId='''+Trim(CDS_Main.fieldbyname('FSID').AsString)+''''); 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 ADOQueryTemp.IsEmpty then begin Append ; FieldByName('SCQty').Value:=CDS_Main.fieldbyname('FHQtyHZ').AsFloat; FieldByName('SCPS').Value:=CDS_Main.fieldbyname('FHPSHZ').AsFloat; end else Edit; FieldByName('YFID').Value:=Trim(YFID); FieldByName('YFTypeId').Value:=Trim(CDS_Main.fieldbyname('FSID').AsString); FieldByName('OrderNo').Value:=Trim(CDS_Main.fieldbyname('ConNo').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('KHName').AsString); FieldByName('CRTime').Value:=CDS_Main.fieldbyname('CRTime').AsDateTime; FieldByName('Qty').Value:=CDS_Main.fieldbyname('FHQtyHZ').AsFloat; FieldByName('PS').Value:=CDS_Main.fieldbyname('FHPSHZ').AsFloat; FieldByName('YFType').Value:='自动生成'; FieldByName('Price').Value:=CDS_Main.fieldbyname('Price').Value; FieldByName('ShuiDian').Value:=CDS_Main.fieldbyname('ShuiDian').Value; FieldByName('money').Value:=CDS_Main.fieldbyname('money').Value; FieldByName('QtyUnit').Value:='Kg'; FieldByName('P_CodeName').Value:=Trim(CDS_Main.fieldbyname('prtCodeName').AsString); FieldByName('P_Code').Value:=Trim(CDS_Main.fieldbyname('prtCode').AsString); FieldByName('P_Spec').Value:=Trim(CDS_Main.fieldbyname('prtSpec').AsString); FieldByName('ComTaiTou').Value:=Trim(CDS_Main.fieldbyname('FHTaiTou').AsString); FieldByName('YFName').Value:='销售金额'; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_CR Set HSPrice=Price*(1+ShuiDian*0.01)'); sql.Add(',HSMoney=Price*(1+ShuiDian*0.01)*Qty'); sql.Add(',JSMoney=Price*(1+ShuiDian*0.01)*Qty'); sql.Add(',HSType=''含税'' '); sql.Add(' where YFID='''+Trim(YFID)+''''); sql.Add(' and isnull(ShuiDian,0)<>0'); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_CR Set HSPrice=Null'); sql.Add(',HSMoney=Null'); sql.Add(',JSMoney=Money'); sql.Add(',HSType=''不含税'' '); sql.Add(' where YFID='''+Trim(YFID)+''''); sql.Add(' and isnull(ShuiDian,0)=0'); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPdate FHSQ_Main Set YSID='''+Trim(YFID)+''''); sql.Add(' where FSID='''+Trim(CDS_Main.fieldbyname('FSID').AsString)+''''); ExecSQL; end; Result:=True; end; procedure TfrmPBCKNewList.FormDestroy(Sender: TObject); begin frmPBCKNewList:=nil; end; procedure TfrmPBCKNewList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmPBCKNewList.FormCreate(Sender: TObject); begin //cxGrid1.Align:=alClient; EndDate.DateTime:=SGetServerDate10(ADOQueryTemp); BegDate.DateTime:=SGetServerDateMBeg(ADOQueryTemp); canshu1:=Trim(DParameters1); canshu2:=Trim(DParameters2); end; procedure TfrmPBCKNewList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add('select A.* ,E.HSTYpe,FactoryName10=Rtrim(dbo.getPinYin(D.ZdyNameZ))+RTrim(D.ZdyNameZ)'); sql.Add(',C.ConNo,B.prtCodeName,B.PrtCode,B.PrtSpec,B.PrtPrice,FactoryName=D.ZdyNameZ'); sql.Add(',CRTime=A.FHDate,KHName=D.ZdyNameZ,KHNameQC=C.CustomerNoName'); sql.Add(',CanKaoPrice=(select Top 1 Price from YF_Money_CR YS where YS.P_Code=B.prtCode and YS.FactoryName=D.ZdyNameZ order by CRTime desc)'); sql.Add(',Case when isnull(E.Price,-999)=-999 then B.prtPrice else E.Price end as Price'); sql.Add(',Case when isnull(E.Money,-999)=-999 then Cast(B.prtPrice*A.FHQtyHZ+isnull(FYMoney,0) as decimal(18,2)) else '); sql.Add(' E.Money end as Money'); sql.Add(',E.ComTaiTou,E.ShuiDian'); sql.Add('from FHSQ_Main A '); Sql.add(' inner join JYOrderCon_Sub B on A.ConMainId=B.MainId'); Sql.add(' inner join JYOrderCon_Main C on B.MainId=C.MainId'); sql.Add(' left join YF_Money_CR E on A.FSID=E.YFTypeId'); sql.Add(' left join KH_Zdy_Attachment D on C.CustomerNoName=D.ZdyName and D.Type=''KHName'' and D.Valid=''Y'' '); sql.add('where A.FHDate>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.DateTime))+''' '); sql.Add(' and A.FHDate<'''+Trim(FormatDateTime('yyyy-MM-dd',enddate.DateTime+1))+''''); IF cxTabControl1.TabIndex=0 then begin SQL.Add(' and not exists(select maiNID from YF_Money_CR X where RTrim(isnull(X.YFTypeId,''''))=RTrim(isnull(A.FSID,'''')) )'); end else begin SQL.Add(' and exists(select maiNID from YF_Money_CR X where RTrim(isnull(X.YFTypeId,''''))=RTrim(isnull(A.FSID,'''')) )'); end; Open; //ShowMessage(SQL.Text); end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmPBCKNewList.TBRafreshClick(Sender: TObject); begin BegDate.SetFocus; InitGrid(); end; procedure TfrmPBCKNewList.ConNoMChange(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); end; end; procedure TfrmPBCKNewList.TBCloseClick(Sender: TObject); begin WriteCxGrid(self.Caption+'LJ1',Tv1,'坯布仓库'); Close; end; procedure TfrmPBCKNewList.FormShow(Sender: TObject); begin ReadCxGrid(self.Caption+'LJ1',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 TfrmPBCKNewList.TBExportClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then exit; TcxGridToExcel('坯布出库列表',cxGrid1); end; procedure TfrmPBCKNewList.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 TfrmPBCKNewList.N1Click(Sender: TObject); begin SelOKNo(CDS_Main,True); end; procedure TfrmPBCKNewList.N2Click(Sender: TObject); begin SelOKNo(CDS_Main,False); end; procedure TfrmPBCKNewList.CKOrdNoChange(Sender: TObject); begin if Length(Trim(CKOrdNo.Text))<4 then begin if Trim(CKOrdNo.Text)<>'' then Exit; end; TBFind.Click; end; procedure TfrmPBCKNewList.SPSpecChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmPBCKNewList.FactoryName10Change(Sender: TObject); begin TBFind.Click; end; procedure TfrmPBCKNewList.ToolButton1Click(Sender: TObject); begin IF CDS_Main.IsEmpty then exit; if cxTabControl1.TabIndex<>0 then Exit; BegDate.SetFocus; IF not CDS_Main.Locate('ssel',true,[]) then begin application.MessageBox('没有选择数据!','提示信息',0); exit; end; if CDS_Main.Locate('SSel;PrtPrice', VarArrayOf([True, Null]), [loPartialKey])=True then begin Application.MessageBox('单价不能为空!','提示',0); Exit; end; if CDS_Main.Locate('SSel;KHName', VarArrayOf([True, Null]), [loPartialKey])=True then begin Application.MessageBox('客户简称为空,请到客户信息管理模块中完善资料!','提示',0); Exit; end; if Application.MessageBox('确定要生成应收款吗?','提示',32+4)<>IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; with CDS_Main do begin DisableControls; first; while Locate('SSel',True,[]) do begin IF not YFData() then begin ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('生成应收款失败!','提示信息',0); end; CDS_Main.Delete; end; EnableControls; end; ADOQueryCmd.Connection.CommitTrans; //application.MessageBox('生成应收款成功!','提示信息'); except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('生成应收款失败!','提示信息',0); end; end; procedure TfrmPBCKNewList.cxTabControl1Change(Sender: TObject); begin INITGrid(); if cxTabControl1.TabIndex=0 then begin v0Column2.Options.Editing:=True; v1Column10.Options.Editing:=True; end else if cxTabControl1.TabIndex=1 then begin v0Column2.Options.Editing:=False; v1Column10.Options.Editing:=False; end; end; procedure TfrmPBCKNewList.v0Column2PropertiesEditValueChanged( Sender: TObject); var mvalue,FPrice,FQty,FFYMoney:string; begin mvalue:=TcxTextEdit(Sender).EditingValue; with CDS_Main do begin Edit; if Trim(mvalue)='' then begin FieldByName('Price').Value:=Null; end else begin FieldByName('Price').Value:=mvalue; end; end; FQty:=CDS_Main.fieldbyname('FHQtyHZ').AsString; FFYMoney:=CDS_Main.fieldbyname('FYMoney').AsString; if Trim(FFYMoney)='' then FFYMoney:='0'; if Trim(mvalue)='' then begin with CDS_Main do begin Edit; FieldByName('Money').Value:=Null; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update FHSQ_Main Set HSPrice=Null,HSMoney=Null '); sql.Add(',EditTime=getdate(),Editer='''+Trim(DName)+''''); sql.Add('where FSID='''+Trim(CDS_Main.fieldbyname('FSID').AsString)+''''); ExecSQL; end; end else begin with CDS_Main do begin Edit; FieldByName('Money').Value:=StrToFloat(FQty)*StrToFloat(mvalue)+StrToFloat(FFYMoney); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update FHSQ_Main Set HSPrice='+mvalue); sql.Add(',HSMoney='+CDS_Main.fieldbyname('Money').AsString); sql.Add('where FSID='''+Trim(CDS_Main.fieldbyname('FSID').AsString)+''''); ExecSQL; end; end; end; procedure TfrmPBCKNewList.ToolButton2Click(Sender: TObject); begin IF CDS_Main.IsEmpty then exit; BegDate.SetFocus; if cxTabControl1.TabIndex<>1 then Exit; IF not CDS_Main.Locate('ssel',true,[]) then begin application.MessageBox('没有选择数据!','提示信息',0); exit; end; if Application.MessageBox('确定要撤销吗?','提示',32+4)<>IDYES then Exit; ADOQueryCmd.Connection.BeginTrans; try with CDS_Main do begin DisableControls; first; while Locate('SSel',True,[]) do begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add(' delete YF_Money_CR where YFTypeId='''+Trim(CDS_Main.fieldbyname('FSID').AsString)+''''); sql.Add(' and FactoryName='''+Trim(CDS_Main.fieldbyname('KHName').AsString)+''''); sql.Add(' and OrderNo='''+Trim(CDS_Main.fieldbyname('ConNo').AsString)+''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPdate FHSQ_Main Set YSID=Null where FSID='''+Trim(CDS_Main.fieldbyname('FSID').AsString)+''''); ExecSQL; end; CDS_Main.Delete; end; EnableControls; end; ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('撤销异常!','提示信息',0); end; end; procedure TfrmPBCKNewList.cxGridDBColumn3CustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var Id:Integer; begin Id:=TV1.GetColumnByFieldName('KHName').Index;//;-TV1.GroupedItemCount; if Id<0 then Exit; if AViewInfo.GridRecord.Values[Id]=Null then begin ACanvas.Brush.Color:=clRed; end; end; end.