feat: Implement asynchronous invoice report generation with email delivery and frontend status polling.

This commit is contained in:
Galindo97
2026-02-06 15:31:30 -06:00
parent 264100e2ea
commit f3f763cd6d
14 changed files with 797 additions and 400 deletions

View File

@@ -62,6 +62,15 @@ export interface AllMovementsFilter {
exchange_rate_type: ExchangeRateType;
is_shelter: boolean;
operation_type?: 'imp' | 'exp' | null;
send_email?: boolean;
// Granular flags
import_temp?: boolean;
import_def?: boolean;
import_rep?: boolean;
export_def?: boolean;
export_rep?: boolean;
export_types?: string[];
discharge_filter?: DischargeFilter;
}
export interface MovementItem {
@@ -181,5 +190,14 @@ export const invoiceMovementsApi = {
// All Movements
getAllMovements: (filters: AllMovementsFilter) =>
api.post<MovementItem[]>('/v1/a76/reports/movements/invoices/all', filters)
api.post<MovementItem[]>('/v1/a76/reports/movements/invoices/all', filters),
// Async Generation
generateReportAsync: (filters: AllMovementsFilter) =>
api.post<{ task_id: string }>('/v1/a76/reports/movements/invoices/generate', filters),
getTaskStatus: (taskId: string) =>
api.get<{ task_id: string; status: string; result?: any; meta?: any }>(
`/v1/a76/reports/movements/invoices/task/${taskId}`
)
};