fix: Calcul du montant total des tarif par RF + affichage des tarifs

actifs lors de la création d'un RF [#26]
This commit is contained in:
N3WT DE COMPET
2025-02-07 20:36:02 +01:00
parent f2628bb45a
commit c269b89d3d
12 changed files with 192 additions and 70 deletions

View File

@ -12,13 +12,22 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
const [localErrors, setLocalErrors] = useState({});
const [popupVisible, setPopupVisible] = useState(false);
const [popupMessage, setPopupMessage] = useState("");
const [removePopupVisible, setRemovePopupVisible] = useState(false);
const [removePopupMessage, setRemovePopupMessage] = useState("");
const [removePopupOnConfirm, setRemovePopupOnConfirm] = useState(() => {});
const labelTypeFrais = (type === 0 ? 'Frais d\'inscription' : 'Frais de scolarité');
// Récupération des messages d'erreur
const getError = (field) => {
return localErrors?.[field]?.[0];
};
const handleAddFee = () => {
setNewFee({ id: Date.now(), name: '', base_amount: '', description: '', validity_start_date: '', validity_end_date: '', discounts: [], type: type });
};
const handleRemoveFee = (id) => {
handleDelete(id)
return handleDelete(id)
.then(() => {
setFees(prevFees => prevFees.filter(fee => fee.id !== id));
})
@ -37,11 +46,11 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
setNewFee(null);
setLocalErrors({});
})
.catch(error => {
if (error && typeof error === 'object') {
setLocalErrors(error);
} else {
console.error(error);
.catch((error) => {
console.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
} else {
@ -60,11 +69,11 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
setEditingFee(null);
setLocalErrors({});
})
.catch(error => {
if (error && typeof error === 'object') {
setLocalErrors(error);
} else {
console.error(error);
.catch((error) => {
console.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
} else {
@ -118,7 +127,7 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
value={value}
onChange={onChange}
placeholder={placeholder}
errorMsg={localErrors && localErrors[field] && Array.isArray(localErrors[field]) ? localErrors[field][0] : ''}
errorMsg={getError(field)}
/>
</div>
);
@ -187,7 +196,25 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
</button>
<button
type="button"
onClick={() => handleRemoveFee(fee.id)}
onClick={() => {
setRemovePopupVisible(true);
setRemovePopupMessage("Attentions ! \nVous êtes sur le point de supprimer un " + labelTypeFrais + ".\nÊtes-vous sûr(e) de vouloir poursuivre l'opération ?");
setRemovePopupOnConfirm(() => () => {
handleRemoveFee(fee.id)
.then(data => {
console.log('Success:', data);
setPopupMessage(labelTypeFrais + " correctement supprimé");
setPopupVisible(true);
setRemovePopupVisible(false);
})
.catch(error => {
console.error('Error archiving data:', error);
setPopupMessage("Erreur lors de la suppression du " + labelTypeFrais);
setPopupVisible(true);
setRemovePopupVisible(false);
});
});
}}
className="text-red-500 hover:text-red-700"
>
<Trash2 className="w-5 h-5" />
@ -232,7 +259,7 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
<div className="flex justify-between items-center">
<div className="flex items-center mb-4">
<CreditCard className="w-6 h-6 text-emerald-500 mr-2" />
<h2 className="text-xl font-semibold">{type === 0 ? 'Frais d\'inscription' : 'Frais de scolarité'}</h2>
<h2 className="text-xl font-semibold">{labelTypeFrais}</h2>
</div>
<button type="button" onClick={handleAddFee} className="text-emerald-500 hover:text-emerald-700">
<Plus className="w-5 h-5" />
@ -251,6 +278,12 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
onCancel={() => setPopupVisible(false)}
uniqueConfirmButton={true}
/>
<Popup
visible={removePopupVisible}
message={removePopupMessage}
onConfirm={removePopupOnConfirm}
onCancel={() => setRemovePopupVisible(false)}
/>
</div>
);
};