Initial commit
This commit is contained in:
135
services/factureActionsService.ts
Normal file
135
services/factureActionsService.ts
Normal file
@@ -0,0 +1,135 @@
|
||||
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();
|
||||
Reference in New Issue
Block a user