E-Invoice

E-Invoice Database

UI Name
Database
Type
Remarks

Doc Key

DocKey

String

E.g.: 1234567

Doc No

DocNo

String

E.g.: IV00001

Submit E-Invoice

SubmitEInvoice

String

E.g.: T

E-Invoice Unique Id

EInvoiceUuid

String

E.g.: A1B2C3...

EInvoice Validated Date Time

LastModified

Timestamp

E.g.: 2025-01-01T00:00:00.000

EInvoice Validation Link

EInvoiceValidationLink

String

E.g.: https://myinvois.hasil.gov.my/......

E-Invoice's Sample Code

To find {fieldName}, you are required to have access to Alpha or use Network in Developer Tools [F12].

moduleName = '{YOUR-MODULE-NAME}'
list = inputs["list"]

def data_has_change(data, input):
    formatedFormTime = format(data['E-Invoice Validated Date'], "yyyy-MM-ddTHH:mm:ss") if data['E-Invoice Validated Date'] is not None else None;
    formatedInputTime = format(input['LastModified'], "yyyy-MM-ddTHH:mm:ss")
    has_change = (
        formatedFormTime != formatedInputTime or
        data['E-Invoice Unique Id'].ToString() != input['EInvoiceUuid'].ToString() or
        data['E-Invoice Validation Link'].ToString() != input['EInvoiceValidationLink'].ToString() or
        data['E-Invoice Status'].ToString() != input['EInvoiceStatus'].ToString()
        )
    return has_change

for item in list:
    entry = Module(moduleName).find({ 
        'Dynamic.Extension.{keyField}': item['DocNo'] # Running Number
    })
    
    form = Module(moduleName).execute('sync', entry)
    
    if entry and data_has_change(entry,item):
        form['E-Invoice Validated Date'] = item['LastModified']
        form['E-Invoice Unique Id'] = item['EInvoiceUuid']
        if item['EInvoiceValidationLink'] is not None:
            sign_id = item['EInvoiceValidationLink'].ToString().split("/")[-1]
            form['E-Invoice Digital Sign Id'] = sign_id
    
        form['E-Invoice Validation Link'] = item['EInvoiceValidationLink']
        form['E-Invoice Status'] = item['EInvoiceStatus']
        Module(moduleName).submit(entry, form)

Last updated