Improve the task management system by enabling secure auto-filling of invoice data

Update the client-side Avoirs page to automatically populate invoice amounts when a verified invoice is found, enhancing user experience and data accuracy. Implement conditional rendering for verification status icons and enable the 'Validate' button only when an invoice is successfully verified.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 9fcf4b21-eb0c-4e53-a567-e2ce4a6ad869
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/9fcf4b21-eb0c-4e53-a567-e2ce4a6ad869/H30E1Dv
This commit is contained in:
michaelschal committed 2025-09-08 19:09:05 +00:00
1 parent 3f671cd6b3
commit ebbde4d150
3 files changed
+231 -14

No files matched your search

+28 -14
View File
@@ -441,13 +441,29 @@ export default function Avoirs() {
[variables.avoirId]: result
}));
// DÉSACTIVÉ TEMPORAIREMENT : Auto-remplissage pour debug
// TODO: Réactiver une fois le problème identifié
console.log('✅ Vérification terminée sans auto-remplissage:', {
exists: result?.exists,
invoiceAmount: result?.invoiceAmount,
avoirId: variables.avoirId
});
// Auto-remplissage sécurisé si facture trouvée et montant disponible
if (result?.exists === true && result?.invoiceAmount !== undefined && result?.invoiceAmount !== null) {
const avoir = avoirs?.find(a => a?.id === variables.avoirId);
if (avoir && avoir.supplierId && avoir.groupId) {
try {
console.log('🔄 Auto-remplissage montant:', { avoirId: variables.avoirId, amount: result.invoiceAmount });
editAvoirMutation.mutate({
id: variables.avoirId,
data: {
supplierId: avoir.supplierId,
groupId: avoir.groupId,
invoiceReference: avoir.invoiceReference || "",
amount: result.invoiceAmount,
comment: avoir.comment || "",
commercialProcessed: avoir.commercialProcessed || false,
status: avoir.status as "En attente de demande" | "Demandé" | "Reçu",
}
});
} catch (autoFillError) {
console.error('❌ Erreur auto-remplissage:', autoFillError);
}
}
}
setVerifyingAvoirs(prev => {
const newSet = new Set(prev);
@@ -1136,12 +1152,10 @@ export default function Avoirs() {
<div className="flex items-center justify-center">
{verifyingAvoirs.has(avoir.id) ? (
<Clock className="h-4 w-4 text-blue-500 animate-spin" />
) : avoirVerificationResults[avoir.id] ? (
avoirVerificationResults[avoir.id].exists ? (
<CheckCircle className="h-4 w-4 text-green-500 cursor-help" />
) : (
<XCircle className="h-4 w-4 text-red-500 cursor-help" />
)
) : avoirVerificationResults[avoir.id]?.exists === true ? (
<CheckCircle className="h-4 w-4 text-green-500 cursor-help" />
) : avoirVerificationResults[avoir.id]?.exists === false ? (
<XCircle className="h-4 w-4 text-red-500 cursor-help" />
) : (
<button
onClick={() => handleVerifyAvoirInvoice(avoir)}
@@ -1172,7 +1186,7 @@ export default function Avoirs() {
)}
{/* Bouton Valider - apparaît si vérification réussie et pas encore validé */}
{avoirVerificationResults[avoir.id]?.exists && !avoir.nocodbVerified && (
{avoirVerificationResults[avoir.id]?.exists === true && !avoir.nocodbVerified && (
<Button
variant="outline"
size="sm"