Está en la página 1de 46

Especificación de Diseño de la Fase I para la

implantación de Microsoft Dynamics 365 LS


Central
(Procesos de integración
eCommerce)

MN Del Golfo

Preparado para

MN Del Golfo

Preparado por:

Alexis Pérez

Abril 20212

Confidential Document

The information contained herein is privileged and confidential and is only made available to persons who
are authorized in advance to have access to this information. If the reader is not authorized to access or
receive this information you should immediately close this document and delete this information from
your computer. By
1. Versiones del Documento

Fecha de
Versión # Resumen de los cambios
Liberación
1.0 30/11/2021 Versión inicial
Se actualiza el proceso de alta de cotizaciones y
2.0 23/03/2022
pedidos de ventas

Página 2 de 46
2. Índice
1. Versiones del Documento 2
2. Índice 3
3. Integración con eCommerce 4
3.1. Requerimientos funcionales 4
3.1.1. Productos 4
3.1.2. Clientes 21
3.1.3. Alta de cotizaciones 34
3.1.4. Alta de pedidos (Facturas de clientes) 44
4. Aceptación 46

Página 3 de 46
3. Integración con eCommerce

3.1. Requerimientos funcionales

3.1.1. Productos

3.1.1.1. Obtener un producto individual (Get)

Generar un WebServices para que Nectri pueda consumirlo bajo demanda y pueda obtener un
producto

Momento
Sentido de Sistema
ID Servicio Tipo Descripción Responsable de
conexión que ejecuta
consumo
Obtener GET Retorna un a petición
de
producto (obtener producto dada de
1 Producto LSCentral a Addvantit eCommerce
individual uno o más un Id(sku). eCommerce
ECommerce
elementos) (Nectri)

Solución:

LS Central cuenta con la siguiente opción para filtrado de información, en el caso de artículos se
puede solicitar solo por producto en específico, colocando al final de la cadena de servicio OData la
instrucción ?$filter=. En el siguiente ejemplo, se filtra por el producto 100022

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryItemsAd
dv?$filter=No eq '100022'

Nota.- En este link se encuentran otros filtros que pueden ser utilizados en caso de ser requeridos.
https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/webservices/use-filter-
expressions-in-odata-uris

Página 4 de 46
Propiedad Tipo Comentarios Campo del WS Consulta ADDV
ProductId String Identificador del No QueryItemsAddv
producto.
IsKit Bool Indica si el producto ¿??? Los Kits se consultan
es un kit. desde otra página (ver
3.1.1.2)
PriceWithTax Decimal Precio unitario con LSC_Unit_Price_VAT QueryItemsAddv
IVA.
Price Decimal Precio unitario sin Unit_Price_Sales QueryItemsAddv
IVA.
Offer.OfferPriceWithTax Decimal Precio unitario de Offer_Price_VAT QueryItemsAddv
oferta con IVA.
Offer.EffectiveDate DateTime Fecha y hora hasta Date_Offer_Sta QueryItemsAddv
cuando la oferta es
válida.
Quantity Int Cantidad disponible Quantity
en almacén. QueryItemsLocationAddv
Status bool Indica si el producto Status QueryItemsAddv
está activo.

Página 5 de 46
En LS Central pueden registrase diferentes precios, por lo que adicional a la información que se
solicita se cuenta con estos campos adicionales.

Campo del WS Comentarios Comentarios ADDV


No Identificador del QueryItemsAddv
producto.
Description Descripción del QueryItemsAddv
producto
Sales_Code Grupo de precio QueryItemsAddv

Página 6 de 46
Campos adicionales para eCommerce:
En LSCentral se ha provisto de una serie de campos adicionales para enviar información al
eCommerce, dichos campos se encuentran en la sección campos eCommerce de la ficha de
productos, dichos campos se deben agregar en un nuevo WebServices que se ejecutará de forma
períodica

El mapeo de datos con el sistema eCommerce debe ser:

Propiedad Tipo Comentarios Campo del WS Consulta ADDV


Titulo Web
Descripcion Web
Articulo Web
Costo Envio
Multiplo Envio
Paquetería Envio
Tag
Nombre foto
Observaciones
Producto Cantidad
Cantidad Mínima
Cantidad Maxima
Unidades por
Compra
Estatus Web
Estatus

Página 7 de 46
Tipos de entrega: Se acuerda no incluir en esta primera fase

Dicha información es alimentada en la ficha de los productos en el menú Relacionado → Asociar Tipos
de entrega

La información de los tipos de entrega está contenida en la tabla 50000 (Tipos de entrega)

La información de los tipos de entrega a los que está asociado un producto está contenida en la tabla
50001 (Asociar Tipos de Entrega)

El mapeo de datos con el sistema eCommerce debe ser:

Propiedad Tipo Comentarios Campo del WS Consulta ADDV


Número del No
producto
Cód. del tipo de Id tipo Entrega
entrega

Página 8 de 46
Zonas de entrega: Se acuerda no incluir en esta primera fase

Dicha información es alimentada en la ficha de los productos en el menú Relacionado → Asociar


Zonas de entrega

La información de los tipos de entrega está contenida en la tabla 50002 (Zonas de entrega)

La información de los tipos de entrega a los que está asociado un producto está contenida en la tabla
50003 (Asociar Zonas de Entrega)

El mapeo de datos con el sistema eCommerce debe ser:

Propiedad Tipo Comentarios Campo del WS Consulta ADDV


Número del artículo No
Id zona de entrega Id Zona Entrega

Página 9 de 46
3.1.1.2. Obtener listado de productos tipo kit (Get)

En la página web del eCommerce, se muestran los Kits de la siguiente manera:

Componentes del Kit

Se requiere generar un WebServices para que Nectri pueda consumirlo bajo demanda y pueda
obtener un listado de productos tipo Kit.

