﻿<?xml version="1.0" encoding="utf-16"?>
<JiwaDocument xmlns:jiwa="http://www.jiwa.com.au/xml/schemas" Type="JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin">
  <RecID>8dbb1037-516b-4b2a-a246-4020a59f2289</RecID>
  <Name>Sales Order Set ScanOrders</Name>
  <Description>Sets the ScanOrders custom history field for all orders dated on or after Feb 27, 2022 and which has the ScanOrders custom field value currently not set to 'True'&amp;#13;&amp;#10;&amp;#13;&amp;#10;Runs as a scheduled script.</Description>
  <IsEnabled>true</IsEnabled>
  <IsIsolatedToOwnAppDomain>false</IsIsolatedToOwnAppDomain>
  <ExecutionOrder>0</ExecutionOrder>
  <Author />
  <Version>7.2.1.0</Version>
  <Code>using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Data.SqlClient;

#region "ScheduledExecutionPlugin"
public class ScheduledExecutionPlugin : System.MarshalByRefObject, JiwaFinancials.Jiwa.JiwaApplication.IJiwaScheduledExecutionPlugin
{
    public void Execute(JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin Plugin, JiwaFinancials.Jiwa.JiwaApplication.Schedule.Schedule Schedule)
    {
        lock (JiwaFinancials.Jiwa.JiwaApplication.Manager.CriticalSectionFlag)
        {
            // place processing code in here
			//Find candidate sales orders
			Plugin.Manager.LogEvent(String.Format("Executing schedule '{0}'", Schedule.Name), System.Diagnostics.EventLogEntryType.Information, 0, 0, true);   

			SqlDataReader SQLReader = null;
			SqlParameter SQLParam;
			
			List&lt;string&gt; InvoiceIds = new List&lt;string&gt;();
			
			try 
			{				
				string SQL = @"SELECT  SO_Main.InvoiceID, SO_Main.InvoiceInitDate, SO_HistoryCustomSettingValues.Contents,
								SO_HistoryCustomSettingValues.SettingValueID, SO_HistoryCustomSettingValues.SettingID
								FROM SO_Main 
								INNER JOIN SO_History ON SO_Main.InvoiceID = SO_History.InvoiceID AND SO_Main.CurrentHistoryNo = SO_History.HistoryNo
								LEFT OUTER JOIN SO_HistoryCustomSettingValues ON SO_History.InvoiceHistoryID = SO_HistoryCustomSettingValues.HistoryID
								LEFT JOIN SO_HistoryCustomSetting ON SO_HistoryCustomSetting.SettingID = SO_HistoryCustomSettingValues.SettingID AND SO_HistoryCustomSetting.SettingName = 'ScanOrders'
								WHERE SO_Main.DebtorID = @DebtorID
								AND (SO_HistoryCustomSettingValues.Contents &lt;&gt; 'True' OR SO_HistoryCustomSettingValues.Contents IS NULL) 
								AND SO_Main.InvoiceInitDate &gt; @InvoiceDateCutoff";

				using (SqlCommand SQLCmd = new SqlCommand(SQL, Plugin.Manager.Database.SQLConnection, Plugin.Manager.Database.SQLTransaction)) 
				{                           
					SQLParam = new SqlParameter("@DebtorID", System.Data.SqlDbType.Char);
					SQLParam.Value = "0000000061000000001V"; // &lt;-- This is Brown's Computer Centre in demo data. "0FC4070CEBCC491CA15A" was the provided value by Danny on forums;
					SQLCmd.Parameters.Add(SQLParam);
					
					SQLParam = new SqlParameter("@InvoiceDateCutoff", System.Data.SqlDbType.DateTime);
					SQLParam.Value = new DateTime(2022, 02, 27);
					SQLCmd.Parameters.Add(SQLParam);
					
					SQLReader = SQLCmd.ExecuteReader();

					while (SQLReader.Read())
					{
						InvoiceIds.Add(Plugin.Manager.Database.Sanitise(SQLReader, "InvoiceID").ToString());
					}
				}
			}
			catch(System.Exception e)
			{
				Plugin.Manager.LogEvent(String.Format("Error '{0}'", e.Message), System.Diagnostics.EventLogEntryType.Information, 0, 0, true);   
			}
			finally 
			{
				if (SQLReader != null) 
				{
					SQLReader.Close();
				}
			}    
			
			if (InvoiceIds.Count &gt; 0)
			{
				JiwaFinancials.Jiwa.JiwaSales.SalesOrder.SalesOrder salesOrder = Plugin.Manager.BusinessLogicFactory.CreateBusinessLogic&lt;JiwaFinancials.Jiwa.JiwaSales.SalesOrder.SalesOrder&gt;(null);
				
				foreach (string invoiceID in InvoiceIds)
				{
					Plugin.Manager.LogEvent(String.Format("Exporting invoice '{0}'", invoiceID), System.Diagnostics.EventLogEntryType.Information, 0, 0, true);   
					salesOrder.Read(invoiceID);

					JiwaFinancials.Jiwa.JiwaSales.SalesOrder.SalesOrderHistory salesHist = salesOrder.SalesOrderHistorys[salesOrder.CurrentHistoryNo];   
					salesHist.CustomSettingValues.SetValue&lt;bool&gt;("ScanOrders", true);
					salesOrder.Save();
					Plugin.Manager.LogEvent(String.Format("Invoice Saved: '{0}'", salesOrder.InvoiceNo), System.Diagnostics.EventLogEntryType.Information, 0, 0, true);   
				}
			}			
        }
    }

