@cbm-common/cbm-types 0.0.349 → 0.0.352

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
- import { AfterViewInit, DestroyRef, ElementRef, OnInit } from '@angular/core';
2
- import { AsyncValidatorFn, FormControl, FormGroup, ValidatorFn } from '@angular/forms';
1
+ import { AfterViewInit, DestroyRef, ElementRef, OnDestroy, OnInit } from '@angular/core';
2
+ import { AsyncValidatorFn, FormArray, FormControl, FormGroup, ValidatorFn } from '@angular/forms';
3
+ import { NgSelectComponent } from '@ng-select/ng-select';
3
4
  import { Subject } from 'rxjs';
4
5
  import { ListService, PaginatedListService } from '@cbm-common/data-access';
5
6
  import { CbmClientGroupModel } from '../../domain/models/client-group.domain.model';
@@ -30,8 +31,23 @@ import { CbmPersonTypeUAFERepository } from '../../domain/repositories/person-ty
30
31
  import { GeneralDomainService } from '../../domain/services/general.domain.service';
31
32
  import { CbmEconomicActivitiesDomainRepository } from '../../domain/repositories/economic-activities-uafe.domain.repository';
32
33
  import { CbmEconomicActivitiesDomainModel } from '../../domain/models/economic-activities-uafe.domain.model';
34
+ import { CbmTerritorialOrganizationRepository } from '../../domain/repositories/territorial-organization.domain.repository';
35
+ import { CbmTerritorialOrganizationModel } from '../../domain/models/territorial-organization.domain.model';
36
+ import { CbmSourceIncomeDomainRepository } from '../../domain/repositories/source-income.domain.repository';
37
+ import { CbmSourceIncomeModel } from '../../domain/models/source-income.model';
38
+ import { CbmCountryCodeModel } from '../../domain/models/country-code.domain.model';
39
+ import { ModalMapComponent } from '../modal-map/modal-map.component';
33
40
  export type TSaveOptions = 'new' | 'view' | 'close';
