Skip to content

Commit 2ac7729

Browse files
committed
fisrt invoice signed
1 parent 172ebcb commit 2ac7729

9 files changed

Lines changed: 358 additions & 364 deletions

File tree

examples/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ async function main() : Promise<void> {
281281
{
282282
taxCode: "002",
283283
taxTypeCode: "Tasa",
284-
taxRate: 0.160000,
284+
taxRate: "0.160000",
285285
taxFlagCode: "T"
286286
}
287287
]

src/abstractions/fiscalapi-service.interface.ts

Lines changed: 46 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,45 @@ import { AxiosRequestConfig } from 'axios';
22
import { ApiResponse } from '../common/api-response';
33
import { BaseDto } from '../common/base-dto';
44
import { PagedList } from '../common/paged-list';
5+
import { HttpMethod } from '../http/fiscalapi-http-client.interface';
6+
7+
/**
8+
* Opciones para ejecutar una operación
9+
* @template TData - Tipo de datos de entrada
10+
*/
11+
export type OperationOptions<TData = any> = {
12+
/** Ruta o nombre de la operación */
13+
path: string;
14+
/** Datos para la operación (opcional) */
15+
data?: TData;
16+
/** Parámetros de consulta (opcional) */
17+
queryParams?: Record<string, string>;
18+
/** Método HTTP a utilizar */
19+
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
20+
/** Configuración adicional para Axios (opcional) */
21+
config?: AxiosRequestConfig;
22+
};
23+
24+
/**
25+
* Opciones para ejecutar una petición personalizada
26+
* @template TData - Tipo de datos de entrada
27+
*/
28+
export type RequestOptions<TData = any> = {
29+
/** Método HTTP a utilizar */
30+
method: HttpMethod;
31+
/** Ruta adicional (opcional) */
32+
path?: string;
33+
/** ID del recurso (opcional) */
34+
id?: string;
35+
/** Datos para la petición (opcional) */
36+
data?: TData;
37+
/** Parámetros de consulta (opcional) */
38+
queryParams?: Record<string, string>;
39+
/** Configuración adicional para Axios (opcional) */
40+
config?: AxiosRequestConfig;
41+
/** Transformador personalizado para la respuesta (opcional) */
42+
responseTransformer?: <T>(response: any) => T;
43+
};
544

645
/**
746
* Interfaz base para todos los servicios de FiscalAPI
@@ -53,58 +92,15 @@ export interface IFiscalapiService<T extends BaseDto> {
5392
*/
5493
search(searchParams: Record<string, string>): Promise<ApiResponse<PagedList<T>>>;
5594

56-
/**
57-
* Ejecuta una acción personalizada en un recurso
58-
* @param {string} id - ID del recurso
59-
* @param {string} action - Nombre de la acción
60-
* @param {TData} [data] - Datos opcionales para la acción
61-
* @returns {Promise<ApiResponse<TResult>>} Resultado de la acción
62-
* @template TResult - Tipo de resultado esperado
63-
* @template TData - Tipo de datos de entrada
64-
*/
65-
executeAction<TResult, TData>(
66-
id: string,
67-
action: string,
68-
data?: TData
69-
): Promise<ApiResponse<TResult>>;
7095

71-
// /**
72-
// * Ejecuta una operación personalizada en el recurso sin necesidad de un ID específico
73-
// * @param {string} operation - Nombre de la operación
74-
// * @param {TData} data - Datos para la operación
75-
// * @returns {Promise<ApiResponse<TResult>>} Resultado de la operación
76-
// * @template TResult - Tipo de resultado esperado
77-
// * @template TData - Tipo de datos de entrada
78-
// */
79-
// executeOperation<TResult, TData>(
80-
// operation: string,
81-
// data: TData,
82-
// method: 'POST' | 'PUT' | 'DELETE'
83-
// ): Promise<ApiResponse<TResult>>;
84-
8596
/**
86-
* Ejecuta una operación personalizada en el recurso sin necesidad de un ID específico
87-
* @param {OperationOptions<TData>} options - Opciones para la operación
88-
* @returns {Promise<ApiResponse<TResult>>} Resultado de la operación
97+
* Ejecuta una petición HTTP personalizada con máxima flexibilidad
98+
* @param {RequestOptions<TData>} options - Opciones para la petición
99+
* @returns {Promise<ApiResponse<TResult>>} Resultado de la petición
89100
* @template TResult - Tipo de resultado esperado
90101
* @template TData - Tipo de datos de entrada
91102
*/
92-
executeOperation<TResult, TData = any>( options: OperationOptions<TData>): Promise<ApiResponse<TResult>>;
93-
}
94-
95-
/**
96-
* Opciones para ejecutar una operación
97-
* @template TData - Tipo de datos de entrada
98-
*/
99-
export type OperationOptions<TData = any> = {
100-
/** Ruta o nombre de la operación */
101-
path: string;
102-
/** Datos para la operación (opcional) */
103-
data?: TData;
104-
/** Parámetros de consulta (opcional) */
105-
queryParams?: Record<string, string>;
106-
/** Método HTTP a utilizar */
107-
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
108-
/** Configuración adicional para Axios (opcional) */
109-
config?: AxiosRequestConfig;
110-
}
103+
executeRequest<TResult, TData = any>(
104+
options: RequestOptions<TData>
105+
): Promise<ApiResponse<TResult>>;
106+
}

src/http/fiscalapi-http-client.interface.ts

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,26 @@
11
import { AxiosRequestConfig } from 'axios';
22
import { ApiResponse } from '../common/api-response';
33

4+
/**
5+
* Métodos HTTP soportados
6+
*/
7+
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
8+
9+
/**
10+
* Opciones para una petición HTTP genérica
11+
* @template TData - Tipo de datos de entrada (opcional)
12+
*/
13+
export interface RequestOptions<TData = any> {
14+
/** Datos para enviar en el cuerpo de la petición (opcional) */
15+
data?: TData;
16+
/** Parámetros de consulta (query string) (opcional) */
17+
queryParams?: Record<string, string>;
18+
/** Configuración adicional para Axios (opcional) */
19+
config?: AxiosRequestConfig;
20+
/** Transformador de respuesta personalizado (opcional) */
21+
responseTransformer?: <T>(response: any) => T;
22+
}
23+
424
/**
525
* Interfaz para el cliente HTTP de FiscalAPI
626
*/
@@ -55,7 +75,6 @@ export interface IFiscalapiHttpClient {
5575
*/
5676
deleteAsync(endpoint: string, config?: AxiosRequestConfig): Promise<ApiResponse<boolean>>;
5777

58-
5978
/**
6079
* Realiza una petición PATCH a la API
6180
* @param endpoint - Punto final de la API
@@ -68,4 +87,19 @@ export interface IFiscalapiHttpClient {
6887
data: TData,
6988
config?: AxiosRequestConfig
7089
): Promise<ApiResponse<T>>;
90+
91+
/**
92+
* Ejecuta una petición HTTP genérica con control completo sobre los parámetros
93+
* @param method - Método HTTP a utilizar
94+
* @param endpoint - Punto final de la API
95+
* @param options - Opciones de la petición
96+
* @returns Respuesta de la API
97+
* @template TResult - Tipo de datos esperado en la respuesta
98+
* @template TData - Tipo de datos a enviar en la petición (opcional)
99+
*/
100+
executeRequest<TResult, TData = any>(
101+
method: HttpMethod,
102+
endpoint: string,
103+
options?: RequestOptions<TData>
104+
): Promise<ApiResponse<TResult>>;
71105
}

0 commit comments

Comments
 (0)