You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by nm...@apache.org on 2021/09/17 13:20:09 UTC
[ofbiz-framework] branch trunk updated: Improved: Convert
createInvoiceItemPayrol service from mini-lang to groovy DSL (OFBIZ-11503)
This is an automated email from the ASF dual-hosted git repository.
nmalin pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 4112f1c Improved: Convert createInvoiceItemPayrol service from mini-lang to groovy DSL (OFBIZ-11503)
4112f1c is described below
commit 4112f1cb4b750690ebdeb1cfd76dcc7b45bde0c9
Author: Nicolas Malin <ni...@nereide.fr>
AuthorDate: Fri Sep 17 15:19:24 2021 +0200
Improved: Convert createInvoiceItemPayrol service from mini-lang to groovy DSL (OFBIZ-11503)
Thanks to Nitish Mishra for started this issue
---
.../groovyScripts/invoice/InvoiceServices.groovy | 35 ++++++++++++++++++--
.../accounting/minilang/invoice/InvoiceEvents.xml | 37 +---------------------
.../webapp/accounting/WEB-INF/controller.xml | 2 +-
3 files changed, 35 insertions(+), 39 deletions(-)
diff --git a/applications/accounting/groovyScripts/invoice/InvoiceServices.groovy b/applications/accounting/groovyScripts/invoice/InvoiceServices.groovy
index 83745ac..bf17d4b 100644
--- a/applications/accounting/groovyScripts/invoice/InvoiceServices.groovy
+++ b/applications/accounting/groovyScripts/invoice/InvoiceServices.groovy
@@ -125,7 +125,38 @@ def invoiceSequenceRestart() {
//get the current year string for prefix, etc; simple 4 digit year date string (using system defaults)
Integer curYearString = UtilDateTime.getYear(partyAcctgPreference.lastInvoiceRestartDate, timeZone, locale)
- result.invoiceId = "${curYearString}-${partyAcctgPreference.lastInvoiceNumber}"
- return result
+ return success(invoiceId: "${curYearString}-${partyAcctgPreference.lastInvoiceNumber}")
+}
+
+//Create a new Invoice Item with Payrol Item Type
+def createInvoiceItemPayrol() {
+ List<GenericValue> payRolList = from("InvoiceItemType").queryList()
+ from("InvoiceItemType")
+ .where("parentTypeId", "PAYROL")
+ .queryList()
+ .each { payRolGroup ->
+ payRolList.each { payRol ->
+ if (payRol.parentTypeId == payRolGroup.invoiceItemTypeId) {
+ Map createInvoiceItem = [invoiceId : parameters.invoiceId,
+ invoiceItemTypeId: payRol.invoiceItemTypeId,
+ description : "${payRolGroup.description}: ${payRol.description}",
+ quantity : parameters."${payRol.invoiceItemTypeId}_Quantity" ?: 1d,
+ amount : parameters."${payRol.invoiceItemTypeId}_Amount" ?: 0d]
+
+ if (parameters."${payRol.invoiceItemTypeId}_Quantity" ||
+ parameters."${payRol.invoiceItemTypeId}_Amount") {
+ if ("PAYROL_EARN_HOURS" != payRolGroup.invoiceItemTypeId) {
+ createInvoiceItem.amount = createInvoiceItem.amount.negate()
+ }
+ Map serviceResult = run service: 'createInvoiceItem', with: createInvoiceItem
+ if (ServiceUtil.isError(serviceResult)) {
+ return serviceResult
+ }
+ }
+ }
+ }
+ }
+
+ return success()
}
diff --git a/applications/accounting/minilang/invoice/InvoiceEvents.xml b/applications/accounting/minilang/invoice/InvoiceEvents.xml
index a26e2a4..b5d14aa 100644
--- a/applications/accounting/minilang/invoice/InvoiceEvents.xml
+++ b/applications/accounting/minilang/invoice/InvoiceEvents.xml
@@ -20,41 +20,6 @@ under the License.
<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd">
-
- <simple-method method-name="createInvoiceItemPayrol" short-description="Create a new Invoice Item with Payrol Item Type">
- <entity-condition entity-name="InvoiceItemType" list="PayrolGroup">
- <condition-expr field-name="parentTypeId" value="PAYROL"/>
- </entity-condition>
- <entity-condition entity-name="InvoiceItemType" list="PayrolList"/>
- <iterate list="PayrolGroup" entry="payrolGroup">
- <iterate list="PayrolList" entry="payrolList">
- <if-compare field="payrolList.parentTypeId" value="${payrolGroup.invoiceItemTypeId}" operator="equals">
- <set field="AddInvoiceItem" value="N"/>
- <set field="createInvoiceItem.invoiceId" from-field="parameters.invoiceId"/>
- <set field="createInvoiceItem.invoiceItemTypeId" from-field="payrolList.invoiceItemTypeId"/>
- <set field="createInvoiceItem.description" value="${payrolGroup.description} : ${payrolList.description}"/>
- <set field="createInvoiceItem.quantity" from-field="parameters.${payrolList.invoiceItemTypeId}_Quantity"/>
- <if-not-empty field="parameters.${payrolList.invoiceItemTypeId}_Quantity">
- <set field="AddInvoiceItem" value="Y"/>
- </if-not-empty>
- <set field="createInvoiceItem.amount" from-field="parameters.${payrolList.invoiceItemTypeId}_Amount"/>
- <if-not-empty field="parameters.${payrolList.invoiceItemTypeId}_Amount">
- <set field="AddInvoiceItem" value="Y"/>
- </if-not-empty>
- <if-compare field="AddInvoiceItem" value="Y" operator="equals">
- <!-- negate amount if required -->
- <if-compare field="payrolGroup.invoiceItemTypeId" value="PAYROL_EARN_HOURS" operator="not-equals">
- <calculate field="createInvoiceItem.amount">
- <calcop operator="multiply" field="createInvoiceItem.amount">
- <number value="-1"/>
- </calcop>
- </calculate>
- </if-compare>
- <call-service service-name="createInvoiceItem" in-map-name="createInvoiceItem"/>
- </if-compare>
- </if-compare>
- </iterate>
- </iterate>
- </simple-method>
+
</simple-methods>
diff --git a/applications/accounting/webapp/accounting/WEB-INF/controller.xml b/applications/accounting/webapp/accounting/WEB-INF/controller.xml
index 331b1ea..8cfd63f 100644
--- a/applications/accounting/webapp/accounting/WEB-INF/controller.xml
+++ b/applications/accounting/webapp/accounting/WEB-INF/controller.xml
@@ -187,7 +187,7 @@ under the License.
</request-map>
<request-map uri="createInvoiceItemPayrol">
<security https="true" auth="true"/>
- <event type="simple" invoke="createInvoiceItemPayrol" path="component://accounting/minilang/invoice/InvoiceEvents.xml"/>
+ <event type="groovy" invoke="createInvoiceItemPayrol" path="component://accounting/groovyScripts/invoice/InvoiceServices.groovy"/>
<response name="success" type="view" value="listInvoiceItems"/>
<response name="error" type="view" value="listInvoiceItems"/>
</request-map>