<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://idempiere.org/ADInterface/1_0"
  xmlns:tns="http://idempiere.org/ADInterface/1_0"
  elementFormDefault="qualified">

   <xsd:element name="WindowTabData" type="tns:WindowTabData"/>

   <xsd:complexType name="WindowTabData">
   	<xsd:sequence>
   		<xsd:element name="DataSet" type="tns:DataSet" minOccurs="0" maxOccurs="1"/>
   		<xsd:element name="RowCount" type="xsd:int" minOccurs="0" maxOccurs="1"/>   		
   		<xsd:element name="Success" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
   		<xsd:element name="Error" type="xsd:string" minOccurs="0" maxOccurs="1"/>
   		<xsd:element name="ErrorInfo" type="xsd:string" minOccurs="0" maxOccurs="1"/>
   		<xsd:element name="Status" type="xsd:string" minOccurs="0" maxOccurs="1"/>
   		<xsd:element name="StatusError" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
   	</xsd:sequence>
   	<xsd:attribute name="NumRows" type="xsd:int" />
   	<xsd:attribute name="TotalRows" type="xsd:int" />   	
   	<xsd:attribute name="StartRow" type="xsd:int" />    	
   </xsd:complexType>

   <xsd:complexType name="DataSet">
   	<xsd:sequence>
   		<xsd:element name="DataRow" type="tns:DataRow" minOccurs="0" maxOccurs="unbounded"/>
   	</xsd:sequence>
   </xsd:complexType>


   <xsd:complexType name="DataRow">
   	<xsd:sequence>
   		<xsd:element name="field" type="tns:DataField" minOccurs="0" maxOccurs="unbounded"/>
   	</xsd:sequence>
   </xsd:complexType>

   <xsd:complexType name="DataField">
   	<xsd:sequence>
 	  		<xsd:element name="val" type="xsd:string" />
 	  		<xsd:element name="lookup" type="tns:LookupValues" minOccurs="0" maxOccurs="1"/>
   	</xsd:sequence>
   	<xsd:attribute name="type" type="xsd:string" use="optional"/>
   	<xsd:attribute name="column" type="xsd:string" />   	
   	<xsd:attribute name="lval" type="xsd:string" use="optional"/>
   	<xsd:attribute name="disp" type="xsd:boolean" use="optional"/>
   	<xsd:attribute name="edit" type="xsd:boolean" use="optional"/>
   	<xsd:attribute name="error" type="xsd:boolean" use="optional"/>
   	<xsd:attribute name="errorVal" type="xsd:string" use="optional"/>
   </xsd:complexType>

   <xsd:complexType name="LookupValues">
   	<xsd:sequence>
   		<xsd:element name="lv" type="tns:LookupValue" minOccurs="0" maxOccurs="unbounded"/>
   	</xsd:sequence>
   </xsd:complexType>

   <xsd:complexType name="LookupValue">
   	<xsd:sequence>
   	</xsd:sequence>
   	<xsd:attribute name="val" type="xsd:string"/>
   	<xsd:attribute name="key" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="GetProcessParams" type="tns:GetProcessParams"/>
   <xsd:element name="ProcessParams" type="tns:ProcessParams"/>
   <xsd:element name="RunProcess" type="tns:RunProcess"/>
   <xsd:element name="RunProcessResponse" type="tns:RunProcessResponse"/>

   <xsd:complexType name="ProcessParams">
   	<xsd:sequence>
   	  <xsd:element name="Params" type="tns:ProcessParamList" />
	  <xsd:element name="Description" type="xsd:string"/>   	
	  <xsd:element name="Name" type="xsd:string"/>   	
	  <xsd:element name="Help" type="xsd:string"/>   	  	
   	</xsd:sequence>
   	<xsd:attribute name="AD_Process_ID" type="xsd:int"/>
   </xsd:complexType>

   <xsd:complexType name="GetProcessParams">
   	<xsd:sequence>
   	</xsd:sequence>
   	<xsd:attribute name="AD_Process_ID" type="xsd:int"/>
   	<xsd:attribute name="AD_Menu_ID" type="xsd:int"/>
   	<xsd:attribute name="AD_Record_ID" type="xsd:int"/> 	
   </xsd:complexType>

   <xsd:complexType name="RunProcess">
   <xsd:sequence>
   	<xsd:element name="ParamValues" type="tns:DataRow"/>
   </xsd:sequence>
   	<xsd:attribute name="AD_Process_ID" type="xsd:int"/>
   	<xsd:attribute name="AD_Menu_ID" type="xsd:int"/>
   	<xsd:attribute name="AD_Record_ID" type="xsd:int"/> 	
   	<xsd:attribute name="DocAction" type="xsd:string"/>
   </xsd:complexType>

   <xsd:complexType name="RunProcessResponse">
   <xsd:sequence>
   	<xsd:element name="Error" type="xsd:string"/>   	
   	<xsd:element name="Summary" type="xsd:string"/>
   	<xsd:element name="LogInfo" type="xsd:string"/>
   	<xsd:element name="Data" type="xsd:hexBinary"/>
   </xsd:sequence>
   <xsd:attribute name="IsError" type="xsd:boolean"/>
   <xsd:attribute name="IsReport" type="xsd:boolean"/>
   <xsd:attribute name="ReportFormat" type="xsd:string"/>
   </xsd:complexType>


   <xsd:complexType name="ProcessParamList">
   	<xsd:sequence>
   		<xsd:element name="Param" type="tns:ProcessParam" minOccurs="0" maxOccurs="unbounded"/>
   	</xsd:sequence>
   </xsd:complexType>

   <xsd:complexType name="ProcessParam">
   	<xsd:sequence>
   		<xsd:element name="Description" type="xsd:string"/>
	   	<xsd:element name="Help" type="xsd:string"/>   	
 		<xsd:element name="lookup" type="tns:LookupValues" minOccurs="0" maxOccurs="1"/>
   	</xsd:sequence>
   	<xsd:attribute name="Name" type="xsd:string"/>
   	<xsd:attribute name="DefaultValue" type="xsd:string"/>	
   	<xsd:attribute name="DefaultValue2" type="xsd:string"/>	
   	<xsd:attribute name="IsMandatory" type="xsd:boolean"/>
   	<xsd:attribute name="IsRange" type="xsd:boolean"/>   	
   	<xsd:attribute name="FieldLength" type="xsd:int"/>
   	<xsd:attribute name="DisplayType" type="xsd:int"/>   	   	
	<xsd:attribute name="ColumnName" type="xsd:string"/>    	
   </xsd:complexType>


