This commit is contained in:
funa 2026-06-23 17:26:29 +08:00
parent b67f583bf4
commit 98f3d8882b
2 changed files with 178 additions and 5 deletions

View File

@ -44,16 +44,32 @@ object frmSingleCustStatement: TfrmSingleCustStatement
ImageIndex = 1 ImageIndex = 1
OnClick = TBRafreshClick OnClick = TBRafreshClick
end end
object ToolButton3: TToolButton object TBVerify: TToolButton
Left = 71 Left = 71
Top = 0 Top = 0
AutoSize = True AutoSize = True
Caption = #26680#23545
ImageIndex = 12
OnClick = TBVerifyClick
end
object TBCancelVerify: TToolButton
Left = 142
Top = 0
AutoSize = True
Caption = #25764#38144#26680#23545
ImageIndex = 11
OnClick = TBCancelVerifyClick
end
object ToolButton3: TToolButton
Left = 237
Top = 0
AutoSize = True
Caption = #25171#21360 Caption = #25171#21360
ImageIndex = 21 ImageIndex = 21
OnClick = ToolButton3Click OnClick = ToolButton3Click
end end
object ToolButton1: TToolButton object ToolButton1: TToolButton
Left = 142 Left = 308
Top = 0 Top = 0
AutoSize = True AutoSize = True
Caption = #23548#20986 Caption = #23548#20986
@ -61,7 +77,7 @@ object frmSingleCustStatement: TfrmSingleCustStatement
OnClick = ToolButton1Click OnClick = ToolButton1Click
end end
object ToolButton2: TToolButton object ToolButton2: TToolButton
Left = 213 Left = 379
Top = 0 Top = 0
AutoSize = True AutoSize = True
Caption = #20445#23384#26684#24335 Caption = #20445#23384#26684#24335
@ -69,7 +85,7 @@ object frmSingleCustStatement: TfrmSingleCustStatement
OnClick = ToolButton2Click OnClick = ToolButton2Click
end end
object TBClose: TToolButton object TBClose: TToolButton
Left = 308 Left = 474
Top = 0 Top = 0
AutoSize = True AutoSize = True
Caption = #20851#38381 Caption = #20851#38381
@ -610,11 +626,13 @@ object frmSingleCustStatement: TfrmSingleCustStatement
Height = 542 Height = 542
Align = alClient Align = alClient
TabOrder = 3 TabOrder = 3
ExplicitTop = 73
object TV11: TcxGridDBTableView object TV11: TcxGridDBTableView
Navigator.Buttons.CustomButtons = <> Navigator.Buttons.CustomButtons = <>
Navigator.Buttons.Delete.Enabled = False Navigator.Buttons.Delete.Enabled = False
Navigator.Buttons.Delete.Visible = False Navigator.Buttons.Delete.Visible = False
ScrollbarAnnotations.CustomAnnotations = <> ScrollbarAnnotations.CustomAnnotations = <>
OnCustomDrawCell = TV11CustomDrawCell
DataController.DataSource = DS_HZ DataController.DataSource = DS_HZ
DataController.Filter.AutoDataSetFilter = True DataController.Filter.AutoDataSetFilter = True
DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost] DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
@ -669,6 +687,17 @@ object frmSingleCustStatement: TfrmSingleCustStatement
Styles.Header = DataLink_Financial.Default Styles.Header = DataLink_Financial.Default
Styles.Inactive = DataLink_Financial.SHuangSe Styles.Inactive = DataLink_Financial.SHuangSe
Styles.Selection = DataLink_Financial.SHuangSe Styles.Selection = DataLink_Financial.SHuangSe
object TV11ssel: TcxGridDBColumn
Caption = #36873#25321
DataBinding.FieldName = 'ssel'
DataBinding.IsNullValueType = True
PropertiesClassName = 'TcxCheckBoxProperties'
Properties.ImmediatePost = True
Properties.NullStyle = nssUnchecked
FixedKind = fkLeftDynamic
HeaderAlignmentHorz = taCenter
Width = 66
end
object cxGridDBColumn1: TcxGridDBColumn object cxGridDBColumn1: TcxGridDBColumn
Caption = #24207#21495 Caption = #24207#21495
DataBinding.FieldName = 'keyNO' DataBinding.FieldName = 'keyNO'
@ -876,6 +905,11 @@ object frmSingleCustStatement: TfrmSingleCustStatement
object TV11Column4: TcxGridDBColumn object TV11Column4: TcxGridDBColumn
DataBinding.IsNullValueType = True DataBinding.IsNullValueType = True
end end
object TV11is_checked: TcxGridDBColumn
DataBinding.FieldName = 'is_checked'
DataBinding.IsNullValueType = True
Visible = False
end
end end
object cxGridLevel2: TcxGridLevel object cxGridLevel2: TcxGridLevel
GridView = TV11 GridView = TV11

