feat: Ajouter invoice_type et payment_method aux factures de saisie tableau
- Ajouter invoice_type='paie_mensuelle' et payment_method='sepa' au payload de saisie tableau - Modifier l'API bulk-create pour accepter et stocker ces champs - Améliorer les messages de notification paie_mensuelle : * Toujours afficher 'Votre facture pour la période XXX est disponible' * Utiliser 'du mois' comme fallback si period_label est vide * Appliquer le changement aux deux routes (notify et bulk-notify)
This commit is contained in:
parent
13d844921e
commit
5bff842a8c
4 changed files with 28 additions and 22 deletions
|
|
@ -679,22 +679,22 @@ export default function SaisieTableauFacturesPage() {
|
|||
setIsLoading(true);
|
||||
|
||||
try {
|
||||
const payload = rows.map(r => ({
|
||||
org_id: r.org_id,
|
||||
numero: r.numero,
|
||||
periode: r.periode || null,
|
||||
date: r.date || null,
|
||||
due_date: r.due_date || null,
|
||||
payment_date: r.payment_date || null,
|
||||
sepa_day: r.sepa_day || null,
|
||||
montant_ht: Number(r.montant_ht) || 0,
|
||||
montant_ttc: Number(r.montant_ttc) || 0,
|
||||
statut: r.statut,
|
||||
notes: r.notes || null,
|
||||
pdf_s3_key: r.pdf_s3_key || null,
|
||||
}));
|
||||
|
||||
const result = await api<{ created: number }>("/staff/facturation/bulk-create", {
|
||||
const payload = rows.map(r => ({
|
||||
org_id: r.org_id,
|
||||
numero: r.numero,
|
||||
periode: r.periode || null,
|
||||
date: r.date || null,
|
||||
due_date: r.due_date || null,
|
||||
payment_date: r.payment_date || null,
|
||||
sepa_day: r.sepa_day || null,
|
||||
montant_ht: Number(r.montant_ht) || 0,
|
||||
montant_ttc: Number(r.montant_ttc) || 0,
|
||||
statut: r.statut,
|
||||
notes: r.notes || null,
|
||||
pdf_s3_key: r.pdf_s3_key || null,
|
||||
invoice_type: 'paie_mensuelle',
|
||||
payment_method: 'sepa',
|
||||
})); const result = await api<{ created: number }>("/staff/facturation/bulk-create", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ invoices: payload }),
|
||||
|
|
|
|||
|
|
@ -25,13 +25,13 @@ async function isStaffUser(supabase: any, userId: string): Promise<boolean> {
|
|||
function buildInvoiceCustomMessage(invoice: any): string {
|
||||
switch (invoice.invoice_type) {
|
||||
case 'paie_mensuelle':
|
||||
const periodText = invoice.period_label || 'du mois';
|
||||
// Cas spécial pour les paiements par virement
|
||||
if (invoice.payment_method === 'virement') {
|
||||
const periodText = invoice.period_label ? `pour la période ${invoice.period_label}` : 'mensuelle';
|
||||
return `Votre facture ${periodText} est disponible. Vous trouverez ci-dessous nos coordonnées bancaires pour le virement.`;
|
||||
return `Votre facture pour la période ${periodText} est disponible. Vous trouverez ci-dessous nos coordonnées bancaires pour le virement.`;
|
||||
}
|
||||
// Cas normal (SEPA)
|
||||
return invoice.period_label ? `Votre facture pour la période ${invoice.period_label} est disponible et sera prélevée à la date indiquée ci-dessous.` : `Votre facture mensuelle est disponible et sera prélevée à la date indiquée ci-dessous`;
|
||||
return `Votre facture pour la période ${periodText} est disponible et sera prélevée à la date indiquée ci-dessous.`;
|
||||
case 'paie_ouverture':
|
||||
return `Votre facture d'ouverture de compte est disponible et sera prélevée à la date indiquée ci-dessous`;
|
||||
case 'studio_site_web':
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ type InvoicePayload = {
|
|||
statut: string;
|
||||
notes?: string | null;
|
||||
pdf_s3_key?: string | null;
|
||||
invoice_type?: string | null;
|
||||
payment_method?: string | null;
|
||||
};
|
||||
|
||||
// POST - Création en masse de factures
|
||||
|
|
@ -91,6 +93,8 @@ export async function POST(req: Request) {
|
|||
statut: invoice.statut || 'emise',
|
||||
notes: invoice.notes || null,
|
||||
pdf_s3_key: invoice.pdf_s3_key || null,
|
||||
invoice_type: invoice.invoice_type || null,
|
||||
payment_method: invoice.payment_method || null,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
@ -117,6 +121,8 @@ export async function POST(req: Request) {
|
|||
status: inv.statut,
|
||||
notes: inv.notes,
|
||||
pdf_s3_key: inv.pdf_s3_key,
|
||||
invoice_type: inv.invoice_type,
|
||||
payment_method: inv.payment_method,
|
||||
created_at: new Date().toISOString(),
|
||||
updated_at: new Date().toISOString(),
|
||||
}));
|
||||
|
|
|
|||
|
|
@ -25,13 +25,13 @@ async function isStaffUser(supabase: any, userId: string): Promise<boolean> {
|
|||
function buildInvoiceCustomMessage(invoice: any): string {
|
||||
switch (invoice.invoice_type) {
|
||||
case 'paie_mensuelle':
|
||||
const periodText = invoice.period_label || 'du mois';
|
||||
// Cas spécial pour les paiements par virement
|
||||
if (invoice.payment_method === 'virement') {
|
||||
const periodText = invoice.period_label ? `pour la période ${invoice.period_label}` : 'mensuelle';
|
||||
return `Votre facture ${periodText} est disponible. Vous trouverez ci-dessous nos coordonnées bancaires pour le virement.`;
|
||||
return `Votre facture pour la période ${periodText} est disponible. Vous trouverez ci-dessous nos coordonnées bancaires pour le virement.`;
|
||||
}
|
||||
// Cas normal (SEPA)
|
||||
return invoice.period_label ? `Votre facture pour la période ${invoice.period_label} est disponible et sera prélevée à la date indiquée ci-dessous.` : `Votre facture mensuelle est disponible et sera prélevée à la date indiquée ci-dessous`;
|
||||
return `Votre facture pour la période ${periodText} est disponible et sera prélevée à la date indiquée ci-dessous.`;
|
||||
case 'paie_ouverture':
|
||||
return `Votre facture d'ouverture de compte est disponible et sera prélevée à la date indiquée ci-dessous`;
|
||||
case 'studio_site_web':
|
||||
|
|
|
|||
Loading…
Reference in a new issue