Skip to content

Commit

Permalink
Commission: Add frequency Type Six-monthly and Biweekly.
Browse files Browse the repository at this point in the history
Pull Request: #3772
Tested and accepted by Mario Calderon (marcalwestf, mariocalderon007@gmail.com)
  • Loading branch information
marcalwestf committed May 23, 2022
2 parents 1e954d6 + 000ae8c commit 0f4d86c
Show file tree
Hide file tree
Showing 3 changed files with 134 additions and 11 deletions.
57 changes: 48 additions & 9 deletions base/src/org/compiere/model/MCommissionRun.java
Expand Up @@ -48,6 +48,9 @@
* @see FR [ 766 ] Improve Commission Calculation</a>
* <a href="https://github.com/adempiere/adempiere/issues/1080">
* @see FR [ 1080 ] Commission: percentage definition not only as multiplier, but also as percentage</a>
* @author Edwin Betancourt, EdwinBetanc0urt@outlook.com, http://www.erpya.com
* <a href="https://github.com/adempiere/adempiere/issues/3771">
* @see FR [ 3489 ] Support for biweekly and six-monthly frequency types in Commissions.</a>
**/
public class MCommissionRun extends X_C_CommissionRun implements DocAction, DocOptions {

Expand Down Expand Up @@ -1598,9 +1601,25 @@ && getEndDate() != null)
setStartDate(new Timestamp (cal.getTimeInMillis()));
//
cal.add(Calendar.YEAR, 1);
cal.add(Calendar.DAY_OF_YEAR, -1);
setEndDate(new Timestamp (cal.getTimeInMillis()));

cal.add(Calendar.DAY_OF_YEAR, -1);
}
// Six-monthly
else if (MCommission.FREQUENCYTYPE_Six_Monthly.equals(frequencyType)) {
cal.set(Calendar.DAY_OF_MONTH, 1);
int month = cal.get(Calendar.MONTH);
// first six-monthly
if (month <= Calendar.JUNE) {
cal.set(Calendar.MONTH, Calendar.JANUARY);
setStartDate(new Timestamp (cal.getTimeInMillis()));
}
// second six-monthly
else {
cal.set(Calendar.MONTH, Calendar.JULY);
setStartDate(new Timestamp (cal.getTimeInMillis()));
}
//
cal.add(Calendar.MONTH, 6);
cal.add(Calendar.DAY_OF_YEAR, -1);
}
// Quarterly
else if (MCommission.FREQUENCYTYPE_Quarterly.equals(frequencyType)) {
Expand All @@ -1617,26 +1636,46 @@ else if (month < Calendar.OCTOBER)
setStartDate(new Timestamp (cal.getTimeInMillis()));
//
cal.add(Calendar.MONTH, 3);
cal.add(Calendar.DAY_OF_YEAR, -1);
setEndDate(new Timestamp (cal.getTimeInMillis()));
cal.add(Calendar.DAY_OF_YEAR, -1);
}
// Weekly
else if (MCommission.FREQUENCYTYPE_Weekly.equals(frequencyType)) {
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
setStartDate(new Timestamp (cal.getTimeInMillis()));
//
cal.add(Calendar.DAY_OF_YEAR, 7);
setEndDate(new Timestamp (cal.getTimeInMillis()));
cal.add(Calendar.DAY_OF_YEAR, 7);
}
// Biweekly
else if (MCommission.FREQUENCYTYPE_Biweekly.equals(frequencyType)) {
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
// first biweekly
if (dayOfMonth <= 15) {
cal.set(Calendar.DAY_OF_MONTH, 1);
setStartDate(new Timestamp(cal.getTimeInMillis()));
//
cal.set(Calendar.DAY_OF_MONTH, 15);
}
// second biweekly
else {
cal.set(Calendar.DAY_OF_MONTH, 16);
setStartDate(new Timestamp(cal.getTimeInMillis()));
//
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.MONTH, 1);
cal.add(Calendar.DAY_OF_YEAR, -1);
}
}
// Monthly
else {
cal.set(Calendar.DAY_OF_MONTH, 1);
setStartDate(new Timestamp (cal.getTimeInMillis()));
//
cal.add(Calendar.MONTH, 1);
cal.add(Calendar.DAY_OF_YEAR, -1);
setEndDate(new Timestamp (cal.getTimeInMillis()));
cal.add(Calendar.DAY_OF_YEAR, -1);
}

