dodil/erp-method
modules/payments/process.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_payments_v1" name="Payments & collections processes" targetNamespace="https://git.dodil.io/dodil/erp-platform/processes" exporter="erp-platform erp-compose bpmn" exporterVersion="1">
<bpmn:collaboration id="Collaboration_payments_v1">
<bpmn:documentation>Payments & collections: one pool per entity lifecycle, generated from module.yaml.</bpmn:documentation>
<bpmn:participant id="Participant_payments_receipt" name="Receipt" processRef="Process_payments_receipt_v1" />
<bpmn:participant id="Participant_payments_refund" name="Refund" processRef="Process_payments_refund_v1" />
<bpmn:participant id="Participant_payments_collection" name="Collection" processRef="Process_payments_collection_v1" />
<bpmn:participant id="Participant_customer" name="The customer (external)">
<bpmn:documentation>Outside the system: the steps it sends are what the process waits on.</bpmn:documentation>
</bpmn:participant>
<bpmn:messageFlow id="Flow_Participant_customer__Task_customer_pays" sourceRef="Participant_customer" targetRef="Task_customer_pays" />
<bpmn:messageFlow id="Flow_Participant_customer__Task_customer_responds" sourceRef="Participant_customer" targetRef="Task_customer_responds" />
</bpmn:collaboration>
<bpmn:process id="Process_payments_receipt_v1" name="Receipt" isExecutable="false">
<bpmn:documentation>Lifecycle of the receipt, generated from module.yaml by erp-compose bpmn; change the workflow there, not this file. States: received, reversed. Note: how much of a receipt is allocated (unallocated, partly, fully) is DERIVED from its allocations</bpmn:documentation>
<bpmn:laneSet id="LaneSet_receipt">
<bpmn:lane id="Lane_receipt_customer" name="The customer (external)">
<bpmn:flowNodeRef>Start_receipt</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_customer_pays</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_receipt_none__if</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_receipt_cashier" name="Whoever records money (bookkeeper, office manager)">
<bpmn:flowNodeRef>Task_record_receipt</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_allocate</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_settle_difference</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_unallocate</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_reverse_receipt</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_allocate__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_allocate__if_end</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_settle_difference__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_settle_difference__if_end</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_receipt_received__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>End_receipt_received</bpmn:flowNodeRef>
<bpmn:flowNodeRef>End_receipt_reversed</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_receipt_system" name="The system">
<bpmn:flowNodeRef>Task_import_statement</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_ai_suggest_match</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_ai_suggest_match__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_ai_suggest_match__if_end</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="Start_receipt" name="Receipt needed">
<bpmn:outgoing>Flow_Start_receipt__Gateway_receipt_none__if</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:receiveTask id="Task_customer_pays" name="The customer pays" dodil:step="customer_pays" dodil:external="true">
<bpmn:documentation>By: The customer. From none to received. Effect: the money arrives in the bank or through a provider. Done outside the system: the process waits for it.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_receipt_none__if__Task_customer_pays</bpmn:incoming>
<bpmn:outgoing>Flow_Task_customer_pays__Gateway_ai_suggest_match__if</bpmn:outgoing>
</bpmn:receiveTask>
<bpmn:userTask id="Task_record_receipt" name="Record the receipt" dodil:step="record_receipt">
<bpmn:documentation>By: Whoever records money (bookkeeper, office manager). From none to received. When: a receipt typed in. Effect: unallocated cash on the customer.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_receipt_none__if__Task_record_receipt</bpmn:incoming>
<bpmn:outgoing>Flow_Task_record_receipt__Gateway_ai_suggest_match__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:serviceTask id="Task_import_statement" name="Import the bank statement line" dodil:step="import_statement" implementation="##unspecified">
<bpmn:documentation>By: The system. From none to received. When: a statement was uploaded (camt.053 or CSV). Effect: keyed bank:account:entry; a re-import adds nothing.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_receipt_none__if__Task_import_statement</bpmn:incoming>
<bpmn:outgoing>Flow_Task_import_statement__Gateway_ai_suggest_match__if</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Task_ai_suggest_match" name="AI suggests the invoices it pays (suggest)" dodil:step="ai_suggest_match" implementation="##unspecified">
<bpmn:documentation>By: The system. From received to received. When: the receipt has unallocated money and the step is on. Effect: a proposed allocation with its evidence and confidence.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_ai_suggest_match__if__Task_ai_suggest_match</bpmn:incoming>
<bpmn:outgoing>Flow_Task_ai_suggest_match__Gateway_ai_suggest_match__if_end</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:userTask id="Task_allocate" name="Allocate to invoices" dodil:step="allocate">
<bpmn:documentation>By: Whoever records money (bookkeeper, office manager). From received to received. When: never more than the receipt's remainder or an invoice's outstanding. Effect: allocation rows; settlement derived.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_allocate__if__Task_allocate</bpmn:incoming>
<bpmn:outgoing>Flow_Task_allocate__Gateway_allocate__if_end</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_settle_difference" name="Propose the small difference as a write-off" dodil:step="settle_difference">
<bpmn:documentation>By: Whoever records money (bookkeeper, office manager). From received to received. When: the difference is within the tolerance. Effect: a write-off proposal to invoicing (AR-09).</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_settle_difference__if__Task_settle_difference</bpmn:incoming>
<bpmn:outgoing>Flow_Task_settle_difference__Gateway_settle_difference__if_end</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_unallocate" name="Undo an allocation" dodil:step="unallocate">
<bpmn:documentation>By: Whoever records money (bookkeeper, office manager). From received to received. Requires: reason. Effect: a reversing allocation row; history kept.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_settle_difference__if_end__Task_unallocate</bpmn:incoming>
<bpmn:outgoing>Flow_Task_unallocate__Gateway_receipt_received__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_reverse_receipt" name="Reverse a returned payment" dodil:step="reverse_receipt">
<bpmn:documentation>By: Whoever records money (bookkeeper, office manager). From received to reversed. Requires: bank_return_ref. Effect: its allocations reversed; the invoices are owed again.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_receipt_received__if__Task_reverse_receipt</bpmn:incoming>
<bpmn:outgoing>Flow_Task_reverse_receipt__End_receipt_reversed</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_receipt_none__if" name="New receipt?">
<bpmn:incoming>Flow_Start_receipt__Gateway_receipt_none__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_receipt_none__if__Task_customer_pays</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_receipt_none__if__Task_record_receipt</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_receipt_none__if__Task_import_statement</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_ai_suggest_match__if" name="the receipt has unallocated money and the step is on?">
<bpmn:incoming>Flow_Task_customer_pays__Gateway_ai_suggest_match__if</bpmn:incoming>
<bpmn:incoming>Flow_Task_record_receipt__Gateway_ai_suggest_match__if</bpmn:incoming>
<bpmn:incoming>Flow_Task_import_statement__Gateway_ai_suggest_match__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_ai_suggest_match__if__Task_ai_suggest_match</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_ai_suggest_match__if__Gateway_ai_suggest_match__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_ai_suggest_match__if_end">
<bpmn:incoming>Flow_Gateway_ai_suggest_match__if__Gateway_ai_suggest_match__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_ai_suggest_match__Gateway_ai_suggest_match__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_ai_suggest_match__if_end__Gateway_allocate__if</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_allocate__if" name="never more than the receipt's remainder or an invoice's outstanding?">
<bpmn:incoming>Flow_Gateway_ai_suggest_match__if_end__Gateway_allocate__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_allocate__if__Task_allocate</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_allocate__if__Gateway_allocate__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_allocate__if_end">
<bpmn:incoming>Flow_Gateway_allocate__if__Gateway_allocate__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_allocate__Gateway_allocate__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_allocate__if_end__Gateway_settle_difference__if</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_settle_difference__if" name="the difference is within the tolerance?">
<bpmn:incoming>Flow_Gateway_allocate__if_end__Gateway_settle_difference__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_settle_difference__if__Task_settle_difference</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_settle_difference__if__Gateway_settle_difference__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_settle_difference__if_end">
<bpmn:incoming>Flow_Gateway_settle_difference__if__Gateway_settle_difference__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_settle_difference__Gateway_settle_difference__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_settle_difference__if_end__Task_unallocate</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_receipt_received__if" name="Receipt received: done, or go on?">
<bpmn:incoming>Flow_Task_unallocate__Gateway_receipt_received__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_receipt_received__if__Task_reverse_receipt</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_receipt_received__if__End_receipt_received</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:endEvent id="End_receipt_received" name="Receipt received">
<bpmn:incoming>Flow_Gateway_receipt_received__if__End_receipt_received</bpmn:incoming>
</bpmn:endEvent>
<bpmn:endEvent id="End_receipt_reversed" name="Receipt reversed">
<bpmn:incoming>Flow_Task_reverse_receipt__End_receipt_reversed</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_Gateway_receipt_none__if__Task_customer_pays" sourceRef="Gateway_receipt_none__if" targetRef="Task_customer_pays" />
<bpmn:sequenceFlow id="Flow_Gateway_receipt_none__if__Task_record_receipt" sourceRef="Gateway_receipt_none__if" targetRef="Task_record_receipt" />
<bpmn:sequenceFlow id="Flow_Gateway_receipt_none__if__Task_import_statement" sourceRef="Gateway_receipt_none__if" targetRef="Task_import_statement" />
<bpmn:sequenceFlow id="Flow_Start_receipt__Gateway_receipt_none__if" sourceRef="Start_receipt" targetRef="Gateway_receipt_none__if" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_suggest_match__if__Task_ai_suggest_match" name="the receipt has unallocated money and the step is on" sourceRef="Gateway_ai_suggest_match__if" targetRef="Task_ai_suggest_match" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_suggest_match__if__Gateway_ai_suggest_match__if_end" name="otherwise" sourceRef="Gateway_ai_suggest_match__if" targetRef="Gateway_ai_suggest_match__if_end" />
<bpmn:sequenceFlow id="Flow_Task_ai_suggest_match__Gateway_ai_suggest_match__if_end" sourceRef="Task_ai_suggest_match" targetRef="Gateway_ai_suggest_match__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_allocate__if__Task_allocate" name="never more than the receipt's remainder or an invoice's outstanding" sourceRef="Gateway_allocate__if" targetRef="Task_allocate" />
<bpmn:sequenceFlow id="Flow_Gateway_allocate__if__Gateway_allocate__if_end" name="otherwise" sourceRef="Gateway_allocate__if" targetRef="Gateway_allocate__if_end" />
<bpmn:sequenceFlow id="Flow_Task_allocate__Gateway_allocate__if_end" sourceRef="Task_allocate" targetRef="Gateway_allocate__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_settle_difference__if__Task_settle_difference" name="the difference is within the tolerance" sourceRef="Gateway_settle_difference__if" targetRef="Task_settle_difference" />
<bpmn:sequenceFlow id="Flow_Gateway_settle_difference__if__Gateway_settle_difference__if_end" name="otherwise" sourceRef="Gateway_settle_difference__if" targetRef="Gateway_settle_difference__if_end" />
<bpmn:sequenceFlow id="Flow_Task_settle_difference__Gateway_settle_difference__if_end" sourceRef="Task_settle_difference" targetRef="Gateway_settle_difference__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_suggest_match__if_end__Gateway_allocate__if" sourceRef="Gateway_ai_suggest_match__if_end" targetRef="Gateway_allocate__if" />
<bpmn:sequenceFlow id="Flow_Gateway_allocate__if_end__Gateway_settle_difference__if" sourceRef="Gateway_allocate__if_end" targetRef="Gateway_settle_difference__if" />
<bpmn:sequenceFlow id="Flow_Gateway_settle_difference__if_end__Task_unallocate" sourceRef="Gateway_settle_difference__if_end" targetRef="Task_unallocate" />
<bpmn:sequenceFlow id="Flow_Gateway_receipt_received__if__Task_reverse_receipt" sourceRef="Gateway_receipt_received__if" targetRef="Task_reverse_receipt" />
<bpmn:sequenceFlow id="Flow_Gateway_receipt_received__if__End_receipt_received" name="done" sourceRef="Gateway_receipt_received__if" targetRef="End_receipt_received" />
<bpmn:sequenceFlow id="Flow_Task_unallocate__Gateway_receipt_received__if" sourceRef="Task_unallocate" targetRef="Gateway_receipt_received__if" />
<bpmn:sequenceFlow id="Flow_Task_customer_pays__Gateway_ai_suggest_match__if" sourceRef="Task_customer_pays" targetRef="Gateway_ai_suggest_match__if" />
<bpmn:sequenceFlow id="Flow_Task_record_receipt__Gateway_ai_suggest_match__if" sourceRef="Task_record_receipt" targetRef="Gateway_ai_suggest_match__if" />
<bpmn:sequenceFlow id="Flow_Task_import_statement__Gateway_ai_suggest_match__if" sourceRef="Task_import_statement" targetRef="Gateway_ai_suggest_match__if" />
<bpmn:sequenceFlow id="Flow_Task_reverse_receipt__End_receipt_reversed" sourceRef="Task_reverse_receipt" targetRef="End_receipt_reversed" />
</bpmn:process>
<bpmn:process id="Process_payments_refund_v1" name="Refund" isExecutable="false">
<bpmn:documentation>Lifecycle of the refund, generated from module.yaml by erp-compose bpmn; change the workflow there, not this file. States: requested, approved, rejected, paid.</bpmn:documentation>
<bpmn:laneSet id="LaneSet_refund">
<bpmn:lane id="Lane_refund_cashier" name="Whoever records money (bookkeeper, office manager)">
<bpmn:flowNodeRef>Start_refund</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_request_refund</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_pay_refund</bpmn:flowNodeRef>
<bpmn:flowNodeRef>End_refund_paid</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_refund_approver" name="Owner / finance manager">
<bpmn:flowNodeRef>Task_approve_refund</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_reject_refund</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_refund_requested__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>End_refund_rejected</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="Start_refund" name="Refund needed">
<bpmn:outgoing>Flow_Start_refund__Task_request_refund</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:userTask id="Task_request_refund" name="Request a refund" dodil:step="request_refund">
<bpmn:documentation>By: Whoever records money (bookkeeper, office manager). From none to requested. When: the customer has unallocated credit at least the amount.</bpmn:documentation>
<bpmn:incoming>Flow_Start_refund__Task_request_refund</bpmn:incoming>
<bpmn:outgoing>Flow_Task_request_refund__Gateway_refund_requested__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_approve_refund" name="Approve the refund" dodil:step="approve_refund" dodil:approval="true">
<bpmn:documentation>By: Owner / finance manager. From requested to approved. When: the approver is not the requester. An approval.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_refund_requested__if__Task_approve_refund</bpmn:incoming>
<bpmn:outgoing>Flow_Task_approve_refund__Task_pay_refund</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_reject_refund" name="Reject the refund" dodil:step="reject_refund">
<bpmn:documentation>By: Owner / finance manager. From requested to rejected. Requires: reason.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_refund_requested__if__Task_reject_refund</bpmn:incoming>
<bpmn:outgoing>Flow_Task_reject_refund__End_refund_rejected</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_pay_refund" name="Record the refund paid" dodil:step="pay_refund">
<bpmn:documentation>By: Whoever records money (bookkeeper, office manager). From approved to paid. Requires: bank_ref. Effect: allocated against the credit; posted in the ledger.</bpmn:documentation>
<bpmn:incoming>Flow_Task_approve_refund__Task_pay_refund</bpmn:incoming>
<bpmn:outgoing>Flow_Task_pay_refund__End_refund_paid</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_refund_requested__if" name="Refund requested: what next?">
<bpmn:incoming>Flow_Task_request_refund__Gateway_refund_requested__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_refund_requested__if__Task_approve_refund</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_refund_requested__if__Task_reject_refund</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:endEvent id="End_refund_rejected" name="Refund rejected">
<bpmn:incoming>Flow_Task_reject_refund__End_refund_rejected</bpmn:incoming>
</bpmn:endEvent>
<bpmn:endEvent id="End_refund_paid" name="Refund paid">
<bpmn:incoming>Flow_Task_pay_refund__End_refund_paid</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_Start_refund__Task_request_refund" sourceRef="Start_refund" targetRef="Task_request_refund" />
<bpmn:sequenceFlow id="Flow_Gateway_refund_requested__if__Task_approve_refund" sourceRef="Gateway_refund_requested__if" targetRef="Task_approve_refund" />
<bpmn:sequenceFlow id="Flow_Gateway_refund_requested__if__Task_reject_refund" sourceRef="Gateway_refund_requested__if" targetRef="Task_reject_refund" />
<bpmn:sequenceFlow id="Flow_Task_request_refund__Gateway_refund_requested__if" sourceRef="Task_request_refund" targetRef="Gateway_refund_requested__if" />
<bpmn:sequenceFlow id="Flow_Task_approve_refund__Task_pay_refund" sourceRef="Task_approve_refund" targetRef="Task_pay_refund" />
<bpmn:sequenceFlow id="Flow_Task_reject_refund__End_refund_rejected" sourceRef="Task_reject_refund" targetRef="End_refund_rejected" />
<bpmn:sequenceFlow id="Flow_Task_pay_refund__End_refund_paid" sourceRef="Task_pay_refund" targetRef="End_refund_paid" />
</bpmn:process>
<bpmn:process id="Process_payments_collection_v1" name="Collection" isExecutable="false">
<bpmn:documentation>Lifecycle of the collection, generated from module.yaml by erp-compose bpmn; change the workflow there, not this file. States: overdue, reminded, promised, disputed, resolved. Note: a collection is per customer and invoice; settlement and age are derived on read, never stored</bpmn:documentation>
<bpmn:laneSet id="LaneSet_collection">
<bpmn:lane id="Lane_collection_system" name="The system">
<bpmn:flowNodeRef>Start_collection</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_fall_overdue</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Timer_fall_overdue</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_ai_draft_reminder</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Timer_ai_draft_reminder</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_promise_lapses</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Timer_promise_lapses</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_paid_in_full</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_collection_overdue__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_collection_reminded__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_collection_promised__if</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_collection_collector" name="Whoever chases money">
<bpmn:flowNodeRef>Task_send_reminder</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_call_customer</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_resolve_dispute</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_send_reminder__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_send_reminder__if_end</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_call_customer__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>End_collection_resolved</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_collection_customer" name="The customer (external)">
<bpmn:flowNodeRef>Task_customer_responds</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="Start_collection" name="Collection needed">
<bpmn:outgoing>Flow_Start_collection__Timer_fall_overdue</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:serviceTask id="Task_fall_overdue" name="The invoice falls overdue" dodil:step="fall_overdue" implementation="##unspecified">
<bpmn:documentation>By: The system. From none to overdue. When: the due date passed with outstanding above zero. Waits: the due date.</bpmn:documentation>
<bpmn:incoming>Flow_Timer_fall_overdue__Task_fall_overdue</bpmn:incoming>
<bpmn:outgoing>Flow_Task_fall_overdue__Gateway_collection_overdue__if</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:intermediateCatchEvent id="Timer_fall_overdue" name="the due date">
<bpmn:incoming>Flow_Start_collection__Timer_fall_overdue</bpmn:incoming>
<bpmn:outgoing>Flow_Timer_fall_overdue__Task_fall_overdue</bpmn:outgoing>
<bpmn:timerEventDefinition id="Timer_fall_overdue__definition">
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">the due date</bpmn:timeDuration>
</bpmn:timerEventDefinition>
</bpmn:intermediateCatchEvent>
<bpmn:serviceTask id="Task_ai_draft_reminder" name="AI drafts the reminder for this customer (suggest)" dodil:step="ai_draft_reminder" implementation="##unspecified">
<bpmn:documentation>By: The system. From overdue / reminded to reminded. When: reminders are on and a level is due. Effect: a draft in the collector's queue (suggest) or sent (auto). Waits: the level's days after due.</bpmn:documentation>
<bpmn:incoming>Flow_Timer_ai_draft_reminder__Task_ai_draft_reminder</bpmn:incoming>
<bpmn:outgoing>Flow_Task_ai_draft_reminder__Gateway_send_reminder__if</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:intermediateCatchEvent id="Timer_ai_draft_reminder" name="the level's days after due">
<bpmn:incoming>Flow_Gateway_collection_overdue__if__Timer_ai_draft_reminder</bpmn:incoming>
<bpmn:incoming>Flow_Gateway_collection_reminded__if__Timer_ai_draft_reminder</bpmn:incoming>
<bpmn:outgoing>Flow_Timer_ai_draft_reminder__Task_ai_draft_reminder</bpmn:outgoing>
<bpmn:timerEventDefinition id="Timer_ai_draft_reminder__definition">
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">the level's days after due</bpmn:timeDuration>
</bpmn:timerEventDefinition>
</bpmn:intermediateCatchEvent>
<bpmn:userTask id="Task_send_reminder" name="Send the reminder" dodil:step="send_reminder">
<bpmn:documentation>By: Whoever chases money. From reminded to reminded. When: mode suggest: a person sends the draft.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_send_reminder__if__Task_send_reminder</bpmn:incoming>
<bpmn:outgoing>Flow_Task_send_reminder__Gateway_send_reminder__if_end</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_call_customer" name="Chase by hand" dodil:step="call_customer">
<bpmn:documentation>By: Whoever chases money. From overdue / reminded to promised / disputed. Effect: a promise with a date, or a dispute with a reason.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_collection_overdue__if__Task_call_customer</bpmn:incoming>
<bpmn:incoming>Flow_Gateway_collection_reminded__if__Task_call_customer</bpmn:incoming>
<bpmn:outgoing>Flow_Task_call_customer__Gateway_call_customer__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:receiveTask id="Task_customer_responds" name="The customer promises or disputes" dodil:step="customer_responds" dodil:external="true">
<bpmn:documentation>By: The customer. From reminded to reminded. Done outside the system: the process waits for it.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_send_reminder__if_end__Task_customer_responds</bpmn:incoming>
<bpmn:outgoing>Flow_Task_customer_responds__Gateway_collection_reminded__if</bpmn:outgoing>
</bpmn:receiveTask>
<bpmn:serviceTask id="Task_promise_lapses" name="The promise date passes unpaid" dodil:step="promise_lapses" implementation="##unspecified">
<bpmn:documentation>By: The system. From promised to reminded. When: outstanding above zero on the promised date. Waits: the promise date.</bpmn:documentation>
<bpmn:incoming>Flow_Timer_promise_lapses__Task_promise_lapses</bpmn:incoming>
<bpmn:outgoing>Flow_Task_promise_lapses__Gateway_send_reminder__if</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:intermediateCatchEvent id="Timer_promise_lapses" name="the promise date">
<bpmn:incoming>Flow_Gateway_collection_promised__if__Timer_promise_lapses</bpmn:incoming>
<bpmn:outgoing>Flow_Timer_promise_lapses__Task_promise_lapses</bpmn:outgoing>
<bpmn:timerEventDefinition id="Timer_promise_lapses__definition">
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">the promise date</bpmn:timeDuration>
</bpmn:timerEventDefinition>
</bpmn:intermediateCatchEvent>
<bpmn:userTask id="Task_resolve_dispute" name="Resolve the dispute" dodil:step="resolve_dispute">
<bpmn:documentation>By: Whoever chases money. From disputed to resolved. Requires: outcome. Effect: a credit note in invoicing, or reminders resume.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_call_customer__if__Task_resolve_dispute</bpmn:incoming>
<bpmn:outgoing>Flow_Task_resolve_dispute__End_collection_resolved</bpmn:outgoing>
</bpmn:userTask>
<bpmn:serviceTask id="Task_paid_in_full" name="Settled" dodil:step="paid_in_full" implementation="##unspecified">
<bpmn:documentation>By: The system. From overdue / reminded / promised to resolved. When: outstanding is zero (derived).</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_collection_overdue__if__Task_paid_in_full</bpmn:incoming>
<bpmn:incoming>Flow_Gateway_collection_reminded__if__Task_paid_in_full</bpmn:incoming>
<bpmn:incoming>Flow_Gateway_collection_promised__if__Task_paid_in_full</bpmn:incoming>
<bpmn:outgoing>Flow_Task_paid_in_full__End_collection_resolved</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:exclusiveGateway id="Gateway_collection_overdue__if" name="Collection overdue: what next?">
<bpmn:incoming>Flow_Task_fall_overdue__Gateway_collection_overdue__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_collection_overdue__if__Timer_ai_draft_reminder</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_collection_overdue__if__Task_call_customer</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_collection_overdue__if__Task_paid_in_full</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_send_reminder__if" name="mode suggest: a person sends the draft?">
<bpmn:incoming>Flow_Task_ai_draft_reminder__Gateway_send_reminder__if</bpmn:incoming>
<bpmn:incoming>Flow_Task_promise_lapses__Gateway_send_reminder__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_send_reminder__if__Task_send_reminder</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_send_reminder__if__Gateway_send_reminder__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_send_reminder__if_end">
<bpmn:incoming>Flow_Gateway_send_reminder__if__Gateway_send_reminder__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_send_reminder__Gateway_send_reminder__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_send_reminder__if_end__Task_customer_responds</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_collection_reminded__if" name="Collection reminded: what next?">
<bpmn:incoming>Flow_Task_customer_responds__Gateway_collection_reminded__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_collection_reminded__if__Timer_ai_draft_reminder</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_collection_reminded__if__Task_call_customer</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_collection_reminded__if__Task_paid_in_full</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_call_customer__if" name="Outcome?">
<bpmn:incoming>Flow_Task_call_customer__Gateway_call_customer__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_call_customer__if__Gateway_collection_promised__if</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_call_customer__if__Task_resolve_dispute</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_collection_promised__if" name="Collection promised: what next?">
<bpmn:incoming>Flow_Gateway_call_customer__if__Gateway_collection_promised__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_collection_promised__if__Timer_promise_lapses</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_collection_promised__if__Task_paid_in_full</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:endEvent id="End_collection_resolved" name="Collection resolved">
<bpmn:incoming>Flow_Task_resolve_dispute__End_collection_resolved</bpmn:incoming>
<bpmn:incoming>Flow_Task_paid_in_full__End_collection_resolved</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_Timer_fall_overdue__Task_fall_overdue" sourceRef="Timer_fall_overdue" targetRef="Task_fall_overdue" />
<bpmn:sequenceFlow id="Flow_Timer_ai_draft_reminder__Task_ai_draft_reminder" sourceRef="Timer_ai_draft_reminder" targetRef="Task_ai_draft_reminder" />
<bpmn:sequenceFlow id="Flow_Timer_promise_lapses__Task_promise_lapses" sourceRef="Timer_promise_lapses" targetRef="Task_promise_lapses" />
<bpmn:sequenceFlow id="Flow_Start_collection__Timer_fall_overdue" sourceRef="Start_collection" targetRef="Timer_fall_overdue" />
<bpmn:sequenceFlow id="Flow_Gateway_collection_overdue__if__Timer_ai_draft_reminder" sourceRef="Gateway_collection_overdue__if" targetRef="Timer_ai_draft_reminder" />
<bpmn:sequenceFlow id="Flow_Gateway_collection_overdue__if__Task_call_customer" sourceRef="Gateway_collection_overdue__if" targetRef="Task_call_customer" />
<bpmn:sequenceFlow id="Flow_Gateway_collection_overdue__if__Task_paid_in_full" sourceRef="Gateway_collection_overdue__if" targetRef="Task_paid_in_full" />
<bpmn:sequenceFlow id="Flow_Task_fall_overdue__Gateway_collection_overdue__if" sourceRef="Task_fall_overdue" targetRef="Gateway_collection_overdue__if" />
<bpmn:sequenceFlow id="Flow_Gateway_send_reminder__if__Task_send_reminder" name="mode suggest: a person sends the draft" sourceRef="Gateway_send_reminder__if" targetRef="Task_send_reminder" />
<bpmn:sequenceFlow id="Flow_Gateway_send_reminder__if__Gateway_send_reminder__if_end" name="otherwise" sourceRef="Gateway_send_reminder__if" targetRef="Gateway_send_reminder__if_end" />
<bpmn:sequenceFlow id="Flow_Task_send_reminder__Gateway_send_reminder__if_end" sourceRef="Task_send_reminder" targetRef="Gateway_send_reminder__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_send_reminder__if_end__Task_customer_responds" sourceRef="Gateway_send_reminder__if_end" targetRef="Task_customer_responds" />
<bpmn:sequenceFlow id="Flow_Gateway_collection_reminded__if__Timer_ai_draft_reminder" sourceRef="Gateway_collection_reminded__if" targetRef="Timer_ai_draft_reminder" />
<bpmn:sequenceFlow id="Flow_Gateway_collection_reminded__if__Task_call_customer" sourceRef="Gateway_collection_reminded__if" targetRef="Task_call_customer" />
<bpmn:sequenceFlow id="Flow_Gateway_collection_reminded__if__Task_paid_in_full" sourceRef="Gateway_collection_reminded__if" targetRef="Task_paid_in_full" />
<bpmn:sequenceFlow id="Flow_Task_customer_responds__Gateway_collection_reminded__if" sourceRef="Task_customer_responds" targetRef="Gateway_collection_reminded__if" />
<bpmn:sequenceFlow id="Flow_Task_ai_draft_reminder__Gateway_send_reminder__if" sourceRef="Task_ai_draft_reminder" targetRef="Gateway_send_reminder__if" />
<bpmn:sequenceFlow id="Flow_Task_call_customer__Gateway_call_customer__if" sourceRef="Task_call_customer" targetRef="Gateway_call_customer__if" />
<bpmn:sequenceFlow id="Flow_Gateway_collection_promised__if__Timer_promise_lapses" sourceRef="Gateway_collection_promised__if" targetRef="Timer_promise_lapses" />
<bpmn:sequenceFlow id="Flow_Gateway_collection_promised__if__Task_paid_in_full" sourceRef="Gateway_collection_promised__if" targetRef="Task_paid_in_full" />
<bpmn:sequenceFlow id="Flow_Gateway_call_customer__if__Gateway_collection_promised__if" name="promised" sourceRef="Gateway_call_customer__if" targetRef="Gateway_collection_promised__if" />
<bpmn:sequenceFlow id="Flow_Gateway_call_customer__if__Task_resolve_dispute" name="disputed" sourceRef="Gateway_call_customer__if" targetRef="Task_resolve_dispute" />
<bpmn:sequenceFlow id="Flow_Task_promise_lapses__Gateway_send_reminder__if" sourceRef="Task_promise_lapses" targetRef="Gateway_send_reminder__if" />
<bpmn:sequenceFlow id="Flow_Task_resolve_dispute__End_collection_resolved" sourceRef="Task_resolve_dispute" targetRef="End_collection_resolved" />
<bpmn:sequenceFlow id="Flow_Task_paid_in_full__End_collection_resolved" sourceRef="Task_paid_in_full" targetRef="End_collection_resolved" />
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_payments_v1">
<bpmndi:BPMNPlane id="BPMNPlane_payments_v1" bpmnElement="Collaboration_payments_v1">
<bpmndi:BPMNShape id="Participant_payments_receipt_di" bpmnElement="Participant_payments_receipt" isHorizontal="true">
<dc:Bounds x="0" y="0" width="2320" height="660" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_receipt_customer_di" bpmnElement="Lane_receipt_customer" isHorizontal="true">
<dc:Bounds x="30" y="0" width="2290" height="140" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_receipt_cashier_di" bpmnElement="Lane_receipt_cashier" isHorizontal="true">
<dc:Bounds x="30" y="140" width="2290" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_receipt_system_di" bpmnElement="Lane_receipt_system" isHorizontal="true">
<dc:Bounds x="30" y="400" width="2290" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Start_receipt_di" bpmnElement="Start_receipt">
<dc:Bounds x="157" y="42" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_customer_pays_di" bpmnElement="Task_customer_pays">
<dc:Bounds x="465" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_record_receipt_di" bpmnElement="Task_record_receipt">
<dc:Bounds x="465" y="160" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_import_statement_di" bpmnElement="Task_import_statement">
<dc:Bounds x="465" y="420" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_ai_suggest_match_di" bpmnElement="Task_ai_suggest_match">
<dc:Bounds x="805" y="420" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_allocate_di" bpmnElement="Task_allocate">
<dc:Bounds x="1145" y="160" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_settle_difference_di" bpmnElement="Task_settle_difference">
<dc:Bounds x="1485" y="160" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_unallocate_di" bpmnElement="Task_unallocate">
<dc:Bounds x="1655" y="160" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_reverse_receipt_di" bpmnElement="Task_reverse_receipt">
<dc:Bounds x="1995" y="160" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_receipt_none__if_di" bpmnElement="Gateway_receipt_none__if">
<dc:Bounds x="320" y="35" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_ai_suggest_match__if_di" bpmnElement="Gateway_ai_suggest_match__if">
<dc:Bounds x="660" y="435" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_ai_suggest_match__if_end_di" bpmnElement="Gateway_ai_suggest_match__if_end">
<dc:Bounds x="830" y="555" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_allocate__if_di" bpmnElement="Gateway_allocate__if">
<dc:Bounds x="1000" y="175" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_allocate__if_end_di" bpmnElement="Gateway_allocate__if_end">
<dc:Bounds x="1170" y="295" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_settle_difference__if_di" bpmnElement="Gateway_settle_difference__if">
<dc:Bounds x="1340" y="175" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_settle_difference__if_end_di" bpmnElement="Gateway_settle_difference__if_end">
<dc:Bounds x="1510" y="295" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_receipt_received__if_di" bpmnElement="Gateway_receipt_received__if">
<dc:Bounds x="1850" y="175" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_receipt_received_di" bpmnElement="End_receipt_received">
<dc:Bounds x="2027" y="302" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_receipt_reversed_di" bpmnElement="End_receipt_reversed">
<dc:Bounds x="2197" y="182" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_Gateway_receipt_none__if__Task_customer_pays_di" bpmnElement="Flow_Gateway_receipt_none__if__Task_customer_pays">
<di:waypoint x="370" y="60" />
<di:waypoint x="465" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_receipt_none__if__Task_record_receipt_di" bpmnElement="Flow_Gateway_receipt_none__if__Task_record_receipt">
<di:waypoint x="370" y="60" />
<di:waypoint x="440" y="60" />
<di:waypoint x="440" y="200" />
<di:waypoint x="465" y="200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_receipt_none__if__Task_import_statement_di" bpmnElement="Flow_Gateway_receipt_none__if__Task_import_statement">
<di:waypoint x="370" y="60" />
<di:waypoint x="440" y="60" />
<di:waypoint x="440" y="460" />
<di:waypoint x="465" y="460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Start_receipt__Gateway_receipt_none__if_di" bpmnElement="Flow_Start_receipt__Gateway_receipt_none__if">
<di:waypoint x="193" y="60" />
<di:waypoint x="320" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_suggest_match__if__Task_ai_suggest_match_di" bpmnElement="Flow_Gateway_ai_suggest_match__if__Task_ai_suggest_match">
<di:waypoint x="710" y="460" />
<di:waypoint x="805" y="460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_suggest_match__if__Gateway_ai_suggest_match__if_end_di" bpmnElement="Flow_Gateway_ai_suggest_match__if__Gateway_ai_suggest_match__if_end">
<di:waypoint x="710" y="460" />
<di:waypoint x="805" y="460" />
<di:waypoint x="805" y="580" />
<di:waypoint x="830" y="580" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_ai_suggest_match__Gateway_ai_suggest_match__if_end_di" bpmnElement="Flow_Task_ai_suggest_match__Gateway_ai_suggest_match__if_end">
<di:waypoint x="855" y="500" />
<di:waypoint x="855" y="620" />
<di:waypoint x="855" y="620" />
<di:waypoint x="855" y="605" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_allocate__if__Task_allocate_di" bpmnElement="Flow_Gateway_allocate__if__Task_allocate">
<di:waypoint x="1050" y="200" />
<di:waypoint x="1145" y="200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_allocate__if__Gateway_allocate__if_end_di" bpmnElement="Flow_Gateway_allocate__if__Gateway_allocate__if_end">
<di:waypoint x="1050" y="200" />
<di:waypoint x="1145" y="200" />
<di:waypoint x="1145" y="320" />
<di:waypoint x="1170" y="320" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_allocate__Gateway_allocate__if_end_di" bpmnElement="Flow_Task_allocate__Gateway_allocate__if_end">
<di:waypoint x="1195" y="240" />
<di:waypoint x="1195" y="366" />
<di:waypoint x="1195" y="366" />
<di:waypoint x="1195" y="345" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_settle_difference__if__Task_settle_difference_di" bpmnElement="Flow_Gateway_settle_difference__if__Task_settle_difference">
<di:waypoint x="1390" y="200" />
<di:waypoint x="1485" y="200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_settle_difference__if__Gateway_settle_difference__if_end_di" bpmnElement="Flow_Gateway_settle_difference__if__Gateway_settle_difference__if_end">
<di:waypoint x="1390" y="200" />
<di:waypoint x="1485" y="200" />
<di:waypoint x="1485" y="320" />
<di:waypoint x="1510" y="320" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_settle_difference__Gateway_settle_difference__if_end_di" bpmnElement="Flow_Task_settle_difference__Gateway_settle_difference__if_end">
<di:waypoint x="1535" y="240" />
<di:waypoint x="1535" y="372" />
<di:waypoint x="1535" y="372" />
<di:waypoint x="1535" y="345" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_suggest_match__if_end__Gateway_allocate__if_di" bpmnElement="Flow_Gateway_ai_suggest_match__if_end__Gateway_allocate__if">
<di:waypoint x="880" y="580" />
<di:waypoint x="975" y="580" />
<di:waypoint x="975" y="200" />
<di:waypoint x="1000" y="200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_allocate__if_end__Gateway_settle_difference__if_di" bpmnElement="Flow_Gateway_allocate__if_end__Gateway_settle_difference__if">
<di:waypoint x="1220" y="320" />
<di:waypoint x="1315" y="320" />
<di:waypoint x="1315" y="200" />
<di:waypoint x="1340" y="200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_settle_difference__if_end__Task_unallocate_di" bpmnElement="Flow_Gateway_settle_difference__if_end__Task_unallocate">
<di:waypoint x="1560" y="320" />
<di:waypoint x="1630" y="320" />
<di:waypoint x="1630" y="200" />
<di:waypoint x="1655" y="200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_receipt_received__if__Task_reverse_receipt_di" bpmnElement="Flow_Gateway_receipt_received__if__Task_reverse_receipt">
<di:waypoint x="1900" y="200" />
<di:waypoint x="1995" y="200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_receipt_received__if__End_receipt_received_di" bpmnElement="Flow_Gateway_receipt_received__if__End_receipt_received">
<di:waypoint x="1900" y="200" />
<di:waypoint x="2002" y="200" />
<di:waypoint x="2002" y="320" />
<di:waypoint x="2027" y="320" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_unallocate__Gateway_receipt_received__if_di" bpmnElement="Flow_Task_unallocate__Gateway_receipt_received__if">
<di:waypoint x="1755" y="200" />
<di:waypoint x="1850" y="200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_customer_pays__Gateway_ai_suggest_match__if_di" bpmnElement="Flow_Task_customer_pays__Gateway_ai_suggest_match__if">
<di:waypoint x="565" y="60" />
<di:waypoint x="635" y="60" />
<di:waypoint x="635" y="460" />
<di:waypoint x="660" y="460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_record_receipt__Gateway_ai_suggest_match__if_di" bpmnElement="Flow_Task_record_receipt__Gateway_ai_suggest_match__if">
<di:waypoint x="565" y="200" />
<di:waypoint x="635" y="200" />
<di:waypoint x="635" y="460" />
<di:waypoint x="660" y="460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_import_statement__Gateway_ai_suggest_match__if_di" bpmnElement="Flow_Task_import_statement__Gateway_ai_suggest_match__if">
<di:waypoint x="565" y="460" />
<di:waypoint x="660" y="460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_reverse_receipt__End_receipt_reversed_di" bpmnElement="Flow_Task_reverse_receipt__End_receipt_reversed">
<di:waypoint x="2095" y="200" />
<di:waypoint x="2197" y="200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Participant_payments_refund_di" bpmnElement="Participant_payments_refund" isHorizontal="true">
<dc:Bounds x="0" y="700" width="1130" height="400" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_refund_cashier_di" bpmnElement="Lane_refund_cashier" isHorizontal="true">
<dc:Bounds x="30" y="700" width="1100" height="140" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_refund_approver_di" bpmnElement="Lane_refund_approver" isHorizontal="true">
<dc:Bounds x="30" y="840" width="1100" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Start_refund_di" bpmnElement="Start_refund">
<dc:Bounds x="157" y="742" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_request_refund_di" bpmnElement="Task_request_refund">
<dc:Bounds x="295" y="720" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_approve_refund_di" bpmnElement="Task_approve_refund">
<dc:Bounds x="635" y="860" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_reject_refund_di" bpmnElement="Task_reject_refund">
<dc:Bounds x="635" y="980" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_pay_refund_di" bpmnElement="Task_pay_refund">
<dc:Bounds x="805" y="720" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_refund_requested__if_di" bpmnElement="Gateway_refund_requested__if">
<dc:Bounds x="490" y="875" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_refund_rejected_di" bpmnElement="End_refund_rejected">
<dc:Bounds x="837" y="882" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_refund_paid_di" bpmnElement="End_refund_paid">
<dc:Bounds x="1007" y="742" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_Start_refund__Task_request_refund_di" bpmnElement="Flow_Start_refund__Task_request_refund">
<di:waypoint x="193" y="760" />
<di:waypoint x="295" y="760" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_refund_requested__if__Task_approve_refund_di" bpmnElement="Flow_Gateway_refund_requested__if__Task_approve_refund">
<di:waypoint x="540" y="900" />
<di:waypoint x="635" y="900" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_refund_requested__if__Task_reject_refund_di" bpmnElement="Flow_Gateway_refund_requested__if__Task_reject_refund">
<di:waypoint x="540" y="900" />
<di:waypoint x="610" y="900" />
<di:waypoint x="610" y="1020" />
<di:waypoint x="635" y="1020" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_request_refund__Gateway_refund_requested__if_di" bpmnElement="Flow_Task_request_refund__Gateway_refund_requested__if">
<di:waypoint x="395" y="760" />
<di:waypoint x="465" y="760" />
<di:waypoint x="465" y="900" />
<di:waypoint x="490" y="900" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_approve_refund__Task_pay_refund_di" bpmnElement="Flow_Task_approve_refund__Task_pay_refund">
<di:waypoint x="735" y="900" />
<di:waypoint x="780" y="900" />
<di:waypoint x="780" y="760" />
<di:waypoint x="805" y="760" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_reject_refund__End_refund_rejected_di" bpmnElement="Flow_Task_reject_refund__End_refund_rejected">
<di:waypoint x="735" y="1020" />
<di:waypoint x="812" y="1020" />
<di:waypoint x="812" y="900" />
<di:waypoint x="837" y="900" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_pay_refund__End_refund_paid_di" bpmnElement="Flow_Task_pay_refund__End_refund_paid">
<di:waypoint x="905" y="760" />
<di:waypoint x="1007" y="760" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Participant_payments_collection_di" bpmnElement="Participant_payments_collection" isHorizontal="true">
<dc:Bounds x="0" y="1140" width="1810" height="660" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_collection_system_di" bpmnElement="Lane_collection_system" isHorizontal="true">
<dc:Bounds x="30" y="1140" width="1780" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_collection_collector_di" bpmnElement="Lane_collection_collector" isHorizontal="true">
<dc:Bounds x="30" y="1400" width="1780" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_collection_customer_di" bpmnElement="Lane_collection_customer" isHorizontal="true">
<dc:Bounds x="30" y="1660" width="1780" height="140" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Start_collection_di" bpmnElement="Start_collection">
<dc:Bounds x="157" y="1182" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_fall_overdue_di" bpmnElement="Task_fall_overdue">
<dc:Bounds x="465" y="1160" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Timer_fall_overdue_di" bpmnElement="Timer_fall_overdue">
<dc:Bounds x="327" y="1182" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_ai_draft_reminder_di" bpmnElement="Task_ai_draft_reminder">
<dc:Bounds x="975" y="1160" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Timer_ai_draft_reminder_di" bpmnElement="Timer_ai_draft_reminder">
<dc:Bounds x="837" y="1182" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_send_reminder_di" bpmnElement="Task_send_reminder">
<dc:Bounds x="1315" y="1420" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_call_customer_di" bpmnElement="Task_call_customer">
<dc:Bounds x="805" y="1420" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_customer_responds_di" bpmnElement="Task_customer_responds">
<dc:Bounds x="1485" y="1680" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_promise_lapses_di" bpmnElement="Task_promise_lapses">
<dc:Bounds x="1485" y="1160" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Timer_promise_lapses_di" bpmnElement="Timer_promise_lapses">
<dc:Bounds x="1347" y="1182" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_resolve_dispute_di" bpmnElement="Task_resolve_dispute">
<dc:Bounds x="1145" y="1420" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_paid_in_full_di" bpmnElement="Task_paid_in_full">
<dc:Bounds x="805" y="1280" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_collection_overdue__if_di" bpmnElement="Gateway_collection_overdue__if">
<dc:Bounds x="660" y="1175" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_send_reminder__if_di" bpmnElement="Gateway_send_reminder__if">
<dc:Bounds x="1170" y="1555" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_send_reminder__if_end_di" bpmnElement="Gateway_send_reminder__if_end">
<dc:Bounds x="1340" y="1555" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_collection_reminded__if_di" bpmnElement="Gateway_collection_reminded__if">
<dc:Bounds x="1680" y="1175" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_call_customer__if_di" bpmnElement="Gateway_call_customer__if">
<dc:Bounds x="1000" y="1435" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_collection_promised__if_di" bpmnElement="Gateway_collection_promised__if">
<dc:Bounds x="1170" y="1175" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_collection_resolved_di" bpmnElement="End_collection_resolved">
<dc:Bounds x="1007" y="1562" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_Timer_fall_overdue__Task_fall_overdue_di" bpmnElement="Flow_Timer_fall_overdue__Task_fall_overdue">
<di:waypoint x="363" y="1200" />
<di:waypoint x="465" y="1200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Timer_ai_draft_reminder__Task_ai_draft_reminder_di" bpmnElement="Flow_Timer_ai_draft_reminder__Task_ai_draft_reminder">
<di:waypoint x="873" y="1200" />
<di:waypoint x="975" y="1200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Timer_promise_lapses__Task_promise_lapses_di" bpmnElement="Flow_Timer_promise_lapses__Task_promise_lapses">
<di:waypoint x="1383" y="1200" />
<di:waypoint x="1485" y="1200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Start_collection__Timer_fall_overdue_di" bpmnElement="Flow_Start_collection__Timer_fall_overdue">
<di:waypoint x="193" y="1200" />
<di:waypoint x="327" y="1200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_collection_overdue__if__Timer_ai_draft_reminder_di" bpmnElement="Flow_Gateway_collection_overdue__if__Timer_ai_draft_reminder">
<di:waypoint x="710" y="1200" />
<di:waypoint x="837" y="1200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_collection_overdue__if__Task_call_customer_di" bpmnElement="Flow_Gateway_collection_overdue__if__Task_call_customer">
<di:waypoint x="710" y="1200" />
<di:waypoint x="780" y="1200" />
<di:waypoint x="780" y="1460" />
<di:waypoint x="805" y="1460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_collection_overdue__if__Task_paid_in_full_di" bpmnElement="Flow_Gateway_collection_overdue__if__Task_paid_in_full">
<di:waypoint x="710" y="1200" />
<di:waypoint x="780" y="1200" />
<di:waypoint x="780" y="1320" />
<di:waypoint x="805" y="1320" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_fall_overdue__Gateway_collection_overdue__if_di" bpmnElement="Flow_Task_fall_overdue__Gateway_collection_overdue__if">
<di:waypoint x="565" y="1200" />
<di:waypoint x="660" y="1200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_send_reminder__if__Task_send_reminder_di" bpmnElement="Flow_Gateway_send_reminder__if__Task_send_reminder">
<di:waypoint x="1220" y="1580" />
<di:waypoint x="1290" y="1580" />
<di:waypoint x="1290" y="1460" />
<di:waypoint x="1315" y="1460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_send_reminder__if__Gateway_send_reminder__if_end_di" bpmnElement="Flow_Gateway_send_reminder__if__Gateway_send_reminder__if_end">
<di:waypoint x="1220" y="1580" />
<di:waypoint x="1340" y="1580" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_send_reminder__Gateway_send_reminder__if_end_di" bpmnElement="Flow_Task_send_reminder__Gateway_send_reminder__if_end">
<di:waypoint x="1365" y="1500" />
<di:waypoint x="1365" y="1620" />
<di:waypoint x="1365" y="1620" />
<di:waypoint x="1365" y="1605" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_send_reminder__if_end__Task_customer_responds_di" bpmnElement="Flow_Gateway_send_reminder__if_end__Task_customer_responds">
<di:waypoint x="1390" y="1580" />
<di:waypoint x="1460" y="1580" />
<di:waypoint x="1460" y="1720" />
<di:waypoint x="1485" y="1720" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_collection_reminded__if__Timer_ai_draft_reminder_di" bpmnElement="Flow_Gateway_collection_reminded__if__Timer_ai_draft_reminder">
<di:waypoint x="1705" y="1225" />
<di:waypoint x="1705" y="1246" />
<di:waypoint x="855" y="1246" />
<di:waypoint x="855" y="1218" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_collection_reminded__if__Task_call_customer_di" bpmnElement="Flow_Gateway_collection_reminded__if__Task_call_customer">
<di:waypoint x="1705" y="1225" />
<di:waypoint x="1705" y="1527" />
<di:waypoint x="855" y="1527" />
<di:waypoint x="855" y="1500" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_collection_reminded__if__Task_paid_in_full_di" bpmnElement="Flow_Gateway_collection_reminded__if__Task_paid_in_full">
<di:waypoint x="1705" y="1225" />
<di:waypoint x="1705" y="1393" />
<di:waypoint x="855" y="1393" />
<di:waypoint x="855" y="1360" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_customer_responds__Gateway_collection_reminded__if_di" bpmnElement="Flow_Task_customer_responds__Gateway_collection_reminded__if">
<di:waypoint x="1585" y="1720" />
<di:waypoint x="1655" y="1720" />
<di:waypoint x="1655" y="1200" />
<di:waypoint x="1680" y="1200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_ai_draft_reminder__Gateway_send_reminder__if_di" bpmnElement="Flow_Task_ai_draft_reminder__Gateway_send_reminder__if">
<di:waypoint x="1075" y="1200" />
<di:waypoint x="1145" y="1200" />
<di:waypoint x="1145" y="1580" />
<di:waypoint x="1170" y="1580" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_call_customer__Gateway_call_customer__if_di" bpmnElement="Flow_Task_call_customer__Gateway_call_customer__if">
<di:waypoint x="905" y="1460" />
<di:waypoint x="1000" y="1460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_collection_promised__if__Timer_promise_lapses_di" bpmnElement="Flow_Gateway_collection_promised__if__Timer_promise_lapses">
<di:waypoint x="1220" y="1200" />
<di:waypoint x="1347" y="1200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_collection_promised__if__Task_paid_in_full_di" bpmnElement="Flow_Gateway_collection_promised__if__Task_paid_in_full">
<di:waypoint x="1195" y="1225" />
<di:waypoint x="1195" y="1375" />
<di:waypoint x="855" y="1375" />
<di:waypoint x="855" y="1360" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_call_customer__if__Gateway_collection_promised__if_di" bpmnElement="Flow_Gateway_call_customer__if__Gateway_collection_promised__if">
<di:waypoint x="1050" y="1460" />
<di:waypoint x="1145" y="1460" />
<di:waypoint x="1145" y="1200" />
<di:waypoint x="1170" y="1200" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_call_customer__if__Task_resolve_dispute_di" bpmnElement="Flow_Gateway_call_customer__if__Task_resolve_dispute">
<di:waypoint x="1050" y="1460" />
<di:waypoint x="1145" y="1460" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_promise_lapses__Gateway_send_reminder__if_di" bpmnElement="Flow_Task_promise_lapses__Gateway_send_reminder__if">
<di:waypoint x="1535" y="1240" />
<di:waypoint x="1535" y="1626" />
<di:waypoint x="1195" y="1626" />
<di:waypoint x="1195" y="1605" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_resolve_dispute__End_collection_resolved_di" bpmnElement="Flow_Task_resolve_dispute__End_collection_resolved">
<di:waypoint x="1195" y="1500" />
<di:waypoint x="1195" y="1625" />
<di:waypoint x="1025" y="1625" />
<di:waypoint x="1025" y="1598" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_paid_in_full__End_collection_resolved_di" bpmnElement="Flow_Task_paid_in_full__End_collection_resolved">
<di:waypoint x="905" y="1320" />
<di:waypoint x="982" y="1320" />
<di:waypoint x="982" y="1580" />
<di:waypoint x="1007" y="1580" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Participant_customer_di" bpmnElement="Participant_customer" isHorizontal="true">
<dc:Bounds x="0" y="1840" width="2320" height="60" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_Participant_customer__Task_customer_pays_di" bpmnElement="Flow_Participant_customer__Task_customer_pays">
<di:waypoint x="515" y="1840" />
<di:waypoint x="515" y="100" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Participant_customer__Task_customer_responds_di" bpmnElement="Flow_Participant_customer__Task_customer_responds">
<di:waypoint x="1535" y="1840" />
<di:waypoint x="1535" y="1760" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>