Files
btpxpress-frontend/services/devisActionsService.ts

95 lines
2.8 KiB
TypeScript
Executable File

import { apiService } from './api';
interface DevisRenewalRequest {
devisId: string;
nouveaueDateValidite: string;
modifications?: string;
}
interface DevisArchiveRequest {
devisId: string;
motif: string;
}
interface ClientFollowUpRequest {
devisId: string;
clientId: string;
type: 'email' | 'telephone' | 'courrier';
message: string;
}
interface ChantierCreationRequest {
devisId: string;
dateDebutSouhaitee: string;
notes?: string;
}
interface FactureCreationRequest {
devisId: string;
type: 'FACTURE' | 'ACOMPTE';
pourcentage?: number; // Pour les acomptes
}
class DevisActionsService {
/**
* Renouveler un devis expiré
*/
async renewDevis(request: DevisRenewalRequest): Promise<void> {
try {
await apiService.api.post(`/devis/${request.devisId}/renew`, request);
} catch (error) {
console.error('Erreur lors du renouvellement du devis:', error);
throw new Error('Impossible de renouveler le devis. Veuillez réessayer.');
}
}
/**
* Archiver un devis
*/
async archiveDevis(request: DevisArchiveRequest): Promise<void> {
try {
await apiService.api.post(`/devis/${request.devisId}/archive`, request);
} catch (error) {
console.error('Erreur lors de l\'archivage du devis:', error);
throw new Error('Impossible d\'archiver le devis. Veuillez réessayer.');
}
}
/**
* Effectuer un suivi client
*/
async followUpClient(request: ClientFollowUpRequest): Promise<void> {
try {
await apiService.api.post(`/devis/${request.devisId}/follow-up`, request);
} catch (error) {
console.error('Erreur lors du suivi client:', error);
throw new Error('Impossible d\'effectuer le suivi client. Veuillez réessayer.');
}
}
/**
* Créer un chantier à partir d'un devis accepté
*/
async createChantierFromDevis(request: ChantierCreationRequest): Promise<void> {
try {
await apiService.api.post(`/devis/${request.devisId}/create-chantier`, request);
} catch (error) {
console.error('Erreur lors de la création du chantier:', error);
throw new Error('Impossible de créer le chantier. Veuillez réessayer.');
}
}
/**
* Créer une facture à partir d'un devis accepté
*/
async createFactureFromDevis(request: FactureCreationRequest): Promise<void> {
try {
await apiService.api.post(`/devis/${request.devisId}/create-facture`, request);
} catch (error) {
console.error('Erreur lors de la création de la facture:', error);
throw new Error('Impossible de créer la facture. Veuillez réessayer.');
}
}
}
export default new DevisActionsService();