{
  "id": "R-572",
  "name": "Quote line items should include price columns",
  "description": "Quote line items (QuoteLineItem) should include UnitPrice and Discount fields. Bug #572: Quote line items missing price columns.",
  "object": "Quote",
  "method": "POST",
  "endpoint": "/services/data/v63.0/sobjects/Quote",
  "setup": [
    {
      "type": "sql",
      "name": "Create isolated Account for R-572",
      "sql": "INSERT INTO Account (Id, Name, BillingCountryCode, IsDeleted, CreatedDate, LastModifiedDate, SystemModstamp) VALUES (%s, %s, %s, %s, %s, %s, %s)",
      "params": [
        "r572-acc-01",
        "R-572 Account",
        "{billing_country_code}",
        0,
        "{db_timestamp}",
        "{db_timestamp}",
        "{db_timestamp}"
      ]
    },
    {
      "type": "sql",
      "name": "Create isolated Opportunity for R-572",
      "sql": "INSERT INTO Opportunity (Id, Name, StageName, Amount, CloseDate, AccountId, IsDeleted, CreatedDate, LastModifiedDate, SystemModstamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
      "params": [
        "r572-opp-01",
        "R-572 Opportunity",
        "Prospecting",
        72000,
        "2026-12-31",
        "r572-acc-01",
        0,
        "{db_timestamp}",
        "{db_timestamp}",
        "{db_timestamp}"
      ]
    },
    {
      "object": "Product2",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/Product2",
      "payload": {
        "Name": "R-572 Product {timestamp}",
        "ProductCode": "R572-{timestamp}",
        "Family": "TiDB Cloud",
        "IsActive": true
      },
      "id_var": "product_id"
    },
    {
      "object": "Pricebook2",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/Pricebook2",
      "payload": {
        "Name": "R-572 Pricebook {timestamp}",
        "IsActive": true,
        "IsArchived": false,
        "IsStandard": false
      },
      "id_var": "pricebook2_id"
    },
    {
      "object": "PricebookEntry",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/PricebookEntry",
      "payload": {
        "Product2Id": "{product_id}",
        "Pricebook2Id": "{pricebook2_id}",
        "UnitPrice": 1200.0,
        "IsActive": true,
        "UseStandardPrice": false
      },
      "id_var": "pricebook_entry_id"
    },
    {
      "type": "sql",
      "name": "Create OpportunityLineItem with price data for R-572",
      "sql": "INSERT INTO OpportunityLineItem (Id, OpportunityId, PricebookEntryId, Product2Id, Quantity, UnitPrice, ListPrice, Discount, Unit_Net_Price__c, Net_Fees__c, Service_Start_Date__c, Service_End_Date__c, IsDeleted, CreatedDate, LastModifiedDate, SystemModstamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
      "params": [
        "r572-oli-01",
        "r572-opp-01",
        "{pricebook_entry_id}",
        "{product_id}",
        1,
        1200.0,
        1200.0,
        8,
        1100.0,
        1100.0,
        "2026-06-01",
        "2026-12-31",
        0,
        "{db_timestamp}",
        "{db_timestamp}",
        "{db_timestamp}"
      ]
    }
  ],
  "payload": {
    "Name": "Quote LineItem Price Columns Test {timestamp}",
    "OpportunityId": "r572-opp-01",
    "OwnerId": "0055g000001i4R9AAI"
  },
  "extract": {
    "quote_id": "id"
  },
  "timeout_seconds": 90,
  "expects": {
    "status_code": 201
  },
  "query_after": {
    "object": "quote_product__c",
    "id_field": "Quote__c",
    "record_id": "{quote_id}",
    "retry": 3,
    "delay_ms": 2000,
    "select_fields": [
      "Quote__c",
      "List_Price__c",
      "Discount__c",
      "Unit_Net_Price__c"
    ],
    "assertions": [
      {
        "field": "List_Price__c",
        "operator": "eq",
        "value": 1200.0
      },
      {
        "field": "Discount__c",
        "operator": "eq",
        "value": 8
      },
      {
        "field": "Unit_Net_Price__c",
        "operator": "eq",
        "value": 1100.0
      }
    ]
  },
  "teardown": [
    {
      "type": "sql",
      "sql": "DELETE FROM quote_product__c WHERE Quote__c = %s",
      "params": ["{quote_id}"]
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/Quote/{quote_id}"
    },
    {
      "type": "sql",
      "sql": "DELETE FROM OpportunityLineItem WHERE Id = %s",
      "params": ["r572-oli-01"]
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/PricebookEntry/{pricebook_entry_id}"
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/Pricebook2/{pricebook2_id}"
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/Product2/{product_id}"
    },
    {
      "type": "sql",
      "sql": "DELETE FROM Opportunity WHERE Id = %s",
      "params": ["r572-opp-01"]
    },
    {
      "type": "sql",
      "sql": "DELETE FROM Account WHERE Id = %s",
      "params": ["r572-acc-01"]
    }
  ],
  "priority": "P0",
  "bug_ref": "#572",
  "scene": "quote"
}
