D10myBiaoqi/A09财务通用管理/U_OtherPayableList.pas

565 lines
15 KiB
ObjectPascal
Raw Normal View History

2024-08-01 10:13:17 +08:00
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;
2025-01-13 16:36:43 +08:00
Tv1Column27: TcxGridDBColumn;
Tv1Column28: TcxGridDBColumn;
Tv1Column29: TcxGridDBColumn;
Tv1Column30: TcxGridDBColumn;
Tv1Column31: TcxGridDBColumn;
Tv1Column32: TcxGridDBColumn;
Tv1Column33: TcxGridDBColumn;
2024-08-01 10:13:17 +08:00
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; //<2F><><EFBFBD><EFBFBD>
btnReChk.Enabled := false; //<2F><><EFBFBD><EFBFBD>
btnAdd.Enabled := false; //<2F><><EFBFBD><EFBFBD>
btnEdit.Enabled := false; //<2F>޸<EFBFBD>
btnDel.Enabled := false; //ɾ<><C9BE>
// if Trim(FAuthority) = '<27><><EFBFBD><EFBFBD>' 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=''<27><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD>'' ');
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('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ');
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(<><C9BE><EFBFBD>ɹ<EFBFBD>', '<27><>ʾ');
except
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
InitGrid();
end;
end;
procedure TfrmOtherPayableList.FormShow(Sender: TObject);
begin
inherited;
ReadCxGrid(trim(Self.Caption), Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
Enddate.DateTime := SGetServerDate(ADOQueryTemp);
2025-01-13 16:36:43 +08:00
begdate.DateTime := Enddate.DateTime - 365;
2024-08-01 10:13:17 +08:00
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), '<27><>ʾ<EFBFBD><CABE>Ϣ');
// 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('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ');
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=''<27><><EFBFBD><EFBFBD>'' ');
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('<27><><EFBFBD>˳ɹ<CBB3>', '<27><>ʾ');
except
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 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('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ');
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=''<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'' ');
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('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳ɹ<CBB3>', '<27><>ʾ');
except
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 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:='<27><><EFBFBD><EFBFBD>';
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, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
end;
procedure TfrmOtherPayableList.Tv1CustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
begin
if AViewInfo.GridRecord.Values[tv1.GetColumnByFieldName('Filler').Index] <> '<27>Զ<EFBFBD>' then
ACanvas.Font.Color := clBlue;
// if '<27>Զ<EFBFBD>' <> 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), '<27><>ʾ<EFBFBD><CABE>Ϣ', 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.