Why do you need this change?
We need skip CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Payment Purpose"); because our customization use different fill for payment purpose. It is reason why we don't want check this field. Event is prepared more generally for others. Event allows set fields for skip and developers can set each field what they want. So it is not necessary create variables for each skip.
Describe the request
local procedure CheckMandatoryFields(CashDocumentHeaderCZP: Record "Cash Document Header CZP")
var
//---------------------------------------OnBeforeCheckMandatoryFields::BEGIN
SkipTestFields: Dictionary of [Integer, Boolean];
//---------------------------------------OnBeforeCheckMandatoryFields::END
begin
//---------------------------------------OnBeforeCheckMandatoryFields::BEGIN
OnBeforeCheckMandatoryFields(CashDocumentHeaderCZP, SkipTestFields);
//---------------------------------------OnBeforeCheckMandatoryFields::END
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."No.");
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Posting Date");
CashDocumentHeaderCZP.VATRounding();
CashDocumentHeaderCZP.CalcFields(CashDocumentHeaderCZP."Amount Including VAT", CashDocumentHeaderCZP."Amount Including VAT (LCY)");
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Amount Including VAT");
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Amount Including VAT (LCY)");
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Document Date");
//---------------------------------------OnBeforeCheckMandatoryFields::BEGIN
if not SkipTestFields.ContainsKey(CashDocumentHeaderCZP.FieldNo("Payment Purpose")) then
//---------------------------------------OnBeforeCheckMandatoryFields::END
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Payment Purpose");
if CashDocumentHeaderCZP."Currency Code" <> '' then
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Currency Factor");
GetCashDesk(CashDocumentHeaderCZP."Cash Desk No.");
case CashDeskCZP."Payed To/By Checking" of
CashDeskCZP."Payed To/By Checking"::Warning:
case CashDocumentHeaderCZP."Document Type" of
CashDocumentHeaderCZP."Document Type"::Receipt:
if (CashDocumentHeaderCZP."Received By" = '') or (CashDocumentHeaderCZP."Received From" = '') then
if not ConfirmManagement.GetResponseOrDefault(StrSubstNo(EmptyFieldQst, CashDocumentHeaderCZP.FieldCaption(CashDocumentHeaderCZP."Received By"),
CashDocumentHeaderCZP.FieldCaption(CashDocumentHeaderCZP."Received From")), false) then
Error('');
CashDocumentHeaderCZP."Document Type"::Withdrawal:
if (CashDocumentHeaderCZP."Paid By" = '') or (CashDocumentHeaderCZP."Paid To" = '') then
if not ConfirmManagement.GetResponseOrDefault(StrSubstNo(EmptyFieldQst, CashDocumentHeaderCZP.FieldCaption(CashDocumentHeaderCZP."Paid By"),
CashDocumentHeaderCZP.FieldCaption(CashDocumentHeaderCZP."Paid To")), false) then
Error('');
end;
CashDeskCZP."Payed To/By Checking"::Blocking:
case CashDocumentHeaderCZP."Document Type" of
CashDocumentHeaderCZP."Document Type"::Receipt:
begin
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Received By");
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Received From");
end;
CashDocumentHeaderCZP."Document Type"::Withdrawal:
begin
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Paid By");
CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Paid To");
end;
end;
end;
end;
//---------------------------------------OnBeforeCheckMandatoryFields::BEGIN
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckMandatoryFields(CashDocumentHeaderCZP: Record "Cash Document Header CZP"; var SkipTestFields: Dictionary of [Integer, Boolean])
begin
end;
//---------------------------------------OnBeforeCheckMandatoryFields::END
Internal work item: AB#626304
Why do you need this change?
We need skip CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Payment Purpose"); because our customization use different fill for payment purpose. It is reason why we don't want check this field. Event is prepared more generally for others. Event allows set fields for skip and developers can set each field what they want. So it is not necessary create variables for each skip.
Describe the request
Internal work item: AB#626304