{
    "info": {
        "_postman_id": "84447dc5-3b35-481b-ab78-a583a42c6427",
        "name": "Gestion Produits & Seuils Prix",
        "description": "Collection complète pour tester la gestion des produits, seuils de prix, promotions et stocks",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
        "_exporter_id": "39901298",
        "_collection_link": "https://www.postman.com/supply-astronomer-57355752/workspace/cmz/collection/39901298-84447dc5-3b35-481b-ab78-a583a42c6427?action=share&source=collection_link&creator=39901298"
    },
    "item": [
        {
            "name": "1. AUTHENTIFICATION",
            "item": [
                {
                    "name": "Login Responsable",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "exec": [
                                    "pm.test('Status 200', () => pm.response.to.have.status(200));",
                                    "pm.test('Token saved', () => { const r = pm.response.json(); pm.collectionVariables.set('auth_token', r.data.tokens.accessToken); console.log('✅ Token:', pm.collectionVariables); });"
                                ],
                                "type": "text/javascript",
                                "packages": {},
                                "requests": {}
                            }
                        },
                        {
                            "listen": "prerequest",
                            "script": {
                                "exec": [
                                    ""
                                ],
                                "type": "text/javascript",
                                "packages": {},
                                "requests": {}
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"telephone\":\"0340000000\",\"mot_de_passe\":\"Admin@2025\"}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        },
                        "url": {
                            "raw": "{{base_url}}/auth/login",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "auth",
                                "login"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "2. GESTION PRODUITS",
            "item": [
                {
                    "name": "Créer Produit (Code Auto)",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "exec": [
                                    "if (pm.response.code === 201) {",
                                    "    const jsonData = pm.response.json();",
                                    "    pm.collectionVariables.set('produit_id', jsonData.data.produit.id);",
                                    "    console.log('Produit ID saved:', jsonData.data.produit.id);",
                                    "}"
                                ],
                                "type": "text/javascript",
                                "packages": {},
                                "requests": {}
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"nom\": \"Carte YAS 1000\",\n  \"categorie\": \"CARTE_CREDIT\",\n  \"description\": \"Carte\",\n  \"seuils\": [\n    {\n      \"type_vente\": \"DETAIL\",\n      \"quantite_min\": 1,\n      \"quantite_max\": 10,\n      \"prix_unitaire\": 1000,\n      \"marge_pourcentage\": 15\n    },\n    {\n      \"type_vente\": \"INTERMEDIAIRE\",\n      \"quantite_min\": 11,\n      \"quantite_max\": 50,\n      \"prix_unitaire\": 900,\n      \"marge_pourcentage\": 12\n    },\n    {\n      \"type_vente\": \"GROS\",\n      \"quantite_min\": 51,\n      \"prix_unitaire\": 800,\n      \"marge_pourcentage\": 10\n    }\n  ]\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Créer Produit (Code Personnalisé)",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"nom\": \"Puce SIM Airtel\",\n  \"categorie\": \"PUCE\",\n  \"description\": \"Puce SIM avec forfait inclus\",\n  \"seuils\": [\n    {\n      \"type_vente\": \"DETAIL\",\n      \"quantite_min\": 1,\n      \"quantite_max\": 20,\n      \"prix_unitaire\": 5000,\n      \"marge_pourcentage\": 20\n    },\n    {\n      \"type_vente\": \"GROS\",\n      \"quantite_min\": 21,\n      \"prix_unitaire\": 4500,\n      \"marge_pourcentage\": 15\n    }\n  ]\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Lister Tous les Produits",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/produits",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Lister Produits (Filtre Catégorie)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/produits?categorie=CARTE_CREDIT",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits"
                            ],
                            "query": [
                                {
                                    "key": "categorie",
                                    "value": "CARTE_CREDIT"
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Récupérer un Produit par ID",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Mettre à jour un Produit",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"nom\": \"Carte YAS 2000\",\n  \"description\": \"Carte de crédit\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "3. GESTION SEUILS DE PRIX",
            "item": [
                {
                    "name": "Ajouter un Seuil de Prix",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "exec": [
                                    "if (pm.response.code === 201) {",
                                    "    const jsonData = pm.response.json();",
                                    "    pm.collectionVariables.set('seuil_id', jsonData.data.id);",
                                    "    console.log('Seuil ID saved:', jsonData.data.id);",
                                    "}"
                                ],
                                "type": "text/javascript"
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"type_vente\": \"INTERMEDIAIRE\",\n  \"quantite_min\": 100,\n  \"quantite_max\": 500,\n  \"prix_unitaire\": 42000,\n  \"marge_pourcentage\": 8\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/seuils",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "seuils"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Lister Seuils Actifs",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/seuils",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "seuils"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Lister Seuils avec Historique",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/seuils?include_history=true",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "seuils"
                            ],
                            "query": [
                                {
                                    "key": "include_history",
                                    "value": "true"
                                }
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Modifier un Seuil (Historisation)",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "exec": [
                                    "if (pm.response.code === 201) {\r",
                                    "    const jsonData = pm.response.json();\r",
                                    "    pm.collectionVariables.set('seuil_id', jsonData.data.nouveau.id);\r",
                                    "    console.log('Seuil ID saved:', jsonData.data.nouveau.id);\r",
                                    "}"
                                ],
                                "type": "text/javascript",
                                "packages": {},
                                "requests": {}
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"prix_unitaire\": 52000,\n  \"marge_pourcentage\": 18\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/seuils/{{seuil_id}}/modifier",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "seuils",
                                "{{seuil_id}}",
                                "modifier"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "4. GESTION PROMOTIONS",
            "item": [
                {
                    "name": "Créer une Promotion (Noël 2024)",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"prix_unitaire\": 42000,\n  \"marge_pourcentage\": 10,\n  \"date_debut\": \"2024-12-20\",\n  \"date_fin\": \"2024-12-31\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/seuils/{{seuil_id}}/promotions",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "seuils",
                                "{{seuil_id}}",
                                "promotions"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Créer Promotion (Début Immédiat)",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"prix_unitaire\": 38000,\n  \"date_fin\": \"2025-01-15\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/seuils/{{seuil_id}}/promotions",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "seuils",
                                "{{seuil_id}}",
                                "promotions"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Lister Seuils (Vérifier Promo Active)",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/seuils",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "seuils"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "5. GESTION STOCKS",
            "item": [
                {
                    "name": "Initialiser Stock Freelance",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"quantite_initiale\": 150\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/stocks/freelances/{{freelance_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "stocks",
                                "freelances",
                                "{{freelance_id}}"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Initialiser Stock Établissement",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"quantite_initiale\": 5000\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/stocks/etablissements/{{etablissement_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "stocks",
                                "etablissements",
                                "{{etablissement_id}}"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Produits avec Stock Freelance",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/produits/freelances/{{freelance_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "freelances",
                                "{{freelance_id}}"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Produits avec Stock Établissement",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/produits/etablissements/{{etablissement_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "etablissements",
                                "{{etablissement_id}}"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "6. SCÉNARIOS COMPLETS",
            "item": [
                {
                    "name": "Scénario 1 - Créer Téléphone",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"nom\": \"iPhone 15 Pro Max\",\n  \"categorie\": \"TELEPHONE\",\n  \"reference_article\": \"APPLE-IP15PM\",\n  \"description\": \"Smartphone Apple dernière génération\",\n  \"seuils\": [\n    {\n      \"type_vente\": \"DETAIL\",\n      \"quantite_min\": 1,\n      \"quantite_max\": 5,\n      \"prix_unitaire\": 5500000,\n      \"marge_pourcentage\": 8\n    },\n    {\n      \"type_vente\": \"GROS\",\n      \"quantite_min\": 6,\n      \"prix_unitaire\": 5300000,\n      \"marge_pourcentage\": 5\n    }\n  ]\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Scénario 2 - Créer Décodeur Canal+",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"nom\": \"Décodeur Canal+ HD\",\n  \"categorie\": \"CANAL\",\n  \"reference_article\": \"CANAL-HD-2024\",\n  \"description\": \"Décodeur haute définition avec abonnement 6 mois\",\n  \"seuils\": [\n    {\n      \"type_vente\": \"DETAIL\",\n      \"quantite_min\": 1,\n      \"quantite_max\": 10,\n      \"prix_unitaire\": 250000,\n      \"marge_pourcentage\": 20\n    },\n    {\n      \"type_vente\": \"INTERMEDIAIRE\",\n      \"quantite_min\": 11,\n      \"quantite_max\": 50,\n      \"prix_unitaire\": 230000,\n      \"marge_pourcentage\": 15\n    },\n    {\n      \"type_vente\": \"GROS\",\n      \"quantite_min\": 51,\n      \"prix_unitaire\": 210000,\n      \"marge_pourcentage\": 12\n    }\n  ]\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "7. TESTS VALIDATION",
            "item": [
                {
                    "name": "Test - Créer Produit sans Seuil (ERREUR)",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"nom\": \"Produit Test\",\n  \"categorie\": \"PUCE\",\n  \"seuils\": []\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Test - Seuils Chevauchants (ERREUR)",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"nom\": \"Produit Test Chevauchement\",\n  \"categorie\": \"PUCE\",\n  \"seuils\": [\n    {\n      \"type_vente\": \"DETAIL\",\n      \"quantite_min\": 1,\n      \"quantite_max\": 10,\n      \"prix_unitaire\": 5000\n    },\n    {\n      \"type_vente\": \"DETAIL\",\n      \"quantite_min\": 5,\n      \"quantite_max\": 15,\n      \"prix_unitaire\": 4800\n    }\n  ]\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Test - Promotion sans Date Fin (ERREUR)",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"prix_unitaire\": 40000\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/seuils/{{seuil_id}}/promotions",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "seuils",
                                "{{seuil_id}}",
                                "promotions"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Test - Stock Existant (ERREUR)",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"quantite_initiale\": 100\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/stocks/freelances/{{freelance_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "stocks",
                                "freelances",
                                "{{freelance_id}}"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "8.Desactivation",
            "item": [
                {
                    "name": "Désactiver un Produit",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Désactiver un Seuil",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "url": {
                            "raw": "{{base_url}}/produits/{{produit_id}}/seuils/{{seuil_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "produits",
                                "{{produit_id}}",
                                "seuils",
                                "{{seuil_id}}"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        }
    ],
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "token",
                "value": "{{auth_token}}",
                "type": "string"
            }
        ]
    },
    "event": [
        {
            "listen": "prerequest",
            "script": {
                "type": "text/javascript",
                "packages": {},
                "requests": {},
                "exec": [
                    ""
                ]
            }
        },
        {
            "listen": "test",
            "script": {
                "type": "text/javascript",
                "packages": {},
                "requests": {},
                "exec": [
                    ""
                ]
            }
        }
    ],
    "variable": [
        {
            "key": "base_url",
            "value": "http://localhost:3000/api"
        },
        {
            "key": "auth_token",
            "value": ""
        },
        {
            "key": "produit_id",
            "value": ""
        },
        {
            "key": "seuil_id",
            "value": "1"
        },
        {
            "key": "freelance_id",
            "value": "1"
        },
        {
            "key": "etablissement_id",
            "value": "1"
        }
    ]
}