En LSCentral los Kits será administrados desde la página de las ofertas periódicas, llamadas Ofertas
Mix&Match

Página 10 de 46
Se considera un Kit como una nueva oferta, de la cual se creará el cod. del producto, su descripción,
precio y los productos que la componen

Se requiere agregar un campo “Título Web” de 100 caracteres para colocar la descripción que tendrá
el Kit en la página Web (tabla LSC Periodic Discount (99001453))

Para la consulta de artículos tipo kit se utilizará la consulta “QueryItemsKitAddv”, donde se podrá
determinar el precio y vigencia de estos

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryItemsKit
Addv

Página 11 de 46
Propiedad Tipo Comentarios Campo del WS Consulta ADDV
ProductId Identificador del No QueryItemsKitAddv
producto tipo kit
Price Precio del kit Price QueryItemsKitAddv
Offer.EffectiveDate Se cuenta con un Start_Date/ QueryItemsKitAddv
rango de fechas End_Date
para este tipo de
artículos
Status Indica si la Status QueryItemsKitAddv
promoción esta
activa

Página 12 de 46
3.1.1.3. Obtener los componentes de un Kit (Get)

En LSCentral los componentes de un kit se configuran en la sección de Líneas de las ofertas


Mix&Match

Y el precio del Kit en la sección Beneficios

Para determinar la cantidad de productos que requiere un artículo tipo kit se creó la siguiente consulta
(QueryProductsKitAddv), donde se puede visualizar un listado de los detalles. Se puede utilizar el filtro
por el campo Item_Kit para uno en específico.

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryProduct
sKitAddv?$filter=Item_Kit eq 'COMBO_BAN'

Propiedad Tipo Comentarios Campo del WS Consulta ADDV


Item_Kit Identificador del Item_Kit QueryProductsKitAddv
producto tipo kit
SubProduct Identificador de los SubProduct QueryProductsKitAddv
productos que
contiene un artículo
kit
Items_of_Needed Cantidad de Items_of_Needed QueryProductsKitAddv
productos que se
requieren

Página 13 de 46
3.1.1.4. Obtener un listado de productos (Get)

Generar un WebServices para que Nectri pueda consumirlo bajo demanda y pueda obtener un
listado de productos

Momento
Sentido de Sistema
ID Servicio Tipo Descripcion Responsable de
conexión que ejecuta
consumo
Obtener GET Retorna un
un listado (obtener listado de
a petición
de uno o más productos de
de
2 Producto productos elementos) dada un LSCentral a Addvantit eCommerce
eCommerce
listado de ECommerce
(Nectri)
claves de
producto(sku).

NOTA: Aplica el mismo WebServices anterior. Solo que en el filtro se puede colocar:

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryItemsAd
dv?$filter=No it '100022' and No lt '100374’

Nota.- En este link se encuentran otros filtros que pueden ser utilizados en caso de ser requeridos.
https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/webservices/use-filter-
expressions-in-odata-uris

Página 14 de 46
3.1.1.5. Obtener un listado de productos (Post) - No será considerado

Sentido Sistema Moment


I Responsa
Servicio Tipo Descripcion de que o de Estatus
D ble
conexión ejecuta consumo
Obtener POST Retorna un Los productos se
un (Crear listado de dan de alta
listado un productos únicamente en
de nuevo dada un LSCentral no en
product element listado de de a petición eCommerce.
os o) claves de LSCentral de eCommerce
Produc eCommer
3 producto(sk a Addvantit eCommer consumirá el WS
to ce
u). ECommer ce cuando deseé
ce (Nectri) sincronizar los
catálogos. (WS
QueryItemsAddv,
zAddv_RetailItem
List)

NOTA: En la sesión del viernes 19/11/2021 se indicó que no será necesario, pues los productos no se
podrán crear desde el eCommerce hacia LSCentral. Tampoco está contemplado crear productos desde
LSCentral hacia el eCommerce, este proceso es completamente independiente

3.1.1.6. Obtener un listado de todos los productos

Momento
Sentido de Sistema
ID Servicio Tipo Descripción Responsable de
conexión que ejecuta
consumo
Obtener GET Retorna un
un listado (obtener listado de a petición
de
de todos uno o más todos los de
4 Producto LSCentral a Addvantit eCommerce
los elementos) productos de eCommerce
ECommerce
productos la base de (Nectri)
datos de MN.

NOTA: Aplica el mismo WebServices anterior. Bajo esta consulta no es posible determinar por la
estructura de estos artículos si es un kit o no, se debe consultar otra sección para estos artículos (ver
3.1.1.2)

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryItemsAd
dv

Página 15 de 46
3.1.1.7. Existencia por Almacén

1) Consulta de cantidad de artículos por almacén y prioridad

Se generó una nueva página llamada “Class Location Addv” en la cual se ingresarán las clases de
artículos y almacenes de los cuales las interfaces podrán tomar artículos, cada uno de ellos tiene
que ser registrado con una prioridad para tomar los artículos que se requieran bajo esta lógica.

Por ejemplo, solo podrán tomarse artículos de la división PLOMERIA del almacén CEDIS-ALTA, en
caso de tener un segundo almacén con prioridad 2 el resto de los artículos en caso de ser requerido
deberá tomarse de esta segunda opción.

Consulta de cantidad de almacenes por articulo y prioridad, para la consulta anterior de artículos.
Para visualizar en esta consulta información es necesario llenar la tabla intermedia
Addv_ClassLocation.

Página 16 de 46
Odata.-
http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryItemsLo
cationAddv

Propiedad Id LS Central Comentarios Consulta


ProductId No Identificador del QueryItemsLocationAddv
producto.
Description Description descripción del QueryItemsLocationAddv
producto
Division_Code Division_Code Grupo de QueryItemsLocationAddv
artículos
Location_Code Location_Code Identificador de QueryItemsLocationAddv
almacén
Priority Priority Prioridad por QueryItemsLocationAddv
almacén
Quantity Quantity Cantidad por QueryItemsLocationAddv
almacén

