unit U_ClaimInput; 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, dxSkinBasic, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee, dxSkinDarkroom, dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray, dxSkinOffice2013White, dxSkinOffice2016Colorful, dxSkinOffice2016Dark, dxSkinOffice2019Black, dxSkinOffice2019Colorful, dxSkinOffice2019DarkGray, dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver, dxSkinSpringtime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinTheBezier, dxSkinValentine, dxSkinVisualStudio2013Blue, dxSkinVisualStudio2013Dark, dxSkinVisualStudio2013Light, dxSkinVS2010, dxSkinWhiteprint, dxSkinWXI, dxSkinXmas2008Blue, dxCore, cxDateUtils, cxMemo; type TfrmClaimInput = class(TForm) ToolBar1: TToolBar; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ToolButton3: TToolButton; ScrollBox1: TScrollBox; Label2: TLabel; Label6: TLabel; Label7: TLabel; F_Code: TcxTextEdit; Label1: TLabel; F_Name: TcxTextEdit; Label8: TLabel; Label5: TLabel; Amount: TcxCurrencyEdit; Label3: TLabel; Price: TcxCurrencyEdit; Qty: TcxCurrencyEdit; Piece: TcxCurrencyEdit; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; F_Width: TcxTextEdit; F_GramWeight: TcxTextEdit; Label15: TLabel; Label16: TLabel; F_Pattern: TcxTextEdit; F_Color: TcxTextEdit; Label17: TLabel; F_ColorNo: TcxTextEdit; OtherFee: TcxCurrencyEdit; Label4: TLabel; Label20: TLabel; Deduction: TcxCurrencyEdit; Label21: TLabel; Label22: TLabel; Label23: TLabel; Label24: TLabel; OurCoName: TcxButtonEdit; OppCoName: TcxButtonEdit; FCTime: TcxDateEdit; ConNo: TcxButtonEdit; OrderNo: TcxButtonEdit; FFAbstract: TcxButtonEdit; PayMent: TcxButtonEdit; QtyUnit: TcxComboBox; Currency: TcxComboBox; Note: TcxMemo; fctype: TcxComboBox; Label9: TLabel; 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 QtyExit(Sender: TObject); procedure ScrollBox1Click(Sender: TObject); procedure OrderNoBtnUpClick(Sender: TObject); procedure ConNoBtnUpClick(Sender: TObject); procedure OurCoNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure OppCoNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure OurCoNameDblClick(Sender: TObject); procedure ConNoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure OrderNoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure FFAbstractPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); private { Private declarations } procedure InitGrid(); procedure HJJE(); function SaveData(): Boolean; public { Public declarations } FFCID: string; end; var frmClaimInput: TfrmClaimInput; implementation uses U_DataLink, U_RTFun, U_ZDYHelp, U_CompanySel, U_FinTradePlanSel, U_FinTradeSalesContractSel; {$R *.dfm} procedure TfrmClaimInput.HJJE(); var MPrice, MQty, MOtherFee, MDeduction, MAmount: 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); if MQty * MPrice >= 0 then begin MAmount := RoundFloat((MQty * MPrice + MOtherFee - 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 TfrmClaimInput.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; SQL.Clear; sql.Add(' select * from Finance_Claim where FCID=''' + Trim(FFCID) + ''''); Open; end; if not ADOQueryMain.IsEmpty then begin SCSHData(ADOQueryMain, ScrollBox1, 0); OppCoName.Properties.LookupItems.Text := Trim(ADOQueryMain.FieldByName('OppCoNo').AsString); OurCoName.Properties.LookupItems.Text := Trim(ADOQueryMain.FieldByName('OurCoNo').AsString); end else begin FCTime.Date := SGetServerDateTime(ADOQueryTemp); end; finally ADOQueryMain.EnableControls; end; end; procedure TfrmClaimInput.OppCoNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmCompanySel := TfrmCompanySel.Create(Application); with frmCompanySel do begin if trim(fctype.Text) = '客户索赔' then FCoType := '客户' else FCoType := '供应商'; if ShowModal = 1 then begin OppCoName.Text := Trim(CDS_1.fieldbyname('CoAbbrName').AsString); OppCoName.Properties.LookupItems.Text := Trim(CDS_1.fieldbyname('CoCode').AsString); end; end; finally frmCompanySel.Free; end; end; procedure TfrmClaimInput.OrderNoBtnUpClick(Sender: TObject); begin try frmFinTradePlanSel := TfrmFinTradePlanSel.Create(Application); with frmFinTradePlanSel do begin if ShowModal = 1 then begin with frmFinTradePlanSel.CDS_1 do begin self.ConNo.Text := Trim(frmFinTradePlanSel.CDS_1.fieldbyname('ConNo').AsString); self.OrderNo.Text := Trim(frmFinTradePlanSel.CDS_1.fieldbyname('OrderNo').AsString); end; end; end; finally frmFinTradePlanSel.Free; end; end; procedure TfrmClaimInput.OrderNoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmFinTradePlanSel := TfrmFinTradePlanSel.Create(Application); with frmFinTradePlanSel do begin if ShowModal = 1 then begin with frmFinTradePlanSel.CDS_1 do begin self.ConNo.Text := Trim(frmFinTradePlanSel.CDS_1.fieldbyname('ConNo').AsString); self.OrderNo.Text := Trim(frmFinTradePlanSel.CDS_1.fieldbyname('OrderNo').AsString); end; end; end; finally frmFinTradePlanSel.Free; end; end; procedure TfrmClaimInput.OurCoNameDblClick(Sender: TObject); begin TcxButtonEdit(Sender).Text := ''; TcxButtonEdit(Sender).Properties.LookupItems.Text := ''; end; procedure TfrmClaimInput.OurCoNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); 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.Properties.LookupItems.Text := Trim(CDS_1.fieldbyname('CoCode').AsString); end; end; finally frmCompanySel.Free; end; end; procedure TfrmClaimInput.FormDestroy(Sender: TObject); begin frmClaimInput := nil; end; procedure TfrmClaimInput.PayMentBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; end; procedure TfrmClaimInput.PayMentBtnUpClick(Sender: TObject); var fsj: string; FWZ: Integer; begin fsj := Trim(TcxTextEdit(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 TcxTextEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmClaimInput.QtyExit(Sender: TObject); begin HJJE(); end; procedure TfrmClaimInput.ConNoBtnUpClick(Sender: TObject); begin try frmFinTradeSalesContractSel := TfrmFinTradeSalesContractSel.Create(Application); with frmFinTradeSalesContractSel do begin if ShowModal = 1 then begin self.ConNo.Text := Trim(frmFinTradeSalesContractSel.CDS_1.fieldbyname('ConNo').AsString); end; end; finally frmFinTradeSalesContractSel.Free; end; end; procedure TfrmClaimInput.ConNoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmFinTradeSalesContractSel := TfrmFinTradeSalesContractSel.Create(Application); with frmFinTradeSalesContractSel do begin if ShowModal = 1 then begin self.ConNo.Text := Trim(frmFinTradeSalesContractSel.CDS_1.fieldbyname('ConNo').AsString); end; end; finally frmFinTradeSalesContractSel.Free; end; end; procedure TfrmClaimInput.FFAbstractPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); var fsj: string; FWZ: Integer; begin fsj := Trim(TcxTextEdit(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 TcxTextEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmClaimInput.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmClaimInput.TBCloseClick(Sender: TObject); begin close; end; procedure TfrmClaimInput.FormShow(Sender: TObject); begin if Trim(FFCID) = '' 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.Properties.LookupItems.Text := Trim(ADOQueryTemp.fieldbyname('CoCode').AsString); end; InitGrid(); end; procedure TfrmClaimInput.TBRafreshClick(Sender: TObject); begin InitGrid(); end; function TfrmClaimInput.SaveData(): Boolean; var MaxId, MaxSubId, FCoCode, FCCID: string; begin try ADOQueryCmd.Connection.BeginTrans; if Trim(FFCID) = '' then begin if not GetLSNo(ADOQueryCmd, MaxId, 'YS', 'Finance_Claim', 4, 1) then raise Exception.Create('取最大号失败!'); end else begin MaxId := Trim(FFCID); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Finance_Claim where FCID=''' + Trim(FFCID) + ''''); Open; end; with ADOQueryCmd do begin if Trim(FFCID) = '' then begin Append; FieldByName('FillId').Value := Trim(DCode); FieldByName('Filler').Value := Trim(DName); FieldByName('status').Value := '0'; 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.Properties.LookupItems.Text); FieldByName('OurCoNo').Value := Trim(OurCoName.Properties.LookupItems.Text); FieldByName('FCID').Value := Trim(MaxId); RTSetsavedata(ADOQueryCmd, 'Finance_Claim', 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 TfrmClaimInput.ScrollBox1Click(Sender: TObject); begin HJJE(); end; procedure TfrmClaimInput.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 SaveData() then begin Application.MessageBox('保存成功!', '提示', 0); ModalResult := 1; end; end; end.