diff --git a/IDS_NCIP_Client.lua b/ALMA_NCIP_Client.lua
old mode 100755
new mode 100644
similarity index 91%
rename from IDS_NCIP_Client.lua
rename to ALMA_NCIP_Client.lua
index 8d7ae52..e6e4cf3
--- a/IDS_NCIP_Client.lua
+++ b/ALMA_NCIP_Client.lua
@@ -1,505 +1,506 @@
---About IDS_NCIP_Client 1.5
---
---Author: Bill Jones III, SUNY Geneseo, IDS Project, jonesw@geneseo.edu
---Modified by: Tom McNulty, VCU Libraries, tmcnulty@vcu.edu
---System Addon used for ILLiad to communicate with Alma through NCIP protocol
---
---Description of Registered Event Handlers for ILLiad
---
---BorrowingRequestCheckedInFromLibrary
---This will trigger whenever a non-cancelled transaction is processed from the Check In From Lending Library
---batch processing form using the Check In, Check In Scan Now, or Check In Scan Later buttons.
---
---BorrowingRequestCheckedInFromCustomer
---This will trigger whenever an item is processed from the Check Item In batch processing form,
---regardless of its status (such as if it were cancelled or never picked up by the customer).
---
---LendingRequestCheckOut
---This will trigger whenever a transaction is processed from the Lending Update Stacks Searching form
---using the Mark Found or Mark Found Scan Now buttons. This will also work on the Lending Processing ribbon
---of the Request form for the Mark Found and Mark Found Scan Now buttons.
---
---LendingRequestCheckIn
---This will trigger whenever a transaction is processed from the Lending Returns batch processing form.
---
---Queue names have a limit of 40 characters (including spaces).
-
-
-local Settings = {};
-
---NCIP Responder URL
-Settings.NCIP_Responder_URL = GetSetting("NCIP_Responder_URL");
-
---Change Prefix Settings for Transactions
-Settings.Use_Prefixes = GetSetting("Use_Prefixes");
-Settings.Prefix_for_LibraryUseOnly = GetSetting("Prefix_for_LibraryUseOnly");
-Settings.Prefix_for_RenewablesAllowed = GetSetting("Prefix_for_RenewablesAllowed");
-Settings.Prefix_for_LibraryUseOnly_and_RenewablesAllowed = GetSetting("Prefix_for_LibraryUseOnly_and_RenewablesAllowed");
-
---NCIP Error Status Changes
-Settings.BorrowingAcceptItemFailQueue = GetSetting("BorrowingAcceptItemFailQueue");
-Settings.BorrowingCheckInItemFailQueue = GetSetting("BorrowingCheckInItemFailQueue");
-Settings.LendingCheckOutItemFailQueue = GetSetting("LendingCheckOutItemFailQueue");
-Settings.LendingCheckInItemFailQueue = GetSetting("LendingCheckInItemFailQueue");
-
---acceptItem settings
-Settings.acceptItem_from_uniqueAgency_value = GetSetting("acceptItem_from_uniqueAgency_value");
-Settings.acceptItem_Transaction_Prefix = GetSetting("checkInItem_Transaction_Prefix");
-
---checkInItem settings
-Settings.checkInItem_EnablePatronBorrowingReturns = GetSetting("EnablePatronBorrowingReturns");
-Settings.ApplicationProfileType = GetSetting("ApplicationProfileType");
-Settings.checkInItem_Transaction_Prefix = GetSetting("checkInItem_Transaction_Prefix");
-
---checkOutItem settings
-Settings.checkOutItem_RequestIdentifierValue_Prefix = GetSetting("checkOutItem_RequestIdentifierValue_Prefix");
-
-function Init()
- RegisterSystemEventHandler("BorrowingRequestCheckedInFromLibrary", "BorrowingAcceptItem");
- RegisterSystemEventHandler("BorrowingRequestCheckedInFromCustomer", "BorrowingCheckInItem");
- RegisterSystemEventHandler("LendingRequestCheckOut", "LendingCheckOutItem");
- RegisterSystemEventHandler("LendingRequestCheckIn", "LendingCheckInItem");
-end
-
---Borrowing Functions
-function BorrowingAcceptItem(transactionProcessedEventArgs)
- LogDebug("BorrowingAcceptItem - start");
-
- if GetFieldValue("Transaction", "RequestType") == "Loan" then
-
- LogDebug("Item Request has been identified as a Loan and not Article - process started.");
-
- luanet.load_assembly("System");
- local ncipAddress = Settings.NCIP_Responder_URL;
- local BAImessage = buildAcceptItem();
- LogDebug("creating BorrowingAcceptItem message[" .. BAImessage .. "]");
- local WebClient = luanet.import_type("System.Net.WebClient");
- local myWebClient = WebClient();
- LogDebug("WebClient Created");
- LogDebug("Adding Header");
-
- LogDebug("Setting Upload String");
- local BAIresponseArray = myWebClient:UploadString(ncipAddress, BAImessage);
- LogDebug("Upload response was[" .. BAIresponseArray .. "]");
-
- LogDebug("Starting error catch")
- local currentTN = GetFieldValue("Transaction", "TransactionNumber");
-
- if string.find (BAIresponseArray, "Item Not Checked Out") then
- LogDebug("NCIP Error: Item Not Checked Out");
- ExecuteCommand("Route", {currentTN, "NCIP Error: BorAcceptItem-NotCheckedOut"});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, BAIresponseArray});
- SaveDataSource("Transaction");
-
- elseif string.find(BAIresponseArray, "User Authentication Failed") then
- LogDebug("NCIP Error: User Authentication Failed");
- ExecuteCommand("Route", {currentTN, "NCIP Error: BorAcceptItem-UserAuthFail"});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, BAIresponseArray});
- SaveDataSource("Transaction");
-
- --this error came up from non-standard characters in the title (umlauts)
- elseif string.find(BAIresponseArray, "Service is not known") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, "NCIP Error: BorAcceptItem-SrvcNotKnown"});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, BAIresponseArray});
- SaveDataSource("Transaction");
-
- elseif string.find(BAIresponseArray, "Problem") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, Settings.BorrowingAcceptItemFailQueue});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, BAIresponseArray});
- SaveDataSource("Transaction");
-
- else
- LogDebug("No Problems found in NCIP Response.")
- ExecuteCommand("AddNote", {currentTN, "NCIP Response for BorrowingAcceptItem received successfully"});
- SaveDataSource("Transaction");
- end
- end
-end
-
-
-function BorrowingCheckInItem(transactionProcessedEventArgs)
-
- LogDebug("BorrowingCheckInItem - start");
- luanet.load_assembly("System");
- local ncipAddress = Settings.NCIP_Responder_URL;
- local BCIImessage = buildCheckInItemBorrowing();
- LogDebug("creating BorrowingCheckInItem message[" .. BCIImessage .. "]");
- local WebClient = luanet.import_type("System.Net.WebClient");
- local myWebClient = WebClient();
- LogDebug("WebClient Created");
- LogDebug("Adding Header");
- myWebClient.Headers:Add("Content-Type", "text/xml; charset=UTF-8");
- LogDebug("Setting Upload String");
- local BCIIresponseArray = myWebClient:UploadString(ncipAddress, BCIImessage);
- LogDebug("Upload response was[" .. BCIIresponseArray .. "]");
-
- LogDebug("Starting error catch")
- local currentTN = GetFieldValue("Transaction", "TransactionNumber");
-
- if string.find(BCIIresponseArray, "Unknown Item") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, "NCIP Error: BorCheckIn-UnknownItem"});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, BCIIresponseArray});
- SaveDataSource("Transaction");
-
- elseif string.find(BCIIresponseArray, "Item Not Checked Out") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, "NCIP Error: BorCheckIn-NotCheckedOut"});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, BCIIresponseArray});
- SaveDataSource("Transaction");
-
- elseif string.find(BCIIresponseArray, "Problem") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, Settings.BorrowingCheckInItemFailQueue});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, BCIIresponseArray});
- SaveDataSource("Transaction");
-
- else
- LogDebug("No Problems found in NCIP Response.")
- ExecuteCommand("AddNote", {currentTN, "NCIP Response for BorrowingCheckInItem received successfully"});
- SaveDataSource("Transaction");
- end
-end
-
---Lending Functions
-function LendingCheckOutItem(transactionProcessedEventArgs)
- LogDebug("DEBUG -- LendingCheckOutItem - start");
- luanet.load_assembly("System");
- local ncipAddress = Settings.NCIP_Responder_URL;
- local LCOImessage = buildCheckOutItem();
- LogDebug("creating LendingCheckOutItem message[" .. LCOImessage .. "]");
- local WebClient = luanet.import_type("System.Net.WebClient");
- local myWebClient = WebClient();
- LogDebug("WebClient Created");
- LogDebug("Adding Header");
- myWebClient.Headers:Add("Content-Type", "text/xml; charset=UTF-8");
- LogDebug("Setting Upload String");
- local LCOIresponseArray = myWebClient:UploadString(ncipAddress, LCOImessage);
- LogDebug("Upload response was[" .. LCOIresponseArray .. "]");
-
- LogDebug("Starting error catch")
- local currentTN = GetFieldValue("Transaction", "TransactionNumber");
-
- if string.find(LCOIresponseArray, "Apply to circulation desk - Loan cannot be renewed (no change in due date)") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, "NCIP Error: LCheckOut-No Change Due Date"});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, LCOIresponseArray});
- SaveDataSource("Transaction");
-
- elseif string.find(LCOIresponseArray, "User Ineligible To Check Out This Item") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, "NCIP Error: LCheckOut-User Ineligible"});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, LCOIresponseArray});
- SaveDataSource("Transaction");
-
- elseif string.find(LCOIresponseArray, "User Unknown") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, "NCIP Error: LCheckOut-User Unknown"});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, LCOIresponseArray});
- SaveDataSource("Transaction");
-
- elseif string.find(LCOIresponseArray, "Problem") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, Settings.LendingCheckOutItemFailQueue});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, LCOIresponseArray});
- SaveDataSource("Transaction");
-
- else
- LogDebug("No Problems found in NCIP Response.")
- ExecuteCommand("AddNote", {currentTN, "NCIP Response for LendingCheckOutItem received successfully"});
- SaveDataSource("Transaction");
- end
-end
-
-function LendingCheckInItem(transactionProcessedEventArgs)
- LogDebug("LendingCheckInItem - start");
- luanet.load_assembly("System");
- local ncipAddress = Settings.NCIP_Responder_URL;
- local LCIImessage = buildCheckInItemLending();
- LogDebug("creating LendingCheckInItem message[" .. LCIImessage .. "]");
- local WebClient = luanet.import_type("System.Net.WebClient");
- local myWebClient = WebClient();
- LogDebug("WebClient Created");
- LogDebug("Adding Header");
- myWebClient.Headers:Add("Content-Type", "text/xml; charset=UTF-8");
- LogDebug("Setting Upload String");
- local LCIIresponseArray = myWebClient:UploadString(ncipAddress, LCIImessage);
- LogDebug("Upload response was[" .. LCIIresponseArray .. "]");
-
- LogDebug("Starting error catch")
- local currentTN = GetFieldValue("Transaction", "TransactionNumber");
-
- if string.find(LCIIresponseArray, "Unknown Item") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, "NCIP Error: LCheckIn-Unknown Item"});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, LCIIresponseArray});
- SaveDataSource("Transaction");
-
- elseif string.find(LCIIresponseArray, "Item Not Checked Out") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, "NCIP Error: LCheckIn-Not Checked Out"});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, LCIIresponseArray});
- SaveDataSource("Transaction");
-
- elseif string.find(LCIIresponseArray, "Problem") then
- LogDebug("NCIP Error: ReRouting Transaction");
- ExecuteCommand("Route", {currentTN, Settings.LendingCheckInItemFailQueue});
- LogDebug("Adding Note to Transaction with NCIP Client Error");
- ExecuteCommand("AddNote", {currentTN, LCIIresponseArray});
- SaveDataSource("Transaction");
-
- else
- LogDebug("No Problems found in NCIP Response.")
- ExecuteCommand("AddNote", {currentTN, "NCIP Response for LendingCheckInItem received successfully"});
- SaveDataSource("Transaction");
- end
-end
-
---AcceptItem XML Builder for Borrowing
---sometimes Author fields and Title fields are blank
-function buildAcceptItem()
-local tn = "";
-local dr = tostring(GetFieldValue("Transaction", "DueDate"));
-local df = string.match(dr, "%d+\/%d+\/%d+");
-local mn, dy, yr = string.match(df, "(%d+)/(%d+)/(%d+)");
-local mnt = string.format("%02d",mn);
-local dya = string.format("%02d",dy);
-local user = GetFieldValue("Transaction", "Username");
-if Settings.Use_Prefixes then
- local t = GetFieldValue("Transaction", "TransactionNumber");
- if GetFieldValue("Transaction", "LibraryUseOnly") and GetFieldValue("Transaction", "RenewalsAllowed") then
- tn = Settings.Prefix_for_LibraryUseOnly_and_RenewablesAllowed .. t;
- end
- if GetFieldValue("Transaction", "LibraryUseOnly") and GetFieldValue("Transaction", "RenewalsAllowed") ~= true then
- tn = Settings.Prefix_for_LibraryUseOnly .. t;
- end
- if GetFieldValue("Transaction", "RenewalsAllowed") and GetFieldValue("Transaction", "LibraryUseOnly") ~= true then
- tn = Settings.Prefix_for_RenewablesAllowed .. t;
- end
- if GetFieldValue("Transaction", "LibraryUseOnly") ~= true and GetFieldValue("Transaction", "RenewalsAllowed") ~= true then
- tn = Settings.acceptItem_Transaction_Prefix .. t;
- end
-else
- tn = Settings.acceptItem_Transaction_Prefix .. GetFieldValue("Transaction", "TransactionNumber");
-end
-
-local author = GetFieldValue("Transaction", "LoanAuthor");
- if author == nil then
- author = "";
- end
- if string.find(author, "&") ~= nil then
- author = string.gsub(author, "&", "and");
- end
-local title = GetFieldValue("Transaction", "LoanTitle");
- if title == nil then
- title = "";
- end
- if string.find(title, "&") ~= nil then
- title = string.gsub(title, "&", "and");
- end
-
-local pickup_location_full = GetFieldValue("Transaction", "Location");
-local sublibraries = assert(io.open(AddonInfo.Directory .. "\\sublibraries.txt", "r"));
-local pickup_location = "";
-local templine = nil;
- if sublibraries ~= nil then
- for line in sublibraries:lines() do
- if string.find(line, pickup_location_full) ~= nil then
- pickup_location = string.sub(line, line:len() - 2);
- break;
-
- else
- pickup_location = "nothing";
- end
- end
- sublibraries:close();
- end
-
-local m = '';
- m = m .. ''
- m = m .. ''
- m = m .. ''
- m = m .. ''
- m = m .. ''
- m = m .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- m = m .. ''
- m = m .. ''
- m = m .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- m = m .. ''
- m = m .. '' .. Settings.ApplicationProfileType .. ''
- m = m .. ''
- m = m .. ''
- m = m .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- m = m .. '' .. tn .. ''
- m = m .. ''
- m = m .. 'Hold For Pickup And Notify'
- m = m .. ''
- m = m .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- m = m .. 'Barcode Id'
- m = m .. '' .. user .. ''
- m = m .. ''
- m = m .. ''
- m = m .. '' .. tn .. ''
- m = m .. ''
- m = m .. '' .. yr .. '-' .. mnt .. '-' .. dya .. 'T23:59:00' .. ''
--- m = m .. '' .. pickup_location .. ''
- m = m .. ''
- m = m .. ''
- m = m .. '' .. author .. ''
- m = m .. '' .. title .. ''
- m = m .. ''
- m = m .. ''
- m = m .. ''
- m = m .. ''
- return m;
- end
-
---ReturnedItem XML Builder for Borrowing (Patron Returns)
-function buildCheckInItemBorrowing()
-local tn = "";
-local user = GetFieldValue("Transaction", "Username");
-if Settings.Use_Prefixes then
- local t = GetFieldValue("Transaction", "TransactionNumber");
- if GetFieldValue("Transaction", "LibraryUseOnly") and GetFieldValue("Transaction", "RenewalsAllowed") then
- tn = Settings.Prefix_for_LibraryUseOnly_and_RenewablesAllowed .. t;
- end
- if GetFieldValue("Transaction", "LibraryUseOnly") and GetFieldValue("Transaction", "RenewalsAllowed") ~= true then
- tn = Settings.Prefix_for_LibraryUseOnly .. t;
- end
- if GetFieldValue("Transaction", "RenewalsAllowed") and GetFieldValue("Transaction", "LibraryUseOnly") ~= true then
- tn = Settings.Prefix_for_RenewablesAllowed .. t;
- end
- if GetFieldValue("Transaction", "LibraryUseOnly") ~= true and GetFieldValue("Transaction", "RenewalsAllowed") ~= true then
- tn = Settings.acceptItem_Transaction_Prefix .. t;
- end
-else
- tn = Settings.acceptItem_Transaction_Prefix .. GetFieldValue("Transaction", "TransactionNumber");
-end
-
-local cib = '';
- cib = cib .. ''
- cib = cib .. ''
- cib = cib .. ''
- cib = cib .. ''
- cib = cib .. ''
- cib = cib .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- cib = cib .. ''
- cib = cib .. ''
- cib = cib .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- cib = cib .. ''
- cib = cib .. '' .. Settings.ApplicationProfileType .. ''
- cib = cib .. ''
- cib = cib .. ''
- cib = cib .. '' .. user .. ''
- cib = cib .. ''
- cib = cib .. ''
- cib = cib .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- cib = cib .. '' .. tn .. ''
- cib = cib .. ''
- cib = cib .. ''
- cib = cib .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- cib = cib .. '' .. tn .. ''
- cib = cib .. ''
- cib = cib .. ''
- cib = cib .. ''
- return cib;
-end
-
---ReturnedItem XML Builder for Lending (Library Returns)
-function buildCheckInItemLending()
-local ttype = "";
-local user = GetFieldValue("Transaction", "Username");
-local refnumber = GetFieldValue("Transaction", "ReferenceNumber");
-local trantype = GetFieldValue("Transaction", "ProcessType");
- if trantype == "Borrowing" then
- ttype = Settings.checkInItem_Transaction_Prefix .. GetFieldValue("Transaction", "TransactionNumber");
- elseif trantype == "Lending" then
- ttype = GetFieldValue("Transaction", "ReferenceNumber");
- else
- ttype = Settings.checkInItem_Transaction_Prefix .. GetFieldValue("Transaction", "TransactionNumber");
- end
-
-local cil = '';
- cil = cil .. ''
- cil = cil .. ''
- cil = cil .. ''
- cil = cil .. ''
- cil = cil .. ''
- cil = cil .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- cil = cil .. ''
- cil = cil .. ''
- cil = cil .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- cil = cil .. ''
- cil = cil .. '' .. Settings.ApplicationProfileType .. ''
- cil = cil .. ''
- cil = cil .. ''
- cil = cil .. '' .. user .. ''
- cil = cil .. ''
- cil = cil .. ''
- cil = cil .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- cil = cil .. '' .. refnumber .. ''
- cil = cil .. ''
- cil = cil .. ''
- cil = cil .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- cil = cil .. '' .. ttype .. ''
- cil = cil .. ''
- cil = cil .. ''
- cil = cil .. ''
- return cil;
-end
-
---CheckOutItem XML Builder for Lending
-function buildCheckOutItem()
-local dr = tostring(GetFieldValue("Transaction", "DueDate"));
-local df = string.match(dr, "%d+\/%d+\/%d+");
-local mn, dy, yr = string.match(df, "(%d+)/(%d+)/(%d+)");
-local mnt = string.format("%02d",mn);
-local dya = string.format("%02d",dy);
-local pseudopatron = 'pseudopatron';
-local refnumber = GetFieldValue("Transaction", "ReferenceNumber");
-local tn = Settings.checkOutItem_RequestIdentifierValue_Prefix .. GetFieldValue("Transaction", "TransactionNumber");
-local coi = '';
- coi = coi .. ''
- coi = coi .. ''
- coi = coi .. ''
- coi = coi .. ''
- coi = coi .. ''
- coi = coi .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- coi = coi .. ''
- coi = coi .. ''
- coi = coi .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- coi = coi .. ''
- coi = coi .. '' .. Settings.ApplicationProfileType .. ''
- coi = coi .. ''
- coi = coi .. ''
- coi = coi .. '' .. pseudopatron .. ''
- coi = coi .. ''
- coi = coi .. ''
- coi = coi .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- coi = coi .. '' .. refnumber .. ''
- coi = coi .. ''
- coi = coi .. ''
- coi = coi .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
- coi = coi .. '' .. tn .. ''
- coi = coi .. ''
- coi = coi .. '' .. yr .. '-' .. mnt .. '-' .. dya .. 'T23:59:00' .. ''
- coi = coi .. ''
- coi = coi .. ''
- return coi;
-
-end
+--About IDS_NCIP_Client 1.5
+--
+--Author: Bill Jones III, SUNY Geneseo, IDS Project, jonesw@geneseo.edu
+--Modified by: Tom McNulty, VCU Libraries, tmcnulty@vcu.edu
+--Modified by: Kevin Reiss, Princeton University Library, kr2@princeton.edu; Peter Green, Princeton University Library, pmgreen@princeton.edu; Mark Zelesky, Princeton University Library, mzelesky@princeton.edu
+--System Addon used for ILLiad to communicate with Alma through NCIP protocol
+--
+--Description of Registered Event Handlers for ILLiad
+--
+--BorrowingRequestCheckedInFromLibrary
+--This will trigger whenever a non-cancelled transaction is processed from the Check In From Lending Library
+--batch processing form using the Check In, Check In Scan Now, or Check In Scan Later buttons.
+--
+--BorrowingRequestCheckedInFromCustomer
+--This will trigger whenever an item is processed from the Check Item In batch processing form,
+--regardless of its status (such as if it were cancelled or never picked up by the customer).
+--
+--LendingRequestCheckOut
+--This will trigger whenever a transaction is processed from the Lending Update Stacks Searching form
+--using the Mark Found or Mark Found Scan Now buttons. This will also work on the Lending Processing ribbon
+--of the Request form for the Mark Found and Mark Found Scan Now buttons.
+--
+--LendingRequestCheckIn
+--This will trigger whenever a transaction is processed from the Lending Returns batch processing form.
+--
+--Queue names have a limit of 40 characters (including spaces).
+
+
+local Settings = {};
+
+--NCIP Responder URL
+Settings.NCIP_Responder_URL = GetSetting("NCIP_Responder_URL");
+
+--Change Prefix Settings for Transactions
+Settings.Use_Prefixes = GetSetting("Use_Prefixes");
+Settings.Prefix_for_LibraryUseOnly = GetSetting("Prefix_for_LibraryUseOnly");
+Settings.Prefix_for_RenewablesAllowed = GetSetting("Prefix_for_RenewablesAllowed");
+Settings.Prefix_for_LibraryUseOnly_and_RenewablesAllowed = GetSetting("Prefix_for_LibraryUseOnly_and_RenewablesAllowed");
+
+--NCIP Error Status Changes
+Settings.BorrowingAcceptItemFailQueue = GetSetting("BorrowingAcceptItemFailQueue");
+Settings.BorrowingCheckInItemFailQueue = GetSetting("BorrowingCheckInItemFailQueue");
+Settings.LendingCheckOutItemFailQueue = GetSetting("LendingCheckOutItemFailQueue");
+Settings.LendingCheckInItemFailQueue = GetSetting("LendingCheckInItemFailQueue");
+
+--acceptItem settings
+Settings.acceptItem_from_uniqueAgency_value = GetSetting("acceptItem_from_uniqueAgency_value");
+Settings.acceptItem_Transaction_Prefix = GetSetting("checkInItem_Transaction_Prefix");
+
+--checkInItem settings
+Settings.checkInItem_EnablePatronBorrowingReturns = GetSetting("EnablePatronBorrowingReturns");
+Settings.ApplicationProfileType = GetSetting("ApplicationProfileType");
+Settings.checkInItem_Transaction_Prefix = GetSetting("checkInItem_Transaction_Prefix");
+
+--checkOutItem settings
+Settings.checkOutItem_RequestIdentifierValue_Prefix = GetSetting("checkOutItem_RequestIdentifierValue_Prefix");
+
+function Init()
+ RegisterSystemEventHandler("BorrowingRequestCheckedInFromLibrary", "BorrowingAcceptItem");
+ RegisterSystemEventHandler("BorrowingRequestCheckedInFromCustomer", "BorrowingCheckInItem");
+ RegisterSystemEventHandler("LendingRequestCheckOut", "LendingCheckOutItem");
+ RegisterSystemEventHandler("LendingRequestCheckIn", "LendingCheckInItem");
+end
+
+--Borrowing Functions
+function BorrowingAcceptItem(transactionProcessedEventArgs)
+ LogDebug("BorrowingAcceptItem - start");
+
+ if GetFieldValue("Transaction", "RequestType") == "Loan" then
+
+ LogDebug("Item Request has been identified as a Loan and not Article - process started.");
+
+ luanet.load_assembly("System");
+ local ncipAddress = Settings.NCIP_Responder_URL;
+ local BAImessage = buildAcceptItem();
+ LogDebug("creating BorrowingAcceptItem message[" .. BAImessage .. "]");
+ local WebClient = luanet.import_type("System.Net.WebClient");
+ local myWebClient = WebClient();
+ LogDebug("WebClient Created");
+ LogDebug("Adding Header");
+
+ LogDebug("Setting Upload String");
+ local BAIresponseArray = myWebClient:UploadString(ncipAddress, BAImessage);
+ LogDebug("Upload response was[" .. BAIresponseArray .. "]");
+
+ LogDebug("Starting error catch")
+ local currentTN = GetFieldValue("Transaction", "TransactionNumber");
+
+ if string.find (BAIresponseArray, "Item Not Checked Out") then
+ LogDebug("NCIP Error: Item Not Checked Out");
+ ExecuteCommand("Route", {currentTN, "NCIP Error: BorAcceptItem-NotCheckedOut"});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, BAIresponseArray});
+ SaveDataSource("Transaction");
+
+ elseif string.find(BAIresponseArray, "User Authentication Failed") then
+ LogDebug("NCIP Error: User Authentication Failed");
+ ExecuteCommand("Route", {currentTN, "NCIP Error: BorAcceptItem-UserAuthFail"});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, BAIresponseArray});
+ SaveDataSource("Transaction");
+
+ --this error came up from non-standard characters in the title (umlauts)
+ elseif string.find(BAIresponseArray, "Service is not known") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, "NCIP Error: BorAcceptItem-SrvcNotKnown"});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, BAIresponseArray});
+ SaveDataSource("Transaction");
+
+ elseif string.find(BAIresponseArray, "Problem") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, Settings.BorrowingAcceptItemFailQueue});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, BAIresponseArray});
+ SaveDataSource("Transaction");
+
+ else
+ LogDebug("No Problems found in NCIP Response.")
+ ExecuteCommand("AddNote", {currentTN, "NCIP Response for BorrowingAcceptItem received successfully"});
+ SaveDataSource("Transaction");
+ end
+ end
+end
+
+
+function BorrowingCheckInItem(transactionProcessedEventArgs)
+
+ LogDebug("BorrowingCheckInItem - start");
+ luanet.load_assembly("System");
+ local ncipAddress = Settings.NCIP_Responder_URL;
+ local BCIImessage = buildCheckInItemBorrowing();
+ LogDebug("creating BorrowingCheckInItem message[" .. BCIImessage .. "]");
+ local WebClient = luanet.import_type("System.Net.WebClient");
+ local myWebClient = WebClient();
+ LogDebug("WebClient Created");
+ LogDebug("Adding Header");
+ myWebClient.Headers:Add("Content-Type", "text/xml; charset=UTF-8");
+ LogDebug("Setting Upload String");
+ local BCIIresponseArray = myWebClient:UploadString(ncipAddress, BCIImessage);
+ LogDebug("Upload response was[" .. BCIIresponseArray .. "]");
+
+ LogDebug("Starting error catch")
+ local currentTN = GetFieldValue("Transaction", "TransactionNumber");
+
+ if string.find(BCIIresponseArray, "Unknown Item") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, "NCIP Error: BorCheckIn-UnknownItem"});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, BCIIresponseArray});
+ SaveDataSource("Transaction");
+
+ elseif string.find(BCIIresponseArray, "Item Not Checked Out") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, "NCIP Error: BorCheckIn-NotCheckedOut"});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, BCIIresponseArray});
+ SaveDataSource("Transaction");
+
+ elseif string.find(BCIIresponseArray, "Problem") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, Settings.BorrowingCheckInItemFailQueue});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, BCIIresponseArray});
+ SaveDataSource("Transaction");
+
+ else
+ LogDebug("No Problems found in NCIP Response.")
+ ExecuteCommand("AddNote", {currentTN, "NCIP Response for BorrowingCheckInItem received successfully"});
+ SaveDataSource("Transaction");
+ end
+end
+
+--Lending Functions
+function LendingCheckOutItem(transactionProcessedEventArgs)
+ LogDebug("DEBUG -- LendingCheckOutItem - start");
+ luanet.load_assembly("System");
+ local ncipAddress = Settings.NCIP_Responder_URL;
+ local LCOImessage = buildCheckOutItem();
+ LogDebug("creating LendingCheckOutItem message[" .. LCOImessage .. "]");
+ local WebClient = luanet.import_type("System.Net.WebClient");
+ local myWebClient = WebClient();
+ LogDebug("WebClient Created");
+ LogDebug("Adding Header");
+ myWebClient.Headers:Add("Content-Type", "text/xml; charset=UTF-8");
+ LogDebug("Setting Upload String");
+ local LCOIresponseArray = myWebClient:UploadString(ncipAddress, LCOImessage);
+ LogDebug("Upload response was[" .. LCOIresponseArray .. "]");
+
+ LogDebug("Starting error catch")
+ local currentTN = GetFieldValue("Transaction", "TransactionNumber");
+
+ if string.find(LCOIresponseArray, "Apply to circulation desk - Loan cannot be renewed (no change in due date)") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, "NCIP Error: LCheckOut-No Change Due Date"});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, LCOIresponseArray});
+ SaveDataSource("Transaction");
+
+ elseif string.find(LCOIresponseArray, "User Ineligible To Check Out This Item") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, "NCIP Error: LCheckOut-User Ineligible"});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, LCOIresponseArray});
+ SaveDataSource("Transaction");
+
+ elseif string.find(LCOIresponseArray, "User Unknown") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, "NCIP Error: LCheckOut-User Unknown"});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, LCOIresponseArray});
+ SaveDataSource("Transaction");
+
+ elseif string.find(LCOIresponseArray, "Problem") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, Settings.LendingCheckOutItemFailQueue});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, LCOIresponseArray});
+ SaveDataSource("Transaction");
+
+ else
+ LogDebug("No Problems found in NCIP Response.")
+ ExecuteCommand("AddNote", {currentTN, "NCIP Response for LendingCheckOutItem received successfully"});
+ SaveDataSource("Transaction");
+ end
+end
+
+function LendingCheckInItem(transactionProcessedEventArgs)
+ LogDebug("LendingCheckInItem - start");
+ luanet.load_assembly("System");
+ local ncipAddress = Settings.NCIP_Responder_URL;
+ local LCIImessage = buildCheckInItemLending();
+ LogDebug("creating LendingCheckInItem message[" .. LCIImessage .. "]");
+ local WebClient = luanet.import_type("System.Net.WebClient");
+ local myWebClient = WebClient();
+ LogDebug("WebClient Created");
+ LogDebug("Adding Header");
+ myWebClient.Headers:Add("Content-Type", "text/xml; charset=UTF-8");
+ LogDebug("Setting Upload String");
+ local LCIIresponseArray = myWebClient:UploadString(ncipAddress, LCIImessage);
+ LogDebug("Upload response was[" .. LCIIresponseArray .. "]");
+
+ LogDebug("Starting error catch")
+ local currentTN = GetFieldValue("Transaction", "TransactionNumber");
+
+ if string.find(LCIIresponseArray, "Unknown Item") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, "NCIP Error: LCheckIn-Unknown Item"});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, LCIIresponseArray});
+ SaveDataSource("Transaction");
+
+ elseif string.find(LCIIresponseArray, "Item Not Checked Out") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, "NCIP Error: LCheckIn-Not Checked Out"});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, LCIIresponseArray});
+ SaveDataSource("Transaction");
+
+ elseif string.find(LCIIresponseArray, "Problem") then
+ LogDebug("NCIP Error: ReRouting Transaction");
+ ExecuteCommand("Route", {currentTN, Settings.LendingCheckInItemFailQueue});
+ LogDebug("Adding Note to Transaction with NCIP Client Error");
+ ExecuteCommand("AddNote", {currentTN, LCIIresponseArray});
+ SaveDataSource("Transaction");
+
+ else
+ LogDebug("No Problems found in NCIP Response.")
+ ExecuteCommand("AddNote", {currentTN, "NCIP Response for LendingCheckInItem received successfully"});
+ SaveDataSource("Transaction");
+ end
+end
+
+--AcceptItem XML Builder for Borrowing
+--sometimes Author fields and Title fields are blank
+function buildAcceptItem()
+local tn = "";
+local dr = tostring(GetFieldValue("Transaction", "DueDate"));
+local df = string.match(dr, "%d+\/%d+\/%d+");
+local mn, dy, yr = string.match(df, "(%d+)/(%d+)/(%d+)");
+local mnt = string.format("%02d",mn);
+local dya = string.format("%02d",dy);
+local user = GetFieldValue("Transaction", "Username");
+local t = GetFieldValue("Transaction", "TransactionNumber");
+if Settings.Use_Prefixes then
+ if GetFieldValue("Transaction", "LibraryUseOnly") and GetFieldValue("Transaction", "RenewalsAllowed") then
+ tn = Settings.Prefix_for_LibraryUseOnly_and_RenewablesAllowed .. t;
+ end
+ if GetFieldValue("Transaction", "LibraryUseOnly") and GetFieldValue("Transaction", "RenewalsAllowed") ~= true then
+ tn = Settings.Prefix_for_LibraryUseOnly .. t;
+ end
+ if GetFieldValue("Transaction", "RenewalsAllowed") and GetFieldValue("Transaction", "LibraryUseOnly") ~= true then
+ tn = Settings.Prefix_for_RenewablesAllowed .. t;
+ end
+ if GetFieldValue("Transaction", "LibraryUseOnly") ~= true and GetFieldValue("Transaction", "RenewalsAllowed") ~= true then
+ tn = Settings.acceptItem_Transaction_Prefix .. t;
+ end
+else
+ tn = Settings.acceptItem_Transaction_Prefix .. GetFieldValue("Transaction", "TransactionNumber");
+end
+
+local author = GetFieldValue("Transaction", "LoanAuthor");
+ if author == nil then
+ author = "";
+ end
+ if string.find(author, "&") ~= nil then
+ author = string.gsub(author, "&", "and");
+ end
+local title = GetFieldValue("Transaction", "LoanTitle");
+ if title == nil then
+ title = "";
+ end
+ if string.find(title, "&") ~= nil then
+ title = string.gsub(title, "&", "and");
+ end
+
+--account for multiple site pickup locations
+local templine = nil;
+local pickup_location = "";
+local pickup_location_full = GetFieldValue("Transaction", "Site");
+ if pickup_location_full == "Architecture" then pickup_location = "arch";
+ elseif pickup_location_full == "East Asian" then pickup_location = "eastasian";
+ elseif pickup_location_full == "Engineering" then pickup_location = "engineer";
+ elseif pickup_location_full == "Firestone" then pickup_location = "firestone";
+ elseif pickup_location_full == "Lewis" then pickup_location = "lewis";
+ elseif pickup_location_full == "Marquand" then pickup_location = "marquand";
+ elseif pickup_location_full == "Music" then pickup_location = "mendel";
+ elseif pickup_location_full == "PPL" then pickup_location = "plasma";
+ elseif pickup_location_full == "Stokes" then pickup_location = "stokes";
+ else
+ pickup_location = "EMPTY";
+end
+
+local m = '';
+ m = m .. ''
+ m = m .. ''
+ m = m .. ''
+ m = m .. ''
+ m = m .. ''
+ m = m .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ m = m .. ''
+ m = m .. ''
+ m = m .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ m = m .. ''
+ m = m .. '' .. Settings.ApplicationProfileType .. ''
+ m = m .. ''
+ m = m .. ''
+ m = m .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ m = m .. '' .. tn .. ''
+ m = m .. ''
+ m = m .. 'Hold For Pickup And Notify'
+ m = m .. ''
+ m = m .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ m = m .. 'Barcode Id'
+ m = m .. '' .. user .. ''
+ m = m .. ''
+ m = m .. ''
+ m = m .. '' .. t .. ''
+ m = m .. ''
+ m = m .. '' .. yr .. '-' .. mnt .. '-' .. dya .. 'T23:59:00' .. ''
+-- m = m .. '' .. pickup_location .. ''
+ m = m .. ''
+ m = m .. ''
+ m = m .. '' .. author .. ''
+ m = m .. '' .. title .. ''
+ m = m .. ''
+ m = m .. ''
+ m = m .. ''
+ m = m .. ''
+ return m;
+ end
+
+--ReturnedItem XML Builder for Borrowing (Patron Returns)
+function buildCheckInItemBorrowing()
+local tn = "";
+local t = GetFieldValue("Transaction", "TransactionNumber");
+local user = GetFieldValue("Transaction", "Username");
+if Settings.Use_Prefixes then
+ if GetFieldValue("Transaction", "LibraryUseOnly") and GetFieldValue("Transaction", "RenewalsAllowed") then
+ tn = Settings.Prefix_for_LibraryUseOnly_and_RenewablesAllowed .. t;
+ end
+ if GetFieldValue("Transaction", "LibraryUseOnly") and GetFieldValue("Transaction", "RenewalsAllowed") ~= true then
+ tn = Settings.Prefix_for_LibraryUseOnly .. t;
+ end
+ if GetFieldValue("Transaction", "RenewalsAllowed") and GetFieldValue("Transaction", "LibraryUseOnly") ~= true then
+ tn = Settings.Prefix_for_RenewablesAllowed .. t;
+ end
+ if GetFieldValue("Transaction", "LibraryUseOnly") ~= true and GetFieldValue("Transaction", "RenewalsAllowed") ~= true then
+ tn = Settings.acceptItem_Transaction_Prefix .. t;
+ end
+else
+ tn = Settings.acceptItem_Transaction_Prefix .. GetFieldValue("Transaction", "TransactionNumber");
+end
+
+local cib = '';
+ cib = cib .. ''
+ cib = cib .. ''
+ cib = cib .. ''
+ cib = cib .. ''
+ cib = cib .. ''
+ cib = cib .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ cib = cib .. ''
+ cib = cib .. ''
+ cib = cib .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ cib = cib .. ''
+ cib = cib .. '' .. Settings.ApplicationProfileType .. ''
+ cib = cib .. ''
+ cib = cib .. ''
+ cib = cib .. '' .. user .. ''
+ cib = cib .. ''
+ cib = cib .. ''
+ cib = cib .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ cib = cib .. '' .. t .. ''
+ cib = cib .. ''
+ cib = cib .. ''
+ cib = cib .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ cib = cib .. '' .. tn .. ''
+ cib = cib .. ''
+ cib = cib .. ''
+ cib = cib .. ''
+ return cib;
+end
+
+--ReturnedItem XML Builder for Lending (Library Returns)
+function buildCheckInItemLending()
+local ttype = "";
+local user = GetFieldValue("Transaction", "Username");
+local itemnumber = GetFieldValue("Transaction", "ItemNumber");
+local trantype = GetFieldValue("Transaction", "ProcessType");
+ if trantype == "Borrowing" then
+ ttype = Settings.checkInItem_Transaction_Prefix .. GetFieldValue("Transaction", "TransactionNumber");
+ elseif trantype == "Lending" then
+ ttype = GetFieldValue("Transaction", "ItemNumber");
+ else
+ ttype = Settings.checkInItem_Transaction_Prefix .. GetFieldValue("Transaction", "TransactionNumber");
+ end
+
+local cil = '';
+ cil = cil .. ''
+ cil = cil .. ''
+ cil = cil .. ''
+ cil = cil .. ''
+ cil = cil .. ''
+ cil = cil .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ cil = cil .. ''
+ cil = cil .. ''
+ cil = cil .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ cil = cil .. ''
+ cil = cil .. '' .. Settings.ApplicationProfileType .. ''
+ cil = cil .. ''
+ cil = cil .. ''
+ cil = cil .. '' .. user .. ''
+ cil = cil .. ''
+ cil = cil .. ''
+ cil = cil .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ cil = cil .. '' .. itemnumber .. ''
+ cil = cil .. ''
+ cil = cil .. ''
+ cil = cil .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ cil = cil .. '' .. ttype .. ''
+ cil = cil .. ''
+ cil = cil .. ''
+ cil = cil .. ''
+ return cil;
+end
+
+--CheckOutItem XML Builder for Lending
+function buildCheckOutItem()
+local dr = tostring(GetFieldValue("Transaction", "DueDate"));
+local df = string.match(dr, "%d+\/%d+\/%d+");
+local mn, dy, yr = string.match(df, "(%d+)/(%d+)/(%d+)");
+local mnt = string.format("%02d",mn);
+local dya = string.format("%02d",dy);
+local pseudopatron = 'pseudopatron';
+local itemnumber = GetFieldValue("Transaction", "ItemNumber");
+local tn = Settings.checkOutItem_RequestIdentifierValue_Prefix .. GetFieldValue("Transaction", "TransactionNumber");
+local coi = '';
+ coi = coi .. ''
+ coi = coi .. ''
+ coi = coi .. ''
+ coi = coi .. ''
+ coi = coi .. ''
+ coi = coi .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ coi = coi .. ''
+ coi = coi .. ''
+ coi = coi .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ coi = coi .. ''
+ coi = coi .. '' .. Settings.ApplicationProfileType .. ''
+ coi = coi .. ''
+ coi = coi .. ''
+ coi = coi .. '' .. pseudopatron .. ''
+ coi = coi .. ''
+ coi = coi .. ''
+ coi = coi .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ coi = coi .. '' .. itemnumber .. ''
+ coi = coi .. ''
+ coi = coi .. ''
+ coi = coi .. '' .. Settings.acceptItem_from_uniqueAgency_value .. ''
+ coi = coi .. '' .. tn .. ''
+ coi = coi .. ''
+ coi = coi .. '' .. yr .. '-' .. mnt .. '-' .. dya .. 'T23:59:00' .. ''
+ coi = coi .. ''
+ coi = coi .. ''
+ return coi;
+
+end
\ No newline at end of file
diff --git a/Config.xml b/Config.xml
old mode 100755
new mode 100644
index 3662f09..aacbcdb
--- a/Config.xml
+++ b/Config.xml
@@ -1,52 +1,55 @@
-
-
- ALMA_NCIP_Client
- Tom McNulty, VCU Libraries
- Bill Jones, IDS Project
- 2.0
- True
- System
- This system level addon allows for ILLiad to communicate with Alma via NCIP protocol.
-
-
-
- This setting value is the address for the NCIP Responder URL. For Alma this will always be https://alma.exlibrisgroup.com/view/NCIPServlet unless you are testing on a sandbox version of Alma.
-
-
- This is your institutional Alma Code.
-
-
- Input the Resource Sharing Partner code used in Alma.
-
-
- This designates the name of the queue a Borrowing Transaction will be moved to if the BorrowingAcceptItem function fails.
-
-
- This designates the name of the queue a Borrowing Transaction will be moved to if the BorrowingCheckInItem function fails.
-
-
- This designates the name of the queue a Lending Transaction will be moved to if the CheckOutItem function fails.
-
-
- This designates the name of the queue a Lending Transaction will be moved to if the CheckInItem function fails.
-
-
- When this setting is enabled, patron returns will go through ILLiad and a message is sent to Alma. When this setting is disabled, patron returns will go through ILLiad and will need to also be returned through Alma.
-
-
- Determines whether or not you want to change prefixes of a transaction based on specific criteria (below).
-
-
- This setting allows you to change the prefix of a transaction that is marked LibraryUseOnly Yes.
-
-
- This setting allows you to change the prefix of a transaction that is marked RenewalsAllowed Yes.
-
-
- This setting allows you to change the prefix of a transaction that is marked both LibraryUseOnly and RenewalsAllowed Yes.
-
-
-
- IDS_NCIP_Client.lua
-
-
\ No newline at end of file
+
+
+ ALMA_NCIP_Client
+ Tom McNulty, VCU Libraries
+ Bill Jones, IDS Project
+ 2.0
+ True
+ System
+ This system level addon allows for ILLiad to communicate with Alma via NCIP protocol.
+
+
+
+ This setting value is the address for the NCIP Responder URL. For Alma this will always be https://alma.exlibrisgroup.com/view/NCIPServlet unless you are testing on a sandbox version of Alma.
+
+
+ This is your institutional Alma Code.
+
+
+ Input the Resource Sharing Partner code used in Alma.
+
+
+ This designates the name of the queue a Borrowing Transaction will be moved to if the BorrowingAcceptItem function fails.
+
+
+ This designates the name of the queue a Borrowing Transaction will be moved to if the BorrowingCheckInItem function fails.
+
+
+ This designates the name of the queue a Lending Transaction will be moved to if the CheckOutItem function fails.
+
+
+ This designates the name of the queue a Lending Transaction will be moved to if the CheckInItem function fails.
+
+
+ When this setting is enabled, patron returns will go through ILLiad and a message is sent to Alma. When this setting is disabled, patron returns will go through ILLiad and will need to also be returned through Alma.
+
+
+ Determines whether or not you want to change prefixes of a transaction based on specific criteria (below).
+
+
+ This setting allows you to change the prefix of a transaction that is marked LibraryUseOnly Yes.
+
+
+ This setting allows you to change the prefix of a transaction that is marked RenewalsAllowed Yes.
+
+
+ This setting allows you to change the prefix of a transaction that is marked both LibraryUseOnly and RenewalsAllowed Yes.
+
+
+ Default transaction prefix for the request identifier value in NCIP calls.
+
+
+
+ ALMA_NCIP_Client.lua
+
+