| <?xml version="1.0" encoding="UTF-8" ?> |
| <!-- |
| 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. |
| --> |
| |
| <simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods-v2.xsd"> |
| <simple-method method-name="createShoppingList" short-description="Create a ShoppingList" login-required="false"> |
| <if> |
| <condition> |
| <and> |
| <not><if-empty field="userLogin"/></not> |
| <not><if-compare field="userLogin.userLoginId" operator="equals" value="anonymous"/></not> |
| <not><if-empty field="parameters.partyId"/></not> |
| <not><if-compare-field to-field="userLogin.partyId" field="parameters.partyId" operator="equals"/></not> |
| <not><if-has-permission permission="PARTYMGR" action="_CREATE"/></not> |
| </and> |
| </condition> |
| <then> |
| <add-error><fail-property resource="OrderErrorUiLabels" property="OrderSecurityErrorToRunCreateShoppingListForAnotherParty"/></add-error> |
| </then> |
| </if> |
| <check-errors/> |
| |
| <make-value value-field="newEntity" entity-name="ShoppingList"/> |
| <set-nonpk-fields map="parameters" value-field="newEntity"/> |
| |
| <if-empty field="newEntity.partyId"> |
| <set from-field="userLogin.partyId" field="newEntity.partyId"/> |
| </if-empty> |
| |
| <if-empty field="newEntity.shoppingListTypeId"> |
| <set value="SLT_WISH_LIST" field="newEntity.shoppingListTypeId"/> |
| </if-empty> |
| |
| <if-empty field="newEntity.listName"> |
| <property-to-field field="newEntity.listName" |
| resource="OrderUiLabels" property="OrderNewShoppingList" default="New Shopping List"/> |
| </if-empty> |
| |
| <if-empty field="newEntity.isPublic"> |
| <set value="N" field="newEntity.isPublic"/> |
| </if-empty> |
| |
| <if-empty field="newEntity.isActive"> |
| <if-compare field="newEntity.shoppingListTypeId" operator="equals" value="SLT_AUTO_REODR"> |
| <set value="N" field="newEntity.isActive"/> |
| <else> |
| <set value="Y" field="newEntity.isActive"/> |
| </else> |
| </if-compare> |
| </if-empty> |
| |
| <sequenced-id sequence-name="ShoppingList" field="newEntity.shoppingListId"/> |
| <field-to-result field="newEntity.shoppingListId" result-name="shoppingListId"/> |
| <create-value value-field="newEntity"/> |
| </simple-method> |
| |
| <simple-method method-name="updateShoppingList" short-description="Update a ShoppingList"> |
| <entity-one entity-name="ShoppingList" value-field="shoppingList"/> |
| |
| <set field="parentMethodName" value="updateShoppingList"/> |
| <set field="permissionAction" value="UPDATE"/> |
| <call-simple-method method-name="checkShoppingListSecurity"/> |
| <check-errors/> |
| |
| <set-nonpk-fields map="parameters" value-field="shoppingList"/> |
| |
| <!-- don't let auto-reorders be active unless there is some recurrence info --> |
| <if> |
| <condition> |
| <and> |
| <if-compare field="shoppingList.shoppingListTypeId" operator="equals" value="SLT_AUTO_REODR"/> |
| <or> |
| <if-empty field="shoppingList.recurrenceInfoId"/> |
| <if-empty field="shoppingList.paymentMethodId"/> |
| <if-empty field="shoppingList.contactMechId"/> |
| <if-empty field="shoppingList.shipmentMethodTypeId"/> |
| </or> |
| </and> |
| </condition> |
| <then> |
| <set value="N" field="shoppingList.isActive"/> |
| </then> |
| </if> |
| |
| <store-value value-field="shoppingList"/> |
| </simple-method> |
| |
| <simple-method method-name="removeShoppingList" short-description="Remove a ShoppingList"> |
| <entity-one entity-name="ShoppingList" value-field="shoppingList"/> |
| |
| <set field="parentMethodName" value="removeShoppingList"/> |
| <set field="permissionAction" value="DELETE"/> |
| <call-simple-method method-name="checkShoppingListSecurity"/> |
| <check-errors/> |
| |
| <remove-value value-field="shoppingList"/> |
| </simple-method> |
| |
| <simple-method method-name="createShoppingListItem" short-description="Create a ShoppingList Item" login-required="false"> |
| <entity-and list="shoppingListItems" entity-name="ShoppingListItem"> |
| <field-map field-name="productId" from-field="parameters.productId"></field-map> |
| <field-map field-name="shoppingListId" from-field="parameters.shoppingListId"></field-map> |
| </entity-and> |
| <if-empty field="shoppingListItems"> |
| <set field="parentMethodName" value="createShoppingListItem"/> |
| <set field="permissionAction" value="CREATE"/> |
| <entity-one entity-name="ShoppingList" value-field="shoppingList"/> |
| <if> |
| <condition> |
| <and> |
| <not><if-empty field="shoppingList.partyId"/></not> |
| <not><if-compare-field field="userLogin.partyId" to-field="shoppingList.partyId" operator="equals"/></not> |
| <not><if-has-permission permission="PARTYMGR" action="_${permissionAction}"/></not> |
| </and> |
| </condition> |
| <then> |
| <add-error><fail-property resource="OrderErrorUiLabels" property="OrderSecurityErrorToRunForAnotherParty"/></add-error> |
| </then> |
| </if> |
| <check-errors/> |
| |
| <entity-one entity-name="Product" value-field="product"/> |
| <if-empty field="product"> |
| <add-error> <fail-property property="ProductErrorProductNotFound" resource="ProductUiLabels"/> </add-error> |
| <check-errors/> |
| </if-empty> |
| <make-value value-field="newEntity" entity-name="ShoppingListItem"/> |
| <set from-field="parameters.shoppingListId" field="newEntity.shoppingListId"/> |
| <make-next-seq-id value-field="newEntity" seq-field-name="shoppingListItemSeqId" numeric-padding="5"/> |
| |
| <set-nonpk-fields map="parameters" value-field="newEntity"/> |
| <field-to-result field="newEntity.shoppingListItemSeqId" result-name="shoppingListItemSeqId"/> |
| <create-value value-field="newEntity"/> |
| |
| <if-compare-field field="shoppingList.partyId" to-field="userLogin.partyId" operator="not-equals"> |
| <now-timestamp field="shoppingList.lastAdminModified"/> |
| <store-value value-field="shoppingList"/> |
| </if-compare-field> |
| <else> |
| <first-from-list entry="shoppingListItem" list="shoppingListItems"/> |
| <calculate field="totalquantity" > |
| <calcop operator="add" field="shoppingListItem.quantity"> |
| <calcop operator="get" field="parameters.quantity"/> |
| </calcop> |
| </calculate> |
| <field-to-result field="shoppingListItem.shoppingListItemSeqId" result-name="shoppingListItemSeqId"/> |
| <set-service-fields service-name="updateShoppingListItem" map="shoppingListItem" to-map="shoppingListItemParameters"/> |
| <set field="shoppingListItemParameters.quantity" from-field="totalquantity"/> |
| <call-service service-name="updateShoppingListItem" in-map-name="shoppingListItemParameters"/> |
| </else> |
| </if-empty> |
| </simple-method> |
| |
| <simple-method method-name="updateShoppingListItem" short-description="Update a ShoppingListItem"> |
| <set field="parentMethodName" value="updateShoppingListItem"/> |
| <set field="permissionAction" value="UPDATE"/> |
| <call-simple-method method-name="checkShoppingListItemSecurity"/> |
| <check-errors/> |
| |
| <entity-one entity-name="ShoppingList" value-field="shoppingList"/> |
| <entity-one entity-name="ShoppingListItem" value-field="shoppingListItem"/> |
| <set-nonpk-fields map="parameters" value-field="shoppingListItem"/> |
| <store-value value-field="shoppingListItem"/> |
| |
| <if-compare-field field="shoppingList.partyId" to-field="userLogin.partyId" operator="not-equals"> |
| <now-timestamp field="shoppingList.lastAdminModified"/> |
| <store-value value-field="shoppingList"/> |
| </if-compare-field> |
| </simple-method> |
| |
| <simple-method method-name="removeShoppingListItem" short-description="Remove a ShoppingListItem"> |
| <set field="parentMethodName" value="removeShoppingListItem"/> |
| <set field="permissionAction" value="DELETE"/> |
| <call-simple-method method-name="checkShoppingListItemSecurity"/> |
| <check-errors/> |
| |
| <entity-one entity-name="ShoppingList" value-field="shoppingList"/> |
| <entity-one entity-name="ShoppingListItem" value-field="shoppingListItem"/> |
| <remove-value value-field="shoppingListItem"/> |
| |
| <if-compare-field field="shoppingList.partyId" to-field="userLogin.partyId" operator="not-equals"> |
| <now-timestamp field="shoppingList.lastAdminModified"/> |
| <store-value value-field="shoppingList"/> |
| </if-compare-field> |
| </simple-method> |
| |
| <simple-method method-name="addDistinctShoppingListItem" |
| short-description="Adds a shopping list item if one with the same productId does not exist"> |
| <entity-condition entity-name="ShoppingListItem" list="shoppingListItemList"> |
| <condition-expr field-name="shoppingListId" from-field="parameters.shoppingListId"/> |
| </entity-condition> |
| |
| <iterate list="shoppingListItemList" entry="shoppingListItem"> |
| <if-compare-field field="parameters.productId" to-field="shoppingListItem.productId" operator="equals"> |
| <field-to-result field="shoppingListItem.shoppingListItemSeqId" result-name="shoppingListItemSeqId"/> |
| <return /> |
| </if-compare-field> |
| </iterate> |
| <call-service service-name="createShoppingListItem" in-map-name="parameters"> |
| <result-to-result result-name="shoppingListItemSeqId"/> |
| </call-service> |
| </simple-method> |
| |
| <simple-method method-name="calculateShoppingListDeepTotalPrice" short-description="Calculate Deep Total Price for a ShoppingList"> |
| <set field="parentMethodName" value="calculateShoppingListDeepTotalPrice"/> |
| <set field="permissionAction" value="VIEW"/> |
| <call-simple-method method-name="checkShoppingListItemSecurity"/> |
| <check-errors/> |
| |
| <set from-field="parameters.prodCatalogId" field="calcPriceInBaseMap.prodCatalogId"/> |
| <set from-field="parameters.webSiteId" field="calcPriceInBaseMap.webSiteId"/> |
| <set from-field="parameters.partyId" field="calcPriceInBaseMap.partyId"/> |
| <set from-field="parameters.productStoreId" field="calcPriceInBaseMap.productStoreId"/> |
| <set from-field="parameters.productStoreGroupId" field="calcPriceInBaseMap.productStoreGroupId"/> |
| <set from-field="parameters.currencyUomId" field="calcPriceInBaseMap.currencyUomId"/> |
| <set from-field="parameters.autoUserLogin" field="calcPriceInBaseMap.autoUserLogin"/> |
| |
| <entity-and entity-name="ShoppingListItem" list="shoppingListItems" use-cache="true"> |
| <field-map field-name="shoppingListId" from-field="parameters.shoppingListId"/> |
| </entity-and> |
| |
| <set field="totalPrice" type="BigDecimal" value="0.0"/> |
| <iterate entry="shoppingListItem" list="shoppingListItems"> |
| <entity-one entity-name="Product" value-field="product" use-cache="true" auto-field-map="false"> |
| <field-map field-name="productId" from-field="shoppingListItem.productId"/> |
| </entity-one> |
| |
| <map-to-map map="calcPriceInBaseMap" to-map="calcPriceInMap"/> |
| <set field="calcPriceInMap.product" from-field="product"/> |
| <set field="calcPriceInMap.quantity" from-field="shoppingListItem.quantity"/> |
| <if-not-empty field="shoppingListItem.modifiedPrice"> |
| <call-service service-name="calculateProductPrice" in-map-name="calcPriceInMap"> |
| <result-to-field result-name="price" field="calcPriceOutMap.price"/> |
| </call-service> |
| </if-not-empty> |
| <set field="itemPrice" from-field="shoppingListItem.modifiedPrice" default-value="${calcPriceOutMap.price}"/> |
| <calculate field="totalPrice"> |
| <calcop field="totalPrice" operator="add"/> |
| <calcop operator="multiply"> |
| <calcop operator="get" field="itemPrice"/> |
| <calcop operator="get" field="shoppingListItem.quantity"/> |
| </calcop> |
| </calculate> |
| <clear-field field="calcPriceInMap"/> |
| </iterate> |
| |
| <entity-and entity-name="ShoppingList" list="childshoppingLists" use-cache="true"> |
| <field-map field-name="parentShoppingListId" from-field="parameters.shoppingListId"/> |
| <field-map field-name="partyId" from-field="userLogin.partyId"/> |
| </entity-and> |
| <iterate entry="childshoppingList" list="childshoppingLists"> |
| <map-to-map map="calcPriceInBaseMap" to-map="calcChildPriceInMap"/> |
| <set from-field="childshoppingList.shoppingListId" field="calcChildPriceInMap.shoppingListId"/> |
| <call-service service-name="calculateShoppingListDeepTotalPrice" in-map-name="calcChildPriceInMap"> |
| <result-to-field result-name="totalPrice" field="calcPriceOutMap.totalPrice"/> |
| </call-service> |
| <calculate field="totalPrice"> |
| <calcop field="totalPrice" operator="get"/> |
| <calcop field="calcPriceOutMap.totalPrice" operator="get"/> |
| </calculate> |
| <clear-field field="calcChildPriceInMap"/> |
| </iterate> |
| |
| <field-to-result field="totalPrice" result-name="totalPrice"/> |
| </simple-method> |
| |
| <simple-method method-name="checkShoppingListSecurity" short-description="Checks security on a ShoppingList"> |
| <if> |
| <condition> |
| <and> |
| <not><if-compare-field to-field="shoppingList.partyId" field="userLogin.partyId" operator="equals"/></not> |
| <not><if-has-permission permission="PARTYMGR" action="_${permissionAction}"/></not> |
| </and> |
| </condition> |
| <then> |
| <add-error><fail-property resource="OrderErrorUiLabels" property="OrderSecurityErrorToRunForAnotherParty"/></add-error> |
| </then> |
| </if> |
| </simple-method> |
| <simple-method method-name="checkShoppingListItemSecurity" short-description="Checks security on a ShoppingListItem"> |
| <entity-one entity-name="ShoppingList" value-field="shoppingList"/> |
| <if> |
| <condition> |
| <and> |
| <not><if-compare-field field="userLogin.partyId" to-field="shoppingList.partyId" operator="equals"/></not> |
| <not><if-has-permission permission="PARTYMGR" action="_${permissionAction}"/></not> |
| </and> |
| </condition> |
| <then> |
| <add-error><fail-property resource="OrderErrorUiLabels" property="OrderSecurityErrorToRunForAnotherParty"/></add-error> |
| </then> |
| </if> |
| </simple-method> |
| <simple-method method-name="addSuggestionsToShoppingList" short-description="Add suggestions to a shopping list"> |
| <!-- first check the ProductStore.enableAutoSuggestionList indicator --> |
| <entity-one entity-name="OrderHeader" value-field="orderHeader"/> |
| <if-empty field="orderHeader.productStoreId"><return/></if-empty> |
| |
| <entity-one entity-name="ProductStore" value-field="productStore" auto-field-map="false"> |
| <field-map field-name="productStoreId" from-field="orderHeader.productStoreId"/> |
| </entity-one> |
| <if-compare field="productStore.enableAutoSuggestionList" operator="not-equals" value="Y"><return/></if-compare> |
| |
| <entity-condition entity-name="OrderRole" list="orderRoleList"> |
| <condition-list combine="and"> |
| <condition-expr field-name="orderId" from-field="parameters.orderId"/> |
| <condition-expr field-name="roleTypeId" value="PLACING_CUSTOMER"/> |
| </condition-list> |
| </entity-condition> |
| <first-from-list list="orderRoleList" entry="orderRole"/> |
| |
| <entity-condition entity-name="ShoppingList" list="shoppingListList"> |
| <condition-list combine="and"> |
| <condition-expr field-name="partyId" from-field="orderRole.partyId"/> |
| <condition-expr field-name="listName" value="Auto Suggestions"/> |
| </condition-list> |
| </entity-condition> |
| <first-from-list list="shoppingListList" entry="shoppingList"/> |
| <if-empty field="shoppingList"> |
| <set field="createShoppingListInMap.partyId" from-field="orderRole.partyId"/> |
| <set field="createShoppingListInMap.listName" value="Auto Suggestions"/> |
| <set field="createShoppingListInMap.shoppingListTypeId" value="SLT_WISH_LIST"/> |
| <set field="createShoppingListInMap.productStoreId" from-field="parameters.productStoreId"/> |
| <call-service service-name="createShoppingList" in-map-name="createShoppingListInMap"> |
| <result-to-field result-name="shoppingListId"/> |
| </call-service> |
| <else> |
| <set field="shoppingListId" from-field="shoppingList.shoppingListId"/> |
| </else> |
| </if-empty> |
| |
| <entity-condition entity-name="OrderItem" list="orderItemList"> |
| <condition-expr field-name="orderId" from-field="parameters.orderId"/> |
| <order-by field-name="orderItemSeqId"/> |
| </entity-condition> |
| <iterate list="orderItemList" entry="orderItem"> |
| <if-not-empty field="orderItem.productId"> |
| <entity-condition entity-name="ProductAssoc" list="compProductAssocList" filter-by-date="true"> |
| <condition-list combine="and"> |
| <condition-expr field-name="productId" from-field="orderItem.productId"/> |
| <condition-expr field-name="productAssocTypeId" value="PRODUCT_COMPLEMENT"/> |
| </condition-list> |
| </entity-condition> |
| <iterate list="compProductAssocList" entry="compProductAssoc"> |
| <clear-field field="shoppingListParameters"/> |
| <set field="shoppingListParameters.productId" from-field="compProductAssoc.productIdTo"/> |
| <set field="shoppingListParameters.shoppingListId" from-field="shoppingListId"/> |
| <set field="shoppingListParameters.quantity" value="1" type="BigDecimal"/> |
| <call-service service-name="addDistinctShoppingListItem" in-map-name="shoppingListParameters"/> |
| </iterate> |
| <entity-one entity-name="Product" value-field="product" auto-field-map="false" > |
| <field-map field-name="productId" from-field="orderItem.productId"/> |
| </entity-one> |
| <if-compare field="product.isVariant" operator="equals" value="Y"> |
| <entity-condition entity-name="ProductAssoc" list="virtualProductAssocList" filter-by-date="true"> |
| <condition-list combine="and"> |
| <condition-expr field-name="productIdTo" from-field="orderItem.productId"/> |
| <condition-expr field-name="productAssocTypeId" value="PRODUCT_VARIANT"/> |
| </condition-list> |
| </entity-condition> |
| <first-from-list list="virtualProductAssocList" entry="virtualProductAssoc"/> |
| <if-not-empty field="virtualProductAssoc"> |
| <entity-condition entity-name="ProductAssoc" list="compProductAssocList" filter-by-date="true"> |
| <condition-list combine="and"> |
| <condition-expr field-name="productId" from-field="virtualProductAssoc.productId"/> |
| <condition-expr field-name="productAssocTypeId" value="PRODUCT_COMPLEMENT"/> |
| </condition-list> |
| </entity-condition> |
| <iterate list="compProductAssocList" entry="compProductAssoc"> |
| <clear-field field="shoppingListParameters"/> |
| <set field="shoppingListParameters.productId" from-field="compProductAssoc.productIdTo"/> |
| <set field="shoppingListParameters.shoppingListId" from-field="shoppingListId"/> |
| <set field="shoppingListParameters.quantity" value="1" type="BigDecimal"/> |
| <call-service service-name="addDistinctShoppingListItem" in-map-name="shoppingListParameters"/> |
| </iterate> |
| </if-not-empty> |
| </if-compare> |
| </if-not-empty> |
| </iterate> |
| </simple-method> |
| </simple-methods> |