# Consolidated Quotes Consolidation Changes

This document lists the changes made in the `unifyingQuote-consolidated` branch, focusing on the transition from individual `SupplierQuote` to `ConsolidatedSupplierQuote` and the addition of new workflow features.

## General Changes
- **Deprecated Legacy Quotes**: The previous individual `SupplierQuote` logic and its routes have been deprecated and commented out in favor of the new consolidated system.
- **Unified Quote Logic**: All supply order items now use `ConsolidatedSupplierQuote`, allowing multiple items from the same supplier to be grouped under a single quote.
- **New Workflow Statuses**: Added `action_status` to track the lifecycle of a quote (e.g., draft, finalized).

## Endpoint Changes

### 1. Consolidated Supplier Quotes Operations

#### **POST** `/api/v1/supply/orders/{order}/consolidated-quotes`
- **Description**: Creates a new consolidated quote for a supply order.
- **Changes**: 
    - Added `supply_order_id` as an optional field in the request body (used if `{order}` isn't in the URI).
    - Automatically assigns `agent_id` from the supply order if not explicitly provided.

#### **POST** `/api/v1/supply/consolidated-quotes/{consolidated_quote}/save-draft`
- **Description**: Saves the consolidated quote as a draft.
- **Fields accepted**: `notes`, `total_price`, `currency`, `lead_time_days`, `delivery_date`, `valid_until`, `payment_method`, `phone_number`, `commercial_register_number`.

#### **POST** `/api/v1/supply/consolidated-quotes/{consolidated_quote}/finalize`
- **Description**: Finalizes the consolidated quote, moving it from draft to an actionable status.
- **Fields accepted**: (Same as save-draft) `notes`, `total_price`, `currency`, `lead_time_days`, `delivery_date`, `valid_until`, `payment_method`, `phone_number`, `commercial_register_number`.

#### **POST** `/api/v1/supply/consolidated-quotes/{consolidated_quote}/export-pdf`
- **Description**: Generates a PDF version of the consolidated quote.
- **Returns**: `pdf_path` and `pdf_url`.

#### **GET** `/api/v1/supply/consolidated-quotes/{consolidated_quote}/download-pdf`
- **Description**: Retrieves the URL to download the previously generated PDF.

#### **POST** `/api/v1/supply/consolidated-quotes/{consolidated_quote}/reset-to-draft`
- **Description**: Resets a finalized or exported quote back to draft status for editing.

#### **GET** `/api/v1/supply/consolidated-quotes/{consolidated_quote}/action-status`
- **Description**: Returns the current action status (draft, finalized, etc.) and timestamps.

### 2. Purchase Order Operations

#### **POST** `/api/v1/supply/orders/{order}/purchase-orders`
- **Description**: Creates a Purchase Order from approved quotes.
- **Changes**:
    - The `items.*.supplier_quote_id` field now expects the ID from `sup_consolidated_supplier_quote_items` instead of the legacy `sup_supplier_quotes`.
    - Purchase Order Items now store the `consolidated_quote_item_id`.

### 3. Customer Quotation Operations

#### **POST** `/api/v1/supply/orders/{order}/quotations`
#### **PUT** `/api/v1/supply/orders/{order}/quotations/{quotation}`
- **Changes**:
    - Removed reliance on `is_consolidated` flag. All `quote_id` entries are now validated against the `ConsolidatedSupplierQuote` model.
    - Added stricter validation: Quotes must be in `approved` or `confirmed` status.

## Database & Models
- **`sup_consolidated_supplier_quotes`**: Added `action_status`, `saved_as_draft_at`, `finalized_at`, `exported_to_pdf_at`, and `pdf_path`.
- **`sup_purchase_order_items`**: Added `consolidated_quote_item_id` foreign key.
