Skip to content

Commit

Permalink
Price Calculation as % of Margin
Browse files Browse the repository at this point in the history
refs: #6045

(cherry picked from commit 3539ca4)

solved Conflicts:
	de.metas.business/src/main/java/de/metas/pricing/IPricingResult.java
	de.metas.business/src/main/java/de/metas/pricing/service/impl/PricingResult.java
  • Loading branch information
pvpurcarcosmin authored and metas-ts committed Jan 29, 2020
1 parent 190a456 commit 9000bcc
Show file tree
Hide file tree
Showing 40 changed files with 3,113 additions and 104 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,29 @@ public interface I_C_OrderLine
/** Column name AD_User_ID */
public static final String COLUMNNAME_AD_User_ID = "AD_User_ID";

/**
* Set Base Commission Points Per Price UOM.
*
* <br>Type: Number
* <br>Mandatory: false
* <br>Virtual Column: false
*/
public void setBase_Commission_Ponits_Per_Price_UOM (java.math.BigDecimal Base_Commission_Ponits_Per_Price_UOM);

/**
* Get Base Commission Points Per Price UOM.
*
* <br>Type: Number
* <br>Mandatory: false
* <br>Virtual Column: false
*/
public java.math.BigDecimal getBase_Commission_Ponits_Per_Price_UOM();

/** Column definition for Base_Commission_Ponits_Per_Price_UOM */
public static final org.adempiere.model.ModelColumn<I_C_OrderLine, Object> COLUMN_Base_Commission_Ponits_Per_Price_UOM = new org.adempiere.model.ModelColumn<I_C_OrderLine, Object>(I_C_OrderLine.class, "Base_Commission_Ponits_Per_Price_UOM", null);
/** Column name Base_Commission_Ponits_Per_Price_UOM */
public static final String COLUMNNAME_Base_Commission_Ponits_Per_Price_UOM = "Base_Commission_Ponits_Per_Price_UOM";

/**
* Set Preissystem.
*
Expand Down Expand Up @@ -2500,6 +2523,29 @@ public interface I_C_OrderLine
/** Column name TaxAmtInfo */
public static final String COLUMNNAME_TaxAmtInfo = "TaxAmtInfo";

/**
* Set Traded Commission Percent.
*
* <br>Type: Number
* <br>Mandatory: false
* <br>Virtual Column: false
*/
public void setTraded_Commission_Percent (java.math.BigDecimal Traded_Commission_Percent);

/**
* Get Traded Commission Percent.
*
* <br>Type: Number
* <br>Mandatory: false
* <br>Virtual Column: false
*/
public java.math.BigDecimal getTraded_Commission_Percent();

/** Column definition for Traded_Commission_Percent */
public static final org.adempiere.model.ModelColumn<I_C_OrderLine, Object> COLUMN_Traded_Commission_Percent = new org.adempiere.model.ModelColumn<I_C_OrderLine, Object>(I_C_OrderLine.class, "Traded_Commission_Percent", null);
/** Column name Traded_Commission_Percent */
public static final String COLUMNNAME_Traded_Commission_Percent = "Traded_Commission_Percent";

/**
* Get Aktualisiert.
* Date this record was updated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class X_C_OrderLine extends org.compiere.model.PO implements I_C_OrderLin
/**
*
*/
private static final long serialVersionUID = 2077526370L;
private static final long serialVersionUID = 305196723L;

/** Standard Constructor */
public X_C_OrderLine (Properties ctx, int C_OrderLine_ID, String trxName)
Expand Down Expand Up @@ -130,6 +130,25 @@ public int getAD_User_ID ()
return ii.intValue();
}

/** Set Base Commission Points Per Price UOM.
@param Base_Commission_Ponits_Per_Price_UOM Base Commission Points Per Price UOM */
@Override
public void setBase_Commission_Ponits_Per_Price_UOM (java.math.BigDecimal Base_Commission_Ponits_Per_Price_UOM)
{
set_Value (COLUMNNAME_Base_Commission_Ponits_Per_Price_UOM, Base_Commission_Ponits_Per_Price_UOM);
}

