diff --git a/attached_assets/{196C82CB-1B5E-465C-8E2E-2085A6374715}_1754994443183.png b/attached_assets/{196C82CB-1B5E-465C-8E2E-2085A6374715}_1754994443183.png new file mode 100644 index 0000000..51e8462 Binary files /dev/null and b/attached_assets/{196C82CB-1B5E-465C-8E2E-2085A6374715}_1754994443183.png differ diff --git a/client/src/pages/BLReconciliation.tsx b/client/src/pages/BLReconciliation.tsx index cad52f9..c8de9b8 100644 --- a/client/src/pages/BLReconciliation.tsx +++ b/client/src/pages/BLReconciliation.tsx @@ -9,16 +9,19 @@ import { useToast } from "@/hooks/use-toast"; import { apiRequest } from "@/lib/queryClient"; import { useStore } from "@/components/Layout"; import { useAuthUnified } from "@/hooks/useAuthUnified"; -import { Search, Edit, FileText, Settings, Eye, AlertTriangle, X } from "lucide-react"; +import { usePermissions } from "@shared/permissions"; +import { Search, Edit, FileText, Settings, Eye, AlertTriangle, X, Check, Trash2, Ban } 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); - // Redirection pour les employés - if (user?.role === 'employee') { + // Vérification des permissions d'accès au module + if (!permissions.canView('reconciliation')) { return (
Accès restreint
- Seuls les managers et administrateurs peuvent accéder au module de rapprochement BL/Factures.
+ Seuls les directeurs et administrateurs peuvent accéder au module de rapprochement BL/Factures.
Les livraisons de fournisseurs en mode automatique sont validées automatiquement lorsqu'elles ont le statut "delivered" et un numéro de BL. - {canModify ? ( + {permissions.canEdit('reconciliation') ? ( " Vous pouvez dévalider ces rapprochements si nécessaire." ) : ( " Seuls les directeurs et administrateurs peuvent modifier ces rapprochements." @@ -355,10 +509,7 @@ export default function BLReconciliation() { Ref. Facture
- Les livraisons de fournisseurs en mode manuel apparaîtront ici. -
-| - Fournisseur - | -- N° BL - | -- Date Livr. - | -- Montant BL - | -- Ref. Facture - | -- Montant Fact. - | -- Écart - | -- Magasin - | -- 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 ? (
-
-
- {delivery.invoiceReference}
- {invoiceVerifications[delivery.id] && (
-
- ) : (
-
- )}
-
- {invoiceVerifications[delivery.id].exists ? (
-
- )}
- |
-
-
- {delivery.invoiceAmount ?
- `${parseFloat(delivery.invoiceAmount).toFixed(2)}€` :
-
- }
-
- |
-
-
- {difference?.display || '-'}
-
- |
-
-
- {delivery.group?.name}
-
- |
-
-
-
-
-
- |
-
- Les livraisons de fournisseurs en mode automatique sont validées automatiquement lorsqu'elles ont le statut "delivered" et un numéro de BL. - {canModify ? ( - " Vous pouvez dévalider ou supprimer 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 - | -- Montant Fact. - | -- Écart - | -- Magasin - | -- Actions - | -
|---|---|---|---|---|---|---|---|---|---|
|
-
-
-
- {delivery.supplier?.name}
-
- |
-
-
- {delivery.blNumber || '-'}
-
- |
-
-
- {safeFormat(delivery.scheduledDate, 'dd/MM/yy')}
-
- |
-
-
- {delivery.reconciled && delivery.updatedAt ?
- safeFormat(delivery.updatedAt, 'dd/MM/yy') :
- '-'
- }
-
- |
-
-
- {delivery.blAmount ?
- `${parseFloat(delivery.blAmount).toFixed(2)}€` :
- '-'
- }
-
- |
-
-
- {delivery.invoiceReference ? (
-
-
- {delivery.invoiceReference}
- {invoiceVerifications[delivery.id] && (
-
- ) : '-'}
-
- {invoiceVerifications[delivery.id].exists ? (
-
- )}
- |
-
-
- {delivery.invoiceAmount ?
- `${parseFloat(delivery.invoiceAmount).toFixed(2)}€` :
- '-'
- }
-
- |
-
-
- {difference?.display || '-'}
-
- |
-
-
- {delivery.group?.name}
-
- |
-
-
- {canModify ? (
- <>
-
-
- >
- ) : (
-
- )}
-
- |
-
+ Les livraisons de fournisseurs en mode manuel apparaîtront ici. +
+| + Fournisseur + | ++ N° BL + | ++ Date Livr. + | ++ Montant BL + | ++ Ref. Facture + | ++ Montant Fact. + | ++ Magasin + | ++ 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.group?.name}
+
+ |
+
+
+
+
+ |
+
+ Les livraisons de fournisseurs en mode automatique sont validées automatiquement lorsqu'elles ont le statut "delivered" et un numéro de BL. + {canModify ? ( + " 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 + | ++ Montant Fact. + | ++ Magasin + | ++ Actions + | +
|---|---|---|---|---|---|---|---|---|
|
+
+
+
+ {delivery.supplier?.name}
+
+ |
+
+
+ {delivery.blNumber || '-'}
+
+ |
+
+
+ {safeFormat(delivery.scheduledDate, 'dd/MM/yy')}
+
+ |
+
+
+ {delivery.reconciled && delivery.updatedAt ?
+ safeFormat(delivery.updatedAt, 'dd/MM/yy') :
+ '-'
+ }
+
+ |
+
+
+ {delivery.blAmount ?
+ `${parseFloat(delivery.blAmount).toFixed(2)}€` :
+ '-'
+ }
+
+ |
+
+
+ {delivery.invoiceReference || '-'}
+
+ |
+
+
+ {delivery.invoiceAmount ?
+ `${parseFloat(delivery.invoiceAmount).toFixed(2)}€` :
+ '-'
+ }
+
+ |
+
+
+ {delivery.group?.name}
+
+ |
+
+
+ {canModify ? (
+ <>
+
+
+ >
+ ) : (
+
+ )}
+
+ |
+