From 6e21c1283e31a43cfee17248785ed37ac6f2e332 Mon Sep 17 00:00:00 2001 From: EdwinBetanc0urt Date: Mon, 21 Mar 2022 12:41:02 -0400 Subject: [PATCH 1/3] feat: Add frequency type Six-monthly and biweekly. --- .../org/compiere/model/MCommissionRun.java | 57 ++++++++++--- .../org/compiere/model/X_C_Commission.java | 8 +- ...x-monthly_frequency_type_on_Commission.xml | 80 +++++++++++++++++++ 3 files changed, 134 insertions(+), 11 deletions(-) create mode 100644 migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml diff --git a/base/src/org/compiere/model/MCommissionRun.java b/base/src/org/compiere/model/MCommissionRun.java index c6ccc1aa5a..a0d0edc662 100644 --- a/base/src/org/compiere/model/MCommissionRun.java +++ b/base/src/org/compiere/model/MCommissionRun.java @@ -48,6 +48,9 @@ * @see FR [ 766 ] Improve Commission Calculation * * @see FR [ 1080 ] Commission: percentage definition not only as multiplier, but also as percentage + * @author Edwin Betancourt, EdwinBetanc0urt@outlook.com, http://www.erpya.com + * + * @see FR [ 3489 ] Support for biweekly and six-monthly frequency types in Commissions. **/ public class MCommissionRun extends X_C_CommissionRun implements DocAction, DocOptions { @@ -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)) { @@ -1617,16 +1636,34 @@ 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 { @@ -1634,9 +1671,11 @@ else if (MCommission.FREQUENCYTYPE_Weekly.equals(frequencyType)) { 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 diff --git a/base/src/org/compiere/model/X_C_Commission.java b/base/src/org/compiere/model/X_C_Commission.java index 9bb9064331..09b2d12188 100644 --- a/base/src/org/compiere/model/X_C_Commission.java +++ b/base/src/org/compiere/model/X_C_Commission.java @@ -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) @@ -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 diff --git a/migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml b/migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml new file mode 100644 index 0000000000..7fc5de9f38 --- /dev/null +++ b/migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml @@ -0,0 +1,80 @@ + + + + https://github.com/adempiere/adempiere/issues/3771 + + + 0 + 0 + 1000001 + 225 + 2022-03-19 18:38:24.154 + 100 + + D + true + Biweekly + f1da8b7c-cd53-4546-8290-913df9fb031e + 2022-03-19 18:38:24.154 + 100 + + + B + + + + + 0 + es_MX + 0 + 1000001 + 2022-03-19 18:38:24.388 + 100 + + true + true + Quincenalmente + 88728ffb-7574-4494-8df1-cff5ef0566a7 + 2022-03-19 18:38:24.388 + 100 + + + + + 0 + 0 + 1000002 + 225 + 2022-03-19 18:38:24.154 + 100 + + D + true + Six-monthly + 9ac71ec5-1cbe-4b2e-bc37-b8a2a51da4d2 + 2022-03-19 18:38:24.154 + 100 + + + B + + + + + 0 + es_MX + 0 + 1000002 + 2022-03-19 18:38:24.388 + 100 + + true + true + Semestralmente + 2672e460-1119-4c39-b8de-16678700dc7c + 2022-03-19 18:38:24.388 + 100 + + + + From 99f07503780c4a0a39f2b6df4c628f590a167d6d Mon Sep 17 00:00:00 2001 From: EdwinBetanc0urt Date: Mon, 21 Mar 2022 13:31:35 -0400 Subject: [PATCH 2/3] fix value six-monthly frequency type. --- ...or_biweekly_and_six-monthly_frequency_type_on_Commission.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml b/migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml index 7fc5de9f38..c26125eb4c 100644 --- a/migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml +++ b/migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml @@ -56,7 +56,7 @@ 100 - B + S From 000ae8c1432677cdb2913d7aeafa5de53d1c8841 Mon Sep 17 00:00:00 2001 From: Edwin Betancourt <¨EdwinBetanc0urt¨> Date: Thu, 19 May 2022 22:20:40 -0400 Subject: [PATCH 3/3] Generate Migration XML with Centralized ID. --- ...-monthly_frequency_type_on_Commission.xml} | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) rename migration/393lts-394lts/{09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml => 09660_Biweekly_and_six-monthly_frequency_type_on_Commission.xml} (67%) diff --git a/migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml b/migration/393lts-394lts/09660_Biweekly_and_six-monthly_frequency_type_on_Commission.xml similarity index 67% rename from migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml rename to migration/393lts-394lts/09660_Biweekly_and_six-monthly_frequency_type_on_Commission.xml index c26125eb4c..ed3ceea4c2 100644 --- a/migration/393lts-394lts/09390_Support_for_biweekly_and_six-monthly_frequency_type_on_Commission.xml +++ b/migration/393lts-394lts/09660_Biweekly_and_six-monthly_frequency_type_on_Commission.xml @@ -1,21 +1,21 @@ - + https://github.com/adempiere/adempiere/issues/3771 - + 0 0 - 1000001 + 55687 225 - 2022-03-19 18:38:24.154 + 2022-05-19 22:11:44.933 100 D true Biweekly - f1da8b7c-cd53-4546-8290-913df9fb031e - 2022-03-19 18:38:24.154 + 44368e1d-dd70-4de4-8bff-cb3f68284230 + 2022-05-19 22:11:44.933 100 @@ -27,32 +27,32 @@ 0 es_MX 0 - 1000001 - 2022-03-19 18:38:24.388 + 55687 + 2022-05-19 22:11:46.457 100 true true Quincenalmente - 88728ffb-7574-4494-8df1-cff5ef0566a7 - 2022-03-19 18:38:24.388 + 198434d8-6aa9-44bc-bccf-e4dd66399afc + 2022-05-19 22:11:46.457 100 - + 0 0 - 1000002 + 55688 225 - 2022-03-19 18:38:24.154 + 2022-05-19 22:12:10.766 100 D true Six-monthly - 9ac71ec5-1cbe-4b2e-bc37-b8a2a51da4d2 - 2022-03-19 18:38:24.154 + 3b027c02-97f7-4547-aa3c-15850e9e234c + 2022-05-19 22:12:10.766 100 @@ -64,15 +64,15 @@ 0 es_MX 0 - 1000002 - 2022-03-19 18:38:24.388 + 55688 + 2022-05-19 22:12:11.769 100 true true Semestralmente - 2672e460-1119-4c39-b8de-16678700dc7c - 2022-03-19 18:38:24.388 + 36128993-3890-4685-94ca-8d5b400ccdf9 + 2022-05-19 22:12:11.769 100