/** Get Base Commission Points Per Price UOM.
@return Base Commission Points Per Price UOM */
@Override
public java.math.BigDecimal getBase_Commission_Ponits_Per_Price_UOM ()
{
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_Base_Commission_Ponits_Per_Price_UOM);
if (bd == null)
return BigDecimal.ZERO;
return bd;
}

/** Set Preissystem.
@param Base_PricingSystem_ID Preissystem */
@Override
Expand Down Expand Up @@ -610,23 +629,23 @@ public int getC_TaxCategory_ID ()
}

/** Set Steuer.
@param C_Tax_ID
@param C_Tax_ID
Tax identifier
*/
@Override
public void setC_Tax_ID (int C_Tax_ID)
{
if (C_Tax_ID < 1)
if (C_Tax_ID < 1)
set_Value (COLUMNNAME_C_Tax_ID, null);
else
else
set_Value (COLUMNNAME_C_Tax_ID, Integer.valueOf(C_Tax_ID));
}

/** Get Steuer.
@return Tax identifier
*/
@Override
public int getC_Tax_ID ()
public int getC_Tax_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_C_Tax_ID);
if (ii == null)
Expand Down Expand Up @@ -1458,23 +1477,23 @@ public void setM_DiscountSchemaBreak(org.compiere.model.I_M_DiscountSchemaBreak
}

/** Set Discount Schema Break.
@param M_DiscountSchemaBreak_ID
@param M_DiscountSchemaBreak_ID
Trade Discount Break
*/
@Override
public void setM_DiscountSchemaBreak_ID (int M_DiscountSchemaBreak_ID)
{
if (M_DiscountSchemaBreak_ID < 1)
if (M_DiscountSchemaBreak_ID < 1)
set_Value (COLUMNNAME_M_DiscountSchemaBreak_ID, null);
else
else
set_Value (COLUMNNAME_M_DiscountSchemaBreak_ID, Integer.valueOf(M_DiscountSchemaBreak_ID));
}

/** Get Discount Schema Break.
@return Trade Discount Break
*/
@Override
public int getM_DiscountSchemaBreak_ID ()
public int getM_DiscountSchemaBreak_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_M_DiscountSchemaBreak_ID);
if (ii == null)
Expand Down Expand Up @@ -2020,16 +2039,16 @@ public java.math.BigDecimal getPriceStd ()
@Override
public void setPrice_UOM_ID (int Price_UOM_ID)
{
if (Price_UOM_ID < 1)
if (Price_UOM_ID < 1)
set_Value (COLUMNNAME_Price_UOM_ID, null);
else
else
set_Value (COLUMNNAME_Price_UOM_ID, Integer.valueOf(Price_UOM_ID));
}

/** Get Preiseinheit.
@return Preiseinheit */
@Override
public int getPrice_UOM_ID ()
public int getPrice_UOM_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_Price_UOM_ID);
if (ii == null)
Expand All @@ -2039,7 +2058,7 @@ public int getPrice_UOM_ID ()

/** Set Verarbeitet.
@param Processed
Checkbox sagt aus, ob der Beleg verarbeitet wurde.
Checkbox sagt aus, ob der Beleg verarbeitet wurde.
*/
@Override
public void setProcessed (boolean Processed)
Expand All @@ -2048,7 +2067,7 @@ public void setProcessed (boolean Processed)
}

/** Get Verarbeitet.
@return Checkbox sagt aus, ob der Beleg verarbeitet wurde.
@return Checkbox sagt aus, ob der Beleg verarbeitet wurde.
*/
@Override
public boolean isProcessed ()
Expand Down Expand Up @@ -2423,23 +2442,23 @@ public java.lang.String getShipmentAllocation_BestBefore_Policy ()
}

/** Set Ressourcenzuordnung.
@param S_ResourceAssignment_ID
@param S_ResourceAssignment_ID
Resource Assignment
*/
@Override
public void setS_ResourceAssignment_ID (int S_ResourceAssignment_ID)
{
if (S_ResourceAssignment_ID < 1)
if (S_ResourceAssignment_ID < 1)
set_Value (COLUMNNAME_S_ResourceAssignment_ID, null);
else
else
set_Value (COLUMNNAME_S_ResourceAssignment_ID, Integer.valueOf(S_ResourceAssignment_ID));
}

