unit U_CostInput; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient, ExtCtrls, StdCtrls, BtnEdit, cxButtonEdit, cxTextEdit, cxDropDownEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator; type TfrmCostInput = class(TForm) DataSource1: TDataSource; YFSub: TClientDataSet; cxGridPopupMenu1: TcxGridPopupMenu; ToolBar1: TToolBar; TSave: TToolButton; TBClose: TToolButton; ToolBar2: TToolBar; TADD: TToolButton; TDEl: TToolButton; Panel1: TPanel; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1P_Spec: TcxGridDBColumn; v1Qty: TcxGridDBColumn; v1Price: TcxGridDBColumn; v1QtyUnit: TcxGridDBColumn; v1Money: TcxGridDBColumn; v1note: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; Label1: TLabel; YFID: TEdit; Label2: TLabel; Label3: TLabel; CRTime: TDateTimePicker; Note: TMemo; PayMent: TBtnEditA; FactoryName: TBtnEditA; Label4: TLabel; Label6: TLabel; ADOQueryTmp: TADOQuery; ADOQueryCmd: TADOQuery; Label8: TLabel; SYRName: TBtnEditA; Label9: TLabel; Money: TEdit; Label10: TLabel; HuiLv: TEdit; BZType: TComboBox; Label11: TLabel; BBMoney: TEdit; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column3: TcxGridDBColumn; Label7: TLabel; Label12: TLabel; Label5: TLabel; ishs: TComboBox; YFName: TBtnEditA; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TSaveClick(Sender: TObject); procedure FactoryNameBtnClick(Sender: TObject); procedure PayMentBtnClick(Sender: TObject); procedure v1P_SpecPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1QtyUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure TADDClick(Sender: TObject); procedure TDElClick(Sender: TObject); procedure v1QtyPropertiesEditValueChanged(Sender: TObject); procedure SYRNameBtnClick(Sender: TObject); procedure v1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure HuiLvKeyPress(Sender: TObject; var Key: Char); procedure Panel1Click(Sender: TObject); procedure HuiLvExit(Sender: TObject); procedure v1MoneyPropertiesEditValueChanged(Sender: TObject); procedure YFNameBtnClick(Sender: TObject); private procedure initGrid(); procedure SaveDate(); procedure HJJE(); { Private declarations } public FYFID: string; { Public declarations } end; var frmCostInput: TfrmCostInput; implementation uses U_Fun10, U_ZDYHelp, U_ZdyAttachment, U_dataLink, U_ZdyAttachGYS, U_CPManageSel; {$R *.dfm} procedure TfrmCostInput.HJJE(); var FMoney, FHuiLv, FBBMoney: double; begin if TV1.DataController.Summary.FooterSummaryValues[1] <> NULL then FMoney := TV1.DataController.Summary.FooterSummaryValues[1] else FMoney := 0; FHuiLv := strtofloat(HuiLv.Text); if FHuiLv = 0 then FHuiLv := 1; FBBMoney := FHuiLv * FMoney; Money.Text := floattostr(FMoney); HuiLv.Text := floattostr(FHuiLv); BBMoney.Text := floattostr(FBBMoney); end; procedure TfrmCostInput.SaveDate(); var MaxYFSID, MaxYFID: string; begin ADOQueryCmd.Connection.BeginTrans; try if trim(FYFID) = '' then begin if GetLSNo(ADOQueryTmp, MaxYFID, 'SK', 'YF_Money_CR_Sub', 4, 1) = False then begin Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; YFID.Text := MaxYFID; end else begin MaxYFID := trim(FYFID); end; with ADOQueryCmd do begin close; sql.Clear; sql.add('select * from YF_Money_CR where YFID=' + quotedstr(FYFID)); open; end; with ADOQueryCmd do begin if trim(FYFID) = '' then begin append; Fieldbyname('YFID').value := trim(MaxYFID); FieldByName('CRType').Value := '费用登记'; FieldByName('CRFlag').Value := '费用管理'; FieldByName('QtyFlag').Value := -1; FieldByName('status').Value := '0'; FieldByName('Filler').Value := Trim(DName); end else begin edit; FieldByName('Editer').Value := Trim(DName); FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTmp); end; SSetsaveSqlnew(ADOQueryCmd, 'YF_Money_CR', panel1, 0); post; end; with YFSub do begin first; while not eof do begin if fieldbyname('YFSID').AsString = '' then begin if GetLSNo(ADOQueryTmp, MaxYFSID, 'SKS', 'YF_Money_CR_Sub', 4, 1) = False then begin Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; end else begin MaxYFSID := YFSub.fieldbyname('YFSID').AsString; end; with ADOQueryCmd do begin close; sql.Clear; sql.add('select * from YF_Money_CR_Sub where YFSID=' + Quotedstr(trim(MaxYFSID))); open; end; if ADOQueryCmd.IsEmpty then begin ADOQueryCmd.append; ADOQueryCmd.Fieldbyname('YFSID').value := trim(MaxYFSID); ADOQueryCmd.Fieldbyname('YFID').value := trim(MaxYFID); end else begin ADOQueryCmd.edit; end; SSetSaveDataCDSNew(ADOQueryCmd, Tv1, YFSub, 'YF_Money_CR_Sub', 0); ADOQueryCmd.Post; next; end; end; ADOQueryCmd.Connection.CommitTrans; application.MessageBox('保存成功!', '提示'); Modalresult := 1; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('保存失败!', '提示', MB_ICONERROR); end; end; procedure TfrmCostInput.initGrid(); begin with ADOQueryTmp do begin close; sql.Clear; sql.Add('select * from YF_Money_CR where YFID=' + quotedstr(trim(FYFID))); open; end; if ADOQueryTmp.isempty = False then begin SCSHDataNew(ADOQueryTmp, Panel1, 0); end else begin HuiLv.Text := '1'; CRTime.DateTime := SGetServerDate(ADOQueryTmp); end; with ADOQueryTmp do begin close; sql.Clear; sql.Add('select * from YF_Money_CR_Sub where YFID=''' + trim(FYFID) + ''''); open; end; SCreateCDS20(ADOQueryTmp, YFSub); SInitCDSData20(ADOQueryTmp, YFSub); end; procedure TfrmCostInput.TBCloseClick(Sender: TObject); begin WriteCxGrid(trim(self.Caption), Tv1, '财务管理'); Close; end; procedure TfrmCostInput.FormShow(Sender: TObject); begin ReadCxGrid(trim(self.Caption), Tv1, '财务管理'); initGrid(); end; procedure TfrmCostInput.TSaveClick(Sender: TObject); begin yfname.SetFocus; if YFSub.Locate('KXType', null, []) then begin application.MessageBox('款项类型不能为空', '提示'); exit; end; if YFSub.Locate('KXType', '', []) then begin application.MessageBox('款项类型不能为空', '提示'); exit; end; if trim(FactoryName.Text) = '' then begin application.MessageBox('对方单位不能为空', '提示'); exit; end; SaveDate(); end; procedure TfrmCostInput.FactoryNameBtnClick(Sender: TObject); begin try frmZdyAttachGYS := TfrmZdyAttachGYS.Create(Application); with frmZdyAttachGYS do begin if ShowModal = 1 then begin FactoryName.Text := Trim(CDS_HZ.fieldbyname('CoName').AsString); end; end; finally frmZdyAttachGYS.Free; end; // try // frmZdyAttachment:=TfrmZdyAttachment.Create(Application); // with frmZdyAttachment do // begin // if ShowModal=1 then // begin // FactoryName.Text:=Trim(CDS_HZ.fieldbyname('CoName').AsString); // end; // end; // finally // frmZdyAttachment.Free; // end; end; procedure TfrmCostInput.PayMentBtnClick(Sender: TObject); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'PayMent'; flagname := '付款方式'; if ShowModal = 1 then begin PayMent.Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmCostInput.v1P_SpecPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'FYKXType'; flagname := '款项类型'; if ShowModal = 1 then begin Self.YFSub.Edit; Self.YFSub.FieldByName('KXType').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmCostInput.v1QtyUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'FYQtyUnit'; flagname := '数量单位'; if ShowModal = 1 then begin Self.YFSub.Edit; Self.YFSub.FieldByName('QtyUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmCostInput.TADDClick(Sender: TObject); begin with YFSub do begin Append; FieldByName('Qty').Value := 0; FieldByName('Price').Value := 0; FieldByName('MxMoney').Value := 0; Post; end; end; procedure TfrmCostInput.TDElClick(Sender: TObject); begin if YFSub.IsEmpty then exit; if application.MessageBox('确定要删除吗', '提示', 1) = 2 then exit; with ADOQueryTmp do begin close; sql.clear; sql.add('delete from YF_Money_CR_Sub where YFSID=''' + trim(YFSub.fieldbyname('YFSID').asstring) + ''' '); execsql; end; YFSub.delete; end; procedure TfrmCostInput.v1QtyPropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; FQty, FPrice, FMxMoney: double; begin mvalue := TcxTextEdit(Sender).EditingText; FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); if Trim(mvalue) = '' then begin mvalue := '0'; end; with YFSub do begin Edit; FieldByName(FFieldName).Value := Trim(mvalue); Post; end; with YFSub do begin Edit; FQty := FieldByName('Qty').AsFloat; FPrice := FieldByName('Price').AsFloat; Post; end; FMxMoney := strtofloat(format('%.2f', [FQty * FPrice])); with YFSub do begin Edit; FieldByName(FFieldName).Value := Trim(mvalue); FieldbyName('MxMoney').Value := FMxMoney; Post; end; tv1.Controller.EditingController.ShowEdit(); HJJE(); end; procedure TfrmCostInput.SYRNameBtnClick(Sender: TObject); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'SYRName'; flagname := '公司抬头'; if Trim(flag) = 'SYRName' then begin flag := 'OrdDefStr2'; V1Name.Caption := '中文名称'; V1Note.Caption := '英文名称'; fnote := True; end; if ShowModal = 1 then begin SYRName.Text := Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmCostInput.v1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'MPRTCodeName'; flagname := '产品名称'; if ShowModal = 1 then begin with YFSub do begin Edit; FieldByName('CPName').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); FieldByName('CPCode').Value := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); end; end; end; finally frmZDYHelp.Free; end; end; procedure TfrmCostInput.HuiLvKeyPress(Sender: TObject; var Key: Char); begin if not (((Key >= '0') and (Key <= '9')) or (Key = '.') or (Key = #8)) then begin Key := #0; end else if (pos('.', TEdit(Sender).text) <> 0) then begin if Key = '.' then begin Key := #0; end; end; end; procedure TfrmCostInput.Panel1Click(Sender: TObject); begin yfname.SetFocus; end; procedure TfrmCostInput.HuiLvExit(Sender: TObject); begin HJJE(); end; procedure TfrmCostInput.v1MoneyPropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; begin mvalue := TcxTextEdit(Sender).EditingText; FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); if Trim(mvalue) = '' then begin mvalue := '0'; end; with YFSub do begin Edit; FieldByName(FFieldName).Value := Trim(mvalue); Post; end; tv1.Controller.EditingController.ShowEdit(); HJJE(); end; procedure TfrmCostInput.YFNameBtnClick(Sender: TObject); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'YFNameFY'; flagname := '项目摘要'; if ShowModal = 1 then begin YFName.Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; end.