dodil/erp-method
modules/inventory/signoff/inventory/history/inventory_goods_issue.v5.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_inventory_v7" name="Stock & warehouses processes" targetNamespace="https://git.dodil.io/dodil/erp-platform/processes" exporter="erp-platform erp-compose bpmn" exporterVersion="1">
<bpmn:collaboration id="Collaboration_inventory_v7">
<bpmn:documentation>Stock & warehouses: one pool per entity lifecycle, generated from module.yaml.</bpmn:documentation>
<bpmn:participant id="Participant_inventory_goods_issue" name="Goods issue" processRef="Process_inventory_goods_issue_v7" />
</bpmn:collaboration>
<bpmn:process id="Process_inventory_goods_issue_v7" name="Goods issue" isExecutable="false">
<bpmn:documentation>Lifecycle of the goods issue, generated from module.yaml by erp-compose bpmn; change the workflow there, not this file. States: draft, awaiting_approval, posted, cancelled.</bpmn:documentation>
<bpmn:laneSet id="LaneSet_goods_issue">
<bpmn:lane id="Lane_goods_issue_stock_operator" name="The person on the floor (picker, packer, goods-in)">
<bpmn:flowNodeRef>Start_goods_issue</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_plan_goods_issue</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_post_goods_issue</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_submit_goods_issue</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_cancel_goods_issue</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_goods_issue_none__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_goods_issue_draft__if</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_goods_issue_stock_controller" name="A second person for large differences (finance controller, the owner)">
<bpmn:flowNodeRef>Task_approve_goods_issue</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_reject_goods_issue</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_goods_issue_awaiting_approval__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>End_goods_issue_cancelled</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_goods_issue_system" name="The system">
<bpmn:flowNodeRef>Task_issue_from_source</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_goods_issue_warehouse_manager" name="Whoever runs the warehouse (operations lead, the owner in a small firm)">
<bpmn:flowNodeRef>Task_reverse_goods_issue</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_reverse_goods_issue__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_reverse_goods_issue__if_end</bpmn:flowNodeRef>
<bpmn:flowNodeRef>End_goods_issue_posted</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="Start_goods_issue" name="Goods issue needed">
<bpmn:outgoing>Flow_Start_goods_issue__Gateway_goods_issue_none__if</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:userTask id="Task_plan_goods_issue" name="Plan an issue or a scrap" dodil:step="plan_goods_issue">
<bpmn:documentation>By: The person on the floor (picker, packer, goods-in). From none to draft. When: readiness: cost_centre_valid (the ledger's cost centre, for purpose cost_centre), scrap_reason (for purpose scrap); the product's issue unit proposed (product PRD-29). Effect: a draft goods issue with its purpose (cost_centre | scrap | internal_use), lines in any unit of the product.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_goods_issue_none__if__Task_plan_goods_issue</bpmn:incoming>
<bpmn:outgoing>Flow_Task_plan_goods_issue__Gateway_goods_issue_draft__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_post_goods_issue" name="Post the issue" dodil:step="post_goods_issue">
<bpmn:documentation>By: The person on the floor (picker, packer, goods-in). From draft to posted. When: readiness: stock_claimed (bin and warehouse claim rows won), under_issue_threshold (the value is under issue_approval_threshold). Effect: numbered {warehouse}/GI/{seq:5}; moves bin -> {company}:CONSUMPTION or :LOSS at average or standard cost; a journal per purpose (consumption with the cost centre on the line, scrap) posted.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_goods_issue_draft__if__Task_post_goods_issue</bpmn:incoming>
<bpmn:outgoing>Flow_Task_post_goods_issue__Gateway_reverse_goods_issue__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_submit_goods_issue" name="Submit an issue over the threshold" dodil:step="submit_goods_issue">
<bpmn:documentation>By: The person on the floor (picker, packer, goods-in). From draft to awaiting_approval. When: the value is at or above issue_approval_threshold. Effect: waits for a stock controller; nothing moves.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_goods_issue_draft__if__Task_submit_goods_issue</bpmn:incoming>
<bpmn:outgoing>Flow_Task_submit_goods_issue__Gateway_goods_issue_awaiting_approval__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_approve_goods_issue" name="A second person approves the issue" dodil:step="approve_goods_issue" dodil:approval="true">
<bpmn:documentation>By: A second person for large differences (finance controller, the owner). From awaiting_approval to posted. When: readiness: approver_not_requester (by email AND sign-in subject), stock_claimed. Effect: posted as post_goods_issue. An approval.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_goods_issue_awaiting_approval__if__Task_approve_goods_issue</bpmn:incoming>
<bpmn:outgoing>Flow_Task_approve_goods_issue__Gateway_reverse_goods_issue__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_reject_goods_issue" name="Reject the issue" dodil:step="reject_goods_issue">
<bpmn:documentation>By: A second person for large differences (finance controller, the owner). From awaiting_approval to cancelled. Requires: reason.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_goods_issue_awaiting_approval__if__Task_reject_goods_issue</bpmn:incoming>
<bpmn:outgoing>Flow_Task_reject_goods_issue__End_goods_issue_cancelled</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_cancel_goods_issue" name="Cancel the draft issue" dodil:step="cancel_goods_issue">
<bpmn:documentation>By: The person on the floor (picker, packer, goods-in). From draft to cancelled.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_goods_issue_draft__if__Task_cancel_goods_issue</bpmn:incoming>
<bpmn:outgoing>Flow_Task_cancel_goods_issue__End_goods_issue_cancelled</bpmn:outgoing>
</bpmn:userTask>
<bpmn:serviceTask id="Task_issue_from_source" name="Take out what another module consumed (v6, INV-58)" dodil:step="issue_from_source" implementation="##unspecified">
<bpmn:documentation>By: The system. From none to posted. When: readiness: source_kind pos_sale | production_issue | production_output_reversal (v7: an output or by-product received in error taken back out, naming reverses_move_ref); each move_ref unique (a known one answers its move); units convert exactly; stock_claimed; on_hand for production_issue (a pos_sale posts and may go negative, listed for the stock controller). Effect: numbered {warehouse}/GI/{seq:5}; moves location -> {company}:CONSUMPTION per line at average or standard cost (the lot named, else FEFO); a journal per call: cost_of_sales (pos_sale) or wip (production_issue) / stock_valuation; {move_ref, move_id, quantity_base, value} answered.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_goods_issue_none__if__Task_issue_from_source</bpmn:incoming>
<bpmn:outgoing>Flow_Task_issue_from_source__Gateway_reverse_goods_issue__if</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:userTask id="Task_reverse_goods_issue" name="Reverse a posted issue" dodil:step="reverse_goods_issue">
<bpmn:documentation>By: Whoever runs the warehouse (operations lead, the owner in a small firm). From posted to posted. When: not reversed before; the issue's period open in the ledger. Requires: reason. Effect: reversing moves naming the original, valued as it was, and a reversing journal (SAP 202 / 552).</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_reverse_goods_issue__if__Task_reverse_goods_issue</bpmn:incoming>
<bpmn:outgoing>Flow_Task_reverse_goods_issue__Gateway_reverse_goods_issue__if_end</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_goods_issue_none__if" name="New goods issue?">
<bpmn:incoming>Flow_Start_goods_issue__Gateway_goods_issue_none__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_goods_issue_none__if__Task_plan_goods_issue</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_goods_issue_none__if__Task_issue_from_source</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_goods_issue_draft__if" name="Goods issue draft: what next?">
<bpmn:incoming>Flow_Task_plan_goods_issue__Gateway_goods_issue_draft__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_goods_issue_draft__if__Task_post_goods_issue</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_goods_issue_draft__if__Task_submit_goods_issue</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_goods_issue_draft__if__Task_cancel_goods_issue</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_reverse_goods_issue__if" name="not reversed before; the issue's period open in the ledger?">
<bpmn:incoming>Flow_Task_post_goods_issue__Gateway_reverse_goods_issue__if</bpmn:incoming>
<bpmn:incoming>Flow_Task_approve_goods_issue__Gateway_reverse_goods_issue__if</bpmn:incoming>
<bpmn:incoming>Flow_Task_issue_from_source__Gateway_reverse_goods_issue__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_reverse_goods_issue__if__Task_reverse_goods_issue</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_reverse_goods_issue__if__Gateway_reverse_goods_issue__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_reverse_goods_issue__if_end">
<bpmn:incoming>Flow_Gateway_reverse_goods_issue__if__Gateway_reverse_goods_issue__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_reverse_goods_issue__Gateway_reverse_goods_issue__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_reverse_goods_issue__if_end__End_goods_issue_posted</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:endEvent id="End_goods_issue_posted" name="Goods issue posted">
<bpmn:incoming>Flow_Gateway_reverse_goods_issue__if_end__End_goods_issue_posted</bpmn:incoming>
</bpmn:endEvent>
<bpmn:exclusiveGateway id="Gateway_goods_issue_awaiting_approval__if" name="Goods issue awaiting approval: what next?">
<bpmn:incoming>Flow_Task_submit_goods_issue__Gateway_goods_issue_awaiting_approval__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_goods_issue_awaiting_approval__if__Task_approve_goods_issue</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_goods_issue_awaiting_approval__if__Task_reject_goods_issue</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:endEvent id="End_goods_issue_cancelled" name="Goods issue cancelled">
<bpmn:incoming>Flow_Task_reject_goods_issue__End_goods_issue_cancelled</bpmn:incoming>
<bpmn:incoming>Flow_Task_cancel_goods_issue__End_goods_issue_cancelled</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_Gateway_goods_issue_none__if__Task_plan_goods_issue" sourceRef="Gateway_goods_issue_none__if" targetRef="Task_plan_goods_issue" />
<bpmn:sequenceFlow id="Flow_Gateway_goods_issue_none__if__Task_issue_from_source" sourceRef="Gateway_goods_issue_none__if" targetRef="Task_issue_from_source" />
<bpmn:sequenceFlow id="Flow_Start_goods_issue__Gateway_goods_issue_none__if" sourceRef="Start_goods_issue" targetRef="Gateway_goods_issue_none__if" />
<bpmn:sequenceFlow id="Flow_Gateway_goods_issue_draft__if__Task_post_goods_issue" sourceRef="Gateway_goods_issue_draft__if" targetRef="Task_post_goods_issue" />
<bpmn:sequenceFlow id="Flow_Gateway_goods_issue_draft__if__Task_submit_goods_issue" sourceRef="Gateway_goods_issue_draft__if" targetRef="Task_submit_goods_issue" />
<bpmn:sequenceFlow id="Flow_Gateway_goods_issue_draft__if__Task_cancel_goods_issue" sourceRef="Gateway_goods_issue_draft__if" targetRef="Task_cancel_goods_issue" />
<bpmn:sequenceFlow id="Flow_Task_plan_goods_issue__Gateway_goods_issue_draft__if" sourceRef="Task_plan_goods_issue" targetRef="Gateway_goods_issue_draft__if" />
<bpmn:sequenceFlow id="Flow_Gateway_reverse_goods_issue__if__Task_reverse_goods_issue" name="not reversed before; the issue's period open in the ledger" sourceRef="Gateway_reverse_goods_issue__if" targetRef="Task_reverse_goods_issue" />
<bpmn:sequenceFlow id="Flow_Gateway_reverse_goods_issue__if__Gateway_reverse_goods_issue__if_end" name="otherwise" sourceRef="Gateway_reverse_goods_issue__if" targetRef="Gateway_reverse_goods_issue__if_end" />
<bpmn:sequenceFlow id="Flow_Task_reverse_goods_issue__Gateway_reverse_goods_issue__if_end" sourceRef="Task_reverse_goods_issue" targetRef="Gateway_reverse_goods_issue__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_reverse_goods_issue__if_end__End_goods_issue_posted" sourceRef="Gateway_reverse_goods_issue__if_end" targetRef="End_goods_issue_posted" />
<bpmn:sequenceFlow id="Flow_Task_post_goods_issue__Gateway_reverse_goods_issue__if" sourceRef="Task_post_goods_issue" targetRef="Gateway_reverse_goods_issue__if" />
<bpmn:sequenceFlow id="Flow_Gateway_goods_issue_awaiting_approval__if__Task_approve_goods_issue" sourceRef="Gateway_goods_issue_awaiting_approval__if" targetRef="Task_approve_goods_issue" />
<bpmn:sequenceFlow id="Flow_Gateway_goods_issue_awaiting_approval__if__Task_reject_goods_issue" sourceRef="Gateway_goods_issue_awaiting_approval__if" targetRef="Task_reject_goods_issue" />
<bpmn:sequenceFlow id="Flow_Task_submit_goods_issue__Gateway_goods_issue_awaiting_approval__if" sourceRef="Task_submit_goods_issue" targetRef="Gateway_goods_issue_awaiting_approval__if" />
<bpmn:sequenceFlow id="Flow_Task_approve_goods_issue__Gateway_reverse_goods_issue__if" sourceRef="Task_approve_goods_issue" targetRef="Gateway_reverse_goods_issue__if" />
<bpmn:sequenceFlow id="Flow_Task_reject_goods_issue__End_goods_issue_cancelled" sourceRef="Task_reject_goods_issue" targetRef="End_goods_issue_cancelled" />
<bpmn:sequenceFlow id="Flow_Task_cancel_goods_issue__End_goods_issue_cancelled" sourceRef="Task_cancel_goods_issue" targetRef="End_goods_issue_cancelled" />
<bpmn:sequenceFlow id="Flow_Task_issue_from_source__Gateway_reverse_goods_issue__if" sourceRef="Task_issue_from_source" targetRef="Gateway_reverse_goods_issue__if" />
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_inventory_v7">
<bpmndi:BPMNPlane id="BPMNPlane_inventory_v7" bpmnElement="Collaboration_inventory_v7">
<bpmndi:BPMNShape id="Participant_inventory_goods_issue_di" bpmnElement="Participant_inventory_goods_issue" isHorizontal="true">
<dc:Bounds x="0" y="0" width="1300" height="1040" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_goods_issue_stock_operator_di" bpmnElement="Lane_goods_issue_stock_operator" isHorizontal="true">
<dc:Bounds x="30" y="0" width="1270" height="380" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_goods_issue_stock_controller_di" bpmnElement="Lane_goods_issue_stock_controller" isHorizontal="true">
<dc:Bounds x="30" y="380" width="1270" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_goods_issue_system_di" bpmnElement="Lane_goods_issue_system" isHorizontal="true">
<dc:Bounds x="30" y="640" width="1270" height="140" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_goods_issue_warehouse_manager_di" bpmnElement="Lane_goods_issue_warehouse_manager" isHorizontal="true">
<dc:Bounds x="30" y="780" width="1270" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Start_goods_issue_di" bpmnElement="Start_goods_issue">
<dc:Bounds x="157" y="42" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_plan_goods_issue_di" bpmnElement="Task_plan_goods_issue">
<dc:Bounds x="465" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_post_goods_issue_di" bpmnElement="Task_post_goods_issue">
<dc:Bounds x="805" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_submit_goods_issue_di" bpmnElement="Task_submit_goods_issue">
<dc:Bounds x="805" y="140" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_approve_goods_issue_di" bpmnElement="Task_approve_goods_issue">
<dc:Bounds x="1145" y="400" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_reject_goods_issue_di" bpmnElement="Task_reject_goods_issue">
<dc:Bounds x="1145" y="520" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_cancel_goods_issue_di" bpmnElement="Task_cancel_goods_issue">
<dc:Bounds x="805" y="260" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_issue_from_source_di" bpmnElement="Task_issue_from_source">
<dc:Bounds x="465" y="660" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_reverse_goods_issue_di" bpmnElement="Task_reverse_goods_issue">
<dc:Bounds x="805" y="800" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_goods_issue_none__if_di" bpmnElement="Gateway_goods_issue_none__if">
<dc:Bounds x="320" y="35" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_goods_issue_draft__if_di" bpmnElement="Gateway_goods_issue_draft__if">
<dc:Bounds x="660" y="35" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_reverse_goods_issue__if_di" bpmnElement="Gateway_reverse_goods_issue__if">
<dc:Bounds x="660" y="815" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_reverse_goods_issue__if_end_di" bpmnElement="Gateway_reverse_goods_issue__if_end">
<dc:Bounds x="830" y="935" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_goods_issue_posted_di" bpmnElement="End_goods_issue_posted">
<dc:Bounds x="1007" y="822" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_goods_issue_awaiting_approval__if_di" bpmnElement="Gateway_goods_issue_awaiting_approval__if">
<dc:Bounds x="1000" y="415" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_goods_issue_cancelled_di" bpmnElement="End_goods_issue_cancelled">
<dc:Bounds x="1007" y="542" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_Gateway_goods_issue_none__if__Task_plan_goods_issue_di" bpmnElement="Flow_Gateway_goods_issue_none__if__Task_plan_goods_issue">
<di:waypoint x="370" y="60" />
<di:waypoint x="465" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_goods_issue_none__if__Task_issue_from_source_di" bpmnElement="Flow_Gateway_goods_issue_none__if__Task_issue_from_source">
<di:waypoint x="370" y="60" />
<di:waypoint x="440" y="60" />
<di:waypoint x="440" y="700" />
<di:waypoint x="465" y="700" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Start_goods_issue__Gateway_goods_issue_none__if_di" bpmnElement="Flow_Start_goods_issue__Gateway_goods_issue_none__if">
<di:waypoint x="193" y="60" />
<di:waypoint x="320" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_goods_issue_draft__if__Task_post_goods_issue_di" bpmnElement="Flow_Gateway_goods_issue_draft__if__Task_post_goods_issue">
<di:waypoint x="710" y="60" />
<di:waypoint x="805" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_goods_issue_draft__if__Task_submit_goods_issue_di" bpmnElement="Flow_Gateway_goods_issue_draft__if__Task_submit_goods_issue">
<di:waypoint x="710" y="60" />
<di:waypoint x="780" y="60" />
<di:waypoint x="780" y="180" />
<di:waypoint x="805" y="180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_goods_issue_draft__if__Task_cancel_goods_issue_di" bpmnElement="Flow_Gateway_goods_issue_draft__if__Task_cancel_goods_issue">
<di:waypoint x="710" y="60" />
<di:waypoint x="780" y="60" />
<di:waypoint x="780" y="300" />
<di:waypoint x="805" y="300" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_plan_goods_issue__Gateway_goods_issue_draft__if_di" bpmnElement="Flow_Task_plan_goods_issue__Gateway_goods_issue_draft__if">
<di:waypoint x="565" y="60" />
<di:waypoint x="660" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_reverse_goods_issue__if__Task_reverse_goods_issue_di" bpmnElement="Flow_Gateway_reverse_goods_issue__if__Task_reverse_goods_issue">
<di:waypoint x="710" y="840" />
<di:waypoint x="805" y="840" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_reverse_goods_issue__if__Gateway_reverse_goods_issue__if_end_di" bpmnElement="Flow_Gateway_reverse_goods_issue__if__Gateway_reverse_goods_issue__if_end">
<di:waypoint x="710" y="840" />
<di:waypoint x="805" y="840" />
<di:waypoint x="805" y="960" />
<di:waypoint x="830" y="960" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_reverse_goods_issue__Gateway_reverse_goods_issue__if_end_di" bpmnElement="Flow_Task_reverse_goods_issue__Gateway_reverse_goods_issue__if_end">
<di:waypoint x="855" y="880" />
<di:waypoint x="855" y="1000" />
<di:waypoint x="855" y="1000" />
<di:waypoint x="855" y="985" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_reverse_goods_issue__if_end__End_goods_issue_posted_di" bpmnElement="Flow_Gateway_reverse_goods_issue__if_end__End_goods_issue_posted">
<di:waypoint x="880" y="960" />
<di:waypoint x="982" y="960" />
<di:waypoint x="982" y="840" />
<di:waypoint x="1007" y="840" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_post_goods_issue__Gateway_reverse_goods_issue__if_di" bpmnElement="Flow_Task_post_goods_issue__Gateway_reverse_goods_issue__if">
<di:waypoint x="855" y="100" />
<di:waypoint x="855" y="886" />
<di:waypoint x="685" y="886" />
<di:waypoint x="685" y="865" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_goods_issue_awaiting_approval__if__Task_approve_goods_issue_di" bpmnElement="Flow_Gateway_goods_issue_awaiting_approval__if__Task_approve_goods_issue">
<di:waypoint x="1050" y="440" />
<di:waypoint x="1145" y="440" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_goods_issue_awaiting_approval__if__Task_reject_goods_issue_di" bpmnElement="Flow_Gateway_goods_issue_awaiting_approval__if__Task_reject_goods_issue">
<di:waypoint x="1050" y="440" />
<di:waypoint x="1120" y="440" />
<di:waypoint x="1120" y="560" />
<di:waypoint x="1145" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_submit_goods_issue__Gateway_goods_issue_awaiting_approval__if_di" bpmnElement="Flow_Task_submit_goods_issue__Gateway_goods_issue_awaiting_approval__if">
<di:waypoint x="905" y="180" />
<di:waypoint x="975" y="180" />
<di:waypoint x="975" y="440" />
<di:waypoint x="1000" y="440" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_approve_goods_issue__Gateway_reverse_goods_issue__if_di" bpmnElement="Flow_Task_approve_goods_issue__Gateway_reverse_goods_issue__if">
<di:waypoint x="1195" y="480" />
<di:waypoint x="1195" y="892" />
<di:waypoint x="685" y="892" />
<di:waypoint x="685" y="865" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_reject_goods_issue__End_goods_issue_cancelled_di" bpmnElement="Flow_Task_reject_goods_issue__End_goods_issue_cancelled">
<di:waypoint x="1195" y="600" />
<di:waypoint x="1195" y="633" />
<di:waypoint x="1025" y="633" />
<di:waypoint x="1025" y="578" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_cancel_goods_issue__End_goods_issue_cancelled_di" bpmnElement="Flow_Task_cancel_goods_issue__End_goods_issue_cancelled">
<di:waypoint x="905" y="300" />
<di:waypoint x="982" y="300" />
<di:waypoint x="982" y="560" />
<di:waypoint x="1007" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_issue_from_source__Gateway_reverse_goods_issue__if_di" bpmnElement="Flow_Task_issue_from_source__Gateway_reverse_goods_issue__if">
<di:waypoint x="565" y="700" />
<di:waypoint x="635" y="700" />
<di:waypoint x="635" y="840" />
<di:waypoint x="660" y="840" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>