Aplicacion web para registrar datos de usuario y crear un socio de negocios en SAP Business One mediante Service Layer.
- Copia
.env.examplea.envy completa las credenciales y parametros reales de SAP. Nunca subas.enva git. - Inicia el servidor.
node server.jsLuego abre http://localhost:3000. Tambien puede abrirse index.html como archivo local, pero el servidor Node debe estar ejecutandose para enviar los datos a SAP.
- Las variables de conexion se leen desde
.env(ver.env.example):PORTAPP_BASE_PATHSAP_B1_SERVICE_LAYER_URLSAP_B1_COMPANY_DBAMPSAP_B1_COMPANY_DBRTASAP_B1_COMPANY_DBSCASAP_B1_USERNAMESAP_B1_PASSWORDSAP_B1_BP_SERIESSAP_B1_REJECT_UNAUTHORIZEDSAP_B1_TLS_MIN_VERSIONSAP_B1_TLS_CIPHERSSAP_B1_TIMEOUT_MSAPP_DEBUG_LOOKUP
- Campo fecha nacimiento:
U_GSP_BIRTHDATE - Campo envio TPV:
U_GSP_SENDTPV='Y' - Telefono: se envia a
CellularyPhone1. - Al crear un socio nuevo se envia
CardType='cCustomer',GroupCode=100,CardForeignNameigual al nombre ingresado,DebitorAccount='1141003',U_GSP_SubGroupCode=2yU_GSP_SubGroupName='PERSONA NATURAL'. - CardCode:
C+RUT, por ejemploC17273201-1 - RUT en OCRD: se envia y se busca en Service Layer como
FederalTaxID, que corresponde aLicTradNum. - El RUT se normaliza sin puntos y con guion antes de crear o actualizar, por ejemplo
17.273.201-1y172732011quedan como17273201-1. - TLS SAP: el backend prueba perfiles TLS con fallback para Service Layer antiguo, incluyendo
TLSv1yDEFAULT@SECLEVEL=0. Se puede cambiar conSAP_B1_TLS_MIN_VERSION,SAP_B1_TLS_CIPHERSySAP_B1_TIMEOUT_MS. - Depuracion de busqueda por RUT:
APP_DEBUG_LOOKUP=truemuestra en pantalla la query enviada a Service Layer y el JSON crudo devuelto por SAP. - Si el formulario se publica bajo una subruta, por ejemplo
/formulario, defineAPP_BASE_PATH=/formulario. El backend servira HTML, JS, CSS y APIs tanto en local como detras de Apache bajo esa ruta.
Si el socio ya existe en SAP, el formulario muestra un mensaje indicando que existe y actualiza los datos no obligatorios: email, telefono en Cellular y Phone1, fecha de nacimiento, ciudad, U_GSP_SENDTPV='Y' y el RUT normalizado en LicTradNum.
La busqueda de socios existentes se realiza con $filter sobre CardCode y FederalTaxID, evitando el GET BusinessPartners('codigo') directo porque algunos proxys de Service Layer devuelven 502 Proxy Error en esa ruta.
Si SAP devuelve un socio sin CardCode, el backend repite la busqueda sin $select. Si aun asi no recibe el codigo, detiene la actualizacion para evitar llamadas a BusinessPartners('null').
Si el proxy devuelve 502 Proxy Error durante el PATCH de un socio existente, el backend reintenta la actualizacion con POST y headers X-HTTP-Method: PATCH / X-HTTP-Method-Override: PATCH.
Las credenciales SAP no estan en index.html ni en app.js. El navegador envia los datos al backend local y el backend se comunica con SAP.
.env esta en .gitignore y nunca debe commitearse. Usa .env.example como plantilla.
La marca se puede pasar por URL con brand o marca, por ejemplo ?brand=AMPHORA.
AMPHORAmuestradatospersonales@amphora.clSCALPERSmuestradatospersonales@scalpers.clRENATTAusa la identidad visual de Renatta y, mientras no se indique otro correo, conservadatospersonales@amphora.clcomo respaldo
AMPHORAusaSAP_B1_COMPANY_DBAMPRENATTAusaSAP_B1_COMPANY_DBRTASCALPERSusaSAP_B1_COMPANY_DBSCA