34
- export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
41
+ export type TContactRow = FormGroup<{
42
+ _id: FormControl<string | null>;
43
+ identification_number: FormControl<string | null>;
44
+ full_name: FormControl<string | null>;
45
+ phone_code: FormControl<CbmCountryCodeModel.ListResponse.Data | null>;
46
+ cellphone: FormControl<string | null>;
47
+ email: FormControl<string | null>;
48
+ statusOfGetCi: FormControl<TStatus>;
49
+ }>;
50
+ export declare class CbmAddClientComponent implements OnInit, AfterViewInit, OnDestroy {
35
51
  private destroyRef;
36
52
  private documentTypeRepository;
37
53
  private notificationService;
@@ -48,8 +64,17 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
48
64
  private personTypeUAFERepository;
49
65
  private readonly accountValidatorsDomainService;
50
66
  private readonly generalService;
51
- constructor(destroyRef: DestroyRef, documentTypeRepository: CbmDocumentTypeDomainRepository, notificationService: CbmNotificationService, billingRepository: CbmBillingDomainRepository, countryCodeRepository: CbmCountryCodeDomainRepository, sellerRepository: CbmSellerDomainRepository, priceListRepository: CbmPriceListDomainRepository, clientGroupRepository: CbmClientGroupRepository, clientRepository: CbmClientDomainRepository, generalSettingsPartnersRepository: CbmGeneralSettingsPartnersDomainRepository, rateRepository: CbmRateDomainRepository, economicActivityRepository: CbmEconomicActivitiesDomainRepository, settingsProfessionsRepository: CbmSettingsProfessionsDomainRepository, personTypeUAFERepository: CbmPersonTypeUAFERepository, accountValidatorsDomainService: AccountValidatorsDomainService, generalService: GeneralDomainService);
67
+ private readonly territorialOrganizationRepository;
68
+ private readonly sourceIncomeRepository;
69
+ constructor(destroyRef: DestroyRef, documentTypeRepository: CbmDocumentTypeDomainRepository, notificationService: CbmNotificationService, billingRepository: CbmBillingDomainRepository, countryCodeRepository: CbmCountryCodeDomainRepository, sellerRepository: CbmSellerDomainRepository, priceListRepository: CbmPriceListDomainRepository, clientGroupRepository: CbmClientGroupRepository, clientRepository: CbmClientDomainRepository, generalSettingsPartnersRepository: CbmGeneralSettingsPartnersDomainRepository, rateRepository: CbmRateDomainRepository, economicActivityRepository: CbmEconomicActivitiesDomainRepository, settingsProfessionsRepository: CbmSettingsProfessionsDomainRepository, personTypeUAFERepository: CbmPersonTypeUAFERepository, accountValidatorsDomainService: AccountValidatorsDomainService, generalService: GeneralDomainService, territorialOrganizationRepository: CbmTerritorialOrganizationRepository, sourceIncomeRepository: CbmSourceIncomeDomainRepository);
70
+ ngOnDestroy(): void;
52
71
  dropdownMenuRef: import("@angular/core").Signal<ElementRef<HTMLUListElement> | undefined>;
72
+ contactDetailsTableContainerRef: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
73
+ contactDetailsTableRef: import("@angular/core").Signal<ElementRef<HTMLTableElement> | undefined>;
74
+ contactNgSelectsRefs: import("@angular/core").Signal<readonly NgSelectComponent[]>;
75
+ mapModal: import("@angular/core").Signal<ModalMapComponent | undefined>;
76
+ contactsResizeObserver?: ResizeObserver;
77
+ contactsMutationObserver?: MutationObserver;
53
78
  clientId: import("@angular/core").InputSignal<string | undefined>;
54
79
  isFromOrigin: import("@angular/core").InputSignal<boolean | undefined>;
55
80
  document_type_code: import("@angular/core").InputSignal<string | undefined>;
@@ -78,11 +103,15 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
78
103
  subjectToSearchCategory$: Subject<string>;
79
104
  sellers$: ListService<CbmSellerModel.ListResponse, CbmSellerModel.ListParams, CbmSellerModel.ListResponse.Data[]>;
80
105
  priceLists$: ListService<CbmPriceListModel.ListResponse, CbmPriceListModel.ListParams, CbmPriceListModel.ListResponse.Data[]>;
81
- countryCodes$: ListService<import("../../domain/models/country-code.domain.model").CbmCountryCodeModel.ListResponse, import("../../domain/models/country-code.domain.model").CbmCountryCodeModel.ListParams, import("../../domain/models/country-code.domain.model").CbmCountryCodeModel.ListResponse.Data[]>;
106
+ countryCodes$: ListService<CbmCountryCodeModel.ListResponse, CbmCountryCodeModel.ListParams, CbmCountryCodeModel.ListResponse.Data[]>;
82
107
  subjectClasses$: PaginatedListService<CbmPersonTypeUAFEModel.ListResponse, CbmPersonTypeUAFEModel.ListParams, CbmPersonTypeUAFEModel.ListResponse.Item[]>;
83
108
  economicActivity$: PaginatedListService<CbmEconomicActivitiesDomainModel.ListResponse, CbmEconomicActivitiesDomainModel.ListParams, CbmEconomicActivitiesDomainModel.ListResponse.Data[]>;
84
109
  rate$: PaginatedListService<CbmRateModel.ListResponse, CbmRateModel.ListParams, CbmRateModel.ListResponse.Item[]>;
85
110
  professions$: PaginatedListService<CbmSettingsProfessionsModel.ListResponse, CbmSettingsProfessionsModel.ListParams, CbmSettingsProfessionsModel.ListResponse.Item[]>;
111
+ provinces$: ListService<CbmTerritorialOrganizationModel.ListProvincesResponse, CbmTerritorialOrganizationModel.ListProvincesParams, CbmTerritorialOrganizationModel.ListProvincesResponse.Data[]>;
112
+ cantons$: ListService<CbmTerritorialOrganizationModel.ListCantonsResponse, CbmTerritorialOrganizationModel.ListCantonsParams, CbmTerritorialOrganizationModel.ListCantonsResponse.Data[]>;
113
+ parishes$: ListService<CbmTerritorialOrganizationModel.ListParishesResponse, CbmTerritorialOrganizationModel.ListParishesParams, CbmTerritorialOrganizationModel.ListParishesResponse.Data[]>;
114
+ sourceIncomes$: PaginatedListService<CbmSourceIncomeModel.ListResponse, CbmSourceIncomeModel.ListParams, CbmSourceIncomeModel.ListResponse.Data[]>;
86
115
  defaultDocumentNumber: string | null;
87
116
  DOCUMENT_TYPES_CODES: {
88
117
  readonly RUC: "04";
@@ -94,6 +123,8 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
94
123
  saveOption: import("@angular/core").WritableSignal<TSaveOptions | null>;
95
124
  readonly carDelear: import("@angular/core").Signal<boolean>;
96
125
  readonly pms: import("@angular/core").Signal<boolean>;
126
+ readonly additionalInformation: import("@angular/core").Signal<boolean>;
127
+ readonly showAdditionalInformation: import("@angular/core").Signal<boolean>;
97
128
  modalConfirmRef: import("@angular/core").Signal<CbmModalConfirmComponent | undefined>;
98
129
  clientForm: FormGroup<{
99
130
  documentType: FormControl<CbmDocumentTypeModel.ListResponse.Data | null>;
@@ -120,6 +151,24 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
120
151
  profession: FormControl<CbmSettingsProfessionsModel.ListResponse.Item | null>;
121
152
  carDealerValue: FormControl<string | null>;
122
153
  }>;
154
+ territorialForm: FormGroup<{
155
+ province: FormControl<CbmTerritorialOrganizationModel.ListProvincesResponse.Data | null>;
156
+ canton: FormControl<CbmTerritorialOrganizationModel.ListCantonsResponse.Data | null>;
157
+ parish: FormControl<CbmTerritorialOrganizationModel.ListParishesResponse.Data | null>;
158
+ latitude: FormControl<string | null>;
159
+ longitude: FormControl<string | null>;
160
+ }>;
161
+ contactForm: FormArray<TContactRow>;
162
+ additionalDataForm: FormGroup<{
163
+ gender: FormControl<string | null>;
164
+ maritalStatus: FormControl<string | null>;
165
+ birthdate: FormControl<string | null>;
166
+ nationality: FormControl<CbmCountryCodeModel.ListResponse.Data | null>;
167
+ commentary: FormControl<string | null>;
168
+ }>;
169
+ dinardapForm: FormGroup<{
170
+ sourceIncome: FormControl<CbmSourceIncomeModel.ListResponse.Data | null>;
171
+ }>;
123
172
  ngOnInit(): void;
124
173
  ngAfterViewInit(): void;
125
174
  documentListener: () => void;
@@ -155,6 +204,10 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
155
204
  }, b: {
156
205
  _id: string;
157
206
  }): boolean;
