Hi Michael,
Those default values moved to service definition instead of implementation.
We have feature to pass default value at service definition level.
{code}
+ <override name="emplPositionTypeId" default-value="_NA_"/>
+ <override name="workEffortId" default-value="_NA_"/>
+ <override name="periodTypeId" default-value="RATE_HOUR"/>
+ <override name="partyId" default-value="_NA_"/>
{code}
Thanks & Regards
--
Deepak Dixit
www.hotwaxsystems.com
On Sun, May 28, 2017 at 4:19 PM, Michael Brohl <[email protected]>
wrote:
> Hi Nicolas,
>
> just saw that we had some checks and default values set in the original
> mini lang service for updateRateAmount which I did not find in the new
> Grrovy version.
>
> Don't we need these checks?
>
> Thanks and regards,
>
> Michael Brohl
> ecomify GmbH
> www.ecomify.de
>
>
> Am 27.05.17 um 18:23 schrieb [email protected]:
>
> Author: nmalin
>> Date: Sat May 27 16:23:31 2017
>> New Revision: 1796428
>>
>> URL: http://svn.apache.org/viewvc?rev=1796428&view=rev
>> Log:
>> Fixed: Convert RateServices.xml mini-lang to groovyDSL (OFBIZ-9381)
>> related to task OFBIZ-9350 Deprecate Mini Lang, convert service
>> updateRateAmount, deleteRateAmount updatePartyRate and deletePartyRate from
>> mini-ang to groovyDSL
>> Thanks to Deepak for the review
>>
>> Added:
>> ofbiz/ofbiz-framework/trunk/applications/accounting/groovyS
>> cripts/rate/
>> ofbiz/ofbiz-framework/trunk/applications/accounting/groovyS
>> cripts/rate/RateServices.groovy (with props)
>> Modified:
>> ofbiz/ofbiz-framework/trunk/applications/accounting/minilan
>> g/rate/RateServices.xml
>> ofbiz/ofbiz-framework/trunk/applications/accounting/service
>> def/services_rate.xml
>>
>> Added: ofbiz/ofbiz-framework/trunk/applications/accounting/groovySc
>> ripts/rate/RateServices.groovy
>> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/app
>> lications/accounting/groovyScripts/rate/RateServices.groovy?
>> rev=1796428&view=auto
>> ============================================================
>> ==================
>> ---
>> ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/rate/RateServices.groovy
>> (added)
>> +++
>> ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/rate/RateServices.groovy
>> Sat May 27 16:23:31 2017
>> @@ -0,0 +1,121 @@
>> +/*
>> + * Licensed to the Apache Software Foundation (ASF) under one
>> + * or more contributor license agreements. See the NOTICE file
>> + * distributed with this work for additional information
>> + * regarding copyright ownership. The ASF licenses this file
>> + * to you under the Apache License, Version 2.0 (the
>> + * 'License'); you may not use this file except in compliance
>> + * with the License. You may obtain a copy of the License at
>> + *
>> + * http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing,
>> + * software distributed under the License is distributed on an
>> + * 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> + * KIND, either express or implied. See the License for the
>> + * specific language governing permissions and limitations
>> + * under the License.
>> + */
>> +
>> +import org.apache.ofbiz.base.util.UtilDateTime
>> +import org.apache.ofbiz.base.util.UtilProperties
>> +import org.apache.ofbiz.base.util.UtilValidate
>> +import org.apache.ofbiz.entity.GenericValue
>> +import org.apache.ofbiz.entity.util.EntityUtil
>> +import org.apache.ofbiz.service.ServiceUtil
>> +
>> +import java.sql.Timestamp
>> +
>> +
>> +/**
>> + * Service to create a rate amount value, if a existing value is present
>> expire it before
>> + */
>> +def updateRateAmount() {
>> + GenericValue newEntity = delegator.makeValidValue('RateAmount',
>> parameters)
>> + if (!newEntity.rateCurrencyUomId) {
>> + newEntity.rateCurrencyUomId =
>> UtilProperties.getPropertyValue('general.properties',
>> 'currency.uom.id.default')
>> + }
>> + if (!newEntity.fromDate) newEntity.fromDate =
>> UtilDateTime.getDayStart(UtilDateTime.nowTimestamp())
>> + newEntity.thruDate = null
>> +
>> + //Check if the entry is already exist with a different rate else
>> expire the older to create the new one
>> + boolean updating = false
>> + GenericValue rateAmountLookedUpValue =
>> from('RateAmount').where('rateTypeId',
>> newEntity.rateTypeId,
>> + 'emplPositionTypeId', newEntity.emplPositionTypeId,
>> + 'rateCurrencyUomId', newEntity.rateCurrencyUomId,
>> + 'workEffortId', newEntity.workEffortId,
>> + 'periodTypeId', newEntity.periodTypeId,
>> + 'partyId', newEntity.partyId).filterByDate().queryFirst()
>> + if (rateAmountLookedUpValue) {
>> + updating = (rateAmountLookedUpValue.fromD
>> ate.compareTo(newEntity.fromDate) == 0)
>> + if (rateAmountLookedUpValue.rateAmount != rateAmount) {
>> + Map deleteRateAmountMap = dispatcher.getDispatchContext(
>> ).makeValidContext('deleteRateAmount', 'IN', rateAmountLookedUpValue)
>> + result = run service: 'deleteRateAmount', with:
>> deleteRateAmountMap
>> + if (ServiceUtil.isError(result)) return result
>> + } else {
>> + return
>> error(UtilProperties.getMessage('AccountingErrorUiLabels',
>> 'AccountingUpdateRateAmountAlreadyExist', locale))
>> + }
>> + }
>> + if (updating) newEntity.store()
>> + else newEntity.create()
>> + return success()
>> +}
>> +
>> +/**
>> + * Service to expire a rate amount value
>> + */
>> +def deleteRateAmount() {
>> + GenericValue lookedUpValue = delegator.makeValidValue('RateAmount',
>> parameters)
>> + if (!lookedUpValue.rateCurrencyUomId) {
>> + lookedUpValue.rateCurrencyUomId =
>> UtilProperties.getPropertyValue('general.properties',
>> 'currency.uom.id.default')
>> + }
>> + lookedUpValue = from('RateAmount').where(looke
>> dUpValue.getFields(lookedUpValue.getModelEntity().
>> getPkFieldNames())).queryOne()
>> + if (lookedUpValue) {
>> + Timestamp previousDay =
>> UtilDateTime.adjustTimestamp(UtilDateTime.nowTimestamp(),
>> 5, -1)
>> + lookedUpValue.thruDate = UtilDateTime.getDayEnd(previousDay)
>> + lookedUpValue.store()
>> + } else {
>> + return error(UtilProperties.getMessage('AccountingErrorUiLabels',
>> 'AccountingDeleteRateAmount', locale))
>> + }
>> + return success()
>> +}
>> +
>> +def updatePartyRate() {
>> + List<GenericValue> partyRates = from('PartyRate').where([partyId:
>> partyId, rateTypeId: rateTypeId]).queryList()
>> + if (UtilValidate.isNotEmpty(partyRates)) {
>> + GenericValue partyRate = EntityUtil.getFirst(partyRates)
>> + partyRate.thruDate = UtilDateTime.nowTimestamp()
>> + }
>> + GenericValue newEntity = delegator.makeValidValue('PartyRate',
>> parameters)
>> + if (!newEntity.fromDate) newEntity.fromDate =
>> UtilDateTime.nowTimestamp()
>> + newEntity.create()
>> +
>> + //check other default rate to desactive them
>> + if ('Y' == newEntity.defaultRate) {
>> + partyRates = from('PartyRate').where([partyId: partyId,
>> defaultRate: 'Y']).queryList()
>> + partyRates.each { partyDefaultRate ->
>> + partyDefaultRate.defaultRate = 'N'
>> + partyDefaultRate.store()
>> + }
>> + }
>> + if (parameters.rateAmount) {
>> + Map createRateAmountMap = dispatcher.getDispatchContext(
>> ).makeValidContext('updateRateAmount', 'IN', parameters)
>> + result = run service: 'updateRateAmount', with:
>> createRateAmountMap
>> + if (ServiceUtil.isError(result)) return result
>> + }
>> + return success()
>> +}
>> +
>> +def deletePartyRate() {
>> + GenericValue lookedUpValue = from('PartyRate').where([partyId:
>> partyId, rateTypeId: rateTypeId, fromDate: fromDate]).queryOne()
>> + if (lookedUpValue) {
>> + lookedUpValue.thruDate = UtilDateTime.nowTimestamp()
>> + lookedUpValue.store()
>> +
>> + //expire related rate amount
>> + Map deleteRateAmountMap = dispatcher.getDispatchContext(
>> ).makeValidContext('deleteRateAmount', 'IN', parameters)
>> + result = run service: 'deleteRateAmount', with:
>> deleteRateAmountMap
>> + if (ServiceUtil.isError(result)) return result
>> + }
>> + return success()
>> +}
>>
>> Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/groovySc
>> ripts/rate/RateServices.groovy
>> ------------------------------------------------------------
>> ------------------
>> svn:eol-style = native
>>
>> Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/groovySc
>> ripts/rate/RateServices.groovy
>> ------------------------------------------------------------
>> ------------------
>> svn:keywords = Date Rev Author URL Id
>>
>> Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/groovySc
>> ripts/rate/RateServices.groovy
>> ------------------------------------------------------------
>> ------------------
>> svn:mime-type = text/plain
>>
>> Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/minilang
>> /rate/RateServices.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/app
>> lications/accounting/minilang/rate/RateServices.xml?rev=
>> 1796428&r1=1796427&r2=1796428&view=diff
>> ============================================================
>> ==================
>> ---
>> ofbiz/ofbiz-framework/trunk/applications/accounting/minilang/rate/RateServices.xml
>> (original)
>> +++
>> ofbiz/ofbiz-framework/trunk/applications/accounting/minilang/rate/RateServices.xml
>> Sat May 27 16:23:31 2017
>> @@ -21,85 +21,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="updateRateAmount"
>> short-description="update/create a rate amount value">
>> - <!-- set defaults -->
>> - <if-empty field="parameters.rateCurrencyUomId">
>> - <property-to-field resource="general.properties" property="
>> currency.uom.id.default" field="parameters.rateCurrencyUomId"/>
>> - </if-empty>
>> - <if-empty field="parameters.periodTypeId">
>> - <set field="parameters.periodTypeId" value="RATE_HOUR"/>
>> - </if-empty>
>> - <if-empty field="parameters.emplPositionTypeId">
>> - <set field="parameters.emplPositionTypeId" value="_NA_"/>
>> - </if-empty>
>> - <if-empty field="parameters.partyId">
>> - <set field="parameters.partyId" value="_NA_"/>
>> - </if-empty>
>> - <if-empty field="parameters.workEffortId">
>> - <set field="parameters.workEffortId" value="_NA_"/>
>> - </if-empty>
>> -
>> - <!-- try to find existing value -->
>> - <entity-and entity-name="RateAmount" list="rateAmounts"
>> filter-by-date="true">
>> - <field-map field-name="rateTypeId"
>> from-field="parameters.rateTypeId"/>
>> - <field-map field-name="workEffortId"
>> from-field="parameters.workEffortId"/>
>> - <field-map field-name="rateCurrencyUomId"
>> from-field="parameters.rateCurrencyUomId"/>
>> - <field-map field-name="emplPositionTypeId"
>> from-field="parameters.emplPositionTypeId"/>
>> - <field-map field-name="partyId"
>> from-field="parameters.partyId"/>
>> - <field-map field-name="periodTypeId"
>> from-field="parameters.periodTypeId"/>
>> - </entity-and>
>> -
>> - <!-- end existing value -->
>> - <if-not-empty field="rateAmounts">
>> - <first-from-list list="rateAmounts" entry="rateAmount"/>
>> - <if-compare-field field="rateAmount.rateAmount"
>> operator="not-equals" to-field="parameters.rateAmount">
>> - <set-service-fields service-name="deleteRateAmount"
>> map="rateAmount" to-map="delRateAmount"/>
>> - <call-service service-name="deleteRateAmount"
>> in-map-name="delRateAmount"/>
>> - </if-compare-field>
>> - </if-not-empty>
>> -
>> - <make-value entity-name="RateAmount" value-field="newEntity"/>
>> - <set-pk-fields map="parameters" value-field="newEntity"/>
>> - <set-nonpk-fields map="parameters" value-field="newEntity"/>
>> - <if-empty field="newEntity.fromDate"><now-timestamp
>> field="newEntity.fromDate"/></if-empty>
>> - <clear-field field="newEntity.thruDate"/>
>> - <create-value value-field="newEntity"/>
>> - </simple-method>
>> -
>> - <simple-method method-name="deleteRateAmount"
>> short-description="update/create a rate amount value">
>> - <!-- set defaults -->
>> - <if-empty field="parameters.rateCurrencyUomId">
>> - <property-to-field resource="general.properties" property="
>> currency.uom.id.default" field="parameters.rateCurrencyUomId"/>
>> - </if-empty>
>> - <if-empty field="parameters.periodTypeId">
>> - <set field="parameters.periodTypeId" value="RATE_HOUR"/>
>> - </if-empty>
>> - <if-empty field="parameters.emplPositionTypeId">
>> - <set field="parameters.emplPositionTypeId" value="_NA_"/>
>> - </if-empty>
>> - <if-empty field="parameters.partyId">
>> - <set field="parameters.partyId" value="_NA_"/>
>> - </if-empty>
>> - <if-empty field="parameters.workEffortId">
>> - <set field="parameters.workEffortId" value="_NA_"/>
>> - </if-empty>
>> -
>> - <entity-one entity-name="RateAmount" value-field="rateAmount"/>
>> -
>> - <if-not-empty field="rateAmount">
>> - <now-timestamp field="nowTimestamp"/>
>> - <set field ="previousDay" value="${groovy:
>> org.apache.ofbiz.base.util.UtilDateTime.adjustTimestamp(nowTimestamp,5,-1)}"
>> type="Timestamp"/>
>> - <set field="rateAmount.thruDate" value="${groovy:
>> org.apache.ofbiz.base.util.UtilDateTime.getDayEnd(previousDay)}"
>> type="Timestamp"/>
>> - <store-value value-field="rateAmount"/>
>> - <else>
>> - <add-error>
>> - <fail-property resource="AccountingErrorUiLabels"
>> property="AccountingDeleteRateAmount"/>
>> - </add-error>
>> - </else>
>> - </if-not-empty>
>> -
>> - </simple-method>
>> -
>> <simple-method method-name="getRateAmount" short-description="Get
>> the applicable rate amount value">
>> <!--
>> Search for the applicable rate from most specific to most
>> general in the RateAmount entity
>> @@ -333,57 +254,4 @@ under the License.
>> <field-to-result field="parameters.ratesList"
>> result-name="filteredRatesList"/>
>> </simple-method>
>> - <!-- party rate services -->
>> - <simple-method method-name="updatePartyRate"
>> short-description="Update/Create PartyRate">
>> - <!-- check if already exist is so expire current record -->
>> - <entity-and entity-name="PartyRate" list="partyRates"
>> filter-by-date="true">
>> - <field-map field-name="partyId"
>> from-field="parameters.partyId"/>
>> - <field-map field-name="rateTypeId"
>> from-field="parameters.rateTypeId"/>
>> - </entity-and>
>> - <if-not-empty field="partyRates">
>> - <first-from-list list="partyRates" entry="partyRate"/>
>> - <now-timestamp field="partyRate.thruDate"/>
>> - <store-value value-field="partyRate"/>
>> - </if-not-empty>
>> -
>> - <make-value value-field="newEntity" entity-name="PartyRate"/>
>> - <set-pk-fields map="parameters" value-field="newEntity"/>
>> - <if-empty field="newEntity.fromDate"><now-timestamp
>> field="newEntity.fromDate"/></if-empty>
>> - <set-nonpk-fields map="parameters" value-field="newEntity"/>
>> - <call-simple-method method-name="checkOtherDefaultRate"/>
>> - <create-value value-field="newEntity"/>
>> -
>> - <if-not-empty field="parameters.rateAmount">
>> - <set-service-fields service-name="updateRateAmount"
>> map="parameters" to-map="updRate"/>
>> - <call-service service-name="updateRateAmount"
>> in-map-name="updRate"/>
>> - </if-not-empty>
>> - </simple-method>
>> -
>> - <simple-method method-name="checkOtherDefaultRate"
>> short-description="remove an other defaultRate flag">
>> - <set value="_CREATE" field="securityAction"/>
>> - <check-permission permission="ACCOUNTING"
>> action="${securityAction}">
>> - <fail-property resource="AccountingUiLabels"
>> property="AccountingPermissionError"/>
>> - </check-permission>
>> - <check-errors/>
>> - <if-compare field="newEntity.defaultRate" value="Y"
>> operator="equals">
>> - <entity-and entity-name="PartyRate" list="rates"
>> filter-by-date="true">
>> - <field-map field-name="partyId"
>> from-field="newEntity.partyId"/>
>> - <field-map field-name="defaultRate" value="Y"/>
>> - </entity-and>
>> - <if-not-empty field="rates">
>> - <first-from-list list="rates" entry="rate"/>
>> - <set field="rate.defaultRate" value="N"/>
>> - <store-value value-field="rate"/>
>> - </if-not-empty>
>> - </if-compare>
>> - </simple-method>
>> - <simple-method method-name="deletePartyRate"
>> short-description="Delete PartyRate">
>> - <entity-one entity-name="PartyRate" value-field="lookedUpValue"/>
>> - <now-timestamp field="lookedUpValue.thruDate"/>
>> - <store-value value-field="lookedUpValue"/>
>> -
>> - <set-service-fields service-name="deleteRateAmount"
>> map="parameters" to-map="delRateAmount"/>
>> - <set field="delRateAmount.fromDate"
>> from-field="parameters.rateAmountFromDate"/>
>> - <call-service service-name="deleteRateAmount"
>> in-map-name="delRateAmount"/>
>> - </simple-method>
>> </simple-methods>
>>
>> Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/serviced
>> ef/services_rate.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/app
>> lications/accounting/servicedef/services_rate.xml?rev=
>> 1796428&r1=1796427&r2=1796428&view=diff
>> ============================================================
>> ==================
>> ---
>> ofbiz/ofbiz-framework/trunk/applications/accounting/servicedef/services_rate.xml
>> (original)
>> +++
>> ofbiz/ofbiz-framework/trunk/applications/accounting/servicedef/services_rate.xml
>> Sat May 27 16:23:31 2017
>> @@ -24,21 +24,29 @@ under the License.
>> <vendor>OFBiz</vendor>
>> <version>1.0</version>
>> - <service name="updateRateAmount" default-entity-name="RateAmount"
>> engine="simple" auth="true"
>> - location="component://accounting/minilang/rate/RateServices.xml"
>> invoke="updateRateAmount">
>> + <service name="updateRateAmount" default-entity-name="RateAmount"
>> engine="groovy" auth="true"
>> +
>> location="component://accounting/groovyScripts/rate/RateServices.groovy"
>> invoke="updateRateAmount">
>> <description>Create/update Rate Amount</description>
>> <permission-service service-name="acctgBasePermissionCheck"
>> main-action="CREATE"/>
>> <auto-attributes include="all" mode="IN" optional="true"/>
>> <override name="rateTypeId" optional="false"/>
>> <override name="rateAmount" optional="false"/>
>> - </service>
>> - <service name="deleteRateAmount" default-entity-name="RateAmount"
>> engine="simple" auth="true"
>> - location="component://accounting/minilang/rate/RateServices.xml"
>> invoke="deleteRateAmount">
>> - <description>Delete (expire) Rate Amount</description>
>> + <override name="emplPositionTypeId" default-value="_NA_"/>
>> + <override name="workEffortId" default-value="_NA_"/>
>> + <override name="periodTypeId" default-value="RATE_HOUR"/>
>> + <override name="partyId" default-value="_NA_"/>
>> + </service>
>> + <service name="deleteRateAmount" default-entity-name="RateAmount"
>> engine="groovy" auth="true"
>> +
>> location="component://accounting/groovyScripts/rate/RateServices.groovy"
>> invoke="deleteRateAmount">
>> + <description>expire Rate Amount</description>
>> <permission-service service-name="acctgBasePermissionCheck"
>> main-action="CREATE"/>
>> <auto-attributes include="pk" mode="IN" optional="true"/>
>> <override name="rateTypeId" optional="false"/>
>> <override name="fromDate" optional="false"/>
>> + <override name="emplPositionTypeId" default-value="_NA_"/>
>> + <override name="workEffortId" default-value="_NA_"/>
>> + <override name="periodTypeId" default-value="RATE_HOUR"/>
>> + <override name="partyId" default-value="_NA_"/>
>> </service>
>> <service name="getRateAmount" default-entity-name="RateAmount"
>> engine="simple" auth="true"
>> location="component://accounting/minilang/rate/RateServices.xml"
>> invoke="getRateAmount">
>> @@ -96,8 +104,8 @@ under the License.
>> </service>
>> <!-- PartyRate Services -->
>> - <service name="updatePartyRate" default-entity-name="PartyRate"
>> engine="simple" auth="true"
>> - location="component://accounting/minilang/rate/RateServices.xml"
>> invoke="updatePartyRate">
>> + <service name="updatePartyRate" default-entity-name="PartyRate"
>> engine="groovy" auth="true"
>> +
>> location="component://accounting/groovyScripts/rate/RateServices.groovy"
>> invoke="updatePartyRate">
>> <description>Creates PartyRate</description>
>> <permission-service service-name="acctgBasePermissionCheck"
>> main-action="CREATE"/>
>> <auto-attributes include="pk" mode="IN" optional="false"/>
>> @@ -108,9 +116,9 @@ under the License.
>> <attribute name="periodTypeId" type="String" mode="IN"/>
>> <override name="fromDate" optional="true"/>
>> </service>
>> - <service name="deletePartyRate" default-entity-name="PartyRate"
>> engine="simple" auth="true"
>> - location="component://accounting/minilang/rate/RateServices.xml"
>> invoke="deletePartyRate">
>> - <description>Deletes PartyRate</description>
>> + <service name="deletePartyRate" default-entity-name="PartyRate"
>> engine="groovy" auth="true"
>> +
>> location="component://accounting/groovyScripts/rate/RateServices.groovy"
>> invoke="deletePartyRate">
>> + <description>Expire PartyRate and expire related
>> rateAmount</description>
>> <permission-service service-name="acctgBasePermissionCheck"
>> main-action="UPDATE"/>
>> <auto-attributes include="pk" mode="IN" optional="false"/>
>> <attribute name="rateAmountFromDate" type="Timestamp" mode="IN"
>> optional="true"/><!-- to be able to expire rateamount specific to a party
>> records....-->
>>
>>
>>
>
>