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

feat: Add frequency type Six-monthly and biweekly. #3772

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
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>