Creditor
Creditor's Database
UI Name
Database
Type
Remarks
Creditor Account
accNo
String
E.g.: 401-A001
Control Account
controlAccount
String
E.g.: 400-0000
Company Name
companyName
String
E.g.: GLOBAL SHIPPING INC.
Billing Address [Line 1]
address1
String
E.g.: 123 OCEAN DRIVE
Billing Address [Line 2]
address2
String
E.g.: SUITE 200
Billing Address [Line 3]
address3
String
E.g.: MARINA BAY
Billing Address [Line 4]
address4
String
E.g.: SINGAPORE 018956
Phone [Line 1]
phone1
String
E.g.: +6512345678
Phone [Line 2]
phone2
String
E.g.: +6598765432
Attention
attention
String
E.g.: MR. TERRY
Email Address
emailAddress
String
E.g.: contact@globalshipping.com
Currency
currencyCode
String
E.g.: SGD
Credit Term
displayTerm
String
E.g.: NET 30
Creditor's Sample Code
Remember to change to the correct field before proceeding to run ANY script.
To find {fieldName}
, you are required to have access to Alpha or use Network in Developer Tools [F12]
.
import clr
clr.AddReference("Newtonsoft.Json")
clr.AddReference("System.Net")
clr.AddReference("System.IO")
from System.Text import *
from Newtonsoft.Json import *
from Newtonsoft.Json.Linq import *
from System import *
clr.AddReference("System.Drawing")
from System.Drawing import Bitmap, Image
from System.Drawing.Imaging import ImageFormat
from System.IO import MemoryStream, StreamWriter
from System.Net import WebClient
import binascii
from System import BitConverter
#search
documentList = Module('{YOUR-MODULE}').findAll({ 'Audit.UpdatedDate': { '$gt': Inputs['lastSync'] }, 'Audit.UpdatedBy': { "$ne": 'External' }, 'Dynamic.Extension.{YOUR-FIELD-ID}': True })
debug('documentList', documentList)
resultList = []
def image_to_hex(image_url):
web_client = WebClient()
image_data = web_client.DownloadData(image_url)
with MemoryStream(image_data) as image_stream:
bitmap = Bitmap(image_stream)
# Resize the image
original_width = bitmap.Width
original_height = bitmap.Height
max_width = 240.0
max_height = 240.0
# Calculate new dimensions preserving the aspect ratio
ratio = min(max_width / original_width, max_height / original_height)
new_width = int(original_width * ratio)
new_height = int(original_height * ratio)
debug('new_width', new_width)
resized_bitmap = bitmap.GetThumbnailImage(new_width, new_height, None, IntPtr.Zero)
# Convert the image to PNG (or other supported formats)
png_stream = MemoryStream()
#resized_bitmap.Save(png_stream, ImageFormat.Png)
png_bytes = png_stream.ToArray()
# Convert PNG byte array to hexadecimal string
png_hex = ''.join('{:02x}'.format(b) for b in png_bytes)
# Create RTF content with the embedded PNG image
rtf = []
rtf.append(r"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Arial;}}")
rtf.append(r"\viewkind4\uc1")
#image start
stream = MemoryStream()
resized_bitmap.Save(stream, ImageFormat.Bmp) # Save as BMP
stream.Position = 0 # Reset stream position
# Read bytes and convert to hex
img_bytes = stream.ToArray()
#debug('img_bytes', img_bytes)
#debug('here', 'here1')
#hex_string = binascii.hexlify(img_bytes).decode('ascii')
hex_string = BitConverter.ToString(img_bytes).Replace("-", "").ToLower()
# Write the RTF content to a file
return hex_string
def preparePayload(data):
payloadData = JObject()
payloadData["type"] = "APCreditor"
payloadData["payload"] = JObject()
if data['{YOUR-CREDITOR-CODE}'] != None and data['{YOUR-CREDITOR-CODE}'] != "":
payloadData["payload"]["accNo"] = data['{YOUR-CREDITOR-CODE}']
payloadData["payload"]["controlAccount"] = '400-0000'
payloadData["payload"]["companyName"] = data['{YOUR-COMPANY-NAME}']
payloadData["payload"]["address1"] = str(data['{YOUR-ADDRESS-1}'])[:40] if data['{YOUR-ADDRESS-1}'] is not None else None
payloadData["payload"]["address2"] = str(data['{YOUR-ADDRESS-2}'])[:40] if data['{YOUR-ADDRESS-2}'] is not None else None
payloadData["payload"]["address3"] = str(data['{YOUR-ADDRESS-3}'])[:40] if data['{YOUR-ADDRESS-3}'] is not None else None
payloadData["payload"]["address4"] = str(data['{YOUR-ADDRESS-4}'])[:40] if data['{YOUR-ADDRESS-4}'] is not None else None
payloadData["payload"]["phone1"] = data['{YOUR-TEL-1}']
payloadData["payload"]["phone2"] = data['{YOUR-TEL-2}']
payloadData["payload"]["attention"] = data['{YOUR-SALES-STAFF}'].ToString()
payloadData["payload"]["emailAddress"] = data["{YOUR-EMAIL-1}"]
payloadData["payload"]["currencyCode"] = data['{YOUR-TRADING-CURRENCY}'].ToString()
payloadData["payload"]["displayTerm"] = data['{YOUR-PAYMENT-TERM}'].ToString()
payloadData["LastModified"] = data.UpdatedDate
return payloadData
#end of added
for entry in documentList:
payloadData = preparePayload(entry)
resultList.append(payloadData)
#debug('payloadData', payloadData)
debug('done', resultList)
outputs['results'] = JArray.FromObject(resultList)
"Logic": [
{
"name": "{NAME}",
"enabled": false,
"server": {
"server": "{SERVER}",
"database": "{DATABASE}",
"dbUsername": "{DB_USERNAME}",
"dbPassword": "{DB_PASSWORD}",
"user": "{USERNAME}",
"password": "{PASSWORD}"
},
"debug": false,
"hook": "https://api.inistate.com/api/automationHook/hook/{MODULE-ID}-{LOGIC-NAME}",
"errorHook": "https://api.inistate.com/api/automationHook/hook/{MODULE-ID}-{LOGIC-NAME}",
"lastSync": "{LAST_SYNC_DATE_TIME}"
}
]
Last updated