1373 lines
76 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" camunda:diagramRelationId="f01e22f1-a50b-42ba-afad-22f56fc3e635">
<bpmn:collaboration id="Collaboration_130jph2">
<bpmn:participant id="Participant_1fsb6gv" name="Core Contributor" processRef="Process_cc_invoice_approval_process_v2_b" />
<bpmn:participant id="Participant_11ab2hx" name="Process management platform" processRef="Process_cc_invoice_approval_process_v2_a" />
<bpmn:participant id="Participant_0a8arrz" name="AWS DynamoDB" />
<bpmn:participant id="Participant_1qabwrg" name="AWS S3" />
<bpmn:participant id="Participant_0b27sri" name="Xero" />
<bpmn:messageFlow id="Flow_0ppupld" sourceRef="Activity_0o1vc0a" targetRef="Participant_0a8arrz" />
<bpmn:messageFlow id="Flow_0yfnc92" sourceRef="Activity_0p88elm" targetRef="Participant_1qabwrg" />
<bpmn:messageFlow id="Flow_0jciftq" sourceRef="Activity_0cfvsk7" targetRef="Participant_1fsb6gv" />
<bpmn:messageFlow id="Flow_0p0bc5u" sourceRef="Activity_0fq1nb4" targetRef="Participant_0b27sri" />
<bpmn:messageFlow id="Flow_0n9qxyw" sourceRef="Submit_the_invoice" targetRef="Participant_1fsb6gv" />
<bpmn:messageFlow id="Flow_1getkzr" sourceRef="Activity_0fsoa08" targetRef="Participant_1fsb6gv" />
<bpmn:messageFlow id="Flow_0ozze4c" sourceRef="Activity_1ftzr6x" targetRef="Participant_1fsb6gv" />
<bpmn:messageFlow id="Flow_1dgkwzr" sourceRef="Activity_102t7tk" targetRef="Participant_1fsb6gv" />
<bpmn:textAnnotation id="TextAnnotation_1uaw1w7">
<bpmn:text>Environment - Vendor portal, Mailbox, etc.</bpmn:text>
</bpmn:textAnnotation>
<bpmn:association id="Association_1eygti7" sourceRef="Participant_1fsb6gv" targetRef="TextAnnotation_1uaw1w7" />
<bpmn:correlationKey name="CorrelationKey_Submit_Invoice">
<bpmn:correlationPropertyRef>CorrelationProperty_Submit_Invoice</bpmn:correlationPropertyRef>
</bpmn:correlationKey>
</bpmn:collaboration>
<bpmn:process id="Process_cc_invoice_approval_process_v2_b" isExecutable="true" />
<bpmn:process id="Process_cc_invoice_approval_process_v2_a" isExecutable="true">
<bpmn:laneSet id="LaneSet_0txkzqg">
<bpmn:lane id="Lane_1a0qu8e" name="Process Initiator">
<bpmn:flowNodeRef>Submit_the_invoice</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_validation_successful_question_mark</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_0fq1nb4</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_102t7tk</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Event_1usbnt0</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_1b6tead</bpmn:flowNodeRef>
<bpmn:flowNodeRef>SubProcess_Data_validation_rules</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_show_errors</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Event_invoice_validation_failed</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_1colhao</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_16gxu6s</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_1u89kok</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Event_1r3yh2k</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_05ov5p5</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_0o1vc0a</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_0p88elm</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_104xpp8</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_109lq0m</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_1lbghql</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Event_0x83ruk</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Event_0m3ri6v</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_0cfvsk7</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_1l4tz4i</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Event_15y55nw</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_0fsoa08</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_1lq96cy</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Event_1b58a3z</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_0gkejaj</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_1ucvkk4</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_10p5t0r</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_1717c0p</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_0faln91</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_1so23vf" name="Finance Team">
<bpmn:flowNodeRef>Event_16u0f7b</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_0cdgqi0</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_1ytq6m7</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_11stdua</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_1b7abal" name="Team Lead">
<bpmn:flowNodeRef>Activity_1ftzr6x</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Event_0f3d2bp</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_06b32ar</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Event_09q0ym0</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:sequenceFlow id="Flow_1x4rtop" name="Yes" sourceRef="Gateway_validation_successful_question_mark" targetRef="Activity_109lq0m" />
<bpmn:sequenceFlow id="Flow_05ffq52" name="No" sourceRef="Gateway_validation_successful_question_mark" targetRef="Event_invoice_validation_failed">
<bpmn:conditionExpression>not(isInvoiceSubmitPass)</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1c5u447" sourceRef="Activity_0gkejaj" targetRef="Gateway_1lbghql" />
<bpmn:sequenceFlow id="Flow_1gohkts" name="Yes" sourceRef="Gateway_1lbghql" targetRef="Event_0m3ri6v" />
<bpmn:sequenceFlow id="Flow_18xvx8w" name="yes" sourceRef="Gateway_1l4tz4i" targetRef="Activity_1lq96cy" />
<bpmn:sequenceFlow id="Flow_1ex5hfx" sourceRef="Event_15y55nw" targetRef="Activity_0gkejaj" />
<bpmn:sequenceFlow id="Flow_16bw9hx" name="No" sourceRef="Gateway_1lbghql" targetRef="Event_0x83ruk">
<bpmn:conditionExpression>not(isMatch)</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1wturr2" sourceRef="Activity_1ftzr6x" targetRef="Event_0f3d2bp" />
<bpmn:sequenceFlow id="Flow_0bfs2xe" name="No" sourceRef="Gateway_1l4tz4i" targetRef="Activity_0fsoa08">
<bpmn:conditionExpression>not(isInvoiceApproved)</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_0c0c9mw" sourceRef="Activity_0fsoa08" targetRef="Event_1b58a3z" />
<bpmn:sequenceFlow id="Flow_13ng1f4" sourceRef="Event_invoice_validation_failed" targetRef="Activity_show_errors" />
<bpmn:sequenceFlow id="Flow_18cic3h" sourceRef="Activity_show_errors" targetRef="Gateway_16gxu6s" />
<bpmn:sequenceFlow id="Flow_02moyg7" sourceRef="Submit_the_invoice" targetRef="SubProcess_Data_validation_rules" />
<bpmn:sequenceFlow id="Flow_1ck27i7" sourceRef="SubProcess_Data_validation_rules" targetRef="Gateway_validation_successful_question_mark" />
<bpmn:sequenceFlow id="Flow_1v8dszb" sourceRef="Event_09q0ym0" targetRef="Activity_1ftzr6x" />
<bpmn:sequenceFlow id="Flow_0yvmfqu" sourceRef="Activity_06b32ar" targetRef="Activity_0faln91" />
<bpmn:sequenceFlow id="Flow_12cqm3u" sourceRef="Gateway_05ov5p5" targetRef="Activity_104xpp8" />
<bpmn:sequenceFlow id="Flow_0hev3yn" sourceRef="Gateway_05ov5p5" targetRef="Activity_0o1vc0a" />
<bpmn:sequenceFlow id="Flow_02o270g" sourceRef="Activity_0o1vc0a" targetRef="Gateway_1717c0p" />
<bpmn:sequenceFlow id="Flow_0o94g4u" sourceRef="Activity_0p88elm" targetRef="Gateway_1717c0p" />
<bpmn:sequenceFlow id="Flow_1vxagrf" sourceRef="Event_1r3yh2k" targetRef="Activity_1u89kok" />
<bpmn:userTask id="Submit_the_invoice" name="2. Submit the invoice" scriptFormat="python" script="SdgsdGsdhgwsDEHhww">
<bpmn:extensionElements>
<spiffworkflow:properties>
<spiffworkflow:property name="formJsonSchemaFilename" value="Submit-the-invoice_JSONSchema.json" />
<spiffworkflow:property name="formUiSchemaFilename" value="Submit-the-invoice_UISchema.json" />
</spiffworkflow:properties>
<spiffworkflow:postScript />
<spiffworkflow:preScript />
</bpmn:extensionElements>
<bpmn:incoming>Flow_00p30u2</bpmn:incoming>
<bpmn:outgoing>Flow_02moyg7</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_validation_successful_question_mark" name="Successful?" default="Flow_1x4rtop">
<bpmn:incoming>Flow_1ck27i7</bpmn:incoming>
<bpmn:outgoing>Flow_1x4rtop</bpmn:outgoing>
<bpmn:outgoing>Flow_05ffq52</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:subProcess id="SubProcess_Data_validation_rules" name="2b. Data validation rules">
<bpmn:incoming>Flow_02moyg7</bpmn:incoming>
<bpmn:outgoing>Flow_1ck27i7</bpmn:outgoing>
<bpmn:startEvent id="Event_1qkuk5g">
<bpmn:outgoing>Flow_1avkxpe</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:scriptTask id="Activity_Check_Due_Date" name="Check Due Date" scriptFormat="python">
<bpmn:incoming>Flow_18i6dlo</bpmn:incoming>
<bpmn:outgoing>Flow_1d7sgm2</bpmn:outgoing>
<bpmn:script>invoice_date_obj = datetime.strptime(invoice.dueDate, '%Y-%m-%d')
local_date_time_obj = datetime.strptime(local_date_str, '%Y-%m-%d')
if invoice_date_obj &gt; local_date_time_obj:
isDueDateAfter = True
else:
isDueDateAfter = False
# Add date of invoice
invoice["invoiceDate"] = local_date_str
del local_date_time_obj
del invoice_date_obj
del datetime</bpmn:script>
</bpmn:scriptTask>
<bpmn:endEvent id="Event_015l7j8">
<bpmn:incoming>Flow_0tzjowk</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1avkxpe" sourceRef="Event_1qkuk5g" targetRef="Activity_check_contributor_name" />
<bpmn:scriptTask id="Activity_check_contributor_name" name="Check Contributor Name" scriptFormat="python">
<bpmn:extensionElements>
<spiffworkflow:unitTests>
<spiffworkflow:unitTest id="ScriptUnitTest_1kke2c8">
<spiffworkflow:inputJson>{"invoice.contributorName": "Harmeet"}</spiffworkflow:inputJson>
<spiffworkflow:expectedOutputJson>{
"isNameNum": false,
"invoice.contributorName": "Harmeet"
}</spiffworkflow:expectedOutputJson>
</spiffworkflow:unitTest>
</spiffworkflow:unitTests>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1avkxpe</bpmn:incoming>
<bpmn:outgoing>Flow_0mvmd06</bpmn:outgoing>
<bpmn:script>isNameNum = False
for c in invoice.contributorName:
if c.isdigit():
isNameNum = True
break
del c</bpmn:script>
</bpmn:scriptTask>
<bpmn:scriptTask id="Activity_check_invoice_amount" name="Check Invoice Amount" scriptFormat="python">
<bpmn:incoming>Flow_0mvmd06</bpmn:incoming>
<bpmn:outgoing>Flow_0wp2mcf</bpmn:outgoing>
<bpmn:script># Check if there are more than two decimal places
invoiceAmount_str = str(invoice.invoiceAmount)
d = decimal.Decimal(invoiceAmount_str)
d_cnt = d.as_tuple().exponent
# Get number of decimal places
decimal_cnt = abs(d_cnt)
#Delete unneeded variables
del d
del d_cnt
del decimal</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="Flow_0tzjowk" sourceRef="Activity_check_validation_rules" targetRef="Event_015l7j8" />
<bpmn:businessRuleTask id="Activity_check_validation_rules" name="Check Validation Rules">
<bpmn:extensionElements>
<spiffworkflow:calledDecisionId>submit_involce_valication</spiffworkflow:calledDecisionId>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1d7sgm2</bpmn:incoming>
<bpmn:outgoing>Flow_0tzjowk</bpmn:outgoing>
</bpmn:businessRuleTask>
<bpmn:callActivity id="Activity_call_local_date_and_time" name="Call Local Date &#38; Time" calledElement="Shared_Local_Date_Time">
<bpmn:incoming>Flow_0wp2mcf</bpmn:incoming>
<bpmn:outgoing>Flow_18i6dlo</bpmn:outgoing>
</bpmn:callActivity>
<bpmn:sequenceFlow id="Flow_18i6dlo" sourceRef="Activity_call_local_date_and_time" targetRef="Activity_Check_Due_Date" />
<bpmn:sequenceFlow id="Flow_1d7sgm2" sourceRef="Activity_Check_Due_Date" targetRef="Activity_check_validation_rules" />
<bpmn:sequenceFlow id="Flow_0mvmd06" sourceRef="Activity_check_contributor_name" targetRef="Activity_check_invoice_amount" />
<bpmn:sequenceFlow id="Flow_0wp2mcf" sourceRef="Activity_check_invoice_amount" targetRef="Activity_call_local_date_and_time" />
</bpmn:subProcess>
<bpmn:manualTask id="Activity_show_errors" name="Show Error(s)">
<bpmn:extensionElements>
<spiffworkflow:instructionsForEndUser>Validation failed. \n
{{ submitInvoiceValidationMessage }} \n
Please fix.
</spiffworkflow:instructionsForEndUser>
</bpmn:extensionElements>
<bpmn:incoming>Flow_13ng1f4</bpmn:incoming>
<bpmn:outgoing>Flow_18cic3h</bpmn:outgoing>
</bpmn:manualTask>
<bpmn:intermediateThrowEvent id="Event_invoice_validation_failed" name="Invoice validation failed">
<bpmn:documentation>Process milestone should update the process metadata field “milestone reached”</bpmn:documentation>
<bpmn:incoming>Flow_05ffq52</bpmn:incoming>
<bpmn:outgoing>Flow_13ng1f4</bpmn:outgoing>
</bpmn:intermediateThrowEvent>
<bpmn:sequenceFlow id="Flow_0bipj9q" sourceRef="Activity_1u89kok" targetRef="Gateway_16gxu6s" />
<bpmn:sequenceFlow id="Flow_1n239ad" sourceRef="Activity_0cfvsk7" targetRef="Event_15y55nw" />
<bpmn:sequenceFlow id="Flow_04ccp12" sourceRef="Event_0m3ri6v" targetRef="Activity_1lq96cy" />
<bpmn:sequenceFlow id="Flow_1r0a699" sourceRef="Activity_102t7tk" targetRef="Event_1usbnt0" />
<bpmn:sequenceFlow id="Flow_0kngdw4" sourceRef="Event_0x83ruk" targetRef="Activity_1ucvkk4" />
<bpmn:sequenceFlow id="Flow_0lfqk0y" sourceRef="Activity_1ucvkk4" targetRef="Activity_06b32ar" />
<bpmn:sequenceFlow id="Flow_1ds4s8o" sourceRef="Activity_1lq96cy" targetRef="Activity_0cdgqi0" />
<bpmn:sequenceFlow id="Flow_09wwily" sourceRef="Activity_0cdgqi0" targetRef="Activity_11stdua" />
<bpmn:sequenceFlow id="Flow_00kky3k" name="No" sourceRef="Gateway_1ytq6m7" targetRef="Gateway_1l4tz4i">
<bpmn:conditionExpression>not(isInvoiceApproved)</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_0h96w9j" name="Yes" sourceRef="Gateway_1ytq6m7" targetRef="Activity_0fq1nb4" />
<bpmn:sequenceFlow id="Flow_053ca95" sourceRef="Activity_0fq1nb4" targetRef="Activity_1b6tead" />
<bpmn:sequenceFlow id="Flow_0p6vvu0" sourceRef="Activity_104xpp8" targetRef="Activity_0p88elm" />
<bpmn:sequenceFlow id="Flow_0v2hmuf" sourceRef="Gateway_16gxu6s" targetRef="Activity_1colhao" />
<bpmn:sequenceFlow id="Flow_00p30u2" sourceRef="Activity_1colhao" targetRef="Submit_the_invoice" />
<bpmn:callActivity id="Activity_1colhao" name="Call Shared_Build_Enum_List_from_AWS" calledElement="Shared_Build_Enum_List_from_AWS">
<bpmn:extensionElements>
<spiffworkflow:preScript>whichSubject = "Currency"
addNew = False</spiffworkflow:preScript>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0v2hmuf</bpmn:incoming>
<bpmn:outgoing>Flow_00p30u2</bpmn:outgoing>
</bpmn:callActivity>
<bpmn:exclusiveGateway id="Gateway_16gxu6s">
<bpmn:incoming>Flow_18cic3h</bpmn:incoming>
<bpmn:incoming>Flow_0bipj9q</bpmn:incoming>
<bpmn:outgoing>Flow_0v2hmuf</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:callActivity id="Activity_1u89kok" name="Call Shared: User Info" calledElement="Shared_User_Info">
<bpmn:extensionElements>
<spiffworkflow:preScript>find_user = current_user["username"]
isCurrentUser = True</spiffworkflow:preScript>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1vxagrf</bpmn:incoming>
<bpmn:outgoing>Flow_0bipj9q</bpmn:outgoing>
</bpmn:callActivity>
<bpmn:startEvent id="Event_1r3yh2k">
<bpmn:outgoing>Flow_1vxagrf</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:parallelGateway id="Gateway_05ov5p5">
<bpmn:incoming>Flow_0u5z1vc</bpmn:incoming>
<bpmn:outgoing>Flow_12cqm3u</bpmn:outgoing>
<bpmn:outgoing>Flow_0hev3yn</bpmn:outgoing>
</bpmn:parallelGateway>
<bpmn:serviceTask id="Activity_0o1vc0a" name="2c. Save Invoice Data">
<bpmn:extensionElements>
<spiffworkflow:serviceTaskOperator id="aws/AddDynamoItem" resultVariable="&#39;responseAddDynamoInvoice&#39;">
<spiffworkflow:parameters>
<spiffworkflow:parameter id="item_data" type="str" value="{ &#34;ContributorName&#34;: invoice.contributorName, &#34;ContributorId&#34;: invoice.contributorId, &#34;InvoiceId&#34;: invoice.invoiceId, &#34;InvoiceAmount&#34;: invoice.invoiceAmount, &#34;InvoiceCurrency&#34;: invoice.invoiceCurrency, &#34;DueDate&#34;: invoice.dueDate }" />
<spiffworkflow:parameter id="table_name" type="str" value="&#39;Invoice&#39;" />
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0hev3yn</bpmn:incoming>
<bpmn:outgoing>Flow_02o270g</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_0p88elm" name="2d. Upload Invoice PDF document" scriptFormat="python" script="invoice_name = invoice.contributorName + &#34;_&#34; + invoice.invoiceId">
<bpmn:extensionElements>
<spiffworkflow:preScript />
<spiffworkflow:postScript>del(filesAccept)</spiffworkflow:postScript>
<spiffworkflow:serviceTaskOperator id="aws/UploadFileData">
<spiffworkflow:parameters>
<spiffworkflow:parameter id="bucket" type="str" value="&#39;sartography-status-pdfs&#39;" />
<spiffworkflow:parameter id="file_data" type="str" value="filesAccept" />
<spiffworkflow:parameter id="object_name" type="str" value="invoice_file_name" />
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0p6vvu0</bpmn:incoming>
<bpmn:outgoing>Flow_0o94g4u</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:scriptTask id="Activity_104xpp8" name="Set Invoice PDF Name" scriptFormat="python">
<bpmn:incoming>Flow_12cqm3u</bpmn:incoming>
<bpmn:outgoing>Flow_0p6vvu0</bpmn:outgoing>
<bpmn:script>invoice_file_name = invoice.contributorName + "_" + str(invoice.invoiceId) + ".pdf"</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="Flow_0u5z1vc" sourceRef="Activity_109lq0m" targetRef="Gateway_05ov5p5" />
<bpmn:scriptTask id="Activity_109lq0m" name="Set Invoice Status to Awaiting Approval" scriptFormat="python">
<bpmn:incoming>Flow_1x4rtop</bpmn:incoming>
<bpmn:outgoing>Flow_0u5z1vc</bpmn:outgoing>
<bpmn:script># Set Invoice Status
invoice["invoiceStatus"] = "Awaiting approval"
temp_test = invoice["invoiceStatus"]
# temp_message = "hello " + invoice.invoiceStatus</bpmn:script>
</bpmn:scriptTask>
<bpmn:exclusiveGateway id="Gateway_1lbghql" name="Match?" default="Flow_1gohkts">
<bpmn:incoming>Flow_1c5u447</bpmn:incoming>
<bpmn:outgoing>Flow_1gohkts</bpmn:outgoing>
<bpmn:outgoing>Flow_16bw9hx</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:intermediateThrowEvent id="Event_0x83ruk" name="Invoice Approval is required">
<bpmn:incoming>Flow_16bw9hx</bpmn:incoming>
<bpmn:outgoing>Flow_0kngdw4</bpmn:outgoing>
</bpmn:intermediateThrowEvent>
<bpmn:intermediateThrowEvent id="Event_0m3ri6v" name="Invoice is verified and approved">
<bpmn:incoming>Flow_1gohkts</bpmn:incoming>
<bpmn:outgoing>Flow_04ccp12</bpmn:outgoing>
</bpmn:intermediateThrowEvent>
<bpmn:serviceTask id="Activity_0cfvsk7" name="3. Notify CC via Waku &#34;invoice submitted&#34;">
<bpmn:extensionElements>
<spiffworkflow:serviceTaskOperator id="waku/SendMessage" resultVariable="wr">
<spiffworkflow:parameters>
<spiffworkflow:parameter id="message" type="str" value="&#34;Thanks for submitting your invoice &#34; + current_user_extras[&#34;first_name&#34;] + &#34;. We will keep you updated on the next steps.\nInvoice no: &#34; + invoice.invoiceId + &#34;\nAmount: &#34; + invoice.invoiceAmount_str + &#34;\nDate submitted: &#34; + invoice.invoiceDate + &#34;\nStatus: &#34; + invoice.invoiceStatus + &#34;\nProcess Instance Id: &#34; + str(process_instance_id) + &#34;\nLink to Spiff: https://demo.spiffworkflow.org/&#34;" />
<spiffworkflow:parameter id="message_type" type="str" value="&#34;wakuext_sendOneToOneMessage&#34;" />
<spiffworkflow:parameter id="recipient" type="str" value="current_user_extras[&#34;status_key&#34;]" />
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0h1x7y6</bpmn:incoming>
<bpmn:outgoing>Flow_1n239ad</bpmn:outgoing>
<bpmn:dataOutputAssociation id="DataOutputAssociation_1sosfhs">
<bpmn:targetRef>DataObjectReference_12rfrua</bpmn:targetRef>
</bpmn:dataOutputAssociation>
</bpmn:serviceTask>
<bpmn:exclusiveGateway id="Gateway_1l4tz4i" name="Approved?" default="Flow_18xvx8w">
<bpmn:incoming>Flow_00kky3k</bpmn:incoming>
<bpmn:incoming>Flow_15pzvrr</bpmn:incoming>
<bpmn:outgoing>Flow_18xvx8w</bpmn:outgoing>
<bpmn:outgoing>Flow_0bfs2xe</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:serviceTask id="Activity_1ftzr6x" name="4b. Notify CC via Waku&#10;&#34;invoice rejected&#34;">
<bpmn:extensionElements>
<spiffworkflow:serviceTaskOperator id="waku/SendMessage" resultVariable="waku_response">
<spiffworkflow:parameters>
<spiffworkflow:parameter id="message" type="str" value="&#34;Hi &#34; + current_user_extras[&#34;first_name&#34;] + &#34;, your invoice has been rejected. The reason specified for the rejection is: [&#34; + invoice.comment + &#34;]. Please get in touch with your Project Lead to discuss this further.\nInvoice no: &#34; + invoice.invoiceId + &#34;\nAmount: &#34; + invoice.invoiceCurrency + f&#39;{invoice.invoiceAmount:.2f}&#39; + &#34;\nDate submitted: &#34; + invoice.invoiceDate + &#34;\nStatus: &#34; + invoice.invoiceStatus + &#34;\nProcess Instance Id: &#34; + str(process_instance_id) + &#34;\nLink to Spiff: https://demo.spiffworkflow.org/&#34;" />
<spiffworkflow:parameter id="message_type" type="str" value="&#34;wakuext_sendOneToOneMessage&#34;" />
<spiffworkflow:parameter id="recipient" type="str" value="team_lead_info[&#34;status_key&#34;]" />
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1v8dszb</bpmn:incoming>
<bpmn:outgoing>Flow_1wturr2</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:endEvent id="Event_0f3d2bp" name="Invoice is declined due to Approver inaction">
<bpmn:incoming>Flow_1wturr2</bpmn:incoming>
</bpmn:endEvent>
<bpmn:userTask id="Activity_06b32ar" name="Approve Invocie - Team Lead">
<bpmn:extensionElements>
<spiffworkflow:properties>
<spiffworkflow:property name="formJsonSchemaFilename" value="invoice-approval_JSONSchema.json" />
<spiffworkflow:property name="formUiSchemaFilename" value="invoice-approval_UISchema.json" />
</spiffworkflow:properties>
<spiffworkflow:postScript />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0lfqk0y</bpmn:incoming>
<bpmn:outgoing>Flow_0yvmfqu</bpmn:outgoing>
</bpmn:userTask>
<bpmn:intermediateThrowEvent id="Event_15y55nw" name="Invoice is submitted">
<bpmn:documentation>Process milestone should update the process metadata field “milestone reached”</bpmn:documentation>
<bpmn:incoming>Flow_1n239ad</bpmn:incoming>
<bpmn:outgoing>Flow_1ex5hfx</bpmn:outgoing>
</bpmn:intermediateThrowEvent>
<bpmn:serviceTask id="Activity_0fsoa08" name="4c. Notify CC via Waku&#10;&#34;invoice rejected&#34;">
<bpmn:extensionElements>
<spiffworkflow:serviceTaskOperator id="waku/SendMessage" resultVariable="waku_response">
<spiffworkflow:parameters>
<spiffworkflow:parameter id="message" type="str" value="&#34;Hi &#34; + current_user_extras[&#34;first_name&#34;] + &#34;, your invoice has been rejected. The reason specified for the rejection is: [&#34; + invoice.comment + &#34;]. Please get in touch with your Project Lead to discuss this further.\nInvoice no: &#34; + invoice.invoiceId + &#34;\nAmount: &#34; + invoice.invoiceAmount_str + &#34;\nDate submitted: &#34; + invoice.invoiceDate + &#34;\nStatus: &#34; + invoice.invoiceStatus + &#34;\nTeam Lead Comments: &#34; + invoice.commentsTeamLead + &#34;\nProcess Instance Id: &#34; + str(process_instance_id) + &#34;\nLink to Spiff: https://demo.spiffworkflow.org/&#34;" />
<spiffworkflow:parameter id="message_type" type="str" value="&#34;wakuext_sendOneToOneMessage&#34;" />
<spiffworkflow:parameter id="recipient" type="str" value="current_user_extras[&#34;status_key&#34;]" />
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0bfs2xe</bpmn:incoming>
<bpmn:outgoing>Flow_0c0c9mw</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_1lq96cy" name="7. Notify Finance via Waku&#34;invoice received and approved&#34;">
<bpmn:extensionElements>
<spiffworkflow:serviceTaskOperator id="waku/SendMessage" resultVariable="waku_response">
<spiffworkflow:parameters>
<spiffworkflow:parameter id="message" type="str" value="&#34;An invoice has been submitted and approved.\nSubmitted by: &#34; + current_user_extras[&#34;first_name&#34;] + &#34;\nInvoice no: &#34; + invoice.invoiceId + &#34;\nAmount: &#34; + invoice.invoiceAmount_str + &#34;\nDate submitted: &#34; + invoice.invoiceDate + &#34;\nStatus: &#34; + invoice.invoiceStatus + &#34;\nProcess Instance Id: &#34; + str(process_instance_id) + &#34;\nLink to Spiff: https://demo.spiffworkflow.org/&#34;" />
<spiffworkflow:parameter id="message_type" type="str" value="&#34;wakuext_sendOneToOneMessage&#34;" />
<spiffworkflow:parameter id="recipient" type="str" value="&#34;0x04cf9f835bfb5f5b94b4c6f36378fd14bde09960a4d021928981125d314fa423fa79cde37003b9c6135b52dc20734590dcac5a68b73af74d58060628b2c531faf1&#34;" />
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
</bpmn:extensionElements>
<bpmn:incoming>Flow_18xvx8w</bpmn:incoming>
<bpmn:incoming>Flow_04ccp12</bpmn:incoming>
<bpmn:outgoing>Flow_1ds4s8o</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:userTask id="Activity_0cdgqi0" name="Approve Invoice - Finance">
<bpmn:extensionElements>
<spiffworkflow:properties>
<spiffworkflow:property name="formJsonSchemaFilename" value="invoice-approval_JSONSchema.json" />
<spiffworkflow:property name="formUiSchemaFilename" value="invoice-approval_UISchema.json" />
</spiffworkflow:properties>
<spiffworkflow:postScript />
</bpmn:extensionElements>
<bpmn:incoming>Flow_1ds4s8o</bpmn:incoming>
<bpmn:outgoing>Flow_09wwily</bpmn:outgoing>
</bpmn:userTask>
<bpmn:endEvent id="Event_1b58a3z" name="Invoice is rejected by Approver">
<bpmn:incoming>Flow_0c0c9mw</bpmn:incoming>
</bpmn:endEvent>
<bpmn:dataObjectReference id="DataObjectReference_0okfp91" name="wr-notify_cc_invoice_uploaded" dataObjectRef="wr-notify_cc_invoice_uploaded" />
<bpmn:dataObject id="wr-notify_cc_invoice_uploaded" />
<bpmn:dataObjectReference id="DataObjectReference_12rfrua" name="wr" dataObjectRef="wr" />
<bpmn:dataObject id="wr" />
<bpmn:subProcess id="Activity_0gkejaj" name="4. Compare Invoice data vs Enterprise systems data">
<bpmn:incoming>Flow_1ex5hfx</bpmn:incoming>
<bpmn:outgoing>Flow_1c5u447</bpmn:outgoing>
<bpmn:startEvent id="Event_0w5o6hr">
<bpmn:outgoing>Flow_1sc1v4y</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:serviceTask id="Activity_108oe6k" name="Fetch the compensation information and approval data" />
<bpmn:businessRuleTask id="Activity_1yhwhps" name="Compare the BambooHR.compensation/12 amount with invoice amount">
<bpmn:extensionElements>
<spiffworkflow:calledDecisionId>Invoice_Approval_Check</spiffworkflow:calledDecisionId>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1m8uxeg</bpmn:incoming>
<bpmn:outgoing>Flow_04do8x7</bpmn:outgoing>
</bpmn:businessRuleTask>
<bpmn:exclusiveGateway id="Gateway_1vplgf6" name="Compensation and invoice amount matches?">
<bpmn:outgoing>Flow_08ftr1r</bpmn:outgoing>
<bpmn:outgoing>Flow_0lf2mw4</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:endEvent id="Event_1f0247l" name="Data matched">
<bpmn:incoming>Flow_08ftr1r</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_08ftr1r" name="yes" sourceRef="Gateway_1vplgf6" targetRef="Event_1f0247l" />
<bpmn:sequenceFlow id="Flow_0lf2mw4" name="no" sourceRef="Gateway_1vplgf6" targetRef="Activity_1y0uwth" />
<bpmn:serviceTask id="Activity_1y0uwth" name="Notify via Waku to approver that manual approval is required">
<bpmn:incoming>Flow_0lf2mw4</bpmn:incoming>
<bpmn:outgoing>Flow_12mq72f</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:sequenceFlow id="Flow_12mq72f" sourceRef="Activity_1y0uwth" targetRef="Activity_081j8i8" />
<bpmn:userTask id="Activity_081j8i8" name="Approver approves/denies the invoice">
<bpmn:incoming>Flow_12mq72f</bpmn:incoming>
<bpmn:outgoing>Flow_02ikttr</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_01zi4az" name="Approved?">
<bpmn:incoming>Flow_02ikttr</bpmn:incoming>
<bpmn:outgoing>Flow_1oyagpu</bpmn:outgoing>
<bpmn:outgoing>Flow_115g94n</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_02ikttr" sourceRef="Activity_081j8i8" targetRef="Gateway_01zi4az" />
<bpmn:endEvent id="Event_13uw548">
<bpmn:incoming>Flow_1oyagpu</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1oyagpu" name="yes" sourceRef="Gateway_01zi4az" targetRef="Event_13uw548" />
<bpmn:sequenceFlow id="Flow_115g94n" name="no" sourceRef="Gateway_01zi4az" targetRef="Activity_0ayubx4" />
<bpmn:serviceTask id="Activity_0ayubx4" name="Notify via Waku Core Contributor that their invoice has been rejected">
<bpmn:incoming>Flow_115g94n</bpmn:incoming>
<bpmn:outgoing>Flow_1iz4xwz</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:endEvent id="Event_04023ne">
<bpmn:incoming>Flow_1iz4xwz</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1iz4xwz" sourceRef="Activity_0ayubx4" targetRef="Event_04023ne" />
<bpmn:scriptTask id="Activity_02go8ec" name="Get Annual Salary">
<bpmn:incoming>Flow_1sc1v4y</bpmn:incoming>
<bpmn:outgoing>Flow_1nlal9u</bpmn:outgoing>
<bpmn:script>annual_salary = 24000</bpmn:script>
</bpmn:scriptTask>
<bpmn:scriptTask id="Activity_0b87ocm" name="Get Invoice Amount" scriptFormat="python">
<bpmn:incoming>Flow_01eh2ws</bpmn:incoming>
<bpmn:outgoing>Flow_1m8uxeg</bpmn:outgoing>
<bpmn:script>invoice_amount = invoice.invoiceAmount</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="Flow_1sc1v4y" sourceRef="Event_0w5o6hr" targetRef="Activity_02go8ec" />
<bpmn:sequenceFlow id="Flow_1m8uxeg" sourceRef="Activity_0b87ocm" targetRef="Activity_1yhwhps" />
<bpmn:endEvent id="Event_0cmri19">
<bpmn:incoming>Flow_04do8x7</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_04do8x7" sourceRef="Activity_1yhwhps" targetRef="Event_0cmri19" />
<bpmn:sequenceFlow id="Flow_1nlal9u" sourceRef="Activity_02go8ec" targetRef="Activity_0j1a5yh" />
<bpmn:sequenceFlow id="Flow_01eh2ws" sourceRef="Activity_0j1a5yh" targetRef="Activity_0b87ocm" />
<bpmn:serviceTask id="Activity_0j1a5yh" name="Fetch Invoice Details">
<bpmn:extensionElements>
<spiffworkflow:serviceTaskOperator id="aws/QueryDynamoTable" resultVariable="resp_FetchInvoiceDetails">
<spiffworkflow:parameters>
<spiffworkflow:parameter id="partition_key" type="str" value="invoice.contributorId" />
<spiffworkflow:parameter id="sort_key" type="str" value="invoice.invoiceId" />
<spiffworkflow:parameter id="table_name" type="str" value="&#39;Invoice&#39;" />
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1nlal9u</bpmn:incoming>
<bpmn:outgoing>Flow_01eh2ws</bpmn:outgoing>
</bpmn:serviceTask>
</bpmn:subProcess>
<bpmn:subProcess id="Activity_1ucvkk4" name="Send Team Lead Notification">
<bpmn:incoming>Flow_0kngdw4</bpmn:incoming>
<bpmn:outgoing>Flow_0lfqk0y</bpmn:outgoing>
<bpmn:exclusiveGateway id="Gateway_1l74xlc">
<bpmn:outgoing>Flow_1am9jcz</bpmn:outgoing>
<bpmn:outgoing>Flow_0kx6gsl</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_1am9jcz" sourceRef="Gateway_1l74xlc" targetRef="Activity_1w6kg4p" />
<bpmn:serviceTask id="Activity_1w6kg4p" name="4ai. Get Team_Lead info">
<bpmn:incoming>Flow_1am9jcz</bpmn:incoming>
<bpmn:outgoing>Flow_0rbij5a</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:task id="Activity_0respgl" name="4aii. Get Invoice details">
<bpmn:incoming>Flow_0kx6gsl</bpmn:incoming>
<bpmn:outgoing>Flow_0lyg5zb</bpmn:outgoing>
</bpmn:task>
<bpmn:sequenceFlow id="Flow_0kx6gsl" sourceRef="Gateway_1l74xlc" targetRef="Activity_0respgl" />
<bpmn:exclusiveGateway id="Gateway_1vl3ipe">
<bpmn:incoming>Flow_0rbij5a</bpmn:incoming>
<bpmn:incoming>Flow_0lyg5zb</bpmn:incoming>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_0rbij5a" sourceRef="Activity_1w6kg4p" targetRef="Gateway_1vl3ipe" />
<bpmn:sequenceFlow id="Flow_0lyg5zb" sourceRef="Activity_0respgl" targetRef="Gateway_1vl3ipe" />
<bpmn:dataObjectReference id="DataObjectReference_0frvqwx" />
<bpmn:startEvent id="Event_00px1yx">
<bpmn:outgoing>Flow_0idsdf0</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:endEvent id="Event_1nkaxn4">
<bpmn:incoming>Flow_1cynsak</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_0idsdf0" sourceRef="Event_00px1yx" targetRef="Activity_00b66gy" />
<bpmn:callActivity id="Activity_00b66gy" name="Call Shared: User Info" calledElement="Shared_User_Info">
<bpmn:extensionElements>
<spiffworkflow:preScript>find_user = current_user_extras["team_lead_username"]
isCurrentUser = False</spiffworkflow:preScript>
<spiffworkflow:postScript />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0idsdf0</bpmn:incoming>
<bpmn:outgoing>Flow_0mwwhvb</bpmn:outgoing>
</bpmn:callActivity>
<bpmn:scriptTask id="Activity_0lmpdui" name="Set Team Lead Info" scriptFormat="python">
<bpmn:incoming>Flow_0mwwhvb</bpmn:incoming>
<bpmn:outgoing>Flow_04uuejh</bpmn:outgoing>
<bpmn:script># Set Team Lead Info
team_lead_info = {}
team_lead_info["full_name"] = userFullName
team_lead_info["first_name"] = userFirstName
team_lead_info["email"] = userEmail
team_lead_info["team_lead_username"] = userTeamLeadUsername
team_lead_info["status_key"] = userStatusKey
del(userFullName)
del(userFirstName)
del(userEmail)
# del(userTeamLeadUsername)
del(userStatusKey)</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="Flow_1cynsak" sourceRef="Activity_1ve0iqu" targetRef="Event_1nkaxn4" />
<bpmn:serviceTask id="Activity_1ve0iqu" name="Notify Team Lead">
<bpmn:extensionElements>
<spiffworkflow:serviceTaskOperator id="waku/SendMessage" resultVariable="respNotifyTeamLead">
<spiffworkflow:parameters>
<spiffworkflow:parameter id="message" type="str" value="&#34;Invoice to approve&#34;" />
<spiffworkflow:parameter id="message_type" type="str" value="&#34;wakuext_sendOneToOneMessage&#34;" />
<spiffworkflow:parameter id="recipient" type="str" value="team_lead_info[&#34;status_key&#34;]" />
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
</bpmn:extensionElements>
<bpmn:incoming>Flow_04uuejh</bpmn:incoming>
<bpmn:outgoing>Flow_1cynsak</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:sequenceFlow id="Flow_0mwwhvb" sourceRef="Activity_00b66gy" targetRef="Activity_0lmpdui" />
<bpmn:sequenceFlow id="Flow_04uuejh" sourceRef="Activity_0lmpdui" targetRef="Activity_1ve0iqu" />
</bpmn:subProcess>
<bpmn:boundaryEvent id="Event_09q0ym0" name="3 days" cancelActivity="false" attachedToRef="Activity_06b32ar">
<bpmn:outgoing>Flow_1v8dszb</bpmn:outgoing>
<bpmn:timerEventDefinition id="TimerEventDefinition_0y2jolb">
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(minutes=3)</bpmn:timeDuration>
</bpmn:timerEventDefinition>
</bpmn:boundaryEvent>
<bpmn:callActivity id="Activity_10p5t0r" name="Call Shared: Currency Format" calledElement="Shared_Currency_Format">
<bpmn:extensionElements>
<spiffworkflow:preScript>curCode = invoice.invoiceCurrency
curAmount = invoice.invoiceAmount
isTest = False</spiffworkflow:preScript>
<spiffworkflow:postScript>invoice.invoiceAmount_str = curAmount_str</spiffworkflow:postScript>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0a9w301</bpmn:incoming>
<bpmn:outgoing>Flow_0h1x7y6</bpmn:outgoing>
</bpmn:callActivity>
<bpmn:sequenceFlow id="Flow_0a9w301" sourceRef="Gateway_1717c0p" targetRef="Activity_10p5t0r" />
<bpmn:sequenceFlow id="Flow_0h1x7y6" sourceRef="Activity_10p5t0r" targetRef="Activity_0cfvsk7" />
<bpmn:parallelGateway id="Gateway_1717c0p">
<bpmn:incoming>Flow_02o270g</bpmn:incoming>
<bpmn:incoming>Flow_0o94g4u</bpmn:incoming>
<bpmn:outgoing>Flow_0a9w301</bpmn:outgoing>
</bpmn:parallelGateway>
<bpmn:sequenceFlow id="Flow_15pzvrr" sourceRef="Activity_0faln91" targetRef="Gateway_1l4tz4i" />
<bpmn:scriptTask id="Activity_0faln91" name="Temp Message Storage">
<bpmn:incoming>Flow_0yvmfqu</bpmn:incoming>
<bpmn:outgoing>Flow_15pzvrr</bpmn:outgoing>
<bpmn:script>invoice.commentsTeamLead = approvalComment
approvalComment = ""</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="Flow_00tndkb" sourceRef="Activity_1b6tead" targetRef="Activity_102t7tk" />
<bpmn:serviceTask id="Activity_0fq1nb4" name="5. Create Invoice in Xero">
<bpmn:extensionElements>
<spiffworkflow:serviceTaskOperator id="xero/CreateInvoice">
<spiffworkflow:parameters>
<spiffworkflow:parameter id="access_token" type="any" value="&#34;secret:xero/OAuth&#34;" />
<spiffworkflow:parameter id="amount" type="str" value="str(invoice_amount)" />
<spiffworkflow:parameter id="contact_email" type="str" value="current_user_extras[&#34;email&#34;]" />
<spiffworkflow:parameter id="contact_name" type="str" value="current_user_extras[&#34;full_name&#34;]" />
<spiffworkflow:parameter id="description" type="str" value="&#34;Test for now&#34;" />
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
<spiffworkflow:preScript />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0h96w9j</bpmn:incoming>
<bpmn:outgoing>Flow_053ca95</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_102t7tk" name="6. Notify CC via Waku&#10;&#34;invoice approved&#34;">
<bpmn:extensionElements>
<spiffworkflow:serviceTaskOperator id="waku/SendMessage" resultVariable="waku_response">
<spiffworkflow:parameters>
<spiffworkflow:parameter id="message" type="str" value="messageApproved" />
<spiffworkflow:parameter id="message_type" type="str" value="&#34;wakuext_sendOneToOneMessage&#34;" />
<spiffworkflow:parameter id="recipient" type="str" value="current_user_extras[&#34;status_key&#34;]" />
</spiffworkflow:parameters>
</spiffworkflow:serviceTaskOperator>
<spiffworkflow:preScript />
</bpmn:extensionElements>
<bpmn:incoming>Flow_00tndkb</bpmn:incoming>
<bpmn:outgoing>Flow_1r0a699</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:endEvent id="Event_16u0f7b" name="Invoice is ready for payment" />
<bpmn:endEvent id="Event_1usbnt0">
<bpmn:incoming>Flow_1r0a699</bpmn:incoming>
</bpmn:endEvent>
<bpmn:scriptTask id="Activity_1b6tead" name="Temp Set Message" scriptFormat="python">
<bpmn:incoming>Flow_053ca95</bpmn:incoming>
<bpmn:outgoing>Flow_00tndkb</bpmn:outgoing>
<bpmn:script>if isMatch:
messageApproved = "Hi " + current_user_extras["first_name"] + ", your invoice has been approved. It will be paid in the next pay run." + "\n++++++++++++++++" + "\nInvoice no: " + invoice.invoiceId + "\nAmount: " + invoice.invoiceAmount_str + "\nDate submitted: " + invoice.invoiceDate + "\nStatus: " + invoice.invoiceStatus + "\nFinance Comments: " + invoice.commentsFinance + "\nProcess Instance Id: " + str(process_instance_id) + "\nLink to Spiff: https://demo.spiffworkflow.org/"
else:
messageApproved = "Hi " + current_user_extras["first_name"] + ", your invoice has been approved. It will be paid in the next pay run." + "\n++++++++++++++++" + "\nInvoice no: " + invoice.invoiceId + "\nAmount: " + invoice.invoiceAmount_str + "\nDate submitted: " + invoice.invoiceDate + "\nStatus: " + invoice.invoiceStatus + "\nTeam Lead Comments: " + invoice.commentsTeamLead + "\nFinance Comments: " + invoice.commentsFinance + "\nProcess Instance Id: " + str(process_instance_id) + "\nLink to Spiff: https://demo.spiffworkflow.org/"</bpmn:script>
</bpmn:scriptTask>
<bpmn:exclusiveGateway id="Gateway_1ytq6m7" name="Approved?" default="Flow_0h96w9j">
<bpmn:incoming>Flow_02v6lr2</bpmn:incoming>
<bpmn:outgoing>Flow_00kky3k</bpmn:outgoing>
<bpmn:outgoing>Flow_0h96w9j</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_02v6lr2" sourceRef="Activity_11stdua" targetRef="Gateway_1ytq6m7" />
<bpmn:scriptTask id="Activity_11stdua" name="Temp Message Set">
<bpmn:incoming>Flow_09wwily</bpmn:incoming>
<bpmn:outgoing>Flow_02v6lr2</bpmn:outgoing>
<bpmn:script>invoice.commentsFinance = approvalComment</bpmn:script>
</bpmn:scriptTask>
</bpmn:process>
<bpmn:process id="Process_cc_invoice_approval_process_v2_c" isExecutable="false" />
<bpmn:process id="Process_cc_invoice_approval_process_v2_d" isExecutable="false" />
<bpmn:process id="Process_cc_invoice_approval_process_v2_e" isExecutable="false" />
<bpmn:correlationProperty id="CorrelationProperty_Submit_Invoice" name="Correlation Property: Submit Invoice">
<bpmn:correlationPropertyRetrievalExpression messageRef="Message_Submit_Invoice">
<bpmn:formalExpression>topica_one</bpmn:formalExpression>
</bpmn:correlationPropertyRetrievalExpression>
</bpmn:correlationProperty>
<bpmn:message id="Message_Submit_Invoice" name="Message: Submit Invoice">
<bpmn:extensionElements>
<spiffworkflow:messageVariable>topica_one</spiffworkflow:messageVariable>
<spiffworkflow:messagePayload>{
"topica_one": "Invoice successfully submitted"
}</spiffworkflow:messagePayload>
</bpmn:extensionElements>
</bpmn:message>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_130jph2">
<bpmndi:BPMNShape id="Participant_1fsb6gv_di" bpmnElement="Participant_1fsb6gv" isHorizontal="true">
<dc:Bounds x="280" y="-70" width="4390" height="220" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Participant_11ab2hx_di" bpmnElement="Participant_11ab2hx" isHorizontal="true">
<dc:Bounds x="280" y="210" width="4390" height="920" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_1b7abal_di" bpmnElement="Lane_1b7abal" isHorizontal="true">
<dc:Bounds x="310" y="800" width="4360" height="212" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_1so23vf_di" bpmnElement="Lane_1so23vf" isHorizontal="true">
<dc:Bounds x="310" y="1012" width="4360" height="118" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_1a0qu8e_di" bpmnElement="Lane_1a0qu8e" isHorizontal="true">
<dc:Bounds x="310" y="210" width="4360" height="590" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1h7igan_di" bpmnElement="Submit_the_invoice">
<dc:Bounds x="985" y="482" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_0wt7ine_di" bpmnElement="Gateway_validation_successful_question_mark" isMarkerVisible="true">
<dc:Bounds x="1345" y="497" width="50" height="50" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1340" y="557" width="60" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0ejn04g_di" bpmnElement="Activity_0fq1nb4">
<dc:Bounds x="4080" y="560" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0q5d0ku_di" bpmnElement="Activity_102t7tk">
<dc:Bounds x="4430" y="560" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_16u0f7b_di" bpmnElement="Event_16u0f7b">
<dc:Bounds x="4562" y="1052" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="4542" y="1096" width="77" height="27" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1usbnt0_di" bpmnElement="Event_1usbnt0">
<dc:Bounds x="4562" y="582" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0pne05v_di" bpmnElement="Activity_1b6tead">
<dc:Bounds x="4250" y="560" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1ytq6m7_di" bpmnElement="Gateway_1ytq6m7" isMarkerVisible="true">
<dc:Bounds x="3795" y="1045" width="50" height="50" />
<bpmndi:BPMNLabel>
<dc:Bounds x="3793" y="1102" width="54" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1j1zo4f_di" bpmnElement="Activity_11stdua">
<dc:Bounds x="3650" y="1030" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0z13hw3_di" bpmnElement="SubProcess_Data_validation_rules">
<dc:Bounds x="1170" y="482" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0qtkhpi_di" bpmnElement="Activity_show_errors">
<dc:Bounds x="1080" y="320" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0svbvjn_di" bpmnElement="Event_invoice_validation_failed">
<dc:Bounds x="1352" y="412" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1262" y="411" width="85" height="27" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_13dc2qg_di" bpmnElement="Activity_1colhao">
<dc:Bounds x="810" y="482" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_16gxu6s_di" bpmnElement="Gateway_16gxu6s" isMarkerVisible="true">
<dc:Bounds x="685" y="495" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_193pz3d_di" bpmnElement="Activity_1u89kok">
<dc:Bounds x="510" y="480" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1r3yh2k_di" bpmnElement="Event_1r3yh2k">
<dc:Bounds x="402" y="502" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_10gbs8m_di" bpmnElement="Gateway_05ov5p5">
<dc:Bounds x="1605" y="497" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_076kb81_di" bpmnElement="Activity_0o1vc0a">
<dc:Bounds x="1750" y="400" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0zssftc_di" bpmnElement="Activity_0p88elm">
<dc:Bounds x="1880" y="560" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0bgyf4i_di" bpmnElement="Activity_104xpp8">
<dc:Bounds x="1670" y="560" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_08ykqm8_di" bpmnElement="Activity_109lq0m">
<dc:Bounds x="1450" y="482" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1lbghql_di" bpmnElement="Gateway_1lbghql" isMarkerVisible="true">
<dc:Bounds x="2734" y="497" width="50" height="50" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2790" y="513" width="37" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0x83ruk_di" bpmnElement="Event_0x83ruk">
<dc:Bounds x="2791" y="394" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2769" y="358" width="81" height="27" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0m3ri6v_di" bpmnElement="Event_0m3ri6v">
<dc:Bounds x="2791" y="582" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2782" y="625" width="57" height="40" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1jg5wtk_di" bpmnElement="Activity_0cfvsk7">
<dc:Bounds x="2320" y="482" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1l4tz4i_di" bpmnElement="Gateway_1l4tz4i" isMarkerVisible="true">
<dc:Bounds x="3535" y="387" width="50" height="50" />
<bpmndi:BPMNLabel>
<dc:Bounds x="3583" y="383" width="54" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0dh2tfy_di" bpmnElement="Activity_1ftzr6x">
<dc:Bounds x="3210" y="898" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0f3d2bp_di" bpmnElement="Event_0f3d2bp">
<dc:Bounds x="3362" y="920" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="3340" y="966" width="86" height="40" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_05nao2p_di" bpmnElement="Activity_06b32ar">
<dc:Bounds x="3050" y="820" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_15y55nw_di" bpmnElement="Event_15y55nw">
<dc:Bounds x="2502" y="504" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2496" y="547" width="48" height="27" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0kcw8l6_di" bpmnElement="Activity_0fsoa08">
<dc:Bounds x="3510" y="260" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0latih8_di" bpmnElement="Activity_1lq96cy">
<dc:Bounds x="3510" y="560" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0xwniza_di" bpmnElement="Activity_0cdgqi0">
<dc:Bounds x="3510" y="1030" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1b58a3z_di" bpmnElement="Event_1b58a3z">
<dc:Bounds x="3642" y="282" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="3636" y="325" width="54" height="40" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="DataObjectReference_0okfp91_di" bpmnElement="DataObjectReference_0okfp91">
<dc:Bounds x="2592" y="315" width="36" height="50" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2571" y="355" width="78" height="40" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="DataObjectReference_12rfrua_di" bpmnElement="DataObjectReference_12rfrua">
<dc:Bounds x="2422" y="365" width="36" height="50" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2434" y="418" width="12" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1rn2mgi_di" bpmnElement="Activity_0gkejaj">
<dc:Bounds x="2579" y="482" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0j807g0_di" bpmnElement="Activity_1ucvkk4">
<dc:Bounds x="3050" y="372" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1xg4kby_di" bpmnElement="Activity_10p5t0r">
<dc:Bounds x="2130" y="482" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_05ztwup_di" bpmnElement="Gateway_1717c0p">
<dc:Bounds x="2004" y="495" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1vzea12_di" bpmnElement="Activity_0faln91">
<dc:Bounds x="3370" y="670" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1n1umf8_di" bpmnElement="Event_09q0ym0">
<dc:Bounds x="3112" y="882" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="3114" y="925" width="33" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_1x4rtop_di" bpmnElement="Flow_1x4rtop">
<di:waypoint x="1395" y="522" />
<di:waypoint x="1450" y="522" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1407" y="498" width="18" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_05ffq52_di" bpmnElement="Flow_05ffq52">
<di:waypoint x="1370" y="497" />
<di:waypoint x="1370" y="448" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1378" y="475" width="15" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1c5u447_di" bpmnElement="Flow_1c5u447">
<di:waypoint x="2679" y="522" />
<di:waypoint x="2734" y="522" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1gohkts_di" bpmnElement="Flow_1gohkts">
<di:waypoint x="2759" y="547" />
<di:waypoint x="2759" y="600" />
<di:waypoint x="2791" y="600" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2766" y="570" width="18" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_18xvx8w_di" bpmnElement="Flow_18xvx8w">
<di:waypoint x="3560" y="437" />
<di:waypoint x="3560" y="560" />
<bpmndi:BPMNLabel>
<dc:Bounds x="3567" y="497" width="18" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1ex5hfx_di" bpmnElement="Flow_1ex5hfx">
<di:waypoint x="2538" y="522" />
<di:waypoint x="2579" y="522" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_16bw9hx_di" bpmnElement="Flow_16bw9hx">
<di:waypoint x="2759" y="497" />
<di:waypoint x="2759" y="412" />
<di:waypoint x="2791" y="412" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2767" y="454" width="15" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1wturr2_di" bpmnElement="Flow_1wturr2">
<di:waypoint x="3310" y="938" />
<di:waypoint x="3362" y="938" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0bfs2xe_di" bpmnElement="Flow_0bfs2xe">
<di:waypoint x="3560" y="387" />
<di:waypoint x="3560" y="340" />
<bpmndi:BPMNLabel>
<dc:Bounds x="3568" y="353" width="15" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0c0c9mw_di" bpmnElement="Flow_0c0c9mw">
<di:waypoint x="3610" y="300" />
<di:waypoint x="3642" y="300" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_13ng1f4_di" bpmnElement="Flow_13ng1f4">
<di:waypoint x="1370" y="412" />
<di:waypoint x="1370" y="360" />
<di:waypoint x="1180" y="360" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_18cic3h_di" bpmnElement="Flow_18cic3h">
<di:waypoint x="1080" y="360" />
<di:waypoint x="710" y="360" />
<di:waypoint x="710" y="495" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_02moyg7_di" bpmnElement="Flow_02moyg7">
<di:waypoint x="1085" y="522" />
<di:waypoint x="1170" y="522" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1ck27i7_di" bpmnElement="Flow_1ck27i7">
<di:waypoint x="1270" y="522" />
<di:waypoint x="1345" y="522" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1v8dszb_di" bpmnElement="Flow_1v8dszb">
<di:waypoint x="3130" y="918" />
<di:waypoint x="3130" y="938" />
<di:waypoint x="3210" y="938" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0yvmfqu_di" bpmnElement="Flow_0yvmfqu">
<di:waypoint x="3150" y="860" />
<di:waypoint x="3420" y="860" />
<di:waypoint x="3420" y="750" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_12cqm3u_di" bpmnElement="Flow_12cqm3u">
<di:waypoint x="1630" y="547" />
<di:waypoint x="1630" y="600" />
<di:waypoint x="1670" y="600" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0hev3yn_di" bpmnElement="Flow_0hev3yn">
<di:waypoint x="1630" y="497" />
<di:waypoint x="1630" y="440" />
<di:waypoint x="1750" y="440" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_02o270g_di" bpmnElement="Flow_02o270g">
<di:waypoint x="1850" y="440" />
<di:waypoint x="2029" y="440" />
<di:waypoint x="2029" y="495" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0o94g4u_di" bpmnElement="Flow_0o94g4u">
<di:waypoint x="1980" y="600" />
<di:waypoint x="2029" y="600" />
<di:waypoint x="2029" y="545" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1vxagrf_di" bpmnElement="Flow_1vxagrf">
<di:waypoint x="438" y="520" />
<di:waypoint x="510" y="520" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0bipj9q_di" bpmnElement="Flow_0bipj9q">
<di:waypoint x="610" y="520" />
<di:waypoint x="685" y="520" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1n239ad_di" bpmnElement="Flow_1n239ad">
<di:waypoint x="2420" y="522" />
<di:waypoint x="2502" y="522" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_04ccp12_di" bpmnElement="Flow_04ccp12">
<di:waypoint x="2827" y="600" />
<di:waypoint x="3510" y="600" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1r0a699_di" bpmnElement="Flow_1r0a699">
<di:waypoint x="4530" y="600" />
<di:waypoint x="4562" y="600" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0kngdw4_di" bpmnElement="Flow_0kngdw4">
<di:waypoint x="2827" y="412" />
<di:waypoint x="3050" y="412" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0lfqk0y_di" bpmnElement="Flow_0lfqk0y">
<di:waypoint x="3100" y="452" />
<di:waypoint x="3100" y="820" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1ds4s8o_di" bpmnElement="Flow_1ds4s8o">
<di:waypoint x="3560" y="640" />
<di:waypoint x="3560" y="1030" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_09wwily_di" bpmnElement="Flow_09wwily">
<di:waypoint x="3610" y="1070" />
<di:waypoint x="3650" y="1070" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_00kky3k_di" bpmnElement="Flow_00kky3k">
<di:waypoint x="3820" y="1045" />
<di:waypoint x="3820" y="412" />
<di:waypoint x="3585" y="412" />
<bpmndi:BPMNLabel>
<dc:Bounds x="3828" y="913" width="15" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0h96w9j_di" bpmnElement="Flow_0h96w9j">
<di:waypoint x="3845" y="1070" />
<di:waypoint x="3960" y="1070" />
<di:waypoint x="3960" y="600" />
<di:waypoint x="4080" y="600" />
<bpmndi:BPMNLabel>
<dc:Bounds x="3888" y="1053" width="18" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_053ca95_di" bpmnElement="Flow_053ca95">
<di:waypoint x="4180" y="600" />
<di:waypoint x="4250" y="600" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0p6vvu0_di" bpmnElement="Flow_0p6vvu0">
<di:waypoint x="1770" y="600" />
<di:waypoint x="1880" y="600" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0v2hmuf_di" bpmnElement="Flow_0v2hmuf">
<di:waypoint x="735" y="520" />
<di:waypoint x="810" y="520" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_00p30u2_di" bpmnElement="Flow_00p30u2">
<di:waypoint x="910" y="522" />
<di:waypoint x="985" y="522" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0u5z1vc_di" bpmnElement="Flow_0u5z1vc">
<di:waypoint x="1550" y="522" />
<di:waypoint x="1605" y="522" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0a9w301_di" bpmnElement="Flow_0a9w301">
<di:waypoint x="2054" y="520" />
<di:waypoint x="2130" y="520" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0h1x7y6_di" bpmnElement="Flow_0h1x7y6">
<di:waypoint x="2230" y="522" />
<di:waypoint x="2320" y="522" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_15pzvrr_di" bpmnElement="Flow_15pzvrr">
<di:waypoint x="3420" y="670" />
<di:waypoint x="3420" y="412" />
<di:waypoint x="3535" y="412" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_00tndkb_di" bpmnElement="Flow_00tndkb">
<di:waypoint x="4350" y="600" />
<di:waypoint x="4430" y="600" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_02v6lr2_di" bpmnElement="Flow_02v6lr2">
<di:waypoint x="3750" y="1070" />
<di:waypoint x="3795" y="1070" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Participant_0a8arrz_di" bpmnElement="Participant_0a8arrz" isHorizontal="true">
<dc:Bounds x="1480" y="1180" width="370" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Participant_1qabwrg_di" bpmnElement="Participant_1qabwrg" isHorizontal="true">
<dc:Bounds x="1890" y="1180" width="509" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Participant_0b27sri_di" bpmnElement="Participant_0b27sri" isHorizontal="true">
<dc:Bounds x="3405" y="1160" width="747" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_1uaw1w7_di" bpmnElement="TextAnnotation_1uaw1w7">
<dc:Bounds x="640" y="-170" width="580" height="30" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="DataOutputAssociation_1sosfhs_di" bpmnElement="DataOutputAssociation_1sosfhs">
<di:waypoint x="2391" y="482" />
<di:waypoint x="2427" y="415" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_1eygti7_di" bpmnElement="Association_1eygti7">
<di:waypoint x="906" y="-70" />
<di:waypoint x="973" y="-140" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0ppupld_di" bpmnElement="Flow_0ppupld">
<di:waypoint x="1800" y="480" />
<di:waypoint x="1800" y="1180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0yfnc92_di" bpmnElement="Flow_0yfnc92">
<di:waypoint x="1930" y="640" />
<di:waypoint x="1930" y="1180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0jciftq_di" bpmnElement="Flow_0jciftq">
<di:waypoint x="2360" y="482" />
<di:waypoint x="2360" y="150" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0p0bc5u_di" bpmnElement="Flow_0p0bc5u">
<di:waypoint x="4130" y="640" />
<di:waypoint x="4130" y="1160" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0n9qxyw_di" bpmnElement="Flow_0n9qxyw">
<di:waypoint x="1010" y="482" />
<di:waypoint x="1010" y="150" />
<bpmndi:BPMNLabel>
<dc:Bounds x="660" y="312" width="73" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1getkzr_di" bpmnElement="Flow_1getkzr">
<di:waypoint x="3560" y="260" />
<di:waypoint x="3560" y="150" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0ozze4c_di" bpmnElement="Flow_0ozze4c">
<di:waypoint x="3260" y="898" />
<di:waypoint x="3260" y="150" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1dgkwzr_di" bpmnElement="Flow_1dgkwzr">
<di:waypoint x="4480" y="560" />
<di:waypoint x="4480" y="150" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
<bpmndi:BPMNDiagram>
<bpmndi:BPMNPlane bpmnElement="Activity_0gkejaj">
<bpmndi:BPMNShape id="Event_0w5o6hr_di" bpmnElement="Event_0w5o6hr">
<dc:Bounds x="172" y="212" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_17f2ctd_di" bpmnElement="Activity_108oe6k">
<dc:Bounds x="270" y="190" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_08gpeul_di" bpmnElement="Activity_1yhwhps">
<dc:Bounds x="610" y="190" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1vplgf6_di" bpmnElement="Gateway_1vplgf6" isMarkerVisible="true">
<dc:Bounds x="785" y="205" width="50" height="50" />
<bpmndi:BPMNLabel>
<dc:Bounds x="766" y="150" width="88" height="40" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1f0247l_di" bpmnElement="Event_1f0247l">
<dc:Bounds x="912" y="212" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="896" y="255" width="69" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0fuvvnn_di" bpmnElement="Activity_1y0uwth">
<dc:Bounds x="860" y="350" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1kaun82_di" bpmnElement="Activity_081j8i8">
<dc:Bounds x="1030" y="350" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_01zi4az_di" bpmnElement="Gateway_01zi4az" isMarkerVisible="true">
<dc:Bounds x="1205" y="365" width="50" height="50" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1203" y="343" width="53" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_13uw548_di" bpmnElement="Event_13uw548">
<dc:Bounds x="1332" y="372" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_12r2wsg_di" bpmnElement="Activity_0ayubx4">
<dc:Bounds x="1300" y="450" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_04023ne_di" bpmnElement="Event_04023ne">
<dc:Bounds x="1452" y="472" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0fzlb0w_di" bpmnElement="Activity_02go8ec">
<dc:Bounds x="230" y="350" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1f5dpwy_di" bpmnElement="Activity_0b87ocm">
<dc:Bounds x="520" y="350" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0cmri19_di" bpmnElement="Event_0cmri19">
<dc:Bounds x="642" y="62" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_150gd1q_di" bpmnElement="Activity_0j1a5yh">
<dc:Bounds x="370" y="350" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_08ftr1r_di" bpmnElement="Flow_08ftr1r">
<di:waypoint x="835" y="230" />
<di:waypoint x="912" y="230" />
<bpmndi:BPMNLabel>
<dc:Bounds x="865" y="212" width="17" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0lf2mw4_di" bpmnElement="Flow_0lf2mw4">
<di:waypoint x="810" y="255" />
<di:waypoint x="810" y="390" />
<di:waypoint x="860" y="390" />
<bpmndi:BPMNLabel>
<dc:Bounds x="819" y="320" width="13" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_12mq72f_di" bpmnElement="Flow_12mq72f">
<di:waypoint x="960" y="390" />
<di:waypoint x="1030" y="390" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_02ikttr_di" bpmnElement="Flow_02ikttr">
<di:waypoint x="1130" y="390" />
<di:waypoint x="1205" y="390" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1oyagpu_di" bpmnElement="Flow_1oyagpu">
<di:waypoint x="1255" y="390" />
<di:waypoint x="1332" y="390" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1285" y="372" width="17" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_115g94n_di" bpmnElement="Flow_115g94n">
<di:waypoint x="1230" y="415" />
<di:waypoint x="1230" y="490" />
<di:waypoint x="1300" y="490" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1239" y="450" width="13" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1iz4xwz_di" bpmnElement="Flow_1iz4xwz">
<di:waypoint x="1400" y="490" />
<di:waypoint x="1452" y="490" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1sc1v4y_di" bpmnElement="Flow_1sc1v4y">
<di:waypoint x="190" y="248" />
<di:waypoint x="190" y="390" />
<di:waypoint x="230" y="390" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1m8uxeg_di" bpmnElement="Flow_1m8uxeg">
<di:waypoint x="620" y="390" />
<di:waypoint x="660" y="390" />
<di:waypoint x="660" y="270" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_04do8x7_di" bpmnElement="Flow_04do8x7">
<di:waypoint x="660" y="190" />
<di:waypoint x="660" y="98" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1nlal9u_di" bpmnElement="Flow_1nlal9u">
<di:waypoint x="330" y="390" />
<di:waypoint x="370" y="390" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_01eh2ws_di" bpmnElement="Flow_01eh2ws">
<di:waypoint x="470" y="390" />
<di:waypoint x="520" y="390" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
<bpmndi:BPMNDiagram>
<bpmndi:BPMNPlane bpmnElement="Activity_1ucvkk4">
<bpmndi:BPMNShape id="Gateway_1l74xlc_di" bpmnElement="Gateway_1l74xlc" isMarkerVisible="true">
<dc:Bounds x="245" y="215" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_01bnz9l_di" bpmnElement="Activity_1w6kg4p">
<dc:Bounds x="360" y="200" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0respgl_di" bpmnElement="Activity_0respgl">
<dc:Bounds x="490" y="90" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1vl3ipe_di" bpmnElement="Gateway_1vl3ipe" isMarkerVisible="true">
<dc:Bounds x="625" y="215" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_00px1yx_di" bpmnElement="Event_00px1yx">
<dc:Bounds x="142" y="402" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1nkaxn4_di" bpmnElement="Event_1nkaxn4">
<dc:Bounds x="762" y="402" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1gex892_di" bpmnElement="Activity_00b66gy">
<dc:Bounds x="250" y="380" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0z9h5bp_di" bpmnElement="Activity_0lmpdui">
<dc:Bounds x="430" y="380" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0s32al0_di" bpmnElement="Activity_1ve0iqu">
<dc:Bounds x="610" y="380" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_1am9jcz_di" bpmnElement="Flow_1am9jcz">
<di:waypoint x="295" y="240" />
<di:waypoint x="360" y="240" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0kx6gsl_di" bpmnElement="Flow_0kx6gsl">
<di:waypoint x="270" y="215" />
<di:waypoint x="270" y="130" />
<di:waypoint x="490" y="130" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0rbij5a_di" bpmnElement="Flow_0rbij5a">
<di:waypoint x="460" y="240" />
<di:waypoint x="625" y="240" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0lyg5zb_di" bpmnElement="Flow_0lyg5zb">
<di:waypoint x="590" y="130" />
<di:waypoint x="650" y="130" />
<di:waypoint x="650" y="215" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0idsdf0_di" bpmnElement="Flow_0idsdf0">
<di:waypoint x="178" y="420" />
<di:waypoint x="250" y="420" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1cynsak_di" bpmnElement="Flow_1cynsak">
<di:waypoint x="710" y="420" />
<di:waypoint x="762" y="420" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0mwwhvb_di" bpmnElement="Flow_0mwwhvb">
<di:waypoint x="350" y="420" />
<di:waypoint x="430" y="420" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_04uuejh_di" bpmnElement="Flow_04uuejh">
<di:waypoint x="530" y="420" />
<di:waypoint x="610" y="420" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
<bpmndi:BPMNDiagram id="BPMNDiagram_0e5tdrz">
<bpmndi:BPMNPlane id="BPMNPlane_04v9fws" bpmnElement="SubProcess_Data_validation_rules">
<bpmndi:BPMNShape id="Event_1qkuk5g_di" bpmnElement="Event_1qkuk5g">
<dc:Bounds x="232" y="192" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_05nw8eq_di" bpmnElement="Activity_Check_Due_Date">
<dc:Bounds x="840" y="170" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_015l7j8_di" bpmnElement="Event_015l7j8">
<dc:Bounds x="1182" y="192" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0ynnab7_di" bpmnElement="Activity_check_contributor_name">
<dc:Bounds x="340" y="170" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_07pdvk2_di" bpmnElement="Activity_check_invoice_amount">
<dc:Bounds x="510" y="170" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1l7rl3o_di" bpmnElement="Activity_check_validation_rules">
<dc:Bounds x="1020" y="170" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0fc4t79_di" bpmnElement="Activity_call_local_date_and_time">
<dc:Bounds x="670" y="170" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_1avkxpe_di" bpmnElement="Flow_1avkxpe">
<di:waypoint x="268" y="210" />
<di:waypoint x="340" y="210" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0tzjowk_di" bpmnElement="Flow_0tzjowk">
<di:waypoint x="1120" y="210" />
<di:waypoint x="1182" y="210" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_18i6dlo_di" bpmnElement="Flow_18i6dlo">
<di:waypoint x="770" y="210" />
<di:waypoint x="840" y="210" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1d7sgm2_di" bpmnElement="Flow_1d7sgm2">
<di:waypoint x="940" y="210" />
<di:waypoint x="1020" y="210" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0mvmd06_di" bpmnElement="Flow_0mvmd06">
<di:waypoint x="440" y="210" />
<di:waypoint x="510" y="210" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0wp2mcf_di" bpmnElement="Flow_0wp2mcf">
<di:waypoint x="610" y="210" />
<di:waypoint x="670" y="210" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>