unit U_OtherPayableInput; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB, cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls, cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit, cxTextEdit, cxDropDownEdit, BtnEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, U_BaseList, cxContainer, cxCurrencyEdit, dxSkinWXI; type TfrmOtherPayableInput = class(TForm) ToolBar1: TToolBar; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ToolButton3: TToolButton; ScrollBox1: TScrollBox; Label2: TLabel; Label6: TLabel; Label7: TLabel; F_Code: TEdit; Note: TMemo; Label1: TLabel; F_Name: TEdit; Label8: TLabel; Currency: TComboBox; PayMent: TBtnEditC; OppCoName: TBtnEditC; Label5: TLabel; OurCoName: TBtnEditC; Label9: TLabel; OppParentCoName: TBtnEditC; Amount: TcxCurrencyEdit; Label3: TLabel; Price: TcxCurrencyEdit; Qty: TcxCurrencyEdit; Piece: TcxCurrencyEdit; Label10: TLabel; Label11: TLabel; Label12: TLabel; QtyUnit: TComboBox; Label13: TLabel; Label14: TLabel; F_Width: TEdit; F_GramWeight: TEdit; Label15: TLabel; Label16: TLabel; F_Pattern: TEdit; F_Color: TEdit; Label17: TLabel; F_ColorNo: TEdit; OtherFee: TcxCurrencyEdit; Label4: TLabel; Label20: TLabel; FFTime: TDateTimePicker; Deduction: TcxCurrencyEdit; Label21: TLabel; Label22: TLabel; OrderNo: TBtnEditC; Label23: TLabel; BuyConNo: TBtnEditC; Label24: TLabel; FFAbstract: TBtnEditC; Label18: TLabel; IsInvoice: TComboBox; FZFlag: TcxCurrencyEdit; Label19: TLabel; ExpressType: TBtnEditC; Label25: TLabel; jiagesy: TEdit; Label26: TLabel; TrackNo: TEdit; Label27: TLabel; Label28: TLabel; Label29: TLabel; Label30: TLabel; CNYAMount: TcxCurrencyEdit; ExchangeRate: TcxCurrencyEdit; USDAMount: TcxCurrencyEdit; SXFAmount: TcxCurrencyEdit; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure PayMentBtnDnClick(Sender: TObject); procedure PayMentBtnUpClick(Sender: TObject); procedure OppCoNameBtnUpClick(Sender: TObject); procedure OppParentCoNameBtnUpClick(Sender: TObject); procedure OurCoNameBtnUpClick(Sender: TObject); procedure QtyExit(Sender: TObject); procedure ScrollBox1Click(Sender: TObject); procedure OrderNoBtnUpClick(Sender: TObject); procedure ExpressTypeBtnUpClick(Sender: TObject); private { Private declarations } procedure InitGrid(); procedure HJJE(); function SaveData(): Boolean; public { Public declarations } FFFID,PState: string; end; var frmOtherPayableInput: TfrmOtherPayableInput; implementation uses U_DataLink, U_RTFun, U_ZDYHelp, U_CompanySel, U_TradePlanSel,U_ZDYHelpFY; {$R *.dfm} procedure TfrmOtherPayableInput.HJJE(); var MPrice, MQty, MOtherFee, MDeduction, MAmount: double; MUSDAmount, Mhuilv, MCNYAmount, MSXFAmount: double; begin MPrice := Strtofloatdef(Price.Text, 0); MQty := Strtofloatdef(Qty.Text, 0); MOtherFee := Strtofloatdef(OtherFee.Text, 0); MDeduction := Strtofloatdef(Deduction.Text, 0); MAmount := Strtofloatdef(Amount.Text, 0); Mhuilv := Strtofloatdef(ExchangeRate.Text, 0); MUSDAmount := Strtofloatdef(USDAmount.Text, 0); MCNYAmount := Strtofloatdef(CNYAmount.Text, 0); MSXFAmount := Strtofloatdef(SXFAmount.Text, 0); // if MQty * MPrice <> 0 then // begin MAmount := RoundFloat((MQty * MPrice + MOtherFee +MUSDAmount*Mhuilv + MCNYAmount + MSXFAmount - MDeduction), 2); // end; // Price.Text := FloatToStr(MPrice); // Qty.Text := FloatToStr(MQty); // OtherFee.Text := FloatToStr(MOtherFee); // Deduction.Text := FloatToStr(MDeduction); Amount.Text := FloatToStr(MAmount); end; procedure TfrmOtherPayableInput.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; SQL.Clear; sql.Add(' select BuyConNo=(ISNULL(A.BuyConNo,(select TOP 1 BuyConNo from Trade_Plan_Sub X where X.MainID=A.OrdMainId))),A.* from Finance_Flow A where A.FFID=''' + Trim(FFFID) + ''''); // showmessage(sql.text); Open; end; if not ADOQueryMain.IsEmpty then begin SCSHData(ADOQueryMain, ScrollBox1, 0); OppCoName.TxtCode := Trim(ADOQueryMain.FieldByName('OppCoNo').AsString); OurCoName.TxtCode := Trim(ADOQueryMain.FieldByName('OurCoNo').AsString); OppParentCoName.TxtCode := Trim(ADOQueryMain.FieldByName('OppParentCoNo').AsString); end else begin FFTime.DateTime := SGetServerDateTime(ADOQueryTemp); end; if PState='复制' then begin FFFID:=''; Piece.text:=''; Qty.text:=''; Price.text:=''; OtherFee.text:=''; Deduction.text:=''; Amount.text:=''; FZFlag.Text:='复制'; end; finally ADOQueryMain.EnableControls; end; end; procedure TfrmOtherPayableInput.OppCoNameBtnUpClick(Sender: TObject); begin try frmCompanySel := TfrmCompanySel.Create(Application); with frmCompanySel do begin FCoType := '供应商'; if ShowModal = 1 then begin OppCoName.Text := Trim(CDS_1.fieldbyname('CoAbbrName').AsString); OppCoName.TxtCode := Trim(CDS_1.fieldbyname('CoCode').AsString); OppParentCoName.Text := Trim(CDS_1.fieldbyname('CoAbbrName').AsString); OppParentCoName.TxtCode := Trim(CDS_1.fieldbyname('CoCode').AsString); end; end; finally frmCompanySel.Free; end; end; procedure TfrmOtherPayableInput.OppParentCoNameBtnUpClick(Sender: TObject); begin try frmCompanySel := TfrmCompanySel.Create(Application); with frmCompanySel do begin FCoType := '供应商'; if ShowModal = 1 then begin OppParentCoName.Text := Trim(CDS_1.fieldbyname('CoAbbrName').AsString); OppParentCoName.TxtCode := Trim(CDS_1.fieldbyname('CoCode').AsString); end; end; finally frmCompanySel.Free; end; end; procedure TfrmOtherPayableInput.OrderNoBtnUpClick(Sender: TObject); begin try frmTradePlanSel := TfrmTradePlanSel.Create(Application); with frmTradePlanSel do begin // FMainID := MainID.Text; if ShowModal = 1 then begin Self.OrderNO.Text := CDS_1.fieldbyname('OrderNo').value; Self.OurCoName.Text := Trim(CDS_1.fieldbyname('OurCoName').AsString); Self.OurCoName.TxtCode := Trim(CDS_1.fieldbyname('OurCoNo').AsString); // Self.OppCoName.Text := Trim(CDS_1.fieldbyname('CustName').AsString); // Self.OppCoName.TxtCode := Trim(CDS_1.fieldbyname('CustNo').AsString); Self.F_Code.Text := Trim(CDS_1.fieldbyname('C_Code').AsString); Self.F_Name.text := Trim(CDS_1.fieldbyname('C_Name').AsString); Self.F_Pattern.Text := Trim(CDS_1.fieldbyname('C_Pattern').AsString); Self.F_Color.text := Trim(CDS_1.fieldbyname('C_Color').AsString); Self.F_ColorNo.Text := Trim(CDS_1.fieldbyname('C_ColorNo').AsString); Self.F_Width.text := Trim(CDS_1.fieldbyname('C_Width').AsString); Self.F_GramWeight.text := Trim(CDS_1.fieldbyname('C_GramWeight').AsString); Self.BuyConNo.text := Trim(CDS_1.fieldbyname('BuyConNo').AsString); Self.jiagesy.text := Trim(CDS_1.fieldbyname('jiagesy').AsString); end; end; finally frmTradePlanSel.Free; end; end; procedure TfrmOtherPayableInput.OurCoNameBtnUpClick(Sender: TObject); begin try frmCompanySel := TfrmCompanySel.Create(Application); with frmCompanySel do begin FCoType := '我司'; if ShowModal = 1 then begin OurCoName.Text := Trim(CDS_1.fieldbyname('CoAbbrName').AsString); OurCoName.TxtCode := Trim(CDS_1.fieldbyname('CoCode').AsString); end; end; finally frmCompanySel.Free; end; end; procedure TfrmOtherPayableInput.FormDestroy(Sender: TObject); begin frmOtherPayableInput := nil; end; procedure TfrmOtherPayableInput.PayMentBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; end; procedure TfrmOtherPayableInput.PayMentBtnUpClick(Sender: TObject); var fsj: string; FWZ: Integer; begin fsj := Trim(TEdit(Sender).Hint); FWZ := Pos('/', fsj); try frmZDYHelpFY := TfrmZDYHelpFY.Create(Application); with frmZDYHelpFY do begin MainType := '其他应付款'; flag := Copy(fsj, 1, FWZ - 1); flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ); if ShowModal = 1 then begin TEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); TEdit(Sender).TextHint := Trim(ClientDataSet1.fieldbyname('Note2').AsString); end; end; finally frmZDYHelpFY.Free; end; end; procedure TfrmOtherPayableInput.QtyExit(Sender: TObject); begin HJJE(); end; procedure TfrmOtherPayableInput.ExpressTypeBtnUpClick(Sender: TObject); var fsj: string; FWZ: Integer; begin fsj := Trim(TEdit(Sender).Hint); FWZ := Pos('/', fsj); try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin MainType := '其他应付款'; flag := Copy(fsj, 1, FWZ - 1); flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ); if ShowModal = 1 then begin TEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); // TEdit(Sender).TextHint := Trim(ClientDataSet1.fieldbyname('Note2').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmOtherPayableInput.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmOtherPayableInput.TBCloseClick(Sender: TObject); begin close; end; procedure TfrmOtherPayableInput.FormShow(Sender: TObject); begin // if Trim(FFFID) = '' then // begin // with ADOQueryTemp do // begin // Close; // SQL.Clear; // sql.Add(' select top 1 * from BS_Company where CoType=''我司'' order by CoCode '); // Open; // end; // OurCoName.Text := Trim(ADOQueryTemp.fieldbyname('CoAbbrName').AsString); // OurCoName.TxtCode := Trim(ADOQueryTemp.fieldbyname('CoCode').AsString); // end; InitGrid(); end; procedure TfrmOtherPayableInput.TBRafreshClick(Sender: TObject); begin InitGrid(); end; function TfrmOtherPayableInput.SaveData(): Boolean; var MaxId, MaxSubId, FCoCode, FCCID: string; begin try ADOQueryCmd.Connection.BeginTrans; if Trim(FFFID) = '' then begin if not GetLSNo(ADOQueryCmd, MaxId, 'YS', 'Finance_Flow', 4, 1) then raise Exception.Create('取最大号失败!'); end else begin MaxId := Trim(FFFID); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Finance_Flow where FFID=''' + Trim(FFFID) + ''''); Open; end; with ADOQueryCmd do begin if Trim(FFFID) = '' then begin Append; FieldByName('FillId').Value := Trim(DCode); FieldByName('Filler').Value := Trim(DName); FieldByName('FFFlag').Value := '应付付'; FieldByName('FFType').Value := '其他应付款登记'; FieldByName('status').Value := '0'; FieldByName('FFQtyFlag').Value := 1; end else begin Edit; FieldByName('EditId').Value := Trim(DCode); FieldByName('Editer').Value := Trim(DName); FieldByName('Edittime').Value := SGetServerDateTime(ADOQueryTemp); end; FieldByName('OppCoNo').Value := Trim(OppCoName.TxtCode); FieldByName('OurCoNo').Value := Trim(OurCoName.TxtCode); FieldByName('OppParentCoNo').Value := Trim(OppParentCoName.TxtCode); FieldByName('FFAbstractDL').Value := Trim(FFAbstract.TextHint); FieldByName('FFID').Value := Trim(MaxId); RTSetsavedata(ADOQueryCmd, 'Finance_Flow', ScrollBox1, 0); Post; end; ADOQueryCmd.Connection.CommitTrans; FCCID := Trim(MaxSubId); Result := True; except Result := false; ADOQueryCmd.Connection.RollbackTrans; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; procedure TfrmOtherPayableInput.ScrollBox1Click(Sender: TObject); begin HJJE(); end; procedure TfrmOtherPayableInput.ToolButton3Click(Sender: TObject); begin ToolBar1.SetFocus; if Trim(OppCoName.Text) = '' then begin Application.MessageBox('对方单位不能为空!', '提示', 0); Exit; end; if Trim(OurCoName.Text) = '' then begin Application.MessageBox('我方单位不能为空!', '提示', 0); Exit; end; if Trim(Currency.Text) = '' then begin Application.MessageBox('币种不能为空!', '提示', 0); Exit; end; if Trim(FFAbstract.Text) = '' then begin Application.MessageBox('摘要不能为空!', '提示', 0); Exit; end; if SaveData() then begin Application.MessageBox('保存成功!', '提示', 0); ModalResult := 1; end; end; end.