UNPKG

iptdevs-design-system

Version:

Library common elements into IPT Plattform.

436 lines 94.8 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { Validators } from '@angular/forms'; import Swal from 'sweetalert2'; // import { map } from 'rxjs'; import { CodFormSteps } from '../../logic/cod-form-steps'; import { CodFormControls } from '../../logic/cod-form-controls'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; import * as i2 from "../../logic/calculate-quotes.service"; import * as i3 from "../../logic/cod-form-controls"; import * as i4 from "../../../core/services/commercial-service/comercial.service"; import * as i5 from "../../../core/utils/base-service/base.service"; import * as i6 from "@angular/common"; import * as i7 from "primeng/api"; import * as i8 from "../../../components/atoms/input/input.component"; import * as i9 from "../../../components/atoms/loader/loader.component"; import * as i10 from "../../../components/atoms/select/select.component"; import * as i11 from "primeng/table"; import * as i12 from "primeng/button"; // interface CourseTypes { // code: number; // name: string; // number_class: number; // academic_plan: number; // updated_at: string; // created_at: string; // } export class CodFormStepFourComponent extends CodFormSteps { constructor(fb, calculateQuotesService, codFormControls, commercialService, // private communicatorService: CommunicatorService, // private parameterService: ParameterService, baseService) { super(); this.fb = fb; this.calculateQuotesService = calculateQuotesService; this.codFormControls = codFormControls; this.commercialService = commercialService; this.baseService = baseService; this.changeStepEvent = new EventEmitter(); this.financingData = new EventEmitter(); this.isCalculateQuotesButtonClicked = false; this.errorMessage = 'Faltan campos por llenar.'; this.paymentMethods = [ { code: '1', name: 'Financiado' }, { code: '2', name: 'Contado' }, ]; this.dataFinancing = []; this.isFinancing = false; this.isSemestral = false; this.codPrices = []; this.codPricesFilter = []; this.dataPrices = []; this.feeResponse = false; this.thereArePlans = false; this.isDisabledSel = false; // Controls del formulario this.controls = new CodFormControls().controls[3]; } ngOnChanges(changes) { this.initForm(); this.startLocalStorageWork(); this.validateErrors(); // this.getCodPricesByAgreement(); // this.getValuesOfStepOneComponent(); if (changes['initialData']) { if (this.initialData != null) { if (this.isEditCod && !this.initialData.edit_course_payment) { this.isDisabledSel = true; } else { this.isDisabledSel = false; } if (this.initialData.cod_renovation == true && this.isEditCod == false) { this.setDataFromPreviusCodPrices(); this.isDisabledSel = true; } else { this.resetForm(); } // if (this.initialData.cod_price != null) { // // this.setDataFromPreviusCodPrices(); // this.resetForm(); // // this.showTable(); // } } } if (this.isDisabledSel) { this.codFormStepFour.controls['payment_date'].disable(); } else { this.codFormStepFour.controls['payment_date'].enable(); } } resetForm() { // this.resetLocalStorage(this.controls); this.codFormStepFour.reset(); } // ngOnInit(): void { // // this.cleanComponent(); // this.initForm(); // this.startLocalStorageWork(); // this.validateErrors(); // // this.getCodPricesByAgreement(); // this.getValuesOfStepOneComponent(); // } // getValuesOfStepOneComponent() { // // Tipo de curso seleccionado // this.communicatorService.getSelectedCourseType().subscribe(value => { // this.parameterService.getCoursesTypes().pipe( // map( (response: any) => { // const courseTypes: CourseTypes[] = response.data; // return courseTypes.filter( ({ name }) => name.includes('Semestral') ) // }) // ) // .subscribe( (courseTypes: CourseTypes[]) => { // for (let i = 0; i < courseTypes.length; i++) { // if (courseTypes[i].code.toString() === value) { // this.isSemestral = true; // break; // } else { // this.isSemestral = false; // } // } // }) // }); // Convenio seleccionado // this.communicatorService.getSelectedAgreement().subscribe(value => { // this.getCodPricesByAgreement(value); // }); // } getCodPricesByAgreement(agreement) { let agreementSelected; if (agreement) { agreementSelected = agreement; } else { agreementSelected = this.localStorageCOD.getCodFormData(1, 'agreement_by_category'); } if (this.codFormStepFour.controls['payment_method'].value === '1') { let request = { agreement: Number(agreementSelected), payment_method: 'cuota' }; this.commercialService.getCodPricesByAgreementTypePayment(request).subscribe((response) => { this.codPrices = response.data; this.codFormStepFour.controls['quota_times'].setValue(this.codPrices[0].code); this.codFormStepFour.controls['program_price'].setValue(this.codPrices[0].normal_price); }); } else { if (this.codFormStepFour.controls['payment_method'].value === '2') { let request = { agreement: Number(agreementSelected), payment_method: 'conta' }; this.commercialService.getCodPricesByAgreementTypePayment(request).subscribe((response) => { this.codPrices = response.data; this.codFormStepFour.controls['quota_times'].setValue(this.codPrices[0].code); this.codFormStepFour.controls['program_price'].setValue(this.codPrices[0].normal_price); this.codFormStepFour.controls['total_price'].setValue(this.codPrices[0].enrollment); }); } } } validateErrors() { this.codFormStepFour.valueChanges.subscribe(changes => { if (this.codFormStepFour.controls['quota_times'].hasError('min')) { this.errorMessage = 'La cantidad de cuotas mínimas debe ser 1'; } else if (this.codFormStepFour.controls['quota_times'].hasError('max')) { this.errorMessage = 'La cantidad de cuotas no debe ser superior a 12'; } else { this.errorMessage = 'Faltan campos por llenar'; } }); } searchPriceByTypePayment(agreementSelected, type, change) { let request = { agreement: Number(agreementSelected), payment_method: type }; this.commercialService.getCodPricesByAgreementTypePayment(request).subscribe((response) => { this.codPrices = response.data; }); } initForm() { this.codFormStepFour = this.fb.group({ program_price: [{ value: '', disabled: true }, [Validators.required]], payment_date: ['', [Validators.required]], payment_method: ['', [Validators.required]], quota_times: [{ value: '', disabled: true }, [Validators.required]], total_price: [{ value: '', disabled: true }, [Validators.required]], paid_level: ['', [Validators.required]], quota_price: ['', [Validators.required]], fee_number: ['', [Validators.required]], }); const currentDate = new Date().toISOString().split('T')[0]; this.codFormStepFour.controls['payment_date'].setValue(currentDate); this.listenPaymentMethodField(); } listenPaymentMethodField() { const control = this.codFormStepFour.get('payment_method'); control?.valueChanges.subscribe((change) => { // Financiado if (change === '1') { // Poner validaciones this.codFormStepFour.controls['program_price'].setValidators([Validators.required]); this.codFormStepFour.controls['payment_date'].setValidators([Validators.required]); this.codFormStepFour.controls['quota_times'].setValidators([Validators.required]); this.codFormStepFour.controls['total_price'].setValidators([Validators.required]); this.updateValueAndValidity(); this.updateGlobalControls(change); } // de contado if (change === '2') { this.codFormStepFour.controls['program_price'].setValidators([Validators.required]); this.codFormStepFour.controls['payment_date'].setValidators([Validators.required]); this.codFormStepFour.controls['quota_times'].clearValidators(); this.codFormStepFour.controls['total_price'].setValidators([Validators.required]); this.updateValueAndValidity(); this.updateGlobalControls(change); } }); } updateGlobalControls(change) { let controls = this.controls.filter(control => control.name !== 'payment_method'); controls.forEach(control => { if (change === '1') this.codFormControls.changeValue(4, control.name, true); if (change === '2') { if (control.name === 'quota_times') this.codFormControls.changeValue(4, control.name, false); } }); } updateValueAndValidity() { this.codFormStepFour.controls['program_price'].updateValueAndValidity(); this.codFormStepFour.controls['payment_date'].updateValueAndValidity(); this.codFormStepFour.controls['quota_times'].updateValueAndValidity(); this.codFormStepFour.controls['total_price'].updateValueAndValidity(); } startLocalStorageWork() { this.controls.forEach(control => { let localStorageValue = this.readAndWriteLS(4, control.name); this.codFormStepFour.controls[control.name].setValue(localStorageValue.value); this.listenFormChanges(4, control.name, this.codFormStepFour.controls[control.name].valueChanges); }); } showTable() { this.isCalculateQuotesButtonClicked = true; const total_price = this.codFormStepFour.controls['total_price'].value; if ((total_price === 'null') || this.codFormStepFour.invalid) { Swal.fire({ title: 'Error table', text: 'Debes ingresar el monto total de la matrícula y la cuota inicial', icon: 'error' }); return; } // Calcular cuotas this.dataFinancing = []; // const quotaValues = this.codPrices.filter(codPrice => codPrice.code === Number(this.codFormStepFour.controls['quota_times'].value))[0].quota_price; // let params: CalculateQuotesParams = { // date: new Date(this.codFormStepFour.controls['payment_date'].value), // quotaValues, // quotaTimes: this.codPrices.filter(codPrice => codPrice.code === Number(this.codFormStepFour.controls['quota_times'].value))[0].fee_number, // totalPrice: this.codFormStepFour.controls['total_price'].value, // } let params = { date: new Date(this.codFormStepFour.controls['payment_date'].value), quotaValues: Number(this.codFormStepFour.controls['quota_price'].value), quotaTimes: Number(this.codFormStepFour.controls['fee_number'].value), totalPrice: this.codFormStepFour.controls['total_price'].value, courseType: Number(this.localStorageCOD.getCodFormData(1, 'course_type')), englishLevel: Number(this.localStorageCOD.getCodFormData(1, 'english_level')), }; this.dataFinancing = this.calculateQuotesService.calculateQuotes(params); this.isFinancing = true; this.financingData.emit(this.dataFinancing); } calculateNewQuotes() { this.isCalculateQuotesButtonClicked = false; this.isFinancing = false; this.financingData.emit(null); } sendForm() { this.codFormStepFour.markAllAsTouched(); if (this.codFormStepFour.invalid) return; // Movernos al paso 5 this.changeStepEvent.emit(4); } isFinanced() { return this.codFormStepFour.controls['payment_method'].value == 1; } // Eventos del select selectPaymentMethod(paymentMethod) { this.feeResponse = true; this.thereArePlans = false; if (paymentMethod !== '') { const request = { token: this.baseService.getUserToken(), course_type: Number(this.localStorageCOD.getCodFormData(1, 'course_type')), agreement: Number(this.localStorageCOD.getCodFormData(1, 'agreement_by_category')), course_modality: Number(this.localStorageCOD.getCodFormData(1, 'course_modality')), payment_method: parseInt(paymentMethod) }; this.commercialService.ObtainCodPrices(request).subscribe((response) => { if (response.data != null) { const course_type = Number(this.localStorageCOD.getCodFormData(1, 'course_type')); const english_level = Number(this.localStorageCOD.getCodFormData(1, 'english_level')); // Cursos técnicos que requieren filtrado especial const technicalCourses = [3, 4, 5, 6, 7, 8, 21, 30, 33]; this.dataPrices = response.data; if (technicalCourses.includes(course_type)) { // Calculamos los paid_levels permitidos basado en el english_level const techEnglishLevels = [8, 9, 10, 11]; const levelIndex = techEnglishLevels.indexOf(english_level); const levelsToShow = techEnglishLevels.length - levelIndex; this.dataPrices = this.dataPrices.filter((item) => { return item.paid_level <= levelsToShow; }); } this.feeResponse = false; this.thereArePlans = true; } else { this.thereArePlans = false; this.feeResponse = false; Swal.fire({ position: 'center', icon: 'warning', title: '<p style="font-family: Poppins"">Oops.. no hay planes de pagos, \n en el curso elegido.</p>', showConfirmButton: false, timer: 3000, }); this.clearInputPayment(); } }); this.codFormStepFour.controls['payment_method'].setValue(paymentMethod); // this.getCodPricesByAgreement(); } else { this.codFormStepFour.controls['payment_method'].setValue(null); } } selectQuotas(quotas) { if (quotas !== 'Número de cuotas') { const codPrice = this.codPrices.filter(codPrice => codPrice.code === Number(quotas)); this.codFormStepFour.controls['quota_times'].setValue(codPrice[0].code); this.codFormStepFour.controls['total_price'].setValue(codPrice[0].enrollment); this.codFormStepFour.controls['program_price'].setValue(codPrice[0].financed_price); } else { this.codFormStepFour.controls['quota_times'].setValue(null); this.codFormStepFour.controls['total_price'].setValue(null); this.codFormStepFour.controls['program_price'].setValue(null); } } cleanComponent() { this.resetLocalStorage(this.controls); } selectLevels(dataPayment) { if (this.codFormStepFour.get('payment_method')?.value == 1) { this.codFormStepFour.controls['quota_times'].setValue(dataPayment.code); this.codFormStepFour.controls['total_price'].setValue(dataPayment.enrollment); this.codFormStepFour.controls['program_price'].setValue(dataPayment.financed_price); this.codFormStepFour.controls['paid_level'].setValue(dataPayment.paid_level - 1); this.codFormStepFour.controls['fee_number'].setValue(dataPayment.fee_number); this.codFormStepFour.controls['quota_price'].setValue(dataPayment.quota_price); this.updateValueAndValidity(); } else if (this.codFormStepFour.get('payment_method')?.value == 2) { this.codFormStepFour.controls['quota_times'].setValue(dataPayment.code); this.codFormStepFour.controls['total_price'].setValue(dataPayment.enrollment); this.codFormStepFour.controls['program_price'].setValue(dataPayment.normal_price); this.codFormStepFour.controls['paid_level'].setValue(dataPayment.paid_level - 1); this.codFormStepFour.controls['fee_number'].setValue(dataPayment.fee_number); this.codFormStepFour.controls['quota_price'].setValue(dataPayment.quota_price); this.updateValueAndValidity(); } } clearInputPayment() { this.codFormStepFour.controls['program_price'].setValue(null); this.codFormStepFour.controls['quota_times'].setValue(null); this.codFormStepFour.controls['total_price'].setValue(null); } setDataFromPreviusCodPrices() { this.codFormStepFour.controls['payment_method'].setValue(this.initialData.cod_payment ? ((this.initialData.cod_payment.length == 1) ? 2 : 1) : 2); if (this.codFormStepFour.get('payment_method')?.value == 1) { this.codFormStepFour.controls['quota_times'].setValue(this.initialData.cod_payment ? this.initialData.cod_price.code : 0); this.codFormStepFour.controls['total_price'].setValue(this.initialData.cod_payment ? this.initialData.cod_price.enrollment : 0); this.codFormStepFour.controls['program_price'].setValue(this.initialData.cod_payment ? this.initialData.cod_price.financed_price : 0); this.codFormStepFour.controls['paid_level'].setValue(this.initialData.cod_price.paid_level); this.codFormStepFour.controls['fee_number'].setValue(this.initialData.cod_payment ? this.initialData.cod_payment?.length : 0); this.codFormStepFour.controls['quota_price'].setValue(this.initialData.cod_payment ? this.initialData.cod_price.quota_price : 0); this.codFormStepFour.controls['payment_date'].setValue(this.initialData.cod_payment ? this.initialData.cod_payment[0]?.timely_date : new Date()); this.updateValueAndValidity(); } else if (this.codFormStepFour.get('payment_method')?.value == 2) { this.codFormStepFour.controls['quota_times'].setValue(this.initialData.cod_payment ? this.initialData.cod_price.code : 0); this.codFormStepFour.controls['total_price'].setValue(0); this.codFormStepFour.controls['program_price'].setValue(this.initialData.cod_payment ? this.initialData.cod_price.normal_price : 0); this.codFormStepFour.controls['paid_level'].setValue(this.initialData.cod_price.paid_level); this.codFormStepFour.controls['fee_number'].setValue(this.initialData.cod_payment ? 1 : 0); this.codFormStepFour.controls['quota_price'].setValue(this.initialData.cod_payment ? this.initialData.cod_price.normal_price : 0); this.codFormStepFour.controls['payment_date'].setValue(this.initialData.cod_payment ? this.initialData.cod_payment[0]?.timely_date : new Date()); this.updateValueAndValidity(); } // this.codFormStepFour.controls['total_price'].setValue(this.initialData.cod_price.enrollment); // this.codFormStepFour.controls['program_price'].setValue(this.initialData.cod_payment.lenght == 1 ? this.initialData.cod_price.normal_price : this.initialData.cod_price.financed_price); // this.codFormStepFour.controls['paid_level'].setValue(this.initialData.cod_price.paid_level); // this.codFormStepFour.controls['fee_number'].setValue(this.initialData.cod_payment.lenght == 1 ? 1 : this.initialData.cod_price.fee_number); // this.codFormStepFour.controls['quota_price'].setValue(this.initialData.cod_price.quota_price); // this.codFormStepFour.controls['payment_date'].setValue(this.initialData.cod_payment[0].timely_date); // this.codFormStepFour.controls['quota_times'].setValue(this.initialData.cod_payment.lenght == 1 ? 1 : this.initialData.cod_price.fee_number); } } CodFormStepFourComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodFormStepFourComponent, deps: [{ token: i1.FormBuilder }, { token: i2.CalculateQuotesService }, { token: i3.CodFormControls }, { token: i4.CommercialService }, { token: i5.BaseService }], target: i0.ɵɵFactoryTarget.Component }); CodFormStepFourComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodFormStepFourComponent, selector: "app-cod-form-step-four", inputs: { isEditCod: "isEditCod", initialData: "initialData", isRenovation: "isRenovation" }, outputs: { changeStepEvent: "changeStepEvent", financingData: "financingData" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"isSemestral\" class=\"m-1 p-2 border-round-lg bg-blue-500 text-white\">\n <strong>Nota: </strong>\n El tipo de curso seleccionado fue semestral, por lo tanto el estudiante debe pagar matr\u00EDcula y primera cuota (M&M)\n</div>\n\n<form autocomplete=\"off\" [formGroup]=\"codFormStepFour\" class=\"grid mt-2\">\n\n <div class=\"col-12\">\n <ipt-select\n [initialValue]=\"codFormStepFour.controls['payment_method'].value\"\n [control]=\"codFormStepFour.controls['payment_method']\"\n (eventSelect)=\"selectPaymentMethod($event)\"\n [data]=\"paymentMethods\"\n [defaultText]=\"'M\u00E9todo de pago'\"\n [disabledSel]=\"isDisabledSel\"\n ></ipt-select>\n <ipt-loader *ngIf=\"feeResponse\"></ipt-loader>\n\n <div class=\"col-12\" *ngIf=\"thereArePlans\">\n <p-table\n [value]=\"dataPrices\"\n [tableStyle]=\"{'min-width': '100%'}\"\n [rowHover]=\"true\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"flex align-items-center\">\n Seleccion de niveles a cancelar.\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Cancelar</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Cuotas</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Admin</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td class=\"text-center\">{{ data.paid_level }} Nivel(es)</td>\n <td class=\"text-center\">{{ data.fee_number }}</td>\n <td class=\"pt-2 pb-2 text-center\">\n <button\n pButton\n pRipple\n icon=\"pi pi-money-bill\"\n class=\"p-button-sm p-button-rounded\"\n (click)=\"selectLevels(data)\"\n\n ></button>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n\n <!-- [initialValue]=\"codFormStepFour.controls['quota_times'].value\" -->\n <!-- <ipt-select *ngIf=\"isFinanced();\"\n [initialValue]=\"'1'\"\n [control]=\"codFormStepFour.controls['quota_times']\"\n (eventSelect)=\"selectQuotas($event)\"\n [defaultText]=\"'N\u00FAmero de cuotas'\"\n [data]=\"codPrices\"\n ></ipt-select> -->\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Monto total de la matr\u00EDcula'\"\n [control]=\"codFormStepFour.controls['total_price']\"\n [withPipe]=\"true\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n [withPipe]=\"true\"\n [inputType]=\"'text'\"\n [control]=\"codFormStepFour.controls['program_price']\"\n [placeHolder]=\"'Valor total del programa'\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codFormStepFour.controls['payment_date']\"\n [placeHolder]=\"'Fecha de pago'\"\n ></ipt-input>\n </div>\n\n <!-- Tabla de financiaci\u00F3n -->\n <div *ngIf=\"isFinancing && isRenovation === false\" class=\"container_tablet\">\n <div class=\"col-12\" *ngIf=\"isFinancing\">\n <p-table\n [value]=\"dataFinancing\"\n [tableStyle]=\"{'min-width': '100%'}\"\n [rowHover]=\"true\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"flex align-items-center\">\n C\u00E1lculo de cuotas\n <button pButton class=\"p-button-sm ml-auto\" label=\"Nuevo c\u00E1lculo\" (click)=\"calculateNewQuotes()\" [disabled]=\"isDisabledSel\" lab icon=\"pi pi-replay\"></button>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">#</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Valor</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Fecha</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td class=\"p-0 text-center text-sm\">{{ data[0] }}</td>\n <td class=\"p-0 text-center text-sm\">{{ data[1] }}</td>\n <td class=\"p-0 text-center text-sm\">{{ data[2] }}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n <!-- ---------------------- -->\n\n</form>\n\n<div class=\"flex mt-3 align-items-center gap-3\">\n <span *ngIf=\"codFormStepFour.invalid && codFormStepFour.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span>\n <div class=\"flex ml-auto gap-2\">\n <button *ngIf=\"codFormStepFour.controls['payment_method'].value === '1'\" [disabled]=\"isFinancing || codFormStepFour.controls['payment_method'].value !== '1'\"type=\"submit\" class=\"ml-auto p-button-sm p-button-secondary\" (click)=\"showTable()\" pButton label=\"Calcular cuotas\" icon=\"pi pi-sliders-h\"></button>\n <button [disabled]=\"!isFinancing && codFormStepFour.controls['payment_method'].value === '1'\" type=\"submit\" [class]=\"isEditCod ? 'ml-auto yellow-300 p-button-sm' : 'ml-auto p-button-sm'\" (click)=\"sendForm()\" pButton label=\"Siguiente\" icon=\"pi pi-arrow-right\"></button>\n </div>\n</div>\n", styles: [".yellow-300{background-color:var(--yellow-500)!important;color:#fff}.container_tablet{width:-webkit-fill-available}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i8.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i9.LoaderComponent, selector: "ipt-loader", inputs: ["message", "isDialog"] }, { kind: "component", type: i10.SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "label", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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: "component", type: i11.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i12.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodFormStepFourComponent, decorators: [{ type: Component, args: [{ selector: 'app-cod-form-step-four', template: "<div *ngIf=\"isSemestral\" class=\"m-1 p-2 border-round-lg bg-blue-500 text-white\">\n <strong>Nota: </strong>\n El tipo de curso seleccionado fue semestral, por lo tanto el estudiante debe pagar matr\u00EDcula y primera cuota (M&M)\n</div>\n\n<form autocomplete=\"off\" [formGroup]=\"codFormStepFour\" class=\"grid mt-2\">\n\n <div class=\"col-12\">\n <ipt-select\n [initialValue]=\"codFormStepFour.controls['payment_method'].value\"\n [control]=\"codFormStepFour.controls['payment_method']\"\n (eventSelect)=\"selectPaymentMethod($event)\"\n [data]=\"paymentMethods\"\n [defaultText]=\"'M\u00E9todo de pago'\"\n [disabledSel]=\"isDisabledSel\"\n ></ipt-select>\n <ipt-loader *ngIf=\"feeResponse\"></ipt-loader>\n\n <div class=\"col-12\" *ngIf=\"thereArePlans\">\n <p-table\n [value]=\"dataPrices\"\n [tableStyle]=\"{'min-width': '100%'}\"\n [rowHover]=\"true\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"flex align-items-center\">\n Seleccion de niveles a cancelar.\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Cancelar</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Cuotas</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Admin</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td class=\"text-center\">{{ data.paid_level }} Nivel(es)</td>\n <td class=\"text-center\">{{ data.fee_number }}</td>\n <td class=\"pt-2 pb-2 text-center\">\n <button\n pButton\n pRipple\n icon=\"pi pi-money-bill\"\n class=\"p-button-sm p-button-rounded\"\n (click)=\"selectLevels(data)\"\n\n ></button>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n\n <!-- [initialValue]=\"codFormStepFour.controls['quota_times'].value\" -->\n <!-- <ipt-select *ngIf=\"isFinanced();\"\n [initialValue]=\"'1'\"\n [control]=\"codFormStepFour.controls['quota_times']\"\n (eventSelect)=\"selectQuotas($event)\"\n [defaultText]=\"'N\u00FAmero de cuotas'\"\n [data]=\"codPrices\"\n ></ipt-select> -->\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Monto total de la matr\u00EDcula'\"\n [control]=\"codFormStepFour.controls['total_price']\"\n [withPipe]=\"true\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n [withPipe]=\"true\"\n [inputType]=\"'text'\"\n [control]=\"codFormStepFour.controls['program_price']\"\n [placeHolder]=\"'Valor total del programa'\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codFormStepFour.controls['payment_date']\"\n [placeHolder]=\"'Fecha de pago'\"\n ></ipt-input>\n </div>\n\n <!-- Tabla de financiaci\u00F3n -->\n <div *ngIf=\"isFinancing && isRenovation === false\" class=\"container_tablet\">\n <div class=\"col-12\" *ngIf=\"isFinancing\">\n <p-table\n [value]=\"dataFinancing\"\n [tableStyle]=\"{'min-width': '100%'}\"\n [rowHover]=\"true\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"flex align-items-center\">\n C\u00E1lculo de cuotas\n <button pButton class=\"p-button-sm ml-auto\" label=\"Nuevo c\u00E1lculo\" (click)=\"calculateNewQuotes()\" [disabled]=\"isDisabledSel\" lab icon=\"pi pi-replay\"></button>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">#</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Valor</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Fecha</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td class=\"p-0 text-center text-sm\">{{ data[0] }}</td>\n <td class=\"p-0 text-center text-sm\">{{ data[1] }}</td>\n <td class=\"p-0 text-center text-sm\">{{ data[2] }}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n <!-- ---------------------- -->\n\n</form>\n\n<div class=\"flex mt-3 align-items-center gap-3\">\n <span *ngIf=\"codFormStepFour.invalid && codFormStepFour.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span>\n <div class=\"flex ml-auto gap-2\">\n <button *ngIf=\"codFormStepFour.controls['payment_method'].value === '1'\" [disabled]=\"isFinancing || codFormStepFour.controls['payment_method'].value !== '1'\"type=\"submit\" class=\"ml-auto p-button-sm p-button-secondary\" (click)=\"showTable()\" pButton label=\"Calcular cuotas\" icon=\"pi pi-sliders-h\"></button>\n <button [disabled]=\"!isFinancing && codFormStepFour.controls['payment_method'].value === '1'\" type=\"submit\" [class]=\"isEditCod ? 'ml-auto yellow-300 p-button-sm' : 'ml-auto p-button-sm'\" (click)=\"sendForm()\" pButton label=\"Siguiente\" icon=\"pi pi-arrow-right\"></button>\n </div>\n</div>\n", styles: [".yellow-300{background-color:var(--yellow-500)!important;color:#fff}.container_tablet{width:-webkit-fill-available}\n"] }] }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.CalculateQuotesService }, { type: i3.CodFormControls }, { type: i4.CommercialService }, { type: i5.BaseService }]; }, propDecorators: { isEditCod: [{ type: Input }], initialData: [{ type: Input }], isRenovation: [{ type: Input }], changeStepEvent: [{ type: Output }], financingData: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWZvcm0tc3RlcC1mb3VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qvc3RlcHMvY29kLWZvcm0tc3RlcC1mb3VyL2NvZC1mb3JtLXN0ZXAtZm91ci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtZm91ci9jb2QtZm9ybS1zdGVwLWZvdXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsOEJBQThCO0FBQzlCLE9BQU8sRUFBRSxZQUFZLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQVFoRSwwQkFBMEI7QUFDMUIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQiwwQkFBMEI7QUFDMUIsMkJBQTJCO0FBQzNCLHdCQUF3QjtBQUN4Qix3QkFBd0I7QUFDeEIsSUFBSTtBQU1KLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxZQUFZO0lBMkJ4RCxZQUNVLEVBQWUsRUFDZixzQkFBOEMsRUFDOUMsZUFBZ0MsRUFDaEMsaUJBQW9DO0lBQzVDLG9EQUFvRDtJQUNwRCw4Q0FBOEM7SUFDdEMsV0FBd0I7UUFFaEMsS0FBSyxFQUFFLENBQUM7UUFSQSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxvQkFBZSxHQUFmLGVB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