import React, { useState, useEffect } from "react"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { safeFormat } from "@/lib/dateUtils"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { useToast } from "@/hooks/use-toast"; import { apiRequest } from "@/lib/queryClient"; import { useStore } from "@/components/Layout"; import { useAuthUnified } from "@/hooks/useAuthUnified"; import { usePermissions } from "@shared/permissions"; import { Search, Edit, FileText, Settings, Eye, AlertTriangle, X, Check, Trash2, Ban, ChevronLeft, ChevronRight } from "lucide-react"; import type { Supplier } from "@shared/schema"; export default function BLReconciliation() { const { user } = useAuthUnified(); const { selectedStoreId } = useStore(); const { toast } = useToast(); const queryClient = useQueryClient(); const permissions = usePermissions(user?.role); // Vérification des permissions d'accès au module if (!permissions.canView('reconciliation')) { return (
Accès restreint
Seuls les directeurs et administrateurs peuvent accéder au module de rapprochement BL/Factures.
Gestion des rapprochements manuels et automatiques
Les livraisons de fournisseurs en mode manuel apparaîtront ici.
| Fournisseur | N° BL | Date Livr. | Montant BL | Ref. Facture | Montant Fact. | Statut | Actions |
|---|---|---|---|---|---|---|---|
|
{delivery.supplier?.name}
|
{delivery.blNumber || (
Non renseigné
)}
|
{safeFormat(delivery.scheduledDate, 'dd/MM/yy')}
|
{delivery.blAmount ?
`${parseFloat(delivery.blAmount).toFixed(2)}€` :
Non renseigné
}
|
{delivery.invoiceReference || (
Non renseigné
)}
|
{delivery.invoiceAmount ?
`${parseFloat(delivery.invoiceAmount).toFixed(2)}€` :
Non renseigné
}
|
{delivery.reconciled ? (
|
{permissions.canEdit('reconciliation') && (
)}
{!delivery.reconciled && permissions.canValidate('reconciliation') && (
)}
{delivery.reconciled && permissions.canEdit('reconciliation') && user?.role === 'admin' && (
)}
{permissions.canDelete('reconciliation') && (
)}
|
Les livraisons de fournisseurs en mode automatique sont validées automatiquement lorsqu'elles ont le statut "delivered" et un numéro de BL. {permissions.canEdit('reconciliation') ? ( " Vous pouvez dévalider ces rapprochements si nécessaire." ) : ( " Seuls les directeurs et administrateurs peuvent modifier ces rapprochements." )}
Les livraisons de fournisseurs en mode automatique apparaîtront ici.
|
Fournisseur
|
N° BL | Date Livr. | Date Valid. | Montant BL | Ref. Facture | Statut | Actions |
|---|---|---|---|---|---|---|---|
|
{delivery.supplier?.name}
|
{delivery.blNumber || '-'}
|
{safeFormat(delivery.scheduledDate, 'dd/MM/yy')}
|
{delivery.reconciled && delivery.validatedAt ?
safeFormat(delivery.validatedAt, 'dd/MM/yy') :
'-'
}
|
{delivery.blAmount ?
`${parseFloat(delivery.blAmount).toFixed(2)}€` :
'-'
}
|
{delivery.invoiceReference || '-'}
|
{isDevalidated(delivery) ? (
|
{isDevalidated(delivery) && permissions.canEdit('reconciliation') && (
<>
>
)}
{!isDevalidated(delivery) && permissions.canEdit('reconciliation') && (
)}
{permissions.canDelete('reconciliation') && (
)}
|