Payment
Payment's Database
UI Name
Database
Type
Remarks
Payment Table Item
UI Name
Database
Type
Remarks
Payment's Sample Code
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}": {"$ne": None},
}
)
debug("documentList", documentList)
resultList = []
# KnockOff Payment Details
# Input: one record 'x' that contains {YOUR-INVOICES}
# Output: a list with 0 or 1 JObject for payload["paymentDetails"]
def preparePaymentDetails(x):
if x["{YOUR-INVOICES}"] is None or x["{YOUR-INVOICES}"] .Count == 0:
return []
payments = x["{YOUR-INVOICES}"]
total_payment = sum(p["{YOUR-PAYMENT-AMOUNT}"] for p in payments)
row = JObject()
row["DocType"] = ["{YOUR-DOC-TYPE}"]
row["DocNo"] = payments[0]["{YOUR-DOC-NO}"] .ToString() if payments[0]["{YOUR-DOC-NO}"] else None
row["Amount"] = total_payment
row["KnockOffDate"] = x["{YOUR-DATE}"]
return [row]
# Payment Details (grouped by payment method)
# Input: one record 'x'
# Output: list of JObjects, each representing a grouped payment row
def prepareDetails(x):
result = []
if x["{YOUR-INVOICES}"] is None or x["{YOUR-INVOICES}"] .Count == 0:
return result
invoices = x["{YOUR-INVOICES}"]
payment_methods = ['CASH', 'CHEQUE', 'BANK']
for method in payment_methods:
payments = [invoices[i] for i in range(invoices.Count)
if invoices[i]["{YOUR-PAYMENT-METHOD}"] == method or (method == 'CASH' and invoices[i]["{YOUR-PAYMENT-METHOD}"] == '')]
if payments:
row = JObject()
row['paymentMethod'] = method
row['chequeNo'] = payments[0]["{YOUR-CHEQUE-NO}"] if payments and payments[0]["{YOUR-CHEQUE-NO}"] else None
row['paymentAmt'] = sum(p["{YOUR-PAYMENT-AMOUNT}"] for p in payments)
row['paymentBy'] = payments[0]["{YOUR-PAYMENT-BY}"] if payments and payments[0]["{YOUR-PAYMENT-BY}"] else ''
result.append(row)
return result if result else [JObject()]
def preparePayload(data):
payloadData = JObject()
payloadData["type"] = "ARPayment"
payloadData["payload"] = JObject()
payloadData["cancelled"] = data["{IS-YOUR-DOC-CANCELLED}"]
payloadData["payload"]["debtorCode"] = data["{YOUR-DEBTOR-CODE}"]
payloadData["payload"]["description"] = data["{YOUR-DESCRIPTION}"]
payloadData["payload"]["docNo"] = None if data['{YOUR-DOC-NO}'] == "" or data['{YOUR-DOC-NO}'] is None else data['{YOUR-DOC-NO}']
payloadData["payload"]["docNo2"] = None if data['{YOUR-DOC-NO2}'] == "" or data['{YOUR-DOC-NO2}'] is None else data['{YOUR-DOC-NO2}']
payloadData["payload"]["docDate"] = data["{YOUR-DOC-DATE}"]
payloadData["payload"]["details"] = JArray.FromObject(
prepareDetails(data)
)
payloadData["payload"]["paymentDetails"] = JArray(preparePaymentDetails(data))
payloadData["LastModified"] = data.UpdatedDate
return payloadData
# loop: build payloads for all documents
for entry in documentList:
payloadData = preparePayload(entry)
resultList.append(payloadData)
outputs["results"] = JArray.FromObject(resultList)
debug("results", resultList)Last updated