/** Get Ressourcenzuordnung.
@return Resource Assignment
*/
@Override
public int getS_ResourceAssignment_ID ()
public int getS_ResourceAssignment_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_S_ResourceAssignment_ID);
if (ii == null)
Expand Down Expand Up @@ -2469,6 +2488,25 @@ public java.math.BigDecimal getTaxAmtInfo ()
return bd;
}

/** Set Traded Commission Percent.
@param Traded_Commission_Percent Traded Commission Percent */
@Override
public void setTraded_Commission_Percent (java.math.BigDecimal Traded_Commission_Percent)
{
set_Value (COLUMNNAME_Traded_Commission_Percent, Traded_Commission_Percent);
}

/** Get Traded Commission Percent.
@return Traded Commission Percent */
@Override
public java.math.BigDecimal getTraded_Commission_Percent ()
{
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_Traded_Commission_Percent);
if (bd == null)
return BigDecimal.ZERO;
return bd;
}

@Override
public org.compiere.model.I_C_ElementValue getUser1()
{
Expand Down Expand Up @@ -2542,4 +2580,4 @@ public int getUser2_ID ()
return 0;
return ii.intValue();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,8 @@ public interface IBPartnerBL extends ISingletonService

UserId getSalesRepIdOrNull(BPartnerId bpartnerId);

BPartnerId getBPartnerSalesRepId(BPartnerId bPartnerId);

@Value
@Builder
public static class RetrieveContactRequest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -595,13 +595,16 @@ public String getAddressStringByBPartnerLocationId(final BPartnerLocationId bpar
@Override
public UserId getSalesRepIdOrNull(final BPartnerId bpartnerId)
{
final IBPartnerDAO bPartnerDAO = Services.get(IBPartnerDAO.class);
final int salesRepRecordId = getById(bpartnerId).getSalesRep_ID();

final I_C_BPartner bpartnerRecord = bPartnerDAO.getById(bpartnerId);
return UserId.ofRepoIdOrNull(salesRepRecordId);
}

final int salesRepRecordId = bpartnerRecord.getSalesRep_ID();
@Override public BPartnerId getBPartnerSalesRepId(BPartnerId bPartnerId)
{
final int salesRepRecordId = getById(bPartnerId).getC_BPartner_SalesRep_ID();

return UserId.ofRepoIdOrNull(salesRepRecordId);
return BPartnerId.ofRepoIdOrNull(salesRepRecordId);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,8 @@ public void updateOrderLine()
orderLine.setPriceList(pricingResult.getPriceList());
orderLine.setPriceStd(pricingResult.getPriceStd());
orderLine.setPrice_UOM_ID(UomId.toRepoId(pricingResult.getPriceUomId())); // 07090: when setting a priceActual, we also need to specify a PriceUOM
orderLine.setBase_Commission_Ponits_Per_Price_UOM( pricingResult.getBaseCommissionPointsPerPriceUOM() );
orderLine.setTraded_Commission_Percent( pricingResult.getTradedCommissionPercent() );

//
// C_Currency_ID, M_PriceList_Version_ID
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,4 +167,12 @@ default int getCurrencyRepoId()
void setCampaignPrice(boolean isCampaignPrice);

boolean isCampaignPrice();

void setBaseCommissionPointsPerPriceUOM(BigDecimal commissionPointsPerPriceUOM);

BigDecimal getBaseCommissionPointsPerPriceUOM();

void setTradedCommissionPercent(BigDecimal tradedCommissionPercent);

BigDecimal getTradedCommissionPercent();
}
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,10 @@ final class PricingResult implements IPricingResult
@Getter(AccessLevel.NONE)
private final List<IPricingAttribute> pricingAttributes = new ArrayList<>();

private BigDecimal baseCommissionPointsPerPriceUOM;

private BigDecimal tradedCommissionPercent;

@Builder
private PricingResult(
@NonNull final LocalDate priceDate,
Expand Down

0 comments on commit 9000bcc

Please sign in to comment.