<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Delivery Dates in Quick Measures Gallery</title>
    <link>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Delivery-Dates/m-p/2316708#M812</link>
    <description>&lt;P&gt;Implementation of a DAX "while" loop to determine earliest possible delivery date for back orders. Included in the PBIX are FIFO, LIFO, Optimized for Most Orders and Optimized for Most Quantity.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;FIFO Measure = 
    VAR __DaysToFulfill = 10
    VAR __ItemCode = MAX('BackOrders'[Item Code])
    VAR __Date = MAX('BackOrders'[Date])
    VAR __QtyToFulfill = SUMX(FILTER(ALL('BackOrders'),[Item Code] = __ItemCode &amp;amp;&amp;amp; [Date] &amp;lt;= __Date),[Backorder Qty])
    VAR __Table = FILTER('OpenPurchaseOrders',[Item Code] = __ItemCode)
    VAR __Table1 = 
        ADDCOLUMNS(
            ADDCOLUMNS(__Table,"__tqty",SUMX(FILTER(__Table,[ETA W/H] &amp;lt;= EARLIER([ETA W/H])),[Quantity])),
            "__LoopCounter",[__tqty] - __QtyToFulfill
        )
    VAR __TargetDate = MINX(FILTER(__Table1, [__LoopCounter] &amp;gt;= 0),[ETA W/H])
    VAR __FulfillmentDate = IF(__TargetDate = BLANK(),BLANK(),__TargetDate+__DaysToFulfill) 
RETURN
    __FulfillmentDate&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is the LIFO version:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;LIFO Measure = 
    VAR __DaysToFulfill = 10
    VAR __ItemCode = MAX('BackOrders'[Item Code])
    VAR __Date = MAX('BackOrders'[Date])
    VAR __QtyToFulfill = SUMX(FILTER(ALL('BackOrders'),[Item Code] = __ItemCode &amp;amp;&amp;amp; [Date] &amp;gt;= __Date),[Backorder Qty])
    VAR __Table = FILTER('OpenPurchaseOrders',[Item Code] = __ItemCode)
    VAR __Table1 = 
        ADDCOLUMNS(
            ADDCOLUMNS(__Table,"__tqty",SUMX(FILTER(__Table,[ETA W/H] &amp;lt;= EARLIER([ETA W/H])),[Quantity])),
            "__LoopCounter",[__tqty] - __QtyToFulfill
        )
    VAR __TargetDate = MINX(FILTER(__Table1, [__LoopCounter] &amp;gt;= 0),[ETA W/H])
    VAR __FulfillmentDate = IF(__TargetDate = BLANK(),BLANK(),__TargetDate+__DaysToFulfill) 
RETURN
    __FulfillmentDate&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And, bonus! Here are the MSHGQM custom measure definitions for both FIFO and LIFO! What? You're not using MSHGQM? You are missing out!!&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/gdeckler/MicrosoftHatesGregsQuickMeasures" target="_blank" rel="noopener"&gt;gdeckler/MicrosoftHatesGregsQuickMeasures: Microsoft Hates Greg (github.com)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.youtube.com/watch?v=JL7_pnnF34A" target="_blank" rel="noopener"&gt;Microsoft Hates Greg - DAX While Loops - YouTube&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Delivery Days FIFO = 
VAR __DaysToFulfill = __PARAM5__
    VAR __ItemCode = MAX(__COLUMN__)
    VAR __Date = MAX(__COLUMN1__)
    VAR __QtyToFulfill = SUMX(FILTER(ALL('__TABLENAME__'),[__COLUMNNAME__] = __ItemCode &amp;amp;&amp;amp; [__COLUMN1NAME__] &amp;lt;= __Date),[__COLUMN2NAME__])
    VAR __Table = FILTER('__TABLE3NAME__',[__COLUMN3NAME__] = __ItemCode)
    VAR __Table1 = 
        ADDCOLUMNS(
            ADDCOLUMNS(__Table,"__tqty",SUMX(FILTER(__Table,[__COLUMN4NAME__] &amp;lt;= EARLIER([__COLUMN4NAME__])),[__COLUMN5NAME__])),
            "__LoopCounter",[__tqty] - __QtyToFulfill
        )
    VAR __TargetDate = MINX(FILTER(__Table1, [__LoopCounter] &amp;gt;= 0),[__COLUMN4NAME__])
    VAR __FulfillmentDate = IF(__TargetDate = BLANK(),BLANK(),__TargetDate+__DaysToFulfill) 