207
+ setGeographicalData(coords: {
208
+ lat: number;
209
+ lng: number;
210
+ }): void;
158
211
  cellphoneValidator(): ValidatorFn;
159
212
  noWhitespaceValidator(): ValidatorFn;
160
213
  asyncDocumentNumberValidator(): AsyncValidatorFn;
@@ -175,6 +228,18 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
175
228
  private checkRelatedDocument;
176
229
  fetchCategories(searchTerm?: string): void;
177
230
  removeEmail(email: string): void;
231
+ private buildContactRow;
232
+ addNewRowToContact(): void;
233
+ deleteRowToContact(index: number): void;
234
+ getCi(detail: TContactRow): void;
235
+ /**
236
+ * Solo al agregar y con `additionalInformation()` en `true` (`showAdditionalInformation()`): arma la información de los navs
237
+ * (datos geográficos y datos adicionales como objeto, contactos como array) con el mismo
238
+ * nombre de campo que ya usan sus pantallas reales equivalentes (`geographical-data`,
239
+ * `management`, `branch/contacts`) — pendiente de confirmar con backend que el endpoint de
240
+ * cliente ya acepta este payload extendido.
241
+ */
242
+ private buildAdditionalInformationPayload;
178
243
  saveClient(callback: (newClientId: string) => void): void;
179
244
  addClientAndNew(): void;
180
245
  addClientAndView(): void;
@@ -186,4 +251,5 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
186
251
  validateUpdateClientForm(): Promise<void>;
187
252
  onCancelModalConfirm(): void;
188
253
  onCancelPress(): void;
254
+ private resetNavForms;
189
255
  }
@@ -1,17 +1,23 @@
1
- import { DestroyRef } from '@angular/core';
2
- import { AsyncValidatorFn, FormControl, FormGroup, ValidatorFn } from '@angular/forms';
1
+ import { DestroyRef, ElementRef, OnDestroy, OnInit } from '@angular/core';
2
+ import { AsyncValidatorFn, FormArray, FormControl, FormGroup, ValidatorFn } from '@angular/forms';
3
+ import { NgSelectComponent } from '@ng-select/ng-select';
3
4
  import { Subject } from 'rxjs';
5
+ import { CbmBankModel } from '../../domain/models/bank.domain.model';
4
6
  import { CbmCountryCodeModel } from '../../domain/models/country-code.domain.model';
5
7
  import { CbmDocumentTypeModel } from '../../domain/models/document-type.model';
6
8
  import { CbmProviderGroupModel } from '../../domain/models/provider-group.domain.model';
7
9
  import { CbmProviderModel } from '../../domain/models/provider.domain.model';
10
+ import { CbmTerritorialOrganizationModel } from '../../domain/models/territorial-organization.domain.model';
11
+ import { CbmBankRepository } from '../../domain/repositories/bank.domain.repository';
8
12
  import { CbmBillingDomainRepository } from '../../domain/repositories/billing.domain.repository';
9
13
  import { CbmCountryCodeDomainRepository } from '../../domain/repositories/country-code.domain.repository';
10
14
  import { CbmDocumentTypeDomainRepository } from '../../domain/repositories/document-type.domain.repository';
11
15
  import { CbmProviderGroupDomainRepository } from '../../domain/repositories/provider-group.domain.repository';
12
16
  import { CbmProviderRepository } from '../../domain/repositories/provider.domain.repository';
17
+ import { CbmTerritorialOrganizationRepository } from '../../domain/repositories/territorial-organization.domain.repository';
18
+ import { GeneralDomainService } from '../../domain/services/general.domain.service';
13
19
  import { CbmNotificationService } from '../../remotes/services.remote';
14
- import { TSaveOptions } from '../add-client/add-client';
20
+ import { TContactRow, TSaveOptions } from '../add-client/add-client';
15
21
  import { ConfirmationModal } from '../confirmation-modal/confirmation-modal';
16
22
  import { CbmTreeSelect } from '../tree-select/types';
17
23
  import { TStatus } from './types';
@@ -22,8 +28,9 @@ import { CbmGeneralSettingsPartnersModel } from '../../domain/models/general-set
22
28
  import { CbmGeneralSettingsPartnersDomainRepository } from '../../domain/repositories/general-settings-partners.domain.repository';
23
29
  import { CbmEconomicActivitiesDomainModel } from '../../domain/models/economic-activities-uafe.domain.model';
24
30
  import { CbmEconomicActivitiesDomainRepository } from '../../domain/repositories/economic-activities-uafe.domain.repository';
