jueves, 23 de mayo de 2024

Withholding tax code '1I' not allowed for this business partner; [WithholdingTaxDataCollection.WTCode]

Desarrollando para Service Layer en SAP B1, me devolvió el error siguiente trabajando con los impuestos retenidos de una factura de deudor:

 {
    "details""{\n   \"error\" : {\n      \"code\" : -5002,\n      \"message\" : {\n         \"lang\" : \"en-us\",
                        \n         \"value\" : \"1250000075 - Withholding tax code '1I' not allowed for this business partner; specify a withholding tax code that has been assigned in the business partner master data [WithholdingTaxDataCollection.WTCode][line: 1]\"\n      }\n   }\n}\n",
    "isSuccess"false,
    "data"""
}

En el json que enviaba para crear la factura iba el arreglo de los impuestos retenidos, los datos existían en los catálogos de SAP B1, todo parecía estar bien, ¿entonces donde estaba el problema?, después de revisar me di cuenta que el error se genera por que además de tener en orden todo lo anterior comentado, se debe poner poner el atributo de la cabecera SubjectToWithholdingTax en "boYES", con esto el error desapareció, espero les sirva.

Saludos.

Could not find default endpoint element that references contract

Hola, tiempo sin publicar una entrada, quisiera compartirles el error siguiente en momento de ejecución:

Could not find default endpoint element that references contract 'RutaServicio.Servicio' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.'

Como este error no se produce al compilar surge la duda de ¿Cuál es el problema entonces?, la solución, como lo dice la descripción del error, está al colocar los endpoints del servicio que estamos consumiendo en el config del proyecto con que arranca nuestra solución y no solo en el proyecto donde se está consumiendo el servicio web, les dejo un ejemplo el cual se colocó en el App.config:



viernes, 2 de febrero de 2024

Registros en diario con conexiones SN

Este error "Registros en diario con conexiones SN" se nos presenta al querer actualizar un dato como serie, monedas todas, etc, imposibles de hacerlo después de que el Socio de Negocio ya tiene registros contables con estos datos.


Espero les ayude con esto, saludos!


domingo, 21 de enero de 2024

Element {urn:enterprise.soap.sforce.com}city invalid at this location

El siguiente error quizás les ha salido en al menos una ocasión al querer actualizar campos de objetos de salesforce, en mi caso particular fue por querer actualizar campos del objeto BillingAddress de los Accounts, sucede que Salesforce en algunos de sus campos en los que nos proporciona información en el WSDL son de solo lectura, imposibles de escribir sobre ellos, al retirar de mi update este objeto y sus valores el error Element {urn:enterprise.soap.sforce.com}city invalid at this location dejo de aparecer.

Entonces no intenten algo que Salesforce nunca les permitirá, saludos.

Actualización (Update) de direcciones Ship to y Bill to con Service Layer

Les dejo algo que es simple pero muy importante para poder actualizar las direcciones fiscales y de entrega por medio de Service Layer sin que les marque errores como por ejemplo "This entry already exists in the following tables (ODBC -2035)", al utilizar el endpoint PATCH: https://tudominio:50000/b1s/v1/BusinessPartners('C010').

Para que Service Layer pueda identificar que dirección es la que queremos modificar debemos agregar el atributo Row en el Json a enviar como se muestra abajo:

"BPAddresses": [
    {
        "AddressName": "Billing Address",
        "Street": "Marine Drive",
        "Block": null,
        "ZipCode": "12345",
        "City": "NEWPORT",
        "Country": "US",
        "State": "OR",
        "BuildingFloorRoom": "",
        "AddressType": "bo_BillTo",
        "StreetNo": null,
        "BPCode": "T10360",
        "RowNum": 0,
        "GlobalLocationNumber": null,
        "Nationality": null,
        "TaxOffice": null,
        "GSTIN": null,
        "GstType": null,
        "U_WBCUSTADDID": null,
        "U_TelNo": null
    },
El valor de este atributo, lo encuentran en la tabla CRD1 en su campo llamado LineNum con ayuda de está consulta:

SELECT "LineNum" FROM CRD1 WHERE "AdresType" = 'B' AND address = 'Nombre Dirección' AND CardCode = 'C010'esType" = 'B' AND address = 'Nombre Dirección' AND CardCode = 'C010'.

¡Saludos!

"value": "Table 'CRD4' not accessible"

¿Qué tal?, ¿Cómo están?, espero que después del Guadalupe - Reyes como le decimos aquí en México, estén de lo mejor, en está primera publicación del 2024 les traigo la solución al error que surge al consumir el endpoint de service layer para crear querys personalizadas: https://TUSERVER:50000/b1s/v1/SQLQueries


Resulta que service layer no puede consultar todas la tablas de SAP desde este endpoint por seguridad según su documentación, en mi caso no tiene permitido consultar la tabla CRD4 (Impuesto de retención), arrojando el error en su respuesta: "value": "Table 'CRD4' not accessible", esto se soluciona yendo a la carpeta de instalación de service layer en mi caso fue en el servidor de SUSE ya que es un base de datos en HANA, el archivo se llama b1s_sqltable.conf y la ruta por defecto en SUSE es /usr/sap/SAPBusinessOne/ServiceLayer/conf, lo único que tiene que hacer es agregar al listado la tabla a consultar para que se le permita ser consultada:


Espero con esto una consulta no les impida continuar con su desarrollo. ¡Saludos!

jueves, 30 de noviembre de 2023

Offset de registro no válido - Invalid registration offset

 ¿Como están?, está ocasión les quiero compartir un error al usar el DI API, ya sabemos que muchas veces no nos dicen nada, se vuelve un problema más cuando todo en apariencia coincide: totales, claves, estructura de la información, inventario, todo, todo parece estar bien.

Para asegurar que todo estaba bien cree la entrega directamente en SAP y efectivamente fue creada con éxito sin mayor problema, ¿entonces por que me marca el error de Offset de registro no válido al querer crear el documento por DI API? y vualá!, resulta ser que las líneas de los artículos no coincidían entre lo que nos enviaba el sistema externo y el que estaba en SAP B1.

Verifiquen entonces este tipo de dato que no vemos a simple vista en SAP pero que con ayuda de una consulta podemos salir de dudas.

Espero les ayude en este caso en particular o en algún otro donde un dato no está bien aunque lo parezca.