E-Invoice
E-Invoice's Database
UI Name
Database
Type
Remarks
Doc No
TBL.DOCNOString
E.g.: IV00001
E-Invoice Validated Date
E.TRANSDATETIMEDate
E.g.: 2025-01-01
E-Invoice Unique Id
TBL.IRBM_UUIDString
E.g.: A1B2C3...
E-Invoice Digital Sign Id
TBL.IRBM_LONGIDString
E.g.: Z9Y8X7...
E-Invoice Validation Link
validation_linkString
E.g.: https://myinvois.hasil.gov.my/......
E-Invoice Status
E.STATUSString
E.g.: Valid
Last Modified
E.TRANSDATETIMETimestamp
E.g.: 2025-01-01T00:00:00.000
E-Invoice's Sample Code
Remember to change to the correct field before proceeding to run ANY script.
SELECT
TBL.DOCNO AS DocNo,//IV,CN,DN
E.TRANSDATETIME AS EInvoiceValidateDate,
TBL.IRBM_UUID AS EInvoiceUUID,
TBL.IRBM_LONGID AS EInvoiceLongID,
E.STATUS AS EInvoiceStatus,
E.TRANSDATETIME AS LastModified
FROM
{YOUR_DOC_TABLE} TBL
JOIN EIV E
ON TBL.DOCKEY = E.DOCKEY //MATCH
WHERE
E.DOCTYPE = '{YOUR_DOCTYPE}' //IV,CN,DN
AND E.STATUS = {STATUS_CODE} // 2
AND E.TRANSDATETIME >{LAST_MODIFIED_DATE_TIME};In order to sync, you must include LastModified in SELECT
"SQLSync": [
{
"name": "Invoice- EInvoiceSyncBack",
"enabled": true,
"server": {
"db": "{DATABASE_FILENAME}",
"dcf": "C:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF",
"username": "ADMIN",
"password": "ADMIN"
},
"from": "sqlaccounting",
"hook": "https://api.inistate.com/api/automationHook/hook/{MODULE-ID}-{LOGIC-NAME}",
"sql": "SELECT \r\n TBL.DOCNO AS DocNo,\r\n E.TRANSDATETIME AS EInvoiceValidateDate,\r\n TBL.IRBM_UUID AS EInvoiceUUID,\r\n TBL.IRBM_LONGID AS EInvoiceLongID,\r\n E.STATUS AS EInvoiceStatus,\r\n E.TRANSDATETIME AS LastModified\r\nFROM \r\n {YOUR_DOC_TABLE} TBL\r\nJOIN EIV E \r\n ON TBL.DOCKEY = E.DOCKEY\r\nWHERE \r\n E.DOCTYPE = '{YOUR_DOCTYPE}' \r\n AND E.STATUS = {STATUS_CODE} \r\n AND E.TRANSDATETIME > @date\r\n;\r\n",
"lastSync": "{LAST-SYNC-DATE-TIME}",
}
]
moduleName = 'Invoice'
list = inputs["list"]
for item in list:
entry = Module(moduleName).find({
'Dynamic.Extension.{keyField}': item['DOCNO']
})
form = Module(moduleName).execute('sync', entry)
if entry:
# convert time
dt = DateTime.ParseExact(item['LASTMODIFIED'].ToString(),"d/M/yyyy h:mm:ss tt",None)
iso_ts = dt.ToString("yyyy-MM-ddTHH:mm:ss")
form['E-Invoice Validated Date'] = iso_ts
form['E-Invoice Unique Id'] = item['EINVOICEUUID']
form['E-Invoice Digital Sign Id'] = item['EINVOICELONGID']
# Always build the validation link using UUID and LongID
validation_link = "https://myinvois.hasil.gov.my/{0}/share/{1}".format(
item['EINVOICEUUID'], item['EINVOICELONGID']
)
form['E-Invoice Validation Link'] = validation_link
if item['EINVOICESTATUS'] == {STATUS_CODE}:
form['E-Invoice Status'] = '{STATUS}'
Module(moduleName).submit(entry, form)
Last updated