fix: Update PrimeReact to v10.8.3 and fix all compilation errors

This commit is contained in:
dahoud
2025-10-13 03:01:36 +00:00
parent 2a2e54c0e3
commit 30cad6220b
85 changed files with 928 additions and 2020 deletions

View File

@@ -18,6 +18,7 @@ import { InputNumber } from 'primereact/inputnumber';
import { devisService, factureService } from '../../../../../services/api';
import { formatCurrency, formatDate } from '../../../../../utils/formatters';
import type { Devis, Facture } from '../../../../../types/btp';
import { StatutFacture, TypeFacture } from '../../../../../types/btp';
const ConvertDevisPage = () => {
const params = useParams();
@@ -27,15 +28,15 @@ const ConvertDevisPage = () => {
const [devis, setDevis] = useState<Devis | null>(null);
const [facture, setFacture] = useState<Partial<Facture>>({
numero: '',
dateEmission: new Date(),
dateEcheance: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000),
dateEmission: new Date().toISOString(),
dateEcheance: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(),
objet: '',
description: '',
montantHT: 0,
montantTTC: 0,
tauxTVA: 20,
statut: 'BROUILLON',
type: 'FACTURE',
statut: StatutFacture.BROUILLON,
typeFacture: TypeFacture.FACTURE,
actif: true,
lignes: []
});
@@ -62,9 +63,8 @@ const ConvertDevisPage = () => {
const loadDevis = async () => {
try {
setLoading(true);
const response = await devisService.getById(devisId);
const devisData = response.data;
const devisData = await devisService.getById(devisId);
if (devisData.statut !== 'ACCEPTE') {
toast.current?.show({
severity: 'warn',
@@ -81,20 +81,17 @@ const ConvertDevisPage = () => {
// Initialiser la facture avec les données du devis
setFacture({
numero: newNumero,
dateEmission: new Date(),
dateEcheance: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000),
dateEmission: new Date().toISOString(),
dateEcheance: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(),
objet: devisData.objet,
description: devisData.description,
montantHT: devisData.montantHT,
montantTTC: devisData.montantTTC,
tauxTVA: devisData.tauxTVA,
statut: 'BROUILLON',
type: 'FACTURE',
statut: StatutFacture.BROUILLON,
typeFacture: TypeFacture.FACTURE,
actif: true,
clientId: devisData.clientId,
client: devisData.client,
devisId: devisData.id,
lignes: devisData.lignes ? [...devisData.lignes] : []
client: devisData.client
});
// Initialiser toutes les lignes comme sélectionnées
@@ -127,8 +124,8 @@ const ConvertDevisPage = () => {
const calculateMontants = () => {
if (!facture.lignes) return;
const lignesSelectionnees = facture.lignes.filter((_, index) => selectedLignes[index]);
let montantHT = lignesSelectionnees.reduce((sum, ligne) => sum + (ligne.montantHT || 0), 0);
const lignesSelectionnees = facture.lignes?.filter((_, index) => selectedLignes[index]) || [];
let montantHT = lignesSelectionnees.reduce((sum, ligne) => sum + (ligne.montantLigne || 0), 0);
// Appliquer le pourcentage d'acompte si nécessaire
if (createAcompte && acomptePercentage > 0) {
@@ -177,26 +174,26 @@ const ConvertDevisPage = () => {
// Ajuster les montants si c'est un acompte
if (createAcompte && acomptePercentage > 0) {
lignesFacture.forEach(ligne => {
ligne.montantHT = (ligne.montantHT || 0) * (acomptePercentage / 100);
ligne.prixUnitaire = ligne.montantHT / (ligne.quantite || 1);
ligne.montantLigne = (ligne.montantLigne || 0) * (acomptePercentage / 100);
ligne.prixUnitaire = ligne.montantLigne / (ligne.quantite || 1);
});
}
const factureData = {
...facture,
lignes: lignesFacture,
type: createAcompte ? 'ACOMPTE' : facture.type
typeFacture: createAcompte ? TypeFacture.ACOMPTE : facture.typeFacture
};
const response = await factureService.create(factureData);
const createdFacture = await factureService.create(factureData);
toast.current?.show({
severity: 'success',
summary: 'Succès',
detail: 'Facture créée avec succès'
});
router.push(`/factures/${response.data.id}`);
router.push(`/factures/${createdFacture.id}`);
} catch (error) {
console.error('Erreur lors de la conversion:', error);
@@ -372,9 +369,9 @@ const ConvertDevisPage = () => {
<label htmlFor="type" className="font-semibold">Type de facture</label>
<Dropdown
id="type"
value={facture.type}
value={facture.typeFacture}
options={typeFactureOptions}
onChange={(e) => setFacture(prev => ({ ...prev, type: e.value }))}
onChange={(e) => setFacture(prev => ({ ...prev, typeFacture: e.value }))}
className="w-full"
/>
</div>