Files
HoruxDespachosNuevo/apps/web/lib/api/contribuyentes.ts
Horux Dev 1130a1833c docs: actualiza CAMBIOS-2026-05-04.md y commitea fixes pendientes
- Monitor de sincronización SAT (sat-sync-monitor.job + alerta por correo).
- Scraper de CSF más robusto (iframes, blobs, popups, validación PDF).
- Reactivación de contribuyentes desactivados y limpieza al desactivar.
- Timeout de constancia aumentado a 5 min.
- Variables de entorno SAT en .env.example y env.ts.
2026-06-25 02:09:58 +00:00

68 lines
2.1 KiB
TypeScript

import { apiClient } from './client';
export interface Contribuyente {
id: string;
tipo: string;
nombre: string;
identificador: string;
supervisorUserId: string | null;
supervisorNombre: string | null;
active: boolean;
createdAt: string;
rfc: string;
regimenFiscal: string | null;
codigoPostal: string | null;
domicilio: Record<string, unknown> | null;
}
export interface CreateContribuyenteData {
rfc: string;
razonSocial: string;
regimenFiscal?: string;
codigoPostal?: string;
supervisorUserId?: string;
}
/**
* Resultado del ajuste automático de overage de Business Cloud al crear o
* desactivar un contribuyente. Si `action === 'created'`, el frontend debe
* abrir `paymentUrl` en una pestaña para que el usuario autorice el cobro.
*/
export interface OverageAdjustResult {
action: 'none' | 'created' | 'updated' | 'cancelled' | 'skipped';
overageCount: number;
paymentUrl?: string;
reason?: string;
}
export type ContribuyenteWithOverage = Contribuyente & { overage?: OverageAdjustResult; reactivated?: boolean };
export async function getContribuyentes(): Promise<{ data: Contribuyente[] }> {
const { data } = await apiClient.get('/contribuyentes');
return data;
}
export async function getContribuyente(id: string): Promise<Contribuyente> {
const { data } = await apiClient.get(`/contribuyentes/${id}`);
return data;
}
export async function createContribuyente(payload: CreateContribuyenteData): Promise<ContribuyenteWithOverage> {
const { data } = await apiClient.post('/contribuyentes', payload);
return data;
}
export async function updateContribuyente(id: string, payload: Partial<CreateContribuyenteData>): Promise<Contribuyente> {
const { data } = await apiClient.put(`/contribuyentes/${id}`, payload);
return data;
}
export async function deactivateContribuyente(id: string): Promise<{ message: string; overage?: OverageAdjustResult }> {
const { data } = await apiClient.delete(`/contribuyentes/${id}`);
return data;
}
export async function addClienteAcceso(contribuyenteId: string, userId: string): Promise<void> {
await apiClient.post(`/contribuyentes/${contribuyenteId}/cliente-acceso`, { userId });
}