{
    "info": {
        "_postman_id": "74ab2332-67d1-4d27-8b3d-9f954915c5e2",
        "name": "Mobile Banking - Transactions",
        "description": "Collection pour tester les demandes d'articles et d'espèces",
        "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-74ab2332-67d1-4d27-8b3d-9f954915c5e2?action=share&source=collection_link&creator=39901298"
    },
    "item": [
        {
            "name": "Auth",
            "item": [
                {
                    "name": "Login Freelance",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "exec": [
                                    "if (pm.response.code === 200) {",
                                    "    const jsonData = pm.response.json();",
                                    "    pm.collectionVariables.set('freelance_token', jsonData.data.tokens.accessToken);",
                                    "    console.log('✅ Token Freelance enregistré');",
                                    "}"
                                ],
                                "type": "text/javascript",
                                "packages": {},
                                "requests": {}
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"telephone\": \"0325556688\",\n  \"mot_de_passe\": \"123456789\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/auth/login",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "auth",
                                "login"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Login Caissier",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "exec": [
                                    "if (pm.response.code === 200) {",
                                    "    const jsonData = pm.response.json();",
                                    "    pm.collectionVariables.set('caissier_token', jsonData.data.tokens.accessToken);",
                                    "    console.log('✅ Token Caissier enregistré');",
                                    "}"
                                ],
                                "type": "text/javascript",
                                "packages": {},
                                "requests": {}
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"telephone\": \"0385162831\",\n  \"mot_de_passe\": \"123456789\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/auth/login",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "auth",
                                "login"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Demande Articles",
            "item": [
                {
                    "name": "Créer Demande Articles",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "exec": [
                                    "if (pm.response.code === 201) {",
                                    "    const jsonData = pm.response.json();",
                                    "    pm.collectionVariables.set('transaction_id', jsonData.data.id);",
                                    "    console.log('✅ Transaction ID enregistré: ' + jsonData.data.id);",
                                    "    console.log('📋 Référence: ' + jsonData.data.reference);",
                                    "}"
                                ],
                                "type": "text/javascript"
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Authorization",
                                "value": "Bearer {{freelance_token}}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"lignes\": [\n    {\n      \"produit_id\": 1,\n      \"quantite_demandee\": 10\n    },\n    {\n      \"produit_id\": 2,\n      \"quantite_demandee\": 5\n    }\n  ],\n  \"adresse_livraison\": \"Lot IVA 123, Toamasina\",\n  \"notes\": \"Livraison urgente svp\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/transactions/demandes/articles",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transactions",
                                "demandes",
                                "articles"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Accepter Demande Articles",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Authorization",
                                "value": "Bearer {{caissier_token}}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"statut\": \"PREPAREE\",\n  \"quantites_preparees\": [\n    {\n      \"produit_id\": 3,\n      \"quantites_preparees\": 3\n    },\n    {\n      \"produit_id\": 2,\n      \"quantites_preparees\": 2\n    }\n  ],\n  \"commentaire\": \"Commande préparée et prête pour livraison\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/transactions/demandes/articles/{{transaction_id}}/traiter",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transactions",
                                "demandes",
                                "articles",
                                "{{transaction_id}}",
                                "traiter"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Refuser Demande Articles",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Authorization",
                                "value": "Bearer {{caissier_token}}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"statut\": \"REFUSEE\",\n  \"motif_refus\": \"Stock insuffisant pour le produit ID 2\",\n  \"commentaire\": \"Veuillez commander à nouveau dans 3 jours\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/transactions/demandes/articles/{{transaction_id}}/traiter",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transactions",
                                "demandes",
                                "articles",
                                "{{transaction_id}}",
                                "traiter"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Demande Espèces",
            "item": [
                {
                    "name": "Créer Demande Espèces",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "exec": [
                                    "if (pm.response.code === 201) {",
                                    "    const jsonData = pm.response.json();",
                                    "    pm.collectionVariables.set('transaction_id', jsonData.data.id);",
                                    "    console.log('✅ Transaction ID enregistré: ' + jsonData.data.id);",
                                    "    console.log('📋 Référence: ' + jsonData.data.reference);",
                                    "}"
                                ],
                                "type": "text/javascript"
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Authorization",
                                "value": "Bearer {{freelance_token}}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"montant_total\": 500000,\n  \"adresse_livraison\": \"Lot IVA 123, Toamasina\",\n  \"billetage\": {\n    \"billet_10000\": 30,\n    \"billet_5000\": 20,\n    \"billet_2000\": 25,\n    \"billet_1000\": 50\n  },\n  \"notes\": \"Besoin de petites coupures pour la vente\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/transactions/demandes/especes",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transactions",
                                "demandes",
                                "especes"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Accepter Demande Espèces",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Authorization",
                                "value": "Bearer {{caissier_token}}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"statut\": \"PREPAREE\",\n  \"billetage\": {\n    \"billet_10000\": 30,\n    \"billet_5000\": 20,\n    \"billet_2000\": 25,\n    \"billet_1000\": 50\n  },\n  \"commentaire\": \"Espèces préparées selon le billetage demandé\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/transactions/demandes/especes/{{transaction_id}}/traiter",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transactions",
                                "demandes",
                                "especes",
                                "{{transaction_id}}",
                                "traiter"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Refuser Demande Espèces",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Authorization",
                                "value": "Bearer {{caissier_token}}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"statut\": \"REFUSEE\",\n  \"motif_refus\": \"Caisse insuffisante. Disponible: 300000 Ar\",\n  \"commentaire\": \"Réessayez demain après le réapprovisionnement\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/transactions/demandes/especes/{{transaction_id}}/traiter",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transactions",
                                "demandes",
                                "especes",
                                "{{transaction_id}}",
                                "traiter"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Tests d'erreurs",
            "item": [
                {
                    "name": "Freelance sans zone",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Authorization",
                                "value": "Bearer {{freelance_token}}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"lignes\": [\n    {\n      \"produit_id\": 1,\n      \"quantite_demandee\": 5\n    }\n  ]\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/transactions/demandes/articles",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transactions",
                                "demandes",
                                "articles"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Caissier sans permission",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Authorization",
                                "value": "Bearer {{caissier_token}}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"statut\": \"PREPAREE\",\n  \"quantites_preparees\": {\n    \"1\": 5\n  }\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/transactions/demandes/articles/999/traiter",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transactions",
                                "demandes",
                                "articles",
                                "999",
                                "traiter"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Freelance tente de traiter",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Authorization",
                                "value": "Bearer {{freelance_token}}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"statut\": \"PREPAREE\",\n  \"quantites_preparees\": {\n    \"1\": 5\n  }\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/transactions/demandes/articles/{{transaction_id}}/traiter",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transactions",
                                "demandes",
                                "articles",
                                "{{transaction_id}}",
                                "traiter"
                            ]
                        }
                    },
                    "response": []
                },
                {
                    "name": "Caissier tente de créer demande",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Authorization",
                                "value": "Bearer {{caissier_token}}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"montant_total\": 100000,\n  \"adresse_livraison\": \"Test\"\n}"
                        },
                        "url": {
                            "raw": "{{base_url}}/transactions/demandes/especes",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transactions",
                                "demandes",
                                "especes"
                            ]
                        }
                    },
                    "response": []
                }
            ]
        }
    ],
    "variable": [
        {
            "key": "base_url",
            "value": "http://localhost:3001/api",
            "type": "string"
        },
        {
            "key": "freelance_token",
            "value": "",
            "type": "string"
        },
        {
            "key": "caissier_token",
            "value": "",
            "type": "string"
        },
        {
            "key": "transaction_id",
            "value": "",
            "type": "string"
        }
    ]
}