<xsd:element name="ADLoginRequest" type="tns:ADLoginRequest"/>
<xsd:element name="ADLoginResponse" type="tns:ADLoginResponse"/>

<xsd:complexType name="ADLoginRequest">
<xsd:sequence>
  <xsd:element name="user" type="xsd:string"/>
  <xsd:element name="pass" type="xsd:string"/>
  <xsd:element name="lang" type="xsd:string"/>
  <xsd:element name="ClientID" type="xsd:int"/>
  <xsd:element name="RoleID" type="xsd:int"/>
  <xsd:element name="OrgID" type="xsd:int"/>
  <xsd:element name="WarehouseID" type="xsd:int"/>
  <xsd:element name="stage" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="ADLoginResponse">
<xsd:sequence>
  <xsd:element name="status" type="xsd:int"/>
  <xsd:element name="roles" type="tns:LookupValues"/>
  <xsd:element name="langs" type="tns:LookupValues"/>
  <xsd:element name="orgs" type="tns:LookupValues"/>
  <xsd:element name="clients" type="tns:LookupValues"/>
  <xsd:element name="warehouses" type="tns:LookupValues"/>
</xsd:sequence>
</xsd:complexType>

	<xsd:complexType name="StandardResponse">
		<xsd:sequence>
			<xsd:element name="Error" type="xsd:string" minOccurs="0" />
			<xsd:element name="outputFields" type="tns:outputFields" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="RunProcessResponse" type="tns:RunProcessResponse"  minOccurs="0"/>
			<xsd:element name="WindowTabData" type="tns:WindowTabData"   minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="IsError" type="xsd:boolean" />
		<xsd:attribute name="IsRolledBack" type="xsd:boolean" />
		<xsd:attribute name="RecordID" type="xsd:int" />
	</xsd:complexType>

	<xsd:complexType name="outputFields">
		<xsd:sequence>
			<xsd:element name="outputField" type="tns:outputField" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="outputField">
		<xsd:attribute name="column" type="xsd:string" />
		<xsd:attribute name="value" type="xsd:string" />
		<xsd:attribute name="Text" type="xsd:string" />
	</xsd:complexType>