RETURN
    __FulfillmentDate&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And the LIFO version:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Delivery Days LIFO = 
VAR __DaysToFulfill = __PARAM5__
    VAR __ItemCode = MAX(__COLUMN__)
    VAR __Date = MAX(__COLUMN1__)
    VAR __QtyToFulfill = SUMX(FILTER(ALL('__TABLENAME__'),[__COLUMNNAME__] = __ItemCode &amp;amp;&amp;amp; [__COLUMN1NAME__] &amp;gt;= __Date),[__COLUMN2NAME__])
    VAR __Table = FILTER('__TABLE3NAME__',[__COLUMN3NAME__] = __ItemCode)
    VAR __Table1 = 
        ADDCOLUMNS(
            ADDCOLUMNS(__Table,"__tqty",SUMX(FILTER(__Table,[__COLUMN4NAME__] &amp;lt;= EARLIER([__COLUMN4NAME__])),[__COLUMN5NAME__])),
            "__LoopCounter",[__tqty] - __QtyToFulfill
        )
    VAR __TargetDate = MINX(FILTER(__Table1, [__LoopCounter] &amp;gt;= 0),[__COLUMN4NAME__])
    VAR __FulfillmentDate = IF(__TargetDate = BLANK(),BLANK(),__TargetDate+__DaysToFulfill) 
RETURN
    __FulfillmentDate&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="reportid hidden"&gt;eyJrIjoiODRlZGY3N2QtODZlNC00M2Y1LTkzNWMtOGIxMjBjYTA1ODM1IiwidCI6IjRhMDQyNzQzLTM3M2EtNDNkMi04MjdiLTAwM2Y0YzdiYTFlNSIsImMiOjN9&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 03 Feb 2022 13:09:26 GMT</pubDate>
    <dc:creator>Greg_Deckler</dc:creator>
    <dc:date>2022-02-03T13:09:26Z</dc:date>
    <item>
      <title>Delivery Dates</title>
      <link>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Delivery-Dates/m-p/2316708#M812</link>
      <description>&lt;P&gt;Implementation of a DAX "while" loop to determine earliest possible delivery date for back orders. Included in the PBIX are FIFO, LIFO, Optimized for Most Orders and Optimized for Most Quantity.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;FIFO Measure = 
    VAR __DaysToFulfill = 10
    VAR __ItemCode = MAX('BackOrders'[Item Code])
    VAR __Date = MAX('BackOrders'[Date])
    VAR __QtyToFulfill = SUMX(FILTER(ALL('BackOrders'),[Item Code] = __ItemCode &amp;amp;&amp;amp; [Date] &amp;lt;= __Date),[Backorder Qty])
    VAR __Table = FILTER('OpenPurchaseOrders',[Item Code] = __ItemCode)
    VAR __Table1 = 
        ADDCOLUMNS(
            ADDCOLUMNS(__Table,"__tqty",SUMX(FILTER(__Table,[ETA W/H] &amp;lt;= EARLIER([ETA W/H])),[Quantity])),
            "__LoopCounter",[__tqty] - __QtyToFulfill
        )
    VAR __TargetDate = MINX(FILTER(__Table1, [__LoopCounter] &amp;gt;= 0),[ETA W/H])
    VAR __FulfillmentDate = IF(__TargetDate = BLANK(),BLANK(),__TargetDate+__DaysToFulfill) 
RETURN
    __FulfillmentDate&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is the LIFO version:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;LIFO Measure = 
    VAR __DaysToFulfill = 10
    VAR __ItemCode = MAX('BackOrders'[Item Code])
    VAR __Date = MAX('BackOrders'[Date])
    VAR __QtyToFulfill = SUMX(FILTER(ALL('BackOrders'),[Item Code] = __ItemCode &amp;amp;&amp;amp; [Date] &amp;gt;= __Date),[Backorder Qty])
    VAR __Table = FILTER('OpenPurchaseOrders',[Item Code] = __ItemCode)
    VAR __Table1 = 
        ADDCOLUMNS(
            ADDCOLUMNS(__Table,"__tqty",SUMX(FILTER(__Table,[ETA W/H] &amp;lt;= EARLIER([ETA W/H])),[Quantity])),
            "__LoopCounter",[__tqty] - __QtyToFulfill
        )
    VAR __TargetDate = MINX(FILTER(__Table1, [__LoopCounter] &amp;gt;= 0),[ETA W/H])
    VAR __FulfillmentDate = IF(__TargetDate = BLANK(),BLANK(),__TargetDate+__DaysToFulfill) 
