dodil/erp-method

modules/expenses/signoff/expenses/history/expenses_expense_report.v2.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_expenses_v2" name="Expenses processes" targetNamespace="https://git.dodil.io/dodil/erp-platform/processes" exporter="erp-platform erp-compose bpmn" exporterVersion="1">
 <bpmn:collaboration id="Collaboration_expenses_v2">
  <bpmn:documentation>Expenses: one pool per entity lifecycle, generated from module.yaml.</bpmn:documentation>
  <bpmn:participant id="Participant_expenses_expense_report" name="Expense report" processRef="Process_expenses_expense_report_v2" />
 </bpmn:collaboration>
 <bpmn:process id="Process_expenses_expense_report_v2" name="Expense report" isExecutable="false">
  <bpmn:documentation>Lifecycle of the expense report, generated from module.yaml by erp-compose bpmn; change the workflow there, not this file. States: draft, submitted, approved, posted, paid, returned, rejected, cancelled, post_failed, reversed. Note: returned is terminal for its revision; the claim continues as revision n+1, so no state is ever re-entered</bpmn:documentation>
  <bpmn:laneSet id="LaneSet_expense_report">
   <bpmn:lane id="Lane_expense_report_employee" name="Anyone who spends money for work">
    <bpmn:flowNodeRef>Start_expense_report</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Task_create_report</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Task_submit_report</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Task_cancel_report</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Gateway_expense_report_draft__if</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>End_expense_report_cancelled</bpmn:flowNodeRef>
   </bpmn:lane>
   <bpmn:lane id="Lane_expense_report_system" name="The system">
    <bpmn:flowNodeRef>Task_read_receipt</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Task_complete_approval</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Task_post_report</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Task_fail_report_post</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Task_confirm_paid</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Gateway_read_receipt__if</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Gateway_read_receipt__if_end</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Gateway_expense_report_submitted__if</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Gateway_expense_report_approved__if</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Gateway_expense_report_posted__if</bpmn:flowNodeRef>
   </bpmn:lane>
   <bpmn:lane id="Lane_expense_report_manager" name="Line manager (derived from hr)">
    <bpmn:flowNodeRef>Task_approve_level</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Task_return_report</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Task_reject_report</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Gateway_approve_level__if</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Gateway_approve_level__if_end</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>End_expense_report_returned</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>End_expense_report_rejected</bpmn:flowNodeRef>
   </bpmn:lane>
   <bpmn:lane id="Lane_expense_report_finance" name="Expenses accountant">
    <bpmn:flowNodeRef>Task_reverse_report</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>Gateway_expense_report_paid__if</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>End_expense_report_paid</bpmn:flowNodeRef>
    <bpmn:flowNodeRef>End_expense_report_reversed</bpmn:flowNodeRef>
   </bpmn:lane>
  </bpmn:laneSet>
  <bpmn:startEvent id="Start_expense_report" name="Expense report needed">
   <bpmn:outgoing>Flow_Start_expense_report__Task_create_report</bpmn:outgoing>
  </bpmn:startEvent>
  <bpmn:userTask id="Task_create_report" name="Start a claim" dodil:step="create_report">
   <bpmn:documentation>By: Anyone who spends money for work. From none to draft. When: the claimant employed on the date (hr). Effect: report_id claimed from the company's yearly series.</bpmn:documentation>
   <bpmn:incoming>Flow_Start_expense_report__Task_create_report</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_create_report__Gateway_read_receipt__if</bpmn:outgoing>
  </bpmn:userTask>
  <bpmn:serviceTask id="Task_read_receipt" name="Read the receipt (AI, suggest)" dodil:step="read_receipt" implementation="##unspecified">
   <bpmn:documentation>By: The system. From draft to draft. When: the employee's consent recorded; the step's mode suggest. Effect: suggested fields marked until confirmed (EXP-01).</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_read_receipt__if__Task_read_receipt</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_read_receipt__Gateway_read_receipt__if_end</bpmn:outgoing>
  </bpmn:serviceTask>
  <bpmn:userTask id="Task_submit_report" name="Submit the claim" dodil:step="submit_report">
   <bpmn:documentation>By: Anyone who spends money for work. From draft to submitted. When: lines ready; receipts present; no block rule broken; card transactions of the period resolved; no stale line. Effect: approval chain derived from hr and fixed; lines frozen.</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_expense_report_draft__if__Task_submit_report</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_submit_report__Gateway_approve_level__if</bpmn:outgoing>
  </bpmn:userTask>
  <bpmn:userTask id="Task_approve_level" name="Approve one level" dodil:step="approve_level" dodil:approval="true">
   <bpmn:documentation>By: Line manager (derived from hr) or Expenses accountant. From submitted to submitted. When: the approver is the level's approver or delegate and is not the claimant (email AND sub); the revision is the current one. Effect: the level recorded; on the last level the claim moves to approved. An approval.</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_approve_level__if__Task_approve_level</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_approve_level__Gateway_approve_level__if_end</bpmn:outgoing>
  </bpmn:userTask>
  <bpmn:serviceTask id="Task_complete_approval" name="Last level approved" dodil:step="complete_approval" implementation="##unspecified">
   <bpmn:documentation>By: The system. From submitted to approved. When: every level of the revision approved.</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_expense_report_submitted__if__Task_complete_approval</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_complete_approval__Gateway_expense_report_approved__if</bpmn:outgoing>
  </bpmn:serviceTask>
  <bpmn:userTask id="Task_return_report" name="Return with a question" dodil:step="return_report">
   <bpmn:documentation>By: Line manager (derived from hr) or Expenses accountant. From submitted to returned. Requires: reason. Effect: a draft revision n+1 created with the lines copied; rev n approvals void.</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_expense_report_submitted__if__Task_return_report</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_return_report__End_expense_report_returned</bpmn:outgoing>
  </bpmn:userTask>
  <bpmn:userTask id="Task_reject_report" name="Reject" dodil:step="reject_report">
   <bpmn:documentation>By: Line manager (derived from hr) or Expenses accountant. From submitted to rejected. Requires: reason.</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_expense_report_submitted__if__Task_reject_report</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_reject_report__End_expense_report_rejected</bpmn:outgoing>
  </bpmn:userTask>
  <bpmn:userTask id="Task_cancel_report" name="Cancel a draft" dodil:step="cancel_report">
   <bpmn:documentation>By: Anyone who spends money for work. From draft to cancelled.</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_expense_report_draft__if__Task_cancel_report</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_cancel_report__End_expense_report_cancelled</bpmn:outgoing>
  </bpmn:userTask>
  <bpmn:serviceTask id="Task_post_report" name="Post the claim" dodil:step="post_report" implementation="##unspecified">
   <bpmn:documentation>By: The system. From approved / post_failed to posted. When: the gl period of the approval date open. Effect: one journal (EXP-12); a payout requested from a pending row (EXP-13).</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_expense_report_approved__if__Task_post_report</bpmn:incoming>
   <bpmn:incoming>Flow_Task_fail_report_post__Task_post_report</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_post_report__Gateway_expense_report_posted__if</bpmn:outgoing>
  </bpmn:serviceTask>
  <bpmn:serviceTask id="Task_fail_report_post" name="Posting refused" dodil:step="fail_report_post" implementation="##unspecified">
   <bpmn:documentation>By: The system. From approved to post_failed. Effect: gl's gate and reason kept.</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_expense_report_approved__if__Task_fail_report_post</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_fail_report_post__Task_post_report</bpmn:outgoing>
  </bpmn:serviceTask>
  <bpmn:serviceTask id="Task_confirm_paid" name="Paid" dodil:step="confirm_paid" implementation="##unspecified">
   <bpmn:documentation>By: The system. From posted to paid. When: payments confirmed the payout.</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_expense_report_posted__if__Task_confirm_paid</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_confirm_paid__Gateway_expense_report_paid__if</bpmn:outgoing>
  </bpmn:serviceTask>
  <bpmn:userTask id="Task_reverse_report" name="Reverse the posted claim" dodil:step="reverse_report">
   <bpmn:documentation>By: Expenses accountant. From posted / paid to reversed. When: not reversed already; a period open for the reversal date (today, else the first day of the next open period). Requires: reason. Effect: v2 (EXP-26): a mirror journal keyed derived_id('exp:&lt;report_id&gt;:r&lt;revision&gt;', 'reverse'), gl event reverse; a payout not yet exported cancelled, else an employee_receivable netted or repaid as in EXP-14.</bpmn:documentation>
   <bpmn:incoming>Flow_Gateway_expense_report_posted__if__Task_reverse_report</bpmn:incoming>
   <bpmn:incoming>Flow_Gateway_expense_report_paid__if__Task_reverse_report</bpmn:incoming>
   <bpmn:outgoing>Flow_Task_reverse_report__End_expense_report_reversed</bpmn:outgoing>
  </bpmn:userTask>
  <bpmn:exclusiveGateway id="Gateway_read_receipt__if" name="the employee's consent recorded; the step's mode suggest?">
   <bpmn:incoming>Flow_Task_create_report__Gateway_read_receipt__if</bpmn:incoming>
   <bpmn:outgoing>Flow_Gateway_read_receipt__if__Task_read_receipt</bpmn:outgoing>
   <bpmn:outgoing>Flow_Gateway_read_receipt__if__Gateway_read_receipt__if_end</bpmn:outgoing>
  </bpmn:exclusiveGateway>
  <bpmn:exclusiveGateway id="Gateway_read_receipt__if_end">
   <bpmn:incoming>Flow_Gateway_read_receipt__if__Gateway_read_receipt__if_end</bpmn:incoming>
   <bpmn:incoming>Flow_Task_read_receipt__Gateway_read_receipt__if_end</bpmn:incoming>
   <bpmn:outgoing>Flow_Gateway_read_receipt__if_end__Gateway_expense_report_draft__if</bpmn:outgoing>
  </bpmn:exclusiveGateway>
  <bpmn:exclusiveGateway id="Gateway_expense_report_draft__if" name="Expense report draft: what next?">
   <bpmn:incoming>Flow_Gateway_read_receipt__if_end__Gateway_expense_report_draft__if</bpmn:incoming>
   <bpmn:outgoing>Flow_Gateway_expense_report_draft__if__Task_submit_report</bpmn:outgoing>
   <bpmn:outgoing>Flow_Gateway_expense_report_draft__if__Task_cancel_report</bpmn:outgoing>
  </bpmn:exclusiveGateway>
  <bpmn:exclusiveGateway id="Gateway_approve_level__if" name="the approver is the level's approver or delegate and is not the claimant (email AND sub); the revision is the current one?">
   <bpmn:incoming>Flow_Task_submit_report__Gateway_approve_level__if</bpmn:incoming>
   <bpmn:outgoing>Flow_Gateway_approve_level__if__Task_approve_level</bpmn:outgoing>
   <bpmn:outgoing>Flow_Gateway_approve_level__if__Gateway_approve_level__if_end</bpmn:outgoing>
  </bpmn:exclusiveGateway>
  <bpmn:exclusiveGateway id="Gateway_approve_level__if_end">
   <bpmn:incoming>Flow_Gateway_approve_level__if__Gateway_approve_level__if_end</bpmn:incoming>
   <bpmn:incoming>Flow_Task_approve_level__Gateway_approve_level__if_end</bpmn:incoming>
   <bpmn:outgoing>Flow_Gateway_approve_level__if_end__Gateway_expense_report_submitted__if</bpmn:outgoing>
  </bpmn:exclusiveGateway>
  <bpmn:exclusiveGateway id="Gateway_expense_report_submitted__if" name="Expense report submitted: what next?">
   <bpmn:incoming>Flow_Gateway_approve_level__if_end__Gateway_expense_report_submitted__if</bpmn:incoming>
   <bpmn:outgoing>Flow_Gateway_expense_report_submitted__if__Task_complete_approval</bpmn:outgoing>
   <bpmn:outgoing>Flow_Gateway_expense_report_submitted__if__Task_return_report</bpmn:outgoing>
   <bpmn:outgoing>Flow_Gateway_expense_report_submitted__if__Task_reject_report</bpmn:outgoing>
  </bpmn:exclusiveGateway>
  <bpmn:exclusiveGateway id="Gateway_expense_report_approved__if" name="Expense report approved: what next?">
   <bpmn:incoming>Flow_Task_complete_approval__Gateway_expense_report_approved__if</bpmn:incoming>
   <bpmn:outgoing>Flow_Gateway_expense_report_approved__if__Task_post_report</bpmn:outgoing>
   <bpmn:outgoing>Flow_Gateway_expense_report_approved__if__Task_fail_report_post</bpmn:outgoing>
  </bpmn:exclusiveGateway>
  <bpmn:endEvent id="End_expense_report_returned" name="Expense report returned">
   <bpmn:incoming>Flow_Task_return_report__End_expense_report_returned</bpmn:incoming>
  </bpmn:endEvent>
  <bpmn:endEvent id="End_expense_report_rejected" name="Expense report rejected">
   <bpmn:incoming>Flow_Task_reject_report__End_expense_report_rejected</bpmn:incoming>
  </bpmn:endEvent>
  <bpmn:endEvent id="End_expense_report_cancelled" name="Expense report cancelled">
   <bpmn:incoming>Flow_Task_cancel_report__End_expense_report_cancelled</bpmn:incoming>
  </bpmn:endEvent>
  <bpmn:exclusiveGateway id="Gateway_expense_report_posted__if" name="Expense report posted: what next?">
   <bpmn:incoming>Flow_Task_post_report__Gateway_expense_report_posted__if</bpmn:incoming>
   <bpmn:outgoing>Flow_Gateway_expense_report_posted__if__Task_confirm_paid</bpmn:outgoing>
   <bpmn:outgoing>Flow_Gateway_expense_report_posted__if__Task_reverse_report</bpmn:outgoing>
  </bpmn:exclusiveGateway>
  <bpmn:exclusiveGateway id="Gateway_expense_report_paid__if" name="Expense report paid: done, or go on?">
   <bpmn:incoming>Flow_Task_confirm_paid__Gateway_expense_report_paid__if</bpmn:incoming>
   <bpmn:outgoing>Flow_Gateway_expense_report_paid__if__Task_reverse_report</bpmn:outgoing>
   <bpmn:outgoing>Flow_Gateway_expense_report_paid__if__End_expense_report_paid</bpmn:outgoing>
  </bpmn:exclusiveGateway>
  <bpmn:endEvent id="End_expense_report_paid" name="Expense report paid">
   <bpmn:incoming>Flow_Gateway_expense_report_paid__if__End_expense_report_paid</bpmn:incoming>
  </bpmn:endEvent>
  <bpmn:endEvent id="End_expense_report_reversed" name="Expense report reversed">
   <bpmn:incoming>Flow_Task_reverse_report__End_expense_report_reversed</bpmn:incoming>
  </bpmn:endEvent>
  <bpmn:sequenceFlow id="Flow_Start_expense_report__Task_create_report" sourceRef="Start_expense_report" targetRef="Task_create_report" />
  <bpmn:sequenceFlow id="Flow_Gateway_read_receipt__if__Task_read_receipt" name="the employee's consent recorded; the step's mode suggest" sourceRef="Gateway_read_receipt__if" targetRef="Task_read_receipt" />
  <bpmn:sequenceFlow id="Flow_Gateway_read_receipt__if__Gateway_read_receipt__if_end" name="otherwise" sourceRef="Gateway_read_receipt__if" targetRef="Gateway_read_receipt__if_end" />
  <bpmn:sequenceFlow id="Flow_Task_read_receipt__Gateway_read_receipt__if_end" sourceRef="Task_read_receipt" targetRef="Gateway_read_receipt__if_end" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_draft__if__Task_submit_report" sourceRef="Gateway_expense_report_draft__if" targetRef="Task_submit_report" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_draft__if__Task_cancel_report" sourceRef="Gateway_expense_report_draft__if" targetRef="Task_cancel_report" />
  <bpmn:sequenceFlow id="Flow_Gateway_read_receipt__if_end__Gateway_expense_report_draft__if" sourceRef="Gateway_read_receipt__if_end" targetRef="Gateway_expense_report_draft__if" />
  <bpmn:sequenceFlow id="Flow_Task_create_report__Gateway_read_receipt__if" sourceRef="Task_create_report" targetRef="Gateway_read_receipt__if" />
  <bpmn:sequenceFlow id="Flow_Gateway_approve_level__if__Task_approve_level" name="the approver is the level's approver or delegate and is not the claimant (email AND sub); the revision is the current one" sourceRef="Gateway_approve_level__if" targetRef="Task_approve_level" />
  <bpmn:sequenceFlow id="Flow_Gateway_approve_level__if__Gateway_approve_level__if_end" name="otherwise" sourceRef="Gateway_approve_level__if" targetRef="Gateway_approve_level__if_end" />
  <bpmn:sequenceFlow id="Flow_Task_approve_level__Gateway_approve_level__if_end" sourceRef="Task_approve_level" targetRef="Gateway_approve_level__if_end" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_submitted__if__Task_complete_approval" sourceRef="Gateway_expense_report_submitted__if" targetRef="Task_complete_approval" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_submitted__if__Task_return_report" sourceRef="Gateway_expense_report_submitted__if" targetRef="Task_return_report" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_submitted__if__Task_reject_report" sourceRef="Gateway_expense_report_submitted__if" targetRef="Task_reject_report" />
  <bpmn:sequenceFlow id="Flow_Gateway_approve_level__if_end__Gateway_expense_report_submitted__if" sourceRef="Gateway_approve_level__if_end" targetRef="Gateway_expense_report_submitted__if" />
  <bpmn:sequenceFlow id="Flow_Task_submit_report__Gateway_approve_level__if" sourceRef="Task_submit_report" targetRef="Gateway_approve_level__if" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_approved__if__Task_post_report" sourceRef="Gateway_expense_report_approved__if" targetRef="Task_post_report" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_approved__if__Task_fail_report_post" sourceRef="Gateway_expense_report_approved__if" targetRef="Task_fail_report_post" />
  <bpmn:sequenceFlow id="Flow_Task_complete_approval__Gateway_expense_report_approved__if" sourceRef="Task_complete_approval" targetRef="Gateway_expense_report_approved__if" />
  <bpmn:sequenceFlow id="Flow_Task_return_report__End_expense_report_returned" sourceRef="Task_return_report" targetRef="End_expense_report_returned" />
  <bpmn:sequenceFlow id="Flow_Task_reject_report__End_expense_report_rejected" sourceRef="Task_reject_report" targetRef="End_expense_report_rejected" />
  <bpmn:sequenceFlow id="Flow_Task_cancel_report__End_expense_report_cancelled" sourceRef="Task_cancel_report" targetRef="End_expense_report_cancelled" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_posted__if__Task_confirm_paid" sourceRef="Gateway_expense_report_posted__if" targetRef="Task_confirm_paid" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_posted__if__Task_reverse_report" sourceRef="Gateway_expense_report_posted__if" targetRef="Task_reverse_report" />
  <bpmn:sequenceFlow id="Flow_Task_post_report__Gateway_expense_report_posted__if" sourceRef="Task_post_report" targetRef="Gateway_expense_report_posted__if" />
  <bpmn:sequenceFlow id="Flow_Task_fail_report_post__Task_post_report" sourceRef="Task_fail_report_post" targetRef="Task_post_report" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_paid__if__Task_reverse_report" sourceRef="Gateway_expense_report_paid__if" targetRef="Task_reverse_report" />
  <bpmn:sequenceFlow id="Flow_Gateway_expense_report_paid__if__End_expense_report_paid" name="done" sourceRef="Gateway_expense_report_paid__if" targetRef="End_expense_report_paid" />
  <bpmn:sequenceFlow id="Flow_Task_confirm_paid__Gateway_expense_report_paid__if" sourceRef="Task_confirm_paid" targetRef="Gateway_expense_report_paid__if" />
  <bpmn:sequenceFlow id="Flow_Task_reverse_report__End_expense_report_reversed" sourceRef="Task_reverse_report" targetRef="End_expense_report_reversed" />
 </bpmn:process>
 <bpmndi:BPMNDiagram id="BPMNDiagram_expenses_v2">
  <bpmndi:BPMNPlane id="BPMNPlane_expenses_v2" bpmnElement="Collaboration_expenses_v2">
   <bpmndi:BPMNShape id="Participant_expenses_expense_report_di" bpmnElement="Participant_expenses_expense_report" isHorizontal="true">
    <dc:Bounds x="0" y="0" width="2830" height="1040" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Lane_expense_report_employee_di" bpmnElement="Lane_expense_report_employee" isHorizontal="true">
    <dc:Bounds x="30" y="0" width="2800" height="260" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Lane_expense_report_system_di" bpmnElement="Lane_expense_report_system" isHorizontal="true">
    <dc:Bounds x="30" y="260" width="2800" height="260" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Lane_expense_report_manager_di" bpmnElement="Lane_expense_report_manager" isHorizontal="true">
    <dc:Bounds x="30" y="520" width="2800" height="260" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Lane_expense_report_finance_di" bpmnElement="Lane_expense_report_finance" isHorizontal="true">
    <dc:Bounds x="30" y="780" width="2800" height="260" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Start_expense_report_di" bpmnElement="Start_expense_report">
    <dc:Bounds x="157" y="42" width="36" height="36" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_create_report_di" bpmnElement="Task_create_report">
    <dc:Bounds x="295" y="20" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_read_receipt_di" bpmnElement="Task_read_receipt">
    <dc:Bounds x="635" y="280" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_submit_report_di" bpmnElement="Task_submit_report">
    <dc:Bounds x="975" y="20" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_approve_level_di" bpmnElement="Task_approve_level">
    <dc:Bounds x="1315" y="540" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_complete_approval_di" bpmnElement="Task_complete_approval">
    <dc:Bounds x="1655" y="280" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_return_report_di" bpmnElement="Task_return_report">
    <dc:Bounds x="1655" y="540" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_reject_report_di" bpmnElement="Task_reject_report">
    <dc:Bounds x="1655" y="660" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_cancel_report_di" bpmnElement="Task_cancel_report">
    <dc:Bounds x="975" y="140" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_post_report_di" bpmnElement="Task_post_report">
    <dc:Bounds x="1995" y="280" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_fail_report_post_di" bpmnElement="Task_fail_report_post">
    <dc:Bounds x="1995" y="400" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_confirm_paid_di" bpmnElement="Task_confirm_paid">
    <dc:Bounds x="2335" y="280" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Task_reverse_report_di" bpmnElement="Task_reverse_report">
    <dc:Bounds x="2335" y="800" width="100" height="80" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Gateway_read_receipt__if_di" bpmnElement="Gateway_read_receipt__if">
    <dc:Bounds x="490" y="295" width="50" height="50" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Gateway_read_receipt__if_end_di" bpmnElement="Gateway_read_receipt__if_end">
    <dc:Bounds x="660" y="415" width="50" height="50" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Gateway_expense_report_draft__if_di" bpmnElement="Gateway_expense_report_draft__if">
    <dc:Bounds x="830" y="35" width="50" height="50" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Gateway_approve_level__if_di" bpmnElement="Gateway_approve_level__if">
    <dc:Bounds x="1170" y="555" width="50" height="50" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Gateway_approve_level__if_end_di" bpmnElement="Gateway_approve_level__if_end">
    <dc:Bounds x="1340" y="675" width="50" height="50" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Gateway_expense_report_submitted__if_di" bpmnElement="Gateway_expense_report_submitted__if">
    <dc:Bounds x="1510" y="295" width="50" height="50" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Gateway_expense_report_approved__if_di" bpmnElement="Gateway_expense_report_approved__if">
    <dc:Bounds x="1850" y="295" width="50" height="50" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="End_expense_report_returned_di" bpmnElement="End_expense_report_returned">
    <dc:Bounds x="1857" y="562" width="36" height="36" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="End_expense_report_rejected_di" bpmnElement="End_expense_report_rejected">
    <dc:Bounds x="1857" y="682" width="36" height="36" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="End_expense_report_cancelled_di" bpmnElement="End_expense_report_cancelled">
    <dc:Bounds x="1177" y="42" width="36" height="36" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Gateway_expense_report_posted__if_di" bpmnElement="Gateway_expense_report_posted__if">
    <dc:Bounds x="2190" y="295" width="50" height="50" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="Gateway_expense_report_paid__if_di" bpmnElement="Gateway_expense_report_paid__if">
    <dc:Bounds x="2530" y="815" width="50" height="50" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="End_expense_report_paid_di" bpmnElement="End_expense_report_paid">
    <dc:Bounds x="2707" y="822" width="36" height="36" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNShape id="End_expense_report_reversed_di" bpmnElement="End_expense_report_reversed">
    <dc:Bounds x="2537" y="942" width="36" height="36" />
   </bpmndi:BPMNShape>
   <bpmndi:BPMNEdge id="Flow_Start_expense_report__Task_create_report_di" bpmnElement="Flow_Start_expense_report__Task_create_report">
    <di:waypoint x="193" y="60" />
    <di:waypoint x="295" y="60" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_read_receipt__if__Task_read_receipt_di" bpmnElement="Flow_Gateway_read_receipt__if__Task_read_receipt">
    <di:waypoint x="540" y="320" />
    <di:waypoint x="635" y="320" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_read_receipt__if__Gateway_read_receipt__if_end_di" bpmnElement="Flow_Gateway_read_receipt__if__Gateway_read_receipt__if_end">
    <di:waypoint x="540" y="320" />
    <di:waypoint x="635" y="320" />
    <di:waypoint x="635" y="440" />
    <di:waypoint x="660" y="440" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_read_receipt__Gateway_read_receipt__if_end_di" bpmnElement="Flow_Task_read_receipt__Gateway_read_receipt__if_end">
    <di:waypoint x="685" y="360" />
    <di:waypoint x="685" y="480" />
    <di:waypoint x="685" y="480" />
    <di:waypoint x="685" y="465" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_draft__if__Task_submit_report_di" bpmnElement="Flow_Gateway_expense_report_draft__if__Task_submit_report">
    <di:waypoint x="880" y="60" />
    <di:waypoint x="975" y="60" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_draft__if__Task_cancel_report_di" bpmnElement="Flow_Gateway_expense_report_draft__if__Task_cancel_report">
    <di:waypoint x="880" y="60" />
    <di:waypoint x="950" y="60" />
    <di:waypoint x="950" y="180" />
    <di:waypoint x="975" y="180" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_read_receipt__if_end__Gateway_expense_report_draft__if_di" bpmnElement="Flow_Gateway_read_receipt__if_end__Gateway_expense_report_draft__if">
    <di:waypoint x="710" y="440" />
    <di:waypoint x="805" y="440" />
    <di:waypoint x="805" y="60" />
    <di:waypoint x="830" y="60" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_create_report__Gateway_read_receipt__if_di" bpmnElement="Flow_Task_create_report__Gateway_read_receipt__if">
    <di:waypoint x="395" y="60" />
    <di:waypoint x="465" y="60" />
    <di:waypoint x="465" y="320" />
    <di:waypoint x="490" y="320" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_approve_level__if__Task_approve_level_di" bpmnElement="Flow_Gateway_approve_level__if__Task_approve_level">
    <di:waypoint x="1220" y="580" />
    <di:waypoint x="1315" y="580" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_approve_level__if__Gateway_approve_level__if_end_di" bpmnElement="Flow_Gateway_approve_level__if__Gateway_approve_level__if_end">
    <di:waypoint x="1220" y="580" />
    <di:waypoint x="1315" y="580" />
    <di:waypoint x="1315" y="700" />
    <di:waypoint x="1340" y="700" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_approve_level__Gateway_approve_level__if_end_di" bpmnElement="Flow_Task_approve_level__Gateway_approve_level__if_end">
    <di:waypoint x="1365" y="620" />
    <di:waypoint x="1365" y="746" />
    <di:waypoint x="1365" y="746" />
    <di:waypoint x="1365" y="725" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_submitted__if__Task_complete_approval_di" bpmnElement="Flow_Gateway_expense_report_submitted__if__Task_complete_approval">
    <di:waypoint x="1560" y="320" />
    <di:waypoint x="1655" y="320" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_submitted__if__Task_return_report_di" bpmnElement="Flow_Gateway_expense_report_submitted__if__Task_return_report">
    <di:waypoint x="1560" y="320" />
    <di:waypoint x="1630" y="320" />
    <di:waypoint x="1630" y="580" />
    <di:waypoint x="1655" y="580" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_submitted__if__Task_reject_report_di" bpmnElement="Flow_Gateway_expense_report_submitted__if__Task_reject_report">
    <di:waypoint x="1560" y="320" />
    <di:waypoint x="1630" y="320" />
    <di:waypoint x="1630" y="700" />
    <di:waypoint x="1655" y="700" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_approve_level__if_end__Gateway_expense_report_submitted__if_di" bpmnElement="Flow_Gateway_approve_level__if_end__Gateway_expense_report_submitted__if">
    <di:waypoint x="1390" y="700" />
    <di:waypoint x="1485" y="700" />
    <di:waypoint x="1485" y="320" />
    <di:waypoint x="1510" y="320" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_submit_report__Gateway_approve_level__if_di" bpmnElement="Flow_Task_submit_report__Gateway_approve_level__if">
    <di:waypoint x="1075" y="60" />
    <di:waypoint x="1145" y="60" />
    <di:waypoint x="1145" y="580" />
    <di:waypoint x="1170" y="580" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_approved__if__Task_post_report_di" bpmnElement="Flow_Gateway_expense_report_approved__if__Task_post_report">
    <di:waypoint x="1900" y="320" />
    <di:waypoint x="1995" y="320" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_approved__if__Task_fail_report_post_di" bpmnElement="Flow_Gateway_expense_report_approved__if__Task_fail_report_post">
    <di:waypoint x="1900" y="320" />
    <di:waypoint x="1970" y="320" />
    <di:waypoint x="1970" y="440" />
    <di:waypoint x="1995" y="440" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_complete_approval__Gateway_expense_report_approved__if_di" bpmnElement="Flow_Task_complete_approval__Gateway_expense_report_approved__if">
    <di:waypoint x="1755" y="320" />
    <di:waypoint x="1850" y="320" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_return_report__End_expense_report_returned_di" bpmnElement="Flow_Task_return_report__End_expense_report_returned">
    <di:waypoint x="1755" y="580" />
    <di:waypoint x="1857" y="580" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_reject_report__End_expense_report_rejected_di" bpmnElement="Flow_Task_reject_report__End_expense_report_rejected">
    <di:waypoint x="1755" y="700" />
    <di:waypoint x="1857" y="700" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_cancel_report__End_expense_report_cancelled_di" bpmnElement="Flow_Task_cancel_report__End_expense_report_cancelled">
    <di:waypoint x="1075" y="180" />
    <di:waypoint x="1152" y="180" />
    <di:waypoint x="1152" y="60" />
    <di:waypoint x="1177" y="60" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_posted__if__Task_confirm_paid_di" bpmnElement="Flow_Gateway_expense_report_posted__if__Task_confirm_paid">
    <di:waypoint x="2240" y="320" />
    <di:waypoint x="2335" y="320" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_posted__if__Task_reverse_report_di" bpmnElement="Flow_Gateway_expense_report_posted__if__Task_reverse_report">
    <di:waypoint x="2240" y="320" />
    <di:waypoint x="2310" y="320" />
    <di:waypoint x="2310" y="840" />
    <di:waypoint x="2335" y="840" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_post_report__Gateway_expense_report_posted__if_di" bpmnElement="Flow_Task_post_report__Gateway_expense_report_posted__if">
    <di:waypoint x="2095" y="320" />
    <di:waypoint x="2190" y="320" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_fail_report_post__Task_post_report_di" bpmnElement="Flow_Task_fail_report_post__Task_post_report">
    <di:waypoint x="2045" y="480" />
    <di:waypoint x="2045" y="507" />
    <di:waypoint x="2045" y="507" />
    <di:waypoint x="2045" y="360" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_paid__if__Task_reverse_report_di" bpmnElement="Flow_Gateway_expense_report_paid__if__Task_reverse_report">
    <di:waypoint x="2555" y="865" />
    <di:waypoint x="2555" y="913" />
    <di:waypoint x="2385" y="913" />
    <di:waypoint x="2385" y="880" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Gateway_expense_report_paid__if__End_expense_report_paid_di" bpmnElement="Flow_Gateway_expense_report_paid__if__End_expense_report_paid">
    <di:waypoint x="2580" y="840" />
    <di:waypoint x="2707" y="840" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_confirm_paid__Gateway_expense_report_paid__if_di" bpmnElement="Flow_Task_confirm_paid__Gateway_expense_report_paid__if">
    <di:waypoint x="2435" y="320" />
    <di:waypoint x="2505" y="320" />
    <di:waypoint x="2505" y="840" />
    <di:waypoint x="2530" y="840" />
   </bpmndi:BPMNEdge>
   <bpmndi:BPMNEdge id="Flow_Task_reverse_report__End_expense_report_reversed_di" bpmnElement="Flow_Task_reverse_report__End_expense_report_reversed">
    <di:waypoint x="2435" y="840" />
    <di:waypoint x="2512" y="840" />
    <di:waypoint x="2512" y="960" />
    <di:waypoint x="2537" y="960" />
   </bpmndi:BPMNEdge>
  </bpmndi:BPMNPlane>
 </bpmndi:BPMNDiagram>
</bpmn:definitions>