<?xml version="1.0"?>
<!--

    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.
-->
<chapter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="5.0" xmlns:xl="http://www.w3.org/1999/xlink" 
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xsi:schemaLocation="http://docbook.org/ns/docbook ../../content/dtd/docbook.xsd"
    xmlns="http://docbook.org/ns/docbook">
    <title>Manufacturing</title>
    <xi:include href="../data/helpdata/Help_MFG.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_BomSimulation.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_CreateProductionRun.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditCalendar.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditCalendarExceptionDay.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditCalendarExceptionWeek.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditCalendarWeek.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditCostCalcs.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditProductBom.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditProductManufacturingRules.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditProductionRun.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditRouting.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditRoutingProductLink.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditRoutingTask.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditRoutingTaskAssoc.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditRoutingTaskCost.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditRoutingTaskFixedAsset.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_EditRoutingTaskProduct.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_FindBom.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_FindCalendar.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_FindInventoryEventPlan.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_FindProductionRun.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_FindRouting.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_FindRoutingTask.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_ListCalendarWeek.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_ListRoutingTaskProducts.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_ManufacturingReports.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_ProductionRunAssocs.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_ProductionRunComponents.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_ProductionRunContent.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_ProductionRunCosts.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_ProductionRunFixedAssets.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_ProductionRunTasks.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_RunMRP.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_ShowProductionRun.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_WorkWithShipmentPlans.xml"/>
    <xi:include href="../data/helpdata/Help_MFG_main.xml"/>
</chapter>