Página 17 de 46
2) Consulta de almacenes

Servicios para obtener el listado de almacenes

Odata.-
http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/zAddv_Locatio
nsPage
SOAP.-
http://192.65.134.90:7047/BC180/WS/MNDG%20CAPACITACION/Page/zAddv_LocationsPage

Propiedad Id LS Central Comentarios Consulta


Code Code Identificador de zAddv_LocationsPage
almacen
Name Name Descripcion del zAddv_LocationsPage
almacen

Página 18 de 46
3) Consulta de tiendas

Servicios para obtener el listado de tiendas

OData.-
http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/zAddv_StoreLi
st
SOAP.-
http:// 192.65.134.90:7047/BC180/WS/MNDG%20CAPACITACION/Page/zAddv_StoreList

Propiedad Id LS Central Comentarios Consulta


No No Identificador de zAddv_StoreList
tienda
Name Name Descripción de zAddv_StoreList
la tienda
Store_Type Store_Type Tipo de tienda zAddv_StoreList

Location_Code Location_Code Identificador de zAddv_StoreList


almacén
asociado.

Página 19 de 46
4) Consulta de cantidad por tienda

Consulta de cantidad de artículos por tienda, solo con la sumatoria de los almacenes configurados
en la tabla intermedia Addv_ClassLocation.
OData.-
http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryItemsSt
oreAddv

Propiedad Id LS Central Comentarios Consulta


No No Identificador de QueryItemsStoreAddv
artículo
Description Description Descripción del QueryItemsStoreAddv
artículo
Division_Code Division_Code Grupo de QueryItemsStoreAddv
artículos
Store_Code Store_Code Tienda donde se QueryItemsStoreAddv
registró el
artículo
Quantity Quantity Cantidad de QueryItemsStoreAddv
artículos por
tienda.

Página 20 de 46
3.1.2. Clientes

Se requiere que cuando un cliente se registre en el sistema eCommerce el mismo se registre en el


sistema LSCentral.

Para ello, Addvantit publicará un WebServices (POST), el cual deberá ser consumido por el
proveedor Nectri “bajo demanda”, no sin antes validar si el cliente existe, para lo cual Addvantit
deberá publicar un WebServices para consultar el cliente dado el correo electrónico de forma que
Nectri pueda validar si existe el cliente.

Existen dos canales por donde se pueden dar de alta el cliente (B2C y B2B)

Para el canal B2C

Cualquier persona se puede dar de alta en el eCommerce desde la siguiente ventana en el botón
“Registrarse”

Luego de llenar todos los datos, Nectri deberá:

1. Consumir WebServices para consultar si el cliente existe, dada la dirección de correo electrónico
2. Consumir WebServices para ingresar Cliente en LSCentral

Página 21 de 46
3.1.2.1. Obtener un cliente (Get)

Momento
Sentido de Sistema
ID Servicio Tipo Descripción Responsable de
conexión que ejecuta
consumo
GET Retorna un a petición
de
Obtener un (obtener cliente dado de
5 Clientes LSCentral a Addvantit eCommerce
cliente uno o más un id de eCommerce
ECommerce
elementos) cliente (Nectri)

En algunos casos se pueden realizar las consultas por medio de llamados a servicios web de ODATA o
SOAP, en la compañía MNDG Capacitación. Para la consulta de clientes se cuenta con las siguientes
opciones para obtener alguno de los datos que se requieren.

OData.
http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryCustom
erAddv

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/zAddv_Custo
merPage
Si se desea consultar un cliente específico, se puede utilizar el filtro:

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryCustom
erAddv?$filter=No eq '000000004'

SOAP
http://192.65.134.90:7047/BC180/WS/MNDG%20CAPACITACION/Page/zAddv_CustomerPage

Propiedad Tipo Comentarios Campo del WS Comentarios ADDV


CustomerId* String (15) Identificador del No QueryCustomerAddv
cliente
FirstName* String (50) Nombre Name QueryCustomerAddv
(Se debe enviar el
nombre completo ya
que en LSCentral
no está separado)
LastName* String (50) Apellido paterno N/A
SurName* String (50) Apellido materno N/A
TaxId String (15) RFC VatRegistrationNo QueryCustomerAddv
TaxName String (160) Razón social Name QueryCustomerAddv
Phone String (50) Teléfono PhoneNo QueryCustomerAddv
MobilePhone String (50) Teléfono celular MobilePhone QueryCustomerAddv
Email String (50) Correo electrónico Email QueryCustomerAddv

Página 22 de 46
DateOfBirth Date Fecha de nacimiento N/A
Segment* String (50) Catálogo de Segment QueryCustomerAddv
segmentos
Profession String (3) Catálogo de Value_No QueryCustomerAddv
profesiones
FidelityNumber String (16) Número No desarrollado, falta
construganas definir
CustomerAddressId* Int Identificador de la Falta
dirección.
AddressType* String (15) Tipo de dirección Ship_to_Code QueryCustomerAddv
EMBARQUE o FISCAL
Street String (50) Calle Address En este campo de
LSCentral, se escribe
la dirección completa
StreetNumber String (20) Número exterior N/A
IntNumber String (20) Número interior N/A
Street2 String (40) Entre calle N/A
Street3 String (40) y Calle N/A
Suburb String (100) Colonia Address2 QueryCustomerAddv
ZipCode String (5) Código postal PostCode QueryCustomerAddv
City String (50) Ciudad City QueryCustomerAddv
State String (2) Catálogo de estados County QueryCustomerAddv
No es un catálogo
Country String (25) País Country QueryCustomerAddv

Página 23 de 46
3.1.2.2. Obtener un cliente por su correo electrónico

