Approval WFPosted Purch Invoice
Approval WFPosted Purch Invoice
{
OBJECT-PROPERTIES
{
Date=14-04-20;
Time=15:12:15;
Modified=Yes;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
InsertInvoiceApprovalWorkflowTemplate;
END;
}
CODE
{
VAR
WorkflowManagement@1000000000 : Codeunit 1501;
WorkflowEventHandlingExt@1000000001 : Codeunit 60012;
NoWorkflowEnabledErr@1000000002 : TextConst 'ENU=No Approval workflow for
this record type is enabled.';
WorkflowSetup@1000000003 : Codeunit 1502;
InvoiceWorkflowCategoryTxt@1000000004 : TextConst
'@@@={Locked};ENU=POSTEDPURCHDOC;FRB=POSTEDPURCHDOC;NLB=POSTEDPURCHDOC';
InvoiceWorkflowCategoryDescText@1000000005 : TextConst 'FRB=Flux de travail
facture achat;NLB=Inkoopfactuurwerkstroom';
InvoiceApprWorkflowDescText@1000000006 : TextConst 'ENU=Posted Purchase
Invoice Workflow;FRB=Flux de travail facture achat enregistre;NLB=Geboekte
Inkoopfactuurwerkstroom';
InvoiceAppWorkflowCodeTXT@1000000008 : TextConst
'@@@={Locked};ENU=PPIW;FRB=PPIW;NLB=PPIW';
InvoiceTypeCondnText@1000000007 : TextConst '@@@={Locked};ENU="<?xml
version=""1.0"" encoding=""utf-8"" standalone=""yes""?
><ReportParameters><DataItems><DataItem name=""Purch. Inv. Header"">
%1</DataItem><DataItem name=""Purch. Inv. Line"">
%2</DataItem></DataItems></ReportParameters>";FRB="<?xml version=""1.0""
encoding=""utf-8"" standalone=""yes""?><ReportParameters><DataItems><DataItem
name=""Purch. Inv. Header"">%1</DataItem><DataItem name=""Purch. Inv. Line"">
%2</DataItem></DataItems></ReportParameters>";NLB="<?xml version=""1.0""
encoding=""utf-8"" standalone=""yes""?><ReportParameters><DataItems><DataItem
name=""Purch. Inv. Header"">%1</DataItem><DataItem name=""Purch. Inv. Line"">
%2</DataItem></DataItems></ReportParameters>"';
[EventSubscriber(Codeunit,1502,OnAddWorkflowCategoriesToLibrary)]
LOCAL PROCEDURE OnAddWorkflowCategoriesToLibrary@1000000000();
BEGIN
WorkflowSetup.InsertWorkflowCategory(InvoiceWorkflowCategoryTxt,
InvoiceWorkflowCategoryDescText);
END;
[EventSubscriber(Codeunit,1502,OnAfterInsertApprovalsTableRelations)]
LOCAL PROCEDURE OnAfterInsertApprovalTableRelations@1000000001();
VAR
ApprovalEntry@1000000000 : Record 454;
BEGIN
WorkflowSetup.InsertTableRelation(DATABASE::"Purch. Inv. Header", 0,
DATABASE::"Approval Entry", ApprovalEntry.FIELDNO("Record ID to Approve"));
END;
[EventSubscriber(Codeunit,1502,OnInsertWorkflowTemplates)]
LOCAL PROCEDURE OnInsertWorkflowTemplates@1000000002(VAR Sender@1000000000 :
Codeunit 1502);
BEGIN
InsertInvoiceApprovalWorkflowTemplate();
END;
WorkflowSetup.InsertDocApprovalWorkflowSteps(
Workflow,
BuildInvoiceTypeConditions(PurchInvHeader.Status::Open),
WorkflowEventHandlingExt.RunWorkflowOnSendInvoiceForApprovalCode,
BuildInvoiceTypeConditions(PurchInvHeader.Status::"Pending Approval"),
WorkflowEventHandlingExt.RunWorkflowOnCancelInvoiceApprovalCode,
WorkflowStepArgument,
TRUE);
END;
BEGIN
END.
}
}
}
CODE
{
VAR
WorkflowManagement@1000000000 : Codeunit 1501;
WorkflowEventHandling@1000000001 : Codeunit 1520;
InvoiceSendForApprovalEventDescTxt@1000000002 : TextConst 'ENU=Approval of an
Invoice document is requested';
InvoiceApprovalRequestCancelEventDescTxt@1000000003 : TextConst 'ENU=Approval
of an Invoice document is canceled';
[EventSubscriber(Codeunit,60014,OnSendInvoiceForApproval)]
PROCEDURE RunWorkflowOnSendInvoiceForApproval@1000000000(VAR
PurchInvHeader@1000000001 : Record 122);
BEGIN
WorkflowManagement.HandleEvent(RunWorkflowOnSendInvoiceForApprovalCode,
PurchInvHeader);
END;
[EventSubscriber(Codeunit,60014,OnCancelInvoiceForApproval)]
LOCAL PROCEDURE RunWorkflowOnCancelInvoiceApproval@1000000004(VAR
PurchInvHeader@1000000001 : Record 122);
BEGIN
WorkflowManagement.HandleEvent(RunWorkflowOnCancelInvoiceApprovalCode,
PurchInvHeader);
END;
[EventSubscriber(Codeunit,1520,OnAddWorkflowEventsToLibrary)]
LOCAL PROCEDURE OnAddWorkflowEventsToLibrary@1000000003();
BEGIN
WorkflowEventHandling.AddEventToLibrary(RunWorkflowOnSendInvoiceForApprovalCode,
DATABASE::"Purch. Inv. Header", InvoiceSendForApprovalEventDescTxt, 0, FALSE);
WorkflowEventHandling.AddEventToLibrary(RunWorkflowOnCancelInvoiceApprovalCode,
DATABASE::"Purch. Inv. Header", InvoiceApprovalRequestCancelEventDescTxt, 0,
FALSE);
END;
[EventSubscriber(Codeunit,1520,OnAddWorkflowEventPredecessorsToLibrary)]
LOCAL PROCEDURE
OnAddWorkflowEventPredecessorsToLibrary@1000000005(EventFunctionName@1000000000 :
Code[128]);
BEGIN
CASE EventFunctionName OF
RunWorkflowOnCancelInvoiceApprovalCode:
WorkflowEventHandling.AddEventPredecessor(RunWorkflowOnCancelInvoiceApprovalCode,
RunWorkflowOnSendInvoiceForApprovalCode);
WorkflowEventHandling.RunWorkflowOnApproveApprovalRequestCode:
WorkflowEventHandling.AddEventPredecessor(WorkflowEventHandling.RunWorkflowOnApprov
eApprovalRequestCode, RunWorkflowOnSendInvoiceForApprovalCode);
END;
END;
BEGIN
END.
}
}
}
CODE
{
[EventSubscriber(Codeunit,1521,OnOpenDocument)]
LOCAL PROCEDURE OnOpenDocument@1000000000(RecRef@1000000000 : RecordRef;VAR
Handled@1000000001 : Boolean);
VAR
PurchInvHeader@1000000003 : Record 122;
BEGIN
CASE RecRef.NUMBER OF
{
DATABASE::"Sales Invoice Header" :
BEGIN
RecRef.SETTABLE(SalesInvoiceHeader);
SalesInvoiceHeader.Status := SalesInvoiceHeader.Status::Released;
SalesInvoiceHeader.MODIFY;
Handled := TRUE;
END;
}
DATABASE::"Purch. Inv. Header" :
BEGIN
RecRef.SETTABLE(PurchInvHeader);
PurchInvHeader.Status := PurchInvHeader.Status::Released;
PurchInvHeader.MODIFY;
Handled := TRUE;
END;
END;
END;
[EventSubscriber(Codeunit,1535,OnSetStatusToPendingApproval)]
LOCAL PROCEDURE OnSetStatusToPendingApproval@1000000001(RecRef@1000000000 :
RecordRef;VAR Variant@1000000001 : Variant;VAR IsHandled@1000000002 : Boolean);
VAR
PurchInvHeader@1000000004 : Record 122;
BEGIN
CASE RecRef.NUMBER OF
DATABASE::"Purch. Inv. Header" :
BEGIN
RecRef.SETTABLE(PurchInvHeader);
PurchInvHeader.Status := PurchInvHeader.Status::"Pending Approval";
PurchInvHeader.MODIFY;
IsHandled := TRUE;
END;
END;
END;
[EventSubscriber(Codeunit,1521,OnAddWorkflowResponsePredecessorsToLibrary)]
LOCAL PROCEDURE
OnAddWorkflowResponsePredecessorToLibrary@1000000005(ResponseFunctionName@100000000
0 : Code[128]);
VAR
WorkflowResponseHandling@1000000001 : Codeunit 1521;
WorkflowEventHandlingExt@1000000002 : Codeunit 60012;
BEGIN
CASE ResponseFunctionName OF
WorkflowResponseHandling.SetStatusToPendingApprovalCode:
WorkflowResponseHandling.AddResponsePredecessor(WorkflowResponseHandling.SetStatusT
oPendingApprovalCode,
WorkflowEventHandlingExt.RunWorkflowOnSendInvoiceForApprovalCode);
WorkflowResponseHandling.SendApprovalRequestForApprovalCode:
WorkflowResponseHandling.AddResponsePredecessor(WorkflowResponseHandling.SendApprov
alRequestForApprovalCode,
WorkflowEventHandlingExt.RunWorkflowOnSendInvoiceForApprovalCode);
WorkflowResponseHandling.CancelAllApprovalRequestsCode:
WorkflowResponseHandling.AddResponsePredecessor(WorkflowResponseHandling.CancelAllA
pprovalRequestsCode,
WorkflowEventHandlingExt.RunWorkflowOnCancelInvoiceApprovalCode);
WorkflowResponseHandling.OpenDocumentCode:
WorkflowResponseHandling.AddResponsePredecessor(WorkflowResponseHandling.OpenDocume
ntCode,
WorkflowEventHandlingExt.RunWorkflowOnCancelInvoiceApprovalCode);
END;
END;
BEGIN
END.
}
}
}
CODE
{
VAR
WorkflowManagement@1000000000 : Codeunit 1501;
WorkflowEventHandlingExt@1000000001 : Codeunit 60012;
NoWorkflowEnabledErr@1000000002 : TextConst 'ENU=No Approval workflow for
this record type is enabled.';
[Integration]
PROCEDURE OnSendInvoiceForApproval@1000000000(VAR PurchInvHeader@1000000001 :
Record 122);
BEGIN
END;
[Integration]
PROCEDURE OnCancelInvoiceForApproval@1000000001(VAR PurchInvHeader@1000000001 :
Record 122);
BEGIN
END;
PROCEDURE CheckClaimApprovalsWorkflowEnable@1000000002(VAR
PurchInvHeader@1000000001 : Record 122) : Boolean;
BEGIN
IF NOT IsInvoiceDocApprovalsWorkflowEnable(PurchInvHeader) THEN
ERROR(NoWorkflowEnabledErr);
EXIT(TRUE);
END;
PROCEDURE IsInvoiceDocApprovalsWorkflowEnable@1000000003(VAR
PurchInvHeader@1000000001 : Record 122) : Boolean;
BEGIN
IF PurchInvHeader.Status <> PurchInvHeader.Status::Open THEN
EXIT(FALSE);
EXIT(WorkflowManagement.CanExecuteWorkflow(PurchInvHeader,
WorkflowEventHandlingExt.RunWorkflowOnSendInvoiceForApprovalCode));
END;
[EventSubscriber(Codeunit,1535,OnPopulateApprovalEntryArgument)]
LOCAL PROCEDURE OnPopulateApprovalEntryArgument@1000000005(VAR
RecRef@1000000000 : RecordRef;VAR ApprovalEntryArgument@1000000001 : Record
454;WorkflowStepInstance@1000000002 : Record 1504);
VAR
PurchInvHeader@1000000004 : Record 122;
BEGIN
CASE RecRef.NUMBER OF
DATABASE::"Purch. Inv. Header":
BEGIN
RecRef.SETTABLE(PurchInvHeader);
ApprovalEntryArgument."Document No." := PurchInvHeader."No.";
END;
END;
END;
BEGIN
END.
}
}
}
CODE
{
[EventSubscriber(Codeunit,700,OnAfterGetPageID)]
LOCAL PROCEDURE OnAfterGetPageID@1000000000(RecordRef@1000000000 :
RecordRef;VAR PageID@1000000001 : Integer);
BEGIN
IF PageID = 0 THEN
PageID := GetConditionalCardPageID(RecordRef);
END;
BEGIN
END.
}
}