<xsd:element name="StandardResponse" type="tns:StandardResponse"/>

<!-- Elements added for model web services -->

   <xsd:element name="ModelSetDocActionRequest" type="tns:ModelSetDocActionRequest"/>

   <xsd:complexType name="ModelSetDocAction">
   <xsd:sequence>
     <xsd:element name="serviceType" type="xsd:string"/>
     <xsd:element name="tableName" type="xsd:string"/>
     <xsd:element name="recordID" type="xsd:int"/>
     <xsd:element name="recordIDVariable" type="xsd:string" minOccurs="0"/>
     <xsd:element name="docAction" type="xsd:string"/>
   </xsd:sequence>
   </xsd:complexType>

   <xsd:complexType name="ModelSetDocActionRequest">
   <xsd:sequence>
     <xsd:element name="ModelSetDocAction" type="tns:ModelSetDocAction" minOccurs="1" maxOccurs="1"/>
     <xsd:element name="ADLoginRequest" type="tns:ADLoginRequest" minOccurs="1" maxOccurs="1"/>
   </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="ModelRunProcess" type="tns:ModelRunProcess"/>

   <xsd:complexType name="ModelRunProcess">
    <xsd:sequence>
      <xsd:element name="serviceType" type="xsd:string"/>
   	  <xsd:element name="ParamValues" type="tns:DataRow"/>
    </xsd:sequence>
   	<xsd:attribute name="AD_Process_ID" type="xsd:int"/>
   	<xsd:attribute name="AD_Menu_ID" type="xsd:int"/>
   	<xsd:attribute name="AD_Record_ID" type="xsd:int"/> 	
   	<xsd:attribute name="DocAction" type="xsd:string"/>
   </xsd:complexType>

   <xsd:element name="ModelRunProcessRequest" type="tns:ModelRunProcessRequest"/>

   <xsd:complexType name="ModelRunProcessRequest">
   <xsd:sequence>
     <xsd:element name="ModelRunProcess" type="tns:ModelRunProcess" minOccurs="1" maxOccurs="1"/>
     <xsd:element name="ADLoginRequest" type="tns:ADLoginRequest" minOccurs="1" maxOccurs="1"/>
   </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="ModelGetListRequest" type="tns:ModelGetListRequest"/>

   <xsd:complexType name="ModelGetList">
   <xsd:sequence>
     <xsd:element name="serviceType" type="xsd:string"/>
     <xsd:element name="AD_Reference_ID" type="xsd:int"/>
     <xsd:element name="Filter" type="xsd:string"/>
   </xsd:sequence>
   </xsd:complexType>

   <xsd:complexType name="ModelGetListRequest">
   <xsd:sequence>
     <xsd:element name="ModelGetList" type="tns:ModelGetList" minOccurs="1" maxOccurs="1"/>
     <xsd:element name="ADLoginRequest" type="tns:ADLoginRequest" minOccurs="1" maxOccurs="1"/>
   </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="ModelCRUDRequest" type="tns:ModelCRUDRequest"/>

   <xsd:complexType name="ModelCRUD">
   <xsd:sequence>
     <xsd:element name="serviceType" type="xsd:string"/>
     <xsd:element name="TableName" type="xsd:string"/>
     <xsd:element name="RecordID" type="xsd:int"/>
     <xsd:element name="recordIDVariable" type="xsd:string" minOccurs="0"/>
     <xsd:element name="Filter" type="xsd:string"  minOccurs="0" maxOccurs="1"/>
     <xsd:element name="Action">
     	<xsd:simpleType>
     		<xsd:restriction base="xsd:string">
     			<xsd:enumeration value="Create"></xsd:enumeration>
     			<xsd:enumeration value="Read"></xsd:enumeration>
     			<xsd:enumeration value="Update"></xsd:enumeration>
     			<xsd:enumeration value="Delete"></xsd:enumeration>
     			<xsd:enumeration value="CreateUpdate"></xsd:enumeration>
     		</xsd:restriction>
     	</xsd:simpleType>
     </xsd:element>
     <xsd:element name="DataRow" type="tns:DataRow" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
   </xsd:complexType>

   <xsd:complexType name="ModelCRUDRequest">
   <xsd:sequence>
     <xsd:element name="ModelCRUD" type="tns:ModelCRUD" minOccurs="1" maxOccurs="1"/>
     <xsd:element name="ADLoginRequest" type="tns:ADLoginRequest" minOccurs="1" maxOccurs="1"/>
   </xsd:sequence>
 </xsd:complexType>


	<xsd:complexType name="operations">
		<xsd:sequence>
			<xsd:element name="operation" type="tns:operation" minOccurs="1" maxOccurs="unbounded"></xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="operation">
		<xsd:sequence>
			<xsd:element name="TargetPort">
		     	<xsd:simpleType>
		     		<xsd:restriction base="xsd:string">
		     			<xsd:enumeration value="createData"></xsd:enumeration>
		     			<xsd:enumeration value="readData"></xsd:enumeration>
		     			<xsd:enumeration value="updateData"></xsd:enumeration>
		     			<xsd:enumeration value="deleteData"></xsd:enumeration>
		     			<xsd:enumeration value="runProcess"></xsd:enumeration>
		     			<xsd:enumeration value="setDocAction"></xsd:enumeration>
		     			<xsd:enumeration value="createUpdateData"></xsd:enumeration>
		     		</xsd:restriction>
		     	</xsd:simpleType>
		     </xsd:element>
			<xsd:element name="ModelCRUD" type="tns:ModelCRUD" minOccurs="0"></xsd:element>
			<xsd:element name="ModelSetDocAction" type="tns:ModelSetDocAction" minOccurs="0"></xsd:element>
			<xsd:element name="ModelRunProcess" type="tns:ModelRunProcess" minOccurs="0"></xsd:element>
		</xsd:sequence>
		<xsd:attribute name="preCommit" type="xsd:boolean" default="false"></xsd:attribute>
		<xsd:attribute name="postCommit" type="xsd:boolean" default="false"></xsd:attribute>
	</xsd:complexType>
	<xsd:element name="CompositeRequest" type="tns:CompositeRequest"></xsd:element>
	<xsd:complexType name="CompositeRequest">
		<xsd:sequence>
			<xsd:element name="ADLoginRequest" type="tns:ADLoginRequest"></xsd:element>
		     <xsd:element name="serviceType" type="xsd:string"/>
			<xsd:element name="operations" type="tns:operations" maxOccurs="unbounded"></xsd:element>
		</xsd:sequence>
	</xsd:complexType>


<xsd:element name="CompositeResponses" type="tns:CompositeResponses"></xsd:element>

<xsd:complexType name="CompositeResponses">
	<xsd:sequence>
		<xsd:element name="CompositeResponse" type="tns:CompositeResponse" minOccurs="0" maxOccurs="unbounded"></xsd:element>
	</xsd:sequence>
</xsd:complexType>


<xsd:complexType name="CompositeResponse">
	<xsd:sequence>
		<xsd:element name="StandardResponse" type="tns:StandardResponse" minOccurs="1" maxOccurs="unbounded"></xsd:element>
	</xsd:sequence>
</xsd:complexType>



</xsd:schema>