Adiciona o frontend Next.js em frontend/ (setup, design system, autenticação/tema, layout/navegação, área master, área tenant completa: clientes, produtos, vendas, recebimentos, whatsapp, e-mail, alertas, equipe e perfil). Estende o backend de forma aditiva e autorizada: cookie httpOnly para refresh token (Etapa 13) e CRUD de equipe + edição de perfil do tenant (Etapa 18, módulo src/modules/equipe/ novo e PUT /tenant/perfil). Detalhes completos em Etapas/V2/*. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import { apiClient } from '@/lib/api/client';
|
|
import { buildQuery, type PaginatedResult } from '@/lib/api/types';
|
|
|
|
export type FaturaStatus = 'pendente' | 'pago' | 'atrasado' | 'cancelado';
|
|
|
|
/** Espelha o model `tenant_faturas`. */
|
|
export interface Fatura {
|
|
id: string;
|
|
tenant_id: string;
|
|
referencia: string;
|
|
valor: string;
|
|
vencimento: string;
|
|
pago_em: string | null;
|
|
status: FaturaStatus;
|
|
alerta_enviado_em: string | null;
|
|
criado_em: string;
|
|
}
|
|
|
|
/** `GET /master/faturas` inclui um resumo do tenant em cada item. */
|
|
export interface FaturaListItem extends Fatura {
|
|
tenant: { id: string; razao_social: string };
|
|
}
|
|
|
|
export interface ListFaturasParams {
|
|
status?: FaturaStatus;
|
|
tenant_id?: string;
|
|
referencia?: string;
|
|
page?: number;
|
|
limit?: number;
|
|
}
|
|
|
|
export interface GerarFaturasMesResult {
|
|
referencia: string;
|
|
criadas: number;
|
|
ignoradas: number;
|
|
}
|
|
|
|
export interface AtualizarAtrasadasResult {
|
|
atualizadas: number;
|
|
tenants_afetados: number;
|
|
}
|
|
|
|
export function listFaturas(params: ListFaturasParams) {
|
|
return apiClient.get<PaginatedResult<FaturaListItem>>(`/master/faturas${buildQuery(params)}`);
|
|
}
|
|
|
|
export function gerarFaturasMes(referencia?: string) {
|
|
return apiClient.post<GerarFaturasMesResult>('/master/faturas/gerar-mes', referencia ? { referencia } : {});
|
|
}
|
|
|
|
export function marcarFaturaPaga(id: string) {
|
|
return apiClient.patch<Fatura>(`/master/faturas/${id}/marcar-pago`);
|
|
}
|
|
|
|
export function atualizarFaturasAtrasadas() {
|
|
return apiClient.post<AtualizarAtrasadasResult>('/master/faturas/atualizar-atrasadas');
|
|
}
|