D10myBiaoqi/A09财务通用管理/U_SingleCustStatement.pas
2026-06-23 17:26:29 +08:00

382 lines
11 KiB
ObjectPascal
Raw 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_SingleCustStatement;
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, RM_e_Xls, cxGridBandedTableView,
cxGridDBBandedTableView, BtnEdit, cxLookAndFeels, cxLookAndFeelPainters,
cxNavigator, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges,
dxBarBuiltInMenu, dxSkinWXI, dxScrollbarAnnotations;
type
TfrmSingleCustStatement = class(TForm)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBClose: TToolButton;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
Panel1: TPanel;
Label1: TLabel;
MPRTCodeName: TEdit;
ADOQueryMain: TADOQuery;
ToolButton1: TToolButton;
Label3: TLabel;
OrderNo: TEdit;
cxGrid2: TcxGrid;
cxGridLevel1: TcxGridLevel;
Label2: TLabel;
Label6: TLabel;
begdate: TDateTimePicker;
Enddate: TDateTimePicker;
cxGridPopupMenu2: TcxGridPopupMenu;
DS_HZ: TDataSource;
CDS_HZ: TClientDataSet;
Label4: TLabel;
OrdDefNote3: TComboBox;
Label5: TLabel;
ToolButton3: TToolButton;
RMGridReport1: TRMGridReport;
RMDBDataSet1: TRMDBDataSet;
RMXLSExport1: TRMXLSExport;
ADOQueryPrint: TADOQuery;
TV1: TcxGridDBBandedTableView;
V1Column2: TcxGridDBBandedColumn;
V1Column4: TcxGridDBBandedColumn;
V1Column5: TcxGridDBBandedColumn;
V1Column6: TcxGridDBBandedColumn;
V1Column7: TcxGridDBBandedColumn;
V1Column8: TcxGridDBBandedColumn;
V1Column9: TcxGridDBBandedColumn;
V1Column12: TcxGridDBBandedColumn;
V1Column15: TcxGridDBBandedColumn;
V1Column3: TcxGridDBBandedColumn;
V1Column10: TcxGridDBBandedColumn;
V1Column14: TcxGridDBBandedColumn;
V1Column16: TcxGridDBBandedColumn;
V1Column17: TcxGridDBBandedColumn;
V1Column20: TcxGridDBBandedColumn;
V1Column21: TcxGridDBBandedColumn;
V1Column22: TcxGridDBBandedColumn;
V1Column23: TcxGridDBBandedColumn;
V1Column25: TcxGridDBBandedColumn;
V1Column26: TcxGridDBBandedColumn;
V1Column33: TcxGridDBBandedColumn;
V1Column34: TcxGridDBBandedColumn;
OppCoName: TEdit;
ToolButton2: TToolButton;
TV1Column1: TcxGridDBBandedColumn;
TV1Column2: TcxGridDBBandedColumn;
TV1Column3: TcxGridDBBandedColumn;
TV1Column4: TcxGridDBBandedColumn;
cxStyleRepository1: TcxStyleRepository;
cxStyle1: TcxStyle;
TV1Column5: TcxGridDBBandedColumn;
cxGrid1: TcxGrid;
TV11: TcxGridDBTableView;
v2CRTime: TcxGridDBColumn;
Tv1Column27: TcxGridDBColumn;
Tv1Column23: TcxGridDBColumn;
v2Column2: TcxGridDBColumn;
v2FactoryName: TcxGridDBColumn;
cxGridDBColumn1: TcxGridDBColumn;
v2OrderNo: TcxGridDBColumn;
cxGridDBColumn2: TcxGridDBColumn;
Tv1Column19: TcxGridDBColumn;
Tv1Column24: TcxGridDBColumn;
Tv1Column20: TcxGridDBColumn;
Tv1Column21: TcxGridDBColumn;
cxGridDBColumn3: TcxGridDBColumn;
cxGridDBColumn4: TcxGridDBColumn;
Tv1Column6: TcxGridDBColumn;
Tv1Column7: TcxGridDBColumn;
Tv1Column8: TcxGridDBColumn;
Tv1Column9: TcxGridDBColumn;
Tv1Column10: TcxGridDBColumn;
Tv1Column13: TcxGridDBColumn;
cxGridDBColumn5: TcxGridDBColumn;
Tv1Column28: TcxGridDBColumn;
cxGridLevel2: TcxGridLevel;
TV11Column1: TcxGridDBColumn;
TV11Column2: TcxGridDBColumn;
TV11Column3: TcxGridDBColumn;
TV11Column4: TcxGridDBColumn;
TV11Column5: TcxGridDBColumn;
TV11is_checked: TcxGridDBColumn;
TV11ssel: TcxGridDBColumn;
TBVerify: TToolButton;
TBCancelVerify: TToolButton;
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure P_OrderNo_YSK(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure TBVerifyClick(Sender: TObject);
procedure TBCancelVerifyClick(Sender: TObject);
procedure TV11CustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
private
{ Private declarations }
procedure InitGrid();
procedure UpdateCheckedStatus(Checked: Boolean);
public
{ Public declarations }
FOppCoNo, FOurCoNo, FCurrency: string;
end;
var
frmSingleCustStatement: TfrmSingleCustStatement;
implementation
uses
U_DataLink, U_RTFun, U_ZDYHelp;
{$R *.dfm}
procedure SplitDelimited(const S: string; Delimiter: Char; List: TStrings);
var
i: Integer;
SL: TStringList;
begin
SL := TStringList.Create;
try
SL.StrictDelimiter := True;
SL.Delimiter := Delimiter;
SL.DelimitedText := S;
for i := 0 to SL.Count - 1 do
List.Add(SL[i]);
finally
SL.Free;
end;
end;
procedure TfrmSingleCustStatement.InitGrid();
begin
with ADOQueryMain do
begin
Close;
SQL.Clear;
Filtered := False;
sql.Add(' exec P_Fin_CustStatementSingle ');
sql.Add(' @Begdate=' + QuotedStr(Trim(FormatDateTime('yyyy-MM-dd', begdate.DateTime))));
sql.Add(' ,@Enddate=' + QuotedStr(Trim(FormatDateTime('yyyy-MM-dd', Enddate.DateTime + 1))));
sql.Add(' ,@OppCoNo=' + QuotedStr(Trim(FOppCoNo)));
sql.Add(' ,@OurCoNo=' + QuotedStr(Trim(FOurCoNo)));
sql.Add(' ,@Currency=' + QuotedStr(Trim(FCurrency)));
showmessage(sql.text);
Open;
end;
SCreateCDS(ADOQueryMain, CDS_HZ);
SInitCDSData(ADOQueryMain, CDS_HZ);
end;
procedure TfrmSingleCustStatement.FormDestroy(Sender: TObject);
begin
frmSingleCustStatement := nil;
end;
procedure TfrmSingleCustStatement.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmSingleCustStatement.TBVerifyClick(Sender: TObject);
begin
if CDS_HZ.IsEmpty then Exit;
if MessageDlg(<>Ͻ<EFBFBD>ѡ<EFBFBD>еļ<D0B5>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>Ϊ<EFBFBD>Ѻ˶<D1BA><CBB6><EFBFBD><EFBFBD><EFBFBD>', mtConfirmation, [mbYes, mbNo], 0) <> mrYes then Exit;
UpdateCheckedStatus(True);
end;
procedure TfrmSingleCustStatement.TBCancelVerifyClick(Sender: TObject);
begin
if CDS_HZ.IsEmpty then Exit;
if MessageDlg(<>Ͻ<EFBFBD>ѡ<EFBFBD>еļ<D0B5>¼ȡ<C2BC><C8A1><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>', mtConfirmation, [mbYes, mbNo], 0) <> mrYes then Exit;
UpdateCheckedStatus(False);
end;
procedure TfrmSingleCustStatement.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmSingleCustStatement.FormShow(Sender: TObject);
begin
// readCxBandedGrid(trim(self.Caption), Tv11, 'Ӧ<>տ<EFBFBD><D5BF><EFBFBD><EFBFBD>˵<EFBFBD>');
ReadCxGrid(trim(Self.Caption), Tv11, <>տ<EFBFBD><D5BF><EFBFBD><EFBFBD>˵<EFBFBD>');
InitGrid();
end;
procedure TfrmSingleCustStatement.TBRafreshClick(Sender: TObject);
begin
begdate.SetFocus;
InitGrid();
end;
procedure TfrmSingleCustStatement.P_OrderNo_YSK(Sender: TObject);
begin
ToolButton2.Click;
end;
procedure TfrmSingleCustStatement.ToolButton1Click(Sender: TObject);
begin
if ADOQueryMain.IsEmpty then
Exit;
TcxGridToExcel(self.Caption + '-' + trim(OppCoName.Text), cxgrid1);
//TcxGridToExcel(self.Caption , cxgrid2);
// TcxGridToExcel(trim(OppCoName.Text), cxgrid2);
end;
procedure TfrmSingleCustStatement.ToolButton2Click(Sender: TObject);
begin
// WriteCxBandedGrid(trim(self.Caption), Tv11, 'Ӧ<>տ<EFBFBD><D5BF><EFBFBD><EFBFBD>˵<EFBFBD>');
WriteCxGrid(trim(Self.Caption), Tv11, <>տ<EFBFBD><D5BF><EFBFBD><EFBFBD>˵<EFBFBD>');
end;
procedure TfrmSingleCustStatement.FormCreate(Sender: TObject);
begin
cxGrid2.Align := AlClient;
Enddate.DateTime := SGetServerDate(ADOQueryTemp);
begdate.DateTime := Enddate.DateTime;
end;
procedure TfrmSingleCustStatement.ToolButton3Click(Sender: TObject);
var
filepath: string;
mBegdate, mEnddate: string;
begin
mBegdate := FormatDateTime('yyyy-MM-dd', begdate.Date);
mEnddate := FormatDateTime('yyyy-MM-dd', enddate.Date);
if CDS_HZ.IsEmpty then
exit;
filepath := ExtractFilePath(Application.ExeName) + 'report\Ӧ<>տ<EFBFBD><D5BF><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>˵<EFBFBD>.rmf';
if not FileExists(Pchar(filepath)) then
begin
application.MessageBox(pchar('<27>ļ<EFBFBD>[' + filepath + ']<5D><><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>'), '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_IConError);
exit;
end;
RMGridReport1.LoadFromFile(filepath);
RMGridReport1.ShowReport;
end;
procedure TfrmSingleCustStatement.TV11CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
ARecord: TcxCustomGridRecord;
begin
ARecord := AViewInfo.GridRecord;
if ARecord = nil then
Exit;
if (not VarIsNull(ARecord.Values[TV11is_checked.Index])) and
(ARecord.Values[TV11is_checked.Index] = 1) then
begin
ACanvas.Brush.Color := $CCFFCC;
end;
end;
procedure TfrmSingleCustStatement.UpdateCheckedStatus(Checked: Boolean);
var
FlowIDList, InvoiceIDList, TempIDs: string;
FlowIDsAll, InvoiceIDsAll: TStringList;
vBookmark: TBookmark;
targetValue: Integer;
begin
if CDS_HZ.IsEmpty then Exit;
targetValue := Ord(Checked);
FlowIDsAll := TStringList.Create;
InvoiceIDsAll := TStringList.Create;
try
CDS_HZ.DisableControls;
vBookmark := CDS_HZ.Bookmark;
try
CDS_HZ.First;
while not CDS_HZ.Eof do
begin
if CDS_HZ.FieldByName('ssel').AsBoolean then
begin
if not CDS_HZ.FieldByName('flow_ids').IsNull then
begin
TempIDs := CDS_HZ.FieldByName('flow_ids').AsString;
SplitDelimited(TempIDs, ',', FlowIDsAll);
end;
if not CDS_HZ.FieldByName('invoice_ids').IsNull then
begin
TempIDs := CDS_HZ.FieldByName('invoice_ids').AsString;
SplitDelimited(TempIDs, ',', InvoiceIDsAll);
end;
end;
CDS_HZ.Next;
end;
finally
CDS_HZ.Bookmark := vBookmark;
CDS_HZ.EnableControls;
end;
FlowIDsAll.Sorted := True;
FlowIDsAll.Duplicates := dupIgnore;
InvoiceIDsAll.Sorted := True;
InvoiceIDsAll.Duplicates := dupIgnore;
if FlowIDsAll.Count > 0 then
begin
FlowIDList := FlowIDsAll.CommaText;
ADOQueryCmd.Close;
ADOQueryCmd.SQL.Text :=
'UPDATE FF SET is_checked = :p ' +
'FROM Finance_Flow FF ' +
'INNER JOIN dbo.F_Tool_SplitString(:ids, '','') S ON FF.FFID = S.RTValue';
ADOQueryCmd.Parameters.ParamByName('p').Value := targetValue;
ADOQueryCmd.Parameters.ParamByName('ids').Value := FlowIDList;
ADOQueryCmd.ExecSQL;
end;
if InvoiceIDsAll.Count > 0 then
begin
InvoiceIDList := InvoiceIDsAll.CommaText;
ADOQueryCmd.Close;
ADOQueryCmd.SQL.Text :=
'UPDATE FI SET is_checked = :p ' +
'FROM Finance_Invoice FI ' +
'INNER JOIN dbo.F_Tool_SplitString(:ids, '','') S ON FI.IVId = S.RTValue';
ADOQueryCmd.Parameters.ParamByName('p').Value := targetValue;
ADOQueryCmd.Parameters.ParamByName('ids').Value := InvoiceIDList;
ADOQueryCmd.ExecSQL;
end;
finally
FlowIDsAll.Free;
InvoiceIDsAll.Free;
end;
InitGrid();
end;
end.