ENVIAR A WALRUS // --------------------------------------------------------- if ($event === 'ONCRMCOMPANYADD') { sleep(2); // Esperar persistencia en BD Bitrix $company = $bitrix->call('crm.company.get', ['id' => $id])['result']; // Si ya tiene ID, es un bucle, detener. if (!empty($company['UF_CRM_WALRUS_ID'])) die('Ya existe en ERP'); $datosWalrus = [ 'TITLE' => $company['TITLE'], 'RUC' => $company['UF_CRM_WALRUS_RUC'] ?? 'X', 'PHONE' => $company['PHONE'][0]['VALUE'] ?? '', 'EMAIL' => $company['EMAIL'][0]['VALUE'] ?? '', 'ADDRESS' => 'Direccion Bitrix' // Simplificado ]; $res = $walrus->createCliente($datosWalrus); if ($res && isset($res['clpr_codi_alte'])) { // Actualizar Bitrix con el ID generado $bitrix->call('crm.company.update', [ 'id' => $id, 'fields' => ['UF_CRM_WALRUS_ID' => $res['clpr_codi_alte']] ]); file_put_contents($config['files']['log_file'], "Cliente Creado ID: {$res['clpr_codi_alte']}\n", FILE_APPEND); } } // --------------------------------------------------------- // CASO 2: VENTA GANADA -> CREAR PEDIDO EN WALRUS // --------------------------------------------------------- if ($event === 'ONCRMDEALUPDATE') { // Verificar si está ganada $deal = $bitrix->call('crm.deal.get', ['id' => $id])['result']; // Cambia 'WON' por el ID de etapa ganada real de tu Bitrix (ej: C4:WON) if ($deal['STAGE_ID'] == 'WON' && empty($deal['UF_CRM_WALRUS_ORDER_ID'])) { // A. Obtener Empresa (Cliente) $company = $bitrix->call('crm.company.get', ['id' => $deal['COMPANY_ID']])['result']; if (empty($company['UF_CRM_WALRUS_ID'])) die('Cliente no sincronizado con ERP'); // B. Obtener Productos del Deal $rows = $bitrix->call('crm.deal.productrows.get', ['id' => $id])['result']; $itemsPedido = []; foreach ($rows as $row) { // Obtener el ID de Walrus del producto $prodBitrix = $bitrix->call('crm.product.get', ['id' => $row['PRODUCT_ID']])['result']; $itemsPedido[] = [ 'prod_codi' => $prodBitrix['PROPERTY_WALRUS_ID'], // ID ERP 'cantidad' => $row['QUANTITY'], 'precio' => $row['PRICE'] // Precio pactado en Bitrix ]; } // C. Enviar a Walrus $payloadPedido = [ 'p_clpr_codi_alte' => $company['UF_CRM_WALRUS_ID'], 'p_items' => $itemsPedido, 'p_observacion' => 'Pedido desde Bitrix #' . $id ]; $res = $walrus->crearPedido($payloadPedido); // D. Guardar Nro Pedido if ($res && isset($res['numero_pedido'])) { $bitrix->call('crm.deal.update', [ 'id' => $id, 'fields' => ['UF_CRM_WALRUS_ORDER_ID' => $res['numero_pedido']] ]); file_put_contents($config['files']['log_file'], "Pedido Creado: {$res['numero_pedido']}\n", FILE_APPEND); } } }