95 lines
2.8 KiB
TypeScript
Executable File
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(); |