<?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.
-->
<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/services.xsd">
    <description>Manufacturing Services - Calendar</description>
    <vendor>OFBiz</vendor>
    <version>1.0</version>

    <!-- Routing services -->
    <service name="createCalendar" engine="simple" default-entity-name="TechDataCalendar"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="createCalendar">
        <description>Create a calendar</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="updateCalendar" engine="simple" default-entity-name="TechDataCalendar"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="updateCalendar">
        <description>Update a calendar</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="removeCalendar" engine="simple" default-entity-name="TechDataCalendar"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="removeCalendar">
        <description>Remove a calendar</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
    </service>

    <service name="createCalendarWeek" engine="simple" default-entity-name="TechDataCalendarWeek"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="createCalendarWeek">
        <description>Create a Calendar Week</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="updateCalendarWeek" engine="simple" default-entity-name="TechDataCalendarWeek"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="updateCalendarWeek">
        <description>Update a Calendar Week</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="removeCalendarWeek" engine="simple" default-entity-name="TechDataCalendarWeek"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="removeCalendarWeek">
        <description>Remove a Calendar Week</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
    </service>

    <service name="createCalendarExceptionDay" engine="simple" default-entity-name="TechDataCalendarExcDay"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="createCalendarExceptionDay">
        <description>Create a calendar ExceptionDay</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="updateCalendarExceptionDay" engine="simple" default-entity-name="TechDataCalendarExcDay"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="updateCalendarExceptionDay">
        <description>Update a calendar ExceptionDay</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="removeCalendarExceptionDay" engine="simple" default-entity-name="TechDataCalendarExcDay"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="removeCalendarExceptionDay">
        <description>Update a calendar ExceptionDay</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
    </service>
    <service name="createCalendarExceptionWeek" engine="simple" default-entity-name="TechDataCalendarExcWeek"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="createCalendarExceptionWeek">
        <description>Create a Calendar Exception Week</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="updateCalendarExceptionWeek" engine="simple" default-entity-name="TechDataCalendarExcWeek"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="updateCalendarExceptionWeek">
        <description>Update a Calendar Exception Week</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="removeCalendarExceptionWeek" engine="simple" default-entity-name="TechDataCalendarExcWeek"
            location="component://manufacturing/minilang/techdata/RoutingSimpleServices.xml" invoke="removeCalendarExceptionWeek">
        <description>Remove a Calendar Exception Week</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
    </service>
</services>
