{"version":3,"file":"kif-lib-policy-summary.mjs","sources":["../../../projects/kif-lib/policy-summary/enum/policy-summary-type.enum.ts","../../../projects/kif-lib/policy-summary/policy-summary.component.ts","../../../projects/kif-lib/policy-summary/policy-summary.component.html","../../../projects/kif-lib/policy-summary/policy-summary.module.ts","../../../projects/kif-lib/policy-summary/interface/EnumExternal.interface.ts","../../../projects/kif-lib/policy-summary/public-api.ts","../../../projects/kif-lib/policy-summary/kif-lib-policy-summary.ts"],"sourcesContent":["export enum PolicySummaryType {\n    POLICY = 'POLICY',\n    POLICY_REQUEST = 'POLICY_REQUEST',\n    POLICY_PROPOSAL = 'POLICY_PROPOSAL'\n}\n","import { ChangeDetectorRef, Component, Input, OnInit} from '@angular/core';\nimport { IContactPoint, ILimit, IPolicyProposal, IPolicyQuotation, IPolicyV2 } from './interface';\nimport { DatePipe, DecimalPipe } from '@angular/common';\nimport { IEnumList, IExternalCode } from './interface/EnumExternal.interface';\nimport { FileText } from 'lucide-angular';\nimport { ContactPoint, Rating } from './interface/policy-base/shared';\nimport { PolicySummaryType } from './enum/policy-summary-type.enum';\n\n\n\n@Component({\n    selector: 'kit-policy-summary',\n    templateUrl: './policy-summary.component.html',\n    styleUrls: ['../styles/index.scss']\n})\nexport class PolicySummaryComponent implements OnInit {\n    @Input() policy!:IPolicyV2 | IPolicyQuotation | IPolicyProposal;\n    @Input() enumList!: IEnumList[];\n    @Input() excList!: {externalCode:IExternalCode[]}[];\n    @Input() type: PolicySummaryType = PolicySummaryType.POLICY;\n    public readonly PolicySummaryType = PolicySummaryType;\n    \n    public readonly fileText = FileText;\n    public readonly HIDDE_DETAILS: string = 'Ocultar detalles';\n    public readonly SHOW_MORE_DETAILS: string = 'Ver más detalles';\n    public readonly SHOW_LESS: string = 'Ver menos';\n    public readonly SHOW_MORE_COVERAGE_LIST: string = 'Ver más coberturas';\n    public readonly SHOW_MORE_INSURED_LIST: string = 'Ver más asegurados';\n    public readonly SHOW_MORE_BENEFICIARY_LIST: string = 'Ver más beneficiarios';\n    private readonly YES: string = 'Si';\n    private readonly NO: string = 'No';\n    private readonly datePipe = new DatePipe('en-US');\n    public isShowMorePolicyDetails: boolean = false;\n    public isShowMoreCoverageList: boolean = false;\n    public isShowMoreInsuredList: boolean = false;\n    public isShowMoreObjectInsuredList: boolean = false;\n    public isShowMoreBeneficiaryList: boolean = false;\n    public quantityCoverageListToShow!: number;\n    public quantityInsuredListToShow!: number;\n    public quantityObjectInsuredListToShow!: number;\n    public quantityBeneficiaryListToShow!: number;\n    private readonly defaultQuatityToShow: number = 4;\n    public hasValidBeneficiaryData = false;\n    private readonly COMPONENT_TYPE_CODE_PRODUCT: string = 'PRODUCT';\n    public decimalPipe = new DecimalPipe('es-ES')\n    //Tabla Coberturas\n    public tableColumns: { columnDef: string, header: string }[] = [{ columnDef: \"name\", header: \"Nombre\" }, { columnDef: \"insuredAmmout\", header: \"Monto asegurado \" },\n        { columnDef: \"deductible\", header: \"Deducible\" }, { columnDef: 'prima', header: 'Prima' }];\n    public tableDisplayedColumns: string[] = ['name', 'insuredAmmout', 'deductible', 'prima'];\n    public dataSource: Array<{ name: string, insuredAmmout: string, deductible: string, prima: string }> = [];\n    //Tabla producers\n    public tableColumnsProducer: { columnDef: string, header: string }[] = [{ columnDef: \"name\", header: \"Nombre\" }, { columnDef: \"identifier\", header: \"Identificador (RUT)\" },\n        { columnDef: \"lider\", header: \"Productor líder\" }];\n    public tableDisplayedColumnsProducer: string[] = ['name', 'identifier', 'lider'];\n    public dataSourceProducer: Array<{ name: string, identifier: string, lider: string }> = [];\n    //Tabla materia asegurada\n    public tableColumnsInsuredObject: { columnDef: string, header: string }[] = [{ columnDef: \"class\", header: \"Clase\" },\n        { columnDef: \"identifier\", header: \"Identificador\" }, { columnDef: \"description\", header: \"Descripción\" }];\n    public tableDisplayedColumnsInsuredObject: string[] = ['class', 'identifier', 'description'];\n    public dataSourceInsuredObject: Array<{ class: string, identifier: string, description: string }> = [];\n    //Tabla asegurados\n    public tableColumnsInsured: { columnDef: string, header: string }[] = [{ columnDef: \"name\", header: \"Nombre\" }, { columnDef: \"identifier\", header: \"Identificador (RUT)\" },\n        { columnDef: \"type\", header: \"Tipo de asegurado\" }, { columnDef: \"insurableInterest\", header: \"Interés asegurable\" }];\n    public tableDisplayedColumnsInsured: string[] = ['name', 'identifier', 'type', 'insurableInterest'];\n    public dataSourceInsured: Array<{ name: string, identifier: string, type: string, insurableInterest: string }> = [];\n    //Tabla beneficiarios\n    public tableColumnsBeneficiary: { columnDef: string, header: string }[] = [{ columnDef: \"name\", header: \"Nombre\" }, { columnDef: \"identifier\", header: \"Identificador (RUT)\" },\n        { columnDef: \"percentage\", header: \"Porcentaje asignación\" }];\n    public tableDisplayedColumnsBeneficiary: string[] = ['name', 'identifier', 'percentage'];\n    public dataSourceBeneficiary: Array<{ name: string, identifier: string, percentage: string }> = [];\n    constructor(\n        private cdr: ChangeDetectorRef\n    ) { }\n    public ngOnInit(): void {\n        this.quantityCoverageListToShow = this.defaultQuatityToShow;\n        this.quantityInsuredListToShow = this.defaultQuatityToShow;\n        this.quantityObjectInsuredListToShow = this.defaultQuatityToShow;\n        this.quantityBeneficiaryListToShow = this.defaultQuatityToShow;\n        this.setInitTables()\n    }\n\n    private setInitTables() {\n        if (this.policy.coverageList) {\n            this.setTableCoverage();\n        }\n        if (this.policy.agreementProducerList) {\n            this.setTableProducer();\n        }\n        if (this.policy.insuredObjectList) {\n            this.setTableInsuredObject()\n        }\n        if (this.policy.insuredList) {\n            this.setTableInsured()\n        }\n        if (this.policy.beneficiaryList) {\n            this.setTableBeneficiary()\n        }\n    }\n    private setTableCoverage() {\n        const list = this.policy.coverageList;\n        if (!list?.length) return;\n        const slice = list.length <= 4 ? list : list.slice(0, 4);\n        for (const element of slice) {\n            this.dataSource.push({\n                name: element.productComponentMarketingName ?? '-',\n                insuredAmmout: element.ratingList ? this.getLimite(element.ratingList) : '-',\n                deductible: element.ratingList ? this.getDeducible(element.ratingList) : '-',\n                prima: element.ratingList ? this.getPrima(element.ratingList) : '-',\n            });\n        }\n        this.dataSource = [...this.dataSource];\n    }\n\n    public showMoreCoverages() {\n        this.isShowMoreCoverageList = !this.isShowMoreCoverageList\n        if (!this.policy.coverageList) return;\n        this.quantityCoverageListToShow = this.isShowMoreCoverageList ? this.policy.coverageList.length : this.defaultQuatityToShow\n        if (this.isShowMoreCoverageList) {\n            for (let index = 4; index < this.policy.coverageList.length; index++) {\n                const element = this.policy.coverageList[index];\n                this.dataSource.push({ name: element.productComponentMarketingName ?? '-',\n                    insuredAmmout: element.ratingList ? this.getLimite(element.ratingList) : '-',\n                    deductible: element.ratingList ? this.getDeducible(element.ratingList) : '-', prima: element.ratingList ? this.getPrima(element.ratingList) : '-' })\n            }\n        } else {\n            this.dataSource.splice(4)\n        }\n        this.dataSource = [...this.dataSource]\n    }\n\n    private getLimite(ratingList: Rating[]): string {\n        let truncatedNumber = 0;\n        const limitList: ILimit[] = ratingList.reduce((acc: any, item: Rating) => [...acc, ...item.limitList], []);\n        const found = limitList.find(e => e.componentTypeCode === this.COMPONENT_TYPE_CODE_PRODUCT);\n        if (found) {\n            const rawLimit = found.maximumAmount ?? found.fixedAmount ?? 0;\n            truncatedNumber = Math.floor(rawLimit * Math.pow(10, 4)) / Math.pow(10, 4);\n        }\n        return this.getFloatFixed(truncatedNumber);\n    }\n\n    public getDeducible(ratingList: Rating[]) {\n        let limit: number = 0\n        const limitList: ILimit[] = ratingList.reduce((acc: any, item: Rating) => [...acc, ...item.limitList], [])\n        const findComponentTypeCodeProduct = limitList.filter(e => e.componentTypeCode === this.COMPONENT_TYPE_CODE_PRODUCT);\n        if (findComponentTypeCodeProduct.length > 0) {\n            limit = Math.floor((findComponentTypeCodeProduct[0]?.amountLic??0) * Math.pow(10, 4)) / Math.pow(10, 4); \n        }\n        return this.getFloatFixed(limit);\n    }\n\n    private findExcNameByCode(searchCode: string): string {\n        if (!this.excList || !searchCode) {\n            return '';\n        }\n        const foundExc = this.excList.find(item => item.externalCode.find((ext) => ext.code === searchCode));\n        const fountItem = foundExc?.externalCode.find((ext) => ext.code === searchCode)\n        return fountItem ? fountItem.name : searchCode;\n    }\n    \n    public getPrima(ratingList: Rating[]) {\n        let prima = 0;\n        for (const element of ratingList) {\n            prima += Math.floor((element.premiumBalance?.premiumAmount ?? 0) * Math.pow(10, 4)) / Math.pow(10, 4);\n        }\n        return prima ? this.getFloatFixed(prima) : '-';\n    }\n\n    public findEnumNameByCode(listCode: string, searchCode: string): string {\n        if (!this.enumList || !searchCode || !listCode) {\n            return '';\n        }\n        const enumList = this.enumList.find(item => item.code === listCode);\n        if (!enumList) {\n            return searchCode;\n        }\n        const foundEnum = enumList.enumeration.find(item => item.code === searchCode);\n        return foundEnum?.name || searchCode;\n    }\n\n    public getDate(date: string | undefined | null) {\n        return date ? this.datePipe.transform(date, 'dd/MM/yyyy') : '-'\n    }\n\n    private setTableProducer() {\n        if (!this.policy.agreementProducerList?.length) return;\n        for (const element of this.policy.agreementProducerList) {\n            const identifier = element.party?.identifier ? element.party.identifier : '-';\n            this.dataSourceProducer.push({\n                name: element.agreementProducerFullName,\n                identifier: this.formatRut(identifier, true),\n                lider: element.producerLeaderIndicator ? this.YES : this.NO,\n            });\n        }\n    }\n\n    private formatRut(rut: string, useDotDelimiter: boolean) {\n        rut = this.cleanRut(rut)\n\n        let result = rut.slice(-4, -1) + '-' + rut.substring(rut.length - 1)\n        for (let i = 4; i < rut.length; i += 3) {\n            if (useDotDelimiter) {\n                result = rut.slice(-3 - i, -i) + '.' + result\n            } else {\n                result = rut.slice(-3 - i, -i) + result\n            }\n\n        }\n        if (result == '-') {\n            result = '';\n        }\n        return result\n    }\n\n    private  cleanRut(rut: string) {\n        return typeof rut === 'string' ?\n            rut.replace(/^0+|[^0-9kK]+/g, '').toUpperCase() :\n            ''\n    }\n\n    public getFormatIdentifier(identifier: string) {\n        return identifier ? this.formatRut(identifier, true): ''\n    }\n\n    public getContactData(contact: IContactPoint[] | ContactPoint[] , data: string): string {\n        if (!contact?.length) return '-';\n        const personal = contact[0].personalContactPoint;\n        const business = contact[0].businessContactPoint;\n        switch (data) {\n            case 'email':        return personal?.personalEmailAddress         ?? business?.businessEmailAddress         ?? '-';\n            case 'cellphone':    return personal?.personalTelephoneCellNumber  ?? business?.businessTelephoneCellNumber  ?? '-';\n            case 'landlinephone':return personal?.personalTelephoneLandlineNumber ?? business?.businessTelephoneLandlineNumber ?? '-';\n            case 'address':      return personal?.personalMunicipalityCode     ?? business?.businessMunicipalityCode     ?? '-';\n            default:             return '-';\n        }\n    }\n\n    public setTableInsuredObject() {\n        if (!this.policy.insuredObjectList?.length) return;\n        for (const element of this.policy.insuredObjectList) {\n            this.dataSourceInsuredObject.push({\n                class: this.findExcNameByCode(element.physicalObjectClassCode),\n                identifier: element.physicalObject.identifier ?? '-',\n                description: element.physicalObject.description ?? '-',\n            });\n        }\n        this.dataSourceInsuredObject = [...this.dataSourceInsuredObject];\n    }\n\n    public setTableInsured() {\n        const list = this.policy.insuredList;\n        if (!list?.length) return;\n        for (const element of list.slice(0, 4)) {\n            this.dataSourceInsured.push({\n                name: element.insuredFullName,\n                identifier: this.formatRut(element.party?.identifier ?? '', true),\n                insurableInterest: this.findEnumNameByCode('InsuredTypeCodeList', element.insuredTypeCode),\n                type: this.findEnumNameByCode('InsurableInterestCodeList', element.insurableInterestTypeCode),\n            });\n        }\n        this.dataSourceInsured = [...this.dataSourceInsured];\n    }\n\n    public showMoreInsured() {\n        if (!this.policy.insuredList) return;\n        this.isShowMoreInsuredList = !this.isShowMoreInsuredList\n        this.quantityInsuredListToShow = this.isShowMoreInsuredList ? this.policy.insuredList.length : this.defaultQuatityToShow\n        if (this.isShowMoreInsuredList) {\n            for (let index = 4; index < this.policy.insuredList.length; index++) {\n                const element = this.policy.insuredList[index];\n                this.dataSourceInsured.push({ name: element.insuredFullName, identifier: this.formatRut(element.party?.identifier ?? '', true), \n                    insurableInterest: this.findEnumNameByCode(\"InsuredTypeCodeList\", element.insuredTypeCode), \n                    type: this.findEnumNameByCode(\"InsurableInterestCodeList\", element.insurableInterestTypeCode) })\n            }\n        } else {\n            this.dataSourceInsured.splice(4)\n        }\n        this.dataSourceInsured = [...this.dataSourceInsured]\n    }\n\n    private setTableBeneficiary() {\n        const list = this.policy.beneficiaryList;\n        if (!list?.length) return;\n        for (const element of list.slice(0, 4)) {\n            this.dataSourceBeneficiary.push({\n                name: element.beneficiaryFullName ?? '-',\n                identifier: this.formatRut(element.party?.identifier ?? '', true),\n                percentage: (element.percentaje ?? 0) + '%',\n            });\n        }\n        this.dataSourceBeneficiary = [...this.dataSourceBeneficiary];\n    }\n\n    public showMoreBeneficiary() {\n        this.isShowMoreBeneficiaryList = !this.isShowMoreBeneficiaryList\n        if(this.policy.beneficiaryList){\n            this.quantityBeneficiaryListToShow = this.isShowMoreBeneficiaryList ? this.policy.beneficiaryList.length : this.defaultQuatityToShow\n            if (this.isShowMoreBeneficiaryList) {\n                for (let index = 4; index < this.policy.beneficiaryList.length; index++) {\n                    const element = this.policy.beneficiaryList[index];\n                    this.dataSourceBeneficiary.push({ name: element.beneficiaryFullName ?? '-'  , identifier:  this.formatRut(element.party?.identifier ?? '', true), \n                        percentage: (element.percentaje ?? 0) + '%' })\n                }\n            } else {\n                this.dataSourceBeneficiary.splice(4)\n            }\n        }\n        this.dataSourceBeneficiary = [...this.dataSourceBeneficiary]\n    }\n\n    public getFloatFixed(number:number){\n        const truncatedNumber = Math.floor((number) * Math.pow(10, 4)) / Math.pow(10, 4);\n        return truncatedNumber ? this.decimalPipe.transform(truncatedNumber, '1.3-3') as string : '-'\n    }\n}","@if(type === PolicySummaryType.POLICY || type === PolicySummaryType.POLICY_PROPOSAL){\n@if(policy) {\n<!-- Datos del producto -->\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0  size-16\">Datos del producto</h5>\n  </div>\n  <div class=\"d-flex\">\n    @if(policy.productComponentMarketingName || policy.planProductComponentMarketingName) {\n    <div class=\"col-lg-6 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Nombre</div>\n        @if (policy.planProductComponentMarketingName) {\n        <div class=\"description\"> {{policy.planProductComponentMarketingName}}</div>\n        } @else {\n        <div class=\"description\">{{policy.productComponentMarketingName}}</div>\n        }\n      </section>\n    </div>\n    <div class=\"col-lg-3\">\n      <section class=\"input-description\">\n        <div class=\"label\">Clase póliza</div>\n        <div class=\"description\">{{findEnumNameByCode(\"PolicyClassCodeList\", policy.policyClassCode)}}\n        </div>\n      </section>\n    </div>\n    <div class=\"col-lg-3\">\n      <section class=\"input-description\">\n        <div class=\"label\">Fecha inicial (desde - hasta)</div>\n        <div class=\"description\">{{getDate(policy.effectiveStartDateTime)}} -\n          {{getDate(policy.effectiveEndDateTime)}}</div>\n      </section>\n    </div>\n    }\n  </div>\n</section>\n\n<!--Coberturas-->\n@if(policy.coverageList && policy.coverageList.length > 0){\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0  size-16\">Coberturas</h5>\n    <div class=\"quantity-container\">\n      <div class=\"quantity-length\">{{policy.coverageList.length}}</div>\n    </div>\n  </div>\n  <table mat-table [dataSource]=\"dataSource\" class=\"table-policy-view\">\n    @for (column of tableColumns; track column) {\n    <ng-container [matColumnDef]=\"column.columnDef\">\n      <th mat-header-cell *matHeaderCellDef class=\"th-detail-policy-coverage\">\n        {{column.header}}\n      </th>\n      <td mat-cell *matCellDef=\"let element ; let i = index\" class=\"td-detail-policy-coverage\">\n        @if(column.columnDef === 'index') {\n        <div class=\"bg-td\">\n          {{i+1}}\n        </div>\n        } @else {\n        <div [innerHTML]=\"element[column.columnDef]\"></div>\n        }\n      </td>\n    </ng-container>\n    }\n    <tr mat-header-row *matHeaderRowDef=\"tableDisplayedColumns\"></tr>\n    <tr mat-row *matRowDef=\"let row; columns: tableDisplayedColumns\"></tr>\n  </table>\n  @if(policy.coverageList.length > 4) {\n  <div class=\"d-flex w-100 justify-content-end\">\n    <button class=\"btn-policy-view-more btn border-0 p-0 \" (click)=\"showMoreCoverages()\">\n      {{ isShowMoreCoverageList ? SHOW_LESS + ' coberturas': SHOW_MORE_COVERAGE_LIST }}\n    </button>\n  </div>\n  }\n</section>\n\n}\n<!--Contratante-->\n@if(policy.agreementHolder && policy.agreementHolder.party) {\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0  size-16\">Datos del contratante</h5>\n  </div>\n  <div class=\"row m-0\">\n    <div class=\"col-lg-3 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Nombre</div>\n        <div class=\"description\"> {{policy.agreementHolder.agreementHolderFullName}}</div>\n      </section>\n    </div>\n    <div class=\"col-lg-3 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Identificador (RUT)</div>\n        <div class=\"description\"> {{ policy.agreementHolder.party.identifier ?\n          getFormatIdentifier(policy.agreementHolder.party.identifier) : '' }}</div>\n      </section>\n    </div>\n    <div class=\"col-lg-3 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Teléfono móvil</div>\n        <div class=\"description\">{{ policy.agreementHolder.party.contactPointList ?\n          getContactData(policy.agreementHolder.party.contactPointList,'cellphone' ) : '' }}\n        </div>\n      </section>\n    </div>\n    <div class=\"col-lg-3 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Correo electrónico</div>\n        <div class=\"description\"> {{ policy.agreementHolder.party.contactPointList ?\n          getContactData(policy.agreementHolder.party.contactPointList,'email') : '' }}\n        </div>\n      </section>\n    </div>\n  </div>\n</section>\n\n}\n}\n<!--Productores-->\n@if(policy.agreementProducerList && policy.agreementProducerList.length > 0){\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0  size-16\">Datos del productor</h5>\n  </div>\n  <table mat-table [dataSource]=\"dataSourceProducer\" class=\"table-policy-view\">\n    @for (column of tableColumnsProducer; track column) {\n    <ng-container [matColumnDef]=\"column.columnDef\">\n      <th mat-header-cell *matHeaderCellDef class=\"th-detail-policy-coverage\">\n        {{column.header}}\n      </th>\n      <td mat-cell *matCellDef=\"let element ; let i = index\" class=\"td-detail-policy-coverage\">\n        @if(column.columnDef === 'index') {\n        <div class=\"bg-td\">\n          {{i+1}}\n        </div>\n        } @else {\n        <div [innerHTML]=\"element[column.columnDef]\"></div>\n        }\n      </td>\n    </ng-container>\n    }\n    <tr mat-header-row *matHeaderRowDef=\"tableDisplayedColumnsProducer\"></tr>\n    <tr mat-row *matRowDef=\"let row; columns: tableDisplayedColumnsProducer\"></tr>\n  </table>\n</section>\n\n}\n<!--Opciones de pago-->\n@if(policy.financialOptionList && policy.financialOptionList.length > 0 && policy.financialOptionList.length === 1 && \npolicy.financialOptionList[0].collectionMandateKey && policy.financialOptionList[0].collectionMethodCode ){\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0  size-16\">Opción de pago</h5>\n  </div>\n  <div class=\"d-flex\">\n    @if(policy.financialOptionList[0].collectionMethodCode) {\n    <div class=\"col-lg-3 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Vía de cobro</div>\n        <div class=\"description\">\n          {{findEnumNameByCode(\"CollectionMethodTypeCodeList\",policy.financialOptionList[0].collectionMethodCode)}}\n        </div>\n      </section>\n    </div>\n    }\n    @if(policy.financialOptionList[0].financialSchedulerList &&\n    policy.financialOptionList[0].financialSchedulerList[0].paymentFrequencyCode) {\n    <div class=\"col-lg-3 col-sm12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Periodicidad</div>\n        <div class=\"description\">\n          {{findEnumNameByCode(\"FrequencyCodeList\",policy.financialOptionList[0].financialSchedulerList[0].paymentFrequencyCode)}}\n        </div>\n      </section>\n    </div>\n    }\n    @if(policy.financialOptionList[0].financialSchedulerList &&\n    policy.financialOptionList[0].financialSchedulerList[0].paymentQuantity) {\n    <div class=\"col-lg-3 col-sm12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Cantidad cuotas</div>\n        <div class=\"description\">{{policy.financialOptionList[0].financialSchedulerList[0].paymentQuantity}}\n        </div>\n      </section>\n    </div>\n    }\n    @if(policy.financialOptionList[0].financialSchedulerList &&\n    policy.financialOptionList[0].financialSchedulerList[0].dayOfMonth) {\n    <div class=\"col-lg-3 col-sm12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Día de pago</div>\n        <div class=\"description\">{{policy.financialOptionList[0].financialSchedulerList[0].dayOfMonth}}\n        </div>\n      </section>\n    </div>\n    }\n  </div>\n</section>\n\n}\n<!--Materia asegurada-->\n@if(policy.insuredObjectList && policy.insuredObjectList.length > 0){\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0  size-16\">Detalles de materia asegurada</h5>\n  </div>\n  <table mat-table [dataSource]=\"dataSourceInsuredObject\" class=\"table-policy-view\">\n    @for (column of tableColumnsInsuredObject; track column) {\n    <ng-container [matColumnDef]=\"column.columnDef\">\n      <th mat-header-cell *matHeaderCellDef class=\"th-detail-policy-coverage\">\n        {{column.header}}\n      </th>\n      <td mat-cell *matCellDef=\"let element ; let i = index\" class=\"td-detail-policy-coverage\">\n        @if(column.columnDef === 'index') {\n        <div class=\"bg-td\">\n          {{i+1}}\n        </div>\n        } @else {\n        <div [innerHTML]=\"element[column.columnDef]\"></div>\n        }\n      </td>\n    </ng-container>\n    }\n    <tr mat-header-row *matHeaderRowDef=\"tableDisplayedColumnsInsuredObject\"></tr>\n    <tr mat-row *matRowDef=\"let row; columns: tableDisplayedColumnsInsuredObject\"></tr>\n  </table>\n</section>\n}\n<!--Asegurados-->\n@if(policy.insuredList && policy.insuredList.length > 0){\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0  size-16\">Datos de los asegurados</h5>\n    <div class=\"quantity-container\">\n      <div class=\"quantity-length\">{{policy.insuredList.length}}</div>\n    </div>\n  </div>\n  <table mat-table [dataSource]=\"dataSourceInsured\" class=\"table-policy-view\">\n    @for (column of tableColumnsInsured; track column) {\n    <ng-container [matColumnDef]=\"column.columnDef\">\n      <th mat-header-cell *matHeaderCellDef class=\"th-detail-policy-coverage\">\n        {{column.header}}\n      </th>\n      <td mat-cell *matCellDef=\"let element ; let i = index\" class=\"td-detail-policy-coverage\">\n        @if(column.columnDef === 'index') {\n        <div class=\"bg-td\">\n          {{i+1}}\n        </div>\n        } @else {\n        <div [innerHTML]=\"element[column.columnDef]\"></div>\n        }\n      </td>\n    </ng-container>\n    }\n    <tr mat-header-row *matHeaderRowDef=\"tableDisplayedColumnsInsured\"></tr>\n    <tr mat-row *matRowDef=\"let row; columns: tableDisplayedColumnsInsured\"></tr>\n  </table>\n  @if(policy.insuredList.length > 4) {\n  <div class=\"d-flex w-100 justify-content-end\">\n    <button class=\"btn-policy-view-more btn border-0 p-0 \" (click)=\"showMoreInsured()\">\n      {{ isShowMoreInsuredList ? SHOW_LESS + ' asegurados' : SHOW_MORE_INSURED_LIST }}\n    </button>\n  </div>\n  }\n</section>\n\n}\n<!--Beneficiario-->\n@if(policy.beneficiaryList && policy.beneficiaryList.length > 0){\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0  size-16\">Datos de los beneficiarios</h5>\n    <div class=\"quantity-container\">\n      <div class=\"quantity-length\">{{policy.beneficiaryList.length}}</div>\n    </div>\n  </div>\n  @if(policy.beneficiaryList[0].party){\n  <table mat-table [dataSource]=\"dataSourceBeneficiary\" class=\"table-policy-view\">\n    @for (column of tableColumnsBeneficiary; track column) {\n    <ng-container [matColumnDef]=\"column.columnDef\">\n      <th mat-header-cell *matHeaderCellDef class=\"th-detail-policy-coverage\">\n        {{column.header}}\n      </th>\n      <td mat-cell *matCellDef=\"let element ; let i = index\" class=\"td-detail-policy-coverage\">\n        @if(column.columnDef === 'index') {\n        <div class=\"bg-td\">\n          {{i+1}}\n        </div>\n        } @else {\n        <div [innerHTML]=\"element[column.columnDef]\"></div>\n        }\n      </td>\n    </ng-container>\n    }\n    <tr mat-header-row *matHeaderRowDef=\"tableDisplayedColumnsBeneficiary\"></tr>\n    <tr mat-row *matRowDef=\"let row; columns: tableDisplayedColumnsBeneficiary\"></tr>\n  </table>\n  @if(policy.beneficiaryList.length > 4) {\n  <div class=\"d-flex w-100 justify-content-end\">\n    <button class=\"btn-policy-view-more btn border-0 p-0 \" (click)=\"showMoreBeneficiary()\">\n      {{ isShowMoreBeneficiaryList ? SHOW_LESS + ' beneficiarios' : SHOW_MORE_BENEFICIARY_LIST }}\n    </button>\n  </div>\n  }\n  }\n</section>\n}\n}@else if(type === PolicySummaryType.POLICY_REQUEST) {\n<!--Solicitante-->\n@if(policy.policyRequest && policy.policyRequest.requester) {\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0 size-16\">Solicitante</h5>\n  </div>\n  <div class=\"row m-0\">\n    <div class=\"col-lg-3 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Nombre</div>\n        <div class=\"description\">{{policy.policyRequest.requester.givenName || ''}}\n          {{policy.policyRequest.requester.surname1 || ''}}</div>\n      </section>\n    </div>\n    <div class=\"col-lg-3 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Identificador (RUT)</div>\n        <div class=\"description\">{{getFormatIdentifier(policy.policyRequest.requester.identifier || policy.policyRequest.requester.companyIdentifier || \n          '')}}</div>\n      </section>\n    </div>\n    <div class=\"col-lg-3 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Teléfono móvil</div>\n        <div class=\"description\">{{policy.policyRequest.requester.telephoneCellNumber || '-'}}</div>\n      </section>\n    </div>\n    <div class=\"col-lg-3 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Correo electrónico</div>\n        <div class=\"description\">{{policy.policyRequest.requester.emailAddress || '-'}}</div>\n      </section>\n    </div>\n  </div>\n</section>\n\n}\n<!--Asegurados-->\n@if(policy && policy.insuredList && policy.insuredList.length > 0) {\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0 size-16\">Asegurados</h5>\n    <div class=\"quantity-container\">\n      <div class=\"quantity-length\">{{policy.insuredList.length}}</div>\n    </div>\n  </div>\n  <table mat-table [dataSource]=\"dataSourceInsured\" class=\"table-policy-view\">\n    @for (column of tableColumnsInsured; track column) {\n    <ng-container [matColumnDef]=\"column.columnDef\">\n      <th mat-header-cell *matHeaderCellDef class=\"th-detail-policy-coverage\">{{column.header}}</th>\n      <td mat-cell *matCellDef=\"let element; let i = index\" class=\"td-detail-policy-coverage\">\n        @if(column.columnDef === 'index') {\n        <div class=\"bg-td\">{{i+1}}</div>\n        } @else {\n        <div [innerHTML]=\"element[column.columnDef]\"></div>\n        }\n      </td>\n    </ng-container>\n    }\n    <tr mat-header-row *matHeaderRowDef=\"tableDisplayedColumnsInsured\"></tr>\n    <tr mat-row *matRowDef=\"let row; columns: tableDisplayedColumnsInsured\"></tr>\n  </table>\n  @if(policy.insuredList.length > 4) {\n  <div class=\"d-flex w-100 justify-content-end\">\n    <button class=\"btn-policy-view-more btn border-0 p-0\" (click)=\"showMoreInsured()\">\n      {{ isShowMoreInsuredList ? SHOW_LESS + ' asegurados' : SHOW_MORE_INSURED_LIST }}\n    </button>\n  </div>\n  }\n</section>\n}\n<!--Materia asegurada-->\n@if(policy && policy.insuredObjectList && policy.insuredObjectList.length > 0){\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0  size-16\">Detalles de materia asegurada</h5>\n  </div>\n    <table mat-table [dataSource]=\"dataSourceInsuredObject\" class=\"table-policy-view\">\n    @for (column of tableColumnsInsuredObject; track column) {\n    <ng-container [matColumnDef]=\"column.columnDef\">\n      <th mat-header-cell *matHeaderCellDef class=\"th-detail-policy-coverage\">\n        {{column.header}}\n      </th>\n      <td mat-cell *matCellDef=\"let element ; let i = index\" class=\"td-detail-policy-coverage\">\n        @if(column.columnDef === 'index') {\n        <div class=\"bg-td\">\n          {{i+1}}\n        </div>\n        } @else {\n        <div [innerHTML]=\"element[column.columnDef]\"></div>\n        }\n      </td>\n    </ng-container>\n    }\n    <tr mat-header-row *matHeaderRowDef=\"tableDisplayedColumnsInsuredObject\"></tr>\n    <tr mat-row *matRowDef=\"let row; columns: tableDisplayedColumnsInsuredObject\"></tr>\n  </table>\n</section>\n}\n<!--Producto-->\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0 size-16\">Producto</h5>\n  </div>\n  <div class=\"d-flex\">\n    <div class=\"col-lg-6 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Nombre</div>\n        <div class=\"description\">\n          @if(policy.planProductComponentMarketingName) {\n          {{policy.planProductComponentMarketingName}}\n          } @else {\n          {{policy.productComponentMarketingName}}\n          }\n        </div>\n      </section>\n    </div>\n    <div class=\"col-lg-3 col-sm-12\">\n      <section class=\"input-description\">\n        <div class=\"label\">Clase de póliza</div>\n        <div class=\"description\">{{ policy && policy.policyClassCode ?\n          findEnumNameByCode(\"PolicyClassCodeList\", policy.policyClassCode) : '' }}</div>\n      </section>\n    </div>\n  </div>\n</section>\n\n<!--Coberturas-->\n@if(policy.coverageList && policy.coverageList.length > 0) {\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0 size-16\">Coberturas</h5>\n    <div class=\"quantity-container\">\n      <div class=\"quantity-length\">{{policy.coverageList.length}}</div>\n    </div>\n  </div>\n  <table mat-table [dataSource]=\"dataSource\" class=\"table-policy-view\">\n    @for (column of tableColumns; track column) {\n    <ng-container [matColumnDef]=\"column.columnDef\">\n      <th mat-header-cell *matHeaderCellDef class=\"th-detail-policy-coverage\">{{column.header}}</th>\n      <td mat-cell *matCellDef=\"let element; let i = index\" class=\"td-detail-policy-coverage\">\n        @if(column.columnDef === 'index') {\n        <div class=\"bg-td\">{{i+1}}</div>\n        } @else {\n        <div [innerHTML]=\"element[column.columnDef]\"></div>\n        }\n      </td>\n    </ng-container>\n    }\n    <tr mat-header-row *matHeaderRowDef=\"tableDisplayedColumns\"></tr>\n    <tr mat-row *matRowDef=\"let row; columns: tableDisplayedColumns\"></tr>\n  </table>\n  @if(policy.coverageList.length > 4) {\n  <div class=\"d-flex w-100 justify-content-end\">\n    <button class=\"btn-policy-view-more btn border-0 p-0\" (click)=\"showMoreCoverages()\">\n      {{ isShowMoreCoverageList ? SHOW_LESS + ' coberturas' : SHOW_MORE_COVERAGE_LIST }}\n    </button>\n  </div>\n  }\n</section>\n\n}\n<!--Productor(es)-->\n@if(policy.agreementProducerList && policy.agreementProducerList.length > 0) {\n<mat-divider></mat-divider>\n<section class=\"section-summary-view-policy\">\n  <div class=\"title-card-policy-view\">\n    <lucide-angular [img]=\"fileText\" [size]=\"'20'\" [color]=\"'#5D6F85'\" class=\"w-auto p-0\"></lucide-angular>\n    <h5 class=\"mb-0 size-16\">Productor(es)</h5>\n  </div>\n  <table mat-table [dataSource]=\"dataSourceProducer\" class=\"table-policy-view\">\n    @for (column of tableColumnsProducer; track column) {\n    <ng-container [matColumnDef]=\"column.columnDef\">\n      <th mat-header-cell *matHeaderCellDef class=\"th-detail-policy-coverage\">{{column.header}}</th>\n      <td mat-cell *matCellDef=\"let element; let i = index\" class=\"td-detail-policy-coverage\">\n        @if(column.columnDef === 'index') {\n        <div class=\"bg-td\">{{i+1}}</div>\n        } @else {\n        <div [innerHTML]=\"element[column.columnDef]\"></div>\n        }\n      </td>\n    </ng-container>\n    }\n    <tr mat-header-row *matHeaderRowDef=\"tableDisplayedColumnsProducer\"></tr>\n    <tr mat-row *matRowDef=\"let row; columns: tableDisplayedColumnsProducer\"></tr>\n  </table>\n</section>\n}\n}","import { LOCALE_ID, NgModule } from '@angular/core';\n\nimport {  provideNativeDateAdapter } from '@angular/material/core';\nimport {  CommonModule } from '@angular/common';\n\nimport { provideNgxMask } from 'ngx-mask';\n\nimport { PolicySummaryComponent } from './policy-summary.component';\nimport { LucideAngularModule } from 'lucide-angular';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatDividerModule } from '@angular/material/divider';\n@NgModule({\n    imports: [\n        CommonModule,\n        LucideAngularModule,\n        MatTableModule,\n        MatDividerModule\n    ],\n    declarations: [\n        PolicySummaryComponent,],\n    exports:[\n        PolicySummaryComponent\n    ],\n    providers: [provideNativeDateAdapter(), provideNgxMask(),{ provide: LOCALE_ID, useValue: 'es-ES' },\n    ]\n})\nexport class KifPolicySummaryModule{ }\n","export interface IEnumList {\n    code: string;\n    enumeration: IEnum[];\n}\nexport class IEnum {\n    code : string = \"\"; \n    name: string = \"\";\n    usableIndicator ?: boolean = false\n}\nexport interface IExternalCode {\n    code: string,\n    name: string\n}","/*\n * Public API Surface of kif-lib-input\n */\n\nexport * from './policy-summary.component';\nexport * from './policy-summary.module';\nexport * from  './interface/index';\nexport * from  './enum';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}