- Agrega helper withJitOff en impuestos.service.ts - Ejecuta getResumenIva, getIvaMensual y readResumenIvaFromCache con SET LOCAL jit = off - Evita compilación JIT de ~17s en queries con costo estimado alto feat(contribuyentes): auto-asignar a cartera del supervisor - Al crear contribuyente con supervisorUserId, se agrega automáticamente a todas las carteras top-level del supervisor feat(permisos): restricciones de UI por rol en contribuyentes - Oculta botón Add-ons para roles distintos de owner/cfo - Oculta botón Eliminar contribuyente para no-owner - Oculta botón Agregar RFC para auxiliar/visor/cliente/contador feat(cfdi): ver CFDI desde conceptos y forma de pago en Excel - Agrega botón Ver CFDI en cada fila de la tabla de Conceptos - Agrega columna Forma de Pago en export Excel de CFDIs - Agrega columna Forma de Pago en export individual de CFDI chore(migraciones): índices GIN para relaciones de activos - 048: índices btree parciales para activos - 049: índices GIN para cfdis_relacionados y uuid_relacionado
62 lines
2.3 KiB
TypeScript
62 lines
2.3 KiB
TypeScript
import { apiClient } from './client';
|
|
|
|
export interface AsignacionObligacion {
|
|
id: string;
|
|
obligacionId: string;
|
|
obligacionNombre: string;
|
|
contribuyenteId: string;
|
|
contribuyenteRfc: string;
|
|
contribuyenteRazonSocial: string;
|
|
auxiliarUserId: string;
|
|
auxiliarNombre: string | null;
|
|
asignadoPor: string;
|
|
asignadoAt: string;
|
|
}
|
|
|
|
export interface AsignacionTarea {
|
|
id: string;
|
|
tareaId: string;
|
|
tareaNombre: string;
|
|
contribuyenteId: string;
|
|
contribuyenteRfc: string;
|
|
contribuyenteRazonSocial: string;
|
|
auxiliarUserId: string;
|
|
auxiliarNombre: string | null;
|
|
asignadoPor: string;
|
|
asignadoAt: string;
|
|
}
|
|
|
|
export interface AsignacionesResponse {
|
|
obligaciones: AsignacionObligacion[];
|
|
tareas: AsignacionTarea[];
|
|
}
|
|
|
|
export const getAsignacionesPorSupervisor = () =>
|
|
apiClient.get<AsignacionesResponse>('/carteras/asignaciones').then(r => r.data);
|
|
|
|
export const getAsignacionesPorAuxiliar = () =>
|
|
apiClient.get<AsignacionesResponse>('/carteras/asignaciones/mias').then(r => r.data);
|
|
|
|
export interface SinAsignarResponse {
|
|
obligaciones: Omit<AsignacionObligacion, 'id' | 'auxiliarUserId' | 'auxiliarNombre' | 'asignadoPor' | 'asignadoAt'>[];
|
|
tareas: Omit<AsignacionTarea, 'id' | 'auxiliarUserId' | 'auxiliarNombre' | 'asignadoPor' | 'asignadoAt'>[];
|
|
}
|
|
|
|
export const getSinAsignar = () =>
|
|
apiClient.get<SinAsignarResponse>('/carteras/asignaciones/sin-asignar').then(r => r.data);
|
|
|
|
export const asignarObligacion = (contribuyenteId: string, obligacionId: string, auxiliarUserId: string) =>
|
|
apiClient.post(`/contribuyentes/${contribuyenteId}/obligaciones/${obligacionId}/asignar`, { auxiliarUserId }).then(r => r.data);
|
|
|
|
export const desasignarObligacion = (contribuyenteId: string, obligacionId: string) =>
|
|
apiClient.delete(`/contribuyentes/${contribuyenteId}/obligaciones/${obligacionId}/asignar`).then(r => r.data);
|
|
|
|
export const asignarTarea = (tareaId: string, auxiliarUserId: string) =>
|
|
apiClient.post(`/tareas/${tareaId}/asignar`, { auxiliarUserId }).then(r => r.data);
|
|
|
|
export const desasignarTarea = (tareaId: string) =>
|
|
apiClient.delete(`/tareas/${tareaId}/asignar`).then(r => r.data);
|
|
|
|
export const getAuxiliaresElegibles = (contribuyenteId: string) =>
|
|
apiClient.get<{ auxiliares: string[] }>(`/carteras/asignaciones/auxiliares-elegibles/${contribuyenteId}`).then(r => r.data);
|