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

<forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://ofbiz.apache.org/Widget-Form" xsi:schemaLocation="http://ofbiz.apache.org/Widget-Form http://ofbiz.apache.org/dtds/widget-form.xsd">
    <form name="FindEmplLeaves" type="single" target="FindEmplLeaves"
        odd-row-style="header-row" default-table-style="basic-table">
        <auto-fields-entity entity-name="EmplLeave" default-field-type="find"/>
        <field name="partyId" title="${uiLabelMap.PartyPartyId}"><lookup target-form-name="LookupPartyName"/></field>
        <field name="leaveTypeId">
            <drop-down allow-empty="true">
                <entity-options key-field-name="leaveTypeId" entity-name="EmplLeaveType"/>
            </drop-down>
        </field>
        <field name="emplLeaveReasonTypeId">
            <drop-down allow-empty="true">
                <entity-options key-field-name="emplLeaveReasonTypeId" entity-name="EmplLeaveReasonType"/>
            </drop-down>
        </field>
        <field name="leaveStatus">
            <check all-checked="false">
                <entity-options key-field-name="statusId" entity-name="StatusItem">
                    <entity-constraint name="statusTypeId" operator="equals" value="LEAVE_STATUS"/>
                    <entity-order-by field-name="description"/>
                </entity-options>
            </check>
        </field>
        <field name="approverPartyId"><lookup target-form-name="LookupPartyName"/></field>
        <field name="description"><hidden/></field>
        <field name="noConditionFind"><hidden value="Y"/><!-- if this isn't there then with all fields empty no query will be done --></field>
        <field name="searchButton" title="${uiLabelMap.CommonFind}" widget-style="smallSubmit"><submit button-type="button"/></field>
    </form>
    <form name="ListEmplLeaves" list-name="listIt" type="list" odd-row-style="alternate-row" header-row-style="header-row-2"
        paginate-target="FindEmplLeaves" default-table-style="basic-table hover-bar">
        <actions>
            <set field="entityName" value="EmplLeave"/>
            <service service-name="performFind" result-map="result" result-map-list="listIt">
                <field-map field-name="inputFields" from-field="parameters"/>
                <field-map field-name="entityName" from-field="entityName"/>
                <field-map field-name="viewIndex" from-field="viewIndex"/>
                <field-map field-name="viewSize" from-field="viewSize"/>
            </service>
        </actions>
        <auto-fields-entity entity-name="EmplLeave" default-field-type="display"/>
        <field name="partyId">
            <display-entity entity-name="PartyNameView" description="${firstName} ${lastName}">
                <sub-hyperlink target="/partymgr/control/viewprofile" target-type="inter-app" description="${partyId}" link-style="buttontext">
                    <parameter param-name="partyId" from-field="partyId"/>
                </sub-hyperlink>
            </display-entity>
        </field>
        <field name="leaveTypeId"><display-entity entity-name="EmplLeaveType"/></field>
        <field name="emplLeaveReasonTypeId"><display-entity entity-name="EmplLeaveReasonType"/></field>
        <field name="approverPartyId">
            <display-entity entity-name="PartyNameView" description="${firstName} ${lastName}" key-field-name="partyId">
                <sub-hyperlink target="/partymgr/control/viewprofile" target-type="inter-app" description="${approverPartyId}" link-style="buttontext">
                    <parameter param-name="partyId" from-field="approverPartyId"/>
                </sub-hyperlink>
            </display-entity>
        </field>
        <field name="leaveStatus"><display-entity entity-name="StatusItem" key-field-name="statusId"/></field>
        <field name="updateLeave" title="${uiLabelMap.CommonUpdate}" widget-style="buttontext" use-when="hasAdminPermission">
            <hyperlink description="${uiLabelMap.CommonUpdate}" target="EditEmplLeave" also-hidden="false">
                <parameter param-name="partyId"/>
                <parameter param-name="leaveTypeId"/>
                <parameter param-name="fromDate"/>
            </hyperlink>
        </field>
        <field name="deleteLink" title="${uiLabelMap.CommonDelete}" widget-style="buttontext" use-when="hasAdminPermission">
            <hyperlink description="${uiLabelMap.CommonDelete}" target="deleteEmplLeave" also-hidden="false">
                <parameter param-name="partyId"/>
                <parameter param-name="leaveTypeId"/>
                <parameter param-name="fromDate"/>
            </hyperlink>
        </field>
        <field name="description"><hidden/></field>
    </form>
    <form name="EditEmplLeave" type="single" target="updateEmplLeaveExt" default-map-name="leaveApp"
        header-row-style="header-row" default-table-style="basic-table">
        <alt-target use-when="leaveApp==null" target="createEmplLeaveExt"/>
        <auto-fields-service service-name="updateEmplLeave" map-name="leaveApp"/>
        <field name="partyId" required-field="true"><lookup target-form-name="LookupPartyName"/></field>
        <field name="approverPartyId" required-field="true"><lookup target-form-name="LookupPartyName"/></field>
        <field name="leaveTypeId" required-field="true">
            <drop-down allow-empty="true">
                <entity-options key-field-name="leaveTypeId" entity-name="EmplLeaveType"/>
            </drop-down>
        </field>
        <field name="emplLeaveReasonTypeId">
            <drop-down allow-empty="true">
                <entity-options key-field-name="emplLeaveReasonTypeId" entity-name="EmplLeaveReasonType"/>
            </drop-down>
        </field>
        <field name="fromDate" required-field="true"><date-time type="date" default-value="${nowTimestamp}"/></field>
        <field name="thruDate" required-field="true"><date-time type="date"/></field>
        <field name="leaveStatus"><hidden value="LEAVE_CREATED"/></field>
        <field name="submitButton" use-when="leaveApp==null" title="${uiLabelMap.CommonCreate}" widget-style="smallSubmit"><submit button-type="button"/></field>
        <field name="submitButton" use-when="leaveApp!=null" title="${uiLabelMap.CommonUpdate}" widget-style="smallSubmit"><submit button-type="button"/></field>
    </form>
    <form name="FindLeaveApprovals" target="FindLeaveApprovals" type="single">
        <auto-fields-entity entity-name="EmplLeave" default-field-type="find"/>
        <field name="noConditionFind"><hidden value="Y"/><!-- if this isn't there then with all fields empty no query will be done --></field>
        <!--<field name="approverPartyId" use-when="!hasAdminPermission"><hidden value="${approverPartyId}"/></field>-->
        <field name="partyId"><lookup target-form-name="LookupPartyName"/></field>
        <field name="leaveStatus">
            <drop-down allow-empty="true">
                <entity-options key-field-name="statusId" entity-name="StatusItem">
                    <entity-constraint name="statusTypeId" operator="equals" value="LEAVE_STATUS"/>
                    <entity-order-by field-name="description"/>
                </entity-options>
            </drop-down>
        </field>
        <field name="description"><hidden/></field>
        <field name="approverPartyId"><lookup target-form-name="LookupPartyName"/></field>
        <field name="searchButton" title="${uiLabelMap.CommonFind}" widget-style="smallSubmit"><submit button-type="button"/></field>
    </form>
    <form name="ListLeaveApprovals" list-name="listIt" type="list" odd-row-style="alternate-row" header-row-style="header-row-2" default-table-style="basic-table hover-bar">
        <actions>
            <set field="entityName" value="EmplLeave"/>
            <service service-name="performFind" result-map="result" result-map-list="listIt">
                <field-map field-name="inputFields" from-field="parameters"/>
                <field-map field-name="entityName" from-field="entityName"/>
            </service>
        </actions>
        <auto-fields-entity entity-name="EmplLeave" default-field-type="display"/>
        <field name="partyId" field-name="partyId">
            <display-entity entity-name="PartyNameView" description="${firstName} ${lastName}">
                <sub-hyperlink target="/partymgr/control/viewprofile" target-type="inter-app" description="${partyId}" link-style="buttontext">
                    <parameter param-name="partyId" from-field="partyId"/>
                </sub-hyperlink>
            </display-entity>
        </field>
        <field name="leaveTypeId"><display-entity entity-name="EmplLeaveType"/></field>
        <field name="emplLeaveReasonTypeId"><display-entity entity-name="EmplLeaveReasonType"/></field>
        <field name="approverPartyId" field-name="approverPartyId">
            <display-entity entity-name="PartyNameView" description="${firstName} ${lastName}" key-field-name="partyId">
                <sub-hyperlink target="/partymgr/control/viewprofile" target-type="inter-app" description="${approverPartyId}" link-style="buttontext">
                    <parameter param-name="partyId" from-field="approverPartyId"/>
                </sub-hyperlink>
            </display-entity>
        </field>
        <field name="leaveStatus"><display-entity entity-name="StatusItem" key-field-name="statusId"/></field>
        <field name="UpdateStatus" title="${uiLabelMap.CommonUpdate}" widget-style="buttontext">
            <hyperlink description="${uiLabelMap.CommonUpdate}" target="EditEmplLeaveStatus" >
                <parameter param-name="partyId"/>
                <parameter param-name="fromDate"/>
                <parameter param-name="leaveTypeId"/>
            </hyperlink>
        </field>
    </form>
    <form name="EditEmplLeaveStatus" type="single" target="updateEmplLeaveStatus" default-map-name="leaveApp">
        <auto-fields-service service-name="updateEmplLeaveStatus" map-name="leaveApp"/>
        <field name="partyId"><display/></field>
        <field name="approverPartyId"><display/></field>
        <field name="leaveTypeId"><display/></field>
        <field name="emplLeaveReasonTypeId"><display/></field>
        <field name="fromDate"><display/></field>
        <field name="thruDate"><display/></field>
        <field name="description"><display/></field>
        <field name="leaveStatus" title="${uiLabelMap.HumanResLeaveStatus}">
            <drop-down allow-empty="false">
                <entity-options key-field-name="statusId" entity-name="StatusItem">
                    <entity-constraint name="statusTypeId" operator="equals" value="LEAVE_STATUS"/>
                    <entity-order-by field-name="description"/>
                </entity-options>
            </drop-down>
        </field>
        <field name="leaveStatus" use-when="leaveApp!=null&amp;&amp;leaveApp.getString(&quot;leaveStatus&quot;).equals(&quot;LEAVE_REJECTED&quot;)"><display></display></field>
        <field name="submitButton" title="${uiLabelMap.CommonUpdate}" widget-style="smallSubmit"><submit button-type="button"/></field>
    </form>
</forms>
