myinvois-sdk
Version:
TypeScript SDK for interacting with the Malaysia e-invoicing system (MyInvois) API
71 lines (70 loc) • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SignedInvoice = void 0;
const base_model_1 = require("./base-model");
/**
* Represents a signed invoice
*/
class SignedInvoice extends base_model_1.BaseModel {
/**
* Creates a new signed invoice
* @param invoice The invoice to sign
* @param signatureInfo The signature information
*/
constructor(invoice, signatureInfo) {
super();
this._invoice = invoice;
this._signatureInfo = signatureInfo;
}
// Getter for invoice
get invoice() {
return this._invoice;
}
// Getter for signatureInfo
get signatureInfo() {
return this._signatureInfo;
}
/**
* Converts the signed invoice to a JSON representation
*/
toJSON() {
const invoiceJSON = this._invoice.toJSON();
// Add UBLExtensions and Signature to the invoice
invoiceJSON.Invoice[0].UBLExtensions = [
{
"UBLExtension": [
{
"ExtensionURI": [
{
"_": "urn:oasis:names:specification:ubl:dsig:enveloped:xades"
}
],
"ExtensionContent": [
{
"UBLDocumentSignatures": [
this._signatureInfo.toJSON()
]
}
]
}
]
}
];
invoiceJSON.Invoice[0].Signature = [
{
"ID": [
{
"_": "urn:oasis:names:specification:ubl:signature:Invoice"
}
],
"SignatureMethod": [
{
"_": "urn:oasis:names:specification:ubl:dsig:enveloped:xades"
}
]
}
];
return invoiceJSON;
}
}
exports.SignedInvoice = SignedInvoice;