unit U_OtherPayableList; 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, cxPC, cxDropDownEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, U_BaseList, Vcl.Menus, Vcl.Clipbrd, dxSkinWXI, dxScrollbarAnnotations; type TfrmOtherPayableList = class(TfrmBaseList) ToolBar1: TToolBar; TBRafresh: TToolButton; btnDel: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; ADOQueryMain: TADOQuery; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; Label3: TLabel; OppCoName: TEdit; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v2CRTime: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; begdate: TDateTimePicker; Enddate: TDateTimePicker; GPM_1: TcxGridPopupMenu; DS_1: TDataSource; CDS_1: TClientDataSet; btnAdd: TToolButton; v2FactoryName: TcxGridDBColumn; F_Name: TEdit; Label4: TLabel; CheckBox1: TCheckBox; Label6: TLabel; P_Code: TEdit; v2OrderNo: TcxGridDBColumn; cxTabControl1: TcxTabControl; Label10: TLabel; ConNo: TEdit; Label11: TLabel; BuyConNo: TEdit; v2Column2: TcxGridDBColumn; btnChk: TToolButton; btnReChk: TToolButton; PopupMenu1: TPopupMenu; N1: TMenuItem; ToolButton4: TToolButton; Label2: TLabel; OppParentCoName: TEdit; ToolButton5: TToolButton; N2: TMenuItem; btnEdit: TToolButton; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Tv1Column5: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; Tv1Column8: TcxGridDBColumn; Tv1Column9: TcxGridDBColumn; Tv1Column10: TcxGridDBColumn; Tv1Column11: TcxGridDBColumn; Tv1Column12: TcxGridDBColumn; Tv1Column13: TcxGridDBColumn; Tv1Column14: TcxGridDBColumn; Tv1Column15: TcxGridDBColumn; Tv1Column16: TcxGridDBColumn; Tv1Column17: TcxGridDBColumn; Tv1Column18: TcxGridDBColumn; Tv1Column19: TcxGridDBColumn; Tv1Column20: TcxGridDBColumn; Tv1Column21: TcxGridDBColumn; Tv1Column22: TcxGridDBColumn; Tv1Column23: TcxGridDBColumn; N3: TMenuItem; Tv1Column24: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; ToolButton1: TToolButton; Tv1Column25: TcxGridDBColumn; Tv1Column26: TcxGridDBColumn; Tv1Column27: TcxGridDBColumn; Tv1Column28: TcxGridDBColumn; Tv1Column29: TcxGridDBColumn; Tv1Column30: TcxGridDBColumn; Tv1Column31: TcxGridDBColumn; Tv1Column32: TcxGridDBColumn; Tv1Column33: TcxGridDBColumn; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure btnDelClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure cxGridDBColumn5PropertiesEditValueChanged(Sender: TObject); procedure btnAddClick(Sender: TObject); procedure OppCoNameKeyPress(Sender: TObject; var Key: Char); procedure cxTabControl1Change(Sender: TObject); procedure btnChkClick(Sender: TObject); procedure btnReChkClick(Sender: TObject); procedure N1Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure btnEditClick(Sender: TObject); procedure N3Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); private procedure InitGrid(); procedure SetStatus(); public FAuthority: string; end; implementation uses U_DataLink, U_RTFun, U_PayableInput, U_ZDYHelp, U_OtherPayableInput; {$R *.dfm} procedure TfrmOtherPayableList.SetStatus(); begin btnChk.Enabled := false; //审核 btnReChk.Enabled := false; //撤销 btnAdd.Enabled := false; //新增 btnEdit.Enabled := false; //修改 btnDel.Enabled := false; //删除 // if Trim(FAuthority) = '管理' then begin btnAdd.Enabled := true; case cxTabControl1.TabIndex of 0: begin btnEdit.Enabled := true; btnDel.Enabled := true; btnChk.Enabled := true; end; 1: begin btnReChk.Enabled := true; end; 2: begin end; end; end; end; procedure TfrmOtherPayableList.InitGrid(); var WSql: string; begin WSql := SGetFilters(Panel1, 1, 2); if Trim(WSql) <> '' then WSql := ' and ' + WSql else CheckBox1.Checked := True; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; SQL.Clear; Filtered := False; sql.Add(' select BuyConNO=ISNULL(A.BuyConNo,(select TOP 1 BuyConNo from Trade_Plan_Sub X where X.MainID=A.OrdMainId )),A.* '); sql.Add('from Finance_Flow A where A.FFType=''其他应付款登记'' '); case cxTabControl1.TabIndex of 0: begin sql.Add(' and isnull(status,''0'')=''0'' '); end; 1: begin sql.Add(' and isnull(status,''0'')=''9'' '); end; end; if CheckBox1.Checked then begin sql.Add(' and A.FFTime>=''' + FormatDateTime('yyyy-MM-dd', begdate.DateTime) + ''' '); sql.Add(' and FFTime<''' + FormatDateTime('yyyy-MM-dd', Enddate.DateTime + 1) + ''' '); end; sql.Add(WSql); sql.Add('Order By FFTime,OppCoName,OrderNo'); // ShowMessage(sql.text) ; Open; end; SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); finally ADOQueryMain.EnableControls; TV1.DataController.Filter.Clear; end; end; procedure TfrmOtherPayableList.N1Click(Sender: TObject); begin SelOKNo(CDS_1, true) end; procedure TfrmOtherPayableList.N2Click(Sender: TObject); begin Clipboard.SetTextBuf(PChar(Trim(CDS_1.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString))); end; procedure TfrmOtherPayableList.N3Click(Sender: TObject); begin SelOKNo(CDS_1, false) end; procedure TfrmOtherPayableList.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmOtherPayableList.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmOtherPayableList.btnDelClick(Sender: TObject); var FFFIDS: string; begin if CDS_1.IsEmpty then exit; if not CDS_1.Locate('SSel', True, []) then begin application.MessageBox('请选择数据', '提示'); Exit; end; with CDS_1 do begin DisableControls; while CDS_1.Locate('SSel', True, []) do begin FFFIDS := FFFIDS + Trim(CDS_1.fieldbyname('FFID').AsString) + ','; CDS_1.Delete; end; EnableControls; end; try with ADOQueryCmd do begin Close; sql.Clear; sql.Add(' exec P_Fin_Flow_Del '); sql.Add(' @FFIDS=' + QuotedStr(FFFIDS)); Sql.Add(',@DCode=' + quotedstr(Trim(DCode))); Sql.Add(',@DName=' + quotedstr(Trim(DName))); open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); application.MessageBox('删除成功', '提示'); except application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); InitGrid(); end; end; procedure TfrmOtherPayableList.FormShow(Sender: TObject); begin inherited; ReadCxGrid(trim(Self.Caption), Tv1, '财务管理'); Enddate.DateTime := SGetServerDate(ADOQueryTemp); begdate.DateTime := Enddate.DateTime - 365; SetStatus(); InitGrid(); end; procedure TfrmOtherPayableList.TBRafreshClick(Sender: TObject); begin begdate.SetFocus; // with ADOQueryCmd do // begin // Close; // Sql.Clear; // Sql.Add('exec P_Fin_Generate_BQ '); // Open; // end; // if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then // begin // application.MessageBox(pchar(ADOQueryCmd.FieldByName('ShowMsg').AsString), '提示信息'); // Exit; // end; InitGrid(); end; procedure TfrmOtherPayableList.cxGridDBColumn5PropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; FPS, FQty, FPrice, FQTFee, FMoney, FZKMoney: Double; begin FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := '0'; end; with CDS_1 do begin Edit; FieldByName(FFieldName).Value := Trim(mvalue); Post; FPS := CDS_1.fieldbyname('PS').AsFloat; FQty := CDS_1.fieldbyname('Qty').AsFloat; FQTFee := CDS_1.fieldbyname('QTFee').AsFloat; FPrice := CDS_1.fieldbyname('Price').AsFloat; FMoney := CDS_1.fieldbyname('Money').AsFloat; FZKMoney := CDS_1.fieldbyname('ZKMoney').AsFloat; end; if Trim(FFieldName) <> 'Money' then begin FMoney := FQty * FPrice + FQTFee - FZKMoney; end; with CDS_1 do begin Edit; FieldByName('Money').Value := FMoney; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update Finance_Flow set ' + FFieldName + '=' + Trim(mvalue)); if Trim(FFieldName) <> 'Money' then sql.Add(' ,Money=' + FloatToStr(FMoney)); sql.Add('where FFID=' + quotedstr(Trim(CDS_1.fieldbyname('FFID').AsString))); ExecSQL; end; Tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmOtherPayableList.btnChkClick(Sender: TObject); var FFFIDS: string; begin if CDS_1.IsEmpty then exit; if not CDS_1.Locate('SSel', True, []) then begin application.MessageBox('请选择数据', '提示'); Exit; end; with CDS_1 do begin DisableControls; while CDS_1.Locate('SSel', True, []) do begin FFFIDS := FFFIDS + Trim(CDS_1.fieldbyname('FFID').AsString) + ','; CDS_1.Delete; end; EnableControls; end; try with ADOQueryCmd do begin Close; sql.Clear; sql.Add(' exec P_Fin_Flow_SetStatus '); sql.Add(' @FFIDS=' + QuotedStr(FFFIDS)); sql.Add(',@Operation=''审核'' '); Sql.Add(',@DCode=' + quotedstr(Trim(DCode))); Sql.Add(',@DName=' + quotedstr(Trim(DName))); open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); application.MessageBox('审核成功', '提示'); except application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); InitGrid(); end; end; procedure TfrmOtherPayableList.btnReChkClick(Sender: TObject); var FFFIDS: string; begin if CDS_1.IsEmpty then exit; if not CDS_1.Locate('SSel', True, []) then begin application.MessageBox('请选择数据', '提示'); Exit; end; with CDS_1 do begin DisableControls; while CDS_1.Locate('SSel', True, []) do begin FFFIDS := FFFIDS + Trim(CDS_1.fieldbyname('FFID').AsString) + ','; CDS_1.Delete; end; EnableControls; end; try with ADOQueryCmd do begin Close; sql.Clear; sql.Add(' exec P_Fin_Flow_SetStatus '); sql.Add(' @FFIDS=' + QuotedStr(FFFIDS)); sql.Add(',@Operation=''撤销审核'' '); Sql.Add(',@DCode=' + quotedstr(Trim(DCode))); Sql.Add(',@DName=' + quotedstr(Trim(DName))); open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); application.MessageBox('撤销审核成功', '提示'); except application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); InitGrid(); end; end; procedure TfrmOtherPayableList.btnAddClick(Sender: TObject); begin try frmOtherPayableInput := TfrmOtherPayableInput.Create(Application); with frmOtherPayableInput do begin FFFID := ''; if ShowModal = 1 then begin InitGrid(); end; end; finally frmOtherPayableInput.Free; end; end; procedure TfrmOtherPayableList.ToolButton1Click(Sender: TObject); begin try frmOtherPayableInput := TfrmOtherPayableInput.Create(Application); with frmOtherPayableInput do begin FFFID := Trim(SELF.CDS_1.fieldbyname('FFID').AsString); PState:='复制'; if ShowModal = 1 then begin InitGrid(); end; end; finally frmOtherPayableInput.Free; end; end; procedure TfrmOtherPayableList.ToolButton4Click(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid1); end; procedure TfrmOtherPayableList.ToolButton5Click(Sender: TObject); begin WriteCxGrid(trim(Self.Caption), Tv1, '财务管理'); end; procedure TfrmOtherPayableList.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if AViewInfo.GridRecord.Values[tv1.GetColumnByFieldName('Filler').Index] <> '自动' then ACanvas.Font.Color := clBlue; // if '自动' <> AViewInfo.GridRecord.Values[Tv1Column25.Index] then ACanvas.Font.Color := clBlue; end; procedure TfrmOtherPayableList.btnEditClick(Sender: TObject); begin try with ADOQueryCmd do begin Close; sql.Clear; sql.Add(' exec P_Fin_Flow_Judge '); sql.Add(' @FFIDS=' + QuotedStr(Trim(SELF.CDS_1.fieldbyname('FFID').AsString))); Sql.Add(',@DCode=' + quotedstr(Trim(DCode))); Sql.Add(',@DName=' + quotedstr(Trim(DName))); open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); except application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); Exit; end; try frmOtherPayableInput := TfrmOtherPayableInput.Create(Application); with frmOtherPayableInput do begin FFFID := Trim(SELF.CDS_1.fieldbyname('FFID').AsString); if ShowModal = 1 then begin InitGrid(); end; end; finally frmOtherPayableInput.Free; end; end; procedure TfrmOtherPayableList.OppCoNameKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin InitGrid(); end; end; procedure TfrmOtherPayableList.cxTabControl1Change(Sender: TObject); begin SetStatus(); InitGrid(); end; end.