RETURN
    __FulfillmentDate&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And, bonus! Here are the MSHGQM custom measure definitions for both FIFO and LIFO! What? You're not using MSHGQM? You are missing out!!&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/gdeckler/MicrosoftHatesGregsQuickMeasures" target="_blank" rel="noopener"&gt;gdeckler/MicrosoftHatesGregsQuickMeasures: Microsoft Hates Greg (github.com)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.youtube.com/watch?v=JL7_pnnF34A" target="_blank" rel="noopener"&gt;Microsoft Hates Greg - DAX While Loops - YouTube&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Delivery Days FIFO = 
VAR __DaysToFulfill = __PARAM5__
    VAR __ItemCode = MAX(__COLUMN__)
    VAR __Date = MAX(__COLUMN1__)
    VAR __QtyToFulfill = SUMX(FILTER(ALL('__TABLENAME__'),[__COLUMNNAME__] = __ItemCode &amp;amp;&amp;amp; [__COLUMN1NAME__] &amp;lt;= __Date),[__COLUMN2NAME__])
    VAR __Table = FILTER('__TABLE3NAME__',[__COLUMN3NAME__] = __ItemCode)
    VAR __Table1 = 
        ADDCOLUMNS(
            ADDCOLUMNS(__Table,"__tqty",SUMX(FILTER(__Table,[__COLUMN4NAME__] &amp;lt;= EARLIER([__COLUMN4NAME__])),[__COLUMN5NAME__])),
            "__LoopCounter",[__tqty] - __QtyToFulfill
        )
    VAR __TargetDate = MINX(FILTER(__Table1, [__LoopCounter] &amp;gt;= 0),[__COLUMN4NAME__])
    VAR __FulfillmentDate = IF(__TargetDate = BLANK(),BLANK(),__TargetDate+__DaysToFulfill) 
RETURN
    __FulfillmentDate&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And the LIFO version:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Delivery Days LIFO = 
VAR __DaysToFulfill = __PARAM5__
    VAR __ItemCode = MAX(__COLUMN__)
    VAR __Date = MAX(__COLUMN1__)
    VAR __QtyToFulfill = SUMX(FILTER(ALL('__TABLENAME__'),[__COLUMNNAME__] = __ItemCode &amp;amp;&amp;amp; [__COLUMN1NAME__] &amp;gt;= __Date),[__COLUMN2NAME__])
    VAR __Table = FILTER('__TABLE3NAME__',[__COLUMN3NAME__] = __ItemCode)
    VAR __Table1 = 
        ADDCOLUMNS(
            ADDCOLUMNS(__Table,"__tqty",SUMX(FILTER(__Table,[__COLUMN4NAME__] &amp;lt;= EARLIER([__COLUMN4NAME__])),[__COLUMN5NAME__])),
            "__LoopCounter",[__tqty] - __QtyToFulfill
        )
    VAR __TargetDate = MINX(FILTER(__Table1, [__LoopCounter] &amp;gt;= 0),[__COLUMN4NAME__])
    VAR __FulfillmentDate = IF(__TargetDate = BLANK(),BLANK(),__TargetDate+__DaysToFulfill) 
RETURN
    __FulfillmentDate&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="reportid hidden"&gt;eyJrIjoiODRlZGY3N2QtODZlNC00M2Y1LTkzNWMtOGIxMjBjYTA1ODM1IiwidCI6IjRhMDQyNzQzLTM3M2EtNDNkMi04MjdiLTAwM2Y0YzdiYTFlNSIsImMiOjN9&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 03 Feb 2022 13:09:26 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Delivery-Dates/m-p/2316708#M812</guid>
      <dc:creator>Greg_Deckler</dc:creator>
      <dc:date>2022-02-03T13:09:26Z</dc:date>
    </item>
  </channel>
</rss>

