D10myBiaoqi/A09财务通用管理/U_handPayableList.pas
2026-05-30 17:45:18 +08:00

671 lines
17 KiB
ObjectPascal
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit U_handPayableList;
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, cxPC, RM_e_Xls, Menus, cxLookAndFeels,
cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, dxSkinsCore,
dxSkinsDefaultPainters, dxDateRanges, U_BaseList, Vcl.Clipbrd, dxSkinWXI,
dxScrollbarAnnotations;
type
TfrmhandPayableList = class(TfrmBaseList)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBClose: TToolButton;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
Panel1: TPanel;
ToolButton2: TToolButton;
ADOQueryMain: TADOQuery;
ToolButton1: TToolButton;
RM1: TRMGridReport;
RMDB_Main: TRMDBDataSet;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
cxGridLevel1: TcxGridLevel;
Label2: TLabel;
Label6: TLabel;
begdate: TDateTimePicker;
Enddate: TDateTimePicker;
cxGridPopupMenu2: TcxGridPopupMenu;
DS_Invoice: TDataSource;
CDS_Invoice: TClientDataSet;
TADD: TToolButton;
TUPDATE: TToolButton;
TBDEL: TToolButton;
v1InvoiceDate: TcxGridDBColumn;
v1note: TcxGridDBColumn;
Label5: TLabel;
OrderNo: TEdit;
TCHK: TToolButton;
TNOCHK: TToolButton;
cxTabControl1: TcxTabControl;
TSel: TToolButton;
v1Column2: TcxGridDBColumn;
RMXLSExport1: TRMXLSExport;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
ToolButton4: TToolButton;
v1Column3: TcxGridDBColumn;
ADOQueryPrint: TADOQuery;
Label1: TLabel;
SubExpend: TEdit;
v1Column12: TcxGridDBColumn;
v1Column13: TcxGridDBColumn;
v1Column14: TcxGridDBColumn;
v1Column15: TcxGridDBColumn;
v1Column17: TcxGridDBColumn;
v1Column18: TcxGridDBColumn;
v1Column19: TcxGridDBColumn;
ToolButton3: TToolButton;
N3: TMenuItem;
ToolButton5: TToolButton;
Tv1Column1: TcxGridDBColumn;
ToolButton6: TToolButton;
Tv1Column2: TcxGridDBColumn;
Label3: TLabel;
Amount: TEdit;
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure IVNoChange(Sender: TObject);
procedure TADDClick(Sender: TObject);
procedure TUPDATEClick(Sender: TObject);
procedure TBDELClick(Sender: TObject);
procedure cxTabControl1Change(Sender: TObject);
procedure TCHKClick(Sender: TObject);
procedure TNOCHKClick(Sender: TObject);
procedure TSelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure v1Column14PropertiesEditValueChanged(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure AmountKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
procedure InitGrid();
procedure SetStatus();
public
FZKType, canshu1, canshu2: string;
{ Public declarations }
end;
//var
// frmInvoiceXX: TfrmInvoiceXX;
implementation
uses
U_DataLink, U_RTFun, U_ZDYHelp, U_InvoiceInInPut, U_HandPayableInPut,
U_HandPayableImport;
{$R *.dfm}
procedure TfrmhandPayableList.SetStatus();
begin
tchk.Visible := false;
tnochk.Visible := false;
TUPDATE.Visible := false;
tbdel.Visible := false;
if trim(DParameters1) <> '<27><>Ȩ<EFBFBD><C8A8>' then
begin
case cxTabControl1.TabIndex of
0:
begin
TUPDATE.Visible := true;
tbdel.Visible := true;
TCHK.Visible := true;
end;
1:
begin
tnochk.Visible := true;
end;
2:
begin
end;
end;
end
else
begin
case cxTabControl1.TabIndex of
0:
begin
tchk.Visible := true;
TUPDATE.Visible := true;
tbdel.Visible := true;
TCHK.Visible := true;
end;
1:
begin
tnochk.Visible := true;
end;
2:
begin
end;
end;
end;
end;
procedure TfrmhandPayableList.InitGrid();
begin
try
with ADOQueryMain do
begin
Close;
SQL.Clear;
sql.Add(' select CONVERT(varchar,A.FFTime,23) FFTime,A.* from Finance_Flow A ');
sql.add(' where A.FFTime>=''' + formatdatetime('yyyy-MM-dd', begdate.datetime) + ''' ');
sql.Add(' and A.FFTime<''' + formatdateTime('yyyy-MM-dd', enddate.DateTime + 1) + ''' ');
sql.Add(' and A.FFType=''<27>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>õǼ<C3B5>'' ');
case cxTabControl1.TabIndex of
0:
begin
sql.add(' and isnull(A.Status,''0'')=''0''');
end;
1:
begin
sql.add(' and A.Status=''9''');
end;
end;
if Amount.text <> '' then
begin
sql.Add(' and A.Amount=''' + Trim(Amount.Text) + '''');
end;
Open;
end;
SCreateCDS(ADOQueryMain, CDS_Invoice);
SInitCDSData(ADOQueryMain, CDS_Invoice);
finally
TV1.DataController.Filter.Clear;
end;
end;
procedure TfrmhandPayableList.FormDestroy(Sender: TObject);
begin
inherited;
// frmInvoiceXX := nil;
end;
procedure TfrmhandPayableList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := caFree;
end;
procedure TfrmhandPayableList.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmhandPayableList.FormShow(Sender: TObject);
begin
inherited;
ReadCxGrid(self.Caption, Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
Enddate.DateTime := SGetServerDate(ADOQueryTemp);
begdate.DateTime := Enddate.DateTime - 30;
SetStatus();
InitGrid();
end;
procedure TfrmhandPayableList.TBRafreshClick(Sender: TObject);
begin
begdate.SetFocus;
InitGrid();
end;
procedure TfrmhandPayableList.ToolButton2Click(Sender: TObject);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, CDS_Invoice);
SInitCDSData(ADOQueryMain, CDS_Invoice);
end;
end;
procedure TfrmhandPayableList.ToolButton3Click(Sender: TObject);
begin
WriteCxGrid(self.Caption, Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
end;
procedure TfrmhandPayableList.ToolButton1Click(Sender: TObject);
begin
if ADOQueryMain.IsEmpty then
Exit;
TcxGridToExcel(self.Caption, cxgrid1);
end;
procedure TfrmhandPayableList.IVNoChange(Sender: TObject);
begin
ToolButton2.Click;
end;
procedure TfrmhandPayableList.TADDClick(Sender: TObject);
begin
frmHandPayableInPut := TfrmHandPayableInPut.Create(self);
with frmHandPayableInPut do
begin
FFID := '';
// FZKType := Self.FZKType;
if showmodal = 1 then
begin
initGrid();
end;
free;
end;
end;
procedure TfrmhandPayableList.TUPDATEClick(Sender: TObject);
begin
with ADOQueryTemp do
begin
Close;
SQL.Clear;
sql.Add(' select * from Trade_Plan_Main where OrderNo = ' + QuotedStr(CDS_Invoice.FieldByName('OrderNo').AsString) + ' and status in(''10'',''12'') ');
open;
end;
if not ADOQueryTemp.IsEmpty then
begin
application.MessageBox('<27>ƻ<EFBFBD><C6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3>޷<EFBFBD><DEB7>޸<EFBFBD>', '<27><>ʾ');
Exit;
end;
frmHandPayableInPut := TfrmHandPayableInPut.Create(self);
with frmHandPayableInPut do
begin
// IvNo.Enabled := False;
FFID := trim(Self.CDS_Invoice.fieldbyname('FFID').asstring);
if showmodal = 1 then
begin
Self.initGrid();
end;
free;
end;
end;
procedure TfrmhandPayableList.TBDELClick(Sender: TObject);
begin
if CDS_Invoice.IsEmpty then
exit;
if application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 1) = 2 then
exit;
with ADOQueryTemp do
begin
Close;
SQL.Clear;
sql.Add(' select * from Trade_Plan_Main where OrderNo = ' + QuotedStr(CDS_Invoice.FieldByName('OrderNo').AsString) + ' and status in (''10'',''12'') ');
open;
end;
if not ADOQueryTemp.IsEmpty then
begin
application.MessageBox('<27>ƻ<EFBFBD><C6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3>޷<EFBFBD><DEB7>޸<EFBFBD>', '<27><>ʾ');
Exit;
end;
try
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.add('delete from Finance_Flow where FFID=''' + trim(CDS_Invoice.fieldbyname('FFID').asstring) + ''' ');
// sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
// sql.Add(' ' + quotedstr(trim(DName)));
// sql.Add(',getdate() ');
// sql.Add(',' + quotedstr(trim(self.Caption)));
// sql.Add(',' + quotedstr(trim('<27>ֹ<EFBFBD>ɾ<EFBFBD><C9BE>')));
// sql.Add(',' + quotedstr(trim('<27><>Ʊ<EFBFBD>ţ<EFBFBD>' + trim(CDS_Invoice.FieldByName('ivNo').AsString))));
// sql.Add(',' + quotedstr(trim('<27>ɹ<EFBFBD>')));
// sql.Add(')');
execsql;
end;
ADOQueryCmd.Connection.CommitTrans;
CDS_Invoice.Delete;
except
ADOQueryCmd.Connection.RollbackTrans;
end;
end;
procedure TfrmhandPayableList.AmountKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
initGrid();
end;
end;
procedure TfrmhandPayableList.cxTabControl1Change(Sender: TObject);
begin
SetStatus();
initGrid();
end;
procedure TfrmhandPayableList.TCHKClick(Sender: TObject);
var
MFFIDS: string;
begin
if CDS_Invoice.IsEmpty then
exit;
if not CDS_Invoice.Locate('SSel', True, []) then
begin
application.MessageBox('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ');
Exit;
end;
with CDS_Invoice do
begin
// DisableControls;
while CDS_Invoice.Locate('SSel', True, []) do
begin
MFFIDS := MFFIDS + Trim(CDS_Invoice.fieldbyname('FFID').AsString) + ',';
CDS_Invoice.Delete;
end;
// EnableControls;
end;
try
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.add('update Finance_Flow set Chker=''' + trim(DName) + ''',Chktime=getdate(),status=''9'' ');
sql.add('where FFType=''<27>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>õǼ<C3B5>'' and EXISTS (select * from [dbo].[F_Tool_SplitString]( ''' + trim(MFFIDS) + '''');
sql.add(','','') X where X.RTValue=Finance_Flow.FFID) ');
// showmessage(sql.text);
execsql;
end;
application.MessageBox('<27><><EFBFBD>˳ɹ<CBB3>', '<27><>ʾ');
// InitGrid();
// CDS_Invoice.delete;
except
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>', '<27><>ʾ');
end;
end;
procedure TfrmhandPayableList.TNOCHKClick(Sender: TObject);
var
MFFIDS, MOrderNos: string;
begin
if CDS_Invoice.IsEmpty then
exit;
if not CDS_Invoice.Locate('SSel', True, []) then
begin
application.MessageBox('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ');
Exit;
end;
with CDS_Invoice do
begin
// DisableControls;
while CDS_Invoice.Locate('SSel', True, []) do
begin
MFFIDS := MFFIDS + Trim(CDS_Invoice.fieldbyname('FFID').AsString) + ',';
MOrderNos := MOrderNos + Trim(CDS_Invoice.fieldbyname('OrderNo').AsString) + ',';
CDS_Invoice.Delete;
end;
// EnableControls;
end;
with ADOQueryTemp do
begin
close;
sql.Clear;
sql.add('select * from trade_plan_main where OrderNo in (select rtvalue from F_Tool_SplitString(''' + MOrderNos + ''', '','') ) and status in(''10'', ''12'')');
Open;
end;
if not ADOQueryTemp.IsEmpty() then
begin
application.MessageBox('ѡ<><D1A1><EFBFBD>ļƻ<C4BC><C6BB><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ');
InitGrid();
Exit;
end;
try
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.add('update Finance_Flow set Chker=null,Chktime=null,status=''0'' ');
sql.add('where FFType=''<27>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>õǼ<C3B5>'' and EXISTS (select * from [dbo].[F_Tool_SplitString]( ''' + trim(MFFIDS) + '''');
sql.add(','','') X where X.RTValue=Finance_Flow.FFID) ');
execsql;
end;
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>', '<27><>ʾ');
// CDS_Invoice.delete;
except
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>', '<27><>ʾ');
end;
end;
procedure TfrmhandPayableList.TSelClick(Sender: TObject);
begin
frmHandPayableInPut := TfrmHandPayableInPut.Create(self);
with frmHandPayableInPut do
begin
TSave.Visible := False;
FFID := trim(Self.CDS_Invoice.fieldbyname('FFID').asstring);
if showmodal = 1 then
begin
end;
end;
end;
procedure TfrmhandPayableList.FormCreate(Sender: TObject);
begin
inherited;
canshu1 := trim(DParameters1);
end;
procedure TfrmhandPayableList.N1Click(Sender: TObject);
begin
SelOKNo(CDS_Invoice, True);
end;
procedure TfrmhandPayableList.N2Click(Sender: TObject);
begin
SelOKNo(CDS_Invoice, false);
end;
procedure TfrmhandPayableList.N3Click(Sender: TObject);
begin
Clipboard.SetTextBuf(PChar(Trim(CDS_Invoice.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
end;
procedure TfrmhandPayableList.ToolButton4Click(Sender: TObject);
var
fPrintFile: string;
Porderno, LBName, SYRName: string;
i, j: Integer;
OrderKg: Double;
begin
if CDS_Invoice.IsEmpty then
Exit;
if CDS_Invoice.Locate('SSel', True, []) = False then
begin
Application.MessageBox(<><C3BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 0);
Exit;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('delete TBSubID where DName=''' + Trim(DCode) + '''');
ExecSQL;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('SELECT * FROM TBSubID where 1=2 ');
open;
end;
CDS_Invoice.DisableControls;
try
ADOQueryCmd.Connection.BeginTrans;
with CDS_Invoice do
begin
First;
while not Eof do
begin
if Fieldbyname('Ssel').AsBoolean then
begin
ADOQueryCmd.append;
ADOQueryCmd.fieldbyname('SubId').Value := Trim(CDS_Invoice.fieldbyname('InvoiceNo').AsString);
ADOQueryCmd.fieldbyname('Dname').Value := Trim(DCode);
ADOQueryCmd.post;
end;
Next;
end;
end;
ADOQueryCmd.Connection.CommitTrans;
except
ADOQueryCmd.Connection.RollbackTrans;
end;
CDS_Invoice.EnableControls;
with ADOQueryPrint do
begin
Close;
sql.Clear;
sql.Add('exec P_View_FPTJ ' + quotedstr(Trim(DCode)));
Open;
end;
ExportFtErpFile('<27><><EFBFBD>Ʊ<EEB7A2>б<EFBFBD>.rmf', ADOQueryTemp);
fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\<5C><><EFBFBD>Ʊ<EEB7A2>б<EFBFBD>.rmf';
if FileExists(fPrintFile) then
begin
RM1.LoadFromFile(fPrintFile);
// RMVariables['SYRName']:=Trim(SYRName);
RM1.ShowReport;
end
else
begin
Application.MessageBox(PChar(<><C3BB><EFBFBD><EFBFBD>Report\<5C><><EFBFBD>Ʊ<EEB7A2>б<EFBFBD>.rmf'), '<27><>ʾ', 0);
end;
end;
procedure TfrmhandPayableList.ToolButton5Click(Sender: TObject);
begin
frmHandPayableInPut := TfrmHandPayableInPut.Create(self);
with frmHandPayableInPut do
begin
// IvNo.Enabled := False;
FFID := trim(Self.CDS_Invoice.fieldbyname('FFID').asstring);
PState := '<27><><EFBFBD><EFBFBD>';
if showmodal = 1 then
begin
Self.initGrid();
end;
free;
end;
end;
procedure TfrmhandPayableList.ToolButton6Click(Sender: TObject);
begin
try
frmHandPayableImport := TfrmHandPayableImport.Create(Application);
with frmHandPayableImport do
begin
// FCTID := Trim(Self.CDS_Tree.fieldbyname('CTID').AsString);
if ShowModal = 1 then
begin
Self.InitGrid();
end;
end;
finally
frmHandPayableImport.Free;
end;
end;
procedure TfrmhandPayableList.v1Column14PropertiesEditValueChanged(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;
end.