@cbm-common/cbm-types 0.0.330 → 0.0.332

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.
@@ -163,7 +163,6 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
163
163
  cellphoneValidator(): ValidatorFn;
164
164
  noWhitespaceValidator(): ValidatorFn;
165
165
  asyncDocumentNumberValidator(): AsyncValidatorFn;
166
- validarRucCedula(numero: string): boolean;
167
166
  documentNumberValidator(): ValidatorFn;
168
167
  emailsValidator(): ValidatorFn;
169
168
  makeSubscriptions(): void;
@@ -121,7 +121,6 @@ export declare class CbmAddProviderComponent {
121
121
  }, b: {
122
122
  _id: string;
123
123
  }): boolean;
124
- validarRucCedula(numero: string): boolean;
125
124
  documentNumberValidator(): ValidatorFn;
126
125
  asyncDocumentNumberValidator(): AsyncValidatorFn;
127
126
  noWhitespaceValidator(): ValidatorFn;
@@ -1,4 +1,16 @@
1
1
  import { AbstractControl, ValidationErrors, ValidatorFn } from "@angular/forms";
2
+ export type TipoContribuyente = 'natural' | 'publica' | 'privada' | 'desconocido';
3
+ export interface RucValidationResult {
4
+ /** true si la estructura (formato) del RUC es correcta */
5
+ valido: boolean;
6
+ ruc: string;
7
+ provincia: string;
8
+ esProvinciaExterior: boolean;
9
+ tipo: TipoContribuyente;
10
+ establecimiento: string;
11
+ esMatriz: boolean;
12
+ motivo?: string;
13
+ }
2
14
  export declare class CbmValidators {
3
15
  static textFull(control: AbstractControl): ValidationErrors | null;
4
16
  static emailArray(control: AbstractControl): ValidationErrors | null;
@@ -9,4 +21,24 @@ export declare class CbmValidators {
9
21
  static maxDate(date: Date | {
10
22
  dateFn: (control: AbstractControl) => string;
11
23
  }): ValidatorFn;
24
+ /** Valida cédula ecuatoriana (10 dígitos) con Módulo 10 */
25
+ static validarCedula(cedula: string): boolean;
26
+ /**
27
+ * Validación puramente estructural de un RUC ecuatoriano (13 dígitos).
28
+ *
29
+ * Alcance: solo valida FORMATO / ESTRUCTURA, no determina si el RUC "existe" o está activo.
30
+ * No se usa dígito verificador como criterio de rechazo para sociedades/entidades públicas,
31
+ * porque el SRI no garantiza que el algoritmo Módulo 11 aplique a todos los RUC vigentes.
32
+ * Para persona natural sí se valida la cédula base con Módulo 10.
33
+ *
34
+ * Reglas:
35
+ * - Longitud: 13 dígitos numéricos.
36
+ * - Provincia (dígitos 1-2): 01-24 o 30 (exterior).
37
+ * - Tipo (dígito 3): 0-5 → persona natural, 6 → pública, 9 → privada, 7/8 → inválido.
38
+ * - Persona natural: los primeros 10 dígitos deben ser cédula válida (Módulo 10),
39
+ * y el establecimiento (últimos 3) no puede ser "000".
40
+ * - Entidad pública: establecimiento (últimos 4) no puede ser "0000".
41
+ * - Sociedad privada: establecimiento (últimos 3) no puede ser "000".
42
+ */
43
+ static validarRuc(ruc: string): RucValidationResult;
12
44
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cbm-common/cbm-types",
3
- "version": "0.0.330",
3
+ "version": "0.0.332",
4
4
  "main": "index.js",
5
5
  "types": "public-api.d.ts",
6
6
  "exports": {
@@ -1,92 +0,0 @@
1
- export declare namespace CbmSalesPendingDocumentModel {
2
- type TTypeEstablishment = 'matrix' | 'branch';
3
- export interface ListParams {
4
- page: number;
5
- size: number;
6
- document_number?: string;
7
- date_end?: number;
8
- date_begin?: number;
9
- client_id?: string;
10
- client_branch_id?: string;
11
- type?: string;
12
- }
13
- export interface ListResponse {
14
- success: boolean;
15
- pageNum: number;
16
- pageSize: number;
17
- pages: number;
18
- total: number;
19
- totales: ListResponse.totales;
20
- items: ListResponse.Item[];
21
- }
22
- export namespace ListResponse {
23
- interface Item {
24
- _id: string;
25
- created_at: number;
26
- document_nomenclature: string;
27
- document_number: string;
28
- document_emission_point_number: string;
29
- document_sequence: string;
30
- new_document_number: string;
31
- balance: number;
32
- client_id: string;
33
- client_payment_deadline?: number;
34
- client_credit_limit?: number;
35
- client_business_name: string;
36
- client_trade_name: string;
37
- client_document_number: string;
38
- client_credit_application: boolean;
39
- client_price_list_id: string;
40
- client_price_list_code: string;
41
- client_price_list_name: string;
42
- client_document_type_id: string;
43
- client_document_type_name: string;
44
- client_document_type_code: string;
45
- client_category_id: string;
46
- client_category_name: string;
47
- client_branch_id: string;
48
- client_branch_code: string;
49
- client_branch_name: string;
50
- client_branch_address: string;
51
- client_branch_email: string[];
52
- client_branch_phone_code?: string;
53
- client_branch_phone?: string;
54
- client_branch_cellphone?: string;
55
- client_branch_type_establishment: `${TTypeEstablishment}`;
56
- client_branch_province_id?: string;
57
- client_branch_province_code?: string;
58
- client_branch_province_name?: string;
59
- client_branch_canton_id?: string;
60
- client_branch_canton_code?: string;
61
- client_branch_canton_name?: string;
62
- client_branch_parish_id?: string;
63
- client_branch_parish_code?: string;
64
- client_branch_parish_name?: string;
65
- client_branch_longitude?: number;
66
- client_branch_latitude?: number;
67
- client_branch_seller_id: string;
68
- client_branch_seller_identification_number: string;
69
- client_branch_seller_full_name: string;
70
- client_branch_seller_address: string;
71
- client_branch_seller_email: string[];
72
- client_branch_seller_cellphone: string;
73
- client_branch_contact_id?: string;
74
- client_branch_contact_identification_number?: string;
75
- client_branch_contact_full_name?: string;
76
- client_branch_contact_cellphone?: string;
77
- client_branch_contact_email?: string[];
78
- date: number;
79
- type: string;
80
- checked?: boolean;
81
- }
82
- interface totales {
83
- total_retention?: number;
84
- total_down_payment?: number;
85
- total_credit_note?: number;
86
- total_initial_balance_retention?: number;
87
- total_initial_balance_down_payment?: number;
88
- total_initial_balance_credit_note?: number;
89
- }
90
- }
91
- export {};
92
- }
@@ -1,8 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { CbmSalesPendingDocumentModel } from '../models/sales-pending-document.domain.model';
3
- import { ICbmSalesPendingDocumentRepository } from '../../infrastructure/repositories/sales-pending-document.infrastructure.repository';
4
- export declare class CbmSalesPendingDocumentRepository implements ICbmSalesPendingDocumentRepository {
5
- private service;
6
- constructor(service: ICbmSalesPendingDocumentRepository);
7
- list(params: CbmSalesPendingDocumentModel.ListParams): Observable<CbmSalesPendingDocumentModel.ListResponse>;
8
- }
@@ -1,5 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { CbmSalesPendingDocumentModel } from '../../domain/models/sales-pending-document.domain.model';
3
- export interface ICbmSalesPendingDocumentRepository {
4
- list(params: CbmSalesPendingDocumentModel.ListParams): Observable<CbmSalesPendingDocumentModel.ListResponse>;
5
- }
@@ -1,9 +0,0 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { Observable } from 'rxjs';
3
- import { CbmSalesPendingDocumentModel } from '../../domain/models/sales-pending-document.domain.model';
4
- export declare class CbmSalesPendingDocumentService {
5
- private http;
6
- constructor(http: HttpClient);
7
- private readonly url;
8
- list(params: CbmSalesPendingDocumentModel.ListParams): Observable<CbmSalesPendingDocumentModel.ListResponse>;
9
- }