<?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.
-->
<section 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: Edit Production Run</title>
    <para>
    This screen displays the details of a Production Run. Through this screen you can:
    </para>
    <itemizedlist>
        <listitem><para>Edit the basic details of the Production Run</para></listitem>
        <listitem><para>Create tasks that will be performed as part of the Production Run by clicking 'Tasks'</para></listitem>
        <listitem><para>Add materials that the Production Run will use to make the manufactured product by clicking 'Materials'</para></listitem>
        <listitem><para>Associate equipment that will be used as part of Production by clicking 'Equipment'</para></listitem>
        <listitem><para>View any associated (or dependent) Production Runs by clicking 'Assocs'</para></listitem>
        <listitem><para>View any associated content by clicking 'Content'</para></listitem>
        <listitem><para>View the actual cost of the Production Run by click 'Actual Costs'</para></listitem>
    </itemizedlist>
    <section>
    <title>Basic Production Run Details</title>
    <para>
    This section displays the basic details of the Production Run. This includes information about the 
    Facility where the Production Run will take place, the quantity of product to be produced and the proposed start and 
    completion date.</para>
    <para>The majority of these fields are editable, the exception being the "Calculated completion date".
    </para>
    <para>This section also allows you to change the Production Run status as follows:</para>
    <itemizedlist>
        <listitem><para>"Cancel" - To cancel the Production Run.</para></listitem>
        <listitem><para>"Quick Close" - To close the Production Run</para></listitem>
        <listitem><para>"Quick complete" - To mark the Production Run as 'complete'</para></listitem>
        <listitem><para>"Confirm" - To confirm the Production Run</para></listitem>
        <listitem><para>"Schedule" -To schedule the Production Run in the calendar</para></listitem>
        <listitem><para>"Print" - To create a pdf file of the Production Run</para></listitem>
    </itemizedlist>
    </section>
    <section>
    <title>Order Items</title>
    <para>
        This section displays an overview of associated order items if the Production Run will be used 
        to fulfill an order.
    </para>
    </section>
    <section>
    <title>Tasks</title>
    <para>
        This section displays an overview of associated tasks that will be performed as part of the Production Run.
        These are also called "Routing Tasks"
    </para>
    </section>
    <section>
    <title>Materials</title>
    <para>
        This section displays an overview of the required materials that will be used during the Production Run. This
        information is taken from the Bill of Materials.
    </para>
    </section>
    <section>
    <title>Equipment/Production Run Fixed Assets</title>
    <para>
        This section displays the required equipment or machinery to be used in the Production Pun.
    </para>
    </section>
    <section>
    <title>Notes</title>
    <para>
        This section displays an overview of any associated Production Run notes.
    </para>
    </section>
</section>