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-NAME}").findAll(
{
"Audit.UpdatedDate": {"$gt": Inputs["lastSync"]},
"Audit.UpdatedBy": {"$ne": "External"},
'Dynamic.Extension.{fieldName}': {'$in': [None, '']}, #Error Message
"Dynamic.Extension.{fieldName}": {"$eq" : None }, #E-Invoice Validated Date
"Dynamic.Extension.{fieldName}": {"$ne": None}, #Business logic
}
)
debug("documentList", documentList)
resultList = []
def prepareRow(x):
row = JObject()
row["itemCode"] = x["{YOUR-ITEM-CODE}"]
row["accNo"] = x["{YOUR-ACC-NO}"]
row["description"] = x["{YOUR-DESCRIPTION}"].ToString()
row["ourDONo"] = x["{YOUR-DO-NO}"]
row["uom"] = x["{YOUR-UOM}"]
row["location"] = x["{YOUR-LOCATION}"]
row["qty"] = x["{YOUR-QTY}"]
row["unitPrice"] = x["{YOUR-UNIT-PRICE}"] * x["{YOUR-EXCHANGE-RATE}"]
return row
def preparePayload(data):
payloadData = JObject()
payloadData["type"] = "ARInvoice"
payloadData["payload"] = JObject()
payloadData["cancelled"] = data["{IS-YOUR-DOC-CANCELLED}"]
payloadData["draft"] = True
payloadData["payload"]["submitEInvoice"] = True
payloadData["payload"]["debtorCode"] = data["{YOUR-DEBTOR-CODE}"]
# payloadData["payload"]["docNo"] = None if data['{YOUR-DOC-NO}'] == "" or data['{YOUR-DOC-NO}'] is None else data['{YOUR-DOC-NO}']
payloadData["payload"]["docNo"] = data.DocumentId
payloadData["payload"]["docDate"] = data["{YOUR-DOC-DATE}"]
payloadData["payload"]["salesLocation"] = data["{YOUR-SALES-LOCATION}"]
payloadData["payload"]["displayTerm"] = data["{YOUR-CREDIT-TERM}"]
payloadData["payload"]["description"] = "INVOICE"
#EInovoice start date
#if data['Invoice Date'] > DateTime(2025, 7, 1):
#payloadData["draft"] = True
#if data['E-Invoice Validated Date'] is not None:
# payloadData["draft"] = False
# if have invoice type as Tax Invoice(submit EInvoice) or Disbursement Invoice(local)
# if data['Invoice Type'] != 'Disbursement Invoice':
# payloadData["payload"]["submitEInvoice"] = True
# else:
# payloadData["payload"]["submitEInvoice"] = False
payloadData["payload"]["details"] = JArray.FromObject(
data["{YOUR-TABLE}"].Select(lambda x: prepareRow(x))
)
payloadData["LastModified"] = data.UpdatedDate
return payloadData
# end of added
for entry in documentList:
payloadData = preparePayload(entry)
if (
payloadData["payload"]["debtorCode"] != None
and payloadData["payload"]["debtorCode"] != ""
):
resultList.append(payloadData)
# debug('payloadData', payloadData)
# debug('done', resultList)
outputs["results"] = JArray.FromObject(resultList)
debug("result", resultList)