<?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"
        xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd">

    <!-- TaxAuthorityCategory methods -->
    <simple-method method-name="deleteTaxAuthorityCategory" short-description="delete a TaxAuthorityCategory">
        <set field="taxAuthorityRateProductMap.taxAuthGeoId" from-field="parameters.taxAuthGeoId"/>
        <set field="taxAuthorityRateProductMap.taxAuthPartyId" from-field="parameters.taxAuthPartyId"/>
        <set field="taxAuthorityRateProductMap.productCategoryId" from-field="parameters.productCategoryId"/>
        <find-by-and entity-name="TaxAuthorityRateProduct" map="taxAuthorityRateProductMap" list="taxAuthorityRateProductList"/>
        <if-empty field="taxAuthorityRateProductList">
            <entity-one entity-name="TaxAuthorityCategory" value-field="lookedUpValue"/>
            <remove-value value-field="lookedUpValue"/>
            <else>
                <add-error>
                    <fail-property resource="AccountingUiLabels" property="AccountingTaxAuthorityRateProductUseThisProductCategory"/>
                </add-error>
            </else>
        </if-empty>
        <check-errors/>
    </simple-method>

    <!-- PartyTaxAuthInfo methods -->
    <simple-method method-name="createPartyTaxAuthInfo" short-description="create a PartyTaxAuthInfo">
        <call-simple-method method-name="validatePartyTaxIdInline"/>

        <entity-one entity-name="TaxAuthority" value-field="taxAuth"/>
        <if-empty field="taxAuth">
            <add-error>
                <fail-property resource="PartyUiLabels" property="PartyTaxAuthPartyAndGeoNotAvailable"/>
            </add-error>
        </if-empty>

        <!-- done checking preliminary constraints, see if there are any errors -->
        <check-errors/>

        <make-value entity-name="PartyTaxAuthInfo" value-field="newEntity"/>
        <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"/>

        <create-value value-field="newEntity"/>
    </simple-method>
    <simple-method method-name="updatePartyTaxAuthInfo" short-description="update a PartyTaxAuthInfo">
        <call-simple-method method-name="validatePartyTaxIdInline"/>

        <!-- done checking preliminary constraints, see if there are any errors -->
        <check-errors/>

        <entity-one entity-name="PartyTaxAuthInfo" value-field="lookedUpValue"/>
        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
        <store-value value-field="lookedUpValue"/>
    </simple-method>
    <simple-method method-name="validatePartyTaxIdInline" short-description="validatePartyTaxIdInline">
        <!-- validate the partyTaxId based on TaxAuthority.taxIdFormatPattern if not empty -->
        <!-- If the party validated is in the UE, we could to a better job using the SOAP service from http://ec.europa.eu/taxation_customs/vies/faqvies.do#item16 -->
        <entity-one entity-name="TaxAuthority" value-field="taxAuthority"/>
        <if>
            <condition>
                <and>
                    <not><if-empty field="taxAuthority.taxIdFormatPattern"/></not>
                    <not><if-empty field="parameters.partyTaxId"/></not>
                    <not><if-regexp field="parameters.partyTaxId" expr="${taxAuthority.taxIdFormatPattern}"/></not>
                </and>
            </condition>
            <then>
                <add-error>
                    <fail-property resource="AccountingErrorUiLabels" property="AccountingTaxIdInvalidFormat"/>
                </add-error>
            </then>
        </if>
    </simple-method>

    <simple-method method-name="createCustomerTaxAuthInfo" short-description="Create a Customer PartyTaxAuthInfo">
        <script>groovy:
            taxAuthPartyGeoIds = parameters.get("taxAuthPartyGeoIds");
            parameters.put("taxAuthPartyId", taxAuthPartyGeoIds.substring(0, taxAuthPartyGeoIds.indexOf("::")));
            parameters.put("taxAuthGeoId", taxAuthPartyGeoIds.substring(taxAuthPartyGeoIds.indexOf("::") + 2));
        </script>
        <set-service-fields service-name="createPartyTaxAuthInfo" map="parameters" to-map="createPartyTaxAuthInfoMap"/>
        <call-service service-name="createPartyTaxAuthInfo" in-map-name="createPartyTaxAuthInfoMap" include-user-login="true"/>
    </simple-method>
</simple-methods>
