Debit Note

Debit Note's Database

UI Name
Database
Type
Remarks

Debtor

debtorCode

String

E.g.: 301-Z999

D/N No

docNo

String

E.g.: DN2412-999

Date

docDate

String

E.g.: 2024-12-31T00:00:00+08:00

Description

description

String

E.g.: SALES - SI2412999 - ABCD1234 -

Inclusive

inclusiveTax

Boolean

E.g.: true

Display Term

displayTerm

String

E.g.: NET 15

Table Item

details

Array

Debit Note's Table Item

UI Name
Database
Type
Remarks

Item Code

accNo

String

E.g.: 500-9999

Description

description

String

E.g.: SERVICE CHARGES

Qty

qty

Number

E.g.: 5

UOM

uom

String

E.g.: PCS

Unit Price

unitPrice

Number

E.g.: 1234.56

SubTotal

subtotal

Number

E.g.: 6172.80

Tax Adjustment

taxAdjustment

Number

E.g.: 50

Tax Code

taxCode

String

E.g.: SV-0

Debit Note's Sample Code

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-NAME}').findAll({ 'Audit.UpdatedDate': { '$gt': Inputs['lastSync'] }, 'Audit.UpdatedBy': { "$ne": 'External' } })
debug('documentList', documentList)

resultList = []

def prepareRow(x):
    row = JObject()
    row["accNo"] = x['{YOUR-ITEM-CODE}']
    row["description"] = x['{YOUR-DESCRIPTION}']
    row["qty"] = x['{YOUR-QUANTITY}']
    row["uom"] = "N/A"
    row["unitPrice"] = x['{YOUR-UNIT-PRICE}']
    row["subtotal"] = x['{YOUR-TOTAL}']
    row["taxAdjustment"] = None
    if x["{YOUR-TAX-CODE}"].Id != 0:
        row["taxCode"] = x['{YOUR-TAX-CODE}']['{YOUR-TAX-CODE}']
        # row["taxRate"] = x['{YOUR-TAX-CODE}']['{YOUR-PERCENTAGE}'].ToString()
    return row
    
def preparePayload(data):
    payloadData = JObject()
    if data['{YOUR-IS-ARDN}'] == True:
        payloadData["type"] = "ARDN"
    else:
        payloadData["type"] = "DN"
        
    payloadData["cancelled"] = data['{YOUR-CANCELLED}']
    payloadData["payload"] = JObject()
    if data['{YOUR-CODE}'] != None and data['{YOUR-CODE}'] != 0:
        payloadData["payload"]["docKey"] = data['{YOUR-CODE}'] 
    payloadData["payload"]["debtorCode"] = data['{YOUR-COMPANY-CODE}']
    payloadData["payload"]["docNo"] = None if data['{YOUR-RUNNING-NUMBER}'] == "" or data['{YOUR-RUNNING-NUMBER}'] is None else data['{YOUR-RUNNING-NUMBER}']
    payloadData["payload"]["docDate"] = data['{YOUR-DEBIT-NOTE-DATE}']
    payloadData["payload"]["description"] = data['{YOUR-TRANSACTION-DESCRIPTION}']
    payloadData["payload"]["journalType"] = "SALES"
    payloadData["payload"]["inclusiveTax"] = True
    payloadData["payload"]["displayTerm"] = data['{YOUR-TERM}']
    payloadData["payload"]["details"] = JArray.FromObject(data['{YOUR-DETAILS}'].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)

Last updated