Es posible utilizar el servicio OData anterior para obtener solo el listado de un cliente por su correo
electrónico para esto es necesario colocar al final de la URL QueryCustomerAddv la siguiente
instrucción.
?$filter=EMail eq 'correo electrónico'

Por ejemplo, se desea localizar al cliente que cuenta con el correo electrónico

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryCustomerAddv?$filter=E
Mail eq 'prueba@correo.com'

Página 24 de 46
3.1.2.3. Obtener un cliente B2B y B2C por id. cliente

Para las consultas de clientes B2B y B2C se utilizará el mismo servicio web para consulta de clientes
(QueryCustomerAddv) pero el filtro para determinar si pertenece a un canal u otro será el siguiente.

Campo Customer_Price_Group valores B2B y B2C

Adicional se puede anexar un identificador de numero de cliente si así se requiere u omitir para tener
un listado completo de todos los clientes.

B2B

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryCustomerAddv?$filter=Custom
er_Price_Group eq 'B2B' and No eq '000000002'

B2C

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryCustomerAddv?$filter=Custom
er_Price_Group eq 'B2C' and No eq '000000002'

3.1.2.4. Obtener un cliente B2B y B2C por su cuenta de correo

Para las consultas de clientes B2B y B2C se utilizará el mismo servicio web para consulta de clientes
(QueryCustomerAddv) pero el filtro para determinar si pertenece a un grupo u otro será el siguiente.
Campo Customer_Price_Group clave B2B y B2C, adicional se puede anexar un filtro para buscar
clientes de este grupo con asignación de un correo en específico.

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/QueryCustomerAddv?$filter=Custom
er_Price_Group eq 'B2B'and EMail eq 'adrian.mendoza@ssh.com.mx'

Página 25 de 46
3.1.2.5. Alta de Clientes

En LSCentral, se deben dar de alta los nuevos clientes que se registren en la página del eCommerce,
para ello, se requiere publicar un WebServices (POST) para que el sistema de eCommerce consuma
bajo demanda.

La página y el mapeo de datos donde se ingresan los clientes es la siguiente:

Página 26 de 46
Datos generales del cliente: Mapeo de datos

eCommerce Id LS Central Comentarios Consulta


CustomerId (String 15) No Número Requerido
consecutivo
tomado del
último número
de la serie del
cliente
FirstName String (50) Name (String 100) Se agrega en Requerido
LastName String (50) un solo campo
SurName String (50)
Nectri adaptará
el programa en
base a la cant.
de caracteres
TaxID (String 15) Vat Registrarion No. Requerido
(String 20)
TaxName (String 160) Name (String 100) Requerido
Phone (String 50) Phone No. (String 30) Opcional
MobilePhone (String 50) Mobile Phone No. Opcional
(String 30)
Email (String 50) E-Mail (String 50) Requerido
DateOfBirth (Date) N/A Opcional
Segment (String 50) Segment No. (String Opcional
18)
Profession (String 3) Value No. (String 18) Opcional
FidelityNumber (String16) Se puede Opcional
agregar una
tarjeta de
Construganas
SSH - SAT fiscal Opcional
regime
SSH - SAT Use CFDI Opcional
SSH - SAT Payment Opcional
Method
Salesperson Code Colocar valor Requerido
fijo, asesor =
ecommerce
Gen. Bus. Posting Colocar valor Requerido
Group. fijo, NAC
Customer Posting Colocar valor Requerido
Group fijo, NAC
Customer Price Group Nectri Requerido
enviará
B2B o
B2C
Payment Terms Code Colocar fijo = Requerido
Contado
Payment Method Forma de Opcional
Code pago
Street String (50) Address (String 100) Solo la dirección Requerido
fiscal, en caso AddresType = Fiscal

Página 27 de 46
StreetNumber String (20) de tener
IntNumber String (20) dirección de
embarque, se
Street2 String (40)
agrega en otra
Street3 String (40) tabla (String
100)
Suburb (String 100) Address 2 (String 50) Colonia Requerido

ZipCode (String 5) Post Code Código postal Requerido


City (String 50) City (String 30) Ciudad Requerido
State (String 2) County (String 30) Estado Requerido
Country (String 25) Country (String 2) País. En Requerido
LSCentral existe
un catálogo de
países

Un cliente puede tener varias direcciones de envío, dichas direcciones se deberán ingresar
en la siguiente página

eCommerce Id LS Central Comentarios Consulta


CustomerAddressID (Int) Code Cod. de la Opcional
dirección de
envío
CustomerId (String 15) Customer No. Nro. del cliente Opcional

FirstName String (50) Name (String 100) Se agrega en un Opcional


LastName String (50) solo campo
SurName String (50)

Phone (String 50) Phone No. (String 30) Opcional


Email (String 50) E-Mail (String 50) Opcional
Street String (50) Address (String 100) Solo la dirección Opcional
fiscal, en caso de
tener dirección
de embarque, se
agrega en otra
tabla (String 100)
StreetNumber String (20) ¿??? Agregar un Opcional
campo adicional en la
ficha del cliente
IntNumber String (20) ¿???? Agregar un Opcional
campo adicional en la
ficha del cliente
Suburb (String 100) Address 2 (String 50) Colonia Opcional

ZipCode (String 5) Post Code Código postal Opcional


City (String 50) City (String 30) Ciudad Opcional
State (String 2) County (String 30) Estado Opcional
Country (String 25) Country (String 2) País. En Opcional
LSCentral existe
un catálogo de
países

Página 28 de 46
Street2 (String 40) ¿????? Agregar un Es la ubicación Opcional
Street3 (String 40) campo adicional en la de referencia:
ficha de clientes “Entre calles x y
y”
Suburb_ID Colonia_ID Agregar Opcional
campo adicional en la
ficha de clientes
City_ID Ciudad_ID Agregar Opcional
campo adicional en la
ficha de clientes
Point Latitud Agregar Opcional
campo adicional en la
ficha de clientes
Longitud Agregar Opcional
campo adicional en la
ficha de clientes
N/A Contact Type Tipo de contacto, Requerido
colocar fijo
ONLINE

