4:42:49 PM [express] GET /api/description-templates 304 in 191ms :: [{"id":10,"name":"NEXY","categor…
📝 PUT /api/catalog-products/361 - Received data: {
  sku: 'SKU-361',
  title: 'Szafka na buty VB 80×36×45 cm z siedziskiem i schowkiem D1N1 SONOMA',
  shortDescription: '',
  productType: 'VB',
  productGroup: 'VB50',
  doors: 'D1',
  legs: 'N1',
  longDescriptionHtml: 'present'
}
4:42:52 PM [express] PUT /api/catalog-products/361 200 in 182ms :: {"id":361,"product_id":null,"exte…
✅ [BOM DELETE] Usunięto BOM dla produktu 361
4:42:52 PM [express] DELETE /api/catalog-products/361/bom 200 in 267ms :: {"success":true,"message":…
4:42:52 PM [express] GET /api/catalog-products/361/bom 404 in 159ms :: {"error":"BOM not found for t…
4:42:52 PM [express] GET /api/catalog-products/361 200 in 263ms :: {"id":361,"sku":"SKU-361","title"…
4:42:52 PM [express] GET /api/stats/counts 304 in 415ms :: {"products":{"catalogProducts":109,"catal…
4:42:53 PM [express] GET /api/catalog-products/361 304 in 253ms :: {"id":361,"sku":"SKU-361","title"…
🔧 [BOM GENERATOR] Starting for product 361...
📝 PUT /api/catalog-products/361 - Received data: {
  sku: 'SKU-361',
  title: 'Szafka na buty VB 80×36×45 cm z siedziskiem i schowkiem D1N1 SONOMA',
  shortDescription: '',
  productType: 'VB',
  productGroup: 'VB50',
  doors: 'D1',
  legs: 'N1',
  longDescriptionHtml: 'present'
}
📦 [BOM] Product: Szafka na buty VB 80×36×45 cm z siedziskiem i schowkiem D1N1 SONOMA
📦 [BOM] Type: VB, Dimensions: 800×360mm, Color: SONOMA
📦 [BOM] Doors: D1, Legs: N1
📦 [BOM] ColorOptions: [ 'DRZWI-L-BIALY' ]
🔍 [BOM] Base type: VB, Dimensions: 80×36 cm
4:42:53 PM [express] PUT /api/catalog-products/361 200 in 176ms :: {"id":361,"product_id":null,"exte…
📋 [BOM] Found 16 templates for VB
🔍 [BOM] Processing 10 parent templates...
  → Parent "BOK-L-VB" has no children, using as-is
  → Parent "BOK-P-VB" has no children, using as-is
  🔗 Parent "DRZWI-VB" has 3 children
    → 3 children match dimensions (80×36)
    → No matching child, using PARENT: DRZWI-VB
  → Parent "HDF-VB" has no children, using as-is
  → Parent "LISTWA-P-VB" has no children, using as-is
  → Parent "LISTWA-T-VB" has no children, using as-is
  → Parent "POLKA-VB" has no children, using as-is
  → Parent "SIEDZISKO-VB" has no children, using as-is
  🔗 Parent "WD-VB" has 3 children
    → 3 children match dimensions (80×36)
    → No matching child, using PARENT: WD-VB
  → Parent "WG-VB" has no children, using as-is
✅ [BOM] Selected 10 templates for generation
📝 [BOM] Created BOM #44
  🎨 [BOM] Using color from option: DRZWI-L-BIALY -> L-BIALY for DRZWI
4:42:54 PM [express] GET /api/catalog-products/361 200 in 245ms :: {"id":361,"sku":"SKU-361","title"…
✅ [BOM] Generated 10 components successfully
4:42:54 PM [express] POST /api/catalog-products/361/generate-bom 200 in 770ms :: {"success":true,"bo…
4:42:54 PM [express] GET /api/catalog-products/361/bom 200 in 180ms :: {"bom":{"id":44,"catalog_prod…
Running scheduled Odoo sync...
🔧 Imported Odoo sync functions
🔄 Found 0 orders updated in last 1 minutes for Odoo sync
🔧 processSyncQueue() started
🔍 DEBUG createOdooClient: Original URL = "https://alpma.app"
🔍 DEBUG createOdooClient: includes tunnel.pyjam.as = false
🔍 DEBUG createOdooClient: Final URL = "https://alpma.app"
🔧 createOdooClient() returned: OdooClient instance
🔒 Inna instancja processSyncQueue() już działa - pomijam
🔧 syncRecentOrdersToOdoo completed
🔧 Scheduled Odoo sync completed