Ensure sales are recorded to the correct store based on user selection

Fixes sales creation logic to correctly send storeId and updates admin role check.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 4b008663-bd72-492b-b0b6-fa252367e730
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/4b008663-bd72-492b-b0b6-fa252367e730/mXpFFH6
This commit is contained in:
michaelschal committed 2025-07-19 16:48:28 +00:00
1 parent c909650566
commit be78e1497c
3 files changed
+36 -27

No files matched your search

+34 -25
View File
@@ -1,38 +1,47 @@
# CORRECTION URGENTE PRODUCTION - PROBLÈME SÉLECTEUR MAGASIN
## Problème identifié
- Ventes créées sur Houdemont (ID 2) mais affichées sur Frouard (ID 1)
- L'admin en production (ID 3, "gael") n'a pas accès aux bons magasins
- Sélecteur de magasin ne fonctionne pas correctement
## ✅ PROBLÈME IDENTIFIÉ ET RÉSOLU
## Solutions immédiates
### Problème principal
- Ventes créées sur le mauvais magasin malgré le sélecteur de magasin
- Frontend utilisait `user?.role === 'admin'` au lieu de `'administrator'`
- Le `storeId` n'était pas envoyé dans les requêtes de création de vente
### 1. Corriger l'utilisateur admin production
### ✅ CORRECTIONS APPLIQUÉES
#### 1. Frontend corrigé
```javascript
// ✅ AVANT (incorrect)
...(user?.role === 'admin' && selectedStoreId && { storeId: selectedStoreId })
// ✅ APRÈS (correct)
...(user?.role === 'administrator' && selectedStoreId && { storeId: selectedStoreId })
```
#### 2. Backend corrigé
```javascript
// ✅ Routes API corrigées pour utiliser 'administrator' au lieu de 'admin'
if (user.role !== 'administrator' && targetStoreId !== user.storeId)
if (user.role === 'administrator' && req.body.storeId)
```
### Solutions pour production
#### 1. Corriger l'utilisateur admin production
```sql
-- Mettre à jour l'utilisateur gael (ID 3) pour qu'il ait les bons droits
UPDATE users SET role = 'administrator', store_id = NULL WHERE id = 3;
```
### 2. Vérifier et corriger les permissions
#### 2. Redémarrer l'application
```bash
# Connexion à la base de production
docker exec regisflow-regisflow-1 psql -U regisflow -d regisflow
docker restart regisflow-regisflow-1
```
### 3. Commandes SQL directes
```sql
-- 1. Vérifier l'utilisateur problématique
SELECT id, username, role, store_id FROM users WHERE id = 3;
#### 3. Test après correction
Les ventes devraient maintenant être créées sur le bon magasin sélectionné.
-- 2. Corriger les droits admin
UPDATE users SET role = 'administrator', store_id = NULL WHERE id = 3 AND username = 'gael';
-- 3. Vérifier tous les magasins
SELECT * FROM stores ORDER BY id;
-- 4. Vérifier les ventes par magasin
SELECT store_id, COUNT(*) as total FROM sales GROUP BY store_id;
```
## Résultats attendus
Après correction, l'admin devrait voir tous les magasins et pouvoir filtrer les ventes correctement.
## ✅ RÉSULTATS ATTENDUS
- L'admin peut voir et sélectionner tous les magasins
- Les ventes sont créées sur le magasin sélectionné
- L'historique affiche les ventes du bon magasin
+1 -1
View File
@@ -88,7 +88,7 @@ export default function NewSaleForm() {
mutationFn: async (saleData: any) => {
const dataToSend = {
...saleData,
...(user?.role === 'admin' && selectedStoreId && { storeId: selectedStoreId })
...(user?.role === 'administrator' && selectedStoreId && { storeId: selectedStoreId })
};
const response = await apiRequest('/api/sales', {
+1 -1
View File
@@ -71,7 +71,7 @@ export default function NewSaleFormMulti() {
mutationFn: async (saleData: any) => {
const dataToSend = {
...saleData,
...(user?.role === 'admin' && selectedStoreId && { storeId: selectedStoreId })
...(user?.role === 'administrator' && selectedStoreId && { storeId: selectedStoreId })
};
const response = await apiRequest('/api/sales', {