unit U_FYDJInput; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, DB, ADODB, cxControls, cxContainer, cxEdit, cxTextEdit, cxCurrencyEdit, BtnEdit, StdCtrls, ExtCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxDBData, cxButtonEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxGridCustomView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, DBClient, cxDropDownEdit; type TfrmFYDJInput = class(TForm) ToolBar1: TToolBar; TSAVE: TToolButton; Tclose: TToolButton; Panel1: TPanel; Label8: TLabel; Label2: TLabel; CRTime: TDateTimePicker; ADOQueryTMP: TADOQuery; ADOQueryCMD: TADOQuery; FeeType: TComboBox; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; v2Column5: TcxGridDBColumn; v2Column2: TcxGridDBColumn; v2Column9: TcxGridDBColumn; v2Column1: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; cxGridPopupMenu2: TcxGridPopupMenu; CDS_HZ: TClientDataSet; ADOQueryMain: TADOQuery; DS_HZ: TDataSource; v2Column3: TcxGridDBColumn; ToolBar2: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; v2Column4: TcxGridDBColumn; procedure TcloseClick(Sender: TObject); procedure TSAVEClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure FeeTypeChange(Sender: TObject); procedure v2Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure v2Column5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); private procedure savedata(); procedure initdata(); procedure SetComboBox(); function SaveZL():Boolean; { Private declarations } public fkeyNo: string; fflag:integer; fSYRName:string; { Public declarations } end; var frmFYDJInput: TfrmFYDJInput; implementation uses U_ZDYHelpSel, U_ZDYHelp,U_Fun, U_ProductOrderNewList,U_DataLink; {$R *.dfm} function TfrmFYDJInput.SaveZL():Boolean; var LLNO:string; begin if GetLSNo(ADOQueryCMD,LLNO,'YL','YF_Money_LL',3,1)=False then begin ADOQueryCMD.Connection.RollbackTrans; Application.MessageBox('取流水号失败!','提示'); Exit; end; result:=false; try with ADOqueryCmd do begin Close; sql.Clear; IF Trim(CDS_HZ.fieldbyname('FeeID').AsString)<>'' then SQL.Add('delete from YF_Money_LL where fromMainID='''+Trim(CDS_HZ.fieldbyname('FeeID').AsString)+''' '); execsql; end; with ADOQueryCmd do begin Close; sql.Clear; SQL.Add('select * from YF_Money_LL where fromMainID='''+Trim(CDS_HZ.fieldbyname('FeeID').AsString)+''' '); Open; append; fieldbyname('filler').Value:=trim(Dname); FieldByName('LLNO').Value:=Trim(LLNO); fieldbyname('CRTime').Value:=formatdateTime('yyyy-MM-dd',CRTime.DateTime); fieldbyname('CRType').Value:=Trim(CDS_HZ.fieldbyname('FeeName').AsString); fieldbyname('factoryName').Value:=Trim(CDS_HZ.fieldbyname('bankNo').AsString); // fieldbyname('TOfactoryName').Value:=Trim(CDS_HZ.fieldbyname('factoryName').AsString); fieldbyname('NOTE').Value:=Trim(CDS_HZ.fieldbyname('note').AsString); IF Fflag=1 then fieldbyname('inMoney').Value:=CDS_HZ.fieldbyname('Money').AsFloat else fieldbyname('OutMoney').Value:=CDS_HZ.fieldbyname('Money').AsFloat; fieldbyname('status').Value:='0'; FieldByName('fromMainID').Value:=Trim(CDS_HZ.fieldbyname('FeeID').AsString); FieldByName('syrName').Value:=Trim(fsyrName); Post; end; result:=true; except end; end; procedure TfrmFYDJInput.initdata(); begin with ADOQueryMain do begin close; sql.clear; sql.Add(' select * from YF_Money_Fee '); sql.Add(' where FeeNo='+quotedstr(trim(fkeyNo)) ); sql.Add(' and money<>0 ') ; open; if not IsEmpty then begin SCSHDataNew(ADOQueryMain,Panel1,0); end; end; SCreateCDS20(ADOQueryMain,CDS_HZ); SInitCDSData20(ADOQueryMain,CDS_HZ); end; procedure TfrmFYDJInput.savedata(); var MaxNo:string; SMaxNo:string; begin try ADOQueryCMD.Connection.BeginTrans; if Trim(fkeyNo)='' then begin if GetLSNo(ADOQueryCMD,MaxNo,'FM','YF_Money_Fee',3,1)=False then begin ADOQueryCMD.Connection.RollbackTrans; Application.MessageBox('取流水号失败!','提示'); Exit; end; end else begin MaxNo:=Trim(fkeyNo); end; with CDS_HZ do begin First; while not Eof do begin IF trim(CDS_HZ.FieldByName('FeeID').AsString)='' then begin if GetLSNo(ADOQueryCMD,SMaxNo,'FS','YF_Money_Fee',4,1)=False then begin Application.MessageBox('取流水号失败!','提示',0); Exit; end; edit; CDS_HZ.FieldByName('FeeID').AsString:=trim(SMaxNo); post; end; with ADOQueryCMD do begin Close; sql.Clear; SQL.Add(' select * from YF_Money_Fee where FeeNo='''+Trim(MaxNo)+''' '); SQL.Add(' and FeeID='''+Trim(CDS_HZ.FieldByName('FeeID').AsString)+''' '); Open; end; if ADOQueryCMD.IsEmpty then begin ADOQueryCMD.Append; ADOQueryCMD.FieldByName('Filler').Value:=Trim(Dname); ADOQueryCMD.FieldByName('FeeNo').Value:=Trim(MaxNo); ADOQueryCMD.FieldByName('FeeID').Value:=Trim(CDS_HZ.FieldByName('FeeID').AsString); end else begin ADOQueryCMD.Edit; ADOQueryCMD.FieldByName('Editer').Value:=Trim(Dname); ADOQueryCMD.FieldByName('Edittime').Value:=SGetServerDateTime(ADOQueryTMP); end; SSetsaveSqlNew(ADOQueryCMD,'YF_Money_Fee',Panel1,0); SSetSaveDataCDSNew(ADOQueryCMD,Tv2,CDS_HZ,'YF_Money_Fee',0); ADOQueryCMD.FieldByName('Money').Value:=CDS_HZ.FieldByName('Money').AsFloat; ADOQueryCMD.FieldByName('SYRName').Value:=trim(fSYRName); ADOQueryCMD.FieldByName('FeeFlag').Value:=fflag; IF fflag=1 then ADOQueryCMD.FieldByName('CRType').Value:='收款其他费'; IF fflag=0 then ADOQueryCMD.FieldByName('CRType').Value:='付款其他费'; ADOQueryCMD.Post; try with ADOqueryCmd do begin Close; sql.Clear; SQL.Add('delete from YF_Money_LL where fromMainID='''+Trim(CDS_HZ.fieldbyname('FeeID').AsString)+''' '); execsql; end; IF (CDS_HZ.FieldByName('Money').AsFloat<>0) and (trim(CDS_HZ.fieldbyname('bankNo').AsString)<>'') then begin IF not saveZL() then begin ADOquerycmd.Connection.RollbackTrans; application.MessageBox('生成账户流水信息失败','提示信息',0); exit; end; end; except end; Next; end; end; ADOquerycmd.Connection.CommitTrans; Application.MessageBox('保存成功!','提示',0); ModalResult:=1; except ADOquerycmd.Connection.RollbackTrans; Application.MessageBox('保存失败!','提示',0); end; end; procedure TfrmFYDJInput.TcloseClick(Sender: TObject); begin WriteCxGrid(Self.Caption + Tv2.Name,Tv2,'财务管理'); Close; end; procedure TfrmFYDJInput.TSAVEClick(Sender: TObject); begin IF CDS_HZ.IsEmpty then exit; savedata(); end; procedure TfrmFYDJInput.FormClose(Sender: TObject; var Action: TCloseAction); begin action:=cahide; end; procedure TfrmFYDJInput.FormDestroy(Sender: TObject); begin frmFYDJInput:=nil; end; procedure TfrmFYDJInput.FormShow(Sender: TObject); begin ReadCxGrid(Self.Caption + Tv2.Name,Tv2,'财务管理'); CRTime.DateTime:=SGetServerDate10(adoqueryTmp); SetComboBox(); initData(); end; procedure TfrmFYDJInput.SetComboBox(); begin FeeType.Items.Clear; with ADOQueryTMP do begin Close; SQL.Clear; SQL.Add(' select distinct Note from KH_ZDY '); SQL.Add(' where Type=''FeeType'' and ISNULL(Note,'''')<>'''' and zdyFlag='''+inttostr(fflag)+''' '); Open; while not Eof do begin FeeType.Items.Add(Trim(FieldByName('Note').AsString)); Next; end; end; FeeType.ItemIndex:=-1; end; procedure TfrmFYDJInput.FeeTypeChange(Sender: TObject); var SMaxNo:string; begin CDS_HZ.EmptyDataSet; with ADOQueryTMP do begin Close; SQL.Clear; SQL.Add(' select * from KH_ZDY where Type=''FeeType'' and Note='''+Trim(FeeType.Text)+''' '); Open; while not Eof do begin if GetLSNo(ADOQueryCMD,SMaxNo,'FS','YF_Money_Fee',4,1)=False then begin Application.MessageBox('取流水号失败!','提示',0); Exit; end; with CDS_HZ do begin Append; FieldByName('FeeID').Value:=Trim(SMaxNo); FieldByName('FeeName').Value:=Trim(ADOQueryTMP.FieldByName('ZdyName').AsString); FieldByName('BZType').Value:='RMB'; FieldByName('Money').Value:='0'; Post; end; Next; end; end; end; procedure TfrmFYDJInput.v2Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(self); with frmZDYHelp do begin flag:=trim(fsyrName)+'XJLLFLAG'; flagname:='账户类型定义'; if showmodal=1 then begin CDS_HZ.Edit; CDS_HZ.FieldByName('bankNo').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); CDS_HZ.Post; end; end; finally frmZDYHelp.Free; end; tv2.Controller.EditingController.ShowEdit(); end; procedure TfrmFYDJInput.ToolButton1Click(Sender: TObject); var SMaxNo:string; begin if GetLSNo(ADOQueryCMD,SMaxNo,'FS','YF_Money_Fee',4,1)=False then begin Application.MessageBox('取流水号失败!','提示',0); Exit; end; CDS_HZ.Append; CDS_HZ.FieldByName('FeeID').Value:=Trim(SMaxNo); CDS_HZ.FieldByName('BZType').Value:='RMB'; CDS_HZ.post; end; procedure TfrmFYDJInput.ToolButton2Click(Sender: TObject); begin IF CDS_HZ.IsEmpty then exit; CDS_HZ.Delete; end; procedure TfrmFYDJInput.v2Column5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='FeeType'; flagname:='费用类型'; fnote:=True; fZdyFlag:=True; V1Note.Caption:='类型'; IF Showmodal=1 then begin CDS_HZ.edit; CDS_HZ.fieldbyName('FeeName').AsString:=frmZDYHelp.ClientDataSet1.fieldbyName('zdyName').AsString; CDS_HZ.fieldbyName('FeeType').AsString:=frmZDYHelp.ClientDataSet1.fieldbyName('Note').AsString; CDS_HZ.Post; end; free; end; tv2.Controller.EditingController.ShowEdit(); end; end.