<?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.
-->

<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://ofbiz.apache.org/Widget-Screen" xsi:schemaLocation="http://ofbiz.apache.org/Widget-Screen http://ofbiz.apache.org/dtds/widget-screen.xsd">
    
    <!-- First Customer -->
    <screen name="FirstCustomer">
        <section>
            <actions>
                <set field="titleProperty" value="PartyCreateNewCustomer"/>
                <set field="tabButtonItemTop" value="firstcustomer"/>
                <set field="target" value="createCustomer"/>
                <set field="partyId" value="CUST"/>
                <entity-condition entity-name="PartyRole" list="parties">
                    <condition-expr field-name="roleTypeId" operator="equals" value="CUSTOMER"/>
                </entity-condition>
                <set field="partyId" from-field="parties[0].partyId"/>
                <set field="customerPartyId" from-field="customerRel.partyIdFrom"/>
                <set field="previousParams" from-field="_PREVIOUS_PARAMS_" from-scope="user"/>
                <property-to-field field="defaultCountryGeoId" resource="general" property="country.geo.id.default" default="USA"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonSetupDecorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <section>
                            <condition>
                                <if-has-permission permission="PARTYMGR" action="_CREATE"/>
                            </condition>
                            <widgets>
                                <section>
                                    <condition>
                                        <if-empty field="parties"/>
                                    </condition>
                                    <actions>
                                        <!-- fields for SetDependentDropdownValuesJs.ftl -->
                                        <set field="dependentForm" value="NewCustomer"/>
                                        <set field="paramKey" value="countryGeoId"/>                                        
                                        <set field="mainId" value="USER_COUNTRY"/>
                                        <set field="dependentId" value="USER_STATE"/>
                                        <set field="requestName" value="getAssociatedStateList"/>
                                        <set field="responseName" value="stateList"/>
                                        <set field="dependentKeyName" value="geoId"/>
                                        <set field="descName" value="geoName"/>
                                        <set field="selectedDependentOption" value="_none_"/>
                                    </actions>
                                    <widgets>
                                        <platform-specific><html><html-template location="component://common/template/includes/SetDependentDropdownValuesJs.ftl"/></html></platform-specific>
                                        <screenlet title="${uiLabelMap.PartyCreateNewCustomer}">
                                            <include-form name="NewCustomer" location="component://commonext/widget/ofbizsetup/SetupForms.xml"/>
                                        </screenlet>
                                    </widgets>
                                    <fail-widgets>
                                        <include-screen name="viewprofile"/>
                                    </fail-widgets>
                                </section>
                            </widgets>
                            <fail-widgets>
                                <label style="h3">${uiLabelMap.PartyMgrCreatePermissionError}</label>
                            </fail-widgets>
                        </section>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
    
    <screen name="viewprofile">
        <section>
          <actions>
            <set field="parameters.partyId" from-field="partyId"/>
          </actions>
            <widgets>
                <include-screen name="Party" location="applications/party/widget/partymgr/ProfileScreens.xml"/>
                <include-screen name="Contact" location="applications/party/widget/partymgr/ProfileScreens.xml"/>
            </widgets>
        </section>
    </screen>
</screens>
    
