getClientes($lastClientSync); echo "Clientes a procesar: " . count($clientes) . "\n"; foreach ($clientes as $c) { $fields = [ 'TITLE' => $c['clpr_desc'], 'UF_CRM_WALRUS_ID' => $c['clpr_codi_alte'], 'UF_CRM_WALRUS_RUC' => $c['clpr_ruc'], 'OPENED' => "Y", 'PHONE' => [['VALUE' => $c['clpr_tele'], 'VALUE_TYPE' => 'WORK']] ]; // Buscar por ID Walrus $search = $bitrix->call('crm.company.list', [ 'filter' => ['UF_CRM_WALRUS_ID' => $c['clpr_codi_alte']], 'select' => ['ID'] ]); if (!empty($search['result'])) { $bitrix->call('crm.company.update', ['id' => $search['result'][0]['ID'], 'fields' => $fields]); } else { $bitrix->call('crm.company.add', ['fields' => $fields]); } } // --- PRODUCTOS --- $productos = $walrus->getProductos($lastProdSync); echo "Productos a procesar: " . count($productos) . "\n"; foreach ($productos as $p) { // Precio 0 porque el precio real se calcula en la venta $fields = [ 'NAME' => $p['coba_desc'], 'PROPERTY_WALRUS_ID' => $p['prod_codi'], 'PROPERTY_BARCODE' => $p['coba_codi_barr'], 'CURRENCY_ID' => 'PYG', 'PRICE' => 0 ]; $search = $bitrix->call('crm.product.list', [ 'filter' => ['PROPERTY_WALRUS_ID' => $p['prod_codi']], 'select' => ['ID'] ]); if (!empty($search['result'])) { $bitrix->call('crm.product.update', ['id' => $search['result'][0]['ID'], 'fields' => $fields]); } else { $bitrix->call('crm.product.add', ['fields' => $fields]); } } // Guardar fecha actual $now = date('d-m-Y H:i:s'); file_put_contents($config['files']['sync_state'], json_encode(['clients' => $now, 'products' => $now])); echo "--- Fin Sync ---\n";