dodil/erp-method
modules/purchasing/signoff/purchasing/purchasing_bill.bpmn
<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dodil="https://git.dodil.io/dodil/erp-platform/bpmn/1" id="Definitions_purchasing_v8" name="Purchasing & suppliers processes" targetNamespace="https://git.dodil.io/dodil/erp-platform/processes" exporter="erp-platform erp-compose bpmn" exporterVersion="1">
<bpmn:collaboration id="Collaboration_purchasing_v8">
<bpmn:documentation>Purchasing & suppliers: one pool per entity lifecycle, generated from module.yaml.</bpmn:documentation>
<bpmn:participant id="Participant_purchasing_bill" name="Bill" processRef="Process_purchasing_bill_v8" />
</bpmn:collaboration>
<bpmn:process id="Process_purchasing_bill_v8" name="Bill" isExecutable="false">
<bpmn:documentation>Lifecycle of the bill, generated from module.yaml by erp-compose bpmn; change the workflow there, not this file. States: draft, recorded, approved, disputed, cancelled. Note: PAID is derived, like invoicing's settlement: outstanding = total - SUM(allocations of payments and credits). The match is derived from order, receipt and bill rows plus acceptance rows. An approved bill is never edited; a correction is a supplier credit (kind credit, PUR-27). A migrated bill (source_kind odoo) is approved history: post_bill and the match never run on it; allocations do.</bpmn:documentation>
<bpmn:laneSet id="LaneSet_bill">
<bpmn:lane id="Lane_bill_system" name="The system">
<bpmn:flowNodeRef>Start_bill</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_ai_read_bill</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_record_intercompany_bill</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_ai_check_bill</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_match_bill</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_post_bill</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_hand_asset_to_register</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_hand_cost_difference</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_bill_none__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_ai_check_bill__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_ai_check_bill__if_end</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_post_bill__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_post_bill__if_end</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_hand_asset_to_register__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_hand_asset_to_register__if_end</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_hand_cost_difference__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_hand_cost_difference__if_end</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_bill_payables_clerk" name="accounts payable">
<bpmn:flowNodeRef>Task_accept_ai_fields</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_record_bill</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_dispute_bill</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_resolve_bill_dispute</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_settle_ers</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_bill_recorded__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_bill_disputed__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_bill_approved__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>End_bill_approved</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_bill_payables_approver" name="whoever releases money (finance manager)">
<bpmn:flowNodeRef>Task_accept_variance</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_approve_bill</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_cancel_bill</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_accept_variance__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_accept_variance__if_end</bpmn:flowNodeRef>
<bpmn:flowNodeRef>End_bill_cancelled</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="Start_bill" name="Bill needed">
<bpmn:outgoing>Flow_Start_bill__Gateway_bill_none__if</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:serviceTask id="Task_ai_read_bill" name="AI reads the supplier's PDF into a draft (suggest)" dodil:step="ai_read_bill" implementation="##unspecified">
<bpmn:documentation>By: The system. From none to draft. When: a PDF was received and the step is on. Effect: each field a suggestion with its evidence, in pur_ai_finding.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_bill_none__if__Task_ai_read_bill</bpmn:incoming>
<bpmn:outgoing>Flow_Task_ai_read_bill__Task_accept_ai_fields</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:userTask id="Task_accept_ai_fields" name="Accept or correct each read field" dodil:step="accept_ai_fields">
<bpmn:documentation>By: accounts payable. From draft to draft. Effect: each decision recorded; nothing is recorded without the clerk.</bpmn:documentation>
<bpmn:incoming>Flow_Task_ai_read_bill__Task_accept_ai_fields</bpmn:incoming>
<bpmn:outgoing>Flow_Task_accept_ai_fields__Task_record_bill</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_record_bill" name="Record the supplier's invoice or credit" dodil:step="record_bill">
<bpmn:documentation>By: accounts payable. From none / draft to recorded. When: supplier, their number and date, lines against order lines, consignment withdrawals or delivery-cost conditions (or none for a two-way service bill); each line's cis_part for a CIS subcontractor (v4). Effect: keyed (bp_id, supplier_invoice_no, invoice_date); tax asked of the tax module; the match computed.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_bill_none__if__Task_record_bill</bpmn:incoming>
<bpmn:incoming>Flow_Task_accept_ai_fields__Task_record_bill</bpmn:incoming>
<bpmn:outgoing>Flow_Task_record_bill__Gateway_ai_check_bill__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:serviceTask id="Task_record_intercompany_bill" name="Record the bill another of our companies sent (PUR-64)" dodil:step="record_intercompany_bill" implementation="##unspecified">
<bpmn:documentation>By: The system. From none to recorded. When: the sending company and the receiving company are both companies of these books; bill_id ic:<invoice_id> unique (a repeat answers the same bill). Effect: a bill of the receiving company with ar's lines and frozen tax mapped to purchase codes, ic_reference on every line; matched two-way to those lines.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_bill_none__if__Task_record_intercompany_bill</bpmn:incoming>
<bpmn:outgoing>Flow_Task_record_intercompany_bill__Gateway_ai_check_bill__if</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Task_ai_check_bill" name="AI checks the bill for duplicates and anomalies (suggest)" dodil:step="ai_check_bill" implementation="##unspecified">
<bpmn:documentation>By: The system. From recorded to recorded. When: the step is on. Effect: a likely duplicate (same amount, near date, other number), an unusual amount or a changed bank listed for the clerk.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_ai_check_bill__if__Task_ai_check_bill</bpmn:incoming>
<bpmn:outgoing>Flow_Task_ai_check_bill__Gateway_ai_check_bill__if_end</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Task_match_bill" name="Match against the order and the receipts" dodil:step="match_bill" implementation="##unspecified">
<bpmn:documentation>By: The system. From recorded to recorded. Effect: per line: price (per pricing quantity of the line's pricing unit), quantity (in the pricing unit, through the line's fixed conversion, v3) and tax, each pass or fail with the difference as an exact fraction and the tolerance in force on the invoice date, named by its key (PP, DQ, AN, AP, ST, KW, LA, LD) for the supplier's tolerance group; a total difference within BD accepted by the system as a small difference (v4); derived, never stored.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_ai_check_bill__if_end__Task_match_bill</bpmn:incoming>
<bpmn:outgoing>Flow_Task_match_bill__Gateway_accept_variance__if</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:userTask id="Task_accept_variance" name="Accept a match difference with a reason" dodil:step="accept_variance" dodil:approval="true">
<bpmn:documentation>By: whoever releases money (finance manager). From recorded to recorded. When: the line fails; the approver is not the clerk who recorded it (email AND sub). Requires: reason. Effect: an acceptance row (bill, line, kind, difference, who, why). An approval.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_accept_variance__if__Task_accept_variance</bpmn:incoming>
<bpmn:outgoing>Flow_Task_accept_variance__Gateway_accept_variance__if_end</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_dispute_bill" name="Dispute the bill" dodil:step="dispute_bill">
<bpmn:documentation>By: accounts payable. From recorded / approved to disputed. Requires: reason.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_bill_recorded__if__Task_dispute_bill</bpmn:incoming>
<bpmn:incoming>Flow_Gateway_bill_approved__if__Task_dispute_bill</bpmn:incoming>
<bpmn:outgoing>Flow_Task_dispute_bill__Gateway_bill_disputed__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_resolve_bill_dispute" name="Resolve the dispute" dodil:step="resolve_bill_dispute">
<bpmn:documentation>By: accounts payable. From disputed to recorded. Requires: outcome. Effect: back to recorded; an approved bill disputed and resolved returns to approved through approve_bill again (a no-op re-check).</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_bill_disputed__if__Task_resolve_bill_dispute</bpmn:incoming>
<bpmn:outgoing>Flow_Task_resolve_bill_dispute__Gateway_ai_check_bill__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_approve_bill" name="Approve the bill" dodil:step="approve_bill" dodil:approval="true">
<bpmn:documentation>By: whoever releases money (finance manager). From recorded to approved. When: every line matches or its difference is accepted; tax contents pass; the period is open; the billed quantity still fits under what was received; v8: every cost centre on the bill's lines is open in gl on the invoice date (GET /cost-centres/{cost_centre}). Effect: bill_no claimed; tax frozen; billed quantity claimed per order line; posted to the ledger. An approval.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_bill_recorded__if__Task_approve_bill</bpmn:incoming>
<bpmn:outgoing>Flow_Task_approve_bill__Gateway_post_bill__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:serviceTask id="Task_post_bill" name="Post to the ledger" dodil:step="post_bill" implementation="##unspecified">
<bpmn:documentation>By: The system. From approved to approved. When: the ledger is installed. Effect: a balanced journal keyed on the bill and event approve; an asset-assigned line debits asset_clearing, a consignment line consignment_clearing, a delivery-cost line delivery_cost_clearing (v4).</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_post_bill__if__Task_post_bill</bpmn:incoming>
<bpmn:outgoing>Flow_Task_post_bill__Gateway_post_bill__if_end</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Task_hand_asset_to_register" name="Hand asset lines to the asset register" dodil:step="hand_asset_to_register" implementation="##unspecified">
<bpmn:documentation>By: The system. From approved to approved. When: fixed-assets is installed and a line is assigned to an asset. Effect: fixed-assets' POST /acquisitions per line keyed pur:<bill_id>:<line_no>; the transaction id kept on the line; a refusal listed and retried (v4, PUR-56).</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_hand_asset_to_register__if__Task_hand_asset_to_register</bpmn:incoming>
<bpmn:outgoing>Flow_Task_hand_asset_to_register__Gateway_hand_asset_to_register__if_end</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Task_hand_cost_difference" name="Hand a delivery-cost difference to inventory" dodil:step="hand_cost_difference" implementation="##unspecified">
<bpmn:documentation>By: The system. From approved to approved. When: a delivery-cost line differs from its planned cost and inventory is installed. Effect: inventory's POST /valuation-adjustments keyed pur:<bill_id>:<line_no> (v4, PUR-63).</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_hand_cost_difference__if__Task_hand_cost_difference</bpmn:incoming>
<bpmn:outgoing>Flow_Task_hand_cost_difference__Gateway_hand_cost_difference__if_end</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:userTask id="Task_settle_ers" name="Settle receipts by self-billing" dodil:step="settle_ers">
<bpmn:documentation>By: accounts payable. From none to approved. When: an active self-billing agreement on each receipt's date; order lines flagged ers; receipts not yet billed. Effect: a self-billed invoice per supplier, currency and tax point, numbered from our SB series; tax computed (self_billed true) and frozen; recorded and approved by the run; posted; sent to the supplier (v4, PUR-51).</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_bill_none__if__Task_settle_ers</bpmn:incoming>
<bpmn:outgoing>Flow_Task_settle_ers__Gateway_post_bill__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_cancel_bill" name="Cancel the bill" dodil:step="cancel_bill">
<bpmn:documentation>By: whoever releases money (finance manager). From recorded / disputed to cancelled. When: never approved, nothing allocated. Requires: reason.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_bill_recorded__if__Task_cancel_bill</bpmn:incoming>
<bpmn:incoming>Flow_Gateway_bill_disputed__if__Task_cancel_bill</bpmn:incoming>
<bpmn:outgoing>Flow_Task_cancel_bill__End_bill_cancelled</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_bill_none__if" name="New bill?">
<bpmn:incoming>Flow_Start_bill__Gateway_bill_none__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_bill_none__if__Task_ai_read_bill</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_bill_none__if__Task_record_bill</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_bill_none__if__Task_record_intercompany_bill</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_bill_none__if__Task_settle_ers</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_ai_check_bill__if" name="the step is on?">
<bpmn:incoming>Flow_Task_record_bill__Gateway_ai_check_bill__if</bpmn:incoming>
<bpmn:incoming>Flow_Task_record_intercompany_bill__Gateway_ai_check_bill__if</bpmn:incoming>
<bpmn:incoming>Flow_Task_resolve_bill_dispute__Gateway_ai_check_bill__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_ai_check_bill__if__Task_ai_check_bill</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_ai_check_bill__if__Gateway_ai_check_bill__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_ai_check_bill__if_end">
<bpmn:incoming>Flow_Gateway_ai_check_bill__if__Gateway_ai_check_bill__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_ai_check_bill__Gateway_ai_check_bill__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_ai_check_bill__if_end__Task_match_bill</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_accept_variance__if" name="the line fails; the approver is not the clerk who recorded it (email AND sub)?">
<bpmn:incoming>Flow_Task_match_bill__Gateway_accept_variance__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_accept_variance__if__Task_accept_variance</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_accept_variance__if__Gateway_accept_variance__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_accept_variance__if_end">
<bpmn:incoming>Flow_Gateway_accept_variance__if__Gateway_accept_variance__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_accept_variance__Gateway_accept_variance__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_accept_variance__if_end__Gateway_bill_recorded__if</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_bill_recorded__if" name="Bill recorded: what next?">
<bpmn:incoming>Flow_Gateway_accept_variance__if_end__Gateway_bill_recorded__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_bill_recorded__if__Task_dispute_bill</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_bill_recorded__if__Task_approve_bill</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_bill_recorded__if__Task_cancel_bill</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_bill_disputed__if" name="Bill disputed: what next?">
<bpmn:incoming>Flow_Task_dispute_bill__Gateway_bill_disputed__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_bill_disputed__if__Task_resolve_bill_dispute</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_bill_disputed__if__Task_cancel_bill</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_post_bill__if" name="the ledger is installed?">
<bpmn:incoming>Flow_Task_approve_bill__Gateway_post_bill__if</bpmn:incoming>
<bpmn:incoming>Flow_Task_settle_ers__Gateway_post_bill__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_post_bill__if__Task_post_bill</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_post_bill__if__Gateway_post_bill__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_post_bill__if_end">
<bpmn:incoming>Flow_Gateway_post_bill__if__Gateway_post_bill__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_post_bill__Gateway_post_bill__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_post_bill__if_end__Gateway_hand_asset_to_register__if</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_hand_asset_to_register__if" name="fixed-assets is installed and a line is assigned to an asset?">
<bpmn:incoming>Flow_Gateway_post_bill__if_end__Gateway_hand_asset_to_register__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_hand_asset_to_register__if__Task_hand_asset_to_register</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_hand_asset_to_register__if__Gateway_hand_asset_to_register__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_hand_asset_to_register__if_end">
<bpmn:incoming>Flow_Gateway_hand_asset_to_register__if__Gateway_hand_asset_to_register__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_hand_asset_to_register__Gateway_hand_asset_to_register__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_hand_asset_to_register__if_end__Gateway_hand_cost_difference__if</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_hand_cost_difference__if" name="a delivery-cost line differs from its planned cost and inventory is installed?">
<bpmn:incoming>Flow_Gateway_hand_asset_to_register__if_end__Gateway_hand_cost_difference__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_hand_cost_difference__if__Task_hand_cost_difference</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_hand_cost_difference__if__Gateway_hand_cost_difference__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_hand_cost_difference__if_end">
<bpmn:incoming>Flow_Gateway_hand_cost_difference__if__Gateway_hand_cost_difference__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_hand_cost_difference__Gateway_hand_cost_difference__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_hand_cost_difference__if_end__Gateway_bill_approved__if</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_bill_approved__if" name="Bill approved: done, or go on?">
<bpmn:incoming>Flow_Gateway_hand_cost_difference__if_end__Gateway_bill_approved__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_bill_approved__if__Task_dispute_bill</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_bill_approved__if__End_bill_approved</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:endEvent id="End_bill_approved" name="Bill approved">
<bpmn:incoming>Flow_Gateway_bill_approved__if__End_bill_approved</bpmn:incoming>
</bpmn:endEvent>
<bpmn:endEvent id="End_bill_cancelled" name="Bill cancelled">
<bpmn:incoming>Flow_Task_cancel_bill__End_bill_cancelled</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_Gateway_bill_none__if__Task_ai_read_bill" sourceRef="Gateway_bill_none__if" targetRef="Task_ai_read_bill" />
<bpmn:sequenceFlow id="Flow_Gateway_bill_none__if__Task_record_bill" sourceRef="Gateway_bill_none__if" targetRef="Task_record_bill" />
<bpmn:sequenceFlow id="Flow_Gateway_bill_none__if__Task_record_intercompany_bill" sourceRef="Gateway_bill_none__if" targetRef="Task_record_intercompany_bill" />
<bpmn:sequenceFlow id="Flow_Gateway_bill_none__if__Task_settle_ers" sourceRef="Gateway_bill_none__if" targetRef="Task_settle_ers" />
<bpmn:sequenceFlow id="Flow_Start_bill__Gateway_bill_none__if" sourceRef="Start_bill" targetRef="Gateway_bill_none__if" />
<bpmn:sequenceFlow id="Flow_Task_accept_ai_fields__Task_record_bill" sourceRef="Task_accept_ai_fields" targetRef="Task_record_bill" />
<bpmn:sequenceFlow id="Flow_Task_ai_read_bill__Task_accept_ai_fields" sourceRef="Task_ai_read_bill" targetRef="Task_accept_ai_fields" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_check_bill__if__Task_ai_check_bill" name="the step is on" sourceRef="Gateway_ai_check_bill__if" targetRef="Task_ai_check_bill" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_check_bill__if__Gateway_ai_check_bill__if_end" name="otherwise" sourceRef="Gateway_ai_check_bill__if" targetRef="Gateway_ai_check_bill__if_end" />
<bpmn:sequenceFlow id="Flow_Task_ai_check_bill__Gateway_ai_check_bill__if_end" sourceRef="Task_ai_check_bill" targetRef="Gateway_ai_check_bill__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_accept_variance__if__Task_accept_variance" name="the line fails; the approver is not the clerk who recorded it (email AND sub)" sourceRef="Gateway_accept_variance__if" targetRef="Task_accept_variance" />
<bpmn:sequenceFlow id="Flow_Gateway_accept_variance__if__Gateway_accept_variance__if_end" name="otherwise" sourceRef="Gateway_accept_variance__if" targetRef="Gateway_accept_variance__if_end" />
<bpmn:sequenceFlow id="Flow_Task_accept_variance__Gateway_accept_variance__if_end" sourceRef="Task_accept_variance" targetRef="Gateway_accept_variance__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_check_bill__if_end__Task_match_bill" sourceRef="Gateway_ai_check_bill__if_end" targetRef="Task_match_bill" />
<bpmn:sequenceFlow id="Flow_Task_match_bill__Gateway_accept_variance__if" sourceRef="Task_match_bill" targetRef="Gateway_accept_variance__if" />
<bpmn:sequenceFlow id="Flow_Gateway_bill_recorded__if__Task_dispute_bill" sourceRef="Gateway_bill_recorded__if" targetRef="Task_dispute_bill" />
<bpmn:sequenceFlow id="Flow_Gateway_bill_recorded__if__Task_approve_bill" sourceRef="Gateway_bill_recorded__if" targetRef="Task_approve_bill" />
<bpmn:sequenceFlow id="Flow_Gateway_bill_recorded__if__Task_cancel_bill" sourceRef="Gateway_bill_recorded__if" targetRef="Task_cancel_bill" />
<bpmn:sequenceFlow id="Flow_Gateway_accept_variance__if_end__Gateway_bill_recorded__if" sourceRef="Gateway_accept_variance__if_end" targetRef="Gateway_bill_recorded__if" />
<bpmn:sequenceFlow id="Flow_Task_record_bill__Gateway_ai_check_bill__if" sourceRef="Task_record_bill" targetRef="Gateway_ai_check_bill__if" />
<bpmn:sequenceFlow id="Flow_Task_record_intercompany_bill__Gateway_ai_check_bill__if" sourceRef="Task_record_intercompany_bill" targetRef="Gateway_ai_check_bill__if" />
<bpmn:sequenceFlow id="Flow_Gateway_bill_disputed__if__Task_resolve_bill_dispute" sourceRef="Gateway_bill_disputed__if" targetRef="Task_resolve_bill_dispute" />
<bpmn:sequenceFlow id="Flow_Gateway_bill_disputed__if__Task_cancel_bill" sourceRef="Gateway_bill_disputed__if" targetRef="Task_cancel_bill" />
<bpmn:sequenceFlow id="Flow_Task_dispute_bill__Gateway_bill_disputed__if" sourceRef="Task_dispute_bill" targetRef="Gateway_bill_disputed__if" />
<bpmn:sequenceFlow id="Flow_Task_resolve_bill_dispute__Gateway_ai_check_bill__if" sourceRef="Task_resolve_bill_dispute" targetRef="Gateway_ai_check_bill__if" />
<bpmn:sequenceFlow id="Flow_Gateway_post_bill__if__Task_post_bill" name="the ledger is installed" sourceRef="Gateway_post_bill__if" targetRef="Task_post_bill" />
<bpmn:sequenceFlow id="Flow_Gateway_post_bill__if__Gateway_post_bill__if_end" name="otherwise" sourceRef="Gateway_post_bill__if" targetRef="Gateway_post_bill__if_end" />
<bpmn:sequenceFlow id="Flow_Task_post_bill__Gateway_post_bill__if_end" sourceRef="Task_post_bill" targetRef="Gateway_post_bill__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_hand_asset_to_register__if__Task_hand_asset_to_register" name="fixed-assets is installed and a line is assigned to an asset" sourceRef="Gateway_hand_asset_to_register__if" targetRef="Task_hand_asset_to_register" />
<bpmn:sequenceFlow id="Flow_Gateway_hand_asset_to_register__if__Gateway_hand_asset_to_register__if_end" name="otherwise" sourceRef="Gateway_hand_asset_to_register__if" targetRef="Gateway_hand_asset_to_register__if_end" />
<bpmn:sequenceFlow id="Flow_Task_hand_asset_to_register__Gateway_hand_asset_to_register__if_end" sourceRef="Task_hand_asset_to_register" targetRef="Gateway_hand_asset_to_register__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_hand_cost_difference__if__Task_hand_cost_difference" name="a delivery-cost line differs from its planned cost and inventory is installed" sourceRef="Gateway_hand_cost_difference__if" targetRef="Task_hand_cost_difference" />
<bpmn:sequenceFlow id="Flow_Gateway_hand_cost_difference__if__Gateway_hand_cost_difference__if_end" name="otherwise" sourceRef="Gateway_hand_cost_difference__if" targetRef="Gateway_hand_cost_difference__if_end" />
<bpmn:sequenceFlow id="Flow_Task_hand_cost_difference__Gateway_hand_cost_difference__if_end" sourceRef="Task_hand_cost_difference" targetRef="Gateway_hand_cost_difference__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_post_bill__if_end__Gateway_hand_asset_to_register__if" sourceRef="Gateway_post_bill__if_end" targetRef="Gateway_hand_asset_to_register__if" />
<bpmn:sequenceFlow id="Flow_Gateway_hand_asset_to_register__if_end__Gateway_hand_cost_difference__if" sourceRef="Gateway_hand_asset_to_register__if_end" targetRef="Gateway_hand_cost_difference__if" />
<bpmn:sequenceFlow id="Flow_Gateway_bill_approved__if__Task_dispute_bill" sourceRef="Gateway_bill_approved__if" targetRef="Task_dispute_bill" />
<bpmn:sequenceFlow id="Flow_Gateway_bill_approved__if__End_bill_approved" name="done" sourceRef="Gateway_bill_approved__if" targetRef="End_bill_approved" />
<bpmn:sequenceFlow id="Flow_Gateway_hand_cost_difference__if_end__Gateway_bill_approved__if" sourceRef="Gateway_hand_cost_difference__if_end" targetRef="Gateway_bill_approved__if" />
<bpmn:sequenceFlow id="Flow_Task_approve_bill__Gateway_post_bill__if" sourceRef="Task_approve_bill" targetRef="Gateway_post_bill__if" />
<bpmn:sequenceFlow id="Flow_Task_settle_ers__Gateway_post_bill__if" sourceRef="Task_settle_ers" targetRef="Gateway_post_bill__if" />
<bpmn:sequenceFlow id="Flow_Task_cancel_bill__End_bill_cancelled" sourceRef="Task_cancel_bill" targetRef="End_bill_cancelled" />
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_purchasing_v8">
<bpmndi:BPMNPlane id="BPMNPlane_purchasing_v8" bpmnElement="Collaboration_purchasing_v8">
<bpmndi:BPMNShape id="Participant_purchasing_bill_di" bpmnElement="Participant_purchasing_bill" isHorizontal="true">
<dc:Bounds x="0" y="0" width="2150" height="1020" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_bill_system_di" bpmnElement="Lane_bill_system" isHorizontal="true">
<dc:Bounds x="30" y="0" width="2120" height="500" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_bill_payables_clerk_di" bpmnElement="Lane_bill_payables_clerk" isHorizontal="true">
<dc:Bounds x="30" y="500" width="2120" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_bill_payables_approver_di" bpmnElement="Lane_bill_payables_approver" isHorizontal="true">
<dc:Bounds x="30" y="760" width="2120" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Start_bill_di" bpmnElement="Start_bill">
<dc:Bounds x="157" y="42" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_ai_read_bill_di" bpmnElement="Task_ai_read_bill">
<dc:Bounds x="465" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_accept_ai_fields_di" bpmnElement="Task_accept_ai_fields">
<dc:Bounds x="635" y="520" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_record_bill_di" bpmnElement="Task_record_bill">
<dc:Bounds x="465" y="520" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_record_intercompany_bill_di" bpmnElement="Task_record_intercompany_bill">
<dc:Bounds x="465" y="140" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_ai_check_bill_di" bpmnElement="Task_ai_check_bill">
<dc:Bounds x="805" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_match_bill_di" bpmnElement="Task_match_bill">
<dc:Bounds x="975" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_accept_variance_di" bpmnElement="Task_accept_variance">
<dc:Bounds x="1315" y="780" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_dispute_bill_di" bpmnElement="Task_dispute_bill">
<dc:Bounds x="1655" y="520" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_resolve_bill_dispute_di" bpmnElement="Task_resolve_bill_dispute">
<dc:Bounds x="1995" y="520" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_approve_bill_di" bpmnElement="Task_approve_bill">
<dc:Bounds x="1655" y="780" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_post_bill_di" bpmnElement="Task_post_bill">
<dc:Bounds x="805" y="140" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_hand_asset_to_register_di" bpmnElement="Task_hand_asset_to_register">
<dc:Bounds x="1145" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_hand_cost_difference_di" bpmnElement="Task_hand_cost_difference">
<dc:Bounds x="1485" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_settle_ers_di" bpmnElement="Task_settle_ers">
<dc:Bounds x="465" y="640" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_cancel_bill_di" bpmnElement="Task_cancel_bill">
<dc:Bounds x="1655" y="900" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_bill_none__if_di" bpmnElement="Gateway_bill_none__if">
<dc:Bounds x="320" y="35" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_ai_check_bill__if_di" bpmnElement="Gateway_ai_check_bill__if">
<dc:Bounds x="660" y="35" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_ai_check_bill__if_end_di" bpmnElement="Gateway_ai_check_bill__if_end">
<dc:Bounds x="830" y="275" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_accept_variance__if_di" bpmnElement="Gateway_accept_variance__if">
<dc:Bounds x="1170" y="795" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_accept_variance__if_end_di" bpmnElement="Gateway_accept_variance__if_end">
<dc:Bounds x="1340" y="915" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_bill_recorded__if_di" bpmnElement="Gateway_bill_recorded__if">
<dc:Bounds x="1510" y="535" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_bill_disputed__if_di" bpmnElement="Gateway_bill_disputed__if">
<dc:Bounds x="1850" y="535" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_post_bill__if_di" bpmnElement="Gateway_post_bill__if">
<dc:Bounds x="660" y="155" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_post_bill__if_end_di" bpmnElement="Gateway_post_bill__if_end">
<dc:Bounds x="830" y="395" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_hand_asset_to_register__if_di" bpmnElement="Gateway_hand_asset_to_register__if">
<dc:Bounds x="1000" y="155" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_hand_asset_to_register__if_end_di" bpmnElement="Gateway_hand_asset_to_register__if_end">
<dc:Bounds x="1170" y="155" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_hand_cost_difference__if_di" bpmnElement="Gateway_hand_cost_difference__if">
<dc:Bounds x="1340" y="35" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_hand_cost_difference__if_end_di" bpmnElement="Gateway_hand_cost_difference__if_end">
<dc:Bounds x="1510" y="155" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_bill_approved__if_di" bpmnElement="Gateway_bill_approved__if">
<dc:Bounds x="1680" y="655" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_bill_approved_di" bpmnElement="End_bill_approved">
<dc:Bounds x="1857" y="662" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_bill_cancelled_di" bpmnElement="End_bill_cancelled">
<dc:Bounds x="1857" y="802" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_none__if__Task_ai_read_bill_di" bpmnElement="Flow_Gateway_bill_none__if__Task_ai_read_bill">
<di:waypoint x="370" y="60" />
<di:waypoint x="465" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_none__if__Task_record_bill_di" bpmnElement="Flow_Gateway_bill_none__if__Task_record_bill">
<di:waypoint x="370" y="60" />
<di:waypoint x="440" y="60" />
<di:waypoint x="440" y="560" />
<di:waypoint x="465" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_none__if__Task_record_intercompany_bill_di" bpmnElement="Flow_Gateway_bill_none__if__Task_record_intercompany_bill">
<di:waypoint x="370" y="60" />
<di:waypoint x="440" y="60" />
<di:waypoint x="440" y="180" />
<di:waypoint x="465" y="180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_none__if__Task_settle_ers_di" bpmnElement="Flow_Gateway_bill_none__if__Task_settle_ers">
<di:waypoint x="370" y="60" />
<di:waypoint x="440" y="60" />
<di:waypoint x="440" y="680" />
<di:waypoint x="465" y="680" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Start_bill__Gateway_bill_none__if_di" bpmnElement="Flow_Start_bill__Gateway_bill_none__if">
<di:waypoint x="193" y="60" />
<di:waypoint x="320" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_accept_ai_fields__Task_record_bill_di" bpmnElement="Flow_Task_accept_ai_fields__Task_record_bill">
<di:waypoint x="685" y="600" />
<di:waypoint x="685" y="615" />
<di:waypoint x="515" y="615" />
<di:waypoint x="515" y="600" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_ai_read_bill__Task_accept_ai_fields_di" bpmnElement="Flow_Task_ai_read_bill__Task_accept_ai_fields">
<di:waypoint x="565" y="60" />
<di:waypoint x="610" y="60" />
<di:waypoint x="610" y="560" />
<di:waypoint x="635" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_check_bill__if__Task_ai_check_bill_di" bpmnElement="Flow_Gateway_ai_check_bill__if__Task_ai_check_bill">
<di:waypoint x="710" y="60" />
<di:waypoint x="805" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_check_bill__if__Gateway_ai_check_bill__if_end_di" bpmnElement="Flow_Gateway_ai_check_bill__if__Gateway_ai_check_bill__if_end">
<di:waypoint x="710" y="60" />
<di:waypoint x="805" y="60" />
<di:waypoint x="805" y="300" />
<di:waypoint x="830" y="300" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_ai_check_bill__Gateway_ai_check_bill__if_end_di" bpmnElement="Flow_Task_ai_check_bill__Gateway_ai_check_bill__if_end">
<di:waypoint x="855" y="100" />
<di:waypoint x="855" y="346" />
<di:waypoint x="855" y="346" />
<di:waypoint x="855" y="325" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_accept_variance__if__Task_accept_variance_di" bpmnElement="Flow_Gateway_accept_variance__if__Task_accept_variance">
<di:waypoint x="1220" y="820" />
<di:waypoint x="1315" y="820" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_accept_variance__if__Gateway_accept_variance__if_end_di" bpmnElement="Flow_Gateway_accept_variance__if__Gateway_accept_variance__if_end">
<di:waypoint x="1220" y="820" />
<di:waypoint x="1315" y="820" />
<di:waypoint x="1315" y="940" />
<di:waypoint x="1340" y="940" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_accept_variance__Gateway_accept_variance__if_end_di" bpmnElement="Flow_Task_accept_variance__Gateway_accept_variance__if_end">
<di:waypoint x="1365" y="860" />
<di:waypoint x="1365" y="992" />
<di:waypoint x="1365" y="992" />
<di:waypoint x="1365" y="965" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_check_bill__if_end__Task_match_bill_di" bpmnElement="Flow_Gateway_ai_check_bill__if_end__Task_match_bill">
<di:waypoint x="880" y="300" />
<di:waypoint x="950" y="300" />
<di:waypoint x="950" y="60" />
<di:waypoint x="975" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_match_bill__Gateway_accept_variance__if_di" bpmnElement="Flow_Task_match_bill__Gateway_accept_variance__if">
<di:waypoint x="1075" y="60" />
<di:waypoint x="1145" y="60" />
<di:waypoint x="1145" y="820" />
<di:waypoint x="1170" y="820" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_recorded__if__Task_dispute_bill_di" bpmnElement="Flow_Gateway_bill_recorded__if__Task_dispute_bill">
<di:waypoint x="1560" y="560" />
<di:waypoint x="1655" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_recorded__if__Task_approve_bill_di" bpmnElement="Flow_Gateway_bill_recorded__if__Task_approve_bill">
<di:waypoint x="1560" y="560" />
<di:waypoint x="1630" y="560" />
<di:waypoint x="1630" y="820" />
<di:waypoint x="1655" y="820" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_recorded__if__Task_cancel_bill_di" bpmnElement="Flow_Gateway_bill_recorded__if__Task_cancel_bill">
<di:waypoint x="1560" y="560" />
<di:waypoint x="1630" y="560" />
<di:waypoint x="1630" y="940" />
<di:waypoint x="1655" y="940" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_accept_variance__if_end__Gateway_bill_recorded__if_di" bpmnElement="Flow_Gateway_accept_variance__if_end__Gateway_bill_recorded__if">
<di:waypoint x="1390" y="940" />
<di:waypoint x="1485" y="940" />
<di:waypoint x="1485" y="560" />
<di:waypoint x="1510" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_record_bill__Gateway_ai_check_bill__if_di" bpmnElement="Flow_Task_record_bill__Gateway_ai_check_bill__if">
<di:waypoint x="565" y="560" />
<di:waypoint x="635" y="560" />
<di:waypoint x="635" y="60" />
<di:waypoint x="660" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_record_intercompany_bill__Gateway_ai_check_bill__if_di" bpmnElement="Flow_Task_record_intercompany_bill__Gateway_ai_check_bill__if">
<di:waypoint x="565" y="180" />
<di:waypoint x="635" y="180" />
<di:waypoint x="635" y="60" />
<di:waypoint x="660" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_disputed__if__Task_resolve_bill_dispute_di" bpmnElement="Flow_Gateway_bill_disputed__if__Task_resolve_bill_dispute">
<di:waypoint x="1900" y="560" />
<di:waypoint x="1995" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_disputed__if__Task_cancel_bill_di" bpmnElement="Flow_Gateway_bill_disputed__if__Task_cancel_bill">
<di:waypoint x="1875" y="585" />
<di:waypoint x="1875" y="1013" />
<di:waypoint x="1705" y="1013" />
<di:waypoint x="1705" y="980" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_dispute_bill__Gateway_bill_disputed__if_di" bpmnElement="Flow_Task_dispute_bill__Gateway_bill_disputed__if">
<di:waypoint x="1755" y="560" />
<di:waypoint x="1850" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_resolve_bill_dispute__Gateway_ai_check_bill__if_di" bpmnElement="Flow_Task_resolve_bill_dispute__Gateway_ai_check_bill__if">
<di:waypoint x="2045" y="600" />
<di:waypoint x="2045" y="615" />
<di:waypoint x="685" y="615" />
<di:waypoint x="685" y="85" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_post_bill__if__Task_post_bill_di" bpmnElement="Flow_Gateway_post_bill__if__Task_post_bill">
<di:waypoint x="710" y="180" />
<di:waypoint x="805" y="180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_post_bill__if__Gateway_post_bill__if_end_di" bpmnElement="Flow_Gateway_post_bill__if__Gateway_post_bill__if_end">
<di:waypoint x="710" y="180" />
<di:waypoint x="805" y="180" />
<di:waypoint x="805" y="420" />
<di:waypoint x="830" y="420" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_post_bill__Gateway_post_bill__if_end_di" bpmnElement="Flow_Task_post_bill__Gateway_post_bill__if_end">
<di:waypoint x="855" y="220" />
<di:waypoint x="855" y="466" />
<di:waypoint x="855" y="466" />
<di:waypoint x="855" y="445" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_hand_asset_to_register__if__Task_hand_asset_to_register_di" bpmnElement="Flow_Gateway_hand_asset_to_register__if__Task_hand_asset_to_register">
<di:waypoint x="1050" y="180" />
<di:waypoint x="1120" y="180" />
<di:waypoint x="1120" y="60" />
<di:waypoint x="1145" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_hand_asset_to_register__if__Gateway_hand_asset_to_register__if_end_di" bpmnElement="Flow_Gateway_hand_asset_to_register__if__Gateway_hand_asset_to_register__if_end">
<di:waypoint x="1050" y="180" />
<di:waypoint x="1170" y="180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_hand_asset_to_register__Gateway_hand_asset_to_register__if_end_di" bpmnElement="Flow_Task_hand_asset_to_register__Gateway_hand_asset_to_register__if_end">
<di:waypoint x="1195" y="100" />
<di:waypoint x="1195" y="232" />
<di:waypoint x="1195" y="232" />
<di:waypoint x="1195" y="205" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_hand_cost_difference__if__Task_hand_cost_difference_di" bpmnElement="Flow_Gateway_hand_cost_difference__if__Task_hand_cost_difference">
<di:waypoint x="1390" y="60" />
<di:waypoint x="1485" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_hand_cost_difference__if__Gateway_hand_cost_difference__if_end_di" bpmnElement="Flow_Gateway_hand_cost_difference__if__Gateway_hand_cost_difference__if_end">
<di:waypoint x="1390" y="60" />
<di:waypoint x="1485" y="60" />
<di:waypoint x="1485" y="180" />
<di:waypoint x="1510" y="180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_hand_cost_difference__Gateway_hand_cost_difference__if_end_di" bpmnElement="Flow_Task_hand_cost_difference__Gateway_hand_cost_difference__if_end">
<di:waypoint x="1535" y="100" />
<di:waypoint x="1535" y="238" />
<di:waypoint x="1535" y="238" />
<di:waypoint x="1535" y="205" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_post_bill__if_end__Gateway_hand_asset_to_register__if_di" bpmnElement="Flow_Gateway_post_bill__if_end__Gateway_hand_asset_to_register__if">
<di:waypoint x="880" y="420" />
<di:waypoint x="975" y="420" />
<di:waypoint x="975" y="180" />
<di:waypoint x="1000" y="180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_hand_asset_to_register__if_end__Gateway_hand_cost_difference__if_di" bpmnElement="Flow_Gateway_hand_asset_to_register__if_end__Gateway_hand_cost_difference__if">
<di:waypoint x="1220" y="180" />
<di:waypoint x="1315" y="180" />
<di:waypoint x="1315" y="60" />
<di:waypoint x="1340" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_approved__if__Task_dispute_bill_di" bpmnElement="Flow_Gateway_bill_approved__if__Task_dispute_bill">
<di:waypoint x="1705" y="705" />
<di:waypoint x="1705" y="720" />
<di:waypoint x="1705" y="720" />
<di:waypoint x="1705" y="600" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_bill_approved__if__End_bill_approved_di" bpmnElement="Flow_Gateway_bill_approved__if__End_bill_approved">
<di:waypoint x="1730" y="680" />
<di:waypoint x="1857" y="680" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_hand_cost_difference__if_end__Gateway_bill_approved__if_di" bpmnElement="Flow_Gateway_hand_cost_difference__if_end__Gateway_bill_approved__if">
<di:waypoint x="1560" y="180" />
<di:waypoint x="1655" y="180" />
<di:waypoint x="1655" y="680" />
<di:waypoint x="1680" y="680" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_approve_bill__Gateway_post_bill__if_di" bpmnElement="Flow_Task_approve_bill__Gateway_post_bill__if">
<di:waypoint x="1705" y="860" />
<di:waypoint x="1705" y="881" />
<di:waypoint x="685" y="881" />
<di:waypoint x="685" y="205" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_settle_ers__Gateway_post_bill__if_di" bpmnElement="Flow_Task_settle_ers__Gateway_post_bill__if">
<di:waypoint x="565" y="680" />
<di:waypoint x="635" y="680" />
<di:waypoint x="635" y="180" />
<di:waypoint x="660" y="180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_cancel_bill__End_bill_cancelled_di" bpmnElement="Flow_Task_cancel_bill__End_bill_cancelled">
<di:waypoint x="1755" y="940" />
<di:waypoint x="1832" y="940" />
<di:waypoint x="1832" y="820" />
<di:waypoint x="1857" y="820" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>