dodil/erp-method
modules/payments/signoff/payments/history/payments_receipt.v1.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_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: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>
<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_customer_di" bpmnElement="Participant_customer" isHorizontal="true">
<dc:Bounds x="0" y="700" 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="700" />
<di:waypoint x="515" y="100" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>