unit U_InvoiceJXInPut; 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, cxCalendar, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu; type TfrmInvoiceJXInPut = class(TForm) DataSource1: TDataSource; CDS_Invoice: TClientDataSet; cxGridPopupMenu1: TcxGridPopupMenu; ToolBar1: TToolBar; TSave: TToolButton; TBClose: TToolButton; ADOQueryTmp: TADOQuery; ADOQueryCmd: TADOQuery; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Tv1Column5: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1P_CodeName: TcxGridDBColumn; v1P_Spec: TcxGridDBColumn; v1Qty: TcxGridDBColumn; v1Price: TcxGridDBColumn; v1QtyUnit: TcxGridDBColumn; v1Money: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column4: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ToolButton1: TToolButton; ToolButton2: TToolButton; Tv1Column8: TcxGridDBColumn; Tv1Column9: TcxGridDBColumn; Tv1Column10: TcxGridDBColumn; Tv1Column11: TcxGridDBColumn; Tv1Column12: TcxGridDBColumn; Tv1Column13: TcxGridDBColumn; Tv1Column14: TcxGridDBColumn; Tv1Column15: TcxGridDBColumn; Tv1Column16: TcxGridDBColumn; Tv1Column17: TcxGridDBColumn; procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TSaveClick(Sender: TObject); procedure v1P_CodeNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1P_SpecPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1QtyUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1PriceUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1QtyPropertiesEditValueChanged(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure Tv1Column6PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure Tv1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure Tv1Column4PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure Tv1Column10PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); private procedure initGrid(); procedure SaveDate(); { Private declarations } public FIVNo, FZKType: string; fInvoiceFlag: string; { Public declarations } end; var frmInvoiceJXInPut: TfrmInvoiceJXInPut; implementation uses U_RTFun, U_ZDYHelp, U_ZdyAttachment, U_dataLink, U_GYSKPSel; {$R *.dfm} procedure TfrmInvoiceJXInPut.SaveDate(); var MaxNo: string; begin ADOQueryCmd.Connection.BeginTrans; try with CDS_Invoice do begin first; while not eof do begin if fieldbyname('IVID').AsString = '' then begin if GetLSNo(ADOQueryTmp, MaxNo, 'IJ', 'CW_Invoice', 4, 1) = False then begin Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; end else MaxNo := CDS_Invoice.fieldbyname('IVID').AsString; with ADOQueryCmd do begin close; sql.Clear; sql.add('select * from CW_Invoice where IVID=' + quotedstr(Trim(MaxNo))); open; end; if ADOQueryCmd.IsEmpty then begin ADOQueryCmd.append; end else begin ADOQueryCmd.edit; end; ADOQueryCmd.fieldbyname('IVID').Value := MaxNo; ADOQueryCmd.fieldbyname('IVFlag').Value := '进项'; ADOQueryCmd.fieldbyname('ZKType').Value := Trim(FZKType); ADOQueryCmd.fieldbyname('KPFactoryNo').Value := trim(CDS_Invoice.FieldByName('KPFactoryNo').AsString); ADOQueryCmd.fieldbyname('FactoryNo').Value := trim(CDS_Invoice.FieldByName('FactoryNo').AsString); RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_Invoice, 'CW_Invoice', 0); ADOQueryCmd.Post; next; end; end; ADOQueryCmd.Connection.CommitTrans; application.MessageBox('保存成功!', '提示'); Modalresult := 1; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('保存失败!', '提示', MB_ICONERROR); end; end; procedure TfrmInvoiceJXInPut.initGrid(); begin with ADOQueryTmp do begin close; sql.Clear; sql.Add('select * from CW_Invoice where IVNo=''' + trim(FIVNo) + ''''); open; end; SCreateCDS(ADOQueryTmp, CDS_Invoice); SInitCDSData(ADOQueryTmp, CDS_Invoice); end; procedure TfrmInvoiceJXInPut.TBCloseClick(Sender: TObject); begin WriteCxGrid('发票录入', Tv1, '财务管理'); Close; end; procedure TfrmInvoiceJXInPut.FormShow(Sender: TObject); begin ReadCxGrid('发票录入', Tv1, '财务管理'); initGrid(); end; procedure TfrmInvoiceJXInPut.TSaveClick(Sender: TObject); begin if CDS_Invoice.Locate('IVNo', null, []) then begin application.MessageBox('发票号不能为空', '提示'); exit; end; if CDS_Invoice.Locate('IVType', null, []) then begin application.MessageBox('发票类型不能为空', '提示'); exit; end; if CDS_Invoice.Locate('FactoryName', null, []) then begin application.MessageBox('单位名称不能为空', '提示'); exit; end; if CDS_Invoice.Locate('IVDate', null, []) then begin application.MessageBox('开票日期不能为空', '提示'); exit; end; // if Trim(FIVNo) = '' then // begin // with ADOQueryTmp do // begin // close; // sql.clear; // sql.add('select * from CW_Invoice where CONVERT( varchar(10),IVDate,120)<>''' + formatdatetime('yyyy-MM-dd', IVDate.datetime) + ''' '); // sql.add(' and IVNo=' + QUOTEDSTR(trim(IVNo.Text))); // open; // end; // // if not ADOQueryTmp.IsEmpty then // begin // application.MessageBox('发票号不能重复', '提示'); // exit; // end; // end; SaveDate(); end; procedure TfrmInvoiceJXInPut.v1P_CodeNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'MPRTCodeName'; flagname := '产品名称'; if ShowModal = 1 then begin Self.CDS_Invoice.Edit; Self.CDS_Invoice.FieldByName('P_CodeName').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); Self.CDS_Invoice.FieldByName('P_Code').Value := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); end; end; finally frmZDYHelp.Free; end; //self.tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmInvoiceJXInPut.v1P_SpecPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'P_Spec'; flagname := '成品规格'; if ShowModal = 1 then begin Self.CDS_Invoice.Edit; Self.CDS_Invoice.FieldByName('P_Spec').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmInvoiceJXInPut.v1QtyUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'QtyUnit'; flagname := '数量单位'; if ShowModal = 1 then begin Self.CDS_Invoice.Edit; Self.CDS_Invoice.FieldByName('QtyUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmInvoiceJXInPut.v1PriceUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'PriceUnit'; flagname := '币种'; if ShowModal = 1 then begin Self.CDS_Invoice.Edit; Self.CDS_Invoice.FieldByName('PriceUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmInvoiceJXInPut.v1QtyPropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; FQty, FPrice, FMoney, Ftax, FtaxMoney: double; begin FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := '0'; end; with CDS_Invoice do begin Edit; FieldByName(FFieldName).Value := Trim(mvalue); Post; FQty := FieldbyName('Qty').AsFloat; FtaxMoney := FieldbyName('taxMoney').AsFloat; Ftax := FieldbyName('tax').AsFloat; end; if FQty <> 0 then begin FMoney := strtofloat(format('%.2f', [FtaxMoney / (1 + Ftax / 100)])); FPrice := strtofloat(format('%.2f', [FMoney / FQty])); end else begin FPrice := 0; FMoney := strtofloat(format('%.2f', [FtaxMoney / (1 + Ftax / 100)])); end; with CDS_Invoice do begin Edit; FieldByName('Price').Value := FPrice; FieldByName('Money').Value := FMoney; FieldByName('TaxFee').Value := FtaxMoney - FMoney; Post; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmInvoiceJXInPut.FormDestroy(Sender: TObject); begin frmInvoiceJXInPut := nil; end; procedure TfrmInvoiceJXInPut.ToolButton2Click(Sender: TObject); begin if CDS_Invoice.IsEmpty then exit; if application.MessageBox('确定要删除吗', '提示', 1) = 2 then exit; with ADOQueryTmp do begin close; sql.clear; sql.add('delete from CW_Invoice where IvID=''' + trim(CDS_Invoice.fieldbyname('IvID').asstring) + ''' '); execsql; end; CDS_Invoice.delete; end; procedure TfrmInvoiceJXInPut.ToolButton1Click(Sender: TObject); begin CDS_Invoice.Append; // if FZKType = '内账' then // CDS_Invoice.FieldByName('SYRName').Value := '绍兴百孚纺织进出口有限公司' // else // CDS_Invoice.FieldByName('SYRName').Value := '绍兴龙孚纺织进出口有限公司'; CDS_Invoice.FieldByName('QtyUnit').Value := 'Kg'; CDS_Invoice.FieldByName('Money').Value := 0; CDS_Invoice.FieldByName('Qty').Value := 0; CDS_Invoice.FieldByName('tax').Value := 0; CDS_Invoice.FieldByName('TaxFee').Value := 0; CDS_Invoice.FieldByName('taxMoney').Value := 0; CDS_Invoice.FieldByName('Price').Value := 0; CDS_Invoice.FieldByName('tax').Value := 13; CDS_Invoice.Post; end; procedure TfrmInvoiceJXInPut.Tv1Column6PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'SYRName'; flagname := '公司抬头'; if ShowModal = 1 then begin Self.CDS_Invoice.Edit; Self.CDS_Invoice.FieldByName('SYRName').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmInvoiceJXInPut.Tv1Column10PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'bank'; flagname := '开户行'; if ShowModal = 1 then begin Self.CDS_Invoice.Edit; Self.CDS_Invoice.FieldByName('bank').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmInvoiceJXInPut.Tv1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'InvoiceType'; flagname := '发票类型'; if ShowModal = 1 then begin Self.CDS_Invoice.Edit; Self.CDS_Invoice.FieldByName('IVType').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmInvoiceJXInPut.Tv1Column4PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin // try // frmGYSKPSel := TfrmGYSKPSel.Create(Application); // with frmGYSKPSel do // begin // if ShowModal = 1 then // begin // Self.CDS_Invoice.Edit; // Self.CDS_Invoice.FieldByName('FactoryNo').Value := Trim(Order_Main.fieldbyname('CoCode').AsString); // Self.CDS_Invoice.FieldByName('FactoryName').Value := Trim(Order_Main.fieldbyname('KHName').AsString); // Self.CDS_Invoice.FieldByName('KPFactoryNo').Value := Trim(Order_Main.fieldbyname('KPID').AsString); // Self.CDS_Invoice.FieldByName('KPFactoryName').Value := Trim(Order_Main.fieldbyname('KPTaiTou').AsString); // end; // end; // finally // frmGYSKPSel.Free; // end; try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'GYSNAME'; flagname := '供应商名称'; if ShowModal = 1 then begin with ClientDataSet1 do begin Self.CDS_Invoice.Edit; Self.CDS_Invoice.FieldByName('FactoryName').Value := FieldByName('ZDYName').AsString; Self.CDS_Invoice.FieldByName('KPFactoryName').Value := FieldByName('ZDYName').AsString; end; end; end; finally frmZDYHelp.Free; end; end; end.