UNPKG

falcotura-atv-sdk

Version:

Librería (SDK) de Javascript/NodeJS para acceder al API de Administración Tributaria Virtual (ATV) del Ministerio de Hacienda.

70 lines 3.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateDocFactory = void 0; const Person_1 = require("./Person"); const OrderLine_1 = require("./OrderLine"); const FullConsecutive_1 = require("./FullConsecutive"); const Document_1 = require("./Document"); const Clave_1 = require("./Clave"); const DocumentType_1 = require("./DocumentType"); const ReferenceInformation_1 = require("./ReferenceInformation"); const dateUtils_1 = require("../../utils/dateUtils"); class CreateDocFactory { createDocument(document) { const documentType = DocumentType_1.DocumentType.create(document.documentName); const clave = this.createClave(document, documentType); const fullConsective = this.createFullConsecutive(document, documentType); const orderLines = this.createOrderLines(document); return Document_1.Document.create({ clave, fullConsecutive: fullConsective, orderLines, providerId: document.providerId, issueDate: (0, dateUtils_1.createIssueDate)(), emitter: Person_1.Person.create(document.emitter), receiver: document.receiver ? Person_1.Person.create(document.receiver) : undefined, conditionSale: document.conditionSale, paymentMethod: document.paymentMethod, referenceInformation: document.referenceInfo ? ReferenceInformation_1.ReferenceInformation.create(document.referenceInfo) : undefined, currencyCode: document.currencyCode, exchangeRate: document.exchangeRate }); } createOrderLines(dto) { return dto.orderLines.map((orderLine, index) => { return OrderLine_1.OrderLine.create({ detail: orderLine.detail, unitaryPrice: orderLine.unitaryPrice, lineNumber: orderLine.lineNumber || (index + 1).toString(), code: orderLine.code, quantity: orderLine.quantity, measureUnit: orderLine.measureUnit, totalAmount: orderLine.totalAmount, tax: orderLine.tax }); }); } createFullConsecutive(dto, docType) { return FullConsecutive_1.FullConsecutive.create({ consecutiveIdentifier: dto.consecutiveIdentifier, branch: dto.branch.padStart(3, '0'), terminal: dto.terminal.padStart(5, '0'), documentType: docType.value }); } createClave(dto, docType) { return Clave_1.Clave.create({ branch: dto.branch, ceSituation: dto.ceSituation, consecutiveIdentifier: dto.consecutiveIdentifier, countryCode: dto.countryCode, docKeyType: docType.value, emitterIdentifier: dto.emitter.identifier.id, identifierType: dto.emitter.identifier.type || '01', securityCode: dto.securityCode, terminal: dto.terminal }); } } exports.CreateDocFactory = CreateDocFactory; //# sourceMappingURL=CreateDocFactory.js.map