135 lines
4.0 KiB
TypeScript
135 lines
4.0 KiB
TypeScript
import { apiService } from './api';
|
|
|
|
interface PaymentRecordRequest {
|
|
factureId: string;
|
|
montant: number;
|
|
datePaiement: string;
|
|
modePaiement: 'VIREMENT' | 'CHEQUE' | 'ESPECES' | 'CARTE';
|
|
reference?: string;
|
|
notes?: string;
|
|
}
|
|
|
|
interface RelanceRequest {
|
|
factureId: string;
|
|
type: 'GENTILLE' | 'FERME' | 'URGENTE';
|
|
message?: string;
|
|
delaiSupplementaire?: number; // en jours
|
|
}
|
|
|
|
interface PaymentPlanRequest {
|
|
factureId: string;
|
|
nbEcheances: number;
|
|
datePremiereEcheance: string;
|
|
montantEcheance: number;
|
|
conditions?: string;
|
|
}
|
|
|
|
interface MiseEnDemeureRequest {
|
|
factureId: string;
|
|
delaiPaiement: number; // en jours
|
|
mentionsLegales: string;
|
|
fraisDossier?: number;
|
|
}
|
|
|
|
interface ClientSuspensionRequest {
|
|
clientId: string;
|
|
motif: string;
|
|
duree?: number; // en jours, si temporaire
|
|
temporaire: boolean;
|
|
}
|
|
|
|
interface AvoirCreationRequest {
|
|
factureOriginaleId: string;
|
|
motif: string;
|
|
montant: number;
|
|
lignesRetournees: string[]; // IDs des lignes concernées
|
|
notes?: string;
|
|
}
|
|
|
|
class FactureActionsService {
|
|
/**
|
|
* Enregistrer un paiement
|
|
*/
|
|
async recordPayment(request: PaymentRecordRequest): Promise<void> {
|
|
try {
|
|
await apiService.api.post(`/factures/${request.factureId}/payment`, request);
|
|
} catch (error) {
|
|
console.error('Erreur lors de l\'enregistrement du paiement:', error);
|
|
throw new Error('Impossible d\'enregistrer le paiement. Veuillez réessayer.');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Envoyer une relance
|
|
*/
|
|
async sendRelance(request: RelanceRequest): Promise<void> {
|
|
try {
|
|
await apiService.api.post(`/factures/${request.factureId}/relance`, request);
|
|
} catch (error) {
|
|
console.error('Erreur lors de l\'envoi de la relance:', error);
|
|
throw new Error('Impossible d\'envoyer la relance. Veuillez réessayer.');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Planifier un échéancier de paiement
|
|
*/
|
|
async createPaymentPlan(request: PaymentPlanRequest): Promise<void> {
|
|
try {
|
|
await apiService.api.post(`/factures/${request.factureId}/payment-plan`, request);
|
|
} catch (error) {
|
|
console.error('Erreur lors de la création de l\'échéancier:', error);
|
|
throw new Error('Impossible de créer l\'échéancier. Veuillez réessayer.');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Envoyer une mise en demeure
|
|
*/
|
|
async sendMiseEnDemeure(request: MiseEnDemeureRequest): Promise<void> {
|
|
try {
|
|
await apiService.api.post(`/factures/${request.factureId}/mise-en-demeure`, request);
|
|
} catch (error) {
|
|
console.error('Erreur lors de l\'envoi de la mise en demeure:', error);
|
|
throw new Error('Impossible d\'envoyer la mise en demeure. Veuillez réessayer.');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Suspendre un client
|
|
*/
|
|
async suspendClient(request: ClientSuspensionRequest): Promise<void> {
|
|
try {
|
|
await apiService.api.post(`/clients/${request.clientId}/suspend`, request);
|
|
} catch (error) {
|
|
console.error('Erreur lors de la suspension du client:', error);
|
|
throw new Error('Impossible de suspendre le client. Veuillez réessayer.');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Créer un avoir
|
|
*/
|
|
async createAvoir(request: AvoirCreationRequest): Promise<void> {
|
|
try {
|
|
await apiService.api.post('/factures/avoir', request);
|
|
} catch (error) {
|
|
console.error('Erreur lors de la création de l\'avoir:', error);
|
|
throw new Error('Impossible de créer l\'avoir. Veuillez réessayer.');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Envoyer une relance urgente
|
|
*/
|
|
async sendUrgentRelance(factureId: string, message: string): Promise<void> {
|
|
await this.sendRelance({
|
|
factureId,
|
|
type: 'URGENTE',
|
|
message,
|
|
delaiSupplementaire: 7
|
|
});
|
|
}
|
|
}
|
|
|
|
export default new FactureActionsService(); |