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

<menus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-menu.xsd">
    
    <menu name="FixedAssetTabBar" default-menu-item-name="EditFixedAsset" type="simple">
        <menu-item name="EditFixedAsset" title="${uiLabelMap.AccountingFixedAsset}">
            <link target="EditFixedAsset?fixedAssetId=${fixedAssetId}"/>
        </menu-item>
        <menu-item name="FixedAssetChildren" title="${uiLabelMap.AccountingFixedAssetChildren}">
            <link target="FixedAssetChildren?fixedAssetId=${fixedAssetId}&amp;trail=${fixedAssetId}"/>
        </menu-item>
        <menu-item name="ListFixedAssetCalendar" title="${uiLabelMap.AccountingFixedAssetCalendar}">
            <link target="ListFixedAssetCalendar?fixedAssetId=${fixedAssetId}"/>
        </menu-item>
        <menu-item name="EditFixedAssetStdCosts" title="${uiLabelMap.AccountingFixedAssetStdCosts}">
            <link target="EditFixedAssetStdCosts?fixedAssetId=${fixedAssetId}"/>
        </menu-item>
        <menu-item name="EditFixedAssetIdents" title="${uiLabelMap.AccountingFixedAssetIdents}">
            <link target="EditFixedAssetIdents?fixedAssetId=${fixedAssetId}"/>
        </menu-item>
        <menu-item name="EditFixedAssetRegistrations" title="${uiLabelMap.AccountingFixedAssetRegistrations}">
            <link target="EditFixedAssetRegistrations?fixedAssetId=${fixedAssetId}"/>
        </menu-item>
        <menu-item name="ListFixedAssetMaints" title="${uiLabelMap.AccountingFixedAssetMaints}">
            <link target="ListFixedAssetMaints?fixedAssetId=${fixedAssetId}"/>
        </menu-item>
    </menu>

    <menu name="FixedAssetMaintTabBar" selected-menuitem-context-field-name="tabButtonItemFixedAssetMaint" default-menu-item-name="EditFixedAssetMaint"> 
        <menu-item name="EditFixedAssetMaint" title="${uiLabelMap.AccountingFixedAssetMaint}">
            <link target="EditFixedAssetMaint?fixedAssetId=${fixedAssetMaint.fixedAssetId}&amp;maintHistSeqId=${fixedAssetMaint.maintHistSeqId}"/>
        </menu-item>
        <menu-item name="EditFixedAssetMeter" title="${uiLabelMap.AccountingFixedAssetMaintMeters}">
            <link target="EditFixedAssetMaintMeters?fixedAssetId=${fixedAssetMaint.fixedAssetId}&amp;maintHistSeqId=${fixedAssetMaint.maintHistSeqId}"/>
        </menu-item>
        <menu-item name="EditWorkEfforts" title="${uiLabelMap.WorkEffortAllTasks}">
            <link target="EditWorkEfforts?fixedAssetId=${fixedAssetMaint.fixedAssetId}&amp;maintHistSeqId=${fixedAssetMaint.maintHistSeqId}&amp;workEffortId=${fixedAssetMaint.scheduleWorkEffortId}"/>
        </menu-item>
        <menu-item name="EditWorkEffortTimeEntries" title="${uiLabelMap.TimesheetTimeEntries}">
            <link target="EditWorkEffortTimeEntries?fixedAssetId=${fixedAssetMaint.fixedAssetId}&amp;maintHistSeqId=${fixedAssetMaint.maintHistSeqId}&amp;workEffortId=${fixedAssetMaint.scheduleWorkEffortId}"/>
        </menu-item>
        <menu-item name="EditWorkEffortNotes" title="${uiLabelMap.WorkEffortNotes}">
            <link target="EditWorkEffortNotes?fixedAssetId=${fixedAssetMaint.fixedAssetId}&amp;maintHistSeqId=${fixedAssetMaint.maintHistSeqId}&amp;workEffortId=${fixedAssetMaint.scheduleWorkEffortId}"/>
        </menu-item>
        <menu-item name="EditItemIssuances" title="${uiLabelMap.FixedAssetMaintItemIssuance}">
            <link target="EditItemIssuances?fixedAssetId=${fixedAssetMaint.fixedAssetId}&amp;maintHistSeqId=${fixedAssetMaint.maintHistSeqId}"/>
        </menu-item>
        <menu-item name="EditFixedAssetMaintOrders" title="${uiLabelMap.AccountingFixedAssetMaintOrders}">
            <link target="EditFixedAssetMaintOrders?fixedAssetId=${fixedAssetMaint.fixedAssetId}&amp;maintHistSeqId=${fixedAssetMaint.maintHistSeqId}"/>
        </menu-item>
    </menu>  
    
    <menu name="FacilityTabBar" default-menu-item-name="ViewFacilityInventoryByProduct"> 
        <menu-item name="EditFacility" title="${uiLabelMap.ProductFacility}">
            <link target="EditFacility?facilityId=${facilityId}"/>
        </menu-item>
        <menu-item name="ViewContactMechs" title="${uiLabelMap.PartyContactMechs}">
            <link target="ViewContactMechs?facilityId=${facilityId}"/>
        </menu-item>
        <menu-item name="FindFacilityLocation" title="${uiLabelMap.ProductLocations}">
            <link target="FindFacilityLocation?facilityId=${facilityId}"/>
        </menu-item>
        <menu-item name="ViewFacilityInventoryByProduct" title="${uiLabelMap.ProductInventory}">
            <link target="ViewFacilityInventoryByProduct?facilityId=${facilityId}"/>
        </menu-item>
        <menu-item name="ReceiveInventory" title="${uiLabelMap.ProductInventoryReceive}">
            <link target="ReceiveInventory?facilityId=${facilityId}"/>
        </menu-item>
        <menu-item name="FindFacilityTransfers" title="${uiLabelMap.ProductInventoryXfers}">
            <link target="FindFacilityTransfers?facilityId=${facilityId}"/>
        </menu-item>
    </menu>  
    
</menus>
    
    