API Crear Clientes POST

Esta es la URL que se utilizara para el ingreso de nuevos clientes de Ecommerce a LS Central, por el momento la forma de
acceder a él es utilizando credenciales de Windows. Los parámetros de entrada que puede recibir serán los siguientes.

http:// 192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/APICustomerAddv

APICustomerAddv

Id LS Central Comentarios
No Id de cliente
Name Nombre o razón social
VAT_Registration_No RFC
Phone_No teléfono
MobilePhoneNo teléfono Celular
E_Mail Correo electrónico
Segment_No Catalogo segmentos
Value_No Catálogo de profesiones
Ship_to_Code Tipo dirección embarque o fiscal
Address Dirección
Address_2 Colonia
Post_Code Código postal
City Ciudad
County Estado
Country_Region_Code País
Customer_Price_Group Identificador de grupo de precios para un cliente (B2B, B2C,ALL,..)

Ejemplo de envío de cliente desde C#

private void btnCreateCustomer_Click(object sender, EventArgs e)


{

Página 29 de 46
string url = String.Empty;

url = "http:// 192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20TEST')/APICustomerAddv";


var client = new RestClient(url);
client.Timeout = -1;

System.Net.NetworkCredential nCredential = new


NetworkCredential("desarrolloaddvantit4", "Pa$$w0rd", "MNG");
client.Authenticator = new NtlmAuthenticator(nCredential);
var request = new RestSharp.RestRequest(RestSharp.Method.POST);

request.AddHeader("Content-Type", "application/json");

Newtonsoft.Json.Linq.JObject RequestJson = new Newtonsoft.Json.Linq.JObject();


RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("No", "CLI00007"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Name", "Ricardo Mata Ortega"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("VAT_Registration_No",
"MAOR901025RL1"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Phone_No", "815632898758"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("MobilePhoneNo", "9148756328"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("E_Mail", "prueba6@prueba.com"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Segment_No", "AUTOCONSTRUCTOR"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Value_No", ""));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Ship_to_Code", ""));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Address", "Francisco Villa 101"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Address_2", "Centro"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Post_Code", "90520"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("City", "Altamira"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("County", "Tamaulipas"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Country_Region_Code", "MX"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Customer_Price_Group", "B2B"));

string gtmJSON = Newtonsoft.Json.JsonConvert.SerializeObject(RequestJson);

request.AddParameter("text/json", gtmJSON, RestSharp.ParameterType.RequestBody);

IRestResponse response = client.Execute(request);


MessageBox.Show(response.Content);

3.1.2.6. Actualización de Clientes (PATCH)

Si se requiere actualizar los datos de un cliente previamente enviado, se puede utilizar el servicio de
alta de clientes, pero es necesario realizar previamente una consulta (GET) utilizando filtro por No
(Número del cliente) para obtener los valores de id y @odata.etag.

Después que se obtienen estos datos se utilizara la misma URL con la petición (PATCH) para enviar
los campos que se requieran actualizar anexando entre paréntesis el valor id de la consulta anterior y
agregando en el encabezado el valor @odata.etag la sección if-Match.
Se anexa un ejemplo en C#.

Página 30 de 46
http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/APICustomerAddv