setEndDate(new Timestamp(cal.getTimeInMillis()));

log.fine("setStartEndDate = " + getStartDate() + " - " + getEndDate());
} // setStartEndDate

Expand Down
8 changes: 6 additions & 2 deletions base/src/org/compiere/model/X_C_Commission.java
Expand Up @@ -24,14 +24,14 @@

/** Generated Model for C_Commission
* @author Adempiere (generated)
* @version Release 3.9.2 - $Id$ */
* @version Release 3.9.3 - $Id$ */
public class X_C_Commission extends PO implements I_C_Commission, I_Persistent
{

/**
*
*/
private static final long serialVersionUID = 20191120L;
private static final long serialVersionUID = 20220321L;

/** Standard Constructor */
public X_C_Commission (Properties ctx, int C_Commission_ID, String trxName)
Expand Down Expand Up @@ -334,6 +334,10 @@ public String getDocBasisType ()
public static final String FREQUENCYTYPE_Quarterly = "Q";
/** Yearly = Y */
public static final String FREQUENCYTYPE_Yearly = "Y";
/** Biweekly = B */
public static final String FREQUENCYTYPE_Biweekly = "B";
/** Six-monthly = S */
public static final String FREQUENCYTYPE_Six_Monthly = "S";
/** Set Frequency Type.
@param FrequencyType
Frequency of event
Expand Down
@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Migrations>
<Migration EntityType="D" Name="Biweekly and six-monthly frequency types in Commissions." ReleaseNo="3.9.4" SeqNo="9660">
<Comments>https://github.com/adempiere/adempiere/issues/3771</Comments>
<Step SeqNo="10" StepType="AD">
<PO AD_Table_ID="104" Action="I" Record_ID="55687" Table="AD_Ref_List">
<Data AD_Column_ID="371" Column="AD_Client_ID">0</Data>
<Data AD_Column_ID="372" Column="AD_Org_ID">0</Data>
<Data AD_Column_ID="148" Column="AD_Ref_List_ID">55687</Data>
<Data AD_Column_ID="151" Column="AD_Reference_ID">225</Data>
<Data AD_Column_ID="564" Column="Created">2022-05-19 22:11:44.933</Data>
<Data AD_Column_ID="565" Column="CreatedBy">100</Data>
<Data AD_Column_ID="150" Column="Description" isNewNull="true"/>
<Data AD_Column_ID="7712" Column="EntityType">D</Data>
<Data AD_Column_ID="563" Column="IsActive">true</Data>
<Data AD_Column_ID="149" Column="Name">Biweekly</Data>
<Data AD_Column_ID="84390" Column="UUID">44368e1d-dd70-4de4-8bff-cb3f68284230</Data>
<Data AD_Column_ID="566" Column="Updated">2022-05-19 22:11:44.933</Data>
<Data AD_Column_ID="567" Column="UpdatedBy">100</Data>
<Data AD_Column_ID="152" Column="ValidFrom" isNewNull="true"/>
<Data AD_Column_ID="153" Column="ValidTo" isNewNull="true"/>
<Data AD_Column_ID="200" Column="Value">B</Data>
</PO>
</Step>
<Step SeqNo="20" StepType="AD">
<PO AD_Table_ID="136" Action="I" Record_ID="0" Table="AD_Ref_List_Trl">
<Data AD_Column_ID="1215" Column="AD_Client_ID">0</Data>
<Data AD_Column_ID="337" Column="AD_Language">es_MX</Data>
<Data AD_Column_ID="1216" Column="AD_Org_ID">0</Data>
<Data AD_Column_ID="336" Column="AD_Ref_List_ID">55687</Data>
<Data AD_Column_ID="707" Column="Created">2022-05-19 22:11:46.457</Data>
<Data AD_Column_ID="708" Column="CreatedBy">100</Data>
<Data AD_Column_ID="339" Column="Description" isNewNull="true"/>
<Data AD_Column_ID="706" Column="IsActive">true</Data>
<Data AD_Column_ID="340" Column="IsTranslated">true</Data>
<Data AD_Column_ID="338" Column="Name">Quincenalmente</Data>
<Data AD_Column_ID="84391" Column="UUID">198434d8-6aa9-44bc-bccf-e4dd66399afc</Data>
<Data AD_Column_ID="709" Column="Updated">2022-05-19 22:11:46.457</Data>
<Data AD_Column_ID="710" Column="UpdatedBy">100</Data>
</PO>
</Step>
<Step SeqNo="30" StepType="AD">
<PO AD_Table_ID="104" Action="I" Record_ID="55688" Table="AD_Ref_List">
<Data AD_Column_ID="371" Column="AD_Client_ID">0</Data>
<Data AD_Column_ID="372" Column="AD_Org_ID">0</Data>
<Data AD_Column_ID="148" Column="AD_Ref_List_ID">55688</Data>
<Data AD_Column_ID="151" Column="AD_Reference_ID">225</Data>
<Data AD_Column_ID="564" Column="Created">2022-05-19 22:12:10.766</Data>
<Data AD_Column_ID="565" Column="CreatedBy">100</Data>
<Data AD_Column_ID="150" Column="Description" isNewNull="true"/>
<Data AD_Column_ID="7712" Column="EntityType">D</Data>
<Data AD_Column_ID="563" Column="IsActive">true</Data>
<Data AD_Column_ID="149" Column="Name">Six-monthly</Data>
<Data AD_Column_ID="84390" Column="UUID">3b027c02-97f7-4547-aa3c-15850e9e234c</Data>
<Data AD_Column_ID="566" Column="Updated">2022-05-19 22:12:10.766</Data>
<Data AD_Column_ID="567" Column="UpdatedBy">100</Data>
<Data AD_Column_ID="152" Column="ValidFrom" isNewNull="true"/>
<Data AD_Column_ID="153" Column="ValidTo" isNewNull="true"/>
<Data AD_Column_ID="200" Column="Value">S</Data>
</PO>
</Step>
<Step SeqNo="40" StepType="AD">
<PO AD_Table_ID="136" Action="I" Record_ID="0" Table="AD_Ref_List_Trl">
<Data AD_Column_ID="1215" Column="AD_Client_ID">0</Data>
<Data AD_Column_ID="337" Column="AD_Language">es_MX</Data>
<Data AD_Column_ID="1216" Column="AD_Org_ID">0</Data>
<Data AD_Column_ID="336" Column="AD_Ref_List_ID">55688</Data>
<Data AD_Column_ID="707" Column="Created">2022-05-19 22:12:11.769</Data>
<Data AD_Column_ID="708" Column="CreatedBy">100</Data>
<Data AD_Column_ID="339" Column="Description" isNewNull="true"/>
<Data AD_Column_ID="706" Column="IsActive">true</Data>
<Data AD_Column_ID="340" Column="IsTranslated">true</Data>
<Data AD_Column_ID="338" Column="Name">Semestralmente</Data>
<Data AD_Column_ID="84391" Column="UUID">36128993-3890-4685-94ca-8d5b400ccdf9</Data>
<Data AD_Column_ID="709" Column="Updated">2022-05-19 22:12:11.769</Data>
<Data AD_Column_ID="710" Column="UpdatedBy">100</Data>
</PO>
</Step>
</Migration>
</Migrations>

0 comments on commit 0f4d86c

Please sign in to comment.