@acontplus/ng-customer 2.0.2 → 2.1.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 +14 -19
- package/fesm2022/acontplus-ng-customer.mjs +591 -342
- package/fesm2022/acontplus-ng-customer.mjs.map +1 -1
- package/package.json +7 -10
- package/types/acontplus-ng-customer.d.ts +178 -87
|
@@ -1 +1 @@
|
|
|
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 inject,\n Input,\n input,\n OnInit,\n output,\n signal,\n ViewEncapsulation,\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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"}
|
|
1
|
+
{"version":3,"file":"acontplus-ng-customer.mjs","sources":["../../../../packages/ng-customer/src/lib/data/customer-token.ts","../../../../packages/ng-customer/src/lib/data/models/company-customer.model.ts","../../../../packages/ng-customer/src/lib/data/mappers/company-customer-default-mapper.ts","../../../../packages/ng-customer/src/lib/data/https/company-customer-http.ts","../../../../packages/ng-customer/src/lib/utils/customer.validators.ts","../../../../packages/ng-customer/src/lib/config/company-customer-form.ts","../../../../packages/ng-customer/src/lib/ui/company-customer/company-customer-form/company-customer-form.ts","../../../../packages/ng-customer/src/lib/ui/company-customer/company-customer-form/company-customer-form.html","../../../../packages/ng-customer/src/lib/ui/company-customer/company-customer-add-edit-dialog/company-customer-add-edit-dialog.ts","../../../../packages/ng-customer/src/lib/ui/company-customer/company-customer-add-edit-dialog/company-customer-add-edit-dialog.html","../../../../packages/ng-customer/src/lib/ui/directives/company-customer-add-edit.ts","../../../../packages/ng-customer/src/lib/ui/company-customer/company-customer-list/company-customer-list.ts","../../../../packages/ng-customer/src/lib/ui/company-customer/company-customer-list/company-customer-list.html","../../../../packages/ng-customer/src/acontplus-ng-customer.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport {\n ICompanyCustomerHttp,\n ICustomerSriService,\n ICompanyCustomerMapper,\n CompanyCustomerFormConfig,\n} from './index';\n\nexport const CUSTOMER_SRI_HTTP_TOKEN = new InjectionToken<ICustomerSriService>(\n 'CUSTOMER_SRI_HTTP_TOKEN',\n);\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_HTTP_TOKEN = new InjectionToken<ICompanyCustomerHttp>(\n 'COMPANY_CUSTOMER_HTTP_TOKEN',\n);\n","export interface CompanyCustomerListDto {\n index: number;\n clientId: number;\n identificationTypeId: number;\n idCard: string;\n tradeName: string;\n legalName: string;\n address: string;\n phone?: string;\n email?: string;\n finalConsumer: boolean;\n sriValidation: boolean;\n identificationType: number;\n identificationTypeCode: string;\n status: string;\n totalRecord: number;\n}\n\nexport class CompanyCustomerFormDataResult {\n identificationTypes: any[] = [];\n tipoContribuyentes: [] = [];\n tiempoCreditos: [] = [];\n cities: any[] = [];\n tiposCliente: [] = [];\n empresas: [] = [];\n cargos: [] = [];\n formasPagoSri: [] = [];\n housingTypes: any[] = [];\n maritalStatuses: any[] = [];\n employees: [] = [];\n}\n\nexport interface CustomerInfoCredit {\n maritalStatusId?: number | null;\n conyugeNombre?: string | null;\n conyugeTel?: string | null;\n refFamNombre?: string | null;\n refFamTel?: string | null;\n housingTypeId?: number | null;\n dirVivienda?: string | null;\n refDomicilio?: string | null;\n sector?: string | null;\n barrio?: string | null;\n calle?: string | null;\n}\n\nexport interface Customer {\n // IDs\n id?: string;\n idCliente?: number;\n idEmpresa?: number;\n idCargo?: number;\n idFormaPagoSri?: number;\n idTipoClienteProveedor?: number;\n idTipoIdentificacion?: number;\n idSubContribuyente?: number;\n idTiempoCredito?: number;\n idCiudad?: number;\n idEmpleado?: number;\n\n // Datos básicos\n numeroIdentificacion: string;\n nombreFiscal: string;\n nombreComercial?: string;\n direccion?: string;\n correo?: string;\n telefono?: string;\n placa?: string;\n nota?: string;\n\n // Fechas y estados\n birthDate?: Date | null;\n estado?: boolean;\n validationSri?: boolean;\n configValorBruto?: boolean;\n\n // Información de crédito (anidada)\n dataInfoCred?: CustomerInfoCredit;\n\n // DEPRECATED: Campos antiguos para compatibilidad\n /** @deprecated Use numeroIdentificacion */\n idCard?: string;\n /** @deprecated Use nombreFiscal */\n name?: string;\n /** @deprecated Use nombreComercial */\n lastName?: string;\n /** @deprecated Use correo */\n email?: string;\n /** @deprecated Use telefono */\n phone?: string;\n /** @deprecated Use direccion */\n address?: string;\n /** @deprecated Use idCiudad */\n city?: string;\n dateOfBirth?: Date;\n notes?: string;\n}\n","import { CompanyCustomerFormDataResult } from './../models';\nimport { ICompanyCustomerMapper } from './../interfaces';\n\nexport class CompanyCustomerDefaultMapper implements ICompanyCustomerMapper {\n toModelFormData(response: any): any {\n const result = new CompanyCustomerFormDataResult();\n if (response.code === '1') {\n const mainData = JSON.parse(response.payload as string);\n const cities: any[] = Array.isArray(mainData) ? mainData[3] : mainData.cities;\n const identificationTypes: any[] = Array.isArray(mainData)\n ? mainData[0]\n : mainData.identificationTypes;\n console.log(mainData);\n result.identificationTypes = identificationTypes.map(item => ({\n id: item.idTipoIdentificacion,\n code: item.codigo,\n value: item.descripcion,\n sriCode: item.codigoSri,\n }));\n result.tipoContribuyentes = mainData[1];\n result.tiempoCreditos = mainData[2] || [];\n\n result.cities = cities.reduce((acc: any, ciudade: any) => {\n const dataExists = acc.find((c: any) => c.idProvincia === ciudade.idProvincia);\n if (!dataExists) {\n acc.push({\n id: ciudade.idProvincia,\n value: ciudade.provincia,\n cities: [\n {\n id: ciudade.idCiudad,\n value: ciudade.ciudad,\n },\n ],\n });\n } else {\n dataExists.cities.push({\n id: ciudade.idCiudad,\n value: ciudade.ciudad,\n });\n }\n return acc;\n }, [] as any);\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 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, index: number): any => ({\n index: index + 1,\n clientId: data.idCliente,\n identificationTypeId: data.idTipoIdentificacion,\n idCard: 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 totalRecords: data.totalRecords,\n });\n const list = tempList.map((item: any, index: number) => mapClient(item, index));\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 { ICompanyCustomerHttp } from '../interfaces/company-customer';\nimport { CompanyCustomerDefaultMapper } from '../mappers/company-customer-default-mapper';\nimport { COMPANY_CUSTOMER_MAPPER } from '../customer-token';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CompanyCustomerHttp implements ICompanyCustomerHttp {\n private apiUrl = '/FactElect/CompanyCustomer/';\n private http = inject(HttpClient);\n private mapper =\n inject(COMPANY_CUSTOMER_MAPPER, { optional: true }) ?? new CompanyCustomerDefaultMapper();\n\n getFormData() {\n const json = JSON.stringify({\n tipo: 2,\n });\n return this.http\n .get<any>(`${this.apiUrl}?json=${json}`)\n .pipe(map(response => this.mapper.toModelFormData(response)));\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 ...params,\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 { CompanyCustomerFormConfig } from '../data/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 {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n OnInit,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n COMPANY_CUSTOMER_FORM_CONFIG,\n COMPANY_CUSTOMER_HTTP_TOKEN,\n} from '../../../data/customer-token';\nimport { CompanyCustomerHttp } from '../../../data/https/company-customer-http';\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 { InputChip, ToUpperCase } from '@acontplus/ng-components';\nimport { MatSelectModule } from '@angular/material/select';\nimport { CustomerValidators } from '../../../utils/customer.validators';\nimport {\n CompanyCustomerFormConfig,\n CompanyCustomerFormDataResult,\n CreditFieldsConfig,\n Customer,\n FieldConfig,\n} from '../../../data/models';\nimport { MAIN_APP_COMPANY_CUSTOMER_CONFIG } from '../../../config';\nimport { MatButtonModule } from '@angular/material/button';\nimport { forkJoin, from } from 'rxjs';\nimport { SRI_DOCUMENT_TYPE } from '@acontplus/core';\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 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 CompanyCustomerForm implements OnInit {\n formId = input<string | undefined>();\n customer = input<any>({});\n mode = input<'create' | 'edit'>('create');\n showButtons = input(true);\n submitted = output<any>();\n cancelled = output<void>();\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_HTTP_TOKEN, { optional: true }) ?? inject(CompanyCustomerHttp);\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 identificationTypes = signal<{ id: number; value: string; code: string; sriCode: string }[]>([]);\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 setStep(index: number) {\n this.step.set(index);\n }\n\n private loadFormData() {\n if (this.mode() === 'edit') {\n return forkJoin([\n from(this.customerService.getFormData()),\n // from(this.customerService.getById(this.params.id)),\n ]);\n }\n return from(this.customerService.getFormData());\n }\n\n ngOnInit(): void {\n this.buildForm();\n this.loadFormData().subscribe(response => {\n const mainDataForm: CompanyCustomerFormDataResult = Array.isArray(response)\n ? response[0].data\n : response;\n console.log(response);\n\n this.identificationTypes.set(mainDataForm.identificationTypes);\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\n if (this.mode() === 'create') {\n const dataIdentificacion = this.identificationTypes().find(\n ti => ti.sriCode === SRI_DOCUMENT_TYPE.RUC,\n );\n\n if (dataIdentificacion) {\n this.form.patchValue({\n idTipoIdentificacion: dataIdentificacion.id,\n });\n // this.setIdentificationTypeChange(dataIdentificacion.codigoSri);\n }\n\n if (this.tiemposCredito().length > 0) {\n this.form.patchValue({\n idTiempoCredito: this.tiemposCredito()[0].id,\n });\n }\n }\n });\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 identificationTypes(); track $index) {\n <mat-option [value]=\"item.id\">{{ item.value }}</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-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 </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 </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-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","import { Component, inject, signal } from '@angular/core';\nimport { CompanyCustomerForm } from './../company-customer-form';\nimport { MatDialogContent, MatDialogActions, MatDialogRef } from '@angular/material/dialog';\nimport { Button } from '@acontplus/ng-components';\n\n@Component({\n selector: 'acp-company-customer-add-edit-dialog',\n imports: [CompanyCustomerForm, MatDialogContent, MatDialogActions, Button],\n templateUrl: './company-customer-add-edit-dialog.html',\n})\nexport class CompanyCustomerAddEditDialog {\n formId = signal('companyCustomerFormId');\n private dgRef = inject(MatDialogRef<CompanyCustomerAddEditDialog>);\n onCustomerCreated(customer: any): void {\n console.log('Cliente creado:', customer);\n // Mostrar notificación de éxito\n }\n\n onCancel(): void {\n this.dgRef.close();\n }\n}\n","<mat-dialog-content>\n <div class=\"page-container\">\n <acp-company-customer-form\n [formId]=\"formId()\"\n #form\n mode=\"create\"\n (submitted)=\"onCustomerCreated($event)\"\n (cancelled)=\"onCancel()\"\n [showButtons]=\"false\"\n ></acp-company-customer-form>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <div class=\"hstack gap-2\">\n <acp-button\n type=\"submit\"\n icon=\"save\"\n [form]=\"formId()\"\n [text]=\"form.isLoading() ? 'Guardando...' : 'Guardar'\"\n [variant]=\"'success'\"\n [matStyle]=\"'filled'\"\n [disabled]=\"form.form.invalid || form.isLoading()\"\n />\n <acp-button\n type=\"button\"\n variant=\"dark\"\n text=\"Cerrar\"\n matStyle=\"filled\"\n (handleClick)=\"onCancel()\"\n />\n </div>\n</mat-dialog-actions>\n","import { Directive, HostListener, inject, input, output } from '@angular/core';\nimport { AdvancedDialogService } from '@acontplus/ng-components';\nimport { CompanyCustomerAddEditDialog } from '../company-customer';\n@Directive({\n selector: '[acpCompanyCustomerAddEdit]',\n})\nexport class CompanyCustomerAddEditDirective {\n private dgSvc = inject(AdvancedDialogService);\n\n companyCustomerSaved = output<any>();\n id = input(0);\n\n @HostListener('click', ['$event'])\n async onClick(event: MouseEvent) {\n event.stopPropagation();\n\n const isEdit = this.id() > 0;\n const ref = await this.dgSvc.openInWrapper(\n {\n component: CompanyCustomerAddEditDialog,\n title: isEdit ? 'Editar Cliente' : 'Nuevo Cliente',\n icon: isEdit ? 'edit' : 'add',\n showCloseButton: true,\n data: {\n id: this.id(),\n },\n },\n {\n size: 'xxl',\n },\n );\n\n ref.afterClosed().subscribe(result => {\n if (result && typeof result === 'object') {\n this.companyCustomerSaved.emit(result);\n }\n });\n }\n}\n","import { Component, inject, input, signal, OnInit } from '@angular/core';\nimport { DataGridColumn, DataGrid, Button } from '@acontplus/ng-components';\nimport { isValidField } from '@acontplus/utils';\nimport { CompanyCustomerAddEditDirective } from './../../directives';\nimport { COMPANY_CUSTOMER_HTTP_TOKEN, CompanyCustomerListDto } from './../../../data';\nimport { PageEvent } from '@angular/material/paginator';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n selector: 'acp-company-customer-list',\n templateUrl: './company-customer-list.html',\n imports: [\n DataGrid,\n MatFormFieldModule,\n MatInputModule,\n Button,\n FormsModule,\n MatIcon,\n MatMenuModule,\n CompanyCustomerAddEditDirective,\n ],\n})\nexport class CompanyCustomerList implements OnInit {\n http = inject(COMPANY_CUSTOMER_HTTP_TOKEN);\n\n canEdit = input(true);\n canAdd = input(true);\n canInactive = input(true);\n canGenerateReport = input(true);\n\n dataSearch = {\n textSearch: null as string | null,\n };\n dataSource = signal<CompanyCustomerListDto[]>([]);\n columnsDefs: DataGridColumn[] = [\n { field: 'index', header: '#' },\n { field: 'op', header: 'Op.' },\n { field: 'identificationType', header: 'Tipo' },\n { field: 'idCard', header: 'Nro. Identificación' },\n { field: 'tradeName', header: 'Razón Social' },\n { field: 'legalName', header: 'Nombre Comercial' },\n { field: 'address', header: 'Dirección' },\n { field: 'email', header: 'Correo' },\n { field: 'phone', header: 'Teléfono' },\n {\n field: 'sriValidation',\n header: 'Validación Sri',\n type: 'tag',\n tag: {\n true: { text: 'Si', color: 'text-danger' },\n false: { text: 'No', color: 'text-success' },\n },\n },\n {\n field: 'status',\n header: 'Estado',\n type: 'tag',\n tag: {\n true: { text: 'Activo', color: 'text-primary' },\n false: { text: 'Inactivo', color: 'text-success' },\n },\n },\n ];\n\n pageIndex = signal(0);\n pageSize = signal(10);\n pageCount = signal(0);\n\n refresh() {\n this.list();\n }\n\n private list() {\n const params = {\n pageIndex: this.pageIndex() + 1,\n pageSize: this.pageSize(),\n checkTextSearch: !!isValidField(this.dataSearch.textSearch),\n textSearch: isValidField(this.dataSearch.textSearch),\n };\n\n this.http.list(params).subscribe(response => {\n console.log(response);\n this.dataSource.set(response.data);\n this.pageCount.set(response.pagination.totalRecords);\n });\n }\n\n ngOnInit() {\n this.refresh();\n }\n\n handlePageEvent($event: PageEvent) {\n this.pageIndex.set($event.pageIndex);\n this.pageSize.set($event.pageSize);\n this.pageCount.set($event.length);\n this.refresh();\n }\n\n exportExcel() {\n /* empty */\n }\n\n exportPdf() {\n /* empty */\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n askToDelete(data: CompanyCustomerListDto) {\n /* empty */\n }\n}\n","<acp-data-grid\n [showToolbar]=\"true\"\n [toolbarTemplate]=\"headerToolbar\"\n [data]=\"dataSource()\"\n [columns]=\"columnsDefs\"\n [cellTemplate]=\"{\n op: templateOp,\n }\"\n [length]=\"pageCount()\"\n [pageIndex]=\"pageIndex()\"\n [pageSize]=\"pageSize()\"\n (page)=\"handlePageEvent($event)\"\n/>\n<ng-template #headerToolbar>\n <div class=\"d-flex flex-row gap-2 align-items-center\">\n <mat-form-field>\n <mat-label>Buscar</mat-label>\n <input matInput [(ngModel)]=\"dataSearch.textSearch\" />\n <ng-container matSuffix>\n <acp-button variant=\"secondary\" icon=\"refresh\" matStyle=\"icon\" (handleClick)=\"refresh()\" />\n </ng-container>\n </mat-form-field>\n\n <div class=\"ms-auto d-flex flex-row gap-2\">\n @if (canGenerateReport()) {\n <acp-button\n variant=\"info\"\n icon=\"download\"\n matStyle=\"filled\"\n text=\"Exportar Reporte\"\n [matMenuTriggerFor]=\"exportMenu\"\n />\n }\n <mat-menu #exportMenu=\"matMenu\">\n <button mat-menu-item (click)=\"exportExcel()\">\n <mat-icon>table_view</mat-icon>\n <span>Exportar a Excel</span>\n </button>\n <button mat-menu-item (click)=\"exportPdf()\">\n <mat-icon>picture_as_pdf</mat-icon>\n <span>Exportar a PDF</span>\n </button>\n </mat-menu>\n\n @if (canAdd()) {\n <acp-button\n acpCompanyCustomerAddEdit\n (companyCustomerSaved)=\"refresh()\"\n variant=\"success\"\n icon=\"add\"\n matStyle=\"filled\"\n text=\"Nuevo\"\n />\n }\n\n <acp-button variant=\"secondary\" icon=\"refresh\" matStyle=\"icon\" (handleClick)=\"refresh()\" />\n </div>\n </div>\n</ng-template>\n\n<ng-template #templateOp let-data>\n @if (canEdit()){\n <acp-button\n acpCompanyCustomerAddEdit\n (companyCustomerSaved)=\"refresh()\"\n [id]=\"data.idCliente\"\n variant=\"success\"\n icon=\"edit\"\n matStyle=\"icon\"\n />\n } @if (!data.esConsumidorFinal) {\n <acp-button (handleClick)=\"askToDelete(data)\" variant=\"danger\" icon=\"delete\" matStyle=\"icon\" />\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acontplus/ng-customer",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Angular customer management module following clean architecture principles. Provides customer UI components, business logic, and integrates with notification systems for comprehensive customer relationship management.",
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"@
|
|
7
|
-
"@
|
|
8
|
-
"@angular/common": "^21.0.6",
|
|
9
|
-
"@angular/core": "^21.0.6"
|
|
6
|
+
"@angular/common": "^21.0.0",
|
|
7
|
+
"@angular/core": "^21.0.0"
|
|
10
8
|
},
|
|
11
9
|
"sideEffects": false,
|
|
12
10
|
"main": "fesm2022/acontplus-ng-customer.mjs",
|
|
@@ -16,8 +14,7 @@
|
|
|
16
14
|
"index.d.ts",
|
|
17
15
|
"*.d.ts",
|
|
18
16
|
"**/*.d.ts",
|
|
19
|
-
"fesm2022/**/*"
|
|
20
|
-
"company-customer/**/*"
|
|
17
|
+
"fesm2022/**/*"
|
|
21
18
|
],
|
|
22
19
|
"engines": {
|
|
23
20
|
"node": ">=18.0.0"
|
|
@@ -46,12 +43,12 @@
|
|
|
46
43
|
"author": "Emilio Senguana <sengua2017@gmail.com>",
|
|
47
44
|
"license": "MIT",
|
|
48
45
|
"bugs": {
|
|
49
|
-
"url": "https://github.com/
|
|
46
|
+
"url": "https://github.com/acontplus/acontplus-libs/issues"
|
|
50
47
|
},
|
|
51
|
-
"homepage": "https://github.com/
|
|
48
|
+
"homepage": "https://github.com/acontplus/acontplus-libs#readme",
|
|
52
49
|
"repository": {
|
|
53
50
|
"type": "git",
|
|
54
|
-
"url": "git+https://github.com/
|
|
51
|
+
"url": "git+https://github.com/acontplus/acontplus-libs.git"
|
|
55
52
|
},
|
|
56
53
|
"release": {
|
|
57
54
|
"branches": [
|