Ejemplo desde C# en este caso se actualizaron solo algunos datos como, nombre, RFC, correo y teléfonos. Este
ejemplo está en la empresa MN Test.
private void btnUpdateCustomerPage_Click(object sender, EventArgs e)
{
//consulta de clientes
string url_customer = String.Empty;
string filter = String.Empty;
filter = "?$filter=No eq 'CLI00006'";
url_customer =
"http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20TEST')/APICustomerAddv" + filter.Trim();
System.Net.NetworkCredential nCredential = new
NetworkCredential("desarrolloaddvantit4", "Pa$$w0rd", "MNG");

var client_query = new RestClient(url_customer);


client_query.Timeout = -1;

client_query.Authenticator = new NtlmAuthenticator(nCredential);


var request_client = new RestSharp.RestRequest(RestSharp.Method.GET);
request_client.AddHeader("Content-Type", "application/json");
IRestResponse response_client = client_query.Execute(request_client);
MessageBox.Show(response_client.Content);
string id = "";
string tag = "";

var api = JObject.Parse(response_client.Content);

foreach (var item in api["value"])


{
foreach (var prop in item)
{
var property = prop as JProperty;

if (property != null)
{
if (property.Name == "id")
{
id = property.Value.ToString();
}
if (property.Name == "@odata.etag")
{
tag = property.Value.ToString();
}

}
}

//actualizacion datos cliente


if (id != "")
{

string url = String.Empty;

Página 31 de 46
url = "http://
192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20TEST')/APICustomerAddv(" + id.Trim() + ")";
var client = new RestClient(url);
client.Timeout = -1;

client.Authenticator = new NtlmAuthenticator(nCredential);


var request = new RestSharp.RestRequest(RestSharp.Method.PATCH);

request.AddHeader("Content-Type", "application/json");
request.AddHeader("If-Match", tag.Trim());

Newtonsoft.Json.Linq.JObject RequestJson = new Newtonsoft.Json.Linq.JObject();

RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Name", "Ricardo Daniel Mata


Ortega"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("VAT_Registration_No",
"GUGO811018GH4"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Phone_No", "8155556960"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("MobilePhoneNo",
"8125896585"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("E_Mail",
"prueba_06@prueba.com"));

string gtmJSON = Newtonsoft.Json.JsonConvert.SerializeObject(RequestJson);

request.AddParameter("text/json", gtmJSON, RestSharp.ParameterType.RequestBody);

IRestResponse response = client.Execute(request);


MessageBox.Show(response.Content);

Página 32 de 46
Página 33 de 46
3.1.3. Alta de cotizaciones

Las cotizaciones solo se solicitan en el eCommerce y no se valida si los productos que tienen
inventarios.

Una vez que una cotización se integra del eCommerce a LSCentral, los asesores filtran las
cotizaciones por tipo de contacto Online y las que procedan se procesarán desde el sistema.

Son los asesores de ventas, los responsables de generar el proceso en LSCentral para dar
seguimiento y lograr facturar la cotización.

La página donde se debe integrar la cotización en LSCentral, es la siguiente

Página 34 de 46
La siguiente es la URL para envío de cotizaciones de ventas hacia LS Central, que serán enviados:

Encabezado de cotización venta

http://192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/APISalesOrderHdrAddv

eCommerce Id LS Central Comentarios


N/A Document Type Colocar fijo “Cotización”
ECommerceId (int) No Requerido. Identificador del eCommerce. Número consecutivo
tomado del último número de la serie de cotizaciones
Discount* (Decimal) Inv. Discount Amount Opcional. En el eCommerce descuento del documento
PurchaseDate* Order Date Requerido. Fecha de compra
CustomerId* (String 15) Bill-to-Customer No. Requerido. Id. del cliente
TaxID (String 15) VAT Registration No. Requerido. RFC con el que se facturará
BillingAddress. Requerido. Identificador de la dirección de facturación
CustomerAddressID* (int)
BillingAddress. Requerido. Dirección Fiscal
AddresType* (String 50)
BillingAddress. Bill-to-Address (String Requerido. Solo la dirección fiscal, en caso de tener dirección
Street 100) de embarque, se agrega en otra tabla (String 100)
BillingAddress.
StreetNumber
BillingAddress.
IntNumber
BillingAddress.
Street2
BillingAddress.
Street3

BillingAddress. Bill-to-Address 2 Requerido. Colonia


Suburb

BillingAddress. Bill-to-Post Code Requerido. Código Postal


ZipCode

Página 35 de 46
BillingAddress. Bill-to-City Requerido. Ciudad
City
BillingAddress. Bill-to-County Requerido. Estado
State
BillingAddress. Bill-to-Country/region Requerido. País. En LSCentral es un catálogo
Country Code
DeliveryType* (Int) Requiere envío. Opcional. Tipo de entrega (Domicilio 0, Tienda 1). Por Default =
Agregar campos False
(check) para capturar
si la entrega es en
tienda o en domicilio
DeliveryAddress. Dirección de envío Opcional. Id dirección embarque (Requerido cuando el tipo de
CustomerAddressId* Si el tipo de entrega es entrega es Domicilio)
domicilio, cambiar en la
sección Envío y
facturación la dirección
de envío a Dirección
personalizada
DeliveryAddress. Opcional. Tipo dirección EMBARQUE o FISCAL (Requerido
AddressType* cuando el tipo de entrega es Domicilio)

DeliveryAddress. Ship-to-Address Opcional


Street (String 100)
DeliveryAddress.
StreetNumber
DeliveryAddress.
IntNumber
DeliveryAddress.
Street2
DeliveryAddress.
Street3
DeliveryAddress. Ship-to-Address 2 Opcional
Suburb
DeliveryAddress. Ship-to-Post Code Opcional
ZipCode
DeliveryAddress. Ship-to-City Opcional
City
DeliveryAddress. Ship-to-County Opcional
State
DeliveryAddress. Ship-to-Country/region Opcional
Country Code
Receiver.Name* Ship-to-Contact Opcional Nombre del quién recibe (requerido cuando el tipo de
entrega es Domicilio)
Receiver.Phone String (50) Opcional
Receiver.MobilePhone String Opcional
(50)
Receiver.Email String (50) Opcional
DeliveryComments Strings Descripcion del trabajo Opcional . Comentarios para la entrega. (Se usan solo cuando
(450) el tipo de entrega es Domicilio)
WarehouseId String (15) Envío a tienda. Requerido. Id del almacén donde se recogerá el pedido
Agregar campos (Requerido sólo cuando el tipo de entrega es Tienda)
(check) para capturar
si la entrega es en
tienda o en domicilio
ClaveUsoSAT* String (3) SSH - SAT Use CFDI Requerido. En LSCentral es un catálogo

Página 36 de 46
SSH - SAT Payment Requerido. Colocar fijo PUE
Method
Subtotal* Decimal Opcional. En LS Central Se calcula al insertar las líneas
Tax* Decimal Opcional. En LS Central Se calcula al insertar las líneas
Total* Decimal Opcional. En LS Central Se calcula al insertar las líneas
Details.ProductId* (Detail) No (Sales Line 37) Requerido
String
Details.Quantity* (Detail) Quantity (Sales Line Requerido
Decimal 37)
Details.Price* (Detail) Decimal Unit Price (Sales Line Requerido
37)
Details.PriceWithTax* (Detail) Amount Including VAT Requerido
Decimal (Sales Line 37)
Details.Subtotal* (Detail) Amount (Sales Line Requerido
Decimal 37)
Details.Tax* (Detail) Decimal En LS Central Se calcula al insertar las líneas
Details.Total* (Detail) Decimal En LS Central Se calcula al insertar las líneas
SalesPersonId String (255) Salesperson Code Requerido
Valor fijo = eCommerce

APISalesOrderHdrAddv
Id LS Central Comentarios
Document_Type Debe llevar el valor “Order”
Sell_to_Customer_No Id cliente para cotización
Posting_Description Descripción de la cotización
Sell_to_E_Mail Correo electrónico
Sell_to_Address dirección
Sell_to_Address_2 Colonia
Sell_to_City Ciudad
Sell_to_County Municipio
Sell_to_Post_Code Código postal
Sell_to_Country_Region_Code Id de país
Sell_to_Phone_No Número de teléfono
Document_Date Fecha del documento
Posting_Date Fecha de contabilización
Order_Date Fecha de cotización
Due_Date Fecha de vencimiento
External_Document_No Id de documento externo (opcional)
Location_Code Identificador de almacén
Currency_Code Identificador de moneda(se puede dejar en
blanco o colocar un id de moneda como
USD)

Detalle de la orden
http:// 192.65.134.90:7048/BC180/ODataV4/Company('MNDG%20CAPACITACION')/APISalesOrderDetailAddv
APISalesOrderDetailAddv
Id LS Central Comentarios
Document_Type Por default el valor debe ser “Order”
Document_No Numero de documento, este será el obtenido
en la respuesta de la solicitud de llenado de
encabezado, en el campo “No”.
Line_No Numero de línea, este debe incrementar de
1000 en 1000

Página 37 de 46
Type Tipo de artículo (Item)
No Identificador del artículo
VAT_Prod_Posting_Group Identificador de impuestos (IVA16)
Location_Code Identificador de almacén
Quantity Cantidad de artículos
Unit_of_Measure_Code Identificador de unidad de medida
Unit_Price Precio unitario
Tax_Group_Code Grupo de impuesto (IVA)
Line_Discount_Amount Monto de descuento de la línea (opcional)
Line_Discount_Percent Porcentaje de descuento de la
línea(opcional, puede llevar por porcentaje o
descuento o ninguno)
Line_Amount Monto total antes de impuesto

Debido a que el sistema no permite modificar la dirección de envío con la petición anterior esta debe ser actualizada en un segundo paso,
por lo que es necesario hacer una consulta y solicitud de actualización utilizando el siguiente llamado. En este caso se debe obtener el
valor de @odata.etag e id de un pedido en específico en este ejemplo V-PED0080.

http://192.65.134.90:8080/BC180/api/V2.0/companies(958d56e3-d62a-ec11-acb1-
005056ab4b79)/salesOrders?$filter=number eq 'V-PED0080'

Recuperando este valor se debe hacer una solicitud de actualización del registro usando la sentencia (PATCH), la url de la petición se
anexa abajo, se debe colocar entre paréntesis el identificador de un pedido en específico. Se anexa un ejemplo de código .net.
http:// 192.65.134.90:8080/BC180/api/V2.0/companies(958d56e3-d62a-ec11-acb1-
005056ab4b79)/salesOrders(f00ed7b0-c86c-ec11-acb6-005056ab4b79)