25
- import { PaginatedListService } from '@cbm-common/data-access';
26
- export declare class CbmAddProviderComponent {
31
+ import { ListService, PaginatedListService } from '@cbm-common/data-access';
32
+ import { ModalMapComponent } from '../modal-map/modal-map.component';
33
+ export declare class CbmAddProviderComponent implements OnInit, OnDestroy {
27
34
  private providerRepository;
28
35
  private providerGroupRepository;
29
36
  private documentTypeRepository;
@@ -34,10 +41,20 @@ export declare class CbmAddProviderComponent {
34
41
  private destroyRef;
35
42
  private readonly accountValidatorsDomainService;
36
43
  private readonly generalSettingsPartnersRepository;
37
- constructor(providerRepository: CbmProviderRepository, providerGroupRepository: CbmProviderGroupDomainRepository, documentTypeRepository: CbmDocumentTypeDomainRepository, countryCodeRepository: CbmCountryCodeDomainRepository, economicActivityRepository: CbmEconomicActivitiesDomainRepository, billingRepository: CbmBillingDomainRepository, notificationService: CbmNotificationService, destroyRef: DestroyRef, accountValidatorsDomainService: AccountValidatorsDomainService, generalSettingsPartnersRepository: CbmGeneralSettingsPartnersDomainRepository);
44
+ private readonly territorialOrganizationRepository;
45
+ private readonly bankRepository;
46
+ private readonly generalService;
47
+ constructor(providerRepository: CbmProviderRepository, providerGroupRepository: CbmProviderGroupDomainRepository, documentTypeRepository: CbmDocumentTypeDomainRepository, countryCodeRepository: CbmCountryCodeDomainRepository, economicActivityRepository: CbmEconomicActivitiesDomainRepository, billingRepository: CbmBillingDomainRepository, notificationService: CbmNotificationService, destroyRef: DestroyRef, accountValidatorsDomainService: AccountValidatorsDomainService, generalSettingsPartnersRepository: CbmGeneralSettingsPartnersDomainRepository, territorialOrganizationRepository: CbmTerritorialOrganizationRepository, bankRepository: CbmBankRepository, generalService: GeneralDomainService);
48
+ ngOnDestroy(): void;
38
49
  generalSettingsConfiguration: import("@angular/core").WritableSignal<CbmGeneralSettingsPartnersModel.ParametersListResponse.Data | null>;
39
50
  confirmationModalRef: import("@angular/core").Signal<ConfirmationModal | undefined>;
40
51
  modalConfirmRef: import("@angular/core").Signal<CbmModalConfirmComponent | undefined>;
52
+ contactDetailsTableContainerRef: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
53
+ contactDetailsTableRef: import("@angular/core").Signal<ElementRef<HTMLTableElement> | undefined>;
54
+ contactNgSelectsRefs: import("@angular/core").Signal<readonly NgSelectComponent[]>;
55
+ mapModal: import("@angular/core").Signal<ModalMapComponent | undefined>;
56
+ contactsResizeObserver?: ResizeObserver;
57
+ contactsMutationObserver?: MutationObserver;
41
58
  providerId: import("@angular/core").InputSignal<string | undefined>;
42
59
  componentConfig: import("@angular/core").InputSignal<CbmAddProviderModel.ComponentConfig>;
43
60
  resetForm: import("@angular/core").InputSignal<boolean>;
@@ -61,6 +78,8 @@ export declare class CbmAddProviderComponent {
61
78
  statusOfExtractProviderData: import("@angular/core").WritableSignal<TStatus>;
62
79
  statusOfFetchGeneralSettingsConfiguration: import("@angular/core").WritableSignal<TStatus>;
63
80
  readonly carDelear: import("@angular/core").Signal<boolean>;
81
+ readonly additionalInformation: import("@angular/core").Signal<boolean>;
82
+ readonly showAdditionalInformation: import("@angular/core").Signal<boolean>;
64
83
  subjectToSearchDocumentType$: Subject<string>;
65
84
  subjectToSearchCategory$: Subject<string>;
66
85
  defaultDocumentNumber: string | null;
@@ -73,7 +92,6 @@ export declare class CbmAddProviderComponent {
73
92
  };
74
93
  SUBJECT_CLASSES: CbmAddProviderModel.SubjectClass[];
75
94
  previousDealerConfiguration: import("@angular/core").WritableSignal<boolean>;
76
- documentNumberDisplay: FormControl<string | null>;
77
95
  providerForm: FormGroup<{
78
96
  documentType: FormControl<CbmDocumentTypeModel.ListResponse.Data | null>;
79
97
  documentNumber: FormControl<string | null>;
@@ -93,8 +111,69 @@ export declare class CbmAddProviderComponent {
93
111
  }>;
94
112
  subjectClass: import("@angular/core").Signal<CbmAddProviderModel.SubjectClass | null>;
95
113
  filteredDocumentTypes: import("@angular/core").Signal<CbmDocumentTypeModel.ListResponse.Data[]>;
114
+ territorialForm: FormGroup<{
115
+ province: FormControl<CbmTerritorialOrganizationModel.ListProvincesResponse.Data | null>;
116
+ canton: FormControl<CbmTerritorialOrganizationModel.ListCantonsResponse.Data | null>;
117
+ parish: FormControl<CbmTerritorialOrganizationModel.ListParishesResponse.Data | null>;
118
+ latitude: FormControl<string | null>;
119
+ longitude: FormControl<string | null>;
120
+ }>;
121
+ contactForm: FormArray<TContactRow>;
122
+ additionalDataForm: FormGroup<{
123
+ phone: FormControl<string | null>;
124
+ observation: FormControl<string | null>;
125
+ }>;
126
+ bankForm: FormGroup<{
127
+ bank: FormControl<CbmBankModel.ListResponse.Item | null>;
128
+ accountType: FormControl<string | null>;
129
+ accountNumber: FormControl<string | null>;
130
+ documentTypePay: FormControl<CbmDocumentTypeModel.ListResponse.Data | null>;
131
+ documentNumberPay: FormControl<string | null>;
132
+ }>;
133
+ othersForm: FormGroup<{
134
+ paymentToResident: FormControl<string | null>;
135
+ supplierAbbreviation: FormControl<string | null>;
136
+ foreignTaxRegimeType: FormControl<string | null>;
137
+ paymentCountry: FormControl<CbmCountryCodeModel.ListResponse.Data | null>;
138
+ paymentDestinationCountry: FormControl<CbmCountryCodeModel.ListResponse.Data | null>;
139
+ doubleTaxationTreatyApplies: FormControl<boolean>;
140
+ legalWithholdingApplies: FormControl<boolean>;
141
+ }>;
142
+ foreignTaxRegimes: {
143
+ value: string;
144
+ label: string;
145
+ }[];
146
+ paymentToResidentOptions: {
147
+ value: string;
148
+ label: string;
149
+ }[];
150
+ provinces$: ListService<CbmTerritorialOrganizationModel.ListProvincesResponse, CbmTerritorialOrganizationModel.ListProvincesParams, CbmTerritorialOrganizationModel.ListProvincesResponse.Data[]>;
151
+ cantons$: ListService<CbmTerritorialOrganizationModel.ListCantonsResponse, CbmTerritorialOrganizationModel.ListCantonsParams, CbmTerritorialOrganizationModel.ListCantonsResponse.Data[]>;
152
+ parishes$: ListService<CbmTerritorialOrganizationModel.ListParishesResponse, CbmTerritorialOrganizationModel.ListParishesParams, CbmTerritorialOrganizationModel.ListParishesResponse.Data[]>;
153
+ banks$: PaginatedListService<CbmBankModel.ListResponse, CbmBankModel.ListParams, CbmBankModel.ListResponse.Item[]>;
154
+ documentTypesPay$: ListService<CbmDocumentTypeModel.ListResponse, CbmDocumentTypeModel.ListParams, CbmDocumentTypeModel.ListResponse.Data[]>;
96
155
  economicActivity$: PaginatedListService<CbmEconomicActivitiesDomainModel.ListResponse, CbmEconomicActivitiesDomainModel.ListParams, CbmEconomicActivitiesDomainModel.ListResponse.Data[]>;
97
156
  ngOnInit(): void;
157
+ private makeAdditionalInformationSubscriptions;
158
+ private loadAdditionalInformationCatalogs;
159
+ filterCountryCode: (term: string, item: CbmCountryCodeModel.ListResponse.Data) => boolean;
160
+ setGeographicalData(coords: {
161
+ lat: number;
162
+ lng: number;
163
+ }): void;
164
+ private buildContactRow;
165
+ addNewRowToContact(): void;
166
+ deleteRowToContact(index: number): void;
167
+ getCi(detail: TContactRow): void;
168
+ /**
169
+ * Solo al agregar y con `additionalInformation()` en `true` (`showAdditionalInformation()`): arma la
170
+ * información de los navs con los mismos nombres de campo que mandan sus pantallas reales —
171
+ * `provider/geographical-data` (objeto), `provider/contacts` (arreglo, enviado como `provider_contact`) y
172
+ * `provider/management` (datos adicionales, bancos y otros) — pendiente de confirmar con backend que el
173
+ * endpoint de proveedor ya acepta este payload extendido. Lo que no aplica simplemente no se envía.
174
+ */
175
+ private buildAdditionalInformationPayload;
176
+ private resetNavForms;
98
177
  get documentTypeControl(): FormControl<CbmDocumentTypeModel.ListResponse.Data | null>;
99
178
  get documentNumberControl(): FormControl<string | null>;
100
179
  get categoryControl(): FormControl<CbmProviderGroupModel.ListAsTreeResponse.Category | null>;
@@ -118,6 +197,7 @@ export declare class CbmAddProviderComponent {
118
197
  private isDocumentTypeAllowed;
119
198
  documentNumberValidator(): ValidatorFn;
120
199
  asyncDocumentNumberValidator(): AsyncValidatorFn;
200
+ private checkRelatedDocument;
121
201
  noWhitespaceValidator(): ValidatorFn;
122
202
  emailsValidator(): ValidatorFn;
123
203
  fetchProviderData(): void;
@@ -70,7 +70,7 @@ export declare class ItemListComponent implements OnInit {
70
70
  isSmallScreen: import("@angular/core").WritableSignal<boolean>;
71
71
  sortBy: import("@angular/core").WritableSignal<string | null>;
72
72
  sortOrder: import("@angular/core").WritableSignal<"desc" | "asc">;
73
- sortStockBy: import("@angular/core").WritableSignal<"warehouse" | "general" | "transit" | null>;
73
+ sortStockBy: import("@angular/core").WritableSignal<"general" | "warehouse" | "transit" | null>;
74
74
  withStock: import("@angular/core").Signal<boolean>;
75
75
  withProviderCode: import("@angular/core").Signal<boolean>;
76
76
  excludeFilters: import("@angular/core").Signal<string[]>;
@@ -0,0 +1,21 @@
1
+ import { ChangeDetectorRef, DestroyRef, OnInit } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { INominatimModel } from '../../domain/models/nominatim.domain.model';
4
+ import { NominatimDomainRepository } from '../../domain/repositories/nominatim.domain.repository';
5
+ import { CbmAuthService } from '../../domain/services/auth/auth.service';
6
+ export declare class LocationSearchComponent implements OnInit {
7
+ private readonly destroyRef;
8
+ private readonly changeDetectorRef;
9
+ private readonly nominatimRepository;
10
+ private readonly authService;
11
+ constructor(destroyRef: DestroyRef, changeDetectorRef: ChangeDetectorRef, nominatimRepository: NominatimDomainRepository, authService: CbmAuthService);
12
+ searchControl: FormControl<string>;
13
+ nominatimData: import("@angular/core").WritableSignal<INominatimModel.Response[]>;
14
+ stOfLocation: import("@angular/core").WritableSignal<boolean>;
15
+ address: import("@angular/core").OutputEmitterRef<INominatimModel.Response>;
16
+ ngOnInit(): void;
17
+ private makeSubscriptions;
18
+ reverseAddress(lat: string | number, lon: string | number): Promise<void>;
19
+ clear(): void;
20
+ emitValue(address: INominatimModel.Response): void;
21
+ }
@@ -0,0 +1 @@
1
+ export declare const fadeInOutAnimation: import("@angular/animations").AnimationTriggerMetadata;
@@ -0,0 +1,45 @@
1
+ import { AfterViewInit, DestroyRef, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { CbmNotificationService } from '../../domain/services/notification/notification.service';
4
+ import { GeneralDomainService } from '../../domain/services/general.domain.service';
5
+ import { LeafletjsDomainService } from '../../domain/services/leafletjs.domain.service';
6
+ import { LocationSearchComponent } from '../location-search/location-search.component';
7
+ export declare class ModalMapComponent implements AfterViewInit, OnDestroy {
8
+ private readonly generalService;
9
+ private readonly destroyRef;
10
+ private readonly leafletjsService;
11
+ private readonly notificationService;
12
+ modalId: import("@angular/core").InputSignal<string>;
13
+ origen: 'ver' | 'fijar';
14
+ coordenadasSeleccionadas: EventEmitter<{
15
+ lat: number;
16
+ lng: number;
17
+ }>;
18
+ origenModal: import("@angular/core").WritableSignal<"ver" | "fijar">;
19
+ coordinates: import("@angular/core").InputSignal<{
20
+ latitude?: number | null;
21
+ longitude?: number | null;
22
+ } | null>;
23
+ private destroyMapClick$;
24
+ private modalElement;
25
+ territorialForm: FormGroup<{
26
+ longitude: FormControl<string | null>;
27
+ latitude: FormControl<string | null>;
28
+ }>;
29
+ mapRef: import("@angular/core").Signal<ElementRef<HTMLDivElement>>;
30
+ locationSearchComp: import("@angular/core").Signal<LocationSearchComponent>;
31
+ readonly stOfGeolocation: import("@angular/core").WritableSignal<boolean>;
32
+ constructor(generalService: GeneralDomainService, destroyRef: DestroyRef, leafletjsService: LeafletjsDomainService, notificationService: CbmNotificationService);
33
+ ngAfterViewInit(): void;
34
+ ngOnDestroy(): void;
35
+ private setupInitialCoordinates;
36
+ subObservers(): void;
37
+ get longitudeControl(): FormControl<string | null>;
38
+ get latitudeControl(): FormControl<string | null>;
39
+ openModal(origen: 'ver' | 'fijar'): void;
40
+ onCloseModal(): void;
41
+ setMarkert(latd: string | number, lngd: string | number): void;
42
+ useCurrentLocation(): void;
43
+ onCoords(latd: string | number, lngd: string | number): void;
44
+ onLngClick(lng: string | number, lati: string | number): void;
45
+ }
@@ -14,6 +14,7 @@ export declare namespace CbmGeneralSettingsPartnersModel {
14
14
  updated_user?: string;
15
15
  pms_configuration?: boolean;
16
16
  delear_configuration?: boolean;
17
+ additional_information?: boolean;
17
18
  }
18
19
  }
19
20
  }
@@ -1,5 +1,6 @@
1
1
  export declare namespace CbmHistoryModel {
2
2
  type TValidateItem = 'item' | 'service' | 'kit';
3
+ type TOperationSource = 'web' | 'mcp_internal' | 'mcp_external';
3
4
  interface ListParams {
4
5
  page: number;
5
6
  size: number;
@@ -48,6 +49,7 @@ export declare namespace CbmHistoryModel {
48
49
  response_code: string;
49
50
  event_module_id: string;
50
51
  reason?: string;
52
+ operation_source?: TOperationSource;
51
53
  }
52
54
  }
53
55
  interface ValidatePartnerParams {
@@ -0,0 +1,66 @@
1
+ export declare namespace INominatimModel {
2
+ interface ParamsConfig {
3
+ format: 'json' | 'xml' | 'jsonv2' | 'geojson';
4
+ limit?: number;
5
+ addressdetails?: 0 | 1;
6
+ extratags?: 0 | 1;
7
+ namedetails?: 0 | 1;
8
+ }
9
+ interface Params extends ParamsConfig {
10
+ q: string;
11
+ countrycodes?: string;
12
+ }
13
+ interface ParamsReverse extends ParamsConfig {
14
+ lat: string | number;
15
+ lon: string | number;
16
+ }
17
+ interface Response {
18
+ place_id: number;
19
+ licence: string;
20
+ osm_type: string;
21
+ osm_id: number;
22
+ lat: string;
23
+ lon: string;
24
+ class: string;
25
+ type: string;
26
+ place_rank: number;
27
+ importance: number;
28
+ addresstype: string;
29
+ name: string;
30
+ display_name: string;
31
+ boundingbox: string[];
32
+ }
33
+ interface ReverseResponse {
34
+ place_id: number;
35
+ licence: string;
36
+ osm_type: string;
37
+ osm_id: number;
38
+ lat: string;
39
+ lon: string;
40
+ category: string;
41
+ type: string;
42
+ place_rank: number;
43
+ importance: number;
44
+ addresstype: string;
45
+ name: string;
46
+ display_name: string;
47
+ address: ReverseResponse.Address;
48
+ boundingbox: string[];
49
+ }
50
+ namespace ReverseResponse {
51
+ interface Address {
52
+ amenity: string;
53
+ road: string;
54
+ quarter: string;
55
+ suburb: string;
56
+ city_district: string;
57
+ city: string;
58
+ county: string;
59
+ plot: string;
60
+ 'ISO3166-2-lvl4': string;
61
+ postcode: string;
62
+ country: string;
63
+ country_code: string;
64
+ }
65
+ }
66
+ }
@@ -69,6 +69,7 @@ export declare namespace CbmProviderModel {
69
69
  document_name_pay?: string;
70
70
  foreign_tax_regime_type?: string;
71
71
  payment_to_resident?: string;
72
+ supplier_abbreviation?: string;
72
73
  payment_country_code?: string;
73
74
  payment_country_name?: string;
74
75
  payment_destination_country_code?: string;
@@ -132,6 +133,7 @@ export declare namespace CbmProviderModel {
132
133
  document_name_pay?: string;
133
134
  foreign_tax_regime_type?: string;
134
135
  payment_to_resident?: string;
136
+ supplier_abbreviation?: string;
135
137
  payment_country_code?: string;
136
138
  payment_country_name?: string;
137
139
  payment_destination_country_code?: string;
@@ -272,6 +274,7 @@ export declare namespace CbmProviderModel {
272
274
  double_taxation_treaty_applies?: boolean;
273
275
  legal_withholding_applies?: string;
274
276
  payment_to_resident?: string;
277
+ supplier_abbreviation?: string;
275
278
  is_related_party?: boolean;
276
279
  contacts?: UpdateManagementBody.Contact[];
277
280
  delete_contacts?: string;
@@ -0,0 +1,9 @@
1
+ import { Observable } from 'rxjs';
2
+ import { INominatimModel } from '../models/nominatim.domain.model';
3
+ import { INominatimInfrastructureRepository } from '../../infrastructure/repositories/nominatim.infrastructure.repository';
4
+ export declare class NominatimDomainRepository implements INominatimInfrastructureRepository {
5
+ private readonly nominatimApiService;
6
+ constructor(nominatimApiService: INominatimInfrastructureRepository);
7
+ findSearch(params: INominatimModel.Params): Observable<INominatimModel.Response[]>;
8
+ reverse(params: INominatimModel.ParamsReverse): Observable<INominatimModel.ReverseResponse>;
9
+ }
@@ -0,0 +1,13 @@
1
+ import L from 'leaflet';
2
+ import { Observable } from 'rxjs';
3
+ export declare class LeafletjsDomainService {
4
+ leafletjsMap: L.Map | null;
5
+ marker: Map<string, L.Marker<any>>;
6
+ setMap(htmlDivElement: HTMLDivElement, latd: string | null, lngd: string | null): void;
7
+ setMarker(latd: string | number, lngd: string | number, popupContent?: string): string;
8
+ removeMarker(markerId: string): void;
9
+ removeAllMarker(): void;
10
+ onClick(): Observable<L.LeafletMouseEvent>;
11
+ disableMapInteractions(): void;
12
+ enableMapInteractions(): void;
13
+ }
@@ -20,6 +20,10 @@ export declare namespace CbmAiWebSocketModel {
20
20
  lastSeq: number;
21
21
  events: RunEnvelope[];
22
22
  truncated: boolean;
23
+ /** Epoch ms (servidor) en que empezó la corrida; `finishedAt` solo si ya terminó. */
24
+ startedAt?: number;
25
+ finishedAt?: number;
26
+ conversationId?: string;
23
27
  } | {
24
28
  ok: false;
25
29
  error: string;
@@ -36,4 +40,87 @@ export declare namespace CbmAiWebSocketModel {
36
40
  ok: boolean;
37
41
  runs?: ActiveRun[];
38
42
  }
43
+ /** `mine`: las corridas del propio usuario; `company`: las de toda la empresa (solo con permiso: `canViewAll`). */
44
+ type FlowRunsScope = 'mine' | 'company';
45
+ type FlowRunStatus = 'running' | 'suspended' | 'done' | 'error' | 'rejected' | 'expired' | 'interrupted';
46
+ type FlowRunNodeStatus = 'pending' | 'running' | 'awaiting' | 'done' | 'error' | 'skipped' | 'stopped';
47
+ /** Quién la inició: una persona desde el chat, el programador o la API. */
48
+ type FlowRunOrigin = 'chat' | 'schedule' | 'api';
49
+ interface FlowRunNode {
50
+ id: string;
51
+ name: string;
52
+ status: FlowRunNodeStatus;
53
+ /** Herramientas que consultó el paso (no cuenta `preguntar_usuario`). */
54
+ tools: number;
55
+ startedAt?: number;
56
+ finishedAt?: number;
57
+ }
58
+ /** La corrida espera a una persona: una aprobación (paso pausado) o la respuesta de un formulario del agente. */
59
+ interface FlowRunWaiting {
60
+ kind: 'approval' | 'ask';
61
+ nodeId: string;
62
+ message?: string;
63
+ /** Epoch ms en que el servidor deja de esperar. */
64
+ expiresAt?: number;
65
+ }
66
+ /** Una corrida de flujo con su estado por paso. */
67
+ interface FlowRunView {
68
+ runId: string;
69
+ flowId: string;
70
+ flowName: string;
71
+ status: FlowRunStatus;
72
+ origin: FlowRunOrigin;
73
+ startedAt: number;
74
+ /** Último cambio de la corrida (el de este upsert). */
75
+ updatedAt: number;
76
+ finishedAt?: number;
77
+ /** Tiempo de trabajo (sin esperas) AL MOMENTO del último upsert. */
78
+ durationMs: number;
79
+ /** Tiempo esperando decisiones, acumulado hasta el último upsert. */
80
+ waitedMs: number;
81
+ user: {
82
+ id: string;
83
+ name: string;
84
+ };
85
+ conversationId?: string;
86
+ /** Solo corridas en segundo plano: la corrida de chat que la emite. */
87
+ chatRunId?: string;
88
+ model?: string;
89
+ totalNodes: number;
90
+ executedNodes: number;
91
+ currentNode?: {
92
+ id: string;
93
+ name: string;
94
+ index: number;
95
+ };
96
+ nodes: FlowRunNode[];
97
+ waiting?: FlowRunWaiting;
98
+ error?: {
99
+ nodeId?: string;
100
+ message: string;
101
+ };
102
+ usage?: {
103
+ inputTokens?: number;
104
+ outputTokens?: number;
105
+ totalTokens?: number;
106
+ };
107
+ }
108
+ /** Acuse de `flow-runs:watch`. */
109
+ type FlowRunsWatchAck = {
110
+ ok: true;
111
+ canViewAll: boolean;
112
+ snapshot: FlowRunView[];
113
+ truncated: boolean;
114
+ seq: number;
115
+ } | {
116
+ ok: false;
117
+ error: 'forbidden' | 'invalid-request' | 'unavailable' | string;
118
+ };
119
+ /** `flow-runs:event`: la corrida completa (no un parche). */
120
+ interface FlowRunsEvent {
121
+ scope: FlowRunsScope;
122
+ seq: number;
123
+ type: 'upsert';
124
+ run: FlowRunView;
125
+ }
39
126
  }
@@ -40,6 +40,20 @@ export declare class CbmAiWebSocketService {
40
40
  unwatchRun(runId: string): void;
41
41
  /** Corridas en curso del usuario (retomar al recargar o desde otra pestaña). */
42
42
  activeRuns(): Promise<CbmAiWebSocketModel.ActiveRunsAck>;
43
+ /**
44
+ * Se une a la sala de corridas de flujos del alcance dado y devuelve el snapshot con el `seq` actual. Cada sala (`mine` y
45
+ * `company`) numera sus eventos de forma consecutiva: si un `flow-runs:event` no trae el último `seq` + 1 hay un hueco y
46
+ * hay que volver a llamar a este método (snapshot nuevo); al reconectar el socket también (no existe `afterSeq`). Rechaza con
47
+ * `name === CBM_AI_SOCKET_DISCONNECTED` si el socket no está conectado o se corta mientras espera.
48
+ */
49
+ watchFlowRuns(scope: CbmAiWebSocketModel.FlowRunsScope): Promise<CbmAiWebSocketModel.FlowRunsWatchAck>;
50
+ /** Deja de recibir las corridas de flujos del alcance (no las detiene). */
51
+ unwatchFlowRuns(scope: CbmAiWebSocketModel.FlowRunsScope): void;
52
+ /**
53
+ * Corridas de flujos en vivo de las salas vigiladas (`flow-runs:event`): siempre la corrida completa (`upsert`). No hay evento
54
+ * de baja: una corrida terminada llega con un último upsert (`finishedAt`) y quien consume decide cuánto tiempo la muestra.
55
+ */
56
+ onFlowRunsEvent(): Observable<CbmAiWebSocketModel.FlowRunsEvent>;
43
57
  private request;
44
58
  private rejectPending;
45
59
  private disconnectedError;
@@ -0,0 +1,6 @@
1
+ import { Observable } from 'rxjs';
2
+ import { INominatimModel } from '../../domain/models/nominatim.domain.model';
3
+ export interface INominatimInfrastructureRepository {
4
+ findSearch(params: INominatimModel.Params): Observable<INominatimModel.Response[]>;
5
+ reverse(params: INominatimModel.ParamsReverse): Observable<INominatimModel.ReverseResponse>;
6
+ }
@@ -0,0 +1,11 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { INominatimModel } from '../../domain/models/nominatim.domain.model';
4
+ import { INominatimInfrastructureRepository } from '../repositories/nominatim.infrastructure.repository';
5
+ export declare class NominatimInfrastructureService implements INominatimInfrastructureRepository {
6
+ private readonly httpClient;
7
+ constructor(httpClient: HttpClient);
8
+ private readonly url;
9
+ findSearch(params: INominatimModel.Params): Observable<INominatimModel.Response[]>;
10
+ reverse(params: INominatimModel.ParamsReverse): Observable<INominatimModel.ReverseResponse>;
11
+ }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
- {
2
- "name": "@cbm-common/cbm-types",
3
- "version": "0.0.349",
4
- "main": "index.js",
5
- "types": "public-api.d.ts",
6
- "exports": {
7
- ".": {
8
- "import": "./index.js",
9
- "types": "./public-api.d.ts"
10
- }
11
- }
12
- }
1
+ {
2
+ "name": "@cbm-common/cbm-types",
3
+ "version": "0.0.352",
4
+ "main": "index.js",
5
+ "types": "public-api.d.ts",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./index.js",
9
+ "types": "./public-api.d.ts"
10
+ }
11
+ }
12
+ }