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
JavaScript
;
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