salesOrders
Id LS Central Comentarios
ShipToName Nombre de la persona que recibe mercancía
shipToAddressLine1 Dirección de quien recibe
shipToAddressLine2 Dirección de quien recibe colonia
shipToCity Municipio /ciudad
shipToCountry País o región

Página 38 de 46
shipToState Estado
shipToPostCode Código postal

Ejemplo en c# para el envío de un pedido de venta.


private void btnCrearPedido_Click_1(object sender, EventArgs e)
{
string url = String.Empty;

url = "http://172.30.108.21:7048/BC180/ODataV4/Company('MNDG%20TEST')/APISalesOrderHdrAddv";
var client = new RestClient(url);
client.Timeout = -1;

System.Net.NetworkCredential nCredential = new NetworkCredential("desarrolloaddvantit4",


"Pa$$w0rd", "MNG");
client.Authenticator = new NtlmAuthenticator(nCredential);
var request = new RestSharp.RestRequest(RestSharp.Method.POST);

request.AddHeader("Content-Type", "application/json");

Newtonsoft.Json.Linq.JObject RequestJson = new Newtonsoft.Json.Linq.JObject();


RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Document_Type", "Order"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Sell_to_Customer_No", "000000002"));

RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Posting_Description", "Cotizacion Ecommerce


Prueba"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Sell_to_E_Mail", "correo_m@prueba.com"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Sell_to_Phone_No", "811221488"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Sell_to_Address", "Tamaulipas 628"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Sell_to_Address_2", "Alvaro Obregon"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Sell_to_City", "Ciudad de Mexico"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Sell_to_County", "Ciudad de Mexico"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Sell_to_Post_Code", "801470"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Sell_to_Country_Region_Code", "MX"));

RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Document_Date", "2021-12-02"));


RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Posting_Date", "2021-12-02"));

Página 39 de 46
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Order_Date", "2021-12-02"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Due_Date", "2021-12-02"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("External_Document_No", "000004"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Location_Code", "TIENDA-MIR"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("Currency_Code", ""));

string gtmJSON = Newtonsoft.Json.JsonConvert.SerializeObject(RequestJson);

request.AddParameter("text/json", gtmJSON, RestSharp.ParameterType.RequestBody);

IRestResponse response = client.Execute(request);


MessageBox.Show(response.Content);

string url_detail = String.Empty;


url_detail =
"http://172.30.108.21:7048/BC180/ODataV4/Company('MNDG%20TEST')/APISalesOrderDetailAddv";

string No = "";

var api = JObject.Parse(response.Content);

if (response.Content.Contains("@odata.etag"))
{
No = api["No"].ToString();
}

if (No != "")
{
var client_detail = new RestClient(url_detail);
client_detail.Timeout = -1;

client_detail.Authenticator = new NtlmAuthenticator(nCredential);


var request_detail = new RestSharp.RestRequest(RestSharp.Method.POST);

request_detail.AddHeader("Content-Type", "application/json");

Newtonsoft.Json.Linq.JObject RequestJsonDetail = new Newtonsoft.Json.Linq.JObject();


RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Document_Type", "Order"));
RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Document_No", No.ToString()));
RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Line_No", 3000));
RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Type", "Item"));
RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("No", "100011"));
RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("VAT_Prod_Posting_Group", "IVA16"));
RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Location_Code", "TIENDA-MIR"));

RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Quantity", Decimal.Parse("2")));


RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Unit_of_Measure_Code", "PZA"));
RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Unit_Price",
Decimal.Parse("25.00")));
RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Tax_Group_Code", "IVA"));
RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Line_Discount_Amount",
Decimal.Parse("2.50")));
RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Line_Discount_Percent",
Decimal.Parse("5")));

RequestJsonDetail.Add(new Newtonsoft.Json.Linq.JProperty("Line_Amount",
Decimal.Parse("40.00")));

Página 40 de 46
string gtmJSONDetail = Newtonsoft.Json.JsonConvert.SerializeObject(RequestJsonDetail);

request_detail.AddParameter("text/json", gtmJSONDetail, RestSharp.ParameterType.RequestBody);

IRestResponse responseDetail = client_detail.Execute(request_detail);


MessageBox.Show(responseDetail.Content);

Dentro de LS Central el documento se visualiza de la siguiente manera.

Página 41 de 46
Si se requiere actualizar la dirección de envió se debe realizar una segunda solicitud para actualizar estos campos. Se anexa un
ejemplo para realizar esta solicitud.
private void btnUpdatePed_Click(object sender, EventArgs e)
{
//consulta pedido
string url_fact = String.Empty;
string filter = String.Empty;

filter = "?$filter=number eq 'VPED-00071'";


url_fact = "http://172.30.108.21:7048/BC180/api/V2.0/companies(a93ce7a8-21f9-eb11-
acaf-005056ab4b79)/salesOrders" + filter.Trim();
System.Net.NetworkCredential nCredential = new
NetworkCredential("desarrolloaddvantit4", "Pa$$w0rd", "MNG");

var fact_query = new RestClient(url_fact);


fact_query.Timeout = -1;

fact_query.Authenticator = new NtlmAuthenticator(nCredential);


var request_fact = new RestSharp.RestRequest(RestSharp.Method.GET);
request_fact.AddHeader("Content-Type", "application/json");
IRestResponse response_client = fact_query.Execute(request_fact);
MessageBox.Show(response_client.Content);
string id = "";
string tag = "";

var api = JObject.Parse(response_client.Content);

foreach (var fact in api["value"])


{
foreach (var prop in fact)
{

Página 42 de 46
var property = prop as JProperty;

if (property != null)
{
if (property.Name == "id")
{
id = property.Value.ToString();
}
if (property.Name == "@odata.etag")
{
tag = property.Value.ToString();
}

}
}

if (id != "")
{
string url = String.Empty;

url = "http://172.30.108.21:7048/BC180/api/V2.0/companies(a93ce7a8-21f9-eb11-acaf-
005056ab4b79)/salesOrders(" + id.Trim() + ")";

var client = new RestClient(url);


client.Timeout = -1;

client.Authenticator = new NtlmAuthenticator(nCredential);


var request = new RestSharp.RestRequest(RestSharp.Method.PATCH);

request.AddHeader("Content-Type", "application/json");
request.AddHeader("If-Match", tag.Trim());
Newtonsoft.Json.Linq.JObject RequestJson = new Newtonsoft.Json.Linq.JObject();

RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("shipToName", "FRANCISCO DIAZ


LOZANO"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("shipToAddressLine1", ""));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("shipToAddressLine2", "San
Rafael 1"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("shipToCity", "Cd Madero1"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("shipToCountry", "MX"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("shipToState", "Tamaulipas
1"));
RequestJson.Add(new Newtonsoft.Json.Linq.JProperty("shipToPostCode", "90526891"));

//pedidos ACTUALIZACIONES

string gtmJSON = Newtonsoft.Json.JsonConvert.SerializeObject(RequestJson);

Página 43 de 46
request.AddParameter("text/json", gtmJSON, RestSharp.ParameterType.RequestBody);

IRestResponse response = client.Execute(request);


MessageBox.Show(response.Content);

}
}

NOTA:
Una vez que se da de alta la cotización, el proceso de convertir la cotización en pedido y enviar a reparto, lo
realiza el asesor de ventas en el sistema LS interactuando con el sistema de entregas confiables

3.1.4. Alta de pedidos (Facturas de clientes)

En el sistema de eCommerce se presenta la opción de generar una cotización o de generar un


pedido, cuando el cliente seleccionar que va a generar un pedido, se solicita la manera en la que
pagará el pedido:

1. Pago en la caja de cualquier tienda

Para este tipo de pedidos debemos integrar una cotización de ventas y en un proceso automático,
transferir la cotización a un pedido de ventas para reservar la mercancía y generar la pre-boleta
de reparto. Cuando el cliente se dirija a cajas, este se cobrará en desde el punto de ventas.

Página 44 de 46
Cuando el cliente pague el pedido, se debe enviar la confirmación al sistema de entregas
confiables (verificar integración con entregas confiables)

2. Pago en la pasarela de cobros (transferencia o tarjeta bancaria)

Para este tipo de pedidos debemos integrar una cotización de ventas, en automático generar el
pedido de ventas (con su pre-boleta de reparto), generar la factura (timbrar en caso de que el
cliente solicite la factura) y enviar la confirmación al sistema de entregas confiables. (Esta factura
debe contabilizarse en automático)

En eCommerce el cliente marca si desea facturar (timbrar su documento), sino lo marca se va a


público general

En caso de que el cliente solicite timbrar su venta, se le deberá devolver el XML y el PDF, para
ello Addvantit suministrará el WebServices para cumplir tal fin.

Página 45 de 46
4. Aceptación

En nombre de ADDVANTIT
Fecha: 06 de abril de 2022

Nombre Departamento Firma

Franz Alberto Nedzelsky Llanes Líder de proyecto

En nombre de ADVANTIT
Fecha: 06 de abril de 2022

Nombre Departamento Firma

Victor Alvarado Líder de proyecto/


Project Manager
Alexis Pérez Consultor Dynamics BC

Página 46 de 46

También podría gustarte