Hi @Juju,
I share the solution that I have found in Power Query to distribute the total discount of each order among its item lines.
let
Source = Csv.Document(File.Contents("C:\Enterprise DNA\Forum\Allocate Discount per Sales Orders to lines of that sales order\Discount.csv"),[Delimiter=";", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),
#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Sales Order Number", Int64.Type}, {"Amount", type number}, {"Product Code", type text}}),
#"Reordered Columns" = Table.ReorderColumns(#"Changed Type",{"Sales Order Number", "Product Code", "Amount"}),
#"Added TotalGrossAmount" = Table.AddColumn(
#"Reordered Columns",
"TotalGrossAmount",
(a)=> List.Sum(
Table.SelectRows(
#"Reordered Columns",
(b) => b[Sales Order Number] = a[Sales Order Number] and b[Product Code] <> "Discount" )
[Amount]),
type number),
#"Added TotaDiscount" = Table.AddColumn(
#"Added TotalGrossAmount",
"TotalDiscount",
(a)=> List.Sum(
Table.SelectRows(
#"Added TotalGrossAmount",
(b) => b[Sales Order Number] = a[Sales Order Number] and b[Product Code] = "Discount" )
[Amount]),
type number),
#"Filtered Rows" = Table.SelectRows(#"Added TotaDiscount", each ([Product Code] <> "Discount")),
#"Added Discount" = Table.AddColumn(#"Filtered Rows", "Discount", each ([Amount] * [TotalDiscount]) / [TotalGrossAmount], type number),
#"Added NetAmount" = Table.AddColumn(#"Added Discount", "NetAmount", each [Amount] + [Discount], type number),
#"Removed Other Columns" = Table.SelectColumns(#"Added NetAmount",{"Sales Order Number", "Product Code", "Amount", "Discount", "NetAmount"})
in
#"Removed Other Columns"
I hope it can help you.
Regards,
Discount.csv (249 Bytes)
Discount Allocation_JAFP.pbix (34.2 KB)