    public void OnServiceStart(JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin Plugin)
    {
    }

    public void OnServiceStopping(JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin Plugin)
    {
    }
}
#endregion
</Code>
  <ExceptionPolicy>Report</ExceptionPolicy>
  <Language>CSharp</Language>
  <ReferenceCollection>
    <Reference>
      <RecID>8194b0b6-89e0-493e-90cf-3aec519b8d41</RecID>
      <AssemblyFullName>JiwaApplication, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaApplication.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\JiwaApplication.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>5f0f827e-b1c3-4466-bdca-165327d4026a</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>dbd69534-6f7d-40f2-aa1c-7afb7f6832d2</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>0f04d6ff-be50-470e-b7cc-c31516e44bf0</RecID>
      <AssemblyFullName>System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</AssemblyFullName>
      <AssemblyName>System.Drawing.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>052a0ec6-b5cd-435b-8428-a1437ff95f77</RecID>
      <AssemblyFullName>JiwaODBC, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaODBC.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\JiwaODBC.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>5a2e0988-740f-41b6-901d-88139015375f</RecID>
      <AssemblyFullName>System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Data.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>b851f173-37f7-4af3-8c4e-e3ec75437268</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>
    <Reference>
      <RecID>71bb8107-455c-4f16-ad12-099aff9a1efe</RecID>
      <AssemblyFullName>System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Runtime.Serialization.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>dec13d42-cb30-4d5d-ac0d-41184ed0c948</RecID>
      <AssemblyFullName>System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Windows.Forms.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>7b6fe7c7-98ec-43ce-8cb4-a5275fdf35a5</RecID>
      <AssemblyFullName>ServiceStack, Version=5.0.0.0, Culture=neutral, PublicKeyToken=02c12cbda47e6587</AssemblyFullName>
      <AssemblyName>ServiceStack.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\ServiceStack.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>3d89b301-2fa6-4ae9-a12f-b76965c8c139</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>bf5bd453-52db-48b8-ac02-feb491c7fc2a</RecID>
      <AssemblyFullName>System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</AssemblyFullName>
      <AssemblyName>System.Security.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Security\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Security.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>9f950e8d-021c-4198-8e68-75264accc77e</RecID>
      <AssemblyFullName>JiwaLib, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaLib.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\JiwaLib.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>1fc02fc3-92b2-43bc-b5df-1103abc7656a</RecID>
      <AssemblyFullName>JiwaSales, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaSales.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\JiwaSales.dll</AssemblyLocation>
    </Reference>
  </ReferenceCollection>
  <CustomFieldCollection>
    <CustomField>
      <RecID>72da8763-a86e-43af-b790-698e3c5daab6</RecID>
      <Name>ScanOrders</Name>
      <Description />
      <DisplayOrder>1</DisplayOrder>
      <CellType>Checkbox</CellType>
      <CustomFieldModule>Sales Order History</CustomFieldModule>
    </CustomField>
  </CustomFieldCollection>
  <ExecutionScheduleCollection>
    <Schedule>
      <RecID>569b737a-ecc3-46bd-bdcf-87c8d0437946</RecID>
      <Name>Every Minute</Name>
      <IsEnabled>true</IsEnabled>
      <ScheduleType>Recurring</ScheduleType>
      <OccurrenceType>Daily</OccurrenceType>
      <OccurrenceFrequencyInterval>1</OccurrenceFrequencyInterval>
      <OneTimeOccurrenceDate>2022-02-28T15:52:39.5105957+08:00</OneTimeOccurrenceDate>
      <DailyFrequencyType>RepeatsMinutely</DailyFrequencyType>
      <DailyOccursOnceTime />
      <DailyRepeatsInterval>1</DailyRepeatsInterval>
      <DailyRepeatsStartTime>0</DailyRepeatsStartTime>
      <DailyRepeatsEndTime>831000000000</DailyRepeatsEndTime>
      <WeeklyRepeatsInterval>1</WeeklyRepeatsInterval>
      <WeeklyDaysOfWeek>64</WeeklyDaysOfWeek>
      <MonthlyFrequencyType>nthDay</MonthlyFrequencyType>
      <MonthlyDayOfMonth>1</MonthlyDayOfMonth>
      <MonthlyRepeatInterval>1</MonthlyRepeatInterval>
      <MonthlyFrequencyAdjective>First</MonthlyFrequencyAdjective>
      <MonthlyFrequencyDayOfWeek>Monday</MonthlyFrequencyDayOfWeek>
      <StartDate>2022-02-27T00:00:00</StartDate>
      <HasEndDate>false</HasEndDate>
      <EndDate>2022-02-28T15:31:01.247</EndDate>
    </Schedule>
  </ExecutionScheduleCollection>
</JiwaDocument>