View File

@ -110,6 +110,10 @@ type
TV11Column3: TcxGridDBColumn; TV11Column3: TcxGridDBColumn;
TV11Column4: TcxGridDBColumn; TV11Column4: TcxGridDBColumn;
TV11Column5: TcxGridDBColumn; TV11Column5: TcxGridDBColumn;
TV11is_checked: TcxGridDBColumn;
TV11ssel: TcxGridDBColumn;
TBVerify: TToolButton;
TBCancelVerify: TToolButton;
procedure FormDestroy(Sender: TObject); procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBCloseClick(Sender: TObject); procedure TBCloseClick(Sender: TObject);
@ -120,10 +124,17 @@ type
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure ToolButton3Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject);
procedure ToolButton2Click(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
{ Private declarations } { Private declarations }
procedure InitGrid(); procedure InitGrid();
procedure UpdateCheckedStatus(Checked: Boolean);
public public
{ Public declarations } { Public declarations }
FOppCoNo, FOurCoNo, FCurrency: string; FOppCoNo, FOurCoNo, FCurrency: string;
@ -138,6 +149,22 @@ uses
U_DataLink, U_RTFun, U_ZDYHelp; U_DataLink, U_RTFun, U_ZDYHelp;
{$R *.dfm} {$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(); procedure TfrmSingleCustStatement.InitGrid();
begin begin
@ -153,7 +180,7 @@ begin
sql.Add(' ,@OppCoNo=' + QuotedStr(Trim(FOppCoNo))); sql.Add(' ,@OppCoNo=' + QuotedStr(Trim(FOppCoNo)));
sql.Add(' ,@OurCoNo=' + QuotedStr(Trim(FOurCoNo))); sql.Add(' ,@OurCoNo=' + QuotedStr(Trim(FOurCoNo)));
sql.Add(' ,@Currency=' + QuotedStr(Trim(FCurrency))); sql.Add(' ,@Currency=' + QuotedStr(Trim(FCurrency)));
// showmessage(sql.text); showmessage(sql.text);
Open; Open;
end; end;
SCreateCDS(ADOQueryMain, CDS_HZ); SCreateCDS(ADOQueryMain, CDS_HZ);
@ -170,6 +197,20 @@ begin
Action := caFree; Action := caFree;
end; end;
procedure TfrmSingleCustStatement.TBVerifyClick(Sender: TObject);
begin
if CDS_HZ.IsEmpty then Exit;
if MessageDlg('确认将选中的记录标记为已核对吗?', mtConfirmation, [mbYes, mbNo], 0) <> mrYes then Exit;
UpdateCheckedStatus(True);
end;
procedure TfrmSingleCustStatement.TBCancelVerifyClick(Sender: TObject);
begin
if CDS_HZ.IsEmpty then Exit;
if MessageDlg('确认将选中的记录取消核对吗?', mtConfirmation, [mbYes, mbNo], 0) <> mrYes then Exit;
UpdateCheckedStatus(False);
end;
procedure TfrmSingleCustStatement.TBCloseClick(Sender: TObject); procedure TfrmSingleCustStatement.TBCloseClick(Sender: TObject);
begin begin
@ -190,6 +231,8 @@ begin
InitGrid(); InitGrid();
end; end;
procedure TfrmSingleCustStatement.P_OrderNo_YSK(Sender: TObject); procedure TfrmSingleCustStatement.P_OrderNo_YSK(Sender: TObject);
begin begin
ToolButton2.Click; ToolButton2.Click;
@ -238,5 +281,101 @@ begin
end; 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. end.