﻿<?xml version="1.0" encoding="utf-16"?>
<JiwaDocument xmlns:jiwa="http://www.jiwa.com.au/xml/schemas" Type="JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin">
  <RecID>673b8b28-f240-4338-a46a-de70e9bdf38d</RecID>
  <Name>Import Queue Manager - Modify Sales Order</Name>
  <Description>Demonstrates how to intercept the Import Q manager processing to modify sales order XML when being imported, but adding a "WEB:" prefix to the SOReference.</Description>
  <IsEnabled>true</IsEnabled>
  <IsIsolatedToOwnAppDomain>false</IsIsolatedToOwnAppDomain>
  <ExecutionOrder>0</ExecutionOrder>
  <Author>Jiwa Financials</Author>
  <Version>7.2.1.27.0</Version>
  <Code>using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using JiwaFinancials.Jiwa;

#region "BusinessLogicPlugin"
public class BusinessLogicPlugin : System.MarshalByRefObject, JiwaFinancials.Jiwa.JiwaApplication.IJiwaBusinessLogicPlugin
{
    public override object InitializeLifetimeService()
    {
        // returning null here will prevent the lease manager
        // from deleting the Object.
        return null;
    }

    public void Setup(JiwaFinancials.Jiwa.JiwaApplication.IJiwaBusinessLogic JiwaBusinessLogic, JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin Plugin)
    {				
		if (JiwaBusinessLogic is JiwaFinancials.Jiwa.JiwaImportQManager.ImportQueueItemCollection)
		{
			JiwaFinancials.Jiwa.JiwaImportQManager.ImportQueueItemCollection importQManager = (JiwaFinancials.Jiwa.JiwaImportQManager.ImportQueueItemCollection)JiwaBusinessLogic;
			importQManager.ProcessItemStart += ProcessItemStart;
		}
    }	

	private void ProcessItemStart(JiwaFinancials.Jiwa.JiwaImportQManager.ImportQueueItem item, System.EventArgs e)
	{		
		System.Xml.XmlNode jiwaDocumentNode = null;
		System.Xml.XmlDocument sourceXMLDoc = new System.Xml.XmlDocument();
		string XMLType = null;
		
		try
		{
			sourceXMLDoc.LoadXml(item.TransformedXML);
			jiwaDocumentNode = sourceXMLDoc.SelectSingleNode("JiwaDocument");			
		}
		catch
		{
			// there was a problem obtaining the document type node from the XML - swallow this and let the Import Q Manager deal with it
			return;
		}
		
		if (jiwaDocumentNode != null)
		{
			if (jiwaDocumentNode.Attributes.GetNamedItem("Type") != null)
			{
				if (jiwaDocumentNode.Attributes["Type"].Value == "JiwaFinancials.Jiwa.JiwaSales.SalesOrder.SalesOrder")
				{
					// this is a sales order XML document
					// Deserialise into the XML poco
					JiwaFinancials.Jiwa.JiwaSales.SalesOrder.XML.SalesOrder salesOrderPOCO;
					System.Xml.Serialization.XmlSerializer xmlSerialiser = new System.Xml.Serialization.XmlSerializer(typeof(JiwaFinancials.Jiwa.JiwaSales.SalesOrder.XML.SalesOrder));
					using (System.IO.StringReader stringReader = new System.IO.StringReader(item.TransformedXML))
					{
						salesOrderPOCO = (JiwaFinancials.Jiwa.JiwaSales.SalesOrder.XML.SalesOrder)xmlSerialiser.Deserialize(stringReader);
					}
					
					// modify the sales order POCO
					salesOrderPOCO.SOReference = "WEB:" + salesOrderPOCO.SOReference;
					
					// Now serialise it to string and update the QueueItem with the new XML
					using(System.IO.StringWriter stringWriter = new System.IO.StringWriter())
					{
						System.Xml.Serialization.XmlSerializerNamespaces xmlNamespaces = new System.Xml.Serialization.XmlSerializerNamespaces();
						// add our jiwa namespace
						xmlNamespaces.Add("jiwa", "http://www.jiwa.com.au/xml/schemas");
						xmlSerialiser.Serialize(stringWriter, salesOrderPOCO, xmlNamespaces);
						item.TransformedXML = stringWriter.ToString();
					}
					
				}
			}
		}
	}
}
#endregion


</Code>
  <ExceptionPolicy>Abort</ExceptionPolicy>
  <Language>CSharp</Language>
  <BusinessLogicCollection>
    <BusinessLogic>
      <RecID>5dc9cc01-a7e7-4f2f-874d-2d9989fb2394</RecID>
      <Description>Import Queue Manager</Description>
      <ClassName>JiwaFinancials.Jiwa.JiwaImportQManager.ImportQueueItemCollection</ClassName>
      <Assembly>JiwaImportQManager, Version=7.2.1.27, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</Assembly>
    </BusinessLogic>
  </BusinessLogicCollection>
  <ReferenceCollection>
    <Reference>
      <RecID>a6a00bbd-a13d-469a-a183-412c0a8a19a4</RecID>
      <AssemblyFullName>JiwaApplication, Version=7.2.1.27, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaApplication.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\MikesV7JiwaBranch\Built Files\JiwaApplication.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>4d633d4a-51b2-4286-803c-72f721ce11ef</RecID>
      <AssemblyFullName>mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>mscorlib.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>cfc8b3aa-3ce4-4b71-9812-4395847cdea6</RecID>
      <AssemblyFullName>System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>376bd845-2bbf-4b16-9c1b-c8b6acf12e5c</RecID>
      <AssemblyFullName>System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Core.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>6d834ee3-893a-4782-8210-8c95da510256</RecID>
      <AssemblyFullName>JiwaImportQManager, Version=7.2.1.27, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaImportQManager.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\MikesV7JiwaBranch\Built Files\JiwaImportQManager.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>cf8d2f46-d05d-4303-9428-0ba3b377c934</RecID>
      <AssemblyFullName>JiwaSales, Version=7.2.1.27, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaSales.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\MikesV7JiwaBranch\Built Files\JiwaSales.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>d0e5bd01-3822-4f46-a92c-b3e33cfbf4df</RecID>
      <AssemblyFullName>System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Xml.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll</AssemblyLocation>
    </Reference>
  </ReferenceCollection>
</JiwaDocument>