2025-12-13 23:57:54 +01:00
|
|
|
{
|
|
|
|
|
"location": {
|
|
|
|
|
"id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"parent_tenant_id": "80000000-0000-4000-a000-000000000001",
|
|
|
|
|
"name": "Barcelona Gràcia",
|
|
|
|
|
"location_code": "ENT-BCN-001",
|
|
|
|
|
"city": "Barcelona",
|
|
|
|
|
"zone": "Gràcia",
|
|
|
|
|
"address": "Carrer de Verdi, 28",
|
|
|
|
|
"postal_code": "08012",
|
|
|
|
|
"country": "España",
|
|
|
|
|
"latitude": 41.4036,
|
|
|
|
|
"longitude": 2.1561,
|
|
|
|
|
"status": "ACTIVE",
|
|
|
|
|
"opening_hours": "07:30-21:30",
|
|
|
|
|
"daily_capacity": 1800,
|
|
|
|
|
"storage_capacity_kg": 6000,
|
|
|
|
|
"created_at": "2025-01-15T06:00:00Z",
|
|
|
|
|
"enterprise_location": true,
|
|
|
|
|
"location_type": "retail_and_wholesale",
|
|
|
|
|
"manager_id": "50000000-0000-0000-0000-000000000012",
|
|
|
|
|
"staff_count": 15,
|
|
|
|
|
"equipment": [
|
|
|
|
|
"30000000-0000-0000-0000-000000000002"
|
|
|
|
|
],
|
|
|
|
|
"shared_ingredients": [
|
|
|
|
|
"10000000-0000-0000-0000-000000000001",
|
|
|
|
|
"10000000-0000-0000-0000-000000000002",
|
|
|
|
|
"10000000-0000-0000-0000-000000000003",
|
|
|
|
|
"20000000-0000-0000-0000-000000000001",
|
|
|
|
|
"20000000-0000-0000-0000-000000000002"
|
|
|
|
|
],
|
|
|
|
|
"shared_recipes": [
|
|
|
|
|
"30000000-0000-0000-0000-000000000001",
|
|
|
|
|
"30000000-0000-0000-0000-000000000002"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"local_inventory": [
|
|
|
|
|
{
|
|
|
|
|
"id": "10000000-0000-0000-0000-000000002001",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"ingredient_id": "10000000-0000-0000-0000-000000000001",
|
|
|
|
|
"quantity": 180.0,
|
|
|
|
|
"location": "Barcelona Gràcia - Storage",
|
|
|
|
|
"production_stage": "RAW_MATERIAL",
|
|
|
|
|
"quality_status": "APPROVED",
|
2025-12-14 11:58:14 +01:00
|
|
|
"expiration_date": "BASE_TS + 35d 18h",
|
2025-12-13 23:57:54 +01:00
|
|
|
"supplier_id": "40000000-0000-0000-0000-000000000001",
|
|
|
|
|
"batch_number": "BCN-HAR-20250115-001",
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"enterprise_shared": true,
|
2025-12-15 21:14:22 +01:00
|
|
|
"source_location": "Central Warehouse - Barcelona",
|
|
|
|
|
"staff_assigned": []
|
2025-12-13 23:57:54 +01:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "10000000-0000-0000-0000-000000002002",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"ingredient_id": "10000000-0000-0000-0000-000000000002",
|
|
|
|
|
"quantity": 45.0,
|
|
|
|
|
"location": "Barcelona Gràcia - Cold Storage",
|
|
|
|
|
"production_stage": "RAW_MATERIAL",
|
|
|
|
|
"quality_status": "APPROVED",
|
2025-12-14 11:58:14 +01:00
|
|
|
"expiration_date": "BASE_TS + 9d 18h",
|
2025-12-13 23:57:54 +01:00
|
|
|
"supplier_id": "40000000-0000-0000-0000-000000000002",
|
|
|
|
|
"batch_number": "BCN-MAN-20250115-001",
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"enterprise_shared": true,
|
2025-12-15 21:14:22 +01:00
|
|
|
"source_location": "Central Warehouse - Barcelona",
|
|
|
|
|
"staff_assigned": []
|
2025-12-13 23:57:54 +01:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "20000000-0000-0000-0000-000000002001",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"ingredient_id": "20000000-0000-0000-0000-000000000001",
|
|
|
|
|
"quantity": 65.0,
|
|
|
|
|
"location": "Barcelona Gràcia - Display",
|
|
|
|
|
"production_stage": "FINISHED_PRODUCT",
|
|
|
|
|
"quality_status": "APPROVED",
|
2025-12-14 11:58:14 +01:00
|
|
|
"expiration_date": "BASE_TS + 1d",
|
2025-12-13 23:57:54 +01:00
|
|
|
"supplier_id": null,
|
|
|
|
|
"batch_number": "BCN-BAG-20250115-001",
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"enterprise_shared": true,
|
2025-12-15 21:14:22 +01:00
|
|
|
"source_location": "Central Production Facility - Barcelona",
|
|
|
|
|
"staff_assigned": []
|
2025-12-13 23:57:54 +01:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "20000000-0000-0000-0000-000000002002",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"ingredient_id": "20000000-0000-0000-0000-000000000002",
|
|
|
|
|
"quantity": 30.0,
|
|
|
|
|
"location": "Barcelona Gràcia - Display",
|
|
|
|
|
"production_stage": "FINISHED_PRODUCT",
|
|
|
|
|
"quality_status": "APPROVED",
|
2025-12-14 11:58:14 +01:00
|
|
|
"expiration_date": "BASE_TS + 1d 2h",
|
2025-12-13 23:57:54 +01:00
|
|
|
"supplier_id": null,
|
|
|
|
|
"batch_number": "BCN-CRO-20250115-001",
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"enterprise_shared": true,
|
2025-12-15 21:14:22 +01:00
|
|
|
"source_location": "Central Production Facility - Barcelona",
|
|
|
|
|
"staff_assigned": []
|
2025-12-13 23:57:54 +01:00
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"local_sales": [
|
|
|
|
|
{
|
|
|
|
|
"id": "70000000-0000-0000-0000-000000004001",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"sale_date": "2025-01-15T08:30:00Z",
|
|
|
|
|
"product_id": "20000000-0000-0000-0000-000000000001",
|
|
|
|
|
"quantity_sold": 35.0,
|
|
|
|
|
"unit_price": 2.85,
|
|
|
|
|
"total_revenue": 99.75,
|
|
|
|
|
"sales_channel": "RETAIL",
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"notes": "Venda local a Barcelona Gràcia - matí",
|
|
|
|
|
"enterprise_location_sale": true,
|
|
|
|
|
"parent_order_id": "60000000-0000-0000-0000-000000003001"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "70000000-0000-0000-0000-000000004002",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"sale_date": "2025-01-15T09:15:00Z",
|
|
|
|
|
"product_id": "20000000-0000-0000-0000-000000000002",
|
|
|
|
|
"quantity_sold": 18.0,
|
|
|
|
|
"unit_price": 3.95,
|
2025-12-14 11:58:14 +01:00
|
|
|
"total_revenue": 71.1,
|
2025-12-13 23:57:54 +01:00
|
|
|
"sales_channel": "RETAIL",
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"notes": "Venda de croissants a Barcelona Gràcia",
|
|
|
|
|
"enterprise_location_sale": true,
|
|
|
|
|
"parent_order_id": "60000000-0000-0000-0000-000000003002"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "70000000-0000-0000-0000-000000004003",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"sale_date": "2025-01-14T17:00:00Z",
|
|
|
|
|
"product_id": "20000000-0000-0000-0000-000000000001",
|
|
|
|
|
"quantity_sold": 28.0,
|
|
|
|
|
"unit_price": 2.85,
|
2025-12-14 11:58:14 +01:00
|
|
|
"total_revenue": 79.8,
|
2025-12-13 23:57:54 +01:00
|
|
|
"sales_channel": "RETAIL",
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"notes": "Venda de tarda a Barcelona Gràcia",
|
|
|
|
|
"enterprise_location_sale": true,
|
|
|
|
|
"parent_order_id": "60000000-0000-0000-0000-000000003003"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"local_orders": [
|
|
|
|
|
{
|
|
|
|
|
"id": "60000000-0000-0000-0000-000000003001",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"order_number": "ORD-BCN-GRA-20250115-001",
|
|
|
|
|
"customer_name": "Restaurant El Vaixell",
|
|
|
|
|
"customer_email": "comandes@elvaixell.cat",
|
2025-12-14 11:58:14 +01:00
|
|
|
"order_date": "BASE_TS + 1h",
|
|
|
|
|
"delivery_date": "BASE_TS + 2h 30m",
|
2025-12-13 23:57:54 +01:00
|
|
|
"status": "DELIVERED",
|
|
|
|
|
"total_amount": 99.75,
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"notes": "Comanda matinal per restaurant local",
|
|
|
|
|
"enterprise_location_order": true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "60000000-0000-0000-0000-000000003002",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"order_number": "ORD-BCN-GRA-20250115-002",
|
|
|
|
|
"customer_name": "Cafeteria La Perla",
|
|
|
|
|
"customer_email": "info@laperla.cat",
|
2025-12-14 11:58:14 +01:00
|
|
|
"order_date": "BASE_TS + 30m",
|
|
|
|
|
"delivery_date": "BASE_TS + 3h",
|
2025-12-13 23:57:54 +01:00
|
|
|
"status": "DELIVERED",
|
2025-12-14 11:58:14 +01:00
|
|
|
"total_amount": 71.1,
|
|
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"notes": "Croissants per cafeteria",
|
|
|
|
|
"enterprise_location_order": true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "60000000-0000-0000-0000-000000003003",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"order_number": "ORD-BCN-GRA-20250114-003",
|
|
|
|
|
"customer_name": "Hotel Casa Fuster",
|
|
|
|
|
"customer_email": "compras@casafuster.com",
|
2025-12-14 11:58:14 +01:00
|
|
|
"order_date": "BASE_TS - 1d 8h",
|
|
|
|
|
"delivery_date": "BASE_TS - 1d 11h",
|
2025-12-13 23:57:54 +01:00
|
|
|
"status": "DELIVERED",
|
2025-12-14 11:58:14 +01:00
|
|
|
"total_amount": 79.8,
|
|
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"notes": "Comanda de tarda per hotel",
|
|
|
|
|
"enterprise_location_order": true
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"local_production_batches": [
|
|
|
|
|
{
|
|
|
|
|
"id": "40000000-0000-0000-0000-000000002001",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"batch_number": "BCN-BATCH-20250115-001",
|
|
|
|
|
"recipe_id": "30000000-0000-0000-0000-000000000001",
|
|
|
|
|
"product_id": "20000000-0000-0000-0000-000000000001",
|
|
|
|
|
"planned_quantity": 100.0,
|
|
|
|
|
"actual_quantity": 98.0,
|
|
|
|
|
"status": "COMPLETED",
|
2025-12-14 11:58:14 +01:00
|
|
|
"planned_start_time": "BASE_TS - 1d 22h",
|
|
|
|
|
"actual_start_time": "BASE_TS - 1d 22h 5m",
|
|
|
|
|
"planned_end_time": "BASE_TS",
|
|
|
|
|
"actual_end_time": "BASE_TS + 10m",
|
2025-12-13 23:57:54 +01:00
|
|
|
"equipment_id": "30000000-0000-0000-0000-000000000002",
|
|
|
|
|
"operator_id": "50000000-0000-0000-0000-000000000012",
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"notes": "Producció matinal de baguettes a Barcelona",
|
2025-12-15 21:14:22 +01:00
|
|
|
"enterprise_location_production": true,
|
|
|
|
|
"staff_assigned": []
|
2025-12-13 23:57:54 +01:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "40000000-0000-0000-0000-000000002002",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"batch_number": "BCN-BATCH-20250115-002",
|
|
|
|
|
"recipe_id": "30000000-0000-0000-0000-000000000002",
|
|
|
|
|
"product_id": "20000000-0000-0000-0000-000000000002",
|
|
|
|
|
"planned_quantity": 50.0,
|
|
|
|
|
"actual_quantity": null,
|
|
|
|
|
"status": "IN_PROGRESS",
|
2025-12-14 11:58:14 +01:00
|
|
|
"planned_start_time": "BASE_TS - 1d 23h",
|
|
|
|
|
"actual_start_time": "BASE_TS - 1d 23h",
|
|
|
|
|
"planned_end_time": "BASE_TS + 1h 30m",
|
2025-12-13 23:57:54 +01:00
|
|
|
"actual_end_time": null,
|
|
|
|
|
"equipment_id": "30000000-0000-0000-0000-000000000002",
|
|
|
|
|
"operator_id": "50000000-0000-0000-0000-000000000013",
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"notes": "Producció de croissants en curs a Barcelona",
|
2025-12-15 21:14:22 +01:00
|
|
|
"enterprise_location_production": true,
|
|
|
|
|
"staff_assigned": []
|
2025-12-13 23:57:54 +01:00
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"local_forecasts": [
|
|
|
|
|
{
|
|
|
|
|
"id": "80000000-0000-0000-0000-000000002001",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"product_id": "20000000-0000-0000-0000-000000000001",
|
2025-12-14 11:58:14 +01:00
|
|
|
"forecast_date": "BASE_TS + 18h",
|
2025-12-13 23:57:54 +01:00
|
|
|
"predicted_quantity": 85.0,
|
|
|
|
|
"confidence_score": 0.91,
|
|
|
|
|
"forecast_horizon_days": 1,
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"notes": "Previsió de demanda diària per Barcelona Gràcia",
|
|
|
|
|
"enterprise_location_forecast": true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "80000000-0000-0000-0000-000000002002",
|
|
|
|
|
"tenant_id": "B0000000-0000-4000-a000-000000000001",
|
|
|
|
|
"product_id": "20000000-0000-0000-0000-000000000002",
|
2025-12-14 11:58:14 +01:00
|
|
|
"forecast_date": "BASE_TS + 18h",
|
2025-12-13 23:57:54 +01:00
|
|
|
"predicted_quantity": 45.0,
|
|
|
|
|
"confidence_score": 0.89,
|
|
|
|
|
"forecast_horizon_days": 1,
|
2025-12-14 11:58:14 +01:00
|
|
|
"created_at": "BASE_TS",
|
2025-12-13 23:57:54 +01:00
|
|
|
"notes": "Previsió de croissants per demà a Barcelona",
|
|
|
|
|
"enterprise_location_forecast": true
|
|
|
|
|
}
|
|
|
|
|
]
|
2025-12-14 11:58:14 +01:00
|
|
|
}
|