{
	"info": {
		"_postman_id": "supply-order-close-archive-2026",
		"name": "Supply Order - Close & Archive",
		"description": "Collection for closing, reopening, and archiving completed supply orders. Allows Operations Managers to close orders that are delivered and payment received, reopen closed orders, and archive closed orders to prevent modifications while maintaining historical records.",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"item": [
		{
			"name": "Close Order",
			"item": [
				{
					"name": "Close Supply Order",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Authorization",
								"value": "Bearer {{access_token}}",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/supply/orders/{{supply_order_id}}/close",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"supply",
								"orders",
								"{{supply_order_id}}",
								"close"
							]
						},
						"description": "Close a completed supply order. The order must be:\n- Status: COMPLETED or DELIVERED\n- All items delivered to customer\n- All invoices paid\n\nRequires permission: supply.supply_orders.close\n\nOnce closed, the order cannot be modified."
					},
					"response": [
						{
							"name": "Success Response",
							"originalRequest": {
								"method": "POST",
								"header": [],
								"url": {
									"raw": "{{BASE_URL}}/supply/orders/1/close",
									"host": [
										"{{BASE_URL}}"
									],
									"path": [
										"supply",
										"orders",
										"1",
										"close"
									]
								}
							},
							"status": "OK",
							"code": 200,
							"_postman_previewlanguage": "json",
							"header": [
								{
									"key": "Content-Type",
									"value": "application/json"
								}
							],
							"cookie": [],
							"body": "{\n    \"success\": true,\n    \"message\": \"Order closed successfully\",\n    \"data\": {\n        \"id\": 1,\n        \"order_number\": \"SO-2026-001\",\n        \"status\": {\n            \"value\": \"closed\",\n            \"name\": \"CLOSED\"\n        },\n        \"closed_at\": \"2026-02-11T12:00:00.000000Z\",\n        \"is_closed\": true,\n        \"is_archived\": false,\n        \"can_be_closed\": false\n    },\n    \"status_code\": 200\n}"
						},
						{
							"name": "Error - Order Cannot Be Closed",
							"originalRequest": {
								"method": "POST",
								"header": [],
								"url": {
									"raw": "{{BASE_URL}}/supply/orders/1/close",
									"host": [
										"{{BASE_URL}}"
									],
									"path": [
										"supply",
										"orders",
										"1",
										"close"
									]
								}
							},
							"status": "Unprocessable Entity",
							"code": 422,
							"_postman_previewlanguage": "json",
							"header": [
								{
									"key": "Content-Type",
									"value": "application/json"
								}
							],
							"cookie": [],
							"body": "{\n    \"success\": false,\n    \"message\": \"Order cannot be closed. Order must be delivered and all payments received.\",\n    \"status_code\": 422\n}"
						}
					]
				},
				{
					"name": "Check if Order Can Be Closed",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Authorization",
								"value": "Bearer {{access_token}}",
								"type": "text"
							}
						],
						"url": {
							"raw": "{{BASE_URL}}/supply/orders/{{supply_order_id}}?fields=can_be_closed,is_closed,is_archived,closed_at",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"supply",
								"orders",
								"{{supply_order_id}}"
							],
							"query": [
								{
									"key": "fields",
									"value": "can_be_closed,is_closed,is_archived,closed_at",
									"description": "Optional: Filter fields to check close status"
								}
							]
						},
						"description": "Check if an order can be closed by viewing the order details. Look for the 'can_be_closed' field in the response.\n\nRequires permission: supply.supply_orders.view"
					},
					"response": []
				},
				{
					"name": "Reopen Closed Order",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Authorization",
								"value": "Bearer {{access_token}}",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/supply/orders/{{supply_order_id}}/reopen",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"supply",
								"orders",
								"{{supply_order_id}}",
								"reopen"
							]
						},
						"description": "Reopen a closed or archived supply order. The order must be:\n- Status: CLOSED or ARCHIVED\n\nRequires permission: supply.supply_orders.reopen\n\nWhen reopened, the order status will be recalculated based on current state (items, deliveries, payments). Both closed_at and archived_at timestamps will be cleared."
					},
					"response": [
						{
							"name": "Success Response",
							"originalRequest": {
								"method": "POST",
								"header": [],
								"url": {
									"raw": "{{BASE_URL}}/supply/orders/1/reopen",
									"host": [
										"{{BASE_URL}}"
									],
									"path": [
										"supply",
										"orders",
										"1",
										"reopen"
									]
								}
							},
							"status": "OK",
							"code": 200,
							"_postman_previewlanguage": "json",
							"header": [
								{
									"key": "Content-Type",
									"value": "application/json"
								}
							],
							"cookie": [],
							"body": "{\n    \"success\": true,\n    \"message\": \"Order reopened successfully\",\n    \"data\": {\n        \"id\": 1,\n        \"order_number\": \"SO-2026-001\",\n        \"status\": {\n            \"value\": \"completed\",\n            \"name\": \"COMPLETED\"\n        },\n        \"closed_at\": null,\n        \"archived_at\": null,\n        \"is_closed\": false,\n        \"is_archived\": false,\n        \"can_be_closed\": true,\n        \"can_be_reopened\": false\n    },\n    \"status_code\": 200\n}"
						},
						{
							"name": "Error - Order Not Closed",
							"originalRequest": {
								"method": "POST",
								"header": [],
								"url": {
									"raw": "{{BASE_URL}}/supply/orders/1/reopen",
									"host": [
										"{{BASE_URL}}"
									],
									"path": [
										"supply",
										"orders",
										"1",
										"reopen"
									]
								}
							},
							"status": "Unprocessable Entity",
							"code": 422,
							"_postman_previewlanguage": "json",
							"header": [
								{
									"key": "Content-Type",
									"value": "application/json"
								}
							],
							"cookie": [],
							"body": "{\n    \"success\": false,\n    \"message\": \"Order is not closed or archived. Only closed or archived orders can be reopened.\",\n    \"status_code\": 422\n}"
						}
					]
				}
			],
			"description": "Endpoints for closing completed supply orders"
		},
		{
			"name": "Archive Order",
			"item": [
				{
					"name": "Archive Supply Order",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Authorization",
								"value": "Bearer {{access_token}}",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/supply/orders/{{supply_order_id}}/archive",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"supply",
								"orders",
								"{{supply_order_id}}",
								"archive"
							]
						},
						"description": "Archive a closed supply order. The order must be:\n- Status: CLOSED\n\nRequires permission: supply.supply_orders.archive\n\nOnce archived, the order cannot be modified and will be excluded from default queries."
					},
					"response": [
						{
							"name": "Success Response",
							"originalRequest": {
								"method": "POST",
								"header": [],
								"url": {
									"raw": "{{BASE_URL}}/supply/orders/1/archive",
									"host": [
										"{{BASE_URL}}"
									],
									"path": [
										"supply",
										"orders",
										"1",
										"archive"
									]
								}
							},
							"status": "OK",
							"code": 200,
							"_postman_previewlanguage": "json",
							"header": [
								{
									"key": "Content-Type",
									"value": "application/json"
								}
							],
							"cookie": [],
							"body": "{\n    \"success\": true,\n    \"message\": \"Order archived successfully\",\n    \"data\": {\n        \"id\": 1,\n        \"order_number\": \"SO-2026-001\",\n        \"status\": {\n            \"value\": \"archived\",\n            \"name\": \"ARCHIVED\"\n        },\n        \"closed_at\": \"2026-02-11T12:00:00.000000Z\",\n        \"archived_at\": \"2026-02-11T13:00:00.000000Z\",\n        \"is_closed\": false,\n        \"is_archived\": true,\n        \"can_be_closed\": false\n    },\n    \"status_code\": 200\n}"
						},
						{
							"name": "Error - Order Not Closed",
							"originalRequest": {
								"method": "POST",
								"header": [],
								"url": {
									"raw": "{{BASE_URL}}/supply/orders/1/archive",
									"host": [
										"{{BASE_URL}}"
									],
									"path": [
										"supply",
										"orders",
										"1",
										"archive"
									]
								}
							},
							"status": "Unprocessable Entity",
							"code": 422,
							"_postman_previewlanguage": "json",
							"header": [
								{
									"key": "Content-Type",
									"value": "application/json"
								}
							],
							"cookie": [],
							"body": "{\n    \"success\": false,\n    \"message\": \"Order must be closed before it can be archived.\",\n    \"status_code\": 422\n}"
						}
					]
				}
			],
			"description": "Endpoints for archiving closed supply orders"
		},
		{
			"name": "List Orders",
			"item": [
				{
					"name": "Get Closed Orders",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Authorization",
								"value": "Bearer {{access_token}}",
								"type": "text"
							}
						],
						"url": {
							"raw": "{{BASE_URL}}/supply/orders/closed?per_page=15&search=&priority=&city=&agent_id=&created_from=&created_to=&delivery_from=&delivery_to=",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"supply",
								"orders",
								"closed"
							],
							"query": [
								{
									"key": "per_page",
									"value": "15",
									"description": "Number of items per page"
								},
								{
									"key": "search",
									"value": "",
									"description": "Search by order number, customer name, or phone"
								},
								{
									"key": "priority",
									"value": "",
									"description": "Filter by priority: low, normal, high, urgent"
								},
								{
									"key": "city",
									"value": "",
									"description": "Filter by city"
								},
								{
									"key": "agent_id",
									"value": "",
									"description": "Filter by agent ID"
								},
								{
									"key": "created_from",
									"value": "",
									"description": "Filter orders created from date (YYYY-MM-DD)"
								},
								{
									"key": "created_to",
									"value": "",
									"description": "Filter orders created to date (YYYY-MM-DD)"
								},
								{
									"key": "delivery_from",
									"value": "",
									"description": "Filter by required delivery date from (YYYY-MM-DD)"
								},
								{
									"key": "delivery_to",
									"value": "",
									"description": "Filter by required delivery date to (YYYY-MM-DD)"
								}
							]
						},
						"description": "Get a paginated list of closed supply orders (not archived).\n\nRequires permission: supply.supply_orders.view\n\nClosed orders appear in reports until they are archived."
					},
					"response": [
						{
							"name": "Success Response",
							"originalRequest": {
								"method": "GET",
								"header": [],
								"url": {
									"raw": "{{BASE_URL}}/supply/orders/closed?per_page=15",
									"host": [
										"{{BASE_URL}}"
									],
									"path": [
										"supply",
										"orders",
										"closed"
									],
									"query": [
										{
											"key": "per_page",
											"value": "15"
										}
									]
								}
							},
							"status": "OK",
							"code": 200,
							"_postman_previewlanguage": "json",
							"header": [
								{
									"key": "Content-Type",
									"value": "application/json"
								}
							],
							"cookie": [],
							"body": "{\n    \"success\": true,\n    \"message\": \"Closed orders retrieved successfully\",\n    \"data\": {\n        \"data\": [\n            {\n                \"id\": 1,\n                \"order_number\": \"SO-2026-001\",\n                \"status\": {\n                    \"value\": \"closed\",\n                    \"name\": \"CLOSED\"\n                },\n                \"closed_at\": \"2026-02-11T12:00:00.000000Z\",\n                \"is_closed\": true,\n                \"is_archived\": false,\n                \"customer\": {\n                    \"id\": 1,\n                    \"name\": \"ABC Company\"\n                },\n                \"created_at\": \"2026-01-15T10:00:00.000000Z\"\n            }\n        ],\n        \"current_page\": 1,\n        \"per_page\": 15,\n        \"total\": 1,\n        \"last_page\": 1\n    },\n    \"status_code\": 200\n}"
						}
					]
				},
				{
					"name": "Get Archived Orders",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Authorization",
								"value": "Bearer {{access_token}}",
								"type": "text"
							}
						],
						"url": {
							"raw": "{{BASE_URL}}/supply/orders/archived?per_page=15&search=&priority=&city=&agent_id=&created_from=&created_to=&delivery_from=&delivery_to=",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"supply",
								"orders",
								"archived"
							],
							"query": [
								{
									"key": "per_page",
									"value": "15",
									"description": "Number of items per page"
								},
								{
									"key": "search",
									"value": "",
									"description": "Search by order number, customer name, or phone"
								},
								{
									"key": "priority",
									"value": "",
									"description": "Filter by priority: low, normal, high, urgent"
								},
								{
									"key": "city",
									"value": "",
									"description": "Filter by city"
								},
								{
									"key": "agent_id",
									"value": "",
									"description": "Filter by agent ID"
								},
								{
									"key": "created_from",
									"value": "",
									"description": "Filter orders created from date (YYYY-MM-DD)"
								},
								{
									"key": "created_to",
									"value": "",
									"description": "Filter orders created to date (YYYY-MM-DD)"
								},
								{
									"key": "delivery_from",
									"value": "",
									"description": "Filter by required delivery date from (YYYY-MM-DD)"
								},
								{
									"key": "delivery_to",
									"value": "",
									"description": "Filter by required delivery date to (YYYY-MM-DD)"
								}
							]
						},
						"description": "Get a paginated list of archived supply orders.\n\nRequires permission: supply.supply_orders.view\n\nArchived orders are excluded from default queries but accessible via this dedicated endpoint."
					},
					"response": [
						{
							"name": "Success Response",
							"originalRequest": {
								"method": "GET",
								"header": [],
								"url": {
									"raw": "{{BASE_URL}}/supply/orders/archived?per_page=15",
									"host": [
										"{{BASE_URL}}"
									],
									"path": [
										"supply",
										"orders",
										"archived"
									],
									"query": [
										{
											"key": "per_page",
											"value": "15"
										}
									]
								}
							},
							"status": "OK",
							"code": 200,
							"_postman_previewlanguage": "json",
							"header": [
								{
									"key": "Content-Type",
									"value": "application/json"
								}
							],
							"cookie": [],
							"body": "{\n    \"success\": true,\n    \"message\": \"Archived orders retrieved successfully\",\n    \"data\": {\n        \"data\": [\n            {\n                \"id\": 1,\n                \"order_number\": \"SO-2026-001\",\n                \"status\": {\n                    \"value\": \"archived\",\n                    \"name\": \"ARCHIVED\"\n                },\n                \"closed_at\": \"2026-02-11T12:00:00.000000Z\",\n                \"archived_at\": \"2026-02-11T13:00:00.000000Z\",\n                \"is_closed\": false,\n                \"is_archived\": true,\n                \"customer\": {\n                    \"id\": 1,\n                    \"name\": \"ABC Company\"\n                },\n                \"created_at\": \"2026-01-15T10:00:00.000000Z\"\n            }\n        ],\n        \"current_page\": 1,\n        \"per_page\": 15,\n        \"total\": 1,\n        \"last_page\": 1\n    },\n    \"status_code\": 200\n}"
						}
					]
				}
			],
			"description": "Endpoints for listing closed and archived orders"
		}
	],
	"variable": [
		{
			"key": "BASE_URL",
			"value": "http://localhost:8000/api",
			"type": "string"
		},
		{
			"key": "access_token",
			"value": "",
			"type": "string"
		},
		{
			"key": "supply_order_id",
			"value": "1",
			"type": "string"
		}
	]
}
