Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#6938 Use price pattern form price list #6943

Merged
merged 4 commits into from Jul 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -96,9 +96,15 @@
<field name="pricestd" class="java.math.BigDecimal">
<property name="com.jaspersoft.studio.field.label" value="pricestd"/>
</field>
<field name="PricePattern1" class="java.lang.String">
<property name="com.jaspersoft.studio.field.label" value="PricePattern1"/>
</field>
<field name="altpricestd" class="java.math.BigDecimal">
<property name="com.jaspersoft.studio.field.label" value="altpricestd"/>
</field>
<field name="PricePattern2" class="java.lang.String">
<property name="com.jaspersoft.studio.field.label" value="PricePattern2"/>
</field>
<field name="hasaltprice" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.label" value="hasaltprice"/>
</field>
Expand Down Expand Up @@ -424,7 +430,7 @@
</textElement>
<textFieldExpression><![CDATA[$F{uomsymbol}]]></textFieldExpression>
</textField>
<textField pattern="###0.00" isBlankWhenNull="true">
<textField isBlankWhenNull="true">
<reportElement key="textField-20" style="StyleBOLD" x="480" y="0" width="47" height="12" forecolor="#000000" uuid="118a78d4-035b-4396-877b-f4e9c74bf281"/>
<box>
<topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
Expand All @@ -436,6 +442,7 @@
<font fontName="Arial" size="9"/>
</textElement>
<textFieldExpression><![CDATA[$F{pricestd}]]></textFieldExpression>
<patternExpression><![CDATA[$F{PricePattern1}]]></patternExpression>
</textField>
<textField isStretchWithOverflow="true" pattern="" isBlankWhenNull="true">
<reportElement key="textField-24" mode="Transparent" x="34" y="0" width="45" height="12" forecolor="#000000" backcolor="#FFFFFF" uuid="097beb53-5e78-4dd1-9c25-efb41d796b05"/>
Expand All @@ -450,7 +457,7 @@
</textElement>
<textFieldExpression><![CDATA[$F{value}]]></textFieldExpression>
</textField>
<textField pattern="###0.00" isBlankWhenNull="true">
<textField isBlankWhenNull="true">
<reportElement key="textField-20" x="527" y="0" width="40" height="12" forecolor="#000000" uuid="118a78d4-035b-4396-877b-f4e9c74bf281">
<printWhenExpression><![CDATA[new Boolean( $F{hasaltprice} != null
&& $F{altpricestd}.floatValue() != 0)]]></printWhenExpression>
Expand All @@ -465,6 +472,7 @@
<font fontName="Arial" size="9" isBold="false"/>
</textElement>
<textFieldExpression><![CDATA[$F{altpricestd}]]></textFieldExpression>
<patternExpression><![CDATA[$F{PricePattern2}]]></patternExpression>
</textField>
</band>
</detail>
Expand Down
Expand Up @@ -20,7 +20,9 @@ CREATE OR REPLACE FUNCTION report.Current_Vs_Previous_Pricelist_Comparison_Repor
qtycuspertu numeric,
packingmaterialname text,
pricestd numeric,
PricePattern1 text,
altpricestd numeric,
PricePattern2 text,
hasaltprice integer,
uomsymbol text,
uom_x12de355 text,
Expand Down Expand Up @@ -105,7 +107,9 @@ SELECT --
r.qtycuspertu,
r.packingmaterialname,
r.pricestd,
PricePattern1,
r.altpricestd,
PricePattern2,
r.hasaltprice,
r.uomsymbol,
r.uom_x12de355,
Expand Down
Expand Up @@ -22,7 +22,9 @@ CREATE OR REPLACE FUNCTION report.Current_Vs_Previous_Pricelist_Comparison_Repor
qtycuspertu numeric,
packingmaterialname text,
pricestd numeric,
PricePattern1 text,
altpricestd numeric,
PricePattern2 text,
hasaltprice integer,
uomsymbol text,
uom_x12de355 text,
Expand Down Expand Up @@ -107,7 +109,9 @@ SELECT --
r.qtycuspertu,
r.packingmaterialname,
r.pricestd,
PricePattern1,
r.altpricestd,
PricePattern2,
r.hasaltprice,
r.uomsymbol,
r.uom_x12de355,
Expand Down
Expand Up @@ -22,7 +22,9 @@ CREATE OR REPLACE FUNCTION report.fresh_pricelist_details_report(IN p_c_bpartner
qtycuspertu numeric,
packingmaterialname text,
pricestd numeric,
PricePattern1 text,
altpricestd numeric,
PricePattern2 text,
hasaltprice integer,
uomsymbol text,
uom_x12de355 text,
Expand Down Expand Up @@ -50,7 +52,9 @@ SELECT --
plc.QtyCUsPerTU,
plc.PackingMaterialName,
plc.PriceStd,
PricePattern1,
plc.AltPriceStd,
PricePattern2,
plc.HasAltPrice,
plc.UOMSymbol,
plc.UOM_X12DE355::text,
Expand Down
Expand Up @@ -20,7 +20,9 @@ CREATE OR REPLACE FUNCTION report.fresh_pricelist_details_report_With_PP_PI(IN p
qtycuspertu numeric,
packingmaterialname text,
pricestd numeric,
PricePattern1 text,
altpricestd numeric,
PricePattern2 text,
hasaltprice integer,
uomsymbol text,
uom_x12de355 text,
Expand Down Expand Up @@ -48,7 +50,9 @@ SELECT --
plc.QtyCUsPerTU,
plc.PackingMaterialName,
plc.PriceStd,
PricePattern1,
plc.AltPriceStd,
PricePattern2,
plc.HasAltPrice,
plc.UOMSymbol,
plc.UOM_X12DE355::text,
Expand Down
Expand Up @@ -14,35 +14,43 @@ SELECT pp.AD_Org_ID,
pp.IsActive,

-- Displayed pricelist data
pc.Name AS ProductCategory,
pc.value AS ProductCategoryValue,
pc.Name AS ProductCategory,
pc.value AS ProductCategoryValue,
p.M_Product_ID,
p.Value,
p.Name AS ProductName,
p.Name AS ProductName,
pp.IsSeasonFixedPrice,
hupip.Name AS ItemProductName,
pm.Name AS PackingMaterialName,
ROUND(COALESCE(ppa.PriceStd, pp.PriceStd), coalesce(pl.priceprecision, 2)) AS PriceStd,
ROUND(pp2.PriceStd, coalesce(pl2.priceprecision, 2)) AS AltPriceStd,
CASE WHEN pp2.PriceStd IS NULL THEN 0 ELSE 1 END AS hasaltprice,
hupip.Name AS ItemProductName,
pm.Name AS PackingMaterialName,
COALESCE(ppa.PriceStd, pp.PriceStd) AS PriceStd,
CASE
WHEN pl.priceprecision = 0
THEN '#,##0'
ELSE Substring('#,##0.000' FROM 0 FOR 7 + pl.priceprecision :: integer) END AS PricePattern1,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not use '#,##0.000000000000' instead?

pp2.PriceStd AS AltPriceStd,
CASE
WHEN pl.priceprecision = 0
THEN '#,##0'
ELSE Substring('#,##0.000' FROM 0 FOR 7 + pl2.priceprecision :: integer) END AS PricePattern2,
CASE WHEN pp2.PriceStd IS NULL THEN 0 ELSE 1 END AS hasaltprice,
uom.UOMSymbol,
COALESCE(ppa.Attributes, '') as attributes,
COALESCE(ppa.Attributes, '') as attributes,
pp.seqNo,

-- Filter Columns
bp.C_BPartner_ID,
plv.M_Pricelist_Version_ID,
plv2.M_Pricelist_Version_ID AS Alt_PriceList_Version_ID,
plv2.M_Pricelist_Version_ID AS Alt_PriceList_Version_ID,

-- Additional internal infos to be used
pp.M_ProductPrice_ID,
ppa.m_attributesetinstance_ID,
bp_ip.M_HU_PI_Item_Product_ID as M_HU_PI_Item_Product_ID,
uom.X12DE355 as UOM_X12DE355,
hupip.Qty as QtyCUsPerTU,
it.m_hu_pi_version_id AS m_hu_pi_version_id,
c.iso_code as currency,
c2.iso_code as currency2
bp_ip.M_HU_PI_Item_Product_ID as M_HU_PI_Item_Product_ID,
uom.X12DE355 as UOM_X12DE355,
hupip.Qty as QtyCUsPerTU,
it.m_hu_pi_version_id AS m_hu_pi_version_id,
c.iso_code as currency,
c2.iso_code as currency2

FROM M_ProductPrice pp

Expand All @@ -69,14 +77,24 @@ FROM M_ProductPrice pp

AND CASE
WHEN
EXISTS(select 0 from Report.Valid_PI_Item_Product_V v where p.M_Product_ID = v.M_Product_ID AND v.hasPartner is true and bp.C_BPartner_ID = v.C_BPartner_ID)
EXISTS(select 0
from Report.Valid_PI_Item_Product_V v
where p.M_Product_ID = v.M_Product_ID
AND v.hasPartner is true
and bp.C_BPartner_ID = v.C_BPartner_ID)
THEN vip.C_BPartner_ID = bp.C_BPartner_ID
else vip.C_BPartner_ID IS NULL END
) bp_ip ON TRUE

LEFT OUTER JOIN LATERAL
(
SELECT M_ProductPrice_ID, M_Attributesetinstance_ID, PriceStd, IsActive, M_HU_PI_Item_Product_ID, Attributes, Signature
SELECT M_ProductPrice_ID,
M_Attributesetinstance_ID,
PriceStd,
IsActive,
M_HU_PI_Item_Product_ID,
Attributes,
Signature
FROM report.fresh_AttributePrice ppa
WHERE ppa.isActive = 'Y'
AND ppa.M_ProductPrice_ID = pp.M_ProductPrice_ID
Expand All @@ -87,16 +105,20 @@ FROM M_ProductPrice pp
LEFT OUTER JOIN m_hu_pi_item_product hupip ON
case
when pp.m_hu_pi_item_product_id is null then
bp_ip.m_hu_pi_item_product_ID = hupip.m_hu_pi_item_product_id and hupip.isActive = 'Y'
bp_ip.m_hu_pi_item_product_ID = hupip.m_hu_pi_item_product_id and hupip.isActive = 'Y'
else
bp_ip.m_product_id = hupip.m_product_id and hupip.isActive = 'Y'
end
LEFT OUTER JOIN m_hu_pi_item it ON hupip.M_HU_PI_Item_ID = it.M_HU_PI_Item_ID AND it.isActive = 'Y'
LEFT OUTER JOIN m_hu_pi_item pmit ON it.m_hu_pi_version_id = pmit.m_hu_pi_version_id AND pmit.itemtype::TEXT = 'PM'::TEXT AND pmit.isActive = 'Y'
LEFT OUTER JOIN m_hu_packingmaterial pm ON pmit.m_hu_packingmaterial_id = pm.m_hu_packingmaterial_id AND pm.isActive = 'Y'
LEFT OUTER JOIN m_hu_pi_item pmit
ON it.m_hu_pi_version_id = pmit.m_hu_pi_version_id AND pmit.itemtype::TEXT = 'PM'::TEXT AND
pmit.isActive = 'Y'
LEFT OUTER JOIN m_hu_packingmaterial pm
ON pmit.m_hu_packingmaterial_id = pm.m_hu_packingmaterial_id AND pm.isActive = 'Y'


INNER JOIN M_PriceList_Version plv ON pp.M_PriceList_Version_ID = plv.M_PriceList_Version_ID AND plv.IsActive = 'Y'
INNER JOIN M_PriceList_Version plv
ON pp.M_PriceList_Version_ID = plv.M_PriceList_Version_ID AND plv.IsActive = 'Y'
/*
Get Comparison Prices
*/
Expand All @@ -108,15 +130,20 @@ FROM M_ProductPrice pp
SELECT COALESCE(ppa2.PriceStd, pp2.PriceStd) AS PriceStd, ppa2.signature
FROM M_ProductPrice pp2
/* Joining attribute prices */
INNER JOIN report.fresh_AttributePrice ppa2 ON pp2.M_ProductPrice_ID = ppa2.M_ProductPrice_ID AND ppa2.m_pricelist_version_id = pp2.m_pricelist_version_id
INNER JOIN report.fresh_AttributePrice ppa2 ON pp2.M_ProductPrice_ID = ppa2.M_ProductPrice_ID AND
ppa2.m_pricelist_version_id = pp2.m_pricelist_version_id

WHERE p.M_Product_ID = pp2.M_Product_ID
AND pp2.M_Pricelist_Version_ID = plv2.M_Pricelist_Version_ID
AND pp2.IsActive = 'Y'
AND (pp2.m_hu_pi_item_product_ID = pp.m_hu_pi_item_product_ID OR (pp2.m_hu_pi_item_product_ID is null and pp.m_hu_pi_item_product_ID is null))
AND (pp2.m_hu_pi_item_product_ID = pp.m_hu_pi_item_product_ID OR
(pp2.m_hu_pi_item_product_ID is null and pp.m_hu_pi_item_product_ID is null))
AND pp2.isAttributeDependant = pp.isAttributeDependant
--avoid comparing different prices in same pricelist
AND (CASE WHEN pp2.M_PriceList_Version_ID = pp.M_PriceList_Version_ID THEN pp2.M_ProductPrice_ID = pp.M_ProductPrice_ID ELSE TRUE END)
AND (CASE
WHEN pp2.M_PriceList_Version_ID = pp.M_PriceList_Version_ID
THEN pp2.M_ProductPrice_ID = pp.M_ProductPrice_ID
ELSE TRUE END)
/* we have to make sure that only prices with the same attributes and packing instructions are compared. Note:
* - If there is an Existing Attribute Price but no signature related columns are filled the signature will be ''
* - If there are no Attribute Prices the signature will be null
Expand All @@ -136,7 +163,9 @@ WHERE pp.isActive = 'Y'
AND (pp.M_Attributesetinstance_ID = ppa.M_Attributesetinstance_ID OR pp.M_Attributesetinstance_ID is null)
AND (pp.M_HU_PI_Item_Product_ID = bp_ip.M_HU_PI_Item_Product_ID OR pp.M_HU_PI_Item_Product_ID is null)

AND (case when plv2.M_PriceList_Version_ID = plv.M_PriceList_Version_ID THEN ppa.signature = pp2.signature ELSE true end)
AND (case
when plv2.M_PriceList_Version_ID = plv.M_PriceList_Version_ID THEN ppa.signature = pp2.signature
ELSE true end)
;

COMMENT ON VIEW RV_fresh_PriceList_Comparison
Expand Down
Expand Up @@ -20,8 +20,16 @@ SELECT pp.AD_Org_ID,
pp.IsSeasonFixedPrice,
hupip.Name AS ItemProductName,
pm.Name AS PackingMaterialName,
ROUND(COALESCE(ppa.PriceStd, pp.PriceStd), coalesce(pl.priceprecision, 2)) AS PriceStd,
ROUND(pp2.PriceStd, coalesce(pl2.priceprecision, 2)) AS AltPriceStd,
COALESCE(ppa.PriceStd, pp.PriceStd) AS PriceStd,
CASE
WHEN pl.priceprecision = 0
THEN '#,##0'
ELSE Substring('#,##0.000' FROM 0 FOR 7 + pl.priceprecision :: integer) END AS PricePattern1,
pp2.PriceStd AS AltPriceStd,
CASE
WHEN pl.priceprecision = 0
THEN '#,##0'
ELSE Substring('#,##0.000' FROM 0 FOR 7 + pl2.priceprecision :: integer) END AS PricePattern2,
CASE WHEN pp2.PriceStd IS NULL THEN 0 ELSE 1 END AS hasaltprice,
uom.UOMSymbol,
COALESCE(ppa.Attributes, '') as attributes,
Expand Down Expand Up @@ -125,5 +133,5 @@ WHERE pp.isActive = 'Y'

AND (case when plv2.M_PriceList_Version_ID = plv.M_PriceList_Version_ID THEN ppa.signature = pp2.signature ELSE true end)

GROUP BY pp.M_ProductPrice_ID, pp.AD_Client_ID, pp.Created, pp.CreatedBy, pp.Updated, pp.UpdatedBy, pp.IsActive, pc.Name, pc.value, p.M_Product_ID, p.Value, p.Name, pp.IsSeasonFixedPrice, hupip.Name, pm.Name, ROUND(COALESCE(ppa.PriceStd, pp.PriceStd), coalesce(pl.priceprecision, 2)), ROUND(pp2.PriceStd, coalesce(pl2.priceprecision, 2)), CASE WHEN pp2.PriceStd IS NULL THEN 0 ELSE 1 END, uom.UOMSymbol, COALESCE(ppa.Attributes, ''), pp.seqNo, bp.C_BPartner_ID, plv.M_Pricelist_Version_ID, plv2.M_Pricelist_Version_ID, pp.AD_Org_ID, ppa.m_attributesetinstance_ID, pp.M_HU_PI_Item_Product_ID, uom.X12DE355, hupip.Qty, it.m_hu_pi_version_id, c.iso_code, c2.iso_code
GROUP BY pp.M_ProductPrice_ID, pp.AD_Client_ID, pp.Created, pp.CreatedBy, pp.Updated, pp.UpdatedBy, pp.IsActive, pc.Name, pc.value, p.M_Product_ID, p.Value, p.Name, pp.IsSeasonFixedPrice, hupip.Name, pm.Name, COALESCE(ppa.PriceStd, pp.PriceStd) , pl.priceprecision, pp2.PriceStd, pl2.priceprecision, CASE WHEN pp2.PriceStd IS NULL THEN 0 ELSE 1 END, uom.UOMSymbol, COALESCE(ppa.Attributes, ''), pp.seqNo, bp.C_BPartner_ID, plv.M_Pricelist_Version_ID, plv2.M_Pricelist_Version_ID, pp.AD_Org_ID, ppa.m_attributesetinstance_ID, pp.M_HU_PI_Item_Product_ID, uom.X12DE355, hupip.Qty, it.m_hu_pi_version_id, c.iso_code, c2.iso_code
;