{"version":3,"file":"g2-common-add-client.mjs","sources":["../../../projects/add-client/src/lib/animations.ts","../../../projects/add-client/src/lib/constants.ts","../../../projects/add-client/src/lib/add-client.component.ts","../../../projects/add-client/src/lib/add-client.component.html","../../../projects/add-client/src/public-api.ts","../../../projects/add-client/src/g2-common-add-client.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\r\n\r\nexport const fadeInOutAnimation = trigger('fadeInOutAnimation', [\r\n  transition(':enter', [\r\n    style({ opacity: 0 }),\r\n    animate('100ms ease-out', style({ opacity: 1 })),\r\n  ]),\r\n  transition(':leave', [\r\n    style({ opacity: 1 }),\r\n    animate('100ms ease-in', style({ opacity: 0 })),\r\n  ]),\r\n]);\r\n","export const DOCUMENT_TYPES_CODES = {\r\n  RUC: '04',\r\n  CEDULA: '05',\r\n  PASAPORTE: '06',\r\n  VENTA_A_CONSUMIDOR_FINAL: '07',\r\n  IDENTIFICACION_DEL_EXTERIOR: '08',\r\n} as const;\r\n\r\nexport const PAGE_SIZE = 20;\r\n\r\nexport const phoneRegex =\r\n  /^(\\+(\\d{1,3})\\s?(\\d{1,4})\\s?(\\d{3,4})\\s?(\\d{3,4})|(\\(\\d{1,4}\\)\\s?(\\d{3,4})\\s?(\\d{3,4}))|(\\d{1,4}[\\s-]?\\d{3,4}[\\s-]?\\d{3,4})|(\\d{3,4}[\\s-]?\\d{3,4})|(\\d{3,4})|\\+?\\d{1,4}|\\d{1,4})$/;\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  DestroyRef,\r\n  ElementRef,\r\n  EventEmitter,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation,\r\n  effect,\r\n  input,\r\n  output,\r\n  signal,\r\n  untracked,\r\n  viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n  AbstractControl,\r\n  AsyncValidatorFn,\r\n  FormControl,\r\n  FormGroup,\r\n  ReactiveFormsModule,\r\n  ValidationErrors,\r\n  ValidatorFn,\r\n  Validators,\r\n} from '@angular/forms';\r\nimport {\r\n  CbmDocumentTypeModel,\r\n  CbmDocumentTypeRepository,\r\n} from '@g2-common/document-type-repository';\r\nimport {\r\n  Observable,\r\n  Subject,\r\n  catchError,\r\n  debounceTime,\r\n  distinctUntilChanged,\r\n  forkJoin,\r\n  map,\r\n  of,\r\n} from 'rxjs';\r\nimport { IPagination, TStatus } from './types';\r\nimport { CbmNotificationService } from '@g2-common/notification-service';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { fadeInOutAnimation } from './animations';\r\nimport { CbmErrorTranslatePipe } from '@g2-common/error-translate-pipe';\r\nimport { CbmTextInputDirective } from '@g2-common/text-input-directive';\r\nimport { DOCUMENT_TYPES_CODES, PAGE_SIZE, phoneRegex } from './constants';\r\nimport { CbmBillingRepository } from '@g2-common/billing-repository';\r\nimport { CbmClientGroupModel, CbmClientGroupRepository } from '@g2-common/client-group-repository';\r\nimport { CbmCountryCodeModel, CbmCountryCodeRepository } from '@g2-common/country-code-repository';\r\nimport { CbmSellerModel, CbmSellerRepository } from '@g2-common/seller-repository';\r\nimport { CbmPriceListModel, CbmPriceListRepository } from '@g2-common/price-list-repository';\r\nimport { NgClass } from '@angular/common';\r\nimport { CbmTreeSelect, CbmTreeSelectComponent } from '@g2-common/tree-select';\r\nimport { CbmTooltipDirective } from '@g2-common/tooltip-directive';\r\n\r\nimport { CbmNumberInputDirective } from '@g2-common/number-input-directive';\r\nimport { CbmClientModel, CbmClientRepository } from '@g2-common/client-repository';\r\nimport { CbmRateModel, CbmRateRepository } from '@g2-common/rate-repository';\r\nimport { CbmClientCategoryRepository } from '@g2-common/client-category-repository';\r\nimport { CbmCharacterCounterDirective } from '@g2-common/character-counter';\r\nimport {\r\n  CbmSettingsProfessionsModel,\r\n  CbmSettingsProfessionsRepository,\r\n} from '@g2-common/settings-professions-repository';\r\nimport { CbmHorizontalOverflowShadowDirective } from '@g2-common/horizontal-overflow-shadow-directive';\r\nimport { CbmConfirmationModalComponent } from '@g2-common/confirmation-modal';\r\nexport type TSaveOptions = 'new' | 'view' | 'close';\r\n\r\nconst initialPagination: IPagination = {\r\n  page: 0,\r\n  size: PAGE_SIZE,\r\n  totalPages: null,\r\n  totalRecords: 0,\r\n};\r\n@Component({\r\n  selector: 'cbm-add-client',\r\n  standalone: true,\r\n  imports: [\r\n    ReactiveFormsModule,\r\n    NgSelectModule,\r\n    CbmErrorTranslatePipe,\r\n    CbmTextInputDirective,\r\n    CbmNumberInputDirective,\r\n    CbmTreeSelectComponent,\r\n    CbmTooltipDirective,\r\n    CbmHorizontalOverflowShadowDirective,\r\n    NgClass,\r\n    CbmConfirmationModalComponent,\r\n    CbmCharacterCounterDirective,\r\n  ],\r\n  styleUrls: ['./styles.css'],\r\n  templateUrl: './add-client.component.html',\r\n  encapsulation: ViewEncapsulation.ShadowDom,\r\n  providers: [CbmNotificationService, BrowserAnimationsModule],\r\n  animations: [fadeInOutAnimation],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CbmAddClientComponent implements OnInit, AfterViewInit {\r\n  // #region ref\r\n  dropdownMenuRef = viewChild<ElementRef<HTMLUListElement>>('dropdownMenu');\r\n\r\n  // #region inputs\r\n  clientId = input<string>();\r\n  isFromOrigin = input<boolean>();\r\n  document_type_code = input<string>();\r\n  document_number = input<string>();\r\n  resetForm = input<boolean>(true);\r\n\r\n  // #region outputs\r\n  cancel = output<void>();\r\n  save = output<any>();\r\n  saveAndView = output<any>();\r\n  saveAndNew = output<any>();\r\n  update = output<any>();\r\n\r\n  // #region state\r\n  documentTypes = signal<CbmDocumentTypeModel.ListResponse.Data[]>([]);\r\n  countryCodes = signal<CbmCountryCodeModel.ListResponse.Data[]>([]);\r\n  sellers = signal<CbmSellerModel.ListResponse.Data[]>([]);\r\n  priceLists = signal<CbmPriceListModel.ListResponse.Data[]>([]);\r\n  rateOptions = signal<CbmRateModel.ListResponse.Item[]>([]);\r\n  categories = signal<CbmTreeSelect.Children>([]);\r\n  professions = signal<CbmSettingsProfessionsModel.ListResponse.Item[]>([]);\r\n  clientToUpdate = signal<CbmClientModel.GetOneResponse.Data | null>(null);\r\n  statusOfFetchDocumentTypes = signal<TStatus>('init');\r\n  statusOfExtractClientData = signal<TStatus>('init');\r\n  statusOfFetchCountryCodes = signal<TStatus>('init');\r\n  statusOfFetchSellers = signal<TStatus>('init');\r\n  statusOfFetchPriceLists = signal<TStatus>('init');\r\n  statusOfFetchCategories = signal<TStatus>('init');\r\n  statusOfSaveClient = signal<TStatus>('init');\r\n  statusOfFetchClientData = signal<TStatus>('init');\r\n  statusOfUpdateClient = signal<TStatus>('init');\r\n  isEmailInputFocused = signal<boolean>(false);\r\n  statusOfFetchRate = signal<TStatus>('init');\r\n  statusOfFetProfession = signal<TStatus>('init');\r\n\r\n  // #region observables\r\n  subjectToSearchDocumentType$ = new Subject<string>();\r\n  subjectToSearchSeller$ = new Subject<string>();\r\n  subjectToSearchPriceList$ = new Subject<string>();\r\n  subjectToSearchCategory$ = new Subject<string>();\r\n  subjectToSearchRate$ = new Subject<string>();\r\n  subjectToSearchProfessionType$ = new Subject<string>();\r\n\r\n  //pagination\r\n  ratePagination = signal<IPagination>(initialPagination);\r\n  professionPagination = signal<IPagination>(initialPagination);\r\n\r\n  // #region variables\r\n  defaultDocumentNumber: string | null = null;\r\n  DOCUMENT_TYPES_CODES = DOCUMENT_TYPES_CODES;\r\n  saveOption = signal<TSaveOptions | null>(null);\r\n\r\n  //region ref\r\n  confirmationModalRef = viewChild<CbmConfirmationModalComponent>('confirmationModal');\r\n\r\n  // #region forms\r\n  clientForm = new FormGroup({\r\n    documentType: new FormControl<CbmDocumentTypeModel.ListResponse.Data | null>(\r\n      null,\r\n      Validators.required,\r\n    ),\r\n    documentNumber: new FormControl<string | null>(null, {\r\n      validators: [\r\n        Validators.required,\r\n        this.documentNumberValidator(),\r\n        this.noWhitespaceValidator(),\r\n      ],\r\n      asyncValidators: [this.asyncDocumentNumberValidator()],\r\n    }),\r\n    category: new FormControl<CbmClientGroupModel.ListAsTreeResponse.Category | null>(\r\n      null,\r\n      Validators.required,\r\n    ),\r\n    businessName: new FormControl<string | null>(null, {\r\n      validators: [Validators.required, this.noWhitespaceValidator()],\r\n    }),\r\n    tradename: new FormControl<string | null>(null, {\r\n      validators: [Validators.required, this.noWhitespaceValidator()],\r\n    }),\r\n    address: new FormControl<string | null>(null, {\r\n      validators: [Validators.required, this.noWhitespaceValidator()],\r\n    }),\r\n    phoneCode: new FormControl<string | null>(null, Validators.required),\r\n    conventionalTelephone: new FormControl<string>('', {\r\n      nonNullable: true,\r\n      validators: Validators.pattern(phoneRegex),\r\n    }),\r\n    cellphone: new FormControl<string | null>(null, Validators.required),\r\n    seller: new FormControl<CbmSellerModel.ListResponse.Data | null>(null, Validators.required),\r\n    priceList: new FormControl<CbmPriceListModel.ListResponse.Data | null>(\r\n      null,\r\n      Validators.required,\r\n    ),\r\n    rate: new FormControl<CbmRateModel.ListResponse.Item | null>(null),\r\n    emails: new FormControl<string[]>([], [this.emailsValidator()]),\r\n    email: new FormControl<string | null>(null, [\r\n      Validators.email,\r\n      Validators.pattern(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/),\r\n    ]),\r\n    economicActivity: new FormControl<string | null>(null, this.noWhitespaceValidator()),\r\n    hasCellphone: new FormControl<boolean>(true, { nonNullable: true }),\r\n    creditApplication: new FormControl<boolean>(false, { nonNullable: true }),\r\n    requestCredit: new FormControl<string | null>(null),\r\n    reasonOfCredit: new FormControl<string | null>(null, this.noWhitespaceValidator()),\r\n    profession: new FormControl<CbmSettingsProfessionsModel.ListResponse.Item | null>(null),\r\n  });\r\n\r\n  // #region constructor\r\n  constructor(\r\n    private destroyRef: DestroyRef,\r\n    private documentTypeRepository: CbmDocumentTypeRepository,\r\n    private notificationService: CbmNotificationService,\r\n    private billingRepository: CbmBillingRepository,\r\n    private countryCodeRepository: CbmCountryCodeRepository,\r\n    private sellerRepository: CbmSellerRepository,\r\n    private priceListRepository: CbmPriceListRepository,\r\n    private clientGroupRepository: CbmClientGroupRepository,\r\n    private clientRepository: CbmClientRepository,\r\n    private rateRepository: CbmRateRepository,\r\n    private clientCategoryRepository: CbmClientCategoryRepository,\r\n    private settingsProfessionsRepository: CbmSettingsProfessionsRepository,\r\n  ) {\r\n    effect(() => {\r\n      const clientId = this.clientId();\r\n      if (!clientId) return;\r\n\r\n      untracked(() => {\r\n        this.fetchClientData();\r\n        if(clientId){\r\n          this.sellerControl.removeValidators(Validators.required);\r\n          this.priceListControl .removeValidators(Validators.required);\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  // #region lifecycle\r\n  ngOnInit(): void {\r\n    this.makeSubscriptions();\r\n    this.makeInitialRequests();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    document.documentElement.removeEventListener('click', this.documentListener);\r\n\r\n    document.documentElement.addEventListener('click', this.documentListener);\r\n  }\r\n\r\n  documentListener = () => {\r\n    const $dropdownMenu = this.dropdownMenuRef()?.nativeElement;\r\n    if (!$dropdownMenu) return;\r\n\r\n    if (!$dropdownMenu.classList.contains('invisible')) {\r\n      $dropdownMenu.classList.toggle('invisible');\r\n      $dropdownMenu.classList.toggle('translate-y-2');\r\n      $dropdownMenu.classList.toggle('opacity-0');\r\n    }\r\n  };\r\n\r\n  onInputConventionalPhone(event: Event): void {\r\n    const input = event.target as HTMLInputElement;\r\n    input.value = input.value.replace(/[^0-9\\-\\(\\)]/g, '');\r\n  }\r\n  // #region controls\r\n  get documentTypeControl() {\r\n    return this.clientForm.controls.documentType;\r\n  }\r\n\r\n  get documentNumberControl() {\r\n    return this.clientForm.controls.documentNumber;\r\n  }\r\n\r\n  get categoryControl() {\r\n    return this.clientForm.controls.category;\r\n  }\r\n\r\n  get businessNameControl() {\r\n    return this.clientForm.controls.businessName;\r\n  }\r\n\r\n  get tradenameControl() {\r\n    return this.clientForm.controls.tradename;\r\n  }\r\n\r\n  get addressControl() {\r\n    return this.clientForm.controls.address;\r\n  }\r\n\r\n  get phoneCodeControl() {\r\n    return this.clientForm.controls.phoneCode;\r\n  }\r\n\r\n  get cellphoneControl() {\r\n    return this.clientForm.controls.cellphone;\r\n  }\r\n\r\n  get emailsControl() {\r\n    return this.clientForm.controls.emails;\r\n  }\r\n\r\n  get emailControl() {\r\n    return this.clientForm.controls.email;\r\n  }\r\n\r\n  get sellerControl() {\r\n    return this.clientForm.controls.seller;\r\n  }\r\n\r\n  get priceListControl() {\r\n    return this.clientForm.controls.priceList;\r\n  }\r\n\r\n  get economicActivityControl() {\r\n    return this.clientForm.controls.economicActivity;\r\n  }\r\n\r\n  get hasCellphoneControl() {\r\n    return this.clientForm.controls.hasCellphone;\r\n  }\r\n\r\n  get creditApplicationControl() {\r\n    return this.clientForm.controls.creditApplication;\r\n  }\r\n\r\n  get requestCreditControl() {\r\n    return this.clientForm.controls.requestCredit;\r\n  }\r\n  get professionControl() {\r\n    return this.clientForm.controls.profession;\r\n  }\r\n\r\n  // #region compareWith\r\n  compareWithId(a: { _id: string }, b: { _id: string }): boolean {\r\n    return a._id === b._id;\r\n  }\r\n\r\n  // #region validators\r\n  cellphoneValidator(): ValidatorFn {\r\n    return (control: AbstractControl): ValidationErrors | null => {\r\n      if (!this.clientForm) return null;\r\n\r\n      const cellphone: typeof this.cellphoneControl.value = control.value;\r\n      const phoneCode = this.phoneCodeControl.value;\r\n\r\n      if (phoneCode === '593' && cellphone) {\r\n        if (!/^\\d{10}$/.test(cellphone)) return {};\r\n      }\r\n\r\n      return null;\r\n    };\r\n  }\r\n\r\n  noWhitespaceValidator(): ValidatorFn {\r\n    return (control: AbstractControl): ValidationErrors | null => {\r\n      if (!control.value) return null;\r\n      const isWhitespace = (control.value || '').trim().length === 0;\r\n      const isValid = !isWhitespace;\r\n      return isValid ? null : { whitespace: true };\r\n    };\r\n  }\r\n\r\n  asyncDocumentNumberValidator(): AsyncValidatorFn {\r\n    return (control: AbstractControl): Observable<ValidationErrors | null> => {\r\n      const value: typeof this.documentNumberControl.value = control.value;\r\n      if (!value) return of(null);\r\n      if (!this.clientForm) return of(null);\r\n\r\n      const documentType = this.documentTypeControl.value;\r\n      if (\r\n        ((documentType?.code === DOCUMENT_TYPES_CODES.CEDULA && value.length === 10) ||\r\n          (documentType?.code === DOCUMENT_TYPES_CODES.RUC && value.length === 13)) &&\r\n        this.defaultDocumentNumber !== value\r\n      ) {\r\n        return this.clientRepository.validateDocumentNumber(documentType.name!, value).pipe(\r\n          takeUntilDestroyed(this.destroyRef),\r\n          map((response) => (response.success ? null : { invalid: response.message })),\r\n        );\r\n      }\r\n\r\n      return of(null);\r\n    };\r\n  }\r\n\r\n  validarRucCedula(numero: string): boolean {\r\n    let suma = 0;\r\n    let residuo = 0;\r\n    let modulo = 11;\r\n    const numeroProvincias = 24;\r\n\r\n    // Check if the input contains only digits\r\n    if (!/^\\d+$/.test(numero) || numero.length < 10) return false;\r\n\r\n    const provincia = parseInt(numero.slice(0, 2));\r\n    if (provincia < 1 || provincia > numeroProvincias) return false;\r\n\r\n    // Extract digits into an array\r\n    const digits = Array.from(numero).map(Number);\r\n    const [d1, d2, d3, d4, d5, d6, d7, d8, d9, d10] = digits;\r\n\r\n    // Validate based on the third digit\r\n    if (d3 === 7 || d3 === 8) return false;\r\n\r\n    let isNatural = false,\r\n      isPublic = false,\r\n      isPrivate = false;\r\n    if (d3 < 6) {\r\n      isNatural = true;\r\n      modulo = 10;\r\n      suma = [d1 * 2, d2 * 1, d3 * 2, d4 * 1, d5 * 2, d6 * 1, d7 * 2, d8 * 1, d9 * 2]\r\n        .map((val) => (val >= 10 ? val - 9 : val))\r\n        .reduce((acc, cur) => acc + cur, 0);\r\n    } else if (d3 === 6) {\r\n      isPublic = true;\r\n      suma = [d1 * 3, d2 * 2, d3 * 7, d4 * 6, d5 * 5, d6 * 4, d7 * 3, d8 * 2].reduce(\r\n        (acc, cur) => acc + cur,\r\n        0,\r\n      );\r\n    } else if (d3 === 9) {\r\n      isPrivate = true;\r\n      suma = [d1 * 4, d2 * 3, d3 * 2, d4 * 7, d5 * 6, d6 * 5, d7 * 4, d8 * 3, d9 * 2].reduce(\r\n        (acc, cur) => acc + cur,\r\n        0,\r\n      );\r\n    }\r\n\r\n    residuo = suma % modulo;\r\n    const digitoVerificador = residuo === 0 ? 0 : modulo - residuo;\r\n\r\n    if (isPublic && (digitoVerificador !== d9 || numero.slice(9, 4) !== '0001')) return false;\r\n    if (isPrivate && (digitoVerificador !== d10 || numero.slice(10, 3) !== '001')) return false;\r\n    if (\r\n      isNatural &&\r\n      (digitoVerificador !== d10 || (numero.length > 10 && numero.slice(10, 3) !== '001'))\r\n    )\r\n      return false;\r\n\r\n    return true;\r\n  }\r\n\r\n  documentNumberValidator(): ValidatorFn {\r\n    return (control: AbstractControl): ValidationErrors | null => {\r\n      const value: string = control.value;\r\n\r\n      if (!value) return { required: true };\r\n\r\n      if (!this.clientForm || this.documentTypeControl.invalid) return null;\r\n\r\n      const documentType = this.documentTypeControl.value!;\r\n\r\n      if (documentType.code === DOCUMENT_TYPES_CODES.CEDULA) {\r\n        if (!/^\\d{10}$/.test(value)) {\r\n          return { invalid: 'Ingrese 10 dígitos' };\r\n        }\r\n\r\n        const values = value.split('').map((digit, index) => {\r\n          const digitNum = Number(digit);\r\n          return index % 2 === 0 ? (digitNum * 2 > 9 ? digitNum * 2 - 9 : digitNum * 2) : digitNum;\r\n        });\r\n\r\n        const sum = values.slice(0, 9).reduce((acc, curr) => acc + curr, 0);\r\n\r\n        const validatorDigit = (Math.floor(sum / 10) + 1) * 10 - sum;\r\n\r\n        if (validatorDigit === Number(value.at(9))) {\r\n          return null;\r\n        } else {\r\n          // Si el dígito verificador no es válido, entonces invocamos `validarRucCedula`\r\n          if (!this.validarRucCedula(value)) {\r\n            return { invalid: 'Cédula inválida' };\r\n          }\r\n        }\r\n      }\r\n\r\n      // Validación para RUC\r\n      if (documentType.code === DOCUMENT_TYPES_CODES.RUC) {\r\n        // Verificar que el RUC tenga 13 dígitos\r\n        if (!/^\\d{13}$/.test(value)) {\r\n          return { invalid: 'Ingrese 13 dígitos' };\r\n        }\r\n\r\n        // Validación básica para RUC\r\n        return null;\r\n      }\r\n\r\n      return null;\r\n    };\r\n  }\r\n\r\n  emailsValidator(): ValidatorFn {\r\n    return (control: AbstractControl): ValidationErrors | null => {\r\n      const value: typeof this.emailsControl.value = control.value;\r\n\r\n      if (!value) return { required: true };\r\n      if (!value.length) return { invalid: 'Ingrese al menos un correo' };\r\n\r\n      if (value.length !== new Set(value).size) {\r\n        return { invalid: 'No se pueden repetir correos' };\r\n      }\r\n\r\n      return null;\r\n    };\r\n  }\r\n\r\n  // #region methods\r\n  makeSubscriptions() {\r\n    this.subjectToSearchDocumentType$\r\n      .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(300), distinctUntilChanged())\r\n      .subscribe((searchTerm) => this.fetchDocumentTypes(searchTerm));\r\n\r\n    this.subjectToSearchSeller$\r\n      .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(300), distinctUntilChanged())\r\n      .subscribe((searchTerm) => this.fetchSellers(searchTerm));\r\n\r\n    this.subjectToSearchPriceList$\r\n      .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(300), distinctUntilChanged())\r\n      .subscribe((searchTerm) => this.fetchPriceLists(searchTerm));\r\n\r\n    this.subjectToSearchCategory$\r\n      .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(300), distinctUntilChanged())\r\n      .subscribe((searchTerm) => this.fetchCategories(searchTerm));\r\n\r\n    this.subjectToSearchRate$\r\n      .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(300), distinctUntilChanged())\r\n      .subscribe((searchTerm) => {\r\n        this.ratePagination.set(initialPagination);\r\n        this.rateOptions.set([]);\r\n        this.fetchRate(searchTerm);\r\n      });\r\n\r\n    this.subjectToSearchProfessionType$\r\n      .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(300), distinctUntilChanged())\r\n      .subscribe((searchTerm) => {\r\n        this.professionPagination.set(initialPagination);\r\n        this.professions.set([]);\r\n        this.fetchProfession(searchTerm);\r\n      });\r\n\r\n    let initDocumentType: boolean = false;\r\n\r\n    this.documentTypeControl.valueChanges\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe((value) => {\r\n        this.documentNumberControl.setValue(\r\n          !initDocumentType ? this.document_number() || null : null,\r\n        );\r\n        this.businessNameControl.setValue(null);\r\n        this.tradenameControl.setValue(null);\r\n\r\n        if (!initDocumentType && this.document_number()) this.extractClientData();\r\n       \r\n        this.clientForm.controls.tradename.updateValueAndValidity();\r\n        if (value?.code === DOCUMENT_TYPES_CODES.VENTA_A_CONSUMIDOR_FINAL) {\r\n          this.clientForm.patchValue({\r\n            businessName: 'CONSUMIDOR FINAL',\r\n            documentNumber: '9999999999999',\r\n            tradename: 'CONSUMIDOR FINAL',\r\n          });\r\n        }\r\n        initDocumentType = true;\r\n      });\r\n this.phoneCodeControl.setValue('593');\r\n      this.hasCellphoneControl.valueChanges\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe((value) => {\r\n        this.phoneCodeControl.removeValidators([Validators.required]);\r\n        this.cellphoneControl.removeValidators([Validators.required, this.cellphoneValidator()]);\r\n        this.phoneCodeControl.setValue(null);\r\n        this.cellphoneControl.setValue(null);\r\n\r\n        if (value) {\r\n          this.phoneCodeControl.setValue('593');\r\n          this.phoneCodeControl.addValidators([Validators.required]);\r\n          this.cellphoneControl.addValidators([Validators.required, this.cellphoneValidator()]);\r\n        }\r\n      });\r\n\r\n    this.phoneCodeControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n      this.cellphoneControl.updateValueAndValidity();\r\n    });\r\n\r\n    this.categoryControl.valueChanges\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe((value) => {\r\n        if (!value) return;\r\n\r\n        this.validateAccountCategory(value._id);\r\n      });\r\n\r\n    this.creditApplicationControl.valueChanges\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe((value) => {\r\n        this.requestCreditControl.removeValidators([Validators.required, Validators.min(0.01)]);\r\n        this.clientForm.controls.reasonOfCredit.removeValidators(Validators.required);\r\n\r\n        this.requestCreditControl.updateValueAndValidity({ emitEvent: false });\r\n        this.clientForm.controls.reasonOfCredit.updateValueAndValidity({ emitEvent: false });\r\n\r\n        this.requestCreditControl.setValue(null);\r\n        this.clientForm.controls.reasonOfCredit.setValue(null);\r\n\r\n        if (value) {\r\n          this.requestCreditControl.addValidators([Validators.required, Validators.min(0.01)]);\r\n          this.clientForm.controls.reasonOfCredit.addValidators(Validators.required);\r\n        }\r\n      });\r\n\r\n    this.requestCreditControl.valueChanges\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe(() => {\r\n        this.requestCreditControl.updateValueAndValidity({ emitEvent: false });\r\n      });\r\n  }\r\n\r\n  makeInitialRequests() {\r\n    const clientId = this.clientId();\r\n\r\n    if (!clientId) {\r\n      this.fetchDocumentTypes();\r\n      this.fetchCountryCodes();\r\n      this.fetchSellers();\r\n      this.fetchPriceLists();\r\n      this.fetchCategories();\r\n      this.fetchRate(undefined, true);\r\n      this.fetchProfession();\r\n\r\n    }\r\n\r\n  }\r\n\r\n  fetchClientData() {\r\n    const clientId = this.clientId();\r\n    if (!clientId) return;\r\n\r\n    this.statusOfFetchClientData.set('loading');\r\n\r\n    const getOneClient$ = this.clientRepository.getOne(clientId).pipe(\r\n      takeUntilDestroyed(this.destroyRef),\r\n      catchError((error) => {\r\n        this.notificationService.sendAlert({\r\n          type: 'toast',\r\n          status: 'error',\r\n          message: JSON.stringify(error.error?.message),\r\n        });\r\n\r\n        throw error;\r\n      }),\r\n    );\r\n\r\n    const listDocumentTypes$ = this.documentTypeRepository\r\n      .list({\r\n        type: 'person person',\r\n      })\r\n      .pipe(\r\n        takeUntilDestroyed(this.destroyRef),\r\n        catchError((error) => {\r\n          this.statusOfFetchDocumentTypes.set('failed');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message),\r\n          });\r\n\r\n          throw error;\r\n        }),\r\n      );\r\n\r\n    const listCategories$ = this.clientGroupRepository.listAsTree({}).pipe(\r\n      takeUntilDestroyed(this.destroyRef),\r\n      catchError((error) => {\r\n        this.statusOfFetchCategories.set('failed');\r\n\r\n        this.notificationService.sendAlert({\r\n          type: 'toast',\r\n          status: 'error',\r\n          message: JSON.stringify(error.error?.message),\r\n        });\r\n\r\n        throw error;\r\n      }),\r\n    );\r\n\r\n    const listSellers$ = this.sellerRepository.list({ enabled: true }).pipe(\r\n      takeUntilDestroyed(this.destroyRef),\r\n      catchError((error) => {\r\n        this.statusOfFetchSellers.set('failed');\r\n\r\n        this.notificationService.sendAlert({\r\n          type: 'toast',\r\n          status: 'error',\r\n          message: JSON.stringify(error.error?.message),\r\n        });\r\n\r\n        throw error;\r\n      }),\r\n    );\r\n\r\n    const listPriceLists$ = this.priceListRepository.list({ enabled: true }).pipe(\r\n      takeUntilDestroyed(this.destroyRef),\r\n      catchError((error) => {\r\n        this.statusOfFetchPriceLists.set('failed');\r\n\r\n        this.notificationService.sendAlert({\r\n          type: 'toast',\r\n          status: 'error',\r\n          message: JSON.stringify(error.error?.message),\r\n        });\r\n\r\n        throw error;\r\n      }),\r\n    );\r\n\r\n    const listCountryCodes$ = this.countryCodeRepository.list().pipe(\r\n      takeUntilDestroyed(this.destroyRef),\r\n      catchError((error) => {\r\n        this.statusOfFetchCountryCodes.set('failed');\r\n\r\n        this.notificationService.sendAlert({\r\n          type: 'toast',\r\n          status: 'error',\r\n          message: JSON.stringify(error.error?.message),\r\n        });\r\n\r\n        throw error;\r\n      }),\r\n    );\r\n\r\n    forkJoin([\r\n      getOneClient$,\r\n      listDocumentTypes$,\r\n      listCategories$,\r\n      listSellers$,\r\n      listPriceLists$,\r\n      listCountryCodes$,\r\n    ])\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: async ([\r\n          { data: client },\r\n          { data: documentTypes },\r\n          { data: categories },\r\n          { data: sellers },\r\n          { data: priceLists },\r\n          { data: countryCodes },\r\n        ]) => {\r\n          this.defaultDocumentNumber = client.document_number || null;\r\n          this.clientToUpdate.set(client);\r\n          this.documentTypes.set(documentTypes);\r\n          this.categories.set(categories);\r\n          this.sellers.set(sellers);\r\n          this.priceLists.set(priceLists);\r\n          this.countryCodes.set(countryCodes);\r\n\r\n          if (client.professions_id) {\r\n            const professionResponse = await this.settingsProfessionsRepository\r\n              .getOne(client.professions_id)\r\n              .pipe(\r\n                takeUntilDestroyed(this.destroyRef),\r\n                catchError((error) => {\r\n                  this.statusOfFetProfession.set('failed');\r\n                  this.notificationService.sendAlert({\r\n                    type: 'toast',\r\n                    status: 'error',\r\n                    message: JSON.stringify(error.error?.message),\r\n                  });\r\n\r\n                  throw error;\r\n                }),\r\n              );\r\n\r\n            professionResponse.subscribe(({ data: profession }) => {\r\n              this.clientForm.controls.profession.setValue(profession);\r\n            });\r\n          }\r\n\r\n          const documentType = documentTypes.find((type) => type._id === client.document_type_id);\r\n\r\n          function findCategory(\r\n            children: CbmClientGroupModel.ListAsTreeResponse.Children,\r\n          ): CbmClientGroupModel.ListAsTreeResponse.Category | undefined {\r\n            for (const child of children) {\r\n              if (child.value._id === client.category_client_id) return child.value;\r\n\r\n              if (child.children) {\r\n                const category = findCategory(child.children);\r\n                if (category) return category;\r\n              }\r\n            }\r\n\r\n            return undefined;\r\n          }\r\n\r\n          const category = findCategory(categories);\r\n\r\n          const seller = sellers.find((seller) => seller._id === client.seller_id) || null;\r\n\r\n          const priceList = priceLists.find((priceList) => priceList._id === client.price_list_id);\r\n\r\n          const rate: CbmRateModel.ListResponse.Item | null = client.rate_id\r\n            ? {\r\n              _id: client.rate_id,\r\n              code: client.rate_code,\r\n              name: client.rate_name,\r\n            }\r\n            : null;\r\n\r\n          this.clientForm.patchValue({\r\n            documentType,\r\n            documentNumber: client.document_number,\r\n            businessName: client.business_name,\r\n            tradename: client.trade_name,\r\n            category,\r\n            address: client.address,\r\n            emails: client.emails,\r\n            seller: seller,\r\n            priceList,\r\n            economicActivity: client.economic_activity,\r\n            hasCellphone: client.has_cellphone,\r\n            rate,\r\n            conventionalTelephone: client.phone_number,\r\n            reasonOfCredit: client.reason_request,\r\n          });\r\n\r\n          if (client.has_cellphone) {\r\n            this.phoneCodeControl.setValue(client.phone_code ?? null, {\r\n              emitEvent: false,\r\n            });\r\n            this.cellphoneControl.setValue(client.cellphone ?? null, {\r\n              emitEvent: false,\r\n            });\r\n          }\r\n\r\n          this.creditApplicationControl.setValue(client.credit_application!, {\r\n            emitEvent: false,\r\n          });\r\n\r\n          if (client.document_type_code === DOCUMENT_TYPES_CODES.VENTA_A_CONSUMIDOR_FINAL) {\r\n            this.clientForm.disable();\r\n            this.categoryControl.enable();\r\n          }\r\n\r\n          setTimeout(() => {\r\n            this.professions.set([]);\r\n            this.professionPagination.set(initialPagination);\r\n            this.fetchProfession();\r\n          }, 0);\r\n\r\n          this.statusOfFetchDocumentTypes.set('success');\r\n          this.statusOfFetchCategories.set('success');\r\n          this.statusOfFetchSellers.set('success');\r\n          this.statusOfFetchPriceLists.set('success');\r\n          this.statusOfFetchCountryCodes.set('success');\r\n          this.statusOfFetchClientData.set('success');\r\n          this.statusOfFetProfession.set('success');\r\n        },\r\n        error: () => {\r\n          this.defaultDocumentNumber = null;\r\n          this.statusOfFetchClientData.set('failed');\r\n        },\r\n      });\r\n  }\r\n\r\n  fetchDocumentTypes(searchTerm?: string) {\r\n    this.statusOfFetchDocumentTypes.set('loading');\r\n\r\n    const params: CbmDocumentTypeModel.ListParams = {\r\n      type: 'person person',\r\n    };\r\n\r\n    if (searchTerm) params.name = searchTerm;\r\n\r\n    this.documentTypeRepository\r\n      .list(params)\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: (response) => {\r\n          this.documentTypes.set(\r\n            response.data.filter(\r\n              (type) => type.code !== DOCUMENT_TYPES_CODES.VENTA_A_CONSUMIDOR_FINAL,\r\n            ),\r\n          );\r\n\r\n          this.statusOfFetchDocumentTypes.set('success');\r\n\r\n          if (this.document_type_code()) {\r\n            const documentType = this.documentTypes().find(\r\n              (type) => type.code === this.document_type_code(),\r\n            );\r\n\r\n            if (!documentType) return;\r\n\r\n            this.documentTypeControl.setValue(documentType);\r\n          }\r\n        },\r\n        error: (error) => {\r\n          this.statusOfFetchDocumentTypes.set('failed');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message),\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  getDocumentNumberMaxLength(): number | undefined {\r\n    const documentType = this.documentTypeControl.value;\r\n\r\n    if (!documentType) return undefined;\r\n    if (documentType.code === DOCUMENT_TYPES_CODES.CEDULA) return 10;\r\n    if (documentType.code === DOCUMENT_TYPES_CODES.RUC) return 13;\r\n\r\n    return undefined;\r\n  }\r\n\r\n  getDocumentNumberPattern(): string {\r\n    const documentType = this.documentTypeControl.value;\r\n\r\n    if (!documentType) return '.*';\r\n\r\n    if (\r\n      documentType.code === DOCUMENT_TYPES_CODES.CEDULA ||\r\n      documentType.code === DOCUMENT_TYPES_CODES.RUC\r\n    )\r\n      return '^[0-9]*$';\r\n\r\n    return '.*';\r\n  }\r\n\r\n  extractClientData() {\r\n    const documentType = this.documentTypeControl.value;\r\n\r\n    if (!documentType) return;\r\n\r\n    if (documentType.code === DOCUMENT_TYPES_CODES.CEDULA) this.fetchDataByCedula();\r\n\r\n    if (documentType.code === DOCUMENT_TYPES_CODES.RUC) this.fetchDataByRuc();\r\n  }\r\n\r\n  fetchDataByCedula() {\r\n    if (this.documentNumberControl.invalid) return;\r\n\r\n    const documentNumber = this.documentNumberControl.value!;\r\n\r\n    this.statusOfExtractClientData.set('loading');\r\n\r\n    this.billingRepository\r\n      .getCedula({ cedula: documentNumber })\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: (response) => {\r\n          const { datosCedula } = response;\r\n\r\n          if (response.statusCode === 200) {\r\n            this.statusOfExtractClientData.set('success');\r\n            this.notificationService.sendAlert({\r\n              type: 'toast',\r\n              status: 'success',\r\n              message: 'Datos extraidos correctamente',\r\n            });\r\n            this.clientForm.patchValue({\r\n              businessName: datosCedula?.nombreCompleto,\r\n              tradename: datosCedula?.nombreCompleto,\r\n              address: datosCedula?.direccionMatriz ?? datosCedula?.calleDomicilio ?? '',\r\n            });\r\n          } else {\r\n            this.statusOfExtractClientData.set('success');\r\n            this.notificationService.sendAlert({\r\n              type: 'toast',\r\n              status: 'error',\r\n              message: 'No se puedo extraer los datos',\r\n            });\r\n          }\r\n        },\r\n        error: (error) => {\r\n          this.statusOfExtractClientData.set('failed');\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message ?? 'No se pudo extraer los datos'),\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  fetchDataByRuc() {\r\n    if (this.documentNumberControl.invalid) return;\r\n\r\n    const documentNumber = this.documentNumberControl.value!;\r\n\r\n    this.statusOfExtractClientData.set('loading');\r\n\r\n    this.billingRepository\r\n      .getRucSri({ ruc: documentNumber })\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: (response) => {\r\n          const { datosRuc } = response;\r\n\r\n          if (response.statusCode === 200) {\r\n            this.statusOfExtractClientData.set('success');\r\n            this.notificationService.sendAlert({\r\n              type: 'toast',\r\n              status: 'success',\r\n              message: 'Datos extraidos correctamente',\r\n            });\r\n            this.clientForm.patchValue({\r\n              businessName: datosRuc?.razonSocial,\r\n              tradename: datosRuc?.nombreComercialMatriz?.trim() ? datosRuc?.nombreComercialMatriz : datosRuc?.razonSocial,\r\n              address: datosRuc?.direccionCompletaMatriz ?? '----',\r\n              economicActivity: datosRuc?.actividadEconomicaPrincipal,\r\n            });\r\n          } else {\r\n            this.statusOfExtractClientData.set('success');\r\n            this.notificationService.sendAlert({\r\n              type: 'toast',\r\n              status: 'error',\r\n              message: 'No se puedo extraer los datos',\r\n            });\r\n          }\r\n\r\n          this.statusOfExtractClientData.set('success');\r\n        },\r\n        error: (error) => {\r\n          this.statusOfExtractClientData.set('failed');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message ?? 'No se puedo extraer los datos'),\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  fetchCountryCodes() {\r\n    this.statusOfFetchCountryCodes.set('loading');\r\n\r\n    this.countryCodeRepository\r\n      .list()\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: (response) => {\r\n          this.countryCodes.set(response.data);\r\n          this.statusOfFetchCountryCodes.set('success');\r\n        },\r\n        error: (error) => {\r\n          this.statusOfFetchCountryCodes.set('failed');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message),\r\n          });\r\n        },\r\n      });\r\n  }\r\n  fetchProfession(searchTerm?: string): void {\r\n    const { totalPages, page, size } = this.professionPagination();\r\n    const newPage = page + 1;\r\n\r\n    if (totalPages !== null && newPage > totalPages) return;\r\n    this.statusOfFetProfession.set('loading');\r\n    this.professionPagination.update((prev) => ({\r\n      ...prev,\r\n      page: newPage,\r\n    }));\r\n    const params: CbmSettingsProfessionsModel.ListParams = {\r\n      page: newPage,\r\n      size,\r\n      enabled: true,\r\n    };\r\n    if (searchTerm) {\r\n      params.description = searchTerm;\r\n    }\r\n\r\n    this.settingsProfessionsRepository\r\n      .list(params)\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: (response) => {\r\n          this.professions.update((prev) => [...prev, ...response.items]);\r\n          this.professionPagination.update((prev) => ({\r\n            ...prev,\r\n            totalPages: response.pages,\r\n            totalRecords: response.total,\r\n          }));\r\n          this.statusOfFetProfession.set('success');\r\n        },\r\n        error: (error) => {\r\n          this.statusOfFetProfession.set('failed');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message),\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  fetchSellers(searchTerm?: string) {\r\n    this.statusOfFetchSellers.set('loading');\r\n\r\n    const params: CbmSellerModel.ListParams = {\r\n      enabled: true,\r\n    };\r\n\r\n    if (searchTerm) params.filter_text = searchTerm;\r\n\r\n    this.sellerRepository\r\n      .list(params)\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: (response) => {\r\n          this.sellers.set(response.data);\r\n          this.statusOfFetchSellers.set('success');\r\n        },\r\n        error: (error) => {\r\n          this.statusOfFetchSellers.set('failed');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message),\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  fetchPriceLists(searchTerm?: string) {\r\n    this.statusOfFetchPriceLists.set('loading');\r\n\r\n    const params: CbmPriceListModel.ListParams = {\r\n      enabled: true,\r\n    };\r\n\r\n    if (searchTerm) params.name = searchTerm;\r\n\r\n    this.priceListRepository\r\n      .list(params)\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: (response) => {\r\n          this.priceLists.set(response.data);\r\n          this.statusOfFetchPriceLists.set('success');\r\n        },\r\n        error: (error) => {\r\n          this.statusOfFetchPriceLists.set('failed');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message),\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  fetchCategories(searchTerm?: string) {\r\n    this.statusOfFetchCategories.set('loading');\r\n\r\n    const params: CbmClientGroupModel.ListAsTreeParams = {};\r\n\r\n    if (searchTerm) params.name = searchTerm;\r\n\r\n    this.clientGroupRepository\r\n      .listAsTree(params)\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: (response) => {\r\n          this.categories.set(response.data);\r\n          this.statusOfFetchCategories.set('success');\r\n        },\r\n        error: (error) => {\r\n          this.statusOfFetchCategories.set('failed');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message),\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  addEmail() {\r\n    this.emailControl.markAsTouched();\r\n    this.emailsControl.markAsTouched();\r\n\r\n    if (this.emailControl.invalid) return;\r\n    const email = this.emailControl.value;\r\n    if (!email) return;\r\n\r\n    const existingEmails = this.emailsControl.value ?? [];\r\n\r\n    if (existingEmails.includes(email)) {\r\n      this.notificationService.sendAlert({\r\n        type: 'toast',\r\n        status: 'warning',\r\n        message: 'El correo ya fue agregado',\r\n      });\r\n\r\n      return;\r\n    }\r\n\r\n    this.emailsControl.setValue([...existingEmails, email]);\r\n    this.emailControl.setValue(null);\r\n  }\r\n\r\n  onEmailKeyDown(event: KeyboardEvent) {\r\n    if (event.key === 'Enter') {\r\n      event.preventDefault();\r\n      this.addEmail();\r\n    }\r\n  }\r\n\r\n  onEmailBlur() {\r\n    this.addEmail();\r\n  }\r\n\r\n  removeEmail(email: string) {\r\n    const emails = this.emailsControl.value ?? [];\r\n    this.emailsControl.setValue(emails.filter((e) => e !== email));\r\n  }\r\n\r\n  saveClient(callback: (newClientId: string) => void): void {\r\n    if (this.clientForm.invalid) {\r\n      this.clientForm.markAllAsTouched();\r\n\r\n      this.notificationService.sendAlert({\r\n        type: 'toast',\r\n        status: 'warning',\r\n        message: 'El formulario contiene datos inválidos o incompletos',\r\n      });\r\n\r\n      return;\r\n    }\r\n\r\n    this.statusOfSaveClient.set('loading');\r\n\r\n    const {\r\n      address,\r\n      businessName,\r\n      category,\r\n      cellphone,\r\n      documentNumber,\r\n      documentType,\r\n      economicActivity,\r\n      emails,\r\n      phoneCode,\r\n      priceList,\r\n      seller,\r\n      tradename,\r\n      hasCellphone,\r\n      creditApplication,\r\n      requestCredit,\r\n      conventionalTelephone,\r\n      rate,\r\n      reasonOfCredit,\r\n      profession,\r\n    } = this.clientForm.getRawValue();\r\n\r\n    const data: CbmClientModel.SaveBody = {\r\n      category_client_id: category!._id,\r\n      category_client_name: category!.name,\r\n      seller_id: seller!._id,\r\n      seller_identification_number: seller!.identification_number,\r\n      seller_full_name: seller!.full_name,\r\n      price_list_id: priceList!._id,\r\n      price_list_name: priceList!.name,\r\n      document_type_id: documentType!._id,\r\n      document_type_name: documentType!.name!,\r\n      document_type_code: documentType!.code!,\r\n      document_number: documentNumber!,\r\n      business_name: businessName!,\r\n      trade_name: tradename!,\r\n      address: address!,\r\n      emails: emails!,\r\n      has_cellphone: hasCellphone,\r\n      credit_application: creditApplication,\r\n      rate_id: rate?._id || undefined,\r\n      rate_name: rate?.name || undefined,\r\n      rate_code: rate?.code || undefined,\r\n      phone_number: conventionalTelephone || undefined,\r\n      reason_request: reasonOfCredit || undefined,\r\n      professions_id: profession?._id || undefined,\r\n      professions_code: profession?.code || undefined,\r\n      professions_name: profession?.description || undefined,\r\n    };\r\n\r\n    if (requestCredit) data.request_credit_value = Number(requestCredit);\r\n\r\n    if (hasCellphone) {\r\n      data.cellphone = cellphone!;\r\n      data.phone_code = phoneCode!;\r\n    }\r\n\r\n    if (economicActivity) data.economic_activity = economicActivity;\r\n\r\n    this.clientRepository\r\n      .save(data)\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: (response) => {\r\n          this.statusOfSaveClient.set('success');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'sweetAlert',\r\n            status: 'success',\r\n            message: response.message,\r\n          });\r\n\r\n          this.clientForm.reset();\r\n          callback(response.data);\r\n        },\r\n        error: (error) => {\r\n          this.statusOfSaveClient.set('failed');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'sweetAlert',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message),\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  addClientAndNew(): void {\r\n    this.saveClient((newClientId) => {\r\n      this.saveAndNew.emit(newClientId);\r\n    });\r\n  }\r\n\r\n  addClientAndView(): void {\r\n    this.saveClient((newClientId) => {\r\n      this.saveAndView.emit(newClientId);\r\n    });\r\n  }\r\n\r\n  addClientAndClose(): void {\r\n    this.saveClient((newClientId) => {\r\n      this.save.emit(newClientId);\r\n    });\r\n  }\r\n\r\n  updateClient() {\r\n    const clientId = this.clientId();\r\n    if (!clientId) return;\r\n\r\n    if (this.clientForm.invalid) {\r\n      this.clientForm.markAllAsTouched();\r\n\r\n      this.notificationService.sendAlert({\r\n        type: 'toast',\r\n        status: 'warning',\r\n        message: 'El formulario contiene datos inválidos o incompletos',\r\n      });\r\n\r\n      return;\r\n    }\r\n\r\n    this.statusOfUpdateClient.set('loading');\r\n\r\n    const {\r\n      address,\r\n      businessName,\r\n      category,\r\n      cellphone,\r\n      documentNumber,\r\n      documentType,\r\n      economicActivity,\r\n      emails,\r\n      phoneCode,\r\n      tradename,\r\n      hasCellphone,\r\n      creditApplication,\r\n      reasonOfCredit,\r\n      conventionalTelephone,\r\n      rate,\r\n      profession,\r\n    } = this.clientForm.getRawValue();\r\n\r\n    const data: CbmClientModel.UpdateBody = {\r\n      category_client_id: category!._id,\r\n      document_type_id: documentType!._id,\r\n      document_type_name: documentType!.name!,\r\n      document_type_code: documentType!.code!,\r\n      document_number: documentNumber!,\r\n      business_name: businessName!,\r\n      trade_name: tradename!,\r\n      address: address!,\r\n      emails: emails!,\r\n      has_cellphone: hasCellphone,\r\n      credit_application: creditApplication,\r\n      rate_id: rate?._id || undefined,\r\n      rate_name: rate?.name || undefined,\r\n      rate_code: rate?.code || undefined,\r\n      phone_number: conventionalTelephone || undefined,\r\n      reason_request: reasonOfCredit || undefined,\r\n      professions_id: profession?._id || undefined,\r\n      professions_code: profession?.code || undefined,\r\n      professions_name: profession?.description || undefined,\r\n    };\r\n\r\n    if (hasCellphone) {\r\n      data.cellphone = cellphone!;\r\n      data.phone_code = phoneCode!;\r\n    }\r\n\r\n    if (economicActivity) data.economic_activity = economicActivity;\r\n\r\n    this.clientRepository\r\n      .update(clientId, data)\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: (response) => {\r\n          this.statusOfUpdateClient.set('success');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'sweetAlert',\r\n            status: 'success',\r\n            message: response.message,\r\n          });\r\n\r\n          if (this.resetForm()) this.clientForm.reset();\r\n          this.update.emit(response.data);\r\n        },\r\n        error: (error) => {\r\n          this.statusOfUpdateClient.set('failed');\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'sweetAlert',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error?.message),\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  onDropdownMenuClick(event: MouseEvent, dropdownMenu: HTMLUListElement): void {\r\n    event.stopPropagation();\r\n\r\n    dropdownMenu.classList.toggle('invisible');\r\n    dropdownMenu.classList.toggle('translate-y-2');\r\n    dropdownMenu.classList.toggle('opacity-0');\r\n  }\r\n\r\n  fetchRate(searchTerm?: string, init?: boolean): void {\r\n    const { totalPages, page, size } = this.ratePagination();\r\n    const newPage = page + 1;\r\n    if (totalPages !== null && newPage > totalPages) return;\r\n\r\n    this.ratePagination.update((prev) => ({\r\n      ...prev,\r\n      page: newPage,\r\n    }));\r\n\r\n    const request: CbmRateModel.ListParams = {\r\n      page: newPage,\r\n      size,\r\n      enabled: true,\r\n    };\r\n\r\n    if (searchTerm) request.name = searchTerm;\r\n\r\n    this.statusOfFetchRate.set('loading');\r\n    forkJoin([\r\n      this.rateRepository.list(request),\r\n      this.rateRepository.list({ ...request, default: true }),\r\n    ])\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        next: ([response, responseDefault]) => {\r\n          const rateDefault = responseDefault.items[0] || undefined;\r\n\r\n          this.rateOptions.update((prev) => [...prev, ...response.items]);\r\n\r\n          this.ratePagination.update((prev) => ({\r\n            ...prev,\r\n            totalPages: response.pages,\r\n            totalRecords: response.total,\r\n          }));\r\n\r\n          if (init) this.clientForm.controls.rate.setValue(rateDefault);\r\n\r\n          this.statusOfFetchRate.set('success');\r\n        },\r\n        error: (error) => {\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: `Error al cargar las tarifas : ${JSON.stringify(error.error.message)}`,\r\n          });\r\n\r\n          this.statusOfFetchRate.set('failed');\r\n        },\r\n      });\r\n  }\r\n\r\n  validateAccountCategory(id: string): void {\r\n    this.clientCategoryRepository\r\n      .validateAccount(id)\r\n      .pipe(takeUntilDestroyed(this.destroyRef))\r\n      .subscribe({\r\n        error: (error) => {\r\n          this.categoryControl.setValue(null);\r\n\r\n          this.notificationService.sendAlert({\r\n            type: 'toast',\r\n            status: 'error',\r\n            message: JSON.stringify(error.error.message),\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  validateSaveClientForm(saveOption: TSaveOptions): void {\r\n    if (this.clientForm.invalid) {\r\n      this.notificationService.sendAlert({\r\n        type: 'toast',\r\n        status: 'warning',\r\n        message: 'El formulario contiene datos inválidos o incompletos',\r\n      });\r\n\r\n      this.clientForm.markAllAsTouched();\r\n\r\n      return;\r\n    }\r\n    this.saveOption.set(saveOption);\r\n    this.confirmationModalRef()?.openModal();\r\n  }\r\n\r\n  onModalConfirm() {\r\n    const saveOption = this.saveOption();\r\n    if (!saveOption) return;\r\n    switch (saveOption) {\r\n      case 'new':\r\n        this.addClientAndNew();\r\n        break;\r\n      case 'view':\r\n        this.addClientAndView();\r\n        break;\r\n      case 'close':\r\n        this.addClientAndClose();\r\n        break;\r\n    }\r\n  }\r\n\r\n  validateUpdateClientForm(): void {\r\n    if (this.clientForm.invalid) {\r\n      if (this.clientForm.invalid) {\r\n        this.notificationService.sendAlert({\r\n          type: 'toast',\r\n          status: 'warning',\r\n          message: 'El formulario contiene datos inválidos o incompletos',\r\n        });\r\n\r\n        this.clientForm.markAllAsTouched();\r\n\r\n        return;\r\n      }\r\n    }\r\n    this.confirmationModalRef()?.openModal();\r\n  }\r\n  onCancelModalConfirm(): void {\r\n    this.saveOption.set(null);\r\n  }\r\n\r\n  onCancelPress() {\r\n    if (this.resetForm()) this.clientForm.reset();\r\n    this.cancel.emit();\r\n  }\r\n}\r\n","@if (clientId() && statusOfFetchClientData() === \"loading\") {\r\n  <div class=\"loading-skeleton\">\r\n    <div class=\"grid gap-5 grid-cols-1 md:grid-cols-2 lg:grid-cols-3 mt-8\">\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Tipo de documento <span>*</span> </label>\r\n\r\n        <input type=\"text\" class=\"form-control form-control-sm mt-2 self-stretch\" />\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Número de documento <span>*</span> </label>\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Razón social <span>*</span> </label>\r\n\r\n        <input type=\"text\" class=\"form-control form-control-sm mt-2 self-stretch\" />\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Nombre comercial <span>*</span> </label>\r\n\r\n        <input type=\"text\" class=\"form-control form-control-sm mt-2 self-stretch\" />\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start md:col-span-2\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Categoría <span>*</span> </label>\r\n\r\n        <input type=\"text\" class=\"form-control form-control-sm mt-2 self-stretch\" />\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Dirección <span>*</span> </label>\r\n\r\n        <input type=\"text\" class=\"form-control form-control-sm mt-2 self-stretch\" />\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Código de celular <span>*</span> </label>\r\n\r\n        <input type=\"text\" class=\"form-control form-control-sm mt-2 self-stretch\" />\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Número de celular <span>*</span> </label>\r\n\r\n        <input type=\"text\" class=\"form-control form-control-sm mt-2 self-stretch\" />\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Correos electrónicos <span>*</span> </label>\r\n\r\n        <input type=\"text\" class=\"form-control form-control-sm mt-2 self-stretch\" />\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Vendedor <span>*</span> </label>\r\n\r\n        <input type=\"text\" class=\"form-control form-control-sm mt-2 self-stretch\" />\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Lista de precios <span>*</span> </label>\r\n\r\n        <input type=\"text\" class=\"form-control form-control-sm mt-2 self-stretch\" />\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start md:col-span-2 lg:col-span-3\">\r\n        <label for=\"\" class=\"text-base font-normal\"> Actividad económica </label>\r\n\r\n        <textarea\r\n          class=\"form-control form-control-sm mt-2 self-stretch field-sizing-content resize-none\"\r\n        ></textarea>\r\n      </div>\r\n    </div>\r\n\r\n    <h2 class=\"font-semibold text-xl mt-4\">Plazos</h2>\r\n\r\n    <!-- <table aria-label=\"Tabla de plazos\" class=\"w-fit mt-4\">\r\n      <thead class=\"bg-[#d2e7fa] border-b border-info text-black\">\r\n        <tr>\r\n          <th class=\"p-3 text-xs font-semibold text-left align-bottom\">N°</th>\r\n          <th class=\"p-3 text-xs font-semibold text-left align-bottom\">Plazo</th>\r\n          <th class=\"p-3 text-xs font-semibold text-left align-bottom\">Activar</th>\r\n        </tr>\r\n      </thead>\r\n\r\n      <tbody>\r\n        @for (_ of [].constructor(4); track _) {\r\n          <tr class=\"border-b border-[#dde3e7]\">\r\n            @for (__ of [].constructor(3); track __) {\r\n              <td class=\"p-3\">\r\n                <p>-</p>\r\n              </td>\r\n            }\r\n          </tr>\r\n        }\r\n      </tbody>\r\n    </table> -->\r\n\r\n    <!-- <p class=\"mt-5 text-base font-light\">Los campos marcados con <span>*</span> son obligatorios</p>\r\n\r\n    <div class=\"flex flex-wrap justify-center gap-2 mt-5\">\r\n      <button\r\n        type=\"button\"\r\n        class=\"outline-none py-2 px-6 rounded-full flex justify-center items-center gap-2 font-medium transition-colors flex-grow sm:flex-grow-0 disabled:pointer-events-none disabled:opacity-70\"\r\n      >\r\n        <svg\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          width=\"20\"\r\n          height=\"20\"\r\n          viewBox=\"0 0 24 24\"\r\n          fill=\"none\"\r\n          stroke=\"currentColor\"\r\n          stroke-width=\"2\"\r\n          stroke-linecap=\"round\"\r\n          stroke-linejoin=\"round\"\r\n        >\r\n          <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n          <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" />\r\n          <path d=\"M9 12l2 2l4 -4\" />\r\n        </svg>\r\n\r\n        {{ clientId() ? \"Actualizar\" : \"Agregar\" }}\r\n      </button>\r\n\r\n      <button\r\n        type=\"button\"\r\n        class=\"outline-none py-2 px-6 rounded-full flex justify-center items-center gap-2 font-medium transition-colors flex-grow sm:flex-grow-0 disabled:pointer-events-none disabled:opacity-70\"\r\n      >\r\n        <svg\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          width=\"20\"\r\n          height=\"20\"\r\n          viewBox=\"0 0 24 24\"\r\n          fill=\"none\"\r\n          stroke=\"currentColor\"\r\n          stroke-width=\"2\"\r\n          stroke-linecap=\"round\"\r\n          stroke-linejoin=\"round\"\r\n        >\r\n          <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n          <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" />\r\n          <path d=\"M10 10l4 4m0 -4l-4 4\" />\r\n        </svg>\r\n\r\n        Cancelar\r\n      </button>\r\n    </div>-->\r\n  </div>\r\n}\r\n\r\n@if (!clientId() || statusOfFetchClientData() === \"success\") {\r\n  <form [formGroup]=\"clientForm\">\r\n    <div class=\"grid gap-5 grid-cols-1 md:grid-cols-2 lg:grid-cols-3 mt-8\">\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"document-type-select\" class=\"text-base font-normal text-[#67757c]\">\r\n          Tipo de documento <span class=\"text-danger\">*</span>\r\n        </label>\r\n\r\n        <ng-select\r\n          class=\"ng-select-sm mt-2 self-stretch\"\r\n          labelForId=\"document-type-select\"\r\n          placeholder=\"Seleccione tipo de documento\"\r\n          formControlName=\"documentType\"\r\n          [loading]=\"statusOfFetchDocumentTypes() === 'loading'\"\r\n          [typeahead]=\"subjectToSearchDocumentType$\"\r\n          [class.is-invalid]=\"documentTypeControl.invalid && documentTypeControl.touched\"\r\n          [compareWith]=\"compareWithId\"\r\n          bindLabel=\"name\"\r\n        >\r\n          @for (documentType of documentTypes(); track documentType._id) {\r\n            <ng-option [value]=\"documentType\">\r\n              {{ documentType.name }}\r\n            </ng-option>\r\n          }\r\n        </ng-select>\r\n\r\n        @if (documentTypeControl.invalid && documentTypeControl.touched) {\r\n          <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n            {{ documentTypeControl.errors | cbmErrorTranslate }}\r\n          </div>\r\n        }\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label\r\n          for=\"document-number-input\"\r\n          class=\"text-base font-normal text-[#67757c]\"\r\n          cbmCharacterCounter\r\n          [control]=\"documentNumberControl\"\r\n          [maxChars]=\"15\"\r\n        >\r\n          Número de documento <span class=\"text-danger\">*</span>\r\n        </label>\r\n\r\n        <div class=\"flex mt-2 self-stretch rounded overflow-hidden\">\r\n          <input\r\n            type=\"text\"\r\n            id=\"document-number-input\"\r\n            class=\"form-control form-control-sm flex-grow\"\r\n            aria-required=\"true\"\r\n            placeholder=\"Ej. 1734567895\"\r\n            formControlName=\"documentNumber\"\r\n            cbmTextInput\r\n            transform=\"uppercase\"\r\n            [pattern]=\"getDocumentNumberPattern()\"\r\n            [maxTextLength]=\"getDocumentNumberMaxLength()\"\r\n            [ngClass]=\"{\r\n              '!rounded-r-none':\r\n                documentTypeControl.value?.code === DOCUMENT_TYPES_CODES.CEDULA ||\r\n                documentTypeControl.value?.code === DOCUMENT_TYPES_CODES.RUC\r\n            }\"\r\n            [class.is-invalid]=\"documentNumberControl.invalid && documentNumberControl.touched\"\r\n            maxlength=\"15\"\r\n          />\r\n\r\n          @if (\r\n            documentTypeControl.value?.code === DOCUMENT_TYPES_CODES.CEDULA ||\r\n            documentTypeControl.value?.code === DOCUMENT_TYPES_CODES.RUC\r\n          ) {\r\n            <button\r\n              class=\"outline-none px-3 bg-light-info text-info hover:bg-info hover:text-white active:opacity-90 flex justify-center items-center gap-2 text-xs font-medium transition-colors disabled:pointer-events-none disabled:opacity-70 flex-shrink-0\"\r\n              type=\"button\"\r\n              [disabled]=\"\r\n                documentNumberControl.invalid || statusOfExtractClientData() === 'loading'\r\n              \"\r\n              (click)=\"extractClientData()\"\r\n            >\r\n              @if (statusOfExtractClientData() === \"loading\") {\r\n                <div role=\"status\">\r\n                  <svg\r\n                    aria-hidden=\"true\"\r\n                    class=\"size-4 text-gray-400 animate-spin fill-white\"\r\n                    viewBox=\"0 0 100 101\"\r\n                    fill=\"none\"\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                  >\r\n                    <path\r\n                      d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\r\n                      fill=\"currentColor\"\r\n                    />\r\n                    <path\r\n                      d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\r\n                      fill=\"currentFill\"\r\n                    />\r\n                  </svg>\r\n                  <span class=\"sr-only\">Loading...</span>\r\n                </div>\r\n              } @else {\r\n                <svg\r\n                  viewBox=\"0 0 24 24\"\r\n                  fill=\"none\"\r\n                  xmlns=\"http://www.w3.org/2000/svg\"\r\n                  class=\"size-4\"\r\n                >\r\n                  <path\r\n                    opacity=\"0.3\"\r\n                    d=\"M19 15C20.7 15 22 13.7 22 12C22 10.3 20.7 9 19 9C18.9 9 18.9 9 18.8 9C18.9 8.7 19 8.3 19 8C19 6.3 17.7 5 16 5C15.4 5 14.8 5.2 14.3 5.5C13.4 4 11.8 3 10 3C7.2 3 5 5.2 5 8C5 8.3 5 8.7 5.1 9H5C3.3 9 2 10.3 2 12C2 13.7 3.3 15 5 15H19Z\"\r\n                    fill=\"currentColor\"\r\n                  ></path>\r\n                  <path\r\n                    d=\"M13 17.4V12C13 11.4 12.6 11 12 11C11.4 11 11 11.4 11 12V17.4H13Z\"\r\n                    fill=\"currentColor\"\r\n                  ></path>\r\n                  <path\r\n                    opacity=\"0.3\"\r\n                    d=\"M8 17.4H16L12.7 20.7C12.3 21.1 11.7 21.1 11.3 20.7L8 17.4Z\"\r\n                    fill=\"currentColor\"\r\n                  ></path>\r\n                </svg>\r\n              }\r\n\r\n              Extraer datos\r\n            </button>\r\n          }\r\n        </div>\r\n\r\n        @if (documentNumberControl.invalid && documentNumberControl.touched) {\r\n          <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n            {{\r\n              documentNumberControl.errors\r\n                | cbmErrorTranslate: { pattern: \"Número de documento inválido\" }\r\n            }}\r\n          </div>\r\n        }\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label\r\n          for=\"business-name-input\"\r\n          class=\"text-base font-normal text-[#67757c]\"\r\n          cbmCharacterCounter\r\n          [control]=\"businessNameControl\"\r\n          [maxChars]=\"350\"\r\n        >\r\n          @if (\r\n            documentTypeControl.value?.code === DOCUMENT_TYPES_CODES.CEDULA ||\r\n            documentTypeControl.value?.code === DOCUMENT_TYPES_CODES.PASAPORTE\r\n          ) {\r\n            Apellidos y nombres\r\n          } @else {\r\n            Razón social\r\n          }\r\n          <span class=\"text-danger\">*</span>\r\n        </label>\r\n\r\n        <input\r\n          type=\"text\"\r\n          id=\"business-name-input\"\r\n          class=\"form-control form-control-sm mt-2 self-stretch\"\r\n          aria-required=\"true\"\r\n          placeholder=\"PEREZ JUAN\"\r\n          formControlName=\"businessName\"\r\n          cbmTextInput\r\n          transform=\"uppercase\"\r\n          [class.is-invalid]=\"businessNameControl.invalid && businessNameControl.touched\"\r\n          maxlength=\"350\"\r\n        />\r\n\r\n        @if (businessNameControl.invalid && businessNameControl.touched) {\r\n          <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n            {{ businessNameControl.errors | cbmErrorTranslate }}\r\n          </div>\r\n        }\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label\r\n          for=\"tradename-input\"\r\n          class=\"text-base font-normal text-[#67757c]\"\r\n          cbmCharacterCounter\r\n          [control]=\"tradenameControl\"\r\n          [maxChars]=\"350\"\r\n        >\r\n          Nombre comercial\r\n\r\n          <span class=\"text-danger\">*</span>\r\n        </label>\r\n\r\n        <input\r\n          type=\"text\"\r\n          id=\"tradename-input\"\r\n          class=\"form-control form-control-sm mt-2 self-stretch\"\r\n          aria-required=\"true\"\r\n          placeholder=\"JUAN PEREZ\"\r\n          formControlName=\"tradename\"\r\n          cbmTextInput\r\n          transform=\"uppercase\"\r\n          [class.is-invalid]=\"tradenameControl.invalid && tradenameControl.touched\"\r\n          maxlength=\"350\"\r\n        />\r\n\r\n        @if (tradenameControl.invalid && tradenameControl.touched) {\r\n          <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n            {{ tradenameControl.errors | cbmErrorTranslate }}\r\n          </div>\r\n        }\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start md:col-span-2\">\r\n        <label for=\"\" class=\"text-base font-normal text-[#67757c]\">\r\n          Categoría <span class=\"text-danger\">*</span>\r\n        </label>\r\n\r\n        <cbm-tree-select\r\n          class=\"mt-2 self-stretch\"\r\n          [options]=\"categories()\"\r\n          formControlName=\"category\"\r\n          placeholder=\"Seleccione una categoría\"\r\n          [loading]=\"statusOfFetchCategories() === 'loading'\"\r\n          [compareWith]=\"compareWithId\"\r\n          [invalid]=\"categoryControl.invalid && categoryControl.touched\"\r\n          [isSmall]=\"true\"\r\n          [typeahead]=\"subjectToSearchCategory$\"\r\n        ></cbm-tree-select>\r\n\r\n        @if (categoryControl.invalid && categoryControl.touched) {\r\n          <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n            {{ categoryControl.errors | cbmErrorTranslate }}\r\n          </div>\r\n        }\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label\r\n          for=\"address-input\"\r\n          class=\"text-base font-normal text-[#67757c]\"\r\n          cbmCharacterCounter\r\n          [control]=\"addressControl\"\r\n          [maxChars]=\"250\"\r\n        >\r\n          Dirección <span class=\"text-danger\">*</span>\r\n        </label>\r\n\r\n        <input\r\n          type=\"text\"\r\n          id=\"address-input\"\r\n          class=\"form-control form-control-sm mt-2 self-stretch\"\r\n          aria-required=\"true\"\r\n          placeholder=\"AV. AMAZONAS NRO. 1234\"\r\n          formControlName=\"address\"\r\n          cbmTextInput\r\n          transform=\"uppercase\"\r\n          [class.is-invalid]=\"addressControl.invalid && addressControl.touched\"\r\n          maxlength=\"250\"\r\n        />\r\n\r\n        @if (addressControl.invalid && addressControl.touched) {\r\n          <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n            {{ addressControl.errors | cbmErrorTranslate }}\r\n          </div>\r\n        }\r\n      </div>\r\n\r\n      <!-- <div class=\"flex flex-col items-start\">\r\n        <label for=\"address-input\" class=\"text-base font-normal text-[#67757c]\"> Celular </label>\r\n\r\n        <label\r\n          class=\"inline-flex items-center cursor-pointer has-[:disabled]:opacity-50 has-[:disabled]:pointer-events-none mt-2\"\r\n        >\r\n          <input type=\"checkbox\" formControlName=\"hasCellphone\" class=\"sr-only peer\" />\r\n          <div\r\n            class=\"relative w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-light-info rounded-full peer peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-info\"\r\n          ></div>\r\n          <span class=\"ms-3 text-base font-normal text-[#54667a]\">NO/SI</span>\r\n        </label>\r\n      </div> -->\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"address-input\" class=\"text-base font-normal text-[#67757c]\"> Celular </label>\r\n        <div class=\"flex items-center pt-3\">\r\n          <div class=\"flex items-center mb-4\">\r\n            <input\r\n              id=\"default-radio-1\"\r\n              formControlName=\"hasCellphone\"\r\n              type=\"radio\"\r\n              [value]=\"false\"\r\n              name=\"hasCellphone\"\r\n              class=\"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 dark:bg-gray-700 dark:border-gray-600\"\r\n            />\r\n            <label\r\n              for=\"default-radio-1\"\r\n              class=\"ms-2 text-sm font-normal text-gray-900 dark:text-gray-300 mr-2\"\r\n              >NO</label\r\n            >\r\n          </div>\r\n          <div class=\"flex items-center mb-4\">\r\n            <input\r\n              checked\r\n              id=\"default-radio-2\"\r\n              type=\"radio\"\r\n              formControlName=\"hasCellphone\"\r\n              [value]=\"true\"\r\n              name=\"hasCellphone\"\r\n              class=\"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 dark:bg-gray-700 dark:border-gray-600\"\r\n            />\r\n            <label\r\n              for=\"default-radio-2\"\r\n              class=\"ms-2 text-sm font-normal text-gray-900 dark:text-gray-300\"\r\n              >SI</label\r\n            >\r\n          </div>\r\n        </div>\r\n      </div>\r\n      @if (hasCellphoneControl.value) {\r\n        <div class=\"flex flex-col items-start\">\r\n          <label for=\"phone-code-select\" class=\"text-base font-normal text-[#67757c]\">\r\n            Código de celular <span class=\"text-danger\">*</span>\r\n          </label>\r\n\r\n          <ng-select\r\n            class=\"ng-select-sm mt-2 self-stretch\"\r\n            labelForId=\"phone-code-select\"\r\n            placeholder=\"Seleccione código\"\r\n            formControlName=\"phoneCode\"\r\n            [loading]=\"statusOfFetchCountryCodes() === 'loading'\"\r\n            [class.is-invalid]=\"phoneCodeControl.invalid && phoneCodeControl.touched\"\r\n            bindLabel=\"phone_code\"\r\n          >\r\n            @for (countryCode of countryCodes(); track countryCode._id) {\r\n              <ng-option [value]=\"countryCode.phone_code\">\r\n                <i class=\"flag-icon flag-icon-{{ countryCode.code?.toLowerCase() }}\"></i>\r\n                <span class=\"ml-2\"> {{ countryCode.name }} +{{ countryCode.phone_code }} </span>\r\n              </ng-option>\r\n            }\r\n          </ng-select>\r\n\r\n          @if (phoneCodeControl.invalid && phoneCodeControl.touched) {\r\n            <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n              {{ phoneCodeControl.errors | cbmErrorTranslate }}\r\n            </div>\r\n          }\r\n        </div>\r\n\r\n        <div class=\"flex flex-col items-start\">\r\n          <label\r\n            for=\"cellphone-input\"\r\n            class=\"text-base font-normal flex-shrink-0 flex items-center\"\r\n            cbmCharacterCounter\r\n            [control]=\"cellphoneControl\"\r\n            [maxChars]=\"15\"\r\n          >\r\n            Número de celular <span class=\"text-danger\">*</span>\r\n\r\n            <div class=\"flex gap-2 items-center text-[#67757c]\">\r\n              @if (phoneCodeControl.value === \"593\") {\r\n                <span\r\n                  class=\"cursor-help ml-2\"\r\n                  cbmTooltip=\"Ingrese 10 dígitos\"\r\n                  tooltipPosition=\"above\"\r\n                >\r\n                  <svg\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                    viewBox=\"0 0 512 512\"\r\n                    class=\"size-4\"\r\n                    fill=\"currentColor\"\r\n                  >\r\n                    <path\r\n                      d=\"M504 256c0 137-111 248-248 248S8 393 8 256C8 119.1 119 8 256 8s248 111.1 248 248zM262.7 90c-54.5 0-89.3 23-116.5 63.8-3.5 5.3-2.4 12.4 2.7 16.3l34.7 26.3c5.2 3.9 12.6 3 16.7-2.1 17.9-22.7 30.1-35.8 57.3-35.8 20.4 0 45.7 13.1 45.7 33 0 15-12.4 22.7-32.5 34C247.1 238.5 216 254.9 216 296v4c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-1.3c0-28.5 83.2-29.6 83.2-106.7 0-58-60.2-102-116.5-102zM256 338c-25.4 0-46 20.6-46 46 0 25.4 20.6 46 46 46s46-20.6 46-46c0-25.4-20.6-46-46-46z\"\r\n                    />\r\n                  </svg>\r\n                </span>\r\n              }\r\n            </div>\r\n          </label>\r\n\r\n          <input\r\n            type=\"text\"\r\n            id=\"cellphone-input\"\r\n            class=\"form-control form-control-sm mt-2 self-stretch\"\r\n            aria-required=\"true\"\r\n            placeholder=\"0991234567\"\r\n            formControlName=\"cellphone\"\r\n            cbmNumberInput\r\n            pattern=\"^\\d*$\"\r\n            maxlength=\"15\"\r\n            [class.is-invalid]=\"cellphoneControl.invalid && cellphoneControl.touched\"\r\n          />\r\n          @if (cellphoneControl.invalid && cellphoneControl.touched) {\r\n            <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n              {{\r\n                cellphoneControl.errors\r\n                  | cbmErrorTranslate: { pattern: \"Número de celular inválido\" }\r\n              }}\r\n            </div>\r\n          }\r\n        </div>\r\n      }\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label\r\n          for=\"conventionalTelephone-input\"\r\n          class=\"text-base font-normal flex-shrink-0\"\r\n          cbmCharacterCounter\r\n          [control]=\"clientForm.controls.conventionalTelephone\"\r\n          [maxChars]=\"15\"\r\n        >\r\n          Teléfono convencional\r\n        </label>\r\n\r\n        <input\r\n          type=\"text\"\r\n          id=\"conventionalTelephone-input\"\r\n          class=\"form-control form-control-sm mt-2 self-stretch\"\r\n          aria-required=\"true\"\r\n          placeholder=\"(0XX) XXXX-XXXX\"\r\n          [formControl]=\"clientForm.controls.conventionalTelephone\"\r\n          cbmTextInput\r\n          [class.is-invalid]=\"\r\n            clientForm.controls.conventionalTelephone.invalid &&\r\n            clientForm.controls.conventionalTelephone.touched\r\n          \"\r\n          maxlength=\"15\"\r\n          (input)=\"onInputConventionalPhone($event)\"\r\n        />\r\n\r\n        @if (\r\n          clientForm.controls.conventionalTelephone.invalid &&\r\n          clientForm.controls.conventionalTelephone.touched\r\n        ) {\r\n          <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n            {{\r\n              clientForm.controls.conventionalTelephone.errors\r\n                | cbmErrorTranslate: { pattern: \"Teléfono convencional inválido\" }\r\n            }}\r\n          </div>\r\n        }\r\n      </div>\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <div class=\"flex gap-2 items-center text-[#67757c]\">\r\n          <label for=\"email-input\" class=\"text-base font-normal flex-shrink-0\">\r\n            Correos electrónicos <span class=\"text-danger\">*</span>\r\n          </label>\r\n\r\n          <span\r\n            class=\"cursor-help\"\r\n            cbmTooltip=\"Presione Enter para agregar otro correo electrónico\"\r\n            tooltipPosition=\"above\"\r\n          >\r\n            <svg\r\n              xmlns=\"http://www.w3.org/2000/svg\"\r\n              viewBox=\"0 0 512 512\"\r\n              class=\"size-4\"\r\n              fill=\"currentColor\"\r\n            >\r\n              <path\r\n                d=\"M504 256c0 137-111 248-248 248S8 393 8 256C8 119.1 119 8 256 8s248 111.1 248 248zM262.7 90c-54.5 0-89.3 23-116.5 63.8-3.5 5.3-2.4 12.4 2.7 16.3l34.7 26.3c5.2 3.9 12.6 3 16.7-2.1 17.9-22.7 30.1-35.8 57.3-35.8 20.4 0 45.7 13.1 45.7 33 0 15-12.4 22.7-32.5 34C247.1 238.5 216 254.9 216 296v4c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-1.3c0-28.5 83.2-29.6 83.2-106.7 0-58-60.2-102-116.5-102zM256 338c-25.4 0-46 20.6-46 46 0 25.4 20.6 46 46 46s46-20.6 46-46c0-25.4-20.6-46-46-46z\"\r\n              />\r\n            </svg>\r\n          </span>\r\n        </div>\r\n\r\n        <div\r\n          class=\"self-stretch mt-2 rounded py-0.5 px-2 h-[29.69px] text-sm border transition-colors font-normal overflow-x-auto flex items-center gap-1\"\r\n          [ngClass]=\"{\r\n            'border-danger':\r\n              (emailControl.invalid && emailControl.touched) ||\r\n              (emailsControl.invalid && emailsControl.touched),\r\n            'border-[#e9ecef]':\r\n              !isEmailInputFocused() &&\r\n              !(\r\n                (emailControl.invalid && emailControl.touched) ||\r\n                (emailsControl.invalid && emailsControl.touched)\r\n              ),\r\n            'border-[rgba(0,0,0,0.25)]':\r\n              isEmailInputFocused() &&\r\n              !(\r\n                (emailControl.invalid && emailControl.touched) ||\r\n                (emailsControl.invalid && emailsControl.touched)\r\n              ),\r\n            'pointer-events-none bg-[#e9ecef]': emailControl.disabled,\r\n            'bg-white': emailControl.enabled\r\n          }\"\r\n          cbmHorizontalOverflowShadow\r\n        >\r\n          @if (emailsControl.value?.length) {\r\n            @for (email of emailsControl.value; track email) {\r\n              <span class=\"py-0.5 px-3 rounded-full bg-light-info text-info flex-shrink-0\">\r\n                {{ email }}\r\n\r\n                <button\r\n                  class=\"text-secondary bg-white p-0.5 rounded-full outline-none ml-1 border border-light-secondary\"\r\n                  type=\"button\"\r\n                  (click)=\"removeEmail(email)\"\r\n                >\r\n                  <svg\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                    viewBox=\"0 0 24 24\"\r\n                    fill=\"none\"\r\n                    stroke=\"currentColor\"\r\n                    stroke-width=\"2\"\r\n                    stroke-linecap=\"round\"\r\n                    stroke-linejoin=\"round\"\r\n                    class=\"size-2\"\r\n                  >\r\n                    <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n                    <path d=\"M18 6l-12 12\" />\r\n                    <path d=\"M6 6l12 12\" />\r\n                  </svg>\r\n                </button>\r\n              </span>\r\n            }\r\n          }\r\n\r\n          <input\r\n            type=\"text\"\r\n            id=\"email-input\"\r\n            placeholder=\"user@email.com\"\r\n            formControlName=\"email\"\r\n            class=\"text-[#54667a] outline-none bg-transparent border-none flex-grow field-sizing-content\"\r\n            (keydown)=\"onEmailKeyDown($event)\"\r\n            (blur)=\"onEmailBlur(); isEmailInputFocused.set(false)\"\r\n            (focus)=\"isEmailInputFocused.set(true)\"\r\n          />\r\n        </div>\r\n\r\n        @if (\r\n          (emailControl.invalid && emailControl.touched) ||\r\n          (emailsControl.invalid && emailsControl.touched)\r\n        ) {\r\n          <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n            {{\r\n              emailControl.errors ?? emailsControl.errors\r\n                | cbmErrorTranslate: { pattern: \"Correo electrónico inválido\" }\r\n            }}\r\n          </div>\r\n        }\r\n      </div>\r\n\r\n      @if (!clientId()) {\r\n        <div class=\"flex flex-col items-start\">\r\n          <label for=\"seller-select\" class=\"text-base font-normal text-[#67757c]\">\r\n            Vendedor <span class=\"text-danger\">*</span>\r\n          </label>\r\n\r\n          <ng-select\r\n            class=\"ng-select-sm mt-2 self-stretch\"\r\n            labelForId=\"seller-select\"\r\n            placeholder=\"Seleccione vendedor\"\r\n            formControlName=\"seller\"\r\n            [loading]=\"statusOfFetchSellers() === 'loading'\"\r\n            [typeahead]=\"subjectToSearchSeller$\"\r\n            [class.is-invalid]=\"sellerControl.invalid && sellerControl.touched\"\r\n            [compareWith]=\"compareWithId\"\r\n            bindLabel=\"full_name\"\r\n          >\r\n            @for (seller of sellers(); track seller._id) {\r\n              <ng-option [value]=\"seller\">\r\n                <span\r\n                  class=\"badge bg-light-info text-info fw-bold fs-3 me-1\"\r\n                  style=\"border-radius: 10%; padding-left: 5px\"\r\n                >\r\n                  {{ seller.identification_number }}\r\n                </span>\r\n                {{ seller.full_name }}\r\n              </ng-option>\r\n            }\r\n          </ng-select>\r\n\r\n          @if (sellerControl.invalid && sellerControl.touched) {\r\n            <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n              {{ sellerControl.errors | cbmErrorTranslate }}\r\n            </div>\r\n          }\r\n        </div>\r\n\r\n        <div class=\"flex flex-col items-start\">\r\n          <label for=\"price-list-select\" class=\"text-base font-normal text-[#67757c]\">\r\n            Lista de precios <span class=\"text-danger\">*</span>\r\n          </label>\r\n\r\n          <ng-select\r\n            class=\"ng-select-sm mt-2 self-stretch\"\r\n            labelForId=\"price-list-select\"\r\n            placeholder=\"Seleccione lista de precios\"\r\n            formControlName=\"priceList\"\r\n            [loading]=\"statusOfFetchPriceLists() === 'loading'\"\r\n            [typeahead]=\"subjectToSearchPriceList$\"\r\n            [class.is-invalid]=\"priceListControl.invalid && priceListControl.touched\"\r\n            [compareWith]=\"compareWithId\"\r\n            bindLabel=\"name\"\r\n          >\r\n            @for (priceList of priceLists(); track priceList._id) {\r\n              <ng-option [value]=\"priceList\">\r\n                {{ priceList.name }}\r\n              </ng-option>\r\n            }\r\n          </ng-select>\r\n\r\n          @if (priceListControl.invalid && priceListControl.touched) {\r\n            <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n              {{ priceListControl.errors | cbmErrorTranslate }}\r\n            </div>\r\n          }\r\n        </div>\r\n\r\n        <div class=\"flex flex-col items-start\">\r\n          <label for=\"price-list-select\" class=\"text-base font-normal text-[#67757c]\">\r\n            Tarifa\r\n          </label>\r\n          <ng-select\r\n            class=\"ng-select-sm mt-2 self-stretch\"\r\n            labelForId=\"price-list-select\"\r\n            placeholder=\"Seleccione una tarifa\"\r\n            [formControl]=\"clientForm.controls.rate\"\r\n            [loading]=\"statusOfFetchRate() === 'loading'\"\r\n            [typeahead]=\"subjectToSearchRate$\"\r\n            [class.is-invalid]=\"\r\n              clientForm.controls.rate.invalid && clientForm.controls.rate.touched\r\n            \"\r\n            [compareWith]=\"compareWithId\"\r\n            bindLabel=\"name\"\r\n            [virtualScroll]=\"true\"\r\n            (scrollToEnd)=\"(subjectToSearchRate$)\"\r\n          >\r\n            @for (rate of rateOptions(); track rate._id) {\r\n              <ng-option [value]=\"rate\">\r\n                <span\r\n                  class=\"badge bg-light-info text-info fw-bold fs-3 me-1\"\r\n                  style=\"border-radius: 10%; padding-left: 5px\"\r\n                >\r\n                  {{ rate.code || \"No registrado\" }}\r\n                </span>\r\n                {{ rate.name }}\r\n              </ng-option>\r\n            }\r\n          </ng-select>\r\n\r\n          @if (clientForm.controls.rate.invalid && clientForm.controls.rate.touched) {\r\n            <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n              {{ clientForm.controls.rate.errors | cbmErrorTranslate }}\r\n            </div>\r\n          }\r\n        </div>\r\n      }\r\n\r\n      <div class=\"flex flex-col items-start\">\r\n        <label for=\"profession-select\" class=\"text-base font-normal text-[#67757c]\">\r\n          Profesión\r\n        </label>\r\n\r\n        <ng-select\r\n          class=\"ng-select-sm mt-2 self-stretch\"\r\n          labelForId=\"profession-select\"\r\n          placeholder=\"Seleccione tipo de profesión\"\r\n          formControlName=\"profession\"\r\n          [loading]=\"statusOfFetProfession() === 'loading'\"\r\n          [typeahead]=\"subjectToSearchProfessionType$\"\r\n          [class.is-invalid]=\"professionControl.invalid && professionControl.touched\"\r\n          [compareWith]=\"compareWithId\"\r\n          bindLabel=\"name\"\r\n        >\r\n          @for (profession of professions(); track profession._id) {\r\n            <ng-option [value]=\"profession\">\r\n              {{ profession.description }}\r\n            </ng-option>\r\n          }\r\n        </ng-select>\r\n\r\n        @if (professionControl.invalid && professionControl.touched) {\r\n          <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n            {{ professionControl.errors | cbmErrorTranslate }}\r\n          </div>\r\n        }\r\n      </div>\r\n      <div class=\"flex flex-col items-start md:col-span-2 lg:col-span-3\">\r\n        <label\r\n          for=\"economic-activity-textarea\"\r\n          class=\"text-base font-normal text-[#67757c]\"\r\n          cbmCharacterCounter\r\n          [control]=\"economicActivityControl\"\r\n          [onlyCount]=\"true\"\r\n        >\r\n          Actividad económica\r\n        </label>\r\n\r\n        <textarea\r\n          id=\"economic-activity-textarea\"\r\n          class=\"form-control form-control-sm mt-2 self-stretch field-sizing-content resize-none\"\r\n          placeholder=\"Venta de ropa\"\r\n          formControlName=\"economicActivity\"\r\n          cbmTextInput\r\n          [class.is-invalid]=\"economicActivityControl.invalid && economicActivityControl.touched\"\r\n        ></textarea>\r\n\r\n        @if (economicActivityControl.invalid && economicActivityControl.touched) {\r\n          <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n            {{ economicActivityControl.errors | cbmErrorTranslate }}\r\n          </div>\r\n        }\r\n      </div>\r\n    </div>\r\n\r\n    @if (!clientId()) {\r\n      <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 mt-4\">\r\n        <div class=\"flex flex-col items-start col-span-full\">\r\n          <label\r\n            class=\"inline-flex items-center cursor-pointer has-[:disabled]:opacity-50 has-[:disabled]:pointer-events-none\"\r\n          >\r\n            <input type=\"checkbox\" formControlName=\"creditApplication\" class=\"sr-only peer\" />\r\n            <div\r\n              class=\"relative w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-light-info rounded-full peer peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-info\"\r\n            ></div>\r\n            <span class=\"ms-3 text-base font-normal text-[#54667a]\"> Solicitar crédito </span>\r\n          </label>\r\n        </div>\r\n\r\n        @if (creditApplicationControl.value) {\r\n          <div class=\"flex flex-col items-start mt-4\">\r\n            <div class=\"flex gap-2 items-center text-[#67757c]\">\r\n              <label\r\n                for=\"request-credit-value-input\"\r\n                class=\"text-base font-normal flex-shrink-0\"\r\n                cbmCharacterCounter\r\n                [control]=\"requestCreditControl\"\r\n                [maxChars]=\"15\"\r\n              >\r\n                Monto solicitado\r\n                <span class=\"text-danger\">*</span>\r\n              </label>\r\n            </div>\r\n\r\n            <input\r\n              type=\"text\"\r\n              id=\"request-credit-value-input\"\r\n              class=\"form-control form-control-sm mt-2 self-stretch\"\r\n              aria-required=\"true\"\r\n              placeholder=\"1000.00\"\r\n              formControlName=\"requestCredit\"\r\n              cbmNumberInput\r\n              #requestCreditInput\r\n              (click)=\"requestCreditInput.select()\"\r\n              [min]=\"0.01\"\r\n              [negative]=\"false\"\r\n              [maxDecimalPlaces]=\"2\"\r\n              [zeroOnBlur]=\"true\"\r\n              [class.is-invalid]=\"requestCreditControl.invalid && requestCreditControl.touched\"\r\n              maxlength=\"15\"\r\n            />\r\n\r\n            @if (requestCreditControl.invalid && requestCreditControl.touched) {\r\n              <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n                {{ requestCreditControl.errors | cbmErrorTranslate }}\r\n              </div>\r\n            }\r\n          </div>\r\n\r\n          <div class=\"flex flex-col items-start mt-4 col-span-full\">\r\n            <label\r\n              for=\"economic-activity-textarea\"\r\n              class=\"text-base font-normal text-[#67757c]\"\r\n              cbmCharacterCounter\r\n              [control]=\"clientForm.controls.reasonOfCredit\"\r\n              [maxChars]=\"250\"\r\n            >\r\n              Motivo\r\n              <span class=\"text-danger\">*</span>\r\n            </label>\r\n\r\n            <textarea\r\n              id=\"economic-activity-textarea\"\r\n              class=\"form-control form-control-sm mt-2 self-stretch field-sizing-content resize-none\"\r\n              placeholder=\"Motivo por el cual solicita el crédito\"\r\n              [formControl]=\"clientForm.controls.reasonOfCredit\"\r\n              cbmTextInput\r\n              transform=\"uppercase\"\r\n              [class.is-invalid]=\"\r\n                clientForm.controls.reasonOfCredit.invalid &&\r\n                clientForm.controls.reasonOfCredit.touched\r\n              \"\r\n              maxlength=\"250\"\r\n            ></textarea>\r\n\r\n            @if (\r\n              clientForm.controls.reasonOfCredit.invalid &&\r\n              clientForm.controls.reasonOfCredit.touched\r\n            ) {\r\n              <div class=\"invalid-feedback\" [@fadeInOutAnimation]>\r\n                {{ clientForm.controls.reasonOfCredit.errors | cbmErrorTranslate }}\r\n              </div>\r\n            }\r\n          </div>\r\n        }\r\n      </div>\r\n    }\r\n\r\n    <p class=\"mt-5 text-muted text-base font-light\">\r\n      Los campos marcados con <span class=\"text-danger\">*</span> son obligatorios\r\n    </p>\r\n\r\n    <div class=\"flex flex-wrap justify-center gap-2 mt-5\">\r\n      @if (isFromOrigin() && !clientId()) {\r\n        <div class=\"relative\">\r\n          <button\r\n            class=\"outline-none py-1.5 px-6 text-white rounded-full flex justify-center items-center gap-2 font-medium bg-info hover:bg-[#409ae9] transition-colors flex-grow sm:flex-grow-0 disabled:pointer-events-none disabled:opacity-70\"\r\n            id=\"more-actions-button\"\r\n            (click)=\"onDropdownMenuClick($event, dropdownMenu)\"\r\n            [disabled]=\"statusOfSaveClient() === 'loading' || statusOfUpdateClient() === 'loading'\"\r\n          >\r\n            <svg\r\n              class=\"w-5 h-5 text-gray-400 fill-white\"\r\n              focusable=\"false\"\r\n              aria-hidden=\"true\"\r\n              viewBox=\"0 0 24 24\"\r\n            >\r\n              <path\r\n                d=\"M16.59 7.58 10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8\"\r\n              ></path>\r\n            </svg>\r\n            <span>Agregar</span>\r\n            @if (statusOfSaveClient() === \"loading\" || statusOfUpdateClient() === \"loading\") {\r\n              <div role=\"status\">\r\n                <svg\r\n                  aria-hidden=\"true\"\r\n                  class=\"w-5 h-5 text-gray-400 animate-spin fill-white\"\r\n                  viewBox=\"0 0 100 101\"\r\n                  fill=\"none\"\r\n                  xmlns=\"http://www.w3.org/2000/svg\"\r\n                >\r\n                  <path\r\n                    d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\r\n                    fill=\"currentColor\"\r\n                  />\r\n                  <path\r\n                    d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\r\n                    fill=\"currentFill\"\r\n                  />\r\n                </svg>\r\n                <span class=\"sr-only\">Loading...</span>\r\n              </div>\r\n            } @else {\r\n              <svg\r\n                class=\"w-2.5 h-2.5 ms-2\"\r\n                aria-hidden=\"true\"\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n                fill=\"none\"\r\n                viewBox=\"0 0 10 6\"\r\n              >\r\n                <path\r\n                  stroke=\"currentColor\"\r\n                  stroke-linecap=\"round\"\r\n                  stroke-linejoin=\"round\"\r\n                  stroke-width=\"2\"\r\n                  d=\"m1 1 4 4 4-4\"\r\n                />\r\n              </svg>\r\n            }\r\n          </button>\r\n\r\n          <ul\r\n            class=\"z-10 absolute bg-white divide-y divide-gray-50 text-[#67757c] rounded-md shadow-lg py-2 text-sm -translate-x-[5%] transition-transform translate-y-2 invisible opacity-0 w-44\"\r\n            [attr.aria-labelledby]=\"'more-actions-button'\"\r\n            #dropdownMenu\r\n          >\r\n            <li>\r\n              <button\r\n                class=\"flex px-4 py-2 hover:bg-gray-100 w-full gap-2 items-center\"\r\n                (click)=\"validateSaveClientForm('new')\"\r\n              >\r\n                <span>Agregar y nuevo</span>\r\n              </button>\r\n            </li>\r\n            <li>\r\n              <button\r\n                class=\"flex px-4 py-2 hover:bg-gray-100 w-full gap-2 items-center\"\r\n                (click)=\"validateSaveClientForm('view')\"\r\n              >\r\n                <span>Agregar y ver</span>\r\n              </button>\r\n            </li>\r\n            <li>\r\n              <button\r\n                class=\"flex px-4 py-2 hover:bg-gray-100 w-full gap-2 items-center\"\r\n                (click)=\"validateSaveClientForm('close')\"\r\n              >\r\n                <span>Agregar y cerrar</span>\r\n              </button>\r\n            </li>\r\n          </ul>\r\n        </div>\r\n      } @else if (isFromOrigin() && clientId()) {\r\n        <button\r\n          type=\"button\"\r\n          (click)=\"validateUpdateClientForm()\"\r\n          class=\"outline-none py-2 px-6 text-white rounded-full flex justify-center items-center gap-2 font-medium bg-info hover:bg-[#409ae9] transition-colors flex-grow sm:flex-grow-0 disabled:pointer-events-none disabled:opacity-70\"\r\n          [disabled]=\"statusOfSaveClient() === 'loading' || statusOfUpdateClient() === 'loading'\"\r\n        >\r\n          @if (statusOfSaveClient() === \"loading\" || statusOfUpdateClient() === \"loading\") {\r\n            <div role=\"status\">\r\n              <svg\r\n                aria-hidden=\"true\"\r\n                class=\"w-5 h-5 text-gray-400 animate-spin fill-white\"\r\n                viewBox=\"0 0 100 101\"\r\n                fill=\"none\"\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n              >\r\n                <path\r\n                  d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\r\n                  fill=\"currentColor\"\r\n                />\r\n                <path\r\n                  d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\r\n                  fill=\"currentFill\"\r\n                />\r\n              </svg>\r\n              <span class=\"sr-only\">Loading...</span>\r\n            </div>\r\n          } @else {\r\n            <svg\r\n              xmlns=\"http://www.w3.org/2000/svg\"\r\n              width=\"20\"\r\n              height=\"20\"\r\n              viewBox=\"0 0 24 24\"\r\n              fill=\"none\"\r\n              stroke=\"currentColor\"\r\n              stroke-width=\"2\"\r\n              stroke-linecap=\"round\"\r\n              stroke-linejoin=\"round\"\r\n            >\r\n              <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n              <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" />\r\n              <path d=\"M9 12l2 2l4 -4\" />\r\n            </svg>\r\n          }\r\n\r\n          Actualizar\r\n        </button>\r\n      } @else {\r\n        <button\r\n          type=\"button\"\r\n          (click)=\"validateSaveClientForm('close')\"\r\n          class=\"outline-none py-2 px-6 text-white rounded-full flex justify-center items-center gap-2 font-medium bg-info hover:bg-[#409ae9] transition-colors flex-grow sm:flex-grow-0 disabled:pointer-events-none disabled:opacity-70\"\r\n          [disabled]=\"statusOfSaveClient() === 'loading' || statusOfUpdateClient() === 'loading'\"\r\n        >\r\n          @if (statusOfSaveClient() === \"loading\" || statusOfUpdateClient() === \"loading\") {\r\n            <div role=\"status\">\r\n              <svg\r\n                aria-hidden=\"true\"\r\n                class=\"w-5 h-5 text-gray-400 animate-spin fill-white\"\r\n                viewBox=\"0 0 100 101\"\r\n                fill=\"none\"\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n              >\r\n                <path\r\n                  d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\r\n                  fill=\"currentColor\"\r\n                />\r\n                <path\r\n                  d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\r\n                  fill=\"currentFill\"\r\n                />\r\n              </svg>\r\n              <span class=\"sr-only\">Loading...</span>\r\n            </div>\r\n          } @else {\r\n            <svg\r\n              xmlns=\"http://www.w3.org/2000/svg\"\r\n              width=\"20\"\r\n              height=\"20\"\r\n              viewBox=\"0 0 24 24\"\r\n              fill=\"none\"\r\n              stroke=\"currentColor\"\r\n              stroke-width=\"2\"\r\n              stroke-linecap=\"round\"\r\n              stroke-linejoin=\"round\"\r\n            >\r\n              <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n              <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" />\r\n              <path d=\"M9 12l2 2l4 -4\" />\r\n            </svg>\r\n          }\r\n\r\n          Agregar\r\n        </button>\r\n      }\r\n\r\n      <button\r\n        type=\"button\"\r\n        class=\"outline-none py-2 px-6 text-secondary rounded-full flex justify-center items-center gap-2 font-medium bg-light-secondary hover:bg-secondary hover:text-white transition-colors flex-grow sm:flex-grow-0 disabled:pointer-events-none disabled:opacity-70\"\r\n        (click)=\"onCancelPress()\"\r\n        [disabled]=\"statusOfSaveClient() === 'loading' || statusOfUpdateClient() === 'loading'\"\r\n      >\r\n        <svg\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          width=\"20\"\r\n          height=\"20\"\r\n          viewBox=\"0 0 24 24\"\r\n          fill=\"none\"\r\n          stroke=\"currentColor\"\r\n          stroke-width=\"2\"\r\n          stroke-linecap=\"round\"\r\n          stroke-linejoin=\"round\"\r\n        >\r\n          <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n          <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" />\r\n          <path d=\"M10 10l4 4m0 -4l-4 4\" />\r\n        </svg>\r\n\r\n        Cancelar\r\n      </button>\r\n    </div>\r\n  </form>\r\n}\r\n<cbm-confirmation-modal\r\n  #confirmationModal\r\n  (confirm)=\"clientId() ? updateClient() : onModalConfirm()\"\r\n  (cancel)=\"onCancelModalConfirm()\"\r\n/>\r\n","/*\r\n * Public API Surface of add-client\r\n */\r\n\r\nexport * from './lib/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}