<mxfile host="app.diagrams.net" modified="2023-04-15T07:06:34.883Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" etag="1ak7x28XaoDP8CpgV_YR" version="21.1.8" type="device">
  <diagram name="Page-1" id="05fWngS16l91GcL6yIBs">
    <mxGraphModel dx="2739" dy="1075" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-29" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-370" y="600" width="600" height="700" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-1" value="&lt;p class=&quot;MsoNormal&quot;&gt;Acquire user input of two workbook (membered, sales_record)&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;check head row to validate user input&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;validate workbook and worksheet&amp;nbsp;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;code:ValidateMemberInformationXlsx()&lt;br&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;code:ValidateSalesRecord()&lt;/p&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-110" y="50" width="370" height="160" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-2" value="&lt;p class=&quot;MsoNormal&quot;&gt;OK&lt;/p&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-110" y="310" width="140" height="70" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-3" value="&lt;p class=&quot;MsoNormal&quot;&gt;Fail&lt;/p&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="120" y="310" width="140" height="70" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-4" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-1" target="Sxxe-mvxAXtsPCkKtpcs-2">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="20" y="390" as="sourcePoint" />
            <mxPoint x="70" y="340" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-5" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.614;exitY=1.014;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-1" target="Sxxe-mvxAXtsPCkKtpcs-3">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="50" y="220" as="sourcePoint" />
            <mxPoint x="-50" y="320" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-6" value="enable further generation" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-110" y="480" width="140" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-7" value="loop user until&amp;nbsp;&lt;br&gt;valid sales_record&lt;br&gt;and member information found" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="120" y="480" width="140" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-8" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-3" target="Sxxe-mvxAXtsPCkKtpcs-7">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="240" y="430" as="sourcePoint" />
            <mxPoint x="290" y="380" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-9" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-7" target="Sxxe-mvxAXtsPCkKtpcs-1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="300" y="520" as="sourcePoint" />
            <mxPoint x="340" y="420" as="targetPoint" />
            <Array as="points">
              <mxPoint x="320" y="510" />
              <mxPoint x="320" y="130" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-11" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-2" target="Sxxe-mvxAXtsPCkKtpcs-6">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="60" y="420" as="sourcePoint" />
            <mxPoint x="110" y="370" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-12" value="member xlsx&lt;br&gt;OpenWorkbookMemberInformation" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-270" y="670" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-13" value="sales_record xlsx&lt;br&gt;OpenWorkbookSalesRecord" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-110" y="650" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-14" value="filtering" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-240" y="880" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-15" value="filtering" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-70" y="880" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-16" value="parse" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-240" y="780" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-17" value="parse" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-70" y="780" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-20" value="combine&lt;br&gt;WriteMonthlySalesReport" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-160" y="990" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-21" value="write report" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-160" y="1210" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-22" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-15" target="Sxxe-mvxAXtsPCkKtpcs-20">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="80" y="1030" as="sourcePoint" />
            <mxPoint x="130" y="980" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-23" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-12" target="Sxxe-mvxAXtsPCkKtpcs-16">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="90" y="1040" as="sourcePoint" />
            <mxPoint x="140" y="990" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-24" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-13">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-10.419999999999987" y="740" as="sourcePoint" />
            <mxPoint x="-10.419999999999987" y="780" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-25" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-10.419999999999987" y="840" as="sourcePoint" />
            <mxPoint x="-10.419999999999987" y="880" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-26" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-180.42" y="840" as="sourcePoint" />
            <mxPoint x="-180.42" y="880" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-27" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-14" target="Sxxe-mvxAXtsPCkKtpcs-20">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-0.4199999999999875" y="850" as="sourcePoint" />
            <mxPoint x="-0.4199999999999875" y="890" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-30" value="GenMonthlySalesReport" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
          <mxGeometry x="-360" y="610" width="150" height="30" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-31" value="sales_record xlsx&lt;br&gt;ReadProductListNew" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="70" y="650" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-32" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-31" target="Sxxe-mvxAXtsPCkKtpcs-33">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="110" y="710" as="sourcePoint" />
            <mxPoint x="149.58" y="780" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-33" value="parse product list&lt;br&gt;output as dictionary&lt;br&gt;dicProfit" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="70" y="780" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-34" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="Sxxe-mvxAXtsPCkKtpcs-20">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="129.58" y="840" as="sourcePoint" />
            <mxPoint x="129.58" y="910" as="targetPoint" />
            <Array as="points">
              <mxPoint x="90" y="990" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-35" value="prepare report&lt;br&gt;layout" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="-160" y="1100" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-36" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-20" target="Sxxe-mvxAXtsPCkKtpcs-35">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="80" y="1070" as="sourcePoint" />
            <mxPoint x="130" y="1020" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-37" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="-100.42" y="1160" as="sourcePoint" />
            <mxPoint x="-100.42" y="1210" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-38" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="340" y="570" width="600" height="700" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-40" value="sales_record xlsx&lt;br&gt;OpenWorkbookSalesRecord" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="600" y="620" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-42" value="filtering" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="640" y="850" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-44" value="parse" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="640" y="750" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-45" value="combine&lt;br&gt;WriteMonthlySalesReport" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="550" y="960" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-46" value="write report" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="550" y="1180" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-47" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-42" target="Sxxe-mvxAXtsPCkKtpcs-45">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="790" y="1000" as="sourcePoint" />
            <mxPoint x="840" y="950" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-49" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-40">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="699.58" y="710" as="sourcePoint" />
            <mxPoint x="699.58" y="750" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-50" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="699.58" y="810" as="sourcePoint" />
            <mxPoint x="699.58" y="850" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-53" value="GenMonthlySalesReport" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
          <mxGeometry x="350" y="580" width="150" height="30" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-54" value="sales_record xlsx&lt;br&gt;ReadProductListNew" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="780" y="620" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-55" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-54" target="Sxxe-mvxAXtsPCkKtpcs-56">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="820" y="680" as="sourcePoint" />
            <mxPoint x="859.58" y="750" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-56" value="parse product list&lt;br&gt;output as dictionary&lt;br&gt;dicProfit" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="780" y="750" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-57" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="Sxxe-mvxAXtsPCkKtpcs-45">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="839.58" y="810" as="sourcePoint" />
            <mxPoint x="839.58" y="880" as="targetPoint" />
            <Array as="points">
              <mxPoint x="800" y="960" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-58" value="prepare report&lt;br&gt;layout" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="550" y="1070" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-59" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="Sxxe-mvxAXtsPCkKtpcs-45" target="Sxxe-mvxAXtsPCkKtpcs-58">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="790" y="1040" as="sourcePoint" />
            <mxPoint x="840" y="990" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Sxxe-mvxAXtsPCkKtpcs-60" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="609.58" y="1130" as="sourcePoint" />
            <mxPoint x="609.58" y="1180" as="targetPoint" />
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
