@acontplus/ng-customer 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/fesm2022/acontplus-ng-customer.mjs +802 -795
- package/fesm2022/acontplus-ng-customer.mjs.map +1 -1
- package/package.json +12 -11
- package/types/acontplus-ng-customer.d.ts +245 -0
- package/index.d.ts +0 -288
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acontplus-ng-customer.mjs","sources":["../tmp-esm2022/lib/application/use-cases/customer-use-case.js","../tmp-esm2022/lib/application/use-cases/customer-external-use-case.js","../tmp-esm2022/lib/infrastructure/constants/customer.constants.js","../tmp-esm2022/lib/infrastructure/mappers/company-search-mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-create-update-mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-form-data-mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-get-by-id-mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-list-mapper.js","../tmp-esm2022/lib/infrastructure/repositories/customer-external-http-repository.js","../tmp-esm2022/lib/infrastructure/repositories/customer-http-repository.js","../tmp-esm2022/lib/ui/components/customer-add-edit/customer-add-edit-dialog.js","../tmp-esm2022/lib/ui/components/customer-card/customer-card.js","../tmp-esm2022/acontplus-ng-customer.js"],"sourcesContent":["export class CustomerUseCase {\n repo;\n constructor(repo) {\n this.repo = repo;\n }\n getAll(params) {\n return this.repo.getAll(params);\n }\n getFormData() {\n return this.repo.getFormData();\n }\n getById(id) {\n return this.repo.getById(id);\n }\n checkExistence(identificationNumber) {\n return this.repo.checkExistence(identificationNumber);\n }\n create(params) {\n return this.repo.create(params);\n }\n update(params) {\n return this.repo.update(params);\n }\n updateState(id) {\n return this.repo.updateState(id);\n }\n search(filter) {\n return this.repo.search(filter);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdXNlLWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9jdXN0b21lci11c2UtY2FzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZUFBZTtJQUNOO0lBQXBCLFlBQW9CLElBQXdCO1FBQXhCLFNBQUksR0FBSixJQUFJLENBQW9CO0lBQUcsQ0FBQztJQUVoRCxNQUFNLENBQUMsTUFBVztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLENBQUMsRUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUMsb0JBQTRCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXNCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tZXJSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEN1c3RvbWVyU2VhcmNoIH0gZnJvbSAnLi4vLi4vZG9tYWluL21vZGVscy9jdXN0b21lci1zZWFyY2gnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJVc2VDYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXBvOiBDdXN0b21lclJlcG9zaXRvcnkpIHt9XG5cbiAgZ2V0QWxsKHBhcmFtczogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5nZXRBbGwocGFyYW1zKTtcbiAgfVxuICBnZXRGb3JtRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmdldEZvcm1EYXRhKCk7XG4gIH1cblxuICBnZXRCeUlkKGlkOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmdldEJ5SWQoaWQpO1xuICB9XG5cbiAgY2hlY2tFeGlzdGVuY2UoaWRlbnRpZmljYXRpb25OdW1iZXI6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJlcG8uY2hlY2tFeGlzdGVuY2UoaWRlbnRpZmljYXRpb25OdW1iZXIpO1xuICB9XG5cbiAgY3JlYXRlKHBhcmFtczogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5jcmVhdGUocGFyYW1zKTtcbiAgfVxuXG4gIHVwZGF0ZShwYXJhbXM6IGFueSkge1xuICAgIHJldHVybiB0aGlzLnJlcG8udXBkYXRlKHBhcmFtcyk7XG4gIH1cblxuICB1cGRhdGVTdGF0ZShpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby51cGRhdGVTdGF0ZShpZCk7XG4gIH1cblxuICBzZWFyY2goZmlsdGVyOiBDdXN0b21lclNlYXJjaCkge1xuICAgIHJldHVybiB0aGlzLnJlcG8uc2VhcmNoKGZpbHRlcik7XG4gIH1cbn1cbiJdfQ==","import { IdentificationNumberVo } from '@acontplus/core';\nexport class CustomerExternalUseCase {\n repo;\n constructor(repo) {\n this.repo = repo;\n }\n getById(identification) {\n const idNumber = new IdentificationNumberVo(identification);\n return this.repo.getById(idNumber);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZXh0ZXJuYWwtdXNlLWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9jdXN0b21lci1leHRlcm5hbC11c2UtY2FzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2Q7SUFBcEIsWUFBb0IsSUFBZ0M7UUFBaEMsU0FBSSxHQUFKLElBQUksQ0FBNEI7SUFBRyxDQUFDO0lBRXhELE9BQU8sQ0FBQyxjQUFzQjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tZXJFeHRlcm5hbFJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9kb21haW4vcmVwb3NpdG9yaWVzJztcbmltcG9ydCB7IElkZW50aWZpY2F0aW9uTnVtYmVyVm8gfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJFeHRlcm5hbFVzZUNhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcG86IEN1c3RvbWVyRXh0ZXJuYWxSZXBvc2l0b3J5KSB7fVxuXG4gIGdldEJ5SWQoaWRlbnRpZmljYXRpb246IHN0cmluZykge1xuICAgIGNvbnN0IGlkTnVtYmVyID0gbmV3IElkZW50aWZpY2F0aW9uTnVtYmVyVm8oaWRlbnRpZmljYXRpb24pO1xuICAgIHJldHVybiB0aGlzLnJlcG8uZ2V0QnlJZChpZE51bWJlcik7XG4gIH1cbn1cbiJdfQ==","export const CUSTOMER_API = {\n BILLING: 'customers',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXIuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9jb25zdGFudHMvY3VzdG9tZXIuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixPQUFPLEVBQUUsV0FBVztDQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENVU1RPTUVSX0FQSSA9IHtcbiAgQklMTElORzogJ2N1c3RvbWVycycsXG59O1xuIl19","export class CompanySearchMapper {\n static toJson(params) {\n return JSON.stringify({\n textSearch: params.search,\n });\n }\n static fromJson(response) {\n let customers = [];\n if (response && response.code === '1') {\n const results = JSON.parse(response.payload) || [];\n customers = results.map((item) => ({\n id: item.idCliente,\n identificationTypeId: item.idTipoIdentificacion,\n creditTimeId: item.idTiempoCredito,\n customerId: item.customerId,\n status: item.estado,\n email: item.correo,\n phone: item.telefono,\n address: item.direccion,\n licensePlate: item.placa,\n creditDays: item.diasCredito,\n sriValidation: item.validationSri,\n businessName: item.nombreFiscal,\n tradeName: item.nombreComercial,\n identificationNumber: item.numeroIdentificacion,\n identificationType: item.tipoIdentificacion,\n sriCode: item.codigoSri,\n companyRuc: item.rucEmpresa,\n companyId: item.companyId,\n name: item.nombreFiscal,\n }));\n }\n return customers;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1zZWFyY2gtbWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9tYXBwZXJzL2NvbXBhbnktc2VhcmNoLW1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBc0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFhO1FBQzNCLElBQUksU0FBUyxHQUFVLEVBQUUsQ0FBQztRQUUxQixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFN0QsU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDbEIsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtnQkFDL0MsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUNsQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDdkIsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUN4QixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzVCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDakMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQy9CLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7Z0JBQy9DLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7Z0JBQzNDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWTthQUN4QixDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21lclNlYXJjaCB9IGZyb20gJy4uLy4uL2RvbWFpbi9tb2RlbHMvY3VzdG9tZXItc2VhcmNoJztcblxuZXhwb3J0IGNsYXNzIENvbXBhbnlTZWFyY2hNYXBwZXIge1xuICBzdGF0aWMgdG9Kc29uKHBhcmFtczogQ3VzdG9tZXJTZWFyY2gpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdGV4dFNlYXJjaDogcGFyYW1zLnNlYXJjaCxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihyZXNwb25zZTogYW55KSB7XG4gICAgbGV0IGN1c3RvbWVyczogYW55W10gPSBbXTtcblxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5jb2RlID09PSAnMScpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBKU09OLnBhcnNlKHJlc3BvbnNlLnBheWxvYWQgYXMgc3RyaW5nKSB8fCBbXTtcblxuICAgICAgY3VzdG9tZXJzID0gcmVzdWx0cy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgaWQ6IGl0ZW0uaWRDbGllbnRlLFxuICAgICAgICBpZGVudGlmaWNhdGlvblR5cGVJZDogaXRlbS5pZFRpcG9JZGVudGlmaWNhY2lvbixcbiAgICAgICAgY3JlZGl0VGltZUlkOiBpdGVtLmlkVGllbXBvQ3JlZGl0byxcbiAgICAgICAgY3VzdG9tZXJJZDogaXRlbS5jdXN0b21lcklkLFxuICAgICAgICBzdGF0dXM6IGl0ZW0uZXN0YWRvLFxuICAgICAgICBlbWFpbDogaXRlbS5jb3JyZW8sXG4gICAgICAgIHBob25lOiBpdGVtLnRlbGVmb25vLFxuICAgICAgICBhZGRyZXNzOiBpdGVtLmRpcmVjY2lvbixcbiAgICAgICAgbGljZW5zZVBsYXRlOiBpdGVtLnBsYWNhLFxuICAgICAgICBjcmVkaXREYXlzOiBpdGVtLmRpYXNDcmVkaXRvLFxuICAgICAgICBzcmlWYWxpZGF0aW9uOiBpdGVtLnZhbGlkYXRpb25TcmksXG4gICAgICAgIGJ1c2luZXNzTmFtZTogaXRlbS5ub21icmVGaXNjYWwsXG4gICAgICAgIHRyYWRlTmFtZTogaXRlbS5ub21icmVDb21lcmNpYWwsXG4gICAgICAgIGlkZW50aWZpY2F0aW9uTnVtYmVyOiBpdGVtLm51bWVyb0lkZW50aWZpY2FjaW9uLFxuICAgICAgICBpZGVudGlmaWNhdGlvblR5cGU6IGl0ZW0udGlwb0lkZW50aWZpY2FjaW9uLFxuICAgICAgICBzcmlDb2RlOiBpdGVtLmNvZGlnb1NyaSxcbiAgICAgICAgY29tcGFueVJ1YzogaXRlbS5ydWNFbXByZXNhLFxuICAgICAgICBjb21wYW55SWQ6IGl0ZW0uY29tcGFueUlkLFxuICAgICAgICBuYW1lOiBpdGVtLm5vbWJyZUZpc2NhbCxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VzdG9tZXJzO1xuICB9XG59XG4iXX0=","import { DateFormatter, getValidId, isValidField } from '@acontplus/utils';\nexport class CustomerCreateUpdateMapper {\n static toJson(param) {\n return {\n idCliente: getValidId(param.idCliente),\n idEmpleado: getValidId(param.idEmpleado),\n idTipoIdentificacion: param.idTipoIdentificacion,\n idTipoClienteProveedor: getValidId(param.idTipoClienteProveedor),\n idTipoEntidad: getValidId(param.idTipoEntidad),\n idCiudad: getValidId(param.idCiudad),\n idSubContribuyente: getValidId(param.idSubContribuyente),\n idTiempoCredito: getValidId(param.idTiempoCredito),\n idEmpresa: getValidId(param.idEmpresa),\n idCargo: getValidId(param.idCargo),\n numeroIdentificacion: param.numeroIdentificacion,\n nombreFiscal: param.nombreFiscal,\n nombreComercial: param.nombreComercial,\n direccion: isValidField(param.direccion),\n telefono: isValidField(param.telefono),\n correo: isValidField(param.correo),\n placa: isValidField(param.placa),\n montoCredito: isValidField(param.montoCredito),\n nota: isValidField(param.nota),\n validationSri: param.validationSri,\n idFormaPagoSri: getValidId(param.idFormaPagoSri),\n estado: param.estado ?? true,\n infoCrediticia: param.dataInfoCred && JSON.stringify(param.dataInfoCred),\n configValorBruto: param.configValorBruto ?? null,\n birthDate: DateFormatter.isValid(param.birthDate)\n ? DateFormatter.toUTCString(param.birthDate)\n : null,\n };\n }\n static fromJson(response) {\n if (!response)\n return response;\n const result = {\n id: 0,\n };\n if (response.code === '1' && typeof response.payload === 'string') {\n try {\n const parsed = JSON.parse(response.payload);\n if (Array.isArray(parsed) && parsed.length > 0) {\n const { idCliente } = parsed[0];\n result.id = idCliente;\n }\n }\n catch (error) {\n console.error('Error parsing payload JSON:', error);\n }\n }\n return result;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItY3JlYXRlLXVwZGF0ZS1tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2luZnJhc3RydWN0dXJlL21hcHBlcnMvY3VzdG9tZXItY3JlYXRlLXVwZGF0ZS1tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0UsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQVU7UUFDdEIsT0FBTztZQUNMLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQW1CLENBQUM7WUFDaEQsVUFBVSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBb0IsQ0FBQztZQUNsRCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CO1lBQ2hELHNCQUFzQixFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7WUFDaEUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQzlDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNwQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1lBQ3hELGVBQWUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUNsRCxTQUFTLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDdEMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2xDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7WUFDaEQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtZQUN0QyxTQUFTLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDeEMsUUFBUSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ3RDLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDaEMsWUFBWSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQzlDLElBQUksRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM5QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQ2hELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUk7WUFDNUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ3hFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO1lBQ2hELFNBQVMsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQy9DLENBQUMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQzVDLENBQUMsQ0FBQyxJQUFJO1NBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQWE7UUFDM0IsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRztZQUNiLEVBQUUsRUFBRSxDQUFDO1NBQ04sQ0FBQztRQUVGLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksT0FBTyxRQUFRLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQy9DLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVGb3JtYXR0ZXIsIGdldFZhbGlkSWQsIGlzVmFsaWRGaWVsZCB9IGZyb20gJ0BhY29udHBsdXMvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJDcmVhdGVVcGRhdGVNYXBwZXIge1xuICBzdGF0aWMgdG9Kc29uKHBhcmFtOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWRDbGllbnRlOiBnZXRWYWxpZElkKHBhcmFtLmlkQ2xpZW50ZSBhcyBudW1iZXIpLFxuICAgICAgaWRFbXBsZWFkbzogZ2V0VmFsaWRJZChwYXJhbS5pZEVtcGxlYWRvIGFzIG51bWJlciksXG4gICAgICBpZFRpcG9JZGVudGlmaWNhY2lvbjogcGFyYW0uaWRUaXBvSWRlbnRpZmljYWNpb24sXG4gICAgICBpZFRpcG9DbGllbnRlUHJvdmVlZG9yOiBnZXRWYWxpZElkKHBhcmFtLmlkVGlwb0NsaWVudGVQcm92ZWVkb3IpLFxuICAgICAgaWRUaXBvRW50aWRhZDogZ2V0VmFsaWRJZChwYXJhbS5pZFRpcG9FbnRpZGFkKSxcbiAgICAgIGlkQ2l1ZGFkOiBnZXRWYWxpZElkKHBhcmFtLmlkQ2l1ZGFkKSxcbiAgICAgIGlkU3ViQ29udHJpYnV5ZW50ZTogZ2V0VmFsaWRJZChwYXJhbS5pZFN1YkNvbnRyaWJ1eWVudGUpLFxuICAgICAgaWRUaWVtcG9DcmVkaXRvOiBnZXRWYWxpZElkKHBhcmFtLmlkVGllbXBvQ3JlZGl0byksXG4gICAgICBpZEVtcHJlc2E6IGdldFZhbGlkSWQocGFyYW0uaWRFbXByZXNhKSxcbiAgICAgIGlkQ2FyZ286IGdldFZhbGlkSWQocGFyYW0uaWRDYXJnbyksXG4gICAgICBudW1lcm9JZGVudGlmaWNhY2lvbjogcGFyYW0ubnVtZXJvSWRlbnRpZmljYWNpb24sXG4gICAgICBub21icmVGaXNjYWw6IHBhcmFtLm5vbWJyZUZpc2NhbCxcbiAgICAgIG5vbWJyZUNvbWVyY2lhbDogcGFyYW0ubm9tYnJlQ29tZXJjaWFsLFxuICAgICAgZGlyZWNjaW9uOiBpc1ZhbGlkRmllbGQocGFyYW0uZGlyZWNjaW9uKSxcbiAgICAgIHRlbGVmb25vOiBpc1ZhbGlkRmllbGQocGFyYW0udGVsZWZvbm8pLFxuICAgICAgY29ycmVvOiBpc1ZhbGlkRmllbGQocGFyYW0uY29ycmVvKSxcbiAgICAgIHBsYWNhOiBpc1ZhbGlkRmllbGQocGFyYW0ucGxhY2EpLFxuICAgICAgbW9udG9DcmVkaXRvOiBpc1ZhbGlkRmllbGQocGFyYW0ubW9udG9DcmVkaXRvKSxcbiAgICAgIG5vdGE6IGlzVmFsaWRGaWVsZChwYXJhbS5ub3RhKSxcbiAgICAgIHZhbGlkYXRpb25Tcmk6IHBhcmFtLnZhbGlkYXRpb25TcmksXG4gICAgICBpZEZvcm1hUGFnb1NyaTogZ2V0VmFsaWRJZChwYXJhbS5pZEZvcm1hUGFnb1NyaSksXG4gICAgICBlc3RhZG86IHBhcmFtLmVzdGFkbyA/PyB0cnVlLFxuICAgICAgaW5mb0NyZWRpdGljaWE6IHBhcmFtLmRhdGFJbmZvQ3JlZCAmJiBKU09OLnN0cmluZ2lmeShwYXJhbS5kYXRhSW5mb0NyZWQpLFxuICAgICAgY29uZmlnVmFsb3JCcnV0bzogcGFyYW0uY29uZmlnVmFsb3JCcnV0byA/PyBudWxsLFxuICAgICAgYmlydGhEYXRlOiBEYXRlRm9ybWF0dGVyLmlzVmFsaWQocGFyYW0uYmlydGhEYXRlKVxuICAgICAgICA/IERhdGVGb3JtYXR0ZXIudG9VVENTdHJpbmcocGFyYW0uYmlydGhEYXRlKVxuICAgICAgICA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihyZXNwb25zZTogYW55KTogYW55IHtcbiAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm4gcmVzcG9uc2U7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgaWQ6IDAsXG4gICAgfTtcblxuICAgIGlmIChyZXNwb25zZS5jb2RlID09PSAnMScgJiYgdHlwZW9mIHJlc3BvbnNlLnBheWxvYWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJlc3BvbnNlLnBheWxvYWQpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWQpICYmIHBhcnNlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgeyBpZENsaWVudGUgfSA9IHBhcnNlZFswXTtcbiAgICAgICAgICByZXN1bHQuaWQgPSBpZENsaWVudGU7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgcGF5bG9hZCBKU09OOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=","export class CustomerFormDataMapper {\n static toJson() {\n return JSON.stringify({\n tipo: 2,\n });\n }\n static fromJson(response) {\n const result = {};\n if (response.code === '1') {\n const mainData = JSON.parse(response.payload);\n result.tipoIdentificacion = mainData[0];\n result.tipoContribuyentes = mainData[1];\n result.tiempoCreditos = mainData[2] || [];\n const ciudades = mainData[3];\n result.ciudades = ciudades.reduce((acc, ciudade) => {\n const dataExists = acc.find((c) => c.idProvincia === ciudade.idProvincia);\n if (!dataExists) {\n acc.push({\n idProvincia: ciudade.idProvincia,\n nombre: ciudade.provincia,\n ciudades: [\n {\n idCiudad: ciudade.idCiudad,\n nombre: ciudade.ciudad,\n },\n ],\n });\n }\n else {\n dataExists.ciudades.push({\n idCiudad: ciudade.idCiudad,\n nombre: ciudade.ciudad,\n });\n }\n return acc;\n }, []);\n result.tiposCliente = mainData[4] || [];\n result.empresas = mainData[5] || [];\n result.cargos = mainData[6] || [];\n result.formasPagoSri = mainData[7] || [];\n result.housingTypes = mainData[8] || [];\n result.maritalStatuses = mainData[9] || [];\n result.employees = mainData[10] || [];\n }\n return result;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZm9ybS1kYXRhLW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvaW5mcmFzdHJ1Y3R1cmUvbWFwcGVycy9jdXN0b21lci1mb3JtLWRhdGEtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFhO1FBQzNCLE1BQU0sTUFBTSxHQUFHLEVBQVMsQ0FBQztRQUN6QixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBaUIsQ0FBQyxDQUFDO1lBRXhELE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxNQUFNLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTdCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxPQUFZLEVBQUUsRUFBRTtnQkFDM0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQy9FLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDaEIsR0FBRyxDQUFDLElBQUksQ0FBQzt3QkFDUCxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7d0JBQ2hDLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUzt3QkFDekIsUUFBUSxFQUFFOzRCQUNSO2dDQUNFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQ0FDMUIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNOzZCQUN2Qjt5QkFDRjtxQkFDRixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO3dCQUN2QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7d0JBQzFCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtxQkFDdkIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUUsRUFBUyxDQUFDLENBQUM7WUFFZCxNQUFNLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekMsTUFBTSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQyxNQUFNLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDdXN0b21lckZvcm1EYXRhTWFwcGVyIHtcbiAgc3RhdGljIHRvSnNvbigpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdGlwbzogMixcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihyZXNwb25zZTogYW55KSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge30gYXMgYW55O1xuICAgIGlmIChyZXNwb25zZS5jb2RlID09PSAnMScpIHtcbiAgICAgIGNvbnN0IG1haW5EYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZS5wYXlsb2FkIGFzIHN0cmluZyk7XG5cbiAgICAgIHJlc3VsdC50aXBvSWRlbnRpZmljYWNpb24gPSBtYWluRGF0YVswXTtcbiAgICAgIHJlc3VsdC50aXBvQ29udHJpYnV5ZW50ZXMgPSBtYWluRGF0YVsxXTtcbiAgICAgIHJlc3VsdC50aWVtcG9DcmVkaXRvcyA9IG1haW5EYXRhWzJdIHx8IFtdO1xuICAgICAgY29uc3QgY2l1ZGFkZXMgPSBtYWluRGF0YVszXTtcblxuICAgICAgcmVzdWx0LmNpdWRhZGVzID0gY2l1ZGFkZXMucmVkdWNlKChhY2M6IGFueSwgY2l1ZGFkZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGFFeGlzdHMgPSBhY2MuZmluZCgoYzogYW55KSA9PiBjLmlkUHJvdmluY2lhID09PSBjaXVkYWRlLmlkUHJvdmluY2lhKTtcbiAgICAgICAgaWYgKCFkYXRhRXhpc3RzKSB7XG4gICAgICAgICAgYWNjLnB1c2goe1xuICAgICAgICAgICAgaWRQcm92aW5jaWE6IGNpdWRhZGUuaWRQcm92aW5jaWEsXG4gICAgICAgICAgICBub21icmU6IGNpdWRhZGUucHJvdmluY2lhLFxuICAgICAgICAgICAgY2l1ZGFkZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkQ2l1ZGFkOiBjaXVkYWRlLmlkQ2l1ZGFkLFxuICAgICAgICAgICAgICAgIG5vbWJyZTogY2l1ZGFkZS5jaXVkYWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGFFeGlzdHMuY2l1ZGFkZXMucHVzaCh7XG4gICAgICAgICAgICBpZENpdWRhZDogY2l1ZGFkZS5pZENpdWRhZCxcbiAgICAgICAgICAgIG5vbWJyZTogY2l1ZGFkZS5jaXVkYWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdIGFzIGFueSk7XG5cbiAgICAgIHJlc3VsdC50aXBvc0NsaWVudGUgPSBtYWluRGF0YVs0XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5lbXByZXNhcyA9IG1haW5EYXRhWzVdIHx8IFtdO1xuICAgICAgcmVzdWx0LmNhcmdvcyA9IG1haW5EYXRhWzZdIHx8IFtdO1xuICAgICAgcmVzdWx0LmZvcm1hc1BhZ29TcmkgPSBtYWluRGF0YVs3XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5ob3VzaW5nVHlwZXMgPSBtYWluRGF0YVs4XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5tYXJpdGFsU3RhdHVzZXMgPSBtYWluRGF0YVs5XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5lbXBsb3llZXMgPSBtYWluRGF0YVsxMF0gfHwgW107XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==","import { SEPARADORES_REGEX } from '@acontplus/core';\nimport { parseJSONSafe } from '@acontplus/utils';\nexport class CustomerGetByIdMapper {\n static fromJson(response) {\n if (response.code !== '1' || !response.payload) {\n return {};\n }\n const data = JSON.parse(response.payload)[0];\n return {\n idCliente: data.idCliente,\n idTipoClienteProveedor: data.idTipoClienteProveedor,\n idTipoEntidad: data.idTipoEntidad,\n idSubContribuyente: data.idSubContribuyente,\n idTiempoCredito: data.idTiempoCredito,\n idTipoIdentificacion: data.idTipoIdentificacion,\n idCiudad: data.idCiudad,\n numeroIdentificacion: data.numeroIdentificacion,\n identificacionComprador: data.numeroIdentificacion,\n razonSocialComprador: data.nombreFiscal,\n nombreFiscal: data.nombreFiscal,\n montoCredito: data.montoCredito,\n nombreComercial: data.nombreComercial,\n direccion: data.direccion,\n telefono: data.telefono,\n correo: data.correo,\n estado: data.estado,\n idEmpleado: data.idEmpleado,\n diasCredito: data.diasCredito,\n empleado: data.empleado,\n idEmpresa: data.idEmpresa,\n idCargo: data.idCargo,\n placa: data.placa,\n validationSri: data.validationSri,\n codigoSri: data.codigoSri,\n correos: data.correo ? data.correo.split(SEPARADORES_REGEX) : [],\n telefonos: data.telefono ? data.telefono.split(SEPARADORES_REGEX) : [],\n placas: data.placa ? data.placa.split(SEPARADORES_REGEX) : [],\n idFormaPagoSri: data.idFormaPagoSri,\n dataInfoCred: parseJSONSafe(data.infoCrediticia, {}),\n nota: data.nota?.trim() ?? '',\n configValorBruto: data.configValorBruto ?? false,\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZ2V0LWJ5LWlkLW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvaW5mcmFzdHJ1Y3R1cmUvbWFwcGVycy9jdXN0b21lci1nZXQtYnktaWQtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBYTtRQUMzQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9DLE9BQU8sRUFBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3QyxPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDbkQsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDL0MsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDL0MsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtZQUNsRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN2QyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0RSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3RCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUNwRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLO1NBQ2pELENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTRVBBUkFET1JFU19SRUdFWCB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5pbXBvcnQgeyBwYXJzZUpTT05TYWZlIH0gZnJvbSAnQGFjb250cGx1cy91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21lckdldEJ5SWRNYXBwZXIge1xuICBzdGF0aWMgZnJvbUpzb24ocmVzcG9uc2U6IGFueSkge1xuICAgIGlmIChyZXNwb25zZS5jb2RlICE9PSAnMScgfHwgIXJlc3BvbnNlLnBheWxvYWQpIHtcbiAgICAgIHJldHVybiB7fSBhcyBhbnk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2UucGF5bG9hZClbMF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWRDbGllbnRlOiBkYXRhLmlkQ2xpZW50ZSxcbiAgICAgIGlkVGlwb0NsaWVudGVQcm92ZWVkb3I6IGRhdGEuaWRUaXBvQ2xpZW50ZVByb3ZlZWRvcixcbiAgICAgIGlkVGlwb0VudGlkYWQ6IGRhdGEuaWRUaXBvRW50aWRhZCxcbiAgICAgIGlkU3ViQ29udHJpYnV5ZW50ZTogZGF0YS5pZFN1YkNvbnRyaWJ1eWVudGUsXG4gICAgICBpZFRpZW1wb0NyZWRpdG86IGRhdGEuaWRUaWVtcG9DcmVkaXRvLFxuICAgICAgaWRUaXBvSWRlbnRpZmljYWNpb246IGRhdGEuaWRUaXBvSWRlbnRpZmljYWNpb24sXG4gICAgICBpZENpdWRhZDogZGF0YS5pZENpdWRhZCxcbiAgICAgIG51bWVyb0lkZW50aWZpY2FjaW9uOiBkYXRhLm51bWVyb0lkZW50aWZpY2FjaW9uLFxuICAgICAgaWRlbnRpZmljYWNpb25Db21wcmFkb3I6IGRhdGEubnVtZXJvSWRlbnRpZmljYWNpb24sXG4gICAgICByYXpvblNvY2lhbENvbXByYWRvcjogZGF0YS5ub21icmVGaXNjYWwsXG4gICAgICBub21icmVGaXNjYWw6IGRhdGEubm9tYnJlRmlzY2FsLFxuICAgICAgbW9udG9DcmVkaXRvOiBkYXRhLm1vbnRvQ3JlZGl0byxcbiAgICAgIG5vbWJyZUNvbWVyY2lhbDogZGF0YS5ub21icmVDb21lcmNpYWwsXG4gICAgICBkaXJlY2Npb246IGRhdGEuZGlyZWNjaW9uLFxuICAgICAgdGVsZWZvbm86IGRhdGEudGVsZWZvbm8sXG4gICAgICBjb3JyZW86IGRhdGEuY29ycmVvLFxuICAgICAgZXN0YWRvOiBkYXRhLmVzdGFkbyxcbiAgICAgIGlkRW1wbGVhZG86IGRhdGEuaWRFbXBsZWFkbyxcbiAgICAgIGRpYXNDcmVkaXRvOiBkYXRhLmRpYXNDcmVkaXRvLFxuICAgICAgZW1wbGVhZG86IGRhdGEuZW1wbGVhZG8sXG4gICAgICBpZEVtcHJlc2E6IGRhdGEuaWRFbXByZXNhLFxuICAgICAgaWRDYXJnbzogZGF0YS5pZENhcmdvLFxuICAgICAgcGxhY2E6IGRhdGEucGxhY2EsXG4gICAgICB2YWxpZGF0aW9uU3JpOiBkYXRhLnZhbGlkYXRpb25TcmksXG4gICAgICBjb2RpZ29Tcmk6IGRhdGEuY29kaWdvU3JpLFxuICAgICAgY29ycmVvczogZGF0YS5jb3JyZW8gPyBkYXRhLmNvcnJlby5zcGxpdChTRVBBUkFET1JFU19SRUdFWCkgOiBbXSxcbiAgICAgIHRlbGVmb25vczogZGF0YS50ZWxlZm9ubyA/IGRhdGEudGVsZWZvbm8uc3BsaXQoU0VQQVJBRE9SRVNfUkVHRVgpIDogW10sXG4gICAgICBwbGFjYXM6IGRhdGEucGxhY2EgPyBkYXRhLnBsYWNhLnNwbGl0KFNFUEFSQURPUkVTX1JFR0VYKSA6IFtdLFxuICAgICAgaWRGb3JtYVBhZ29Tcmk6IGRhdGEuaWRGb3JtYVBhZ29TcmksXG4gICAgICBkYXRhSW5mb0NyZWQ6IHBhcnNlSlNPTlNhZmUoZGF0YS5pbmZvQ3JlZGl0aWNpYSwge30pLFxuICAgICAgbm90YTogZGF0YS5ub3RhPy50cmltKCkgPz8gJycsXG4gICAgICBjb25maWdWYWxvckJydXRvOiBkYXRhLmNvbmZpZ1ZhbG9yQnJ1dG8gPz8gZmFsc2UsXG4gICAgfTtcbiAgfVxufVxuIl19","export class ListCustomerMapper {\n static toJson(params) {\n return JSON.stringify({\n ...params,\n type: 1,\n tipo: 1, // remove after\n pageIndex: params.pageIndex,\n pageSize: params.pageSize,\n });\n }\n static fromJson(response) {\n // Initialize with backend-aligned shape (PageIndex is commonly 1-based server-side)\n const result = {\n items: [],\n pageIndex: 1,\n pageSize: 0,\n totalCount: 0,\n totalPages: 0,\n hasPreviousPage: false,\n hasNextPage: false,\n metadata: {},\n };\n // Parse payload (backend sends JSON string in payload)\n const parsed = typeof response?.payload === 'string' ? JSON.parse(response.payload) : response?.payload;\n const dataArray = Array.isArray(parsed)\n ? (parsed[0] ?? [])\n : Array.isArray(parsed?.items)\n ? parsed.items\n : [];\n // Map each item to UI-friendly fields, preserving source values\n result.items = dataArray.map((item, index) => ({\n index: index + 1,\n id: item.idCliente,\n identificationTypeId: item.idTipoIdentificacion,\n identification: item.numeroIdentificacion,\n businessName: item.nombreFiscal,\n tradeName: item.nombreComercial,\n address: item.direccion,\n phone: item.telefono,\n email: item.correo,\n finalConsumer: item.consumidorFinal,\n sriValidation: item.validacionSri ?? item.validationSri,\n sriValidationName: (item.validationSri ?? item.validacionSri) ? 'SI' : 'NO',\n identificationType: item.tipoIdentificacion,\n status: item.estado,\n statusName: item.estado ? 'Activo' : 'Inactivo',\n isFinalConsumer: item.codTipoIdentificacion === 'CF',\n totalRecords: item.totalRecords ?? item.TotalCount,\n }));\n // Flexible pagination extraction (prefer explicit backend values)\n const pageIndex = response?.PageIndex ?? response?.pageIndex ?? 1;\n const pageSize = response?.PageSize ?? response?.pageSize ?? result.items.length;\n const totalCountFromItem = result.items.length > 0 ? result.items[0].totalRecords : undefined;\n const totalCount = response?.TotalCount ?? response?.totalCount ?? totalCountFromItem ?? result.items.length;\n const metadata = response?.Metadata ?? response?.metadata ?? {};\n result.pageIndex = Number.isFinite(pageIndex) ? pageIndex : 1;\n result.pageSize = Number.isFinite(pageSize) ? pageSize : result.items.length;\n result.totalCount = Number.isFinite(totalCount) ? totalCount : result.items.length;\n result.totalPages = result.pageSize > 0 ? Math.ceil(result.totalCount / result.pageSize) : 0;\n // Backend semantics show HasPreviousPage as PageIndex > 1\n result.hasPreviousPage = result.pageIndex > 1;\n result.hasNextPage = result.pageIndex < result.totalPages;\n result.metadata = metadata;\n return result;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItbGlzdC1tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2luZnJhc3RydWN0dXJlL21hcHBlcnMvY3VzdG9tZXItbGlzdC1tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLEdBQUcsTUFBTTtZQUNULElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLENBQUMsRUFBRSxlQUFlO1lBQ3hCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztZQUMzQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBYTtRQUMzQixvRkFBb0Y7UUFDcEYsTUFBTSxNQUFNLEdBQVE7WUFDbEIsS0FBSyxFQUFFLEVBQVc7WUFDbEIsU0FBUyxFQUFFLENBQUM7WUFDWixRQUFRLEVBQUUsQ0FBQztZQUNYLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxFQUFFLENBQUM7WUFDYixlQUFlLEVBQUUsS0FBSztZQUN0QixXQUFXLEVBQUUsS0FBSztZQUNsQixRQUFRLEVBQUUsRUFBeUI7U0FDcEMsQ0FBQztRQUVGLHVEQUF1RDtRQUN2RCxNQUFNLE1BQU0sR0FDVixPQUFPLFFBQVEsRUFBRSxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztRQUMzRixNQUFNLFNBQVMsR0FBVSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQyxN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bkYsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdGLDBEQUEwRDtRQUMxRCxNQUFNLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQzFELE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRTNCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBMaXN0Q3VzdG9tZXJNYXBwZXIge1xuICBzdGF0aWMgdG9Kc29uKHBhcmFtczogYW55KSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHR5cGU6IDEsXG4gICAgICB0aXBvOiAxLCAvLyByZW1vdmUgYWZ0ZXJcbiAgICAgIHBhZ2VJbmRleDogcGFyYW1zLnBhZ2VJbmRleCxcbiAgICAgIHBhZ2VTaXplOiBwYXJhbXMucGFnZVNpemUsXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUpzb24ocmVzcG9uc2U6IGFueSkge1xuICAgIC8vIEluaXRpYWxpemUgd2l0aCBiYWNrZW5kLWFsaWduZWQgc2hhcGUgKFBhZ2VJbmRleCBpcyBjb21tb25seSAxLWJhc2VkIHNlcnZlci1zaWRlKVxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge1xuICAgICAgaXRlbXM6IFtdIGFzIGFueVtdLFxuICAgICAgcGFnZUluZGV4OiAxLFxuICAgICAgcGFnZVNpemU6IDAsXG4gICAgICB0b3RhbENvdW50OiAwLFxuICAgICAgdG90YWxQYWdlczogMCxcbiAgICAgIGhhc1ByZXZpb3VzUGFnZTogZmFsc2UsXG4gICAgICBoYXNOZXh0UGFnZTogZmFsc2UsXG4gICAgICBtZXRhZGF0YToge30gYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICB9O1xuXG4gICAgLy8gUGFyc2UgcGF5bG9hZCAoYmFja2VuZCBzZW5kcyBKU09OIHN0cmluZyBpbiBwYXlsb2FkKVxuICAgIGNvbnN0IHBhcnNlZCA9XG4gICAgICB0eXBlb2YgcmVzcG9uc2U/LnBheWxvYWQgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShyZXNwb25zZS5wYXlsb2FkKSA6IHJlc3BvbnNlPy5wYXlsb2FkO1xuICAgIGNvbnN0IGRhdGFBcnJheTogYW55W10gPSBBcnJheS5pc0FycmF5KHBhcnNlZClcbiAgICAgID8gKHBhcnNlZFswXSA/PyBbXSlcbiAgICAgIDogQXJyYXkuaXNBcnJheShwYXJzZWQ/Lml0ZW1zKVxuICAgICAgICA/IHBhcnNlZC5pdGVtc1xuICAgICAgICA6IFtdO1xuXG4gICAgLy8gTWFwIGVhY2ggaXRlbSB0byBVSS1mcmllbmRseSBmaWVsZHMsIHByZXNlcnZpbmcgc291cmNlIHZhbHVlc1xuICAgIHJlc3VsdC5pdGVtcyA9IGRhdGFBcnJheS5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gKHtcbiAgICAgIGluZGV4OiBpbmRleCArIDEsXG4gICAgICBpZDogaXRlbS5pZENsaWVudGUsXG4gICAgICBpZGVudGlmaWNhdGlvblR5cGVJZDogaXRlbS5pZFRpcG9JZGVudGlmaWNhY2lvbixcbiAgICAgIGlkZW50aWZpY2F0aW9uOiBpdGVtLm51bWVyb0lkZW50aWZpY2FjaW9uLFxuICAgICAgYnVzaW5lc3NOYW1lOiBpdGVtLm5vbWJyZUZpc2NhbCxcbiAgICAgIHRyYWRlTmFtZTogaXRlbS5ub21icmVDb21lcmNpYWwsXG4gICAgICBhZGRyZXNzOiBpdGVtLmRpcmVjY2lvbixcbiAgICAgIHBob25lOiBpdGVtLnRlbGVmb25vLFxuICAgICAgZW1haWw6IGl0ZW0uY29ycmVvLFxuICAgICAgZmluYWxDb25zdW1lcjogaXRlbS5jb25zdW1pZG9yRmluYWwsXG4gICAgICBzcmlWYWxpZGF0aW9uOiBpdGVtLnZhbGlkYWNpb25TcmkgPz8gaXRlbS52YWxpZGF0aW9uU3JpLFxuICAgICAgc3JpVmFsaWRhdGlvbk5hbWU6IChpdGVtLnZhbGlkYXRpb25TcmkgPz8gaXRlbS52YWxpZGFjaW9uU3JpKSA/ICdTSScgOiAnTk8nLFxuICAgICAgaWRlbnRpZmljYXRpb25UeXBlOiBpdGVtLnRpcG9JZGVudGlmaWNhY2lvbixcbiAgICAgIHN0YXR1czogaXRlbS5lc3RhZG8sXG4gICAgICBzdGF0dXNOYW1lOiBpdGVtLmVzdGFkbyA/ICdBY3Rpdm8nIDogJ0luYWN0aXZvJyxcbiAgICAgIGlzRmluYWxDb25zdW1lcjogaXRlbS5jb2RUaXBvSWRlbnRpZmljYWNpb24gPT09ICdDRicsXG4gICAgICB0b3RhbFJlY29yZHM6IGl0ZW0udG90YWxSZWNvcmRzID8/IGl0ZW0uVG90YWxDb3VudCxcbiAgICB9KSk7XG5cbiAgICAvLyBGbGV4aWJsZSBwYWdpbmF0aW9uIGV4dHJhY3Rpb24gKHByZWZlciBleHBsaWNpdCBiYWNrZW5kIHZhbHVlcylcbiAgICBjb25zdCBwYWdlSW5kZXggPSByZXNwb25zZT8uUGFnZUluZGV4ID8/IHJlc3BvbnNlPy5wYWdlSW5kZXggPz8gMTtcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHJlc3BvbnNlPy5QYWdlU2l6ZSA/PyByZXNwb25zZT8ucGFnZVNpemUgPz8gcmVzdWx0Lml0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCB0b3RhbENvdW50RnJvbUl0ZW0gPSByZXN1bHQuaXRlbXMubGVuZ3RoID4gMCA/IHJlc3VsdC5pdGVtc1swXS50b3RhbFJlY29yZHMgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdG90YWxDb3VudCA9XG4gICAgICByZXNwb25zZT8uVG90YWxDb3VudCA/PyByZXNwb25zZT8udG90YWxDb3VudCA/PyB0b3RhbENvdW50RnJvbUl0ZW0gPz8gcmVzdWx0Lml0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHJlc3BvbnNlPy5NZXRhZGF0YSA/PyByZXNwb25zZT8ubWV0YWRhdGEgPz8ge307XG5cbiAgICByZXN1bHQucGFnZUluZGV4ID0gTnVtYmVyLmlzRmluaXRlKHBhZ2VJbmRleCkgPyBwYWdlSW5kZXggOiAxO1xuICAgIHJlc3VsdC5wYWdlU2l6ZSA9IE51bWJlci5pc0Zpbml0ZShwYWdlU2l6ZSkgPyBwYWdlU2l6ZSA6IHJlc3VsdC5pdGVtcy5sZW5ndGg7XG4gICAgcmVzdWx0LnRvdGFsQ291bnQgPSBOdW1iZXIuaXNGaW5pdGUodG90YWxDb3VudCkgPyB0b3RhbENvdW50IDogcmVzdWx0Lml0ZW1zLmxlbmd0aDtcbiAgICByZXN1bHQudG90YWxQYWdlcyA9IHJlc3VsdC5wYWdlU2l6ZSA+IDAgPyBNYXRoLmNlaWwocmVzdWx0LnRvdGFsQ291bnQgLyByZXN1bHQucGFnZVNpemUpIDogMDtcbiAgICAvLyBCYWNrZW5kIHNlbWFudGljcyBzaG93IEhhc1ByZXZpb3VzUGFnZSBhcyBQYWdlSW5kZXggPiAxXG4gICAgcmVzdWx0Lmhhc1ByZXZpb3VzUGFnZSA9IHJlc3VsdC5wYWdlSW5kZXggPiAxO1xuICAgIHJlc3VsdC5oYXNOZXh0UGFnZSA9IHJlc3VsdC5wYWdlSW5kZXggPCByZXN1bHQudG90YWxQYWdlcztcbiAgICByZXN1bHQubWV0YWRhdGEgPSBtZXRhZGF0YTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==","import { HttpClientFactory } from '@acontplus/core';\nimport { CUSTOMER_API } from '../constants/customer.constants';\nexport class CustomerExternalHttpRepository {\n get http() {\n return HttpClientFactory.getClient(); // siempre toma el último cliente configurado\n }\n get url() {\n return `${CUSTOMER_API.BILLING}/Consultas/`;\n }\n getById(identification) {\n const id = identification.getId();\n let endpoint = '';\n if (identification.isValidRuc()) {\n endpoint = `GetRucSRI?Ruc=${id}`;\n }\n else if (identification.isValidCedula()) {\n endpoint = `GetCedulaSri?Ruc=${id}`;\n }\n else {\n throw new Error('Número de identificación inválido para SRI');\n }\n return this.http.get(`${this.url}${endpoint}`).then(response => {\n const idCard = response.numeroRuc ? response.numeroRuc : response.identificacion;\n const businessName = response.razonSocial ? response.razonSocial : response.nombreCompleto;\n const data = {\n phone: response.telefono,\n email: response.email,\n idCard,\n businessName,\n address: response.direccion,\n };\n return {\n status: response.error ? 'warning' : 'success',\n code: response.error ? 'EXTERNAL_API_ERROR' : 'SUCCESS',\n data,\n message: response.error ?? 'External API call completed',\n timestamp: new Date().toISOString(),\n };\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZXh0ZXJuYWwtaHR0cC1yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9yZXBvc2l0b3JpZXMvY3VzdG9tZXItZXh0ZXJuYWwtaHR0cC1yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxpQkFBaUIsRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHL0QsTUFBTSxPQUFPLDhCQUE4QjtJQUN6QyxJQUFZLElBQUk7UUFDZCxPQUFPLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsNkNBQTZDO0lBQ3JGLENBQUM7SUFFRCxJQUFZLEdBQUc7UUFDYixPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sYUFBYSxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPLENBQUMsY0FBc0M7UUFDNUMsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLGNBQWMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLFFBQVEsR0FBRyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksY0FBYyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDMUMsUUFBUSxHQUFHLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUNqRixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzNGLE1BQU0sSUFBSSxHQUFxQjtnQkFDN0IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUN4QixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLE1BQU07Z0JBQ04sWUFBWTtnQkFDWixPQUFPLEVBQUUsUUFBUSxDQUFDLFNBQVM7YUFDNUIsQ0FBQztZQUNGLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDOUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN2RCxJQUFJO2dCQUNKLE9BQU8sRUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLDZCQUE2QjtnQkFDeEQsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ2hCLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlSZXNwb25zZSwgSHR0cENsaWVudEZhY3RvcnksIElkZW50aWZpY2F0aW9uTnVtYmVyVm8gfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgQ1VTVE9NRVJfQVBJIH0gZnJvbSAnLi4vY29uc3RhbnRzL2N1c3RvbWVyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDdXN0b21lckV4dGVybmFsUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDdXN0b21lckV4dGVybmFsIH0gZnJvbSAnLi4vLi4vZG9tYWluL21vZGVscy9jdXN0b21lci1leHRlcm5hbCc7XG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJFeHRlcm5hbEh0dHBSZXBvc2l0b3J5IGltcGxlbWVudHMgQ3VzdG9tZXJFeHRlcm5hbFJlcG9zaXRvcnkge1xuICBwcml2YXRlIGdldCBodHRwKCkge1xuICAgIHJldHVybiBIdHRwQ2xpZW50RmFjdG9yeS5nZXRDbGllbnQoKTsgLy8gc2llbXByZSB0b21hIGVsIMO6bHRpbW8gY2xpZW50ZSBjb25maWd1cmFkb1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdXJsKCkge1xuICAgIHJldHVybiBgJHtDVVNUT01FUl9BUEkuQklMTElOR30vQ29uc3VsdGFzL2A7XG4gIH1cblxuICBnZXRCeUlkKGlkZW50aWZpY2F0aW9uOiBJZGVudGlmaWNhdGlvbk51bWJlclZvKTogUHJvbWlzZTxBcGlSZXNwb25zZTxDdXN0b21lckV4dGVybmFsPj4ge1xuICAgIGNvbnN0IGlkID0gaWRlbnRpZmljYXRpb24uZ2V0SWQoKTtcblxuICAgIGxldCBlbmRwb2ludCA9ICcnO1xuICAgIGlmIChpZGVudGlmaWNhdGlvbi5pc1ZhbGlkUnVjKCkpIHtcbiAgICAgIGVuZHBvaW50ID0gYEdldFJ1Y1NSST9SdWM9JHtpZH1gO1xuICAgIH0gZWxzZSBpZiAoaWRlbnRpZmljYXRpb24uaXNWYWxpZENlZHVsYSgpKSB7XG4gICAgICBlbmRwb2ludCA9IGBHZXRDZWR1bGFTcmk/UnVjPSR7aWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOw7ptZXJvIGRlIGlkZW50aWZpY2FjacOzbiBpbnbDoWxpZG8gcGFyYSBTUkknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMudXJsfSR7ZW5kcG9pbnR9YCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCBpZENhcmQgPSByZXNwb25zZS5udW1lcm9SdWMgPyByZXNwb25zZS5udW1lcm9SdWMgOiByZXNwb25zZS5pZGVudGlmaWNhY2lvbjtcbiAgICAgIGNvbnN0IGJ1c2luZXNzTmFtZSA9IHJlc3BvbnNlLnJhem9uU29jaWFsID8gcmVzcG9uc2UucmF6b25Tb2NpYWwgOiByZXNwb25zZS5ub21icmVDb21wbGV0bztcbiAgICAgIGNvbnN0IGRhdGE6IEN1c3RvbWVyRXh0ZXJuYWwgPSB7XG4gICAgICAgIHBob25lOiByZXNwb25zZS50ZWxlZm9ubyxcbiAgICAgICAgZW1haWw6IHJlc3BvbnNlLmVtYWlsLFxuICAgICAgICBpZENhcmQsXG4gICAgICAgIGJ1c2luZXNzTmFtZSxcbiAgICAgICAgYWRkcmVzczogcmVzcG9uc2UuZGlyZWNjaW9uLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogcmVzcG9uc2UuZXJyb3IgPyAnd2FybmluZycgOiAnc3VjY2VzcycsXG4gICAgICAgIGNvZGU6IHJlc3BvbnNlLmVycm9yID8gJ0VYVEVSTkFMX0FQSV9FUlJPUicgOiAnU1VDQ0VTUycsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLmVycm9yID8/ICdFeHRlcm5hbCBBUEkgY2FsbCBjb21wbGV0ZWQnLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0gYXMgQXBpUmVzcG9uc2U8YW55PjtcbiAgICB9KTtcbiAgfVxufVxuIl19","import { CustomerFormDataMapper } from '../mappers/customer-form-data-mapper';\nimport { ListCustomerMapper } from '../mappers/customer-list-mapper';\nimport { CustomerGetByIdMapper } from '../mappers/customer-get-by-id-mapper';\nimport { CustomerCreateUpdateMapper } from '../mappers/customer-create-update-mapper';\nimport { CompanySearchMapper } from '../mappers/company-search-mapper';\nimport { HttpClientFactory } from '@acontplus/core';\nimport { CUSTOMER_API } from '../constants/customer.constants';\nexport class CustomerHttpRepository {\n get http() {\n return HttpClientFactory.getClient(); // siempre toma el último cliente configurado\n }\n get url() {\n return `${CUSTOMER_API.BILLING}/CompanyCustomer/`;\n }\n checkExistence(identificationNumber) {\n const searchPayload = JSON.stringify({\n textSearch: identificationNumber,\n tipo: 3,\n });\n return this.http.get(`${this.url}?json=${searchPayload}`).then(response => {\n const result = {\n status: 'warning',\n code: response.code ?? 'UNKNOWN_ERROR',\n data: null,\n message: response.message ?? 'Unknown error occurred',\n timestamp: new Date().toISOString(),\n };\n if (response.code === '1' && response.payload) {\n const parsedData = JSON.parse(response.payload);\n if (Array.isArray(parsedData) && parsedData.length > 0 && Array.isArray(parsedData[0])) {\n const [customer] = parsedData[0];\n if (customer) {\n result.status = 'success';\n result.data = customer;\n }\n }\n }\n return result;\n });\n }\n getFormData() {\n const json = CustomerFormDataMapper.toJson();\n return this.http.get(`${this.url}?json=${json}`).then((response) => {\n const data = CustomerFormDataMapper.fromJson(response);\n return {\n status: 'success',\n code: response.code ?? 'SUCCESS',\n data,\n timestamp: new Date().toISOString(),\n };\n });\n }\n getAll(obj) {\n const json = ListCustomerMapper.toJson(obj);\n return this.http.get(`${this.url}?json=${json}`).then((response) => {\n const data = ListCustomerMapper.fromJson(response);\n return {\n status: 'success',\n code: response.code ?? 'SUCCESS',\n data,\n timestamp: new Date().toISOString(),\n };\n });\n }\n create(dto) {\n return this.http\n .post(this.url, { data: CustomerCreateUpdateMapper.toJson(dto.data) })\n .then(response => {\n console.log(response);\n const data = CustomerCreateUpdateMapper.fromJson(response);\n return {\n status: response.code === '1' ? 'success' : 'warning',\n code: response.code ?? 'OPERATION_FAILED',\n data,\n message: response.message ?? 'Operation completed with issues',\n timestamp: new Date().toISOString(),\n };\n });\n }\n update(dto) {\n return this.http\n .put(`${this.url}${dto.id}`, {\n data: CustomerCreateUpdateMapper.toJson(dto.data),\n })\n .then(response => {\n console.log(response);\n return {\n status: response.code === '1' ? 'success' : 'warning',\n code: response.code ?? 'OPERATION_FAILED',\n message: response.message ?? 'Operation completed with issues',\n timestamp: new Date().toISOString(),\n };\n });\n }\n updateState(id) {\n return this.http.delete(`${this.url}${id}`).then(response => {\n return {\n status: response.code === '1' ? 'success' : 'warning',\n code: response.code,\n message: response.message,\n timestamp: new Date().toISOString(),\n };\n });\n }\n getById(id) {\n return this.http.get(`${this.url}GetId/${id}`).then(response => {\n const data = CustomerGetByIdMapper.fromJson(response);\n return {\n status: response.code === '1' ? 'success' : 'warning',\n code: response.code ?? 'OPERATION_FAILED',\n data,\n message: response.message ?? 'Operation completed with issues',\n timestamp: new Date().toISOString(),\n };\n });\n }\n search(params) {\n const json = CompanySearchMapper.toJson(params);\n return this.http.get(`${this.url}Search?json=${json}`).then(response => {\n const data = CompanySearchMapper.fromJson(response);\n return {\n status: response.code === '1' ? 'success' : 'warning',\n code: response.code,\n data,\n message: response.message,\n timestamp: new Date().toISOString(),\n };\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItaHR0cC1yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9yZXBvc2l0b3JpZXMvY3VzdG9tZXItaHR0cC1yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBZSxpQkFBaUIsRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLElBQVksSUFBSTtRQUNkLE9BQU8saUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyw2Q0FBNkM7SUFDckYsQ0FBQztJQUVELElBQVksR0FBRztRQUNiLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxtQkFBbUIsQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYyxDQUFDLG9CQUE0QjtRQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ25DLFVBQVUsRUFBRSxvQkFBb0I7WUFDaEMsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsU0FBUyxhQUFhLEVBQUUsQ0FBQyxDQUFDLElBQUks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QWMsR0FBRyxJQUFJLENBQUMsR0FBRyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xGLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxPQUFPO2dCQUNMLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNyRCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7Z0JBQ25CLElBQUk7Z0JBQ0osT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN6QixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7YUFDaEIsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1c3RvbWVyRm9ybURhdGFNYXBwZXIgfSBmcm9tICcuLi9tYXBwZXJzL2N1c3RvbWVyLWZvcm0tZGF0YS1tYXBwZXInO1xuaW1wb3J0IHsgTGlzdEN1c3RvbWVyTWFwcGVyIH0gZnJvbSAnLi4vbWFwcGVycy9jdXN0b21lci1saXN0LW1hcHBlcic7XG5pbXBvcnQgeyBDdXN0b21lclJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgQ3VzdG9tZXJHZXRCeUlkTWFwcGVyIH0gZnJvbSAnLi4vbWFwcGVycy9jdXN0b21lci1nZXQtYnktaWQtbWFwcGVyJztcbmltcG9ydCB7IEN1c3RvbWVyQ3JlYXRlVXBkYXRlTWFwcGVyIH0gZnJvbSAnLi4vbWFwcGVycy9jdXN0b21lci1jcmVhdGUtdXBkYXRlLW1hcHBlcic7XG5pbXBvcnQgeyBDdXN0b21lclNlYXJjaCB9IGZyb20gJy4uLy4uL2RvbWFpbi9tb2RlbHMvY3VzdG9tZXItc2VhcmNoJztcbmltcG9ydCB7IENvbXBhbnlTZWFyY2hNYXBwZXIgfSBmcm9tICcuLi9tYXBwZXJzL2NvbXBhbnktc2VhcmNoLW1hcHBlcic7XG5pbXBvcnQgeyBBcGlSZXNwb25zZSwgSHR0cENsaWVudEZhY3RvcnksIFBhZ2VkUmVzdWx0IH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcbmltcG9ydCB7IENVU1RPTUVSX0FQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9jdXN0b21lci5jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJIdHRwUmVwb3NpdG9yeSBpbXBsZW1lbnRzIEN1c3RvbWVyUmVwb3NpdG9yeSB7XG4gIHByaXZhdGUgZ2V0IGh0dHAoKSB7XG4gICAgcmV0dXJuIEh0dHBDbGllbnRGYWN0b3J5LmdldENsaWVudCgpOyAvLyBzaWVtcHJlIHRvbWEgZWwgw7psdGltbyBjbGllbnRlIGNvbmZpZ3VyYWRvXG4gIH1cblxuICBwcml2YXRlIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGAke0NVU1RPTUVSX0FQSS5CSUxMSU5HfS9Db21wYW55Q3VzdG9tZXIvYDtcbiAgfVxuXG4gIGNoZWNrRXhpc3RlbmNlKGlkZW50aWZpY2F0aW9uTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPEFwaVJlc3BvbnNlPGFueT4+IHtcbiAgICBjb25zdCBzZWFyY2hQYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdGV4dFNlYXJjaDogaWRlbnRpZmljYXRpb25OdW1iZXIsXG4gICAgICB0aXBvOiAzLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy51cmx9P2pzb249JHtzZWFyY2hQYXlsb2FkfWApLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBBcGlSZXNwb25zZTxhbnk+ID0ge1xuICAgICAgICBzdGF0dXM6ICd3YXJuaW5nJyxcbiAgICAgICAgY29kZTogcmVzcG9uc2UuY29kZSA/PyAnVU5LTk9XTl9FUlJPUicsXG4gICAgICAgIGRhdGE6IG51bGwgYXMgYW55LFxuICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlID8/ICdVbmtub3duIGVycm9yIG9jY3VycmVkJyxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9O1xuICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09ICcxJyAmJiByZXNwb25zZS5wYXlsb2FkKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlLnBheWxvYWQpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWREYXRhKSAmJiBwYXJzZWREYXRhLmxlbmd0aCA+IDAgJiYgQXJyYXkuaXNBcnJheShwYXJzZWREYXRhWzBdKSkge1xuICAgICAgICAgIGNvbnN0IFtjdXN0b21lcl0gPSBwYXJzZWREYXRhWzBdO1xuICAgICAgICAgIGlmIChjdXN0b21lcikge1xuICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyA9ICdzdWNjZXNzJztcbiAgICAgICAgICAgIHJlc3VsdC5kYXRhID0gY3VzdG9tZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Rm9ybURhdGEoKTogUHJvbWlzZTxBcGlSZXNwb25zZTxhbnk+PiB7XG4gICAgY29uc3QganNvbiA9IEN1c3RvbWVyRm9ybURhdGFNYXBwZXIudG9Kc29uKCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLnVybH0/anNvbj0ke2pzb259YCkudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IEN1c3RvbWVyRm9ybURhdGFNYXBwZXIuZnJvbUpzb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUgPz8gJ1NVQ0NFU1MnLFxuICAgICAgICBkYXRhLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0gYXMgQXBpUmVzcG9uc2U8YW55PjtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEFsbDxUPihvYmo6IFQpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFBhZ2VkUmVzdWx0PGFueT4+PiB7XG4gICAgY29uc3QganNvbiA9IExpc3RDdXN0b21lck1hcHBlci50b0pzb24ob2JqKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMudXJsfT9qc29uPSR7anNvbn1gKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gTGlzdEN1c3RvbWVyTWFwcGVyLmZyb21Kc29uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgICBjb2RlOiByZXNwb25zZS5jb2RlID8/ICdTVUNDRVNTJyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9IGFzIEFwaVJlc3BvbnNlPFBhZ2VkUmVzdWx0PGFueT4+O1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlKGR0bzogYW55KTogUHJvbWlzZTxBcGlSZXNwb25zZTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8QXBpUmVzcG9uc2U+KHRoaXMudXJsLCB7IGRhdGE6IEN1c3RvbWVyQ3JlYXRlVXBkYXRlTWFwcGVyLnRvSnNvbihkdG8uZGF0YSkgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICBjb25zdCBkYXRhID0gQ3VzdG9tZXJDcmVhdGVVcGRhdGVNYXBwZXIuZnJvbUpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN0YXR1czogcmVzcG9uc2UuY29kZSA9PT0gJzEnID8gJ3N1Y2Nlc3MnIDogJ3dhcm5pbmcnLFxuICAgICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUgPz8gJ09QRVJBVElPTl9GQUlMRUQnLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSA/PyAnT3BlcmF0aW9uIGNvbXBsZXRlZCB3aXRoIGlzc3VlcycsXG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH0gYXMgQXBpUmVzcG9uc2U8YW55PjtcbiAgICAgIH0pO1xuICB9XG4gIHVwZGF0ZShkdG86IGFueSk6IFByb21pc2U8QXBpUmVzcG9uc2U8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQ8QXBpUmVzcG9uc2U+KGAke3RoaXMudXJsfSR7ZHRvLmlkfWAsIHtcbiAgICAgICAgZGF0YTogQ3VzdG9tZXJDcmVhdGVVcGRhdGVNYXBwZXIudG9Kc29uKGR0by5kYXRhKSxcbiAgICAgIH0pXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmNvZGUgPT09ICcxJyA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJyxcbiAgICAgICAgICBjb2RlOiByZXNwb25zZS5jb2RlID8/ICdPUEVSQVRJT05fRkFJTEVEJyxcbiAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlID8/ICdPcGVyYXRpb24gY29tcGxldGVkIHdpdGggaXNzdWVzJyxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfSBhcyBBcGlSZXNwb25zZTxhbnk+O1xuICAgICAgfSk7XG4gIH1cbiAgdXBkYXRlU3RhdGUoaWQ6IG51bWJlcik6IFByb21pc2U8QXBpUmVzcG9uc2U8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPEFwaVJlc3BvbnNlPihgJHt0aGlzLnVybH0ke2lkfWApLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5jb2RlID09PSAnMScgPyAnc3VjY2VzcycgOiAnd2FybmluZycsXG4gICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUsXG4gICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UsXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSBhcyBBcGlSZXNwb25zZTxhbnk+O1xuICAgIH0pO1xuICB9XG4gIGdldEJ5SWQoaWQ6IG51bWJlcik6IFByb21pc2U8QXBpUmVzcG9uc2U8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy51cmx9R2V0SWQvJHtpZH1gKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBDdXN0b21lckdldEJ5SWRNYXBwZXIuZnJvbUpzb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5jb2RlID09PSAnMScgPyAnc3VjY2VzcycgOiAnd2FybmluZycsXG4gICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUgPz8gJ09QRVJBVElPTl9GQUlMRUQnLFxuICAgICAgICBkYXRhLFxuICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlID8/ICdPcGVyYXRpb24gY29tcGxldGVkIHdpdGggaXNzdWVzJyxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9IGFzIEFwaVJlc3BvbnNlPGFueT47XG4gICAgfSk7XG4gIH1cblxuICBzZWFyY2gocGFyYW1zOiBDdXN0b21lclNlYXJjaCk6IFByb21pc2U8QXBpUmVzcG9uc2U8YW55Pj4ge1xuICAgIGNvbnN0IGpzb24gPSBDb21wYW55U2VhcmNoTWFwcGVyLnRvSnNvbihwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVJlc3BvbnNlPihgJHt0aGlzLnVybH1TZWFyY2g/anNvbj0ke2pzb259YCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gQ29tcGFueVNlYXJjaE1hcHBlci5mcm9tSnNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmNvZGUgPT09ICcxJyA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJyxcbiAgICAgICAgY29kZTogcmVzcG9uc2UuY29kZSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9IGFzIEFwaVJlc3BvbnNlPGFueT47XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { forkJoin, from } from 'rxjs';\nimport { NotificationService } from '@acontplus/ng-notifications';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, } from '@angular/material/dialog';\nimport { DynamicCard, InputChip, Button, ToUpperCase } from '@acontplus/ng-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators, } from '@angular/forms';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { SEPARADORES_REGEX, SEPARATOR_KEY_CODE, SRI_DOCUMENT_TYPE, isSuccessResponse, } from '@acontplus/core';\nimport { CustomerUseCase } from '../../../application/use-cases/customer-use-case';\nimport { CustomerExternalUseCase } from '../../../application/use-cases/customer-external-use-case';\nimport { CustomerHttpRepository } from '../../../infrastructure/repositories/customer-http-repository';\nimport { CustomerExternalHttpRepository } from '../../../infrastructure/repositories/customer-external-http-repository';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@angular/material/tabs\";\nimport * as i3 from \"@angular/material/form-field\";\nimport * as i4 from \"@angular/material/input\";\nimport * as i5 from \"@angular/material/select\";\nimport * as i6 from \"@angular/material/slide-toggle\";\nimport * as i7 from \"@angular/material/datepicker\";\nexport class CustomerAddEditComponent {\n dialogRef = inject((MatDialogRef));\n customerUseCase = inject(CustomerUseCase);\n customerExternalUseCase = inject(CustomerExternalUseCase);\n btnText = signal('Guardar', ...(ngDevMode ? [{ debugName: \"btnText\" }] : []));\n paramsOptions = inject(MAT_DIALOG_DATA);\n params = this.paramsOptions.data;\n notificationService = inject(NotificationService);\n title = 'Nuevo Cliente';\n loading = false;\n emails = [];\n telephones = [];\n tiemposCredito = signal([], ...(ngDevMode ? [{ debugName: \"tiemposCredito\" }] : []));\n tipoContribuyentes = signal([], ...(ngDevMode ? [{ debugName: \"tipoContribuyentes\" }] : []));\n tiposCliente = signal([], ...(ngDevMode ? [{ debugName: \"tiposCliente\" }] : []));\n tiposIdentificacion = signal([], ...(ngDevMode ? [{ debugName: \"tiposIdentificacion\" }] : []));\n formasPagoSri = signal([], ...(ngDevMode ? [{ debugName: \"formasPagoSri\" }] : []));\n placas = signal([], ...(ngDevMode ? [{ debugName: \"placas\" }] : []));\n ciudades = signal([], ...(ngDevMode ? [{ debugName: \"ciudades\" }] : []));\n cargos = signal([], ...(ngDevMode ? [{ debugName: \"cargos\" }] : []));\n empresas = signal([], ...(ngDevMode ? [{ debugName: \"empresas\" }] : []));\n employees = signal([], ...(ngDevMode ? [{ debugName: \"employees\" }] : []));\n maritalStatuses = signal([], ...(ngDevMode ? [{ debugName: \"maritalStatuses\" }] : []));\n housingTypes = signal([], ...(ngDevMode ? [{ debugName: \"housingTypes\" }] : []));\n showRefresh = signal(true, ...(ngDevMode ? [{ debugName: \"showRefresh\" }] : []));\n endsWith001Validator(control) {\n const value = control.value;\n if (value && value.length >= 3) {\n if (!value.endsWith('001')) {\n return { endsWith001: true };\n }\n }\n return null;\n }\n customerForm = new FormGroup({\n direccion: new FormControl('', Validators.required),\n idCargo: new FormControl(0),\n idCliente: new FormControl(0),\n idEmpresa: new FormControl(0),\n idFormaPagoSri: new FormControl(0),\n idTipoClienteProveedor: new FormControl(0),\n idTipoIdentificacion: new FormControl(0, Validators.required),\n idSubContribuyente: new FormControl(0),\n idTiempoCredito: new FormControl(0),\n idCiudad: new FormControl(0),\n idEmpleado: new FormControl(0),\n nombreFiscal: new FormControl('', Validators.required),\n nombreComercial: new FormControl(''),\n numeroIdentificacion: new FormControl({ value: '', disabled: false }, [\n Validators.required,\n Validators.minLength(13),\n Validators.maxLength(13),\n this.endsWith001Validator,\n ]),\n correo: new FormControl(''),\n telefono: new FormControl(''),\n placa: new FormControl(''),\n nota: new FormControl(''),\n estado: new FormControl(false),\n birthDate: new FormControl(null),\n validationSri: new FormControl(false),\n configValorBruto: new FormControl(false),\n dataInfoCred: new FormGroup({\n maritalStatusId: new FormControl(null),\n conyugeNombre: new FormControl(null),\n conyugeTel: new FormControl(null),\n refFamNombre: new FormControl(null),\n refFamTel: new FormControl(null),\n housingTypeId: new FormControl(null),\n dirVivienda: new FormControl(null),\n refDomicilio: new FormControl(null),\n sector: new FormControl(null),\n barrio: new FormControl(null),\n calle: new FormControl(null),\n }),\n });\n getCustomer(codigo, id) {\n this.customerForm.patchValue({\n validationSri: false,\n });\n from(this.customerUseCase.checkExistence(id)).subscribe(response => {\n if (isSuccessResponse(response) && response.data) {\n alert('El cliente ya se encuentra registrado en su empresa');\n this.notificationService.toastr.show({\n type: 'warning',\n message: 'El cliente ya se encuentra registrado en su empresa',\n });\n this.customerForm.patchValue({ numeroIdentificacion: null });\n return;\n }\n if (codigo === SRI_DOCUMENT_TYPE.PASSPORT) {\n this.customerForm.patchValue({\n validationSri: true,\n });\n return;\n }\n from(this.customerExternalUseCase.getById(id)).subscribe(secondResponse => {\n if (!isSuccessResponse(secondResponse) || !secondResponse.data) {\n this.notificationService.toastr.show({\n type: 'info',\n message: ' No se encontró información en el SRI',\n });\n return;\n }\n const { phone, email, idCard, // numeroRuc\n businessName, // razonSocial\n address, // direccion\n } = secondResponse.data;\n if (phone && typeof phone === 'string') {\n this.telephones = phone.split(SEPARADORES_REGEX) || [];\n }\n if (email && typeof email === 'string') {\n this.emails = email.split(SEPARADORES_REGEX) || [];\n }\n if (idCard) {\n this.customerForm.patchValue({\n numeroIdentificacion: idCard,\n nombreFiscal: businessName,\n validationSri: true,\n direccion: address,\n nombreComercial: businessName,\n });\n }\n });\n });\n }\n getLoadData() {\n if (this.isUpdate()) {\n return forkJoin([\n from(this.customerUseCase.getFormData()),\n from(this.customerUseCase.getById(this.params.id)),\n ]);\n }\n return from(this.customerUseCase.getFormData());\n }\n ngOnInit() {\n try {\n this.getLoadData().subscribe(response => {\n let mainDataForm = {};\n let dataCompanyCustomer = {};\n if (Array.isArray(response)) {\n mainDataForm = response[0].data;\n dataCompanyCustomer = response[1];\n }\n else {\n mainDataForm = response.data;\n }\n this.tiposIdentificacion.set(mainDataForm.tipoIdentificacion);\n this.tiemposCredito.set(mainDataForm.tiempoCreditos);\n this.tipoContribuyentes.set(mainDataForm.tipoContribuyentes);\n this.formasPagoSri.set(mainDataForm.formasPagoSri);\n this.tiposCliente.set(mainDataForm.tiposCliente);\n this.ciudades.set(mainDataForm.ciudades);\n this.cargos.set(mainDataForm.cargos);\n this.empresas.set(mainDataForm.empresas);\n this.employees.set(mainDataForm.employees);\n this.maritalStatuses.set(mainDataForm.maritalStatuses);\n this.housingTypes.set(mainDataForm.housingTypes);\n if (this.isDataOfSri()) {\n const { codigoSri, numeroIdentificacion } = this.params;\n const dataIdentificacion = this.tiposIdentificacion().find((ti) => ti.codigoSri === codigoSri);\n if (dataIdentificacion) {\n const idTipoIdentificacionCtrl = this.customerForm.get('idTipoIdentificacion');\n idTipoIdentificacionCtrl?.setValue(dataIdentificacion.idTipoIdentificacion);\n const numeroIdentificacionCtrl = this.customerForm.get('numeroIdentificacion');\n numeroIdentificacionCtrl?.setValue(numeroIdentificacion);\n const idTiempoCreditoCtrl = this.customerForm.get('idTiempoCredito');\n idTiempoCreditoCtrl?.setValue(this.tiemposCredito().length > 0\n ? this.tiemposCredito()[0].idTiempoCredito\n : 0);\n this.updateFormControlNumeroIdentificacion(dataIdentificacion.codigoSri);\n this.onKeyDownGovernmentId();\n }\n return;\n }\n if (this.isCreate()) {\n const dataIdentificacion = this.tiposIdentificacion().find((ti) => ti.codigoSri === SRI_DOCUMENT_TYPE.RUC);\n if (dataIdentificacion) {\n const idTipoIdentificacionCtrl = this.customerForm.get('idTipoIdentificacion');\n idTipoIdentificacionCtrl?.setValue(dataIdentificacion.idTipoIdentificacion);\n this.setIdentificationTypeChange(dataIdentificacion.codigoSri);\n }\n const idTiempoCreditoCtrl = this.customerForm.get('idTiempoCredito');\n idTiempoCreditoCtrl?.setValue(this.tiemposCredito().length > 0\n ? this.tiemposCredito()[0].idTiempoCredito\n : 0);\n }\n else {\n this.title = 'Editar Cliente';\n this.btnText.set('Actualizar');\n this.emails = dataCompanyCustomer.correos;\n this.telephones = dataCompanyCustomer.telefonos;\n this.placas.set(dataCompanyCustomer.placas);\n const { dataInfoCred, ...rest } = dataCompanyCustomer;\n this.customerForm.patchValue(rest);\n if (dataInfoCred) {\n this.customerForm.get('dataInfoCred')?.patchValue(dataInfoCred);\n }\n this.updateFormControlNumeroIdentificacion(rest.codigoSri);\n }\n });\n }\n catch {\n // Handle error appropriately\n }\n }\n identificationTypeChange(event) {\n const dt = this.tiposIdentificacion().find(item => item.idTipoIdentificacion === Number(event.value));\n this.setIdentificationTypeChange(dt.codigoSri);\n }\n updateFormControlNumeroIdentificacion(codigoSri) {\n const idNumberControl = this.customerForm.get('numeroIdentificacion');\n this.showRefresh.set(false);\n if ([SRI_DOCUMENT_TYPE.RUC, SRI_DOCUMENT_TYPE.CEDULA].includes(codigoSri)) {\n let lengthValidator;\n this.showRefresh.set(true);\n if (codigoSri === SRI_DOCUMENT_TYPE.CEDULA) {\n lengthValidator = [Validators.minLength(10), Validators.maxLength(10)];\n }\n else if (codigoSri === SRI_DOCUMENT_TYPE.RUC) {\n lengthValidator = [\n Validators.minLength(13),\n Validators.maxLength(13),\n this.endsWith001Validator,\n ];\n }\n if (lengthValidator) {\n idNumberControl?.setValidators([\n Validators.required,\n Validators.pattern(/^\\d+$/), // Solo números\n ...lengthValidator,\n ]);\n }\n }\n else {\n idNumberControl?.setValidators([Validators.required]);\n }\n idNumberControl?.updateValueAndValidity();\n }\n setIdentificationTypeChange(codigoSri) {\n const idNumberControl = this.customerForm.get('numeroIdentificacion');\n idNumberControl?.reset();\n idNumberControl?.clearValidators();\n this.updateFormControlNumeroIdentificacion(codigoSri);\n }\n get numeroIdentificacionControl() {\n return this.customerForm.get('numeroIdentificacion');\n }\n get birthDateCtrl() {\n return this.customerForm.get('birthDate');\n }\n onKeyDownGovernmentId($event) {\n if ($event) {\n $event.preventDefault();\n }\n if (this.numeroIdentificacionControl?.invalid)\n return;\n const idTipoIdentificacion = this.customerForm.get('idTipoIdentificacion')?.value;\n const numeroIdentificacion = this.customerForm.get('numeroIdentificacion')?.value;\n const codigoSri = this.tiposIdentificacion().find((x) => x.idTipoIdentificacion == idTipoIdentificacion).codigoSri;\n if (numeroIdentificacion) {\n this.getCustomer(codigoSri, numeroIdentificacion);\n }\n }\n isDataOfSri = () => this.params.dataOfSri;\n isCreate = () => !(this.params.id > 0);\n isUpdate = () => this.params.id > 0;\n onSave() {\n this.customerForm.patchValue({\n telefono: this.telephones.length > 0 ? this.telephones.join(SEPARATOR_KEY_CODE.SLASH) : null,\n });\n this.customerForm.patchValue({\n correo: this.emails.length > 0 ? this.emails.join(SEPARATOR_KEY_CODE.SLASH) : null,\n });\n this.customerForm.patchValue({\n placa: this.placas().length > 0 ? this.placas().join(SEPARATOR_KEY_CODE.SLASH) : null,\n });\n const dataForm = {\n ...this.customerForm.value,\n };\n if (this.customerForm.invalid) {\n this.notificationService.toastr.show({\n type: 'warning',\n message: 'Ingrese todos datos requeridos',\n });\n return;\n }\n if (this.isUpdate()) {\n const sendParams = {\n id: this.params.id,\n data: dataForm,\n };\n from(this.customerUseCase.update(sendParams)).subscribe(response => {\n this.notificationService.toastr.show({\n type: isSuccessResponse(response) ? 'success' : 'warning',\n message: `${response.message}`,\n });\n if (isSuccessResponse(response)) {\n this.dialogRef.close({\n id: this.params.id,\n });\n }\n });\n }\n if (this.isCreate()) {\n from(this.customerUseCase.create(dataForm)).subscribe(response => {\n this.notificationService.toastr.show({\n type: isSuccessResponse(response) ? 'success' : 'warning',\n message: `${response.message}`,\n });\n if (isSuccessResponse(response)) {\n this.dialogRef.close(response.data);\n }\n });\n }\n }\n close() {\n this.dialogRef.close();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: CustomerAddEditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: CustomerAddEditComponent, isStandalone: true, selector: \"acp-customer-add-edit\", providers: [\n provideNativeDateAdapter(),\n {\n provide: CustomerUseCase,\n useFactory: () => new CustomerUseCase(new CustomerHttpRepository()),\n },\n {\n provide: CustomerExternalUseCase,\n useFactory: () => new CustomerExternalUseCase(new CustomerExternalHttpRepository()),\n },\n ], ngImport: i0, template: \"<mat-dialog-content>\\n <form\\n (ngSubmit)=\\\"onSave()\\\"\\n id=\\\"formCompanyCustomer\\\"\\n [formGroup]=\\\"customerForm\\\"\\n autocomplete=\\\"off\\\"\\n >\\n <mat-tab-group>\\n <mat-tab label=\\\"DATOS PRINCIPALES\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Identificaci\\u00F3n: </mat-label>\\n <mat-select\\n formControlName=\\\"idTipoIdentificacion\\\"\\n (selectionChange)=\\\"identificationTypeChange($event)\\\"\\n >\\n @for (item of tiposIdentificacion(); track $index) {\\n <mat-option [value]=\\\"item.idTipoIdentificacion\\\"\\n >{{ item.descripcion }}</mat-option\\n >\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>N\\u00FAmero de Identificaci\\u00F3n</mat-label>\\n <input\\n type=\\\"text\\\"\\n matInput\\n (keydown.enter)=\\\"onKeyDownGovernmentId($event)\\\"\\n formControlName=\\\"numeroIdentificacion\\\"\\n />\\n @if ( numeroIdentificacionControl?.invalid && (numeroIdentificacionControl?.dirty ||\\n numeroIdentificacionControl?.touched) ) { @if\\n (numeroIdentificacionControl?.hasError('required')) {\\n <mat-error> El n\\u00FAmero de identificaci\\u00F3n es obligatorio. </mat-error>\\n } @if (numeroIdentificacionControl?.hasError('minlength')) {\\n <mat-error>\\n Debe tener al menos {{\\n numeroIdentificacionControl?.errors?.['minlength'].requiredLength }} d\\u00EDgitos.\\n </mat-error>\\n } @if (numeroIdentificacionControl?.hasError('maxlength')) {\\n <mat-error>\\n No puede tener m\\u00E1s de {{\\n numeroIdentificacionControl?.errors?.['maxlength'].requiredLength }} d\\u00EDgitos.\\n </mat-error>\\n } @if (numeroIdentificacionControl?.hasError('pattern')) {\\n <mat-error> Solo se permiten caracteres num\\u00E9ricos. </mat-error>\\n } @if (numeroIdentificacionControl?.hasError('endsWith001')) {\\n <mat-error> Los \\u00FAltimos tres d\\u00EDgitos deben ser 001. </mat-error>\\n } } @if (showRefresh()) {\\n <ng-container matSuffix>\\n <acp-button\\n type=\\\"button\\\"\\n matStyle=\\\"icon\\\"\\n icon=\\\"refresh\\\"\\n (handleClick)=\\\"onKeyDownGovernmentId($event)\\\"\\n />\\n </ng-container>\\n }\\n </mat-form-field>\\n </div>\\n </div>\\n\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre Fiscal:</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n formControlName=\\\"nombreFiscal\\\"\\n id=\\\"nombreComercial\\\"\\n placeholder=\\\"Ej: TECNOMEGA\\\"\\n acpToUpperCase\\n />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre Comercial:</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n formControlName=\\\"nombreComercial\\\"\\n placeholder=\\\"Ej: TECNOMEGA\\\"\\n acpToUpperCase\\n type=\\\"text\\\"\\n />\\n </mat-form-field>\\n </div>\\n </div>\\n\\n <div>\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Direcci\\u00F3n:</mat-label>\\n <input\\n matInput\\n formControlName=\\\"direccion\\\"\\n placeholder=\\\"AV. 09 DE OCTUBRE...\\\"\\n acpToUpperCase\\n />\\n </mat-form-field>\\n </div>\\n\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-input-chip [chips]=\\\"emails\\\" [labelText]=\\\"'Correo'\\\" />\\n </div>\\n <div class=\\\"col\\\">\\n <acp-input-chip [chips]=\\\"telephones\\\" [labelText]=\\\"'Tel\\u00E9fono'\\\" />\\n </div>\\n </div>\\n\\n @if (isUpdate()) {\\n <div class=\\\"vstack gap-2 mt-2\\\">\\n <span>Estado</span>\\n <mat-slide-toggle formControlName=\\\"estado\\\">\\n {{ customerForm.value.estado ? 'Activo' : 'Inactivo' }}\\n </mat-slide-toggle>\\n </div>\\n }\\n </div>\\n </mat-tab>\\n <mat-tab label=\\\"DATOS ADICIONALES\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-dynamic-card title=\\\"Informaci\\u00F3n B\\u00E1sica\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Contribuyente: </mat-label>\\n <mat-select formControlName=\\\"idSubContribuyente\\\">\\n @for (item of tipoContribuyentes(); track $index) {\\n <mat-option [value]=\\\"item.idSubContribuyente\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tiempo Cr\\u00E9dito: </mat-label>\\n <mat-select formControlName=\\\"idTiempoCredito\\\">\\n @for (item of tiemposCredito(); track $index) {\\n <mat-option [value]=\\\"item.idTiempoCredito\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Ciudad</mat-label>\\n <mat-select formControlName=\\\"idCiudad\\\">\\n <mat-option [value]=\\\"0\\\">-- Ninguno --</mat-option>\\n @for (group of ciudades(); track $index) {\\n <mat-optgroup [label]=\\\"group.nombre\\\">\\n @for (item of group.ciudades; track $index) {\\n <mat-option [value]=\\\"item.idCiudad\\\">{{ item.nombre }}</mat-option>\\n }\\n </mat-optgroup>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Cliente: </mat-label>\\n <mat-select formControlName=\\\"idTipoClienteProveedor\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n @for (item of tiposCliente(); track $index) {\\n <mat-option [value]=\\\"item.idTipoClienteProveedor\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Empresa: </mat-label>\\n <mat-select formControlName=\\\"idEmpresa\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of empresas(); track $index) {\\n <mat-option [value]=\\\"item.idEmpresa\\\"> {{ item.descripcion }} </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Fecha Nacimiento</mat-label>\\n <input matInput [matDatepicker]=\\\"birthDate\\\" formControlName=\\\"birthDate\\\" />\\n <mat-hint>MM/DD/YYYY</mat-hint>\\n <mat-datepicker-toggle matIconSuffix [for]=\\\"birthDate\\\" />\\n <mat-datepicker #birthDate />\\n @if (birthDateCtrl?.invalid && birthDateCtrl?.touched) {\\n <mat-error> Fecha inv\\u00E1lida </mat-error>\\n }\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-dynamic-card>\\n </div>\\n <div class=\\\"col\\\">\\n <acp-dynamic-card title=\\\"Informaci\\u00F3n Laboral\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Empleado: </mat-label>\\n <mat-select formControlName=\\\"idEmpleado\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of employees(); track $index) {\\n <mat-option [value]=\\\"item.idEmpleado\\\">\\n {{ item.nombreCompleto }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Cargo: </mat-label>\\n <mat-select formControlName=\\\"idCargo\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of cargos(); track $index) {\\n <mat-option [value]=\\\"item.idCargo\\\"> {{ item.descripcion }} </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Observaci\\u00F3n</mat-label>\\n <textarea matInput placeholder=\\\"...\\\" formControlName=\\\"nota\\\"></textarea>\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-dynamic-card>\\n </div>\\n </div>\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-dynamic-card title=\\\"Configuraci\\u00F3n Financiera\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-1 row-cols-xl-1 row-cols-lg-1 row-cols-md-1 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Forma de pago: </mat-label>\\n <mat-select formControlName=\\\"idFormaPagoSri\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of formasPagoSri(); track $index) {\\n <mat-option [value]=\\\"item.idFormaPagoSri\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <acp-input-chip labelText=\\\"Placa\\\" [chips]=\\\"placas()\\\" />\\n </div>\\n\\n <div class=\\\"col w-100\\\">\\n <mat-checkbox formControlName=\\\"configValorBruto\\\"\\n >Activar configuraci\\u00F3n de valor bruto\\n <mat-icon\\n matTooltip=\\\"valor total de un bien o servicio sin incluir impuestos, deducciones o descuentos (uso dentro del reporte)\\\"\\n >info</mat-icon\\n ></mat-checkbox\\n >\\n </div>\\n </div>\\n </acp-dynamic-card>\\n </div>\\n <div class=\\\"col\\\"></div>\\n </div>\\n </div>\\n </mat-tab>\\n <mat-tab label=\\\"INFORMACI\\u00D3N CREDITICIA\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-dynamic-card title=\\\"Informaci\\u00F3n Personal\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n formGroupName=\\\"dataInfoCred\\\"\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Estado Civil: </mat-label>\\n <mat-select formControlName=\\\"maritalStatusId\\\">\\n <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n @for (item of maritalStatuses(); track $index) {\\n <mat-option [value]=\\\"item.id\\\"> {{ item.name }} </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Esposo(a):</mat-label>\\n <input\\n matInput\\n formControlName=\\\"conyugeNombre\\\"\\n placeholder=\\\"Nombre del c\\u00F3nyuge\\\"\\n />\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tel\\u00E9fono Personal:</mat-label>\\n <input matInput formControlName=\\\"conyugeTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tel\\u00E9fono Referencia:</mat-label>\\n <input matInput formControlName=\\\"refFamTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Referencia Familiar:</mat-label>\\n <input\\n matInput\\n formControlName=\\\"refFamNombre\\\"\\n placeholder=\\\"Nombre de referencia familiar\\\"\\n />\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-dynamic-card>\\n </div>\\n <div class=\\\"col\\\">\\n <acp-dynamic-card title=\\\"Informaci\\u00F3n de Vivienda\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n formGroupName=\\\"dataInfoCred\\\"\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo de Vivienda: </mat-label>\\n <mat-select formControlName=\\\"housingTypeId\\\">\\n <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n @for (item of housingTypes(); track $index) {\\n <mat-option [value]=\\\"item.id\\\"> {{ item.name }} </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Sector:</mat-label>\\n <input matInput formControlName=\\\"sector\\\" placeholder=\\\"Nombre del sector\\\" />\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Barrio:</mat-label>\\n <input matInput formControlName=\\\"barrio\\\" placeholder=\\\"Nombre del barrio\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Calle:</mat-label>\\n <input matInput formControlName=\\\"calle\\\" placeholder=\\\"Nombre de la calle\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Direcci\\u00F3n Completa</mat-label>\\n <textarea\\n matInput\\n formControlName=\\\"dirVivienda\\\"\\n placeholder=\\\"Direcci\\u00F3n completa de la vivienda (Sector, Barrio y Calle)\\\"\\n ></textarea>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Descripci\\u00F3n del Punto de Referencia:</mat-label>\\n <textarea\\n matInput\\n formControlName=\\\"refDomicilio\\\"\\n placeholder=\\\"Descripci\\u00F3n detallada del punto de referencia\\\"\\n ></textarea>\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-dynamic-card>\\n </div>\\n </div>\\n </div>\\n </mat-tab>\\n </mat-tab-group>\\n </form>\\n</mat-dialog-content>\\n<mat-dialog-actions>\\n <div class=\\\"hstack gap-2\\\">\\n <acp-button type=\\\"submit\\\" variant=\\\"success\\\" form=\\\"formCompanyCustomer\\\" [text]=\\\"btnText()\\\" />\\n <acp-button type=\\\"button\\\" variant=\\\"dark\\\" text=\\\"Cerrar\\\" (handleClick)=\\\"close()\\\" />\\n </div>\\n</mat-dialog-actions>\\n\", styles: [\"\"], dependencies: [{ kind: \"directive\", type: MatDialogContent, selector: \"[mat-dialog-content], mat-dialog-content, [matDialogContent]\" }, { kind: \"directive\", type: MatDialogActions, selector: \"[mat-dialog-actions], mat-dialog-actions, [matDialogActions]\", inputs: [\"align\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i1.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"directive\", type: i1.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"directive\", type: i1.FormGroupName, selector: \"[formGroupName]\", inputs: [\"formGroupName\"] }, { kind: \"ngmodule\", type: MatTabsModule }, { kind: \"component\", type: i2.MatTab, selector: \"mat-tab\", inputs: [\"disabled\", \"label\", \"aria-label\", \"aria-labelledby\", \"labelClass\", \"bodyClass\", \"id\"], exportAs: [\"matTab\"] }, { kind: \"component\", type: i2.MatTabGroup, selector: \"mat-tab-group\", inputs: [\"color\", \"fitInkBarToContent\", \"mat-stretch-tabs\", \"mat-align-tabs\", \"dynamicHeight\", \"selectedIndex\", \"headerPosition\", \"animationDuration\", \"contentTabIndex\", \"disablePagination\", \"disableRipple\", \"preserveContent\", \"backgroundColor\", \"aria-label\", \"aria-labelledby\"], outputs: [\"selectedIndexChange\", \"focusChange\", \"animationDone\", \"selectedTabChange\"], exportAs: [\"matTabGroup\"] }, { kind: \"ngmodule\", type: MatFormFieldModule }, { kind: \"component\", type: i3.MatFormField, selector: \"mat-form-field\", inputs: [\"hideRequiredMarker\", \"color\", \"floatLabel\", \"appearance\", \"subscriptSizing\", \"hintLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i3.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i3.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i3.MatError, selector: \"mat-error, [matError]\", inputs: [\"id\"] }, { kind: \"directive\", type: i3.MatSuffix, selector: \"[matSuffix], [matIconSuffix], [matTextSuffix]\", inputs: [\"matTextSuffix\"] }, { kind: \"ngmodule\", type: MatInputModule }, { kind: \"directive\", type: i4.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\", \"disabledInteractive\"], exportAs: [\"matInput\"] }, { kind: \"ngmodule\", type: MatSelectModule }, { kind: \"component\", type: i5.MatSelect, selector: \"mat-select\", inputs: [\"aria-describedby\", \"panelClass\", \"disabled\", \"disableRipple\", \"tabIndex\", \"hideSingleSelectionIndicator\", \"placeholder\", \"required\", \"multiple\", \"disableOptionCentering\", \"compareWith\", \"value\", \"aria-label\", \"aria-labelledby\", \"errorStateMatcher\", \"typeaheadDebounceInterval\", \"sortComparator\", \"id\", \"panelWidth\", \"canSelectNullableOptions\"], outputs: [\"openedChange\", \"opened\", \"closed\", \"selectionChange\", \"valueChange\"], exportAs: [\"matSelect\"] }, { kind: \"component\", type: i5.MatOption, selector: \"mat-option\", inputs: [\"value\", \"id\", \"disabled\"], outputs: [\"onSelectionChange\"], exportAs: [\"matOption\"] }, { kind: \"component\", type: i5.MatOptgroup, selector: \"mat-optgroup\", inputs: [\"label\", \"disabled\"], exportAs: [\"matOptgroup\"] }, { kind: \"ngmodule\", type: MatSlideToggleModule }, { kind: \"component\", type: i6.MatSlideToggle, selector: \"mat-slide-toggle\", inputs: [\"name\", \"id\", \"labelPosition\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"required\", \"color\", \"disabled\", \"disableRipple\", \"tabIndex\", \"checked\", \"hideIcon\", \"disabledInteractive\"], outputs: [\"change\", \"toggleChange\"], exportAs: [\"matSlideToggle\"] }, { kind: \"component\", type: InputChip, selector: \"acp-input-chip\", inputs: [\"chips\", \"labelText\", \"placelholder\"] }, { kind: \"directive\", type: ToUpperCase, selector: \"[acpToUpperCase]\" }, { kind: \"component\", type: MatCheckbox, selector: \"mat-checkbox\", inputs: [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-expanded\", \"aria-controls\", \"aria-owns\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"disableRipple\", \"tabIndex\", \"color\", \"disabledInteractive\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: MatTooltip, selector: \"[matTooltip]\", inputs: [\"matTooltipPosition\", \"matTooltipPositionAtOrigin\", \"matTooltipDisabled\", \"matTooltipShowDelay\", \"matTooltipHideDelay\", \"matTooltipTouchGestures\", \"matTooltip\", \"matTooltipClass\"], exportAs: [\"matTooltip\"] }, { kind: \"ngmodule\", type: MatDatepickerModule }, { kind: \"component\", type: i7.MatDatepicker, selector: \"mat-datepicker\", exportAs: [\"matDatepicker\"] }, { kind: \"directive\", type: i7.MatDatepickerInput, selector: \"input[matDatepicker]\", inputs: [\"matDatepicker\", \"min\", \"max\", \"matDatepickerFilter\"], exportAs: [\"matDatepickerInput\"] }, { kind: \"component\", type: i7.MatDatepickerToggle, selector: \"mat-datepicker-toggle\", inputs: [\"for\", \"tabIndex\", \"aria-label\", \"disabled\", \"disableRipple\"], exportAs: [\"matDatepickerToggle\"] }, { kind: \"component\", type: Button, selector: \"acp-button\", inputs: [\"variant\", \"text\", \"icon\", \"disabled\", \"type\", \"matStyle\", \"customClass\", \"extended\", \"title\", \"ariaLabel\", \"name\", \"id\", \"form\", \"tabIndex\", \"testId\"], outputs: [\"handleClick\"] }, { kind: \"component\", type: DynamicCard, selector: \"acp-dynamic-card\", inputs: [\"cardTitle\", \"cardSubtitle\", \"avatarImageUrl\", \"isHeaderVisible\", \"contentPadding\", \"hasDivider\", \"areActionsVisible\", \"primaryButtonText\", \"secondaryButtonText\", \"primaryButtonIcon\", \"secondaryButtonIcon\", \"buttonsPosition\"], outputs: [\"primaryButtonClicked\", \"secondaryButtonClicked\", \"cardClicked\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: CustomerAddEditComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-customer-add-edit', imports: [\n MatDialogContent,\n MatDialogActions,\n MatButtonModule,\n ReactiveFormsModule,\n MatTabsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatSlideToggleModule,\n InputChip,\n ToUpperCase,\n MatCheckbox,\n MatIcon,\n MatTooltip,\n MatDatepickerModule,\n Button,\n DynamicCard,\n ], providers: [\n provideNativeDateAdapter(),\n {\n provide: CustomerUseCase,\n useFactory: () => new CustomerUseCase(new CustomerHttpRepository()),\n },\n {\n provide: CustomerExternalUseCase,\n useFactory: () => new CustomerExternalUseCase(new CustomerExternalHttpRepository()),\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-dialog-content>\\n <form\\n (ngSubmit)=\\\"onSave()\\\"\\n id=\\\"formCompanyCustomer\\\"\\n [formGroup]=\\\"customerForm\\\"\\n autocomplete=\\\"off\\\"\\n >\\n <mat-tab-group>\\n <mat-tab label=\\\"DATOS PRINCIPALES\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Identificaci\\u00F3n: </mat-label>\\n <mat-select\\n formControlName=\\\"idTipoIdentificacion\\\"\\n (selectionChange)=\\\"identificationTypeChange($event)\\\"\\n >\\n @for (item of tiposIdentificacion(); track $index) {\\n <mat-option [value]=\\\"item.idTipoIdentificacion\\\"\\n >{{ item.descripcion }}</mat-option\\n >\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>N\\u00FAmero de Identificaci\\u00F3n</mat-label>\\n <input\\n type=\\\"text\\\"\\n matInput\\n (keydown.enter)=\\\"onKeyDownGovernmentId($event)\\\"\\n formControlName=\\\"numeroIdentificacion\\\"\\n />\\n @if ( numeroIdentificacionControl?.invalid && (numeroIdentificacionControl?.dirty ||\\n numeroIdentificacionControl?.touched) ) { @if\\n (numeroIdentificacionControl?.hasError('required')) {\\n <mat-error> El n\\u00FAmero de identificaci\\u00F3n es obligatorio. </mat-error>\\n } @if (numeroIdentificacionControl?.hasError('minlength')) {\\n <mat-error>\\n Debe tener al menos {{\\n numeroIdentificacionControl?.errors?.['minlength'].requiredLength }} d\\u00EDgitos.\\n </mat-error>\\n } @if (numeroIdentificacionControl?.hasError('maxlength')) {\\n <mat-error>\\n No puede tener m\\u00E1s de {{\\n numeroIdentificacionControl?.errors?.['maxlength'].requiredLength }} d\\u00EDgitos.\\n </mat-error>\\n } @if (numeroIdentificacionControl?.hasError('pattern')) {\\n <mat-error> Solo se permiten caracteres num\\u00E9ricos. </mat-error>\\n } @if (numeroIdentificacionControl?.hasError('endsWith001')) {\\n <mat-error> Los \\u00FAltimos tres d\\u00EDgitos deben ser 001. </mat-error>\\n } } @if (showRefresh()) {\\n <ng-container matSuffix>\\n <acp-button\\n type=\\\"button\\\"\\n matStyle=\\\"icon\\\"\\n icon=\\\"refresh\\\"\\n (handleClick)=\\\"onKeyDownGovernmentId($event)\\\"\\n />\\n </ng-container>\\n }\\n </mat-form-field>\\n </div>\\n </div>\\n\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre Fiscal:</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n formControlName=\\\"nombreFiscal\\\"\\n id=\\\"nombreComercial\\\"\\n placeholder=\\\"Ej: TECNOMEGA\\\"\\n acpToUpperCase\\n />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre Comercial:</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n formControlName=\\\"nombreComercial\\\"\\n placeholder=\\\"Ej: TECNOMEGA\\\"\\n acpToUpperCase\\n type=\\\"text\\\"\\n />\\n </mat-form-field>\\n </div>\\n </div>\\n\\n <div>\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Direcci\\u00F3n:</mat-label>\\n <input\\n matInput\\n formControlName=\\\"direccion\\\"\\n placeholder=\\\"AV. 09 DE OCTUBRE...\\\"\\n acpToUpperCase\\n />\\n </mat-form-field>\\n </div>\\n\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-input-chip [chips]=\\\"emails\\\" [labelText]=\\\"'Correo'\\\" />\\n </div>\\n <div class=\\\"col\\\">\\n <acp-input-chip [chips]=\\\"telephones\\\" [labelText]=\\\"'Tel\\u00E9fono'\\\" />\\n </div>\\n </div>\\n\\n @if (isUpdate()) {\\n <div class=\\\"vstack gap-2 mt-2\\\">\\n <span>Estado</span>\\n <mat-slide-toggle formControlName=\\\"estado\\\">\\n {{ customerForm.value.estado ? 'Activo' : 'Inactivo' }}\\n </mat-slide-toggle>\\n </div>\\n }\\n </div>\\n </mat-tab>\\n <mat-tab label=\\\"DATOS ADICIONALES\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-dynamic-card title=\\\"Informaci\\u00F3n B\\u00E1sica\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Contribuyente: </mat-label>\\n <mat-select formControlName=\\\"idSubContribuyente\\\">\\n @for (item of tipoContribuyentes(); track $index) {\\n <mat-option [value]=\\\"item.idSubContribuyente\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tiempo Cr\\u00E9dito: </mat-label>\\n <mat-select formControlName=\\\"idTiempoCredito\\\">\\n @for (item of tiemposCredito(); track $index) {\\n <mat-option [value]=\\\"item.idTiempoCredito\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Ciudad</mat-label>\\n <mat-select formControlName=\\\"idCiudad\\\">\\n <mat-option [value]=\\\"0\\\">-- Ninguno --</mat-option>\\n @for (group of ciudades(); track $index) {\\n <mat-optgroup [label]=\\\"group.nombre\\\">\\n @for (item of group.ciudades; track $index) {\\n <mat-option [value]=\\\"item.idCiudad\\\">{{ item.nombre }}</mat-option>\\n }\\n </mat-optgroup>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Cliente: </mat-label>\\n <mat-select formControlName=\\\"idTipoClienteProveedor\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n @for (item of tiposCliente(); track $index) {\\n <mat-option [value]=\\\"item.idTipoClienteProveedor\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Empresa: </mat-label>\\n <mat-select formControlName=\\\"idEmpresa\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of empresas(); track $index) {\\n <mat-option [value]=\\\"item.idEmpresa\\\"> {{ item.descripcion }} </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Fecha Nacimiento</mat-label>\\n <input matInput [matDatepicker]=\\\"birthDate\\\" formControlName=\\\"birthDate\\\" />\\n <mat-hint>MM/DD/YYYY</mat-hint>\\n <mat-datepicker-toggle matIconSuffix [for]=\\\"birthDate\\\" />\\n <mat-datepicker #birthDate />\\n @if (birthDateCtrl?.invalid && birthDateCtrl?.touched) {\\n <mat-error> Fecha inv\\u00E1lida </mat-error>\\n }\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-dynamic-card>\\n </div>\\n <div class=\\\"col\\\">\\n <acp-dynamic-card title=\\\"Informaci\\u00F3n Laboral\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Empleado: </mat-label>\\n <mat-select formControlName=\\\"idEmpleado\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of employees(); track $index) {\\n <mat-option [value]=\\\"item.idEmpleado\\\">\\n {{ item.nombreCompleto }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Cargo: </mat-label>\\n <mat-select formControlName=\\\"idCargo\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of cargos(); track $index) {\\n <mat-option [value]=\\\"item.idCargo\\\"> {{ item.descripcion }} </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Observaci\\u00F3n</mat-label>\\n <textarea matInput placeholder=\\\"...\\\" formControlName=\\\"nota\\\"></textarea>\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-dynamic-card>\\n </div>\\n </div>\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-dynamic-card title=\\\"Configuraci\\u00F3n Financiera\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-1 row-cols-xl-1 row-cols-lg-1 row-cols-md-1 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Forma de pago: </mat-label>\\n <mat-select formControlName=\\\"idFormaPagoSri\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of formasPagoSri(); track $index) {\\n <mat-option [value]=\\\"item.idFormaPagoSri\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <acp-input-chip labelText=\\\"Placa\\\" [chips]=\\\"placas()\\\" />\\n </div>\\n\\n <div class=\\\"col w-100\\\">\\n <mat-checkbox formControlName=\\\"configValorBruto\\\"\\n >Activar configuraci\\u00F3n de valor bruto\\n <mat-icon\\n matTooltip=\\\"valor total de un bien o servicio sin incluir impuestos, deducciones o descuentos (uso dentro del reporte)\\\"\\n >info</mat-icon\\n ></mat-checkbox\\n >\\n </div>\\n </div>\\n </acp-dynamic-card>\\n </div>\\n <div class=\\\"col\\\"></div>\\n </div>\\n </div>\\n </mat-tab>\\n <mat-tab label=\\\"INFORMACI\\u00D3N CREDITICIA\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-dynamic-card title=\\\"Informaci\\u00F3n Personal\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n formGroupName=\\\"dataInfoCred\\\"\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Estado Civil: </mat-label>\\n <mat-select formControlName=\\\"maritalStatusId\\\">\\n <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n @for (item of maritalStatuses(); track $index) {\\n <mat-option [value]=\\\"item.id\\\"> {{ item.name }} </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Esposo(a):</mat-label>\\n <input\\n matInput\\n formControlName=\\\"conyugeNombre\\\"\\n placeholder=\\\"Nombre del c\\u00F3nyuge\\\"\\n />\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tel\\u00E9fono Personal:</mat-label>\\n <input matInput formControlName=\\\"conyugeTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tel\\u00E9fono Referencia:</mat-label>\\n <input matInput formControlName=\\\"refFamTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Referencia Familiar:</mat-label>\\n <input\\n matInput\\n formControlName=\\\"refFamNombre\\\"\\n placeholder=\\\"Nombre de referencia familiar\\\"\\n />\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-dynamic-card>\\n </div>\\n <div class=\\\"col\\\">\\n <acp-dynamic-card title=\\\"Informaci\\u00F3n de Vivienda\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n formGroupName=\\\"dataInfoCred\\\"\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo de Vivienda: </mat-label>\\n <mat-select formControlName=\\\"housingTypeId\\\">\\n <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n @for (item of housingTypes(); track $index) {\\n <mat-option [value]=\\\"item.id\\\"> {{ item.name }} </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Sector:</mat-label>\\n <input matInput formControlName=\\\"sector\\\" placeholder=\\\"Nombre del sector\\\" />\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Barrio:</mat-label>\\n <input matInput formControlName=\\\"barrio\\\" placeholder=\\\"Nombre del barrio\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Calle:</mat-label>\\n <input matInput formControlName=\\\"calle\\\" placeholder=\\\"Nombre de la calle\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Direcci\\u00F3n Completa</mat-label>\\n <textarea\\n matInput\\n formControlName=\\\"dirVivienda\\\"\\n placeholder=\\\"Direcci\\u00F3n completa de la vivienda (Sector, Barrio y Calle)\\\"\\n ></textarea>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Descripci\\u00F3n del Punto de Referencia:</mat-label>\\n <textarea\\n matInput\\n formControlName=\\\"refDomicilio\\\"\\n placeholder=\\\"Descripci\\u00F3n detallada del punto de referencia\\\"\\n ></textarea>\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-dynamic-card>\\n </div>\\n </div>\\n </div>\\n </mat-tab>\\n </mat-tab-group>\\n </form>\\n</mat-dialog-content>\\n<mat-dialog-actions>\\n <div class=\\\"hstack gap-2\\\">\\n <acp-button type=\\\"submit\\\" variant=\\\"success\\\" form=\\\"formCompanyCustomer\\\" [text]=\\\"btnText()\\\" />\\n <acp-button type=\\\"button\\\" variant=\\\"dark\\\" text=\\\"Cerrar\\\" (handleClick)=\\\"close()\\\" />\\n </div>\\n</mat-dialog-actions>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItYWRkLWVkaXQtZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi91aS9jb21wb25lbnRzL2N1c3RvbWVyLWFkZC1lZGl0L2N1c3RvbWVyLWFkZC1lZGl0LWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvdWkvY29tcG9uZW50cy9jdXN0b21lci1hZGQtZWRpdC9jdXN0b21lci1hZGQtZWRpdC1kaWFsb2cuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFlBQVksR0FDYixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsbUJBQW1CLEVBRW5CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENB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d0JBQ2xCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLFNBQVM7d0JBQ1QsV0FBVzt3QkFDWCxXQUFXO3dCQUNYLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixtQkFBbUI7d0JBQ25CLE1BQU07d0JBQ04sV0FBVztxQkFDWixhQUdVO3dCQUNULHdCQUF3QixFQUFFO3dCQUMxQjs0QkFDRSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksc0JBQXNCLEVBQUUsQ0FBQzt5QkFDcEU7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHVCQUF1Qjs0QkFDaEMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO3lCQUNwRjtxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgc2lnbmFsLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcmtKb2luLCBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb250cGx1cy9uZy1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIE1BVF9ESUFMT0dfREFUQSxcbiAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgTWF0RGlhbG9nQ29udGVudCxcbiAgTWF0RGlhbG9nUmVmLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRHluYW1pY0NhcmQsIElucHV0Q2hpcCwgQnV0dG9uLCBUb1VwcGVyQ2FzZSB9IGZyb20gJ0BhY29udHBsdXMvbmctY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlLCBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3ggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBwcm92aWRlTmF0aXZlRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gIFNFUEFSQURPUkVTX1JFR0VYLFxuICBTRVBBUkFUT1JfS0VZX0NPREUsXG4gIFNSSV9ET0NVTUVOVF9UWVBFLFxuICBpc1N1Y2Nlc3NSZXNwb25zZSxcbn0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcbmltcG9ydCB7IEN1c3RvbWVyVXNlQ2FzZSB9IGZyb20gJy4uLy4uLy4uL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9jdXN0b21lci11c2UtY2FzZSc7XG5pbXBvcnQgeyBDdXN0b21lckV4dGVybmFsVXNlQ2FzZSB9IGZyb20gJy4uLy4uLy4uL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9jdXN0b21lci1leHRlcm5hbC11c2UtY2FzZSc7XG5pbXBvcnQgeyBDdXN0b21lckh0dHBSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvcmVwb3NpdG9yaWVzL2N1c3RvbWVyLWh0dHAtcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBDdXN0b21lckV4dGVybmFsSHR0cFJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi8uLi9pbmZyYXN0cnVjdHVyZS9yZXBvc2l0b3JpZXMvY3VzdG9tZXItZXh0ZXJuYWwtaHR0cC1yZXBvc2l0b3J5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLWN1c3RvbWVyLWFkZC1lZGl0JyxcbiAgaW1wb3J0czogW1xuICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gICAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgSW5wdXRDaGlwLFxuICAgIFRvVXBwZXJDYXNlLFxuICAgIE1hdENoZWNrYm94LFxuICAgIE1hdEljb24sXG4gICAgTWF0VG9vbHRpcCxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIEJ1dHRvbixcbiAgICBEeW5hbWljQ2FyZCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbWVyLWFkZC1lZGl0LWRpYWxvZy5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2N1c3RvbWVyLWFkZC1lZGl0LWRpYWxvZy5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZU5hdGl2ZURhdGVBZGFwdGVyKCksXG4gICAge1xuICAgICAgcHJvdmlkZTogQ3VzdG9tZXJVc2VDYXNlLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gbmV3IEN1c3RvbWVyVXNlQ2FzZShuZXcgQ3VzdG9tZXJIdHRwUmVwb3NpdG9yeSgpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEN1c3RvbWVyRXh0ZXJuYWxVc2VDYXNlLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gbmV3IEN1c3RvbWVyRXh0ZXJuYWxVc2VDYXNlKG5ldyBDdXN0b21lckV4dGVybmFsSHR0cFJlcG9zaXRvcnkoKSksXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbWVyQWRkRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxDdXN0b21lckFkZEVkaXRDb21wb25lbnQ+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21lclVzZUNhc2UgPSBpbmplY3QoQ3VzdG9tZXJVc2VDYXNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21lckV4dGVybmFsVXNlQ2FzZSA9IGluamVjdChDdXN0b21lckV4dGVybmFsVXNlQ2FzZSk7XG4gIGJ0blRleHQgPSBzaWduYWwoJ0d1YXJkYXInKTtcblxuICByZWFkb25seSBwYXJhbXNPcHRpb25zID0gaW5qZWN0PHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGRlc2NyaXBjaW9uOiBudWxsIHwgc3RyaW5nO1xuICAgIGRhdGFPZlNyaT86IGJvb2xlYW47XG4gICAgbnVtZXJvSWRlbnRpZmljYWNpb24/OiBzdHJpbmc7XG4gICAgY29kaWdvU3JpPzogc3RyaW5nO1xuICAgIGRhdGE6IGFueTtcbiAgfT4oTUFUX0RJQUxPR19EQVRBKTtcblxuICByZWFkb25seSBwYXJhbXMgPSB0aGlzLnBhcmFtc09wdGlvbnMuZGF0YTtcblxuICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uU2VydmljZSk7XG5cbiAgdGl0bGUgPSAnTnVldm8gQ2xpZW50ZSc7XG5cbiAgbG9hZGluZyA9IGZhbHNlO1xuXG4gIGVtYWlsczogc3RyaW5nW10gPSBbXTtcblxuICB0ZWxlcGhvbmVzOiBzdHJpbmdbXSA9IFtdO1xuICB0aWVtcG9zQ3JlZGl0byA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICB0aXBvQ29udHJpYnV5ZW50ZXMgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgdGlwb3NDbGllbnRlID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIHRpcG9zSWRlbnRpZmljYWNpb24gPSBzaWduYWw8YW55W10+KFtdKTtcbiAgZm9ybWFzUGFnb1NyaSA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICBwbGFjYXMgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgY2l1ZGFkZXMgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgY2FyZ29zID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIGVtcHJlc2FzID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIGVtcGxveWVlcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuXG4gIG1hcml0YWxTdGF0dXNlcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICBob3VzaW5nVHlwZXMgPSBzaWduYWw8YW55W10+KFtdKTtcblxuICBzaG93UmVmcmVzaCA9IHNpZ25hbCh0cnVlKTtcblxuICBlbmRzV2l0aDAwMVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPj0gMykge1xuICAgICAgaWYgKCF2YWx1ZS5lbmRzV2l0aCgnMDAxJykpIHtcbiAgICAgICAgcmV0dXJuIHsgZW5kc1dpdGgwMDE6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY3VzdG9tZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgZGlyZWNjaW9uOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGlkQ2FyZ286IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICBpZENsaWVudGU6IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICBpZEVtcHJlc2E6IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICBpZEZvcm1hUGFnb1NyaTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oMCksXG4gICAgaWRUaXBvQ2xpZW50ZVByb3ZlZWRvcjogbmV3IEZvcm1Db250cm9sKDApLFxuICAgIGlkVGlwb0lkZW50aWZpY2FjaW9uOiBuZXcgRm9ybUNvbnRyb2woMCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgaWRTdWJDb250cmlidXllbnRlOiBuZXcgRm9ybUNvbnRyb2woMCksXG4gICAgaWRUaWVtcG9DcmVkaXRvOiBuZXcgRm9ybUNvbnRyb2woMCksXG4gICAgaWRDaXVkYWQ6IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICBpZEVtcGxlYWRvOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgdW5kZWZpbmVkPigwKSxcbiAgICBub21icmVGaXNjYWw6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgbm9tYnJlQ29tZXJjaWFsOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgIG51bWVyb0lkZW50aWZpY2FjaW9uOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiBmYWxzZSB9LCBbXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTMpLFxuICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTMpLFxuICAgICAgdGhpcy5lbmRzV2l0aDAwMVZhbGlkYXRvcixcbiAgICBdKSxcbiAgICBjb3JyZW86IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgdGVsZWZvbm86IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgcGxhY2E6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgbm90YTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICBlc3RhZG86IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXG4gICAgYmlydGhEYXRlOiBuZXcgRm9ybUNvbnRyb2w8RGF0ZSB8IG51bGw+KG51bGwpLFxuICAgIHZhbGlkYXRpb25Tcmk6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXG4gICAgY29uZmlnVmFsb3JCcnV0bzogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcbiAgICBkYXRhSW5mb0NyZWQ6IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgbWFyaXRhbFN0YXR1c0lkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCksXG4gICAgICBjb255dWdlTm9tYnJlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICBjb255dWdlVGVsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICByZWZGYW1Ob21icmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgIHJlZkZhbVRlbDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgaG91c2luZ1R5cGVJZDogbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwpLFxuICAgICAgZGlyVml2aWVuZGE6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgIHJlZkRvbWljaWxpbzogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgc2VjdG9yOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICBiYXJyaW86IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgIGNhbGxlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgfSksXG4gIH0pO1xuXG4gIGdldEN1c3RvbWVyKGNvZGlnbzogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICB2YWxpZGF0aW9uU3JpOiBmYWxzZSxcbiAgICB9KTtcbiAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLmNoZWNrRXhpc3RlbmNlKGlkKSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmIChpc1N1Y2Nlc3NSZXNwb25zZShyZXNwb25zZSkgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICBhbGVydCgnRWwgY2xpZW50ZSB5YSBzZSBlbmN1ZW50cmEgcmVnaXN0cmFkbyBlbiBzdSBlbXByZXNhJyk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdHIuc2hvdyh7XG4gICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdFbCBjbGllbnRlIHlhIHNlIGVuY3VlbnRyYSByZWdpc3RyYWRvIGVuIHN1IGVtcHJlc2EnLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7IG51bWVyb0lkZW50aWZpY2FjaW9uOiBudWxsIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChjb2RpZ28gPT09IFNSSV9ET0NVTUVOVF9UWVBFLlBBU1NQT1JUKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tZXJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHZhbGlkYXRpb25Tcmk6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmcm9tKHRoaXMuY3VzdG9tZXJFeHRlcm5hbFVzZUNhc2UuZ2V0QnlJZChpZCkpLnN1YnNjcmliZShzZWNvbmRSZXNwb25zZSA9PiB7XG4gICAgICAgIGlmICghaXNTdWNjZXNzUmVzcG9uc2Uoc2Vjb25kUmVzcG9uc2UpIHx8ICFzZWNvbmRSZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0ci5zaG93KHtcbiAgICAgICAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcgIE5vIHNlIGVuY29udHLDsyBpbmZvcm1hY2nDs24gZW4gZWwgU1JJJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHBob25lLFxuICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgIGlkQ2FyZCwgLy8gbnVtZXJvUnVjXG4gICAgICAgICAgYnVzaW5lc3NOYW1lLCAvLyByYXpvblNvY2lhbFxuICAgICAgICAgIGFkZHJlc3MsIC8vIGRpcmVjY2lvblxuICAgICAgICB9ID0gc2Vjb25kUmVzcG9uc2UuZGF0YSBhcyBhbnk7XG5cbiAgICAgICAgaWYgKHBob25lICYmIHR5cGVvZiBwaG9uZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLnRlbGVwaG9uZXMgPSBwaG9uZS5zcGxpdChTRVBBUkFET1JFU19SRUdFWCkgfHwgW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVtYWlsICYmIHR5cGVvZiBlbWFpbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLmVtYWlscyA9IGVtYWlsLnNwbGl0KFNFUEFSQURPUkVTX1JFR0VYKSB8fCBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWRDYXJkKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICBudW1lcm9JZGVudGlmaWNhY2lvbjogaWRDYXJkLFxuICAgICAgICAgICAgbm9tYnJlRmlzY2FsOiBidXNpbmVzc05hbWUsXG4gICAgICAgICAgICB2YWxpZGF0aW9uU3JpOiB0cnVlLFxuICAgICAgICAgICAgZGlyZWNjaW9uOiBhZGRyZXNzLFxuICAgICAgICAgICAgbm9tYnJlQ29tZXJjaWFsOiBidXNpbmVzc05hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TG9hZERhdGEoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy5pc1VwZGF0ZSgpKSB7XG4gICAgICByZXR1cm4gZm9ya0pvaW4oW1xuICAgICAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLmdldEZvcm1EYXRhKCkpLFxuICAgICAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLmdldEJ5SWQodGhpcy5wYXJhbXMuaWQpKSxcbiAgICAgIF0pO1xuICAgIH1cbiAgICByZXR1cm4gZnJvbSh0aGlzLmN1c3RvbWVyVXNlQ2FzZS5nZXRGb3JtRGF0YSgpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmdldExvYWREYXRhKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgbGV0IG1haW5EYXRhRm9ybSA9IHt9IGFzIGFueTtcbiAgICAgICAgbGV0IGRhdGFDb21wYW55Q3VzdG9tZXIgPSB7fSBhcyBhbnk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3BvbnNlKSkge1xuICAgICAgICAgIG1haW5EYXRhRm9ybSA9IHJlc3BvbnNlWzBdLmRhdGE7XG4gICAgICAgICAgZGF0YUNvbXBhbnlDdXN0b21lciA9IHJlc3BvbnNlWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1haW5EYXRhRm9ybSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRpcG9zSWRlbnRpZmljYWNpb24uc2V0KG1haW5EYXRhRm9ybS50aXBvSWRlbnRpZmljYWNpb24pO1xuICAgICAgICB0aGlzLnRpZW1wb3NDcmVkaXRvLnNldChtYWluRGF0YUZvcm0udGllbXBvQ3JlZGl0b3MpO1xuICAgICAgICB0aGlzLnRpcG9Db250cmlidXllbnRlcy5zZXQobWFpbkRhdGFGb3JtLnRpcG9Db250cmlidXllbnRlcyk7XG4gICAgICAgIHRoaXMuZm9ybWFzUGFnb1NyaS5zZXQobWFpbkRhdGFGb3JtLmZvcm1hc1BhZ29TcmkpO1xuICAgICAgICB0aGlzLnRpcG9zQ2xpZW50ZS5zZXQobWFpbkRhdGFGb3JtLnRpcG9zQ2xpZW50ZSk7XG4gICAgICAgIHRoaXMuY2l1ZGFkZXMuc2V0KG1haW5EYXRhRm9ybS5jaXVkYWRlcyk7XG4gICAgICAgIHRoaXMuY2FyZ29zLnNldChtYWluRGF0YUZvcm0uY2FyZ29zKTtcbiAgICAgICAgdGhpcy5lbXByZXNhcy5zZXQobWFpbkRhdGFGb3JtLmVtcHJlc2FzKTtcbiAgICAgICAgdGhpcy5lbXBsb3llZXMuc2V0KG1haW5EYXRhRm9ybS5lbXBsb3llZXMpO1xuICAgICAgICB0aGlzLm1hcml0YWxTdGF0dXNlcy5zZXQobWFpbkRhdGFGb3JtLm1hcml0YWxTdGF0dXNlcyk7XG4gICAgICAgIHRoaXMuaG91c2luZ1R5cGVzLnNldChtYWluRGF0YUZvcm0uaG91c2luZ1R5cGVzKTtcblxuICAgICAgICBpZiAodGhpcy5pc0RhdGFPZlNyaSgpKSB7XG4gICAgICAgICAgY29uc3QgeyBjb2RpZ29TcmksIG51bWVyb0lkZW50aWZpY2FjaW9uIH0gPSB0aGlzLnBhcmFtcztcblxuICAgICAgICAgIGNvbnN0IGRhdGFJZGVudGlmaWNhY2lvbiA9IHRoaXMudGlwb3NJZGVudGlmaWNhY2lvbigpLmZpbmQoXG4gICAgICAgICAgICAodGk6IGFueSkgPT4gdGkuY29kaWdvU3JpID09PSBjb2RpZ29TcmksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChkYXRhSWRlbnRpZmljYWNpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGlkVGlwb0lkZW50aWZpY2FjaW9uQ3RybCA9IHRoaXMuY3VzdG9tZXJGb3JtLmdldChcbiAgICAgICAgICAgICAgJ2lkVGlwb0lkZW50aWZpY2FjaW9uJyxcbiAgICAgICAgICAgICkgYXMgRm9ybUNvbnRyb2w8bnVtYmVyPiB8IG51bGw7XG4gICAgICAgICAgICBpZFRpcG9JZGVudGlmaWNhY2lvbkN0cmw/LnNldFZhbHVlKGRhdGFJZGVudGlmaWNhY2lvbi5pZFRpcG9JZGVudGlmaWNhY2lvbiBhcyBudW1iZXIpO1xuXG4gICAgICAgICAgICBjb25zdCBudW1lcm9JZGVudGlmaWNhY2lvbkN0cmwgPSB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoXG4gICAgICAgICAgICAgICdudW1lcm9JZGVudGlmaWNhY2lvbicsXG4gICAgICAgICAgICApIGFzIEZvcm1Db250cm9sPHN0cmluZz4gfCBudWxsO1xuICAgICAgICAgICAgbnVtZXJvSWRlbnRpZmljYWNpb25DdHJsPy5zZXRWYWx1ZShudW1lcm9JZGVudGlmaWNhY2lvbiBhcyBzdHJpbmcpO1xuXG4gICAgICAgICAgICBjb25zdCBpZFRpZW1wb0NyZWRpdG9DdHJsID0gdGhpcy5jdXN0b21lckZvcm0uZ2V0KFxuICAgICAgICAgICAgICAnaWRUaWVtcG9DcmVkaXRvJyxcbiAgICAgICAgICAgICkgYXMgRm9ybUNvbnRyb2w8bnVtYmVyPiB8IG51bGw7XG4gICAgICAgICAgICBpZFRpZW1wb0NyZWRpdG9DdHJsPy5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgdGhpcy50aWVtcG9zQ3JlZGl0bygpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/ICh0aGlzLnRpZW1wb3NDcmVkaXRvKClbMF0uaWRUaWVtcG9DcmVkaXRvIGFzIG51bWJlcilcbiAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE51bWVyb0lkZW50aWZpY2FjaW9uKGRhdGFJZGVudGlmaWNhY2lvbi5jb2RpZ29TcmkpO1xuXG4gICAgICAgICAgICB0aGlzLm9uS2V5RG93bkdvdmVybm1lbnRJZCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ3JlYXRlKCkpIHtcbiAgICAgICAgICBjb25zdCBkYXRhSWRlbnRpZmljYWNpb24gPSB0aGlzLnRpcG9zSWRlbnRpZmljYWNpb24oKS5maW5kKFxuICAgICAgICAgICAgKHRpOiBhbnkpID0+IHRpLmNvZGlnb1NyaSA9PT0gU1JJX0RPQ1VNRU5UX1RZUEUuUlVDLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoZGF0YUlkZW50aWZpY2FjaW9uKSB7XG4gICAgICAgICAgICBjb25zdCBpZFRpcG9JZGVudGlmaWNhY2lvbkN0cmwgPSB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoXG4gICAgICAgICAgICAgICdpZFRpcG9JZGVudGlmaWNhY2lvbicsXG4gICAgICAgICAgICApIGFzIEZvcm1Db250cm9sPG51bWJlcj4gfCBudWxsO1xuICAgICAgICAgICAgaWRUaXBvSWRlbnRpZmljYWNpb25DdHJsPy5zZXRWYWx1ZShkYXRhSWRlbnRpZmljYWNpb24uaWRUaXBvSWRlbnRpZmljYWNpb24gYXMgbnVtYmVyKTtcbiAgICAgICAgICAgIHRoaXMuc2V0SWRlbnRpZmljYXRpb25UeXBlQ2hhbmdlKGRhdGFJZGVudGlmaWNhY2lvbi5jb2RpZ29TcmkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGlkVGllbXBvQ3JlZGl0b0N0cmwgPSB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoXG4gICAgICAgICAgICAnaWRUaWVtcG9DcmVkaXRvJyxcbiAgICAgICAgICApIGFzIEZvcm1Db250cm9sPG51bWJlcj4gfCBudWxsO1xuICAgICAgICAgIGlkVGllbXBvQ3JlZGl0b0N0cmw/LnNldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy50aWVtcG9zQ3JlZGl0bygpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyAodGhpcy50aWVtcG9zQ3JlZGl0bygpWzBdLmlkVGllbXBvQ3JlZGl0byBhcyBudW1iZXIpXG4gICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudGl0bGUgPSAnRWRpdGFyIENsaWVudGUnO1xuICAgICAgICAgIHRoaXMuYnRuVGV4dC5zZXQoJ0FjdHVhbGl6YXInKTtcbiAgICAgICAgICB0aGlzLmVtYWlscyA9IGRhdGFDb21wYW55Q3VzdG9tZXIuY29ycmVvcztcbiAgICAgICAgICB0aGlzLnRlbGVwaG9uZXMgPSBkYXRhQ29tcGFueUN1c3RvbWVyLnRlbGVmb25vcztcbiAgICAgICAgICB0aGlzLnBsYWNhcy5zZXQoZGF0YUNvbXBhbnlDdXN0b21lci5wbGFjYXMpO1xuICAgICAgICAgIGNvbnN0IHsgZGF0YUluZm9DcmVkLCAuLi5yZXN0IH0gPSBkYXRhQ29tcGFueUN1c3RvbWVyO1xuICAgICAgICAgIHRoaXMuY3VzdG9tZXJGb3JtLnBhdGNoVmFsdWUocmVzdCk7XG4gICAgICAgICAgaWYgKGRhdGFJbmZvQ3JlZCkge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdkYXRhSW5mb0NyZWQnKT8ucGF0Y2hWYWx1ZShkYXRhSW5mb0NyZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sTnVtZXJvSWRlbnRpZmljYWNpb24ocmVzdC5jb2RpZ29TcmkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEhhbmRsZSBlcnJvciBhcHByb3ByaWF0ZWx5XG4gICAgfVxuICB9XG5cbiAgaWRlbnRpZmljYXRpb25UeXBlQ2hhbmdlKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpIHtcbiAgICBjb25zdCBkdCA9IHRoaXMudGlwb3NJZGVudGlmaWNhY2lvbigpLmZpbmQoXG4gICAgICBpdGVtID0+IGl0ZW0uaWRUaXBvSWRlbnRpZmljYWNpb24gPT09IE51bWJlcihldmVudC52YWx1ZSksXG4gICAgKTtcbiAgICB0aGlzLnNldElkZW50aWZpY2F0aW9uVHlwZUNoYW5nZShkdC5jb2RpZ29TcmkpO1xuICB9XG5cbiAgdXBkYXRlRm9ybUNvbnRyb2xOdW1lcm9JZGVudGlmaWNhY2lvbihcbiAgICBjb2RpZ29Tcmk6IFNSSV9ET0NVTUVOVF9UWVBFLlJVQyB8IFNSSV9ET0NVTUVOVF9UWVBFLkNFRFVMQSxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgaWROdW1iZXJDb250cm9sID0gdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdudW1lcm9JZGVudGlmaWNhY2lvbicpO1xuXG4gICAgdGhpcy5zaG93UmVmcmVzaC5zZXQoZmFsc2UpO1xuXG4gICAgaWYgKFtTUklfRE9DVU1FTlRfVFlQRS5SVUMsIFNSSV9ET0NVTUVOVF9UWVBFLkNFRFVMQV0uaW5jbHVkZXMoY29kaWdvU3JpKSkge1xuICAgICAgbGV0IGxlbmd0aFZhbGlkYXRvcjtcbiAgICAgIHRoaXMuc2hvd1JlZnJlc2guc2V0KHRydWUpO1xuXG4gICAgICBpZiAoY29kaWdvU3JpID09PSBTUklfRE9DVU1FTlRfVFlQRS5DRURVTEEpIHtcbiAgICAgICAgbGVuZ3RoVmFsaWRhdG9yID0gW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApXTtcbiAgICAgIH0gZWxzZSBpZiAoY29kaWdvU3JpID09PSBTUklfRE9DVU1FTlRfVFlQRS5SVUMpIHtcbiAgICAgICAgbGVuZ3RoVmFsaWRhdG9yID0gW1xuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEzKSxcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMyksXG4gICAgICAgICAgdGhpcy5lbmRzV2l0aDAwMVZhbGlkYXRvcixcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGlmIChsZW5ndGhWYWxpZGF0b3IpIHtcbiAgICAgICAgaWROdW1iZXJDb250cm9sPy5zZXRWYWxpZGF0b3JzKFtcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXlxcZCskLyksIC8vIFNvbG8gbsO6bWVyb3NcbiAgICAgICAgICAuLi5sZW5ndGhWYWxpZGF0b3IsXG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZE51bWJlckNvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICB9XG5cbiAgICBpZE51bWJlckNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHNldElkZW50aWZpY2F0aW9uVHlwZUNoYW5nZShjb2RpZ29Tcmk6IFNSSV9ET0NVTUVOVF9UWVBFLlJVQyB8IFNSSV9ET0NVTUVOVF9UWVBFLkNFRFVMQSkge1xuICAgIGNvbnN0IGlkTnVtYmVyQ29udHJvbCA9IHRoaXMuY3VzdG9tZXJGb3JtLmdldCgnbnVtZXJvSWRlbnRpZmljYWNpb24nKTtcbiAgICBpZE51bWJlckNvbnRyb2w/LnJlc2V0KCk7XG4gICAgaWROdW1iZXJDb250cm9sPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sTnVtZXJvSWRlbnRpZmljYWNpb24oY29kaWdvU3JpKTtcbiAgfVxuXG4gIGdldCBudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2woKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tZXJGb3JtLmdldCgnbnVtZXJvSWRlbnRpZmljYWNpb24nKTtcbiAgfVxuXG4gIGdldCBiaXJ0aERhdGVDdHJsKCkge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoJ2JpcnRoRGF0ZScpO1xuICB9XG5cbiAgb25LZXlEb3duR292ZXJubWVudElkKCRldmVudD86IGFueSkge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5udW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/LmludmFsaWQpIHJldHVybjtcblxuICAgIGNvbnN0IGlkVGlwb0lkZW50aWZpY2FjaW9uID0gKFxuICAgICAgdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdpZFRpcG9JZGVudGlmaWNhY2lvbicpIGFzIEZvcm1Db250cm9sPG51bWJlcj4gfCBudWxsXG4gICAgKT8udmFsdWUgYXMgbnVtYmVyO1xuICAgIGNvbnN0IG51bWVyb0lkZW50aWZpY2FjaW9uID0gKFxuICAgICAgdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdudW1lcm9JZGVudGlmaWNhY2lvbicpIGFzIEZvcm1Db250cm9sPHN0cmluZz4gfCBudWxsXG4gICAgKT8udmFsdWUgYXMgc3RyaW5nO1xuXG4gICAgY29uc3QgY29kaWdvU3JpID0gdGhpcy50aXBvc0lkZW50aWZpY2FjaW9uKCkuZmluZChcbiAgICAgICh4OiBhbnkpID0+IHguaWRUaXBvSWRlbnRpZmljYWNpb24gPT0gaWRUaXBvSWRlbnRpZmljYWNpb24sXG4gICAgKS5jb2RpZ29Tcmk7XG5cbiAgICBpZiAobnVtZXJvSWRlbnRpZmljYWNpb24pIHtcbiAgICAgIHRoaXMuZ2V0Q3VzdG9tZXIoY29kaWdvU3JpLCBudW1lcm9JZGVudGlmaWNhY2lvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0RhdGFPZlNyaSA9ICgpID0+IHRoaXMucGFyYW1zLmRhdGFPZlNyaTtcbiAgcHJpdmF0ZSBpc0NyZWF0ZSA9ICgpID0+ICEodGhpcy5wYXJhbXMuaWQgPiAwKTtcbiAgaXNVcGRhdGUgPSAoKSA9PiB0aGlzLnBhcmFtcy5pZCA+IDA7XG5cbiAgb25TYXZlKCkge1xuICAgIHRoaXMuY3VzdG9tZXJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgdGVsZWZvbm86IHRoaXMudGVsZXBob25lcy5sZW5ndGggPiAwID8gdGhpcy50ZWxlcGhvbmVzLmpvaW4oU0VQQVJBVE9SX0tFWV9DT0RFLlNMQVNIKSA6IG51bGwsXG4gICAgfSk7XG5cbiAgICB0aGlzLmN1c3RvbWVyRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIGNvcnJlbzogdGhpcy5lbWFpbHMubGVuZ3RoID4gMCA/IHRoaXMuZW1haWxzLmpvaW4oU0VQQVJBVE9SX0tFWV9DT0RFLlNMQVNIKSA6IG51bGwsXG4gICAgfSk7XG4gICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBwbGFjYTogdGhpcy5wbGFjYXMoKS5sZW5ndGggPiAwID8gdGhpcy5wbGFjYXMoKS5qb2luKFNFUEFSQVRPUl9LRVlfQ09ERS5TTEFTSCkgOiBudWxsLFxuICAgIH0pO1xuICAgIGNvbnN0IGRhdGFGb3JtID0ge1xuICAgICAgLi4udGhpcy5jdXN0b21lckZvcm0udmFsdWUsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmN1c3RvbWVyRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RyLnNob3coe1xuICAgICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICAgIG1lc3NhZ2U6ICdJbmdyZXNlIHRvZG9zIGRhdG9zIHJlcXVlcmlkb3MnLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNVcGRhdGUoKSkge1xuICAgICAgY29uc3Qgc2VuZFBhcmFtcyA9IHtcbiAgICAgICAgaWQ6IHRoaXMucGFyYW1zLmlkLFxuICAgICAgICBkYXRhOiBkYXRhRm9ybSxcbiAgICAgIH07XG4gICAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLnVwZGF0ZShzZW5kUGFyYW1zKSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0ci5zaG93KHtcbiAgICAgICAgICB0eXBlOiBpc1N1Y2Nlc3NSZXNwb25zZShyZXNwb25zZSkgPyAnc3VjY2VzcycgOiAnd2FybmluZycsXG4gICAgICAgICAgbWVzc2FnZTogYCR7cmVzcG9uc2UubWVzc2FnZX1gLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzU3VjY2Vzc1Jlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLnBhcmFtcy5pZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNDcmVhdGUoKSkge1xuICAgICAgZnJvbSh0aGlzLmN1c3RvbWVyVXNlQ2FzZS5jcmVhdGUoZGF0YUZvcm0pKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RyLnNob3coe1xuICAgICAgICAgIHR5cGU6IGlzU3VjY2Vzc1Jlc3BvbnNlKHJlc3BvbnNlKSA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJyxcbiAgICAgICAgICBtZXNzYWdlOiBgJHtyZXNwb25zZS5tZXNzYWdlfWAsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNTdWNjZXNzUmVzcG9uc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cbn1cbiIsIjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxmb3JtXG4gICAgKG5nU3VibWl0KT1cIm9uU2F2ZSgpXCJcbiAgICBpZD1cImZvcm1Db21wYW55Q3VzdG9tZXJcIlxuICAgIFtmb3JtR3JvdXBdPVwiY3VzdG9tZXJGb3JtXCJcbiAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICA+XG4gICAgPG1hdC10YWItZ3JvdXA+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cIkRBVE9TIFBSSU5DSVBBTEVTXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWQgZ2FwLTIgbXgtMyBtdC0yXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMiByb3ctY29scy0xIGctMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VGlwbyBJZGVudGlmaWNhY2nDs246IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpZFRpcG9JZGVudGlmaWNhY2lvblwiXG4gICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImlkZW50aWZpY2F0aW9uVHlwZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHRpcG9zSWRlbnRpZmljYWNpb24oKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZFRpcG9JZGVudGlmaWNhY2lvblwiXG4gICAgICAgICAgICAgICAgICAgID57eyBpdGVtLmRlc2NyaXBjaW9uIH19PC9tYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ow7ptZXJvIGRlIElkZW50aWZpY2FjacOzbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uS2V5RG93bkdvdmVybm1lbnRJZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm51bWVyb0lkZW50aWZpY2FjaW9uXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIEBpZiAoIG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbD8uaW52YWxpZCAmJiAobnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5kaXJ0eSB8fFxuICAgICAgICAgICAgICAgIG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbD8udG91Y2hlZCkgKSB7IEBpZlxuICAgICAgICAgICAgICAgIChudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvcj4gRWwgbsO6bWVybyBkZSBpZGVudGlmaWNhY2nDs24gZXMgb2JsaWdhdG9yaW8uIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH0gQGlmIChudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKSkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICBEZWJlIHRlbmVyIGFsIG1lbm9zIHt7XG4gICAgICAgICAgICAgICAgICBudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/LmVycm9ycz8uWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aCB9fSBkw61naXRvcy5cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9IEBpZiAobnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgTm8gcHVlZGUgdGVuZXIgbcOhcyBkZSB7e1xuICAgICAgICAgICAgICAgICAgbnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5lcnJvcnM/LlsnbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGggfX0gZMOtZ2l0b3MuXG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgfSBAaWYgKG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbD8uaGFzRXJyb3IoJ3BhdHRlcm4nKSkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+IFNvbG8gc2UgcGVybWl0ZW4gY2FyYWN0ZXJlcyBudW3DqXJpY29zLiA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9IEBpZiAobnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5oYXNFcnJvcignZW5kc1dpdGgwMDEnKSkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+IExvcyDDumx0aW1vcyB0cmVzIGTDrWdpdG9zIGRlYmVuIHNlciAwMDEuIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH0gfSBAaWYgKHNob3dSZWZyZXNoKCkpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdFN1ZmZpeD5cbiAgICAgICAgICAgICAgICAgIDxhY3AtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBtYXRTdHlsZT1cImljb25cIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwicmVmcmVzaFwiXG4gICAgICAgICAgICAgICAgICAgIChoYW5kbGVDbGljayk9XCJvbktleURvd25Hb3Zlcm5tZW50SWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMiByb3ctY29scy0xIGctMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Tm9tYnJlIEZpc2NhbDo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibm9tYnJlRmlzY2FsXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwibm9tYnJlQ29tZXJjaWFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRWo6IFRFQ05PTUVHQVwiXG4gICAgICAgICAgICAgICAgICBhY3BUb1VwcGVyQ2FzZVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPk5vbWJyZSBDb21lcmNpYWw6PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5vbWJyZUNvbWVyY2lhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVqOiBURUNOT01FR0FcIlxuICAgICAgICAgICAgICAgICAgYWNwVG9VcHBlckNhc2VcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5EaXJlY2Npw7NuOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpcmVjY2lvblwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBVi4gMDkgREUgT0NUVUJSRS4uLlwiXG4gICAgICAgICAgICAgICAgYWNwVG9VcHBlckNhc2VcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInJvdyByb3ctY29scy14eGwtMiByb3ctY29scy14bC0yIHJvdy1jb2xzLWxnLTIgcm93LWNvbHMtbWQtMiByb3ctY29scy1zbS0yIHJvdy1jb2xzLTEgZy0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxhY3AtaW5wdXQtY2hpcCBbY2hpcHNdPVwiZW1haWxzXCIgW2xhYmVsVGV4dF09XCInQ29ycmVvJ1wiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPGFjcC1pbnB1dC1jaGlwIFtjaGlwc109XCJ0ZWxlcGhvbmVzXCIgW2xhYmVsVGV4dF09XCInVGVsw6lmb25vJ1wiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoaXNVcGRhdGUoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2c3RhY2sgZ2FwLTIgbXQtMlwiPlxuICAgICAgICAgICAgPHNwYW4+RXN0YWRvPC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgZm9ybUNvbnRyb2xOYW1lPVwiZXN0YWRvXCI+XG4gICAgICAgICAgICAgIHt7IGN1c3RvbWVyRm9ybS52YWx1ZS5lc3RhZG8gPyAnQWN0aXZvJyA6ICdJbmFjdGl2bycgfX1cbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJEQVRPUyBBRElDSU9OQUxFU1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ncmlkIGdhcC0yIG14LTMgbXQtMlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPGFjcC1keW5hbWljLWNhcmQgdGl0bGU9XCJJbmZvcm1hY2nDs24gQsOhc2ljYVwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRpcG8gQ29udHJpYnV5ZW50ZTogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRTdWJDb250cmlidXllbnRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHRpcG9Db250cmlidXllbnRlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkU3ViQ29udHJpYnV5ZW50ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRlc2NyaXBjaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRpZW1wbyBDcsOpZGl0bzogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRUaWVtcG9DcmVkaXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHRpZW1wb3NDcmVkaXRvKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRUaWVtcG9DcmVkaXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZGVzY3JpcGNpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Q2l1ZGFkPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRDaXVkYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIwXCI+LS0gTmluZ3VubyAtLTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGdyb3VwIG9mIGNpdWRhZGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiZ3JvdXAubm9tYnJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZ3JvdXAuY2l1ZGFkZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZENpdWRhZFwiPnt7IGl0ZW0ubm9tYnJlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRpcG8gQ2xpZW50ZTogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRUaXBvQ2xpZW50ZVByb3ZlZWRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjBcIj4tLU5pbmd1bm8tLTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgdGlwb3NDbGllbnRlKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRUaXBvQ2xpZW50ZVByb3ZlZWRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRlc2NyaXBjaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkVtcHJlc2E6IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImlkRW1wcmVzYVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjBcIj4tLU5pbmd1bm8tLTwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBlbXByZXNhcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkRW1wcmVzYVwiPiB7eyBpdGVtLmRlc2NyaXBjaW9uIH19IDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkZlY2hhIE5hY2ltaWVudG88L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwiYmlydGhEYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiYmlydGhEYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQ+TU0vREQvWVlZWTwvbWF0LWhpbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRJY29uU3VmZml4IFtmb3JdPVwiYmlydGhEYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI2JpcnRoRGF0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYmlydGhEYXRlQ3RybD8uaW52YWxpZCAmJiBiaXJ0aERhdGVDdHJsPy50b3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj4gRmVjaGEgaW52w6FsaWRhIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FjcC1keW5hbWljLWNhcmQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPGFjcC1keW5hbWljLWNhcmQgdGl0bGU9XCJJbmZvcm1hY2nDs24gTGFib3JhbFwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkVtcGxlYWRvOiA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJpZEVtcGxlYWRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMFwiPi0tTmluZ3Vuby0tPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGVtcGxveWVlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkRW1wbGVhZG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5ub21icmVDb21wbGV0byB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5DYXJnbzogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRDYXJnb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjBcIj4tLU5pbmd1bm8tLTwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBjYXJnb3MoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZENhcmdvXCI+IHt7IGl0ZW0uZGVzY3JpcGNpb24gfX0gPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5PYnNlcnZhY2nDs248L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCIuLi5cIiBmb3JtQ29udHJvbE5hbWU9XCJub3RhXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FjcC1keW5hbWljLWNhcmQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInJvdyByb3ctY29scy14eGwtMiByb3ctY29scy14bC0yIHJvdy1jb2xzLWxnLTIgcm93LWNvbHMtbWQtMiByb3ctY29scy1zbS0yIHJvdy1jb2xzLTEgZy0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxhY3AtZHluYW1pYy1jYXJkIHRpdGxlPVwiQ29uZmlndXJhY2nDs24gRmluYW5jaWVyYVwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0xIHJvdy1jb2xzLXhsLTEgcm93LWNvbHMtbGctMSByb3ctY29scy1tZC0xIHJvdy1jb2xzLXNtLTEgcm93LWNvbHMtMSBnLTIgbXQtMlwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Rm9ybWEgZGUgcGFnbzogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRGb3JtYVBhZ29TcmlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIwXCI+LS1OaW5ndW5vLS08L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZm9ybWFzUGFnb1NyaSgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkRm9ybWFQYWdvU3JpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZGVzY3JpcGNpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YWNwLWlucHV0LWNoaXAgbGFiZWxUZXh0PVwiUGxhY2FcIiBbY2hpcHNdPVwicGxhY2FzKClcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJjb25maWdWYWxvckJydXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICA+QWN0aXZhciBjb25maWd1cmFjacOzbiBkZSB2YWxvciBicnV0b1xuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInZhbG9yIHRvdGFsIGRlIHVuIGJpZW4gbyBzZXJ2aWNpbyBzaW4gaW5jbHVpciBpbXB1ZXN0b3MsIGRlZHVjY2lvbmVzIG8gZGVzY3VlbnRvcyAodXNvIGRlbnRybyBkZWwgcmVwb3J0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPmluZm88L21hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FjcC1keW5hbWljLWNhcmQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cIklORk9STUFDScOTTiBDUkVESVRJQ0lBXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWQgZ2FwLTIgbXgtMyBtdC0yXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMiByb3ctY29scy0xIGctMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8YWNwLWR5bmFtaWMtY2FyZCB0aXRsZT1cIkluZm9ybWFjacOzbiBQZXJzb25hbFwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJkYXRhSW5mb0NyZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMSByb3ctY29scy0xIGctMiBtdC0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Fc3RhZG8gQ2l2aWw6IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1hcml0YWxTdGF0dXNJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjBcIj5TZWxlY2Npb25hci4uLjwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBtYXJpdGFsU3RhdHVzZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZFwiPiB7eyBpdGVtLm5hbWUgfX0gPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RXNwb3NvKGEpOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbnl1Z2VOb21icmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOb21icmUgZGVsIGPDs255dWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRlbMOpZm9ubyBQZXJzb25hbDo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY29ueXVnZVRlbFwiIHBsYWNlaG9sZGVyPVwiMDl4eHh4eHh4eFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRlbMOpZm9ubyBSZWZlcmVuY2lhOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyZWZGYW1UZWxcIiBwbGFjZWhvbGRlcj1cIjA5eHh4eHh4eHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5SZWZlcmVuY2lhIEZhbWlsaWFyOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZkZhbU5vbWJyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5vbWJyZSBkZSByZWZlcmVuY2lhIGZhbWlsaWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYWNwLWR5bmFtaWMtY2FyZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8YWNwLWR5bmFtaWMtY2FyZCB0aXRsZT1cIkluZm9ybWFjacOzbiBkZSBWaXZpZW5kYVwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJkYXRhSW5mb0NyZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMSByb3ctY29scy0xIGctMiBtdC0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5UaXBvIGRlIFZpdmllbmRhOiA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJob3VzaW5nVHlwZUlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMFwiPlNlbGVjY2lvbmFyLi4uPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGhvdXNpbmdUeXBlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkXCI+IHt7IGl0ZW0ubmFtZSB9fSA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TZWN0b3I6PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInNlY3RvclwiIHBsYWNlaG9sZGVyPVwiTm9tYnJlIGRlbCBzZWN0b3JcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkJhcnJpbzo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYmFycmlvXCIgcGxhY2Vob2xkZXI9XCJOb21icmUgZGVsIGJhcnJpb1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkNhbGxlOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjYWxsZVwiIHBsYWNlaG9sZGVyPVwiTm9tYnJlIGRlIGxhIGNhbGxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RGlyZWNjacOzbiBDb21wbGV0YTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpclZpdmllbmRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRGlyZWNjacOzbiBjb21wbGV0YSBkZSBsYSB2aXZpZW5kYSAoU2VjdG9yLCBCYXJyaW8geSBDYWxsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5EZXNjcmlwY2nDs24gZGVsIFB1bnRvIGRlIFJlZmVyZW5jaWE6PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVmRG9taWNpbGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRGVzY3JpcGNpw7NuIGRldGFsbGFkYSBkZWwgcHVudG8gZGUgcmVmZXJlbmNpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hY3AtZHluYW1pYy1jYXJkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgPC9mb3JtPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG48bWF0LWRpYWxvZy1hY3Rpb25zPlxuICA8ZGl2IGNsYXNzPVwiaHN0YWNrIGdhcC0yXCI+XG4gICAgPGFjcC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIHZhcmlhbnQ9XCJzdWNjZXNzXCIgZm9ybT1cImZvcm1Db21wYW55Q3VzdG9tZXJcIiBbdGV4dF09XCJidG5UZXh0KClcIiAvPlxuICAgIDxhY3AtYnV0dG9uIHR5cGU9XCJidXR0b25cIiB2YXJpYW50PVwiZGFya1wiIHRleHQ9XCJDZXJyYXJcIiAoaGFuZGxlQ2xpY2spPVwiY2xvc2UoKVwiIC8+XG4gIDwvZGl2PlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=","import { Component, computed, input, output } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Button } from '@acontplus/ng-components';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/card\";\nimport * as i2 from \"@angular/material/chips\";\nexport class CustomerCard {\n customer = input.required(...(ngDevMode ? [{ debugName: \"customer\" }] : []));\n editCustomer = output();\n deleteCustomer = output();\n getLogoSliceBusinessName = computed(() => {\n const name = this.customer()?.businessName || '';\n return name.slice(0, 1);\n }, ...(ngDevMode ? [{ debugName: \"getLogoSliceBusinessName\" }] : []));\n onEditClick() {\n // Emits the customer object to the parent component\n this.editCustomer.emit(this.customer());\n }\n onDeleteClick() {\n // Emits the customer object to the parent component\n this.deleteCustomer.emit(this.customer());\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: CustomerCard, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: CustomerCard, isStandalone: true, selector: \"acp-customer-card\", inputs: { customer: { classPropertyName: \"customer\", publicName: \"customer\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { editCustomer: \"editCustomer\", deleteCustomer: \"deleteCustomer\" }, ngImport: i0, template: \"<div class=\\\"acp-customer-card\\\">\\n <mat-card class=\\\"acp-customer-card-content\\\">\\n <!-- Header -->\\n <div class=\\\"acp-card-header\\\">\\n <div class=\\\"acp-avatar\\\" aria-label=\\\"Logo de cliente\\\">{{ getLogoSliceBusinessName() }}</div>\\n <h5 class=\\\"acp-business-name\\\">{{ customer().businessName }}</h5>\\n <p class=\\\"acp-trade-name\\\">{{ customer().tradeName }}</p>\\n </div>\\n\\n <!-- Card content -->\\n <mat-card-content>\\n <div class=\\\"acp-info\\\">\\n <p><strong>ID:</strong> 1234567890 (RUC)</p>\\n <p><strong>Email:</strong> {{ customer().email }}</p>\\n <p><strong>Tel\\u00E9fono:</strong> {{ customer().phone }}</p>\\n <p><strong>Direcci\\u00F3n:</strong>{{ customer().address }}</p>\\n\\n <div class=\\\"acp-chips\\\">\\n <mat-chip-set>\\n <mat-chip color=\\\"primary\\\">{{ customer().statusName }}</mat-chip>\\n </mat-chip-set>\\n </div>\\n </div>\\n </mat-card-content>\\n\\n <!-- Card actions -->\\n @if (!customer().isFinalConsumer) {\\n <mat-card-actions class=\\\"acp-actions gap-2\\\">\\n <acp-button matStyle=\\\"icon\\\" icon=\\\"edit\\\" (handleClick)=\\\"onEditClick()\\\" />\\n <acp-button matStyle=\\\"icon\\\" icon=\\\"delete\\\" variant=\\\"danger\\\" (handleClick)=\\\"onDeleteClick()\\\" />\\n </mat-card-actions>\\n }\\n </mat-card>\\n</div>\\n\", styles: [\".acp-customer-card{display:block}.acp-customer-card .acp-customer-card-content{width:345px;border-radius:16px}.acp-customer-card .acp-card-header{display:flex;flex-direction:column;align-items:center;padding:16px;background-color:var(--mat-sys-primary-container, #e3f2fd);border-top-left-radius:16px;border-top-right-radius:16px}.acp-customer-card .acp-card-header .acp-business-name{text-align:center;font-size:14px;font-weight:500}.acp-customer-card .acp-card-header .acp-trade-name{text-align:center;font-size:12px;color:var(--mat-sys-on-surface-variant, #6c757d)}.acp-customer-card .acp-avatar{width:80px;height:80px;border-radius:50%;background-color:var(--mat-sys-primary, #1976d2);display:flex;justify-content:center;align-items:center;font-size:32px;color:var(--mat-sys-on-primary, white);margin-bottom:12px}.acp-customer-card .acp-info p{margin:4px 0}.acp-customer-card .acp-chips{margin-top:12px;display:flex;gap:8px}.acp-customer-card .acp-actions{justify-content:flex-end;padding:16px}\\n\"], dependencies: [{ kind: \"ngmodule\", type: MatCardModule }, { kind: \"component\", type: i1.MatCard, selector: \"mat-card\", inputs: [\"appearance\"], exportAs: [\"matCard\"] }, { kind: \"directive\", type: i1.MatCardActions, selector: \"mat-card-actions\", inputs: [\"align\"], exportAs: [\"matCardActions\"] }, { kind: \"directive\", type: i1.MatCardContent, selector: \"mat-card-content\" }, { kind: \"ngmodule\", type: MatDividerModule }, { kind: \"ngmodule\", type: MatChipsModule }, { kind: \"component\", type: i2.MatChip, selector: \"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]\", inputs: [\"role\", \"id\", \"aria-label\", \"aria-description\", \"value\", \"color\", \"removable\", \"highlighted\", \"disableRipple\", \"disabled\"], outputs: [\"removed\", \"destroyed\"], exportAs: [\"matChip\"] }, { kind: \"component\", type: i2.MatChipSet, selector: \"mat-chip-set\", inputs: [\"disabled\", \"role\", \"tabIndex\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: Button, selector: \"acp-button\", inputs: [\"variant\", \"text\", \"icon\", \"disabled\", \"type\", \"matStyle\", \"customClass\", \"extended\", \"title\", \"ariaLabel\", \"name\", \"id\", \"form\", \"tabIndex\", \"testId\"], outputs: [\"handleClick\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: CustomerCard, decorators: [{\n type: Component,\n args: [{ selector: 'acp-customer-card', imports: [MatCardModule, MatDividerModule, MatChipsModule, MatButtonModule, Button], template: \"<div class=\\\"acp-customer-card\\\">\\n <mat-card class=\\\"acp-customer-card-content\\\">\\n <!-- Header -->\\n <div class=\\\"acp-card-header\\\">\\n <div class=\\\"acp-avatar\\\" aria-label=\\\"Logo de cliente\\\">{{ getLogoSliceBusinessName() }}</div>\\n <h5 class=\\\"acp-business-name\\\">{{ customer().businessName }}</h5>\\n <p class=\\\"acp-trade-name\\\">{{ customer().tradeName }}</p>\\n </div>\\n\\n <!-- Card content -->\\n <mat-card-content>\\n <div class=\\\"acp-info\\\">\\n <p><strong>ID:</strong> 1234567890 (RUC)</p>\\n <p><strong>Email:</strong> {{ customer().email }}</p>\\n <p><strong>Tel\\u00E9fono:</strong> {{ customer().phone }}</p>\\n <p><strong>Direcci\\u00F3n:</strong>{{ customer().address }}</p>\\n\\n <div class=\\\"acp-chips\\\">\\n <mat-chip-set>\\n <mat-chip color=\\\"primary\\\">{{ customer().statusName }}</mat-chip>\\n </mat-chip-set>\\n </div>\\n </div>\\n </mat-card-content>\\n\\n <!-- Card actions -->\\n @if (!customer().isFinalConsumer) {\\n <mat-card-actions class=\\\"acp-actions gap-2\\\">\\n <acp-button matStyle=\\\"icon\\\" icon=\\\"edit\\\" (handleClick)=\\\"onEditClick()\\\" />\\n <acp-button matStyle=\\\"icon\\\" icon=\\\"delete\\\" variant=\\\"danger\\\" (handleClick)=\\\"onDeleteClick()\\\" />\\n </mat-card-actions>\\n }\\n </mat-card>\\n</div>\\n\", styles: [\".acp-customer-card{display:block}.acp-customer-card .acp-customer-card-content{width:345px;border-radius:16px}.acp-customer-card .acp-card-header{display:flex;flex-direction:column;align-items:center;padding:16px;background-color:var(--mat-sys-primary-container, #e3f2fd);border-top-left-radius:16px;border-top-right-radius:16px}.acp-customer-card .acp-card-header .acp-business-name{text-align:center;font-size:14px;font-weight:500}.acp-customer-card .acp-card-header .acp-trade-name{text-align:center;font-size:12px;color:var(--mat-sys-on-surface-variant, #6c757d)}.acp-customer-card .acp-avatar{width:80px;height:80px;border-radius:50%;background-color:var(--mat-sys-primary, #1976d2);display:flex;justify-content:center;align-items:center;font-size:32px;color:var(--mat-sys-on-primary, white);margin-bottom:12px}.acp-customer-card .acp-info p{margin:4px 0}.acp-customer-card .acp-chips{margin-top:12px;display:flex;gap:8px}.acp-customer-card .acp-actions{justify-content:flex-end;padding:16px}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvdWkvY29tcG9uZW50cy9jdXN0b21lci1jYXJkL2N1c3RvbWVyLWNhcmQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL3VpL2NvbXBvbmVudHMvY3VzdG9tZXItY2FyZC9jdXN0b21lci1jYXJkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFTbEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLG1EQUF1QixDQUFDO0lBQ2pELFlBQVksR0FBRyxNQUFNLEVBQXVCLENBQUM7SUFDN0MsY0FBYyxHQUFHLE1BQU0sRUFBdUIsQ0FBQztJQUUvQyx3QkFBd0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxvRUFBQyxDQUFDO0lBRUgsV0FBVztRQUNULG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsYUFBYTtRQUNYLG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO3VHQWxCVSxZQUFZOzJGQUFaLFlBQVksc1NDZHpCLCt6Q0FrQ0EsZ2lDRHhCWSxhQUFhLHlWQUFFLGdCQUFnQiw4QkFBRSxjQUFjLDBiQUFFLGVBQWUsK0JBQUUsTUFBTTs7MkZBSXZFLFlBQVk7a0JBTnhCLFNBQVM7K0JBQ0UsbUJBQW1CLFdBQ3BCLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnQGFjb250cGx1cy9uZy1jb21wb25lbnRzJztcbmltcG9ydCB7IEN1c3RvbWVyTGlzdEl0ZW1EdG8gfSBmcm9tICcuLi8uLi8uLi9pbmZyYXN0cnVjdHVyZS9kdG9zL2N1c3RvbWVyLWR0byc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1jdXN0b21lci1jYXJkJyxcbiAgaW1wb3J0czogW01hdENhcmRNb2R1bGUsIE1hdERpdmlkZXJNb2R1bGUsIE1hdENoaXBzTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIEJ1dHRvbl0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b21lci1jYXJkLmh0bWwnLFxuICBzdHlsZVVybDogJy4vY3VzdG9tZXItY2FyZC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJDYXJkIHtcbiAgY3VzdG9tZXIgPSBpbnB1dC5yZXF1aXJlZDxDdXN0b21lckxpc3RJdGVtRHRvPigpO1xuICBlZGl0Q3VzdG9tZXIgPSBvdXRwdXQ8Q3VzdG9tZXJMaXN0SXRlbUR0bz4oKTtcbiAgZGVsZXRlQ3VzdG9tZXIgPSBvdXRwdXQ8Q3VzdG9tZXJMaXN0SXRlbUR0bz4oKTtcblxuICBnZXRMb2dvU2xpY2VCdXNpbmVzc05hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuY3VzdG9tZXIoKT8uYnVzaW5lc3NOYW1lIHx8ICcnO1xuICAgIHJldHVybiBuYW1lLnNsaWNlKDAsIDEpO1xuICB9KTtcblxuICBvbkVkaXRDbGljaygpOiB2b2lkIHtcbiAgICAvLyBFbWl0cyB0aGUgY3VzdG9tZXIgb2JqZWN0IHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5lZGl0Q3VzdG9tZXIuZW1pdCh0aGlzLmN1c3RvbWVyKCkpO1xuICB9XG5cbiAgb25EZWxldGVDbGljaygpOiB2b2lkIHtcbiAgICAvLyBFbWl0cyB0aGUgY3VzdG9tZXIgb2JqZWN0IHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5kZWxldGVDdXN0b21lci5lbWl0KHRoaXMuY3VzdG9tZXIoKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhY3AtY3VzdG9tZXItY2FyZFwiPlxuICA8bWF0LWNhcmQgY2xhc3M9XCJhY3AtY3VzdG9tZXItY2FyZC1jb250ZW50XCI+XG4gICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImFjcC1jYXJkLWhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFjcC1hdmF0YXJcIiBhcmlhLWxhYmVsPVwiTG9nbyBkZSBjbGllbnRlXCI+e3sgZ2V0TG9nb1NsaWNlQnVzaW5lc3NOYW1lKCkgfX08L2Rpdj5cbiAgICAgIDxoNSBjbGFzcz1cImFjcC1idXNpbmVzcy1uYW1lXCI+e3sgY3VzdG9tZXIoKS5idXNpbmVzc05hbWUgfX08L2g1PlxuICAgICAgPHAgY2xhc3M9XCJhY3AtdHJhZGUtbmFtZVwiPnt7IGN1c3RvbWVyKCkudHJhZGVOYW1lIH19PC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDYXJkIGNvbnRlbnQgLS0+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWNwLWluZm9cIj5cbiAgICAgICAgPHA+PHN0cm9uZz5JRDo8L3N0cm9uZz4gMTIzNDU2Nzg5MCAoUlVDKTwvcD5cbiAgICAgICAgPHA+PHN0cm9uZz5FbWFpbDo8L3N0cm9uZz4ge3sgY3VzdG9tZXIoKS5lbWFpbCB9fTwvcD5cbiAgICAgICAgPHA+PHN0cm9uZz5UZWzDqWZvbm86PC9zdHJvbmc+IHt7IGN1c3RvbWVyKCkucGhvbmUgfX08L3A+XG4gICAgICAgIDxwPjxzdHJvbmc+RGlyZWNjacOzbjo8L3N0cm9uZz57eyBjdXN0b21lcigpLmFkZHJlc3MgfX08L3A+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjcC1jaGlwc1wiPlxuICAgICAgICAgIDxtYXQtY2hpcC1zZXQ+XG4gICAgICAgICAgICA8bWF0LWNoaXAgY29sb3I9XCJwcmltYXJ5XCI+e3sgY3VzdG9tZXIoKS5zdGF0dXNOYW1lIH19PC9tYXQtY2hpcD5cbiAgICAgICAgICA8L21hdC1jaGlwLXNldD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG5cbiAgICA8IS0tIENhcmQgYWN0aW9ucyAtLT5cbiAgICBAaWYgKCFjdXN0b21lcigpLmlzRmluYWxDb25zdW1lcikge1xuICAgIDxtYXQtY2FyZC1hY3Rpb25zIGNsYXNzPVwiYWNwLWFjdGlvbnMgZ2FwLTJcIj5cbiAgICAgIDxhY3AtYnV0dG9uIG1hdFN0eWxlPVwiaWNvblwiIGljb249XCJlZGl0XCIgKGhhbmRsZUNsaWNrKT1cIm9uRWRpdENsaWNrKClcIiAvPlxuICAgICAgPGFjcC1idXR0b24gbWF0U3R5bGU9XCJpY29uXCIgaWNvbj1cImRlbGV0ZVwiIHZhcmlhbnQ9XCJkYW5nZXJcIiAoaGFuZGxlQ2xpY2spPVwib25EZWxldGVDbGljaygpXCIgLz5cbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG4gICAgfVxuICA8L21hdC1jYXJkPlxuPC9kaXY+XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWN1c3RvbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2Fjb250cGx1cy1uZy1jdXN0b21lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acontplus-ng-customer.mjs","sources":["../../../../packages/ng-customer/src/lib/company-customer/config/company-customer-form.ts","../../../../packages/ng-customer/src/lib/tokens/injection-tokens.ts","../../../../packages/ng-customer/src/lib/company-customer/data-access/mappers/company-customer-default-mapper.ts","../../../../packages/ng-customer/src/lib/company-customer/data-access/services/company-customer.ts","../../../../packages/ng-customer/src/lib/shared/utils/customer.validators.ts","../../../../packages/ng-customer/src/lib/company-customer/ui/company-customer-form/company-customer-form.ts","../../../../packages/ng-customer/src/lib/company-customer/ui/company-customer-form/company-customer-form.html","../../../../packages/ng-customer/src/index.ts","../../../../packages/ng-customer/src/acontplus-ng-customer.ts"],"sourcesContent":["import { CompanyCustomerFormConfig } from '../models/form-config.model';\n\nexport const MAIN_APP_COMPANY_CUSTOMER_CONFIG: CompanyCustomerFormConfig = {\n fields: {\n // IDs y referencias\n idTipoIdentificacion: {\n name: 'idTipoIdentificacion',\n required: true,\n visible: true,\n label: 'Tipo de Identificación',\n placeholder: 'Seleccione tipo',\n },\n idFormaPagoSri: {\n name: 'idFormaPagoSri',\n required: false,\n visible: true,\n label: 'Forma de Pago SRI',\n placeholder: 'Seleccione forma de pago',\n },\n idTipoClienteProveedor: {\n name: 'idTipoClienteProveedor',\n required: false,\n visible: true,\n label: 'Tipo de Cliente/Proveedor',\n placeholder: 'Seleccione tipo',\n },\n idSubContribuyente: {\n name: 'idSubContribuyente',\n required: false,\n visible: true,\n label: 'Sub-Contribuyente',\n placeholder: 'Seleccione',\n },\n idTiempoCredito: {\n name: 'idTiempoCredito',\n required: false,\n visible: true,\n label: 'Tiempo de Crédito',\n placeholder: 'Días de crédito',\n },\n idCiudad: {\n name: 'idCiudad',\n required: false,\n visible: true,\n label: 'Ciudad',\n placeholder: 'Seleccione ciudad',\n },\n idCargo: {\n name: 'idCargo',\n required: false,\n visible: true,\n label: 'Cargo',\n placeholder: 'Seleccione cargo',\n },\n idEmpleado: {\n name: 'idEmpleado',\n required: false,\n visible: true,\n label: 'Empleado Responsable',\n placeholder: 'Seleccione empleado',\n },\n\n // Datos principales\n numeroIdentificacion: {\n name: 'numeroIdentificacion',\n required: true,\n visible: true,\n label: 'RUC / Cédula',\n placeholder: 'Ingrese número de identificación (13 dígitos para RUC)',\n },\n nombreFiscal: {\n name: 'nombreFiscal',\n required: true,\n visible: true,\n label: 'Razón Social / Nombre Fiscal',\n placeholder: 'Ingrese razón social completa',\n },\n nombreComercial: {\n name: 'nombreComercial',\n required: false,\n visible: true,\n label: 'Nombre Comercial',\n placeholder: 'Ingrese nombre comercial',\n },\n direccion: {\n name: 'direccion',\n required: true,\n visible: true,\n label: 'Dirección',\n placeholder: 'Calle principal y secundaria',\n },\n correo: {\n name: 'correo',\n required: false,\n visible: true,\n label: 'Correo Electrónico',\n placeholder: 'ejemplo@correo.com',\n },\n telefono: {\n name: 'telefono',\n required: false,\n visible: true,\n label: 'Teléfono',\n placeholder: '0999999999',\n },\n placa: {\n name: 'placa',\n required: false,\n visible: true,\n label: 'Placa del Vehículo',\n placeholder: 'ABC-1234',\n },\n nota: {\n name: 'nota',\n required: false,\n visible: true,\n label: 'Notas',\n placeholder: 'Observaciones adicionales',\n },\n birthDate: {\n name: 'birthDate',\n required: false,\n visible: true,\n label: 'Fecha de Nacimiento',\n placeholder: 'DD/MM/AAAA',\n },\n\n // Estados\n estado: {\n name: 'estado',\n required: false,\n visible: true,\n label: 'Activo',\n },\n validationSri: {\n name: 'validationSri',\n required: false,\n visible: true,\n label: 'Validado en SRI',\n },\n configValorBruto: {\n name: 'configValorBruto',\n required: false,\n visible: true,\n label: 'Configurar Valor Bruto',\n },\n },\n // Información de crédito\n showCreditInfo: true,\n creditFields: {\n maritalStatusId: {\n name: 'maritalStatusId',\n required: false,\n visible: true,\n label: 'Estado Civil',\n placeholder: 'Seleccione',\n },\n conyugeNombre: {\n name: 'conyugeNombre',\n required: false,\n visible: true,\n label: 'Nombre del Cónyuge',\n placeholder: 'Ingrese nombre',\n },\n conyugeTel: {\n name: 'conyugeTel',\n required: false,\n visible: true,\n label: 'Teléfono del Cónyuge',\n placeholder: '0999999999',\n },\n refFamNombre: {\n name: 'refFamNombre',\n required: false,\n visible: true,\n label: 'Referencia Familiar',\n placeholder: 'Nombre',\n },\n refFamTel: {\n name: 'refFamTel',\n required: false,\n visible: true,\n label: 'Teléfono Referencia',\n placeholder: '0999999999',\n },\n housingTypeId: {\n name: 'housingTypeId',\n required: false,\n visible: true,\n label: 'Tipo de Vivienda',\n placeholder: 'Seleccione',\n },\n dirVivienda: {\n name: 'dirVivienda',\n required: false,\n visible: true,\n label: 'Dirección de Vivienda',\n placeholder: 'Dirección completa',\n },\n refDomicilio: {\n name: 'refDomicilio',\n required: false,\n visible: true,\n label: 'Referencia de Domicilio',\n placeholder: 'Referencia',\n },\n sector: {\n name: 'sector',\n required: false,\n visible: true,\n label: 'Sector',\n placeholder: 'Ingrese sector',\n },\n barrio: {\n name: 'barrio',\n required: false,\n visible: true,\n label: 'Barrio',\n placeholder: 'Ingrese barrio',\n },\n calle: {\n name: 'calle',\n required: false,\n visible: true,\n label: 'Calle',\n placeholder: 'Calle principal',\n },\n },\n submitButtonText: 'Guardar Cliente',\n cancelButtonText: 'Cancelar',\n};\n\n// Configuración MÍNIMA para POS\nexport const POS_COMPANY_CUSTOMER_CONFIG: CompanyCustomerFormConfig = {\n fields: {\n // Solo lo esencial\n idTipoIdentificacion: {\n name: 'idTipoIdentificacion',\n required: true,\n visible: true,\n label: 'Tipo ID',\n placeholder: 'Tipo',\n },\n numeroIdentificacion: {\n name: 'numeroIdentificacion',\n required: true,\n visible: true,\n label: 'Cédula/RUC',\n placeholder: 'Número de identificación',\n },\n nombreFiscal: {\n name: 'nombreFiscal',\n required: true,\n visible: true,\n label: 'Nombre',\n placeholder: 'Nombre del cliente',\n },\n nombreComercial: {\n name: 'nombreComercial',\n required: false,\n visible: false,\n },\n direccion: {\n name: 'direccion',\n required: false,\n visible: true,\n label: 'Dirección',\n placeholder: 'Dirección',\n },\n correo: {\n name: 'correo',\n required: false,\n visible: false,\n },\n telefono: {\n name: 'telefono',\n required: false,\n visible: true,\n label: 'Teléfono',\n placeholder: 'Teléfono',\n },\n\n // Resto oculto\n idFormaPagoSri: { name: 'idFormaPagoSri', required: false, visible: false },\n idTipoClienteProveedor: { name: 'idTipoClienteProveedor', required: false, visible: false },\n idSubContribuyente: { name: 'idSubContribuyente', required: false, visible: false },\n idTiempoCredito: { name: 'idTiempoCredito', required: false, visible: false },\n idCiudad: { name: 'idCiudad', required: false, visible: false },\n idCargo: { name: 'idCargo', required: false, visible: false },\n idEmpleado: { name: 'idEmpleado', required: false, visible: false },\n placa: { name: 'placa', required: false, visible: false },\n nota: { name: 'nota', required: false, visible: false },\n birthDate: { name: 'birthDate', required: false, visible: false },\n estado: { name: 'estado', required: false, visible: false },\n validationSri: { name: 'validationSri', required: false, visible: false },\n configValorBruto: { name: 'configValorBruto', required: false, visible: false },\n },\n showCreditInfo: false, // Sin info de crédito en POS\n submitButtonText: 'Agregar',\n cancelButtonText: 'Cancelar',\n};\n","import { InjectionToken } from '@angular/core';\nimport { CompanyCustomerFormConfig } from '../company-customer/models/form-config.model';\nimport { ICompanyCustomerService } from '../company-customer';\nimport { ICompanyCustomerMapper } from '../company-customer/data-access/interfaces/company-customer-mapper';\nimport { ICustomerSriService } from '../customer-sri/data-access/interfaces/customer-sri.interface';\n\nexport const CUSTOMER_SRI_SERVICE = new InjectionToken<ICustomerSriService>('CUSTOMER_SRI_SERVICE');\n\nexport const COMPANY_CUSTOMER_MAPPER = new InjectionToken<ICompanyCustomerMapper>(\n 'COMPANY_CUSTOMER_MAPPER',\n);\n\nexport const COMPANY_CUSTOMER_FORM_CONFIG = new InjectionToken<CompanyCustomerFormConfig>(\n 'COMPANY_CUSTOMER_FORM_CONFIG',\n);\n\nexport const COMPANY_CUSTOMER_SERVICE = new InjectionToken<ICompanyCustomerService>(\n 'COMPANY_CUSTOMER_SERVICE',\n);\n","import { ICompanyCustomerMapper } from '../interfaces/company-customer-mapper';\n\nexport class CompanyCustomerDefaultMapper implements ICompanyCustomerMapper {\n toModel(dto: any): any {\n return {\n name: `Esto de mapper default - ${dto.name}`,\n id: dto.id,\n idCliente: dto.id_cliente,\n idEmpresa: dto.id_empresa,\n idCargo: dto.id_cargo,\n idFormaPagoSri: dto.id_forma_pago_sri,\n idTipoClienteProveedor: dto.id_tipo_cliente_proveedor,\n idTipoIdentificacion: dto.id_tipo_identificacion,\n idSubContribuyente: dto.id_sub_contribuyente,\n idTiempoCredito: dto.id_tiempo_credito,\n idCiudad: dto.id_ciudad,\n idEmpleado: dto.id_empleado,\n\n numeroIdentificacion: dto.numero_identificacion,\n nombreFiscal: dto.nombre_fiscal,\n nombreComercial: dto.nombre_comercial,\n direccion: dto.direccion,\n correo: dto.correo,\n telefono: dto.telefono,\n placa: dto.placa,\n nota: dto.nota,\n birthDate: dto.birth_date ? new Date(dto.birth_date) : null,\n\n estado: dto.estado,\n validationSri: dto.validation_sri,\n configValorBruto: dto.config_valor_bruto,\n\n dataInfoCred: dto.data_info_cred\n ? {\n maritalStatusId: dto.data_info_cred.marital_status_id,\n conyugeNombre: dto.data_info_cred.conyuge_nombre,\n conyugeTel: dto.data_info_cred.conyuge_tel,\n refFamNombre: dto.data_info_cred.ref_fam_nombre,\n refFamTel: dto.data_info_cred.ref_fam_tel,\n housingTypeId: dto.data_info_cred.housing_type_id,\n dirVivienda: dto.data_info_cred.dir_vivienda,\n refDomicilio: dto.data_info_cred.ref_domicilio,\n sector: dto.data_info_cred.sector,\n barrio: dto.data_info_cred.barrio,\n calle: dto.data_info_cred.calle,\n }\n : undefined,\n };\n }\n\n toModelList(response: any) {\n const parsed = JSON.parse(response.payload as string);\n const tempList = Array.isArray(parsed) ? parsed[0] : parsed.Table;\n console.log(tempList);\n const mapClient = (data: any): any => ({\n clientId: data.idCliente,\n identificationTypeId: data.idTipoIdentificacion,\n identificationNumber: data.numeroIdentificacion,\n tradeName: data.nombreComercial,\n legalName: data.nombreFiscal,\n address: data.direccion,\n phone: data.telefono,\n email: data.correo,\n finalConsumer: data.consumidorFinal,\n sriValidation: data.validationSri,\n identificationType: data.tipoIdentificacion,\n identificationTypeCode: data.codTipoIdentificacion,\n status: data.estado,\n totalResults: data.totalResults,\n });\n const list = tempList.map((item: any) => mapClient(item));\n const totalRecords = response.totalRecords ?? (list[0]?.totalRecords || 0);\n\n return {\n data: list,\n pagination: {\n totalRecords,\n },\n };\n }\n\n toCreateDTO(customer: any): any {\n return {\n id_tipo_identificacion: customer.idTipoIdentificacion,\n numero_identificacion: customer.numeroIdentificacion,\n nombre_fiscal: customer.nombreFiscal,\n nombre_comercial: customer.nombreComercial,\n direccion: customer.direccion,\n correo: customer.correo,\n telefono: customer.telefono,\n placa: customer.placa,\n nota: customer.nota,\n birth_date: customer.birthDate?.toISOString(),\n estado: customer.estado,\n validation_sri: customer.validationSri,\n config_valor_bruto: customer.configValorBruto,\n\n id_forma_pago_sri: customer.idFormaPagoSri,\n id_tipo_cliente_proveedor: customer.idTipoClienteProveedor,\n id_sub_contribuyente: customer.idSubContribuyente,\n id_tiempo_credito: customer.idTiempoCredito,\n id_ciudad: customer.idCiudad,\n id_cargo: customer.idCargo,\n id_empleado: customer.idEmpleado,\n\n data_info_cred: customer.dataInfoCred\n ? {\n marital_status_id: customer.dataInfoCred.maritalStatusId,\n conyuge_nombre: customer.dataInfoCred.conyugeNombre,\n conyuge_tel: customer.dataInfoCred.conyugeTel,\n ref_fam_nombre: customer.dataInfoCred.refFamNombre,\n ref_fam_tel: customer.dataInfoCred.refFamTel,\n housing_type_id: customer.dataInfoCred.housingTypeId,\n dir_vivienda: customer.dataInfoCred.dirVivienda,\n ref_domicilio: customer.dataInfoCred.refDomicilio,\n sector: customer.dataInfoCred.sector,\n barrio: customer.dataInfoCred.barrio,\n calle: customer.dataInfoCred.calle,\n }\n : null,\n };\n }\n\n toUpdateDTO(customer: any): any {\n return {\n id: customer.id,\n ...this.toCreateDTO(customer),\n };\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map, Observable } from 'rxjs';\nimport { ICompanyCustomerService } from '../interfaces/company-customer';\nimport { COMPANY_CUSTOMER_MAPPER } from '../../../tokens';\nimport { CompanyCustomerDefaultMapper } from '../mappers/company-customer-default-mapper';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CompanyCustomerService implements ICompanyCustomerService {\n private apiUrl = '/FactElect/CompanyCustomer/';\n private http = inject(HttpClient);\n private mapper =\n inject(COMPANY_CUSTOMER_MAPPER, { optional: true }) ?? new CompanyCustomerDefaultMapper();\n\n list(params: any): Observable<any> {\n console.log(params);\n const json = JSON.stringify({\n pageIndex: params.pageIndex || 1,\n pageSize: params.pageSize || 10,\n tipo: 1,\n });\n return this.http\n .get<any>(`${this.apiUrl}?json=${json}`)\n .pipe(map(dtos => this.mapper.toModelList(dtos)));\n }\n\n create(customer: any): Observable<any> {\n return this.http.post<any>(this.apiUrl, customer);\n }\n\n update(id: string, customer: any): Observable<any> {\n return this.http.put<any>(`${this.apiUrl}/${id}`, customer);\n }\n\n getById(id: string): Observable<any> {\n return this.http.get<any>(`${this.apiUrl}/${id}`);\n }\n\n search(term: string): Observable<any[]> {\n return this.http.get<any[]>(`${this.apiUrl}/search?q=${term}`);\n }\n\n // Validación completa para app principal\n validate(customer: any): Record<string, any> | null {\n const errors: Record<string, any> = {};\n\n if (!customer.email || !this.isValidEmail(customer.email)) {\n errors['email'] = 'Email inválido';\n }\n\n if (customer.phone && !this.isValidPhone(customer.phone)) {\n errors['phone'] = 'Teléfono inválido';\n }\n\n return Object.keys(errors).length > 0 ? errors : null;\n }\n\n private isValidEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n }\n\n private isValidPhone(phone: string): boolean {\n return /^\\d{10}$/.test(phone.replace(/\\D/g, ''));\n }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport class CustomerValidators {\n // Validador para que termine en 001\n static endsWith001(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value && value.length >= 3) {\n if (!value.endsWith('001')) {\n return { endsWith001: true };\n }\n }\n return null;\n };\n }\n\n // Validador para RUC ecuatoriano (13 dígitos)\n static ecuadorianRuc(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) return null;\n\n // Debe ser exactamente 13 dígitos\n if (!/^\\d{13}$/.test(value)) {\n return { invalidRuc: true };\n }\n\n // Debe terminar en 001\n if (!value.endsWith('001')) {\n return { rucMustEndWith001: true };\n }\n\n return null;\n };\n }\n\n // Validador para cédula ecuatoriana (10 dígitos)\n static ecuadorianCedula(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) return null;\n\n if (!/^\\d{10}$/.test(value)) {\n return { invalidCedula: true };\n }\n\n // Algoritmo de validación de cédula ecuatoriana\n const provincia = parseInt(value.substring(0, 2));\n if (provincia < 1 || provincia > 24) {\n return { invalidProvince: true };\n }\n\n const coeficientes = [2, 1, 2, 1, 2, 1, 2, 1, 2];\n let suma = 0;\n\n for (let i = 0; i < 9; i++) {\n let valor = parseInt(value.charAt(i)) * coeficientes[i];\n if (valor >= 10) valor -= 9;\n suma += valor;\n }\n\n const digitoVerificador = parseInt(value.charAt(9));\n const resultado = suma % 10 === 0 ? 0 : 10 - (suma % 10);\n\n if (resultado !== digitoVerificador) {\n return { invalidCheckDigit: true };\n }\n\n return null;\n };\n }\n\n // Validador de email\n static email(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) return null;\n\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(value)) {\n return { invalidEmail: true };\n }\n\n return null;\n };\n }\n\n // Validador de teléfono ecuatoriano\n static ecuadorianPhone(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) return null;\n\n // Debe empezar con 0 y tener 9-10 dígitos\n if (!/^0\\d{8,9}$/.test(value)) {\n return { invalidPhone: true };\n }\n\n return null;\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n ViewEncapsulation,\n inject,\n signal,\n input,\n output,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n COMPANY_CUSTOMER_FORM_CONFIG,\n COMPANY_CUSTOMER_SERVICE,\n} from '../../../tokens/injection-tokens';\nimport { CompanyCustomerService } from '../../data-access/services/company-customer';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIcon } from '@angular/material/icon';\nimport { Button, InputChip, ToUpperCase } from '@acontplus/ng-components';\nimport { MatSelectModule } from '@angular/material/select';\nimport { CustomerValidators } from '../../../shared/utils/customer.validators';\nimport { CompanyCustomerFormConfig, CreditFieldsConfig, Customer, FieldConfig } from '../../models';\nimport { MAIN_APP_COMPANY_CUSTOMER_CONFIG } from '../../config';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'acp-company-customer-form',\n exportAs: 'acpCustomerForm',\n imports: [\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatExpansionModule,\n MatSelectModule,\n MatIcon,\n Button,\n ToUpperCase,\n InputChip,\n MatButtonModule,\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './company-customer-form.html',\n styleUrls: ['./company-customer-form.scss'],\n})\nexport class CompanyCustomerFormComponent implements OnInit {\n formId = input<string | undefined>();\n @Input() customer?: any;\n @Input() mode: 'create' | 'edit' = 'create';\n showButtons = input(true);\n submitted = output<any>();\n cancelled = output<void>();\n readonly panelOpenState = signal(false);\n private fb = inject(FormBuilder);\n\n config =\n inject(COMPANY_CUSTOMER_FORM_CONFIG, { optional: true }) ?? MAIN_APP_COMPANY_CUSTOMER_CONFIG;\n\n private customerService =\n inject(COMPANY_CUSTOMER_SERVICE, { optional: true }) ?? inject(CompanyCustomerService);\n\n form!: FormGroup;\n isLoading = signal(false);\n errorMessage: string | null = null;\n\n step = signal(0);\n\n emails: string[] = [];\n\n telephones: string[] = [];\n\n tiemposCredito = signal<any[]>([]);\n tipoContribuyentes = signal<any[]>([]);\n tiposCliente = signal<any[]>([]);\n tiposIdentificacion = signal<any[]>([]);\n formasPagoSri = signal<any[]>([]);\n placas = signal<any[]>([]);\n ciudades = signal<any[]>([]);\n cargos = signal<any[]>([]);\n empresas = signal<any[]>([]);\n employees = signal<any[]>([]);\n\n maritalStatuses = signal<any[]>([]);\n housingTypes = signal<any[]>([]);\n\n showRefresh = signal(true);\n\n setStep(index: number) {\n this.step.set(index);\n }\n\n nextStep() {\n this.step.update(i => i + 1);\n }\n\n prevStep() {\n this.step.update(i => i - 1);\n }\n\n ngOnInit(): void {\n this.buildForm();\n if (this.customer) {\n this.patchFormValue(this.customer);\n }\n }\n\n private getDefaultConfig(): CompanyCustomerFormConfig {\n // Configuración por defecto\n return {} as CompanyCustomerFormConfig;\n }\n\n // Método mejorado para acceder a campos de crédito\n getCreditFieldConfig(fieldName: keyof CreditFieldsConfig): FieldConfig | undefined {\n return this.config.creditFields?.[fieldName];\n }\n\n isCreditFieldVisible(fieldName: keyof CreditFieldsConfig): boolean {\n const field = this.getCreditFieldConfig(fieldName);\n return field?.visible || false;\n }\n\n isCreditFieldRequired(fieldName: keyof CreditFieldsConfig): boolean {\n const field = this.getCreditFieldConfig(fieldName);\n return field?.required || false;\n }\n\n getCreditFieldLabel(fieldName: keyof CreditFieldsConfig): string {\n const field = this.getCreditFieldConfig(fieldName);\n return field?.label || fieldName;\n }\n\n getCreditFieldPlaceholder(fieldName: keyof CreditFieldsConfig): string {\n const field = this.getCreditFieldConfig(fieldName);\n return field?.placeholder || '';\n }\n\n // Método mejorado para construir el FormGroup de crédito\n private buildCreditFormGroup(): FormGroup {\n if (!this.config.showCreditInfo || !this.config.creditFields) {\n return this.fb.group({\n maritalStatusId: [null],\n conyugeNombre: [null],\n conyugeTel: [null],\n refFamNombre: [null],\n refFamTel: [null],\n housingTypeId: [null],\n dirVivienda: [null],\n refDomicilio: [null],\n sector: [null],\n barrio: [null],\n calle: [null],\n });\n }\n\n // Construir dinámicamente basado en la config\n const creditGroup: any = {};\n const creditFields = this.config.creditFields;\n\n Object.keys(creditFields).forEach(key => {\n const fieldConfig = creditFields[key as keyof CreditFieldsConfig];\n const validators = fieldConfig.required ? [Validators.required] : [];\n creditGroup[key] = [null, validators];\n });\n\n return this.fb.group(creditGroup);\n }\n\n private buildForm(): void {\n this.form = this.fb.group({\n // IDs\n idCliente: [0],\n idEmpresa: [0],\n idCargo: [0],\n idFormaPagoSri: [0],\n idTipoClienteProveedor: [0],\n idSubContribuyente: [0],\n idTiempoCredito: [0],\n idCiudad: [0],\n idEmpleado: [0],\n\n // Datos principales con validadores\n idTipoIdentificacion: [\n 0,\n this.config.fields.idTipoIdentificacion.required ? [Validators.required] : [],\n ],\n numeroIdentificacion: ['', this.getValidatorsForField('numeroIdentificacion')],\n nombreFiscal: ['', this.getValidatorsForField('nombreFiscal')],\n nombreComercial: [''],\n direccion: ['', this.getValidatorsForField('direccion')],\n correo: ['', this.getValidatorsForField('correo')],\n telefono: ['', this.getValidatorsForField('telefono')],\n placa: [''],\n nota: [''],\n birthDate: [null],\n\n // Estados\n estado: [false],\n validationSri: [false],\n configValorBruto: [false],\n\n // FormGroup anidado para info de crédito\n dataInfoCred: this.buildCreditFormGroup(),\n });\n }\n\n private patchFormValue(customer: Customer): void {\n this.form.patchValue({\n idCliente: customer.idCliente || 0,\n idEmpresa: customer.idEmpresa || 0,\n idCargo: customer.idCargo || 0,\n idFormaPagoSri: customer.idFormaPagoSri || 0,\n idTipoClienteProveedor: customer.idTipoClienteProveedor || 0,\n idTipoIdentificacion: customer.idTipoIdentificacion || 0,\n idSubContribuyente: customer.idSubContribuyente || 0,\n idTiempoCredito: customer.idTiempoCredito || 0,\n idCiudad: customer.idCiudad || 0,\n idEmpleado: customer.idEmpleado || 0,\n\n numeroIdentificacion: customer.numeroIdentificacion || '',\n nombreFiscal: customer.nombreFiscal || '',\n nombreComercial: customer.nombreComercial || '',\n direccion: customer.direccion || '',\n correo: customer.correo || '',\n telefono: customer.telefono || '',\n placa: customer.placa || '',\n nota: customer.nota || '',\n birthDate: customer.birthDate || null,\n\n estado: customer.estado || false,\n validationSri: customer.validationSri || false,\n configValorBruto: customer.configValorBruto || false,\n\n dataInfoCred: customer.dataInfoCred || {},\n });\n }\n\n // Método mejorado para obtener validadores\n private getValidatorsForField(fieldName: keyof CompanyCustomerFormConfig['fields']): any[] {\n const validators: any[] = [];\n const fieldConfig = this.config.fields[fieldName];\n\n if (!fieldConfig) return validators;\n\n if (fieldConfig.required) {\n validators.push(Validators.required);\n }\n\n // Validadores específicos por campo\n switch (fieldName) {\n case 'numeroIdentificacion':\n validators.push(Validators.minLength(13));\n validators.push(Validators.maxLength(13));\n validators.push(CustomerValidators.endsWith001());\n break;\n\n case 'correo':\n if (fieldConfig.visible) {\n validators.push(CustomerValidators.email());\n }\n break;\n\n case 'telefono':\n if (fieldConfig.visible) {\n validators.push(CustomerValidators.ecuadorianPhone());\n }\n break;\n }\n\n // Validadores custom del config\n if (fieldConfig.validators) {\n validators.push(...fieldConfig.validators);\n }\n\n return validators;\n }\n\n // Métodos mejorados de acceso\n isFieldVisible(fieldName: keyof CompanyCustomerFormConfig['fields']): boolean {\n return this.config.fields[fieldName]?.visible || false;\n }\n\n isFieldRequired(fieldName: keyof CompanyCustomerFormConfig['fields']): boolean {\n return this.config.fields[fieldName]?.required || false;\n }\n\n getFieldLabel(fieldName: keyof CompanyCustomerFormConfig['fields']): string {\n return this.config.fields[fieldName]?.label || fieldName;\n }\n\n getFieldPlaceholder(fieldName: keyof CompanyCustomerFormConfig['fields']): string {\n return this.config.fields[fieldName]?.placeholder || '';\n }\n\n identificationTypeChange($ev: any) {\n console.log($ev);\n }\n\n onSubmit(): void {\n if (this.form.invalid) {\n this.form.markAllAsTouched();\n return;\n }\n\n const customerData: Customer = this.form.getRawValue();\n\n if (this.customerService?.validate) {\n const validationErrors = this.customerService.validate(customerData);\n if (validationErrors) {\n this.errorMessage = 'Por favor corrija los errores de validación';\n return;\n }\n }\n\n this.isLoading.set(true);\n this.errorMessage = null;\n\n const operation$ =\n this.mode === 'create'\n ? this.customerService!.create(customerData)\n : this.customerService!.update(this.customer!.id!, customerData);\n\n operation$.subscribe({\n next: (savedCustomer: any) => {\n this.isLoading.set(false);\n this.submitted.emit(savedCustomer);\n },\n error: (error: any) => {\n this.isLoading.set(false);\n this.errorMessage = error.message || 'Error al guardar el cliente';\n },\n });\n }\n\n onCancel(): void {\n this.cancelled.emit();\n }\n\n getErrorMessage(fieldName: string): string {\n const control = this.form.get(fieldName);\n if (!control || !control.errors || !control.touched) {\n return '';\n }\n\n if (control.errors['required']) {\n return `${this.getFieldLabel(fieldName as any)} es requerido`;\n }\n if (control.errors['minlength']) {\n return `Mínimo ${control.errors['minlength'].requiredLength} caracteres`;\n }\n if (control.errors['maxlength']) {\n return `Máximo ${control.errors['maxlength'].requiredLength} caracteres`;\n }\n if (control.errors['endsWith001']) {\n return 'Debe terminar en 001';\n }\n if (control.errors['invalidRuc']) {\n return 'RUC inválido';\n }\n if (control.errors['invalidCedula']) {\n return 'Cédula inválida';\n }\n if (control.errors['invalidEmail']) {\n return 'Email inválido';\n }\n if (control.errors['invalidPhone']) {\n return 'Teléfono inválido (debe empezar con 0)';\n }\n\n return 'Campo inválido';\n }\n\n // Getters para FormGroups anidados\n get dataInfoCredForm(): FormGroup {\n return this.form.get('dataInfoCred') as FormGroup;\n }\n\n searchIdentificacion($event: MouseEvent) {\n $event.stopPropagation();\n console.log('search');\n }\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" [id]=\"formId()\" class=\"mb-2\">\n @if (errorMessage) {\n <div class=\"alert alert-error\">{{ errorMessage }}</div>\n }\n <mat-accordion class=\"mb-2\">\n <mat-expansion-panel [expanded]=\"step() === 0\" (opened)=\"setStep(0)\" hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon>account_circle</mat-icon>\n Datos Principales\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <div class=\"d-grid gap-2 mx-3 mt-2\">\n <div\n class=\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\"\n >\n <div class=\"col\">\n @if (isFieldVisible('idTipoIdentificacion')) {\n <mat-form-field class=\"w-100\">\n <mat-label> {{ getFieldLabel('idTipoIdentificacion') }} </mat-label>\n <mat-select\n formControlName=\"idTipoIdentificacion\"\n (selectionChange)=\"identificationTypeChange($event)\"\n >\n @for (item of tiposIdentificacion(); track $index) {\n <mat-option [value]=\"item.idTipoIdentificacion\">{{ item.descripcion }}</mat-option>\n }\n </mat-select>\n @if (form.get('idTipoIdentificacion')?.invalid &&\n form.get('idTipoIdentificacion')?.touched) {\n <mat-error> {{ getErrorMessage('idTipoIdentificacion') }}</mat-error>\n }\n </mat-form-field>\n }\n </div>\n\n <div class=\"col\">\n <!-- Número de Identificación -->\n @if (isFieldVisible('numeroIdentificacion')) {\n <mat-form-field class=\"w-100\">\n <mat-label> {{ getFieldLabel('numeroIdentificacion') }} </mat-label>\n <input\n matInput\n formControlName=\"numeroIdentificacion\"\n [placeholder]=\"getFieldPlaceholder('numeroIdentificacion')\"\n />\n @if (form.get('numeroIdentificacion')?.invalid &&\n form.get('numeroIdentificacion')?.touched) {\n <mat-error> {{ getErrorMessage('numeroIdentificacion') }}</mat-error>\n }\n <ng-container matSuffix>\n <button type=\"button\" mat-icon-button (click)=\"searchIdentificacion($event)\">\n <mat-icon>search</mat-icon>\n </button>\n </ng-container>\n </mat-form-field>\n }\n </div>\n </div>\n\n <div\n class=\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\"\n >\n @if (isFieldVisible('nombreFiscal')){\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label> {{ getFieldLabel('nombreFiscal') }} </mat-label>\n <input\n matInput\n autocomplete=\"off\"\n formControlName=\"nombreFiscal\"\n [placeholder]=\"getFieldPlaceholder('nombreFiscal')\"\n acpToUpperCase\n />\n @if (form.get('nombreFiscal')?.invalid && form.get('nombreFiscal')?.touched) {\n <mat-error> {{ getErrorMessage('nombreFiscal') }}</mat-error>\n }\n </mat-form-field>\n </div>\n\n } @if (isFieldVisible('nombreComercial')) {\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label> {{ getFieldLabel('nombreComercial') }} </mat-label>\n <input\n matInput\n autocomplete=\"off\"\n formControlName=\"nombreComercial\"\n [placeholder]=\"getFieldPlaceholder('nombreComercial')\"\n acpToUpperCase\n type=\"text\"\n />\n </mat-form-field>\n </div>\n\n }\n </div>\n\n @if (isFieldVisible('direccion')) {\n\n <mat-form-field class=\"w-100\">\n <mat-label> {{ getFieldLabel('direccion') }}:</mat-label>\n <input\n matInput\n formControlName=\"direccion\"\n [placeholder]=\"getFieldPlaceholder('direccion')\"\n acpToUpperCase\n />\n @if (form.get('direccion')?.invalid && form.get('direccion')?.touched) {\n <mat-error>{{ getErrorMessage('direccion') }}</mat-error>\n }\n </mat-form-field>\n }\n\n <div\n class=\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\"\n >\n @if (isFieldVisible('correo')) {\n <div class=\"col\">\n <acp-input-chip [chips]=\"emails\" [labelText]=\"getFieldLabel('correo')\" />\n </div>\n } @if (isFieldVisible('telefono')) {\n <div class=\"col\">\n <acp-input-chip [chips]=\"telephones\" [labelText]=\"getFieldLabel('telefono')\" />\n </div>\n }\n </div>\n </div>\n <mat-action-row>\n <acp-button\n variant=\"info\"\n matStyle=\"filled\"\n type=\"button\"\n text=\"Siguiente\"\n (handleClick)=\"nextStep()\"\n />\n </mat-action-row>\n </mat-expansion-panel>\n\n <mat-expansion-panel [expanded]=\"step() === 1\" (opened)=\"setStep(1)\" hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title> Información Comercial </mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"d-grid gap-2 mx-3\">\n <div\n class=\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\"\n >\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Forma de pago: </mat-label>\n <mat-select formControlName=\"idFormaPagoSri\">\n <mat-option [value]=\"0\">--Ninguno--</mat-option>\n\n @for (item of formasPagoSri(); track $index) {\n <mat-option [value]=\"item.idFormaPagoSri\"> {{ item.descripcion }} </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Tiempo Crédito: </mat-label>\n <mat-select formControlName=\"idTiempoCredito\">\n @for (item of tiemposCredito(); track $index) {\n <mat-option [value]=\"item.idTiempoCredito\"> {{ item.descripcion }} </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <div\n class=\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\"\n >\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Tipo Cliente: </mat-label>\n <mat-select formControlName=\"idTipoClienteProveedor\">\n <mat-option [value]=\"0\">--Ninguno--</mat-option>\n @for (item of tiposCliente(); track $index) {\n <mat-option [value]=\"item.idTipoClienteProveedor\">\n {{ item.descripcion }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Empleado: </mat-label>\n <mat-select formControlName=\"idEmpleado\">\n <mat-option [value]=\"0\">--Ninguno--</mat-option>\n\n @for (item of employees(); track $index) {\n <mat-option [value]=\"item.idEmpleado\"> {{ item.nombreCompleto }} </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <mat-form-field>\n <mat-label>Country</mat-label>\n <input matInput />\n </mat-form-field>\n </div>\n\n <mat-action-row>\n <acp-button\n variant=\"info\"\n matStyle=\"filled\"\n type=\"button\"\n text=\"Atrás\"\n (handleClick)=\"prevStep()\"\n />\n <acp-button\n variant=\"info\"\n matStyle=\"filled\"\n type=\"button\"\n text=\"Siguiente\"\n (handleClick)=\"nextStep()\"\n />\n </mat-action-row>\n </mat-expansion-panel>\n\n <mat-expansion-panel [expanded]=\"step() === 2\" (opened)=\"setStep(2)\" hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title> Información de Crédito </mat-panel-title>\n </mat-expansion-panel-header>\n\n <section class=\"d-grid gap-2 mx-2\" formGroupName=\"dataInfoCred\">\n <div\n class=\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-1\"\n >\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Estado Civil: </mat-label>\n <mat-select formControlName=\"maritalStatusId\">\n <mat-option [value]=\"0\">Seleccionar...</mat-option>\n\n @for (item of maritalStatuses(); track $index) {\n <mat-option [value]=\"item.id\"> {{ item.name }} </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Tipo de Vivienda: </mat-label>\n <mat-select formControlName=\"housingTypeId\">\n <mat-option [value]=\"0\">Seleccionar...</mat-option>\n\n @for (item of housingTypes(); track $index) {\n <mat-option [value]=\"item.id\"> {{ item.name }} </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <div\n class=\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-1\"\n >\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Nombre del Cónyuge:</mat-label>\n <input matInput formControlName=\"conyugeNombre\" placeholder=\"Nombre del cónyuge\" />\n </mat-form-field>\n </div>\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Teléfono del Cónyuge:</mat-label>\n <input matInput formControlName=\"conyugeTel\" placeholder=\"09xxxxxxxx\" />\n </mat-form-field>\n </div>\n </div>\n\n <div\n class=\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-1\"\n >\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Referencia Familiar:</mat-label>\n <input matInput formControlName=\"refFamTel\" placeholder=\"09xxxxxxxx\" />\n </mat-form-field>\n </div>\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Teléfono Referencia:</mat-label>\n <input matInput formControlName=\"refFamTel\" placeholder=\"09xxxxxxxx\" />\n </mat-form-field>\n </div>\n </div>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Dirección de Vivienda</mat-label>\n <textarea\n matInput\n formControlName=\"dirVivienda\"\n placeholder=\"Dirección completa de la vivienda (Sector, Barrio y Calle)\"\n ></textarea>\n </mat-form-field>\n\n <div\n class=\"row row-cols-xxl-3 row-cols-xl-3 row-cols-lg-3 row-cols-md-2 row-cols-sm-1 row-cols-1 g-1\"\n >\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Sector:</mat-label>\n <input matInput formControlName=\"sector\" placeholder=\"Nombre del sector\" />\n </mat-form-field>\n </div>\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Barrio:</mat-label>\n <input matInput formControlName=\"barrio\" placeholder=\"Nombre del barrio\" />\n </mat-form-field>\n </div>\n <div class=\"col\">\n <mat-form-field class=\"w-100\">\n <mat-label>Calle:</mat-label>\n <input matInput formControlName=\"calle\" placeholder=\"Nombre de la calle\" />\n </mat-form-field>\n </div>\n </div>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Referencia de Domicilio</mat-label>\n <textarea\n matInput\n formControlName=\"refDomicilio\"\n placeholder=\"Descripción detallada del punto de referencia\"\n ></textarea>\n </mat-form-field>\n </section>\n\n <mat-action-row>\n <acp-button\n variant=\"info\"\n matStyle=\"filled\"\n type=\"button\"\n text=\"Atrás\"\n (handleClick)=\"prevStep()\"\n />\n <acp-button\n variant=\"info\"\n matStyle=\"filled\"\n type=\"button\"\n text=\"Siguiente\"\n (handleClick)=\"nextStep()\"\n />\n </mat-action-row>\n </mat-expansion-panel>\n\n <mat-expansion-panel [expanded]=\"step() === 3\" (opened)=\"setStep(3)\" hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title> Notas</mat-panel-title>\n </mat-expansion-panel-header>\n\n @if (isFieldVisible('nota')) {\n\n <mat-form-field class=\"w-100\">\n <mat-label> {{ getFieldLabel('nota') }} </mat-label>\n <textarea\n matInput\n formControlName=\"nota\"\n [placeholder]=\"getFieldPlaceholder('nota')\"\n rows=\"3\"\n ></textarea>\n </mat-form-field>\n }\n <mat-action-row>\n <acp-button\n variant=\"info\"\n matStyle=\"filled\"\n type=\"button\"\n text=\"Atrás\"\n (handleClick)=\"prevStep()\"\n />\n </mat-action-row>\n </mat-expansion-panel>\n </mat-accordion>\n\n <!-- Buttons -->\n @if (showButtons()){\n <div class=\"form-actions\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"onCancel()\" [disabled]=\"isLoading()\">\n {{ config.cancelButtonText }}\n </button>\n\n <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"isLoading() || form.invalid\">\n @if (!isLoading()) {\n <span>{{ config.submitButtonText }}</span>\n } @else {\n <span>Guardando...</span>\n }\n </button>\n </div>\n\n }\n</form>\n","// export * from './lib/application';\n// export * from './lib/domain';\n// export * from './lib/infrastructure';\n// export * from './lib/ui';\nexport * from './lib/company-customer';\nexport * from './lib/tokens';\nexport * from './lib/shared';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|