Funciones REST

<< Haga clic para mostrar la tabla de contenido >>

Navegación:  Rest API >

Funciones REST

AUTORIZACIÓN

 

El acceso al API es de tipo BASICO, donde se requiere Usuario y Contraseña, el cual debe existir en la Base de datos de DisPRO con las credenciales: Credenciales de Acceso a Funciones

 

 

 

 


LISTA DE FUNCIONES

 

Empresa

oGetEmpresa

oListaAgentesVenta

oListaUsuarios

oListaAlmacenes

oListaAreas

oListaZonas

oListaRutas

oListaUbicaciones

oWA_Mensaje

Estadistica

oListaDashboardBI

oGeneraDashboardBI

Clientes

oListaCliente

oListaCliente_DoctosEnDeuda

oCliente_AbonoADocto

oCliente_AltaModifica

Tarjetas

oAlta_Tarjeta

oConsultaTarjetaPuntos

oProcesarTarjetaPuntos

oConsultaTarjetaRegalo

oConsultaTarjetaRegaloBanda

oProcesarTarjetaRegalo

oProcesarTarjetaRegaloBanda

Productos

oProducto_ExistenciaActual

oProducto_ExistenciaActualReal

oAjusteInventario

oListaProducto

oObtenerCategorias

oProducto_PrecioPG

Pedidos En Linea

oAlta_PedidoEnLinea

oProcesar_PedidoEnLinea

oPDF_FacturaXFolioPedido

oPDF_FacturaXFolioVenta

Proveedores

oListaProveedor

Compras

oAlta_Entrada

oAlta_Conversion

Almacén Digital

oAsociarXML

oSubirXML

oSubirXML_EnZip

CFDI Funciones

oCFDI_Estatus

oCFDI_Lista_Estatus

oCFDI_Consulta

oCFDI_SolicitudCancela

oCFDI_DisPROCancela

Ventas

oListaVentasAdmin

 

 

 


EMPRESA

 

[HttpGet] Function GetEmpresa():TJSONObject;

Devuelve los datos de la Empresa princiaples

URI: http://localhost:8888/service/DisPROAPI/GetEmpresa/

 

Response:

{

   "NOMBRE": "KARLA FUENTE NOLASCO",

   "COMERCIAL": "PRUEBA MERCADO",

   "RFC": "FUNK-671228-PH6",

   "DOMICILIO": "Carret. Transp. No. Ext. 115 Int. 21-1 Valle Dorado C.P. 22890 Ensenada, B.C.",

   "CORREO": "CMA-920601-ND0",

   "TELEFONO": "",

   "IVAINCLUIDO": "F",

   "PRINTER1": "Impresora 1",

   "PRINTER2": "Impresora 2",

   "PRINTER3": "Impresora 3",

   "PRINTER4": "Impresora 4",

   "PROTITULO1": "Fabricante",

   "PROTITULO2": "Modelo",

   "PROTITULO3": "Unidad",

   "OP_MOSTRARPIEZAS": "F",

   "TASA2_INC_BASEIVA": "T",

   "ENTREGA_CONFOTO": "",

   "TIPOFOTO": "",

   "OP_ORDENPRO_TITULOS": "",

   "URL_POST_EN_ENTREGAPEDIDOS": "",

   "OP_AUTHPEDIDOPRECIO": "T",

   "OP_AUTOGEN_PRECIOPACTO": "T",

   "OP_ORDENPRO_TITULOS": "",

   "TC_VENTACONTADO": "17.5",

   "TC_COMPRA": "22",

   "TC_VENTACREDITO": "17.5",

   "TC_COBRANZACREDITO": "17.5",

   "FOLIOTRUPERLINEA": "",

   "PAPELETA": "",

   "OP_ART_EXTRA_REL": "",

   "OP_IEPS_SOBRE_IVA": "2",

   "URL_PHOTO": "https:\/\/central-mayorista.com\/foto\/",

   "OP_SIN_DERIVACION": "T",

   "TC_PUNTOVENTA": "17.5",

   "CONT_USUARIOS": "342",

   "CONT_ALMACENES": "5",

   "CONT_CLIENTES": "7047",

   "CONT_PROVEEDORES": "3935",

   "CONT_PRODUCTOS": "12247",

   "CONT_PEDIDOS_PENDIENTES": "2",

   "CONT_PEDIDOS_FOLIADOS": "0",

   "TOTAL_PEDIDOS_FOLIADOS": "0"

}

 

 

 

 

[HttpGet] Function ListaAgentesVenta():TJSONObject;

Devuelve la Lista de Agentes de Venta

URI: http://localhost:8888/service/DisPROAPI/ListaAgentesVenta/

 

Response:

{

   "CATALOGO": [

       {

           "NOMBRE": "DANIEL",

           "NUUSER": "2"

       },

       {

           "NOMBRE": "JOEL",

           "NUUSER": "44"

       },

       {

           "NOMBRE": "SAMUEL",

           "NUUSER": "722"

       },

       {

           "NOMBRE": "CRISTOPHER",

           "NUUSER": "714"

       }

   ]

}

 

 

 

[HttpGet] Function ListaUsuarios():TJSONObject;

Devuelve la Lista de Usuarios Activos

URI: http://localhost:8888/service/DisPROAPI/ListaUsuarios/

 

Response:

{

   "CATALOGO": [

       {

           "NOMBRE": "DANIEL",

           "NUUSER": "2"

       },

       {

           "NOMBRE": "ENTRENAMIENTO",

           "NUUSER": "7"

       },

       {

           "NOMBRE": "GABRIEL",

           "NUUSER": "15"

       },

       {

           "NOMBRE": "SAMUEL",

           "NUUSER": "723"

       },

       {

           "NOMBRE": "OSWALDO",

           "NUUSER": "713"

       }

   ]

}

 

 

 

 

 

[HttpGet] Function ListaAlmacenes():TJSONObject;

Devuelve la Lista de Almacenes Activos

URI: http://localhost:8888/service/DisPROAPI/ListaAlmacenes/

 

 

Response:

{

   "CATALOGO": [

       {

           "NUALMACEN": 0,

           "NOMBRE": "Matriz",

           "DESCRIPCION": "Matriz",

           "PRECIO": "G",

           "TASAIVA": 0

       },

       {

           "NUALMACEN": 1,

           "NOMBRE": "Gastelum",

           "DESCRIPCION": "Gastelum",

           "PRECIO": "G",

           "TASAIVA": 8

       }

   ]

}

 

 

 

 

 

[HttpGet] Function ListaAreas():TJSONObject;

Devuelve la Lista de Areas

URI: http://localhost:8888/service/DisPROAPI/ListaAreas/

 

 

Response:

{

   "CATALOGO": [

       {

           "NUAREA": 0,

           "DESCRIPCION": "CDMX"

       },

       {

           "NUAREA": 1,

           "DESCRIPCION": "Monterrey"

       }

   ]

}

 

 

 

 

 

[HttpGet] Function ListaZonas():TJSONObject;

Devuelve la Lista de Zonas

URI: http://localhost:8888/service/DisPROAPI/ListaZonas/

 

 

Response:

{

   "CATALOGO": [

       {

           "NUZONA": 0,

           "DESCRIPCION": "Distribuidores"

       },

       {

           "NUZONA": 1,

           "DESCRIPCION": "Restaurantes"

       }

   ]

}

 

 

 

 

 

[HttpGet] Function ListaZonas():TJSONObject;

Devuelve la Lista de Rutas

URI: http://localhost:8888/service/DisPROAPI/ListaRutas/

 

 

Response:

{

   "CATALOGO": [

       {

           "NURUTA": 0,

           "DESCRIPCION": "Norte"

       },

       {

           "NURUTA": 1,

           "DESCRIPCION": "Sur"

       }

   ]

}

 

 

 

 

 

 

 

[HttpGet] Function ListaUbicaciones():TJSONObject;

Devuelve la Lista de Ubicaciones

URI: http://localhost:8888/service/DisPROAPI/ListaUbicaciones/

 

 

Response:

{

   "CATALOGO": [

       {

           "NUUBICACION": 0,

           "DESCRIPCION": "Pasillo 1"

       },

       {

           "NUUBICACION": 1,

           "DESCRIPCION": "Gondola 1"

       }

   ]

}

 

 

 

 

 

 

 

 

 

 

 

[HttpPost] Function WA_Mensaje([FromBody] WA: TJSONObject):TJSONObject;

Enviar mensaje a traves de la plataforma de WhatsApp, requiere previa configuracion.

 

URI: http://localhost:8888/service/DisPROAPI/WA_Mensaje/

 

Request1:

{

  "WA": {

       "CELULAR": "6461902030",

       "TITULO": "ORDEN #34534",

       "MENSAJE": "LE INFORMAMOS QUE SU PEDIDO HA SIDO ENVIADO"

  }

}

 

Request2:

{

  "WA": {

       "CELULAR": "526461902030",

       "TITULO": "ORDEN #34534",

       "MENSAJE": "LE INFORMAMOS QUE SU PEDIDO HA SIDO ENVIADO"

  }

}

 

 

Response:

{

   "RESULT": 2,

   "MSG": "Mensaje enviado con Exito"

}

 

 

 

 

 

 

ESTADISTICA

 

 

 

 

[HttpGet] Function ListaDashboardBI(ID:String):TJSONObject;

Se genera la lista de dashboards disponibles, ver DisPRO Business Intelligence

 

URI: http://localhost:8889/service/DisPROAPI/ListaDashboardBI/

 

 

Request

http://localhost:8889/service/DisPROAPI/ListaDashboardBI

 

 

Response

{

   "CATALOGO": [

       {

           "ID": "1.0.0",

           "PADRE": "",

           "NOMBRE": "EL NÚCLEO OPERATIVO",

           "OBJETIVO": "",

           "DESCRIPCION": "",

           "KPI": ""

       },

       {

           "ID": "1.0.1",

           "PADRE": "1.0.0",

           "NOMBRE": "Dashboard de Ventas y Rendimiento Comercial",

           "OBJETIVO": "Monitorear la generación de ingresos netos y la eficiencia de la fuerza de ventas.",

           "DESCRIPCION": "Ofrece una visión clara de la facturación acumulada anual y mensual. Analiza el crecimiento orgánico comparando el mes actual contra el anterior, .....",

           "KPI": "Venta Total Neta, Cumplimiento de Metas por Agente, Ranking de Productos con mayor demanda y Variación Mensual (MoM)."

       },

       {

           "ID": "1.0.2",

           "PADRE": "1.0.0",

           "NOMBRE": "Dashboard de Cuentas por Cobrar",

           "OBJETIVO": "Controlar la liquidez de la empresa y el riesgo crediticio de los clientes.",

           "DESCRIPCION": "Clasifica la deuda de los clientes según su antigüedad y nivel de riesgo. Permite identificar de inmediato el monto que ha superado la fecha de vencimiento y proyectar la recuperación de efectivo.",

           "KPI": "Cartera Total, Índice de Morosidad, Antigüedad de Saldos (Aging) y Top 20 de Clientes con Mayor Deuda."

       },

       {

           "ID": "1.0.4",

           "PADRE": "1.0.0",

           "NOMBRE": "Dashboard de Compras y Abastecimiento",

           "OBJETIVO": "Analizar la relación con proveedores y el flujo de entrada de mercancía.",

           "DESCRIPCION": "Supervisa el volumen de compras anual y mensual. Incluye un control de órdenes de compra pendientes por recibir y un análisis de la inflación interna (aumento de costos de proveedores).",

           "KPI": "Gasto Total en Compras, Monto de Órdenes Pendientes, Top 10 de Proveedores y Variación Crítica de Costos."

       },

       {

           "ID": "1.0.5",

           "PADRE": "1.0.0",

           "NOMBRE": "Dashboard de Inventarios (Sin Almacenes)",

           "OBJETIVO": "Optimizar la inversión en existencias y prevenir quiebres de stock.",

           "DESCRIPCION": "Valoriza el inventario total a costo actual. Clasifica los productos por categorías y detecta automáticamente aquellos que están por debajo de su stock mínimo de seguridad.",

           "KPI": "Valorización de Stock, Artículos en Quiebre, Valor del Stock Inmovilizado (>90 días) y Cantidad de SKUs activos."

       }

   ]

}

 

 

 

 

 

 

[HttpGet] Function GeneraDashboardBI(ID:String):TJSONObject;

El módulo de Business Intelligence (BI) de DisPRO ERP transforma los datos operativos en información estratégica visual. Su arquitectura permite la Consolidación Multi-Sucursal, ofreciendo una visión global del grupo empresarial o un análisis detallado por unidad de negocio.

 

ID: es el Folio de Estadistica de Bussines Intelligence que desea recuperar en Json. vea los ID aqui: DisPRO Business Intelligence

 

URI: http://localhost:8888/service/DisPROAPI/GeneraDashboardBI/

 

 

Request

URI: http://localhost:8888/service/DisPROAPI/GeneraDashboardBI?ID=1.0.1

 

 

Response

{

   "DASHBOARD": {

       "metadata": {

           "titulo": "Ventas y Rendimiento",

           "sucursal": "PRUEBA MERCADO",

           "anio": 2024,

           "mes": 4

       },

       "resumen_anual": {

           "venta_total": 2429657.143,

           "utilidad_total": 818202.623999999,

           "cobrado_total": 0,

           "margen_promedio": 33.6756412877963

       },

       "kpis_mes": {

           "venta": 143361.96,

           "utilidad": 45321.5260000001,

           "variacion": 34.6283749837304,

           "margen_pct": 31.6133554535667

       },

       "historico_mensual": [

           {

               "mes": "Ene",

               "venta": 185680.25

           },

           {

               "mes": "Feb",

               "venta": 172177.045

           },

           {

               "mes": "Mar",

               "venta": 106487.18

           },

           {

               "mes": "Abr",

               "venta": 143361.96

           },

           {

               "mes": "May",

               "venta": 327937.37

           },

           {

               "mes": "Jun",

               "venta": 168386.225

           },

           {

               "mes": "Jul",

               "venta": 300033.48

           },

           {

               "mes": "Ago",

               "venta": 174326.94

           },

           {

               "mes": "Sep",

               "venta": 195495.08

           },

           {

               "mes": "Oct",

               "venta": 216176.305

           },

           {

               "mes": "Nov",

               "venta": 101164.58

           },

           {

               "mes": "Dic",

               "venta": 338430.728

           }

       ],

       "top_productos": [

           {

               "codigo": "00057292",

               "producto": "KELLOGGS ZUCARITAS 1\/600gr C-16",

               "total": 244654.72

           },

           {

               "codigo": "18122024",

               "producto": "VEHICULO TIPO SEDAN MARCA KIA MOTORS MODELO 2020 5 PUERTAS MOTOR 6 CILINDROS",

               "total": 232228.448

           },

           {

               "codigo": "00463159",

               "producto": "TARIMAS BLANCAS",

               "total": 197038.715

           },

           {

               "codigo": "00042116",

               "producto": "ACEITE COMESTIBLE SARITA 1\/800mL C-12",

               "total": 166080

           },

           {

               "codigo": "00018192",

               "producto": "GALLETAS SALADITAS GAMESA 1\/504gr C-12",

               "total": 145800

           },

           {

               "codigo": "00547212",

               "producto": "ALIMENTO P\/PERRO CHIKISCAN 1\/25kg**",

               "total": 119067.8

           },

           {

               "codigo": "00965313",

               "producto": "CARTON",

               "total": 105065

           },

           {

               "codigo": "00016007",

               "producto": "MAYONESA BEST FOODS 1\/8oz C-24",

               "total": 93312

           },

           {

               "codigo": "19072024",

               "producto": "MONTACARGAS NISSAN AÑO 2003 MODELO E6057 CAPACIDAD 3000 LIBRAS",

               "total": 83333.33

           },

           {

               "codigo": "00317216",

               "producto": "ACEITE COMESTIBLE HOGAR SOYA 1\/800 ML C-12",

               "total": 79440

           }

       ],

       "top_clientes": [

           {

               "id": 115847,

               "nombre": "ALEJANDRA ZEPEDA SANTOYO",

               "total": 1658362.15

           },

           {

               "id": 118202,

               "nombre": "JORGE EDUARDO ALCARAZ CORTES",

               "total": 232228.448

           },

           {

               "id": 115854,

               "nombre": "COMERCIALIZADORA CAMNU",

               "total": 197038.715

           },

           {

               "id": 117332,

               "nombre": "LOGISTIKMAT KORPORATION",

               "total": 145800

           },

           {

               "id": 115389,

               "nombre": "VICTOR HUGO ROMAN GONZALEZ",

               "total": 112893.5

           },

           {

               "id": 116418,

               "nombre": "MARISOL MONTES REYES",

               "total": 83333.33

           },

           {

               "id": 117762,

               "nombre": "GABRIELA LOPEZ CLAVEL",

               "total": 1

           },

           {

               "id": 115648,

               "nombre": "ALONSO SANCHEZ DEL PALACIO",

               "total": 0

           },

           {

               "id": 115649,

               "nombre": "IGNACIO MARTINEZ VERA",

               "total": 0

           },

           {

               "id": 115650,

               "nombre": "INSTITUTO DE LA MUJER PARA EL ESTADO DE BAJA CALIFORNIA",

               "total": 0

           }

       ],

       "ranking_vendedores": [

           {

               "vendedor": "TOÑO",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "OSCAR",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "ANGEL",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "MARIO",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "RAFAEL",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "ALVARO",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "ELIGIO",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "ALONSO",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "PEDRO ",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "MARTIN",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "VENTANILLA",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "SAN QUINTIN",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           },

           {

               "vendedor": "ROBERTOROJAS",

               "meta_pct": 0,

               "venta": 0,

               "faltante": 100000

           }

       ]

   }

}

 

 

 

 

 

 

 

 


CLIENTES

 

 

[HttpGet] Function ListaCliente(Tipo:Integer; Filtro: String):TJSONObject;

Devuelve el catálogo de artículos que cumplan con el Filtro enviado

 

Parámetros:

Tipo =

1: Buscar por Nombre o Comercial

2: Buscar en RFC

3: Buscar en Correo

4: Buscar en Teléfono

5: Buscar por Clave Principal

6: Buscar por Extra1

7: Buscar por Extra2

8: Buscar por Extra3

9: Buscar por Inicio de Nombre

 

Filtro = Clave o Palabra a buscar según el Tipo elegido

 

 

URI: http://localhost:8888/service/DisPROAPI/ListaCliente/

 

Ejemplos:

http://localhost:8888/service/DisPROAPI/ListaCliente/?Tipo=1&Filtro=DANIEL

http://localhost:8888/service/DisPROAPI/ListaCliente/?Tipo=5&Filtro=124

 

Muestra todo el Catalogo de Clientes

http://localhost:8888/service/DisPROAPI/ListaCliente/?Tipo=-1&Filtro=All

 

Muestra todos clientes que inicien con la Letra A

http://localhost:8888/service/DisPROAPI/ListaCliente/?Tipo=9&Filtro=A

 

Response:

{

   "CATALOGO": [

       {

           "NUCLIENTE": "",

           "NUCLIENTEDISPRO": "118432",

           "NOMBRE": "DANIEL RAMIREZ JAIMES",

           "COMERCIAL": "",

           "RFC": "RAJD-760129-8SX",

           "CALLE": "",

           "NUMERO": "",

           "INTERIOR": "",

           "COLONIA": "",

           "LATITUD": "",

           "LONGITUD": "",

           "CIUDAD": "",

           "ESTADO": "",

           "PAIS": "Mexico",

           "CP": "22880",

           "EMAIL": "rdaniel@cwinsystems.com",

           "TELEFONO": "",

           "DOMICILIOENTREGA": "",

           "MSG_LIVE": "",

           "SALDO": "",

           "LIMITE": "",

           "NUTIPOPAGO": "1",

           "EXTRA1": "",

           "EXTRA2": "",

           "EXTRA3": "",

           "NUZONA": "1",

           "NURUTA": "0",

           "NUAREA": "2",

           "NUPRECIO": "A"

       }

   ]

}

 

 

 

 

[HttpGet] Function ListaCliente_DoctosEnDeuda (NuMoneda, NuCliente:Integer):TJSONObject;

Devuelve la lista de documentos que se encuentran en Deuda en una Moneda determinada de un Cliente, función que servirá para poder hacer una abono sobre una factura en deuda.

 

URI: http://localhost:8888/service/DisPROAPI/ListaCliente_DoctosEnDeuda/

 

 

Ejemplo: http://localhost:8888/service/DisPROAPI/ListaCliente_DoctosEnDeuda/?NuMoneda=1&NuCliente=116914

 

Response:

{

   "CATALOGO": [

       {

           "NUCLIENTE_MOV": 144194,

           "FECHA": "03\/09\/2022",

           "FECHAVENCE": "02\/11\/2022",

           "FOLIOSTR": "F00T00R0192",

           "UUID": "",

           "DESCRIPCION": "Venta a Crédito",

           "SERIEFACTURA": "",

           "SERIETICKET": "",

           "SERIEREMISION": "0",

           "FOLIOFACTURA": 0,

           "FOLIOTICKET": 0,

           "FOLIOREMISION": 192,

           "IMPORTEORIGINAL": 6565.86,

           "IMPORTEDEUDA": 6365.86,

           "TIPO": 1,

           "FACILIDAD271": "F",

           "PAGOFACILIDAD271": "30\/12\/1899"

       },

       {

           "NUCLIENTE_MOV": 144366,

           "FECHA": "06\/09\/2022",

           "FECHAVENCE": "05\/11\/2022",

           "FOLIOSTR": "F00T00R0195",

           "UUID": "",

           "DESCRIPCION": "Venta a Crédito",

           "SERIEFACTURA": "",

           "SERIETICKET": "",

           "SERIEREMISION": "0",

           "FOLIOFACTURA": 0,

           "FOLIOTICKET": 0,

           "FOLIOREMISION": 195,

           "IMPORTEORIGINAL": 5479.92,

           "IMPORTEDEUDA": 5479.92,

           "TIPO": 1,

           "FACILIDAD271": "F",

           "PAGOFACILIDAD271": "30\/12\/1899"

       }

   ]

}

 

 

 

 

[HttpGet] Function Cliente_AbonoADocto ([FromBody] PAGOJSON:TJSONObject):TJSONObject;

Realizar el abono de 1 hasta 10 documentos a traves del Folio "NuCliente_Mov" obtenido con la funcion de "ListaCliente_DoctosEnDeuda"

URI: http://localhost:8888/service/DisPROAPI/Cliente_AbonoADocto/

 

NUMONEDA:

1= MXN

2= USD

 

NUMETODOPAGO:

F= Efectivo

T= Cheque

R= Transferencia

J= Tarjeta de Crédito

D= Tarjeta de Débito

M= Monedero Electrónico

E= Dinero Electrónico

V= Vales de Despensa

 

 

Request

{

   "PAGOJSON": {

       "NUCLIENTE_MOV1": 144194,

       "NUCLIENTE_MOV2": 0,

       "NUCLIENTE_MOV3": 0,

       "NUCLIENTE_MOV4": 0,

       "NUCLIENTE_MOV5": 0,

       "NUCLIENTE_MOV6": 0,

       "NUCLIENTE_MOV7": 0,

       "NUCLIENTE_MOV8": 0,

       "NUCLIENTE_MOV9": 0,

       "NUCLIENTE_MOV10": 0,

       "NUUSER": 2,

       "NUALMACEN": 0,

       "PAGONUMONEDA": 1,

       "ABONO": 200,

       "TCCOBRO": 19.2,

       "FECHAPAGO": "14/11/2024",

       "NUMETODOPAGO": "F",

       "NUMOPERACION": "12345",

       "DESCRIPCION": "ABONO DE FACTURA"

   }

}

 

Response:

{

   "RESULT": 2,

   "MSG": "Se hizo el abono exitosamente",

   "FOLIOABONO": 380,

   "FOLIOINTERNO": 146367

}

 

 

 

 

 

 

[HttpPost] Function Cliente_AltaModifica([FromBody] CLIENTE:TJSONObject):TJSONObject;

Genera alta y modificacion de clientes

URI: http://localhost:8888/service/DisPROAPI/Cliente_AltaModifica/

 

NUTIPOPAGO:

1= CONTADO

2= CREDITO ACTIVADO

 

NUORIGEN:

1= NACIONAL

2= EXTRANJERO

 

NuRuta, NuZona y NuArea es obtenido de las funciones ListaRutas, ListaAreas, y ListaZonas

REGIMENFISCAL, es la clave del catalogo de Regimenes fiscales proporcionados por el SAT para el CFDI 4.0

C_USOCFDI, es la clave del catalogo de Uso de CFDI proporcionados por el SAT para el CFDI 4.0

 

Request de Alta (el campo NUCLIENTE debe ser CERO)

{

   "CLIENTE": {

       "NUCLIENTE": 0,

       "NUZONA": 2,

       "NUAREA": 1,

       "NURUTA": 1,

   

       "NOMBRE": "DANIEL RAMIREZ JAIME",

       "COMERCIAL": "CWIN SYSTEMS",

"RFC": "RAJD760112XCO",

       "REGIMENFISCAL": "",

       "C_USOCFDI": "",

 

       "CALLE": "BUCANEROS",

       "NUMERO": "55",

       "INTERIOR": "",

       "COLONIA": "PLAYA ENSENADA",

       "CIUDAD": "ENSENADA",

       "ESTADO": "BAJA CALIFORNIA",

       "CP": "22880",

       "PAIS": "MEXICO",

       "DOMICILIOENTREGA": "AV. MEXICO NUM 34 TIJUANA BC",

       "TELEFONO": "6461521901",

       "EMAIL": "6461521901",

       "EXTRA1": "",

       "EXTRA2": "",

       "EXTRA3": "",

       "MSG_LIVE": "",

       "NUPRECIO": "A",

       "NUTIPOPAGO": 1,

       "LIMITE": 0,

       "NUORIGEN": 1,

       "LATITUD": 0,

       "LONGITUD": 0

   }

}

 

Response Exitoso:

{

   "RESULT": 2,

   "MSG": "El Cliente se dio de alta exitosamente",

   "NUCLIENTE": 118912

}

 

 

Response con Error:

{

   "RESULT": 4,

   "MSG": "El Cliente ya se encuentra registrado",

   "NUCLIENTE": 118912

}

 

 

 

 

Request de Modificación de Cliente

{

   "CLIENTE": {

       "NUCLIENTE": 118912,

       "NUZONA": 2,

       "NUAREA": 2,

       "NURUTA": 1,

   

       "NOMBRE": "DANIEL RAMIREZ JAIME",

       "COMERCIAL": "CWIN SYSTEMS",

"RFC": "RAJD760112XCO",

       "REGIMENFISCAL": "626",

       "C_USOCFDI": "G03",

 

       "CALLE": "BUCANEROS",

       "NUMERO": "55",

       "INTERIOR": "",

       "COLONIA": "PLAYA ENSENADA",

       "CIUDAD": "ENSENADA",

       "ESTADO": "BAJA CALIFORNIA",

       "CP": "22880",

       "PAIS": "MEXICO",

       "DOMICILIOENTREGA": "AV. MEXICO NUM 34 TIJUANA BC",

       "TELEFONO": "6461521901",

       "EMAIL": "rdaniel@mxfactura.com",

       "EXTRA1": "",

       "EXTRA2": "",

       "EXTRA3": "",

       "MSG_LIVE": "",

       "NUPRECIO": "B",

       "NUTIPOPAGO": 2,

       "LIMITE": 5000,

       "NUORIGEN": 1,

       "LATITUD": 0,

       "LONGITUD": 0

   }

}

 

 

 

Response Existoso:

{

   "RESULT": 2,

   "MSG": "El Cliente se modifico exitosamente",

   "NUCLIENTE": 118912

}

 

 

 

 

 

 


TARJETAS

 

[HttpPost] Function Alta_Tarjeta([FromBody] TARJETAJSON: TJSONObject):TJSONObject;

Permite realizar alta de tarjeta de Puntos o de Regalo.

 

URI: http://localhost:8888/service/DisPROAPI/Alta_Tarjeta/

 

TIPO

0 = TARJETA DE PUNTOS

1 = TARJETA DE REGALO

 

El campo Banda, solo es necesario en Tarjeta de Regalo

El campo Year define la cantidad de años de Vigencia de la tarjeta, si Year es igual a 0 (Cero) no tendrá vigencia

 

Request:

{

   "TARJETAJSON": {

       "TIPO": 0,

       "IDCREDENCIAL": 15000,

       "NOMBRE": "DANIEL RAMIREZ",

       "TELEFONO": "",

       "CORREO": "",

       "ALTERNO": "",

       "BANDA": "",

       "YEAR": 1

   }

}

 

Response:

{

   "RESULT": 2,

   "MSG": "Alta Exitosamente"

}

 

 

 

 

[HttpGet] Function ConsultaTarjetaPuntos(IDCredencial:LongInt):TJSONObject;

Consulta de una Tarjeta de Puntos utilizando el ID de la credencial

 

URI: http://localhost:8888/service/DisPROAPI/ConsultaTarjetaPuntos/?IDCredencial=4500

 

Response:

{

   "RESULT": 2,

   "MSG": "Encontrada Exitosamente",

   "NOMBRE": "DANIEL RAMIREZ",

   "ALTERNO": "ERIKA PEREZ",

   "TELEFONO": "6461142333",

   "CORREO": "rdaniel@mxfactura.com",

   "SOLOSALDO": "",

   "FECHAVENCE": "23\/11\/2024",

   "PUNTOS": 1034,

   "CONTEO": 30

}

 

{

   "RESULT": 3,

   "MSG": "La tarjeta esta Vencida con Fecha 12\/11\/2024"

}

 

 

 

[HttpGet] Function ProcesarTarjetaPuntos(IDCredencial, Tipo, Puntos, Referencia:LongInt):TJSONObject;

Función para abonar puntos o redimir puntos a una tarjeta:

 

Tipo: 1 Abonar Puntos, 2 Redimir Puntos

Puntos: Cantidad de Puntos

Referencia: Folio numérico para identificar la transacción

 

URI: http://localhost:8888/service/DisPROAPI/ProcesarTarjetaPuntos/?IDCredencial=4500&Tipo=1&Puntos=100&Referencia=10000

 

 

Response:

{

   "RESULT": 2,

   "MSG": "Se han abonado 100 Puntos"

}

 

{

   "RESULT": 2,

   "MSG": "Se han redimido 100 Puntos"

}

 

 

 

 

[HttpGet] Function ConsultaTarjetaRegalo(IDCredencial:LongInt):TJSONObject;

Consulta los datos de una Tarjeta de Regalo existente a través del ID único

 

URI: http://localhost:8888/service/DisPROAPI/ConsultaTarjetaRegalo/?IDCredencial=4500

 

Response:

{

   "RESULT": 2,

   "MSG": "Encontrada Exitosamente",

   "NOMBRE": "DANIEL RAMIREZ",

   "ALTERNO": "ERIKA PEREZ",

   "TELEFONO": "6461434832",

   "CORREO": "rdaniel@mxfactura.com",

   "SOLOSALDO": "",

   "FECHAVENCE": "23\/11\/2024",

   "IMPORTE": 550.00,

   "CONTEO": 30

}

 

{

   "RESULT": 3,

   "MSG": "La tarjeta esta Vencida con Fecha 12\/11\/2024"

}

 

 

 

 

 

[HttpPost] Function ConsultaTarjetaRegaloBanda(Banda:String):TJSONObject;

Consulta los datos de una Tarjeta de Regalo existente a través de la Banda asignada

 

URI: http://localhost:8888/service/DisPROAPI/ConsultaTarjetaRegaloBanda/

 

Request:

{

"Banda"="L3410-93FD500"

}

 

Response:

{

   "RESULT": 2,

   "MSG": "Encontrada Exitosamente",

   "NOMBRE": "DANIEL RAMIREZ",

   "ALTERNO": "ERIKA PEREZ",

   "TELEFONO": "6461156345",

   "CORREO": "rdaniel@mxfactura.com",

   "SOLOSALDO": "",

   "FECHAVENCE": "23\/11\/2024",

   "IMPORTE": 550.00,

   "CONTEO": 30,

   "IDCREDENCIAL"=4500

}

 

{

   "RESULT": 3,

   "MSG": "La tarjeta esta Vencida con Fecha 12\/11\/2024"

}

 

 

 

 

 

[HttpGet] Function ProcesarTarjetaRegalo(IDCredencial, Tipo, Referencia:LongInt; Importe:Real):TJSONObject;

Función para abonar Importe o redimir importe a una tarjeta:

 

Tipo: 1 Abonar Importe, 2 Redimir Importe

Importe: Cantidad de dinero en Pesos

Referencia: Folio numérico para identificar la transacción

 

URI: http://localhost:8888/service/DisPROAPI/ProcesarTarjetaRegalo/?IDCredencial=4500&Tipo=1&Importe=100&Referencia=10000

 

 

Response:

{

   "RESULT": 2,

   "MSG": "Se han abonado $ 100.00 pesos de Importe"

}

 

{

   "RESULT": 2,

   "MSG": "Se han redimido $ 100.00 pesos de Importe"

}

 

 

 

 

 

 

 

[HttpPost] Function ProcesarTarjetaRegaloBanda(Banda:String; Tipo, Referencia:LongInt; Importe:Real):TJSONObject;

Función para abonar Importe o redimir importe a una tarjeta:

 

Tipo: 1 Abonar Importe, 2 Redimir Importe

Importe: Cantidad de dinero en Pesos

Referencia: Folio numérico para identificar la transacción

 

URI: http://localhost:8888/service/DisPROAPI/ProcesarTarjetaRegaloBanda/

 

Request:

{

"Banda"="L3410-93FD500",

"Tipo"=1,

"Importe":100,

"Referencia":10000

}

 

Response:

{

   "RESULT": 2,

   "MSG": "Se han abonado $ 100.00 pesos de Importe"

}

 

{

   "RESULT": 2,

   "MSG": "Se han redimido $ 100.00 pesos de Importe"

}

 

 

 

 

 

 

 


PRODUCTOS

 

[HttpGet] Function Producto_ExistenciaActual(NuAlmacen:Integer; ID:String):TJSONObject;

Devuelve la Existencia actual de un Producto (la que tenga el Expediente)

URI: http://localhost:8888/service/DisPROAPI/Producto_ExistenciaActual/?NuAlmacen=0&ID=00034888

 

Parámetros:

NuAlmacen = 0 (La lista de almacenes empieza desde Cero, sino maneja almacenes deber ser Cero)

ID = 00034888 (La clave debe llevar todos los ceros a la izquierda)

 

Response:

{

   "EXISTENCIA": 2

}

 

 

 

 

[HttpGet] Function Producto_ExistenciaActualReal(NuAlmacen:Integer; ID:String):TJSONObject;

Devuelve la Existencia Final descontando todos los procesos pendientes de un Producto

URI: http://localhost:8888/service/DisPROAPI/Producto_ExistenciaActualReal/?NuAlmacen=0&ID=00034888

 

Parámetros:

NuAlmacen = 0 (La lista de almacenes empieza desde Cero, sino maneja almacenes deber ser Cero)

ID = 00034888 (La clave debe llevar todos los ceros a la izquierda)

 

Response:

{

   "ACTUAL": 2,   (Existencia en Expediente)

   "ENESPERA": 0, (Ventas Foliadas En Espera)

   "SINFACTURA": 0, (Ventas realizadas en POS sin Facturar)

   "SALDO": 2,  (Existencia Real)

   "ENPEDIDO": 0 (Ventas realizadas en Pedidos En Linea aun no procesadas)

}

 

 

 

 

[HttpGet] Function AjusteInventario (NuAlmacen:Integer; ID: String; Cantidad:Real):TJSONObject;

Realiza un Ajuste de Inventario de forma Express a un producto

URI: http://localhost:8888/service/DisPROAPI/AjusteInventario/?NuAlmacen=0&ID=00034888&Cantidad=0

 

Parámetros:

NuAlmacen = 0 (La lista de almacenes empieza desde Cero, sino maneja almacenes deber ser Cero)

ID = 00034888 (La clave debe llevar todos los ceros a la izquierda)

Cantidad = Es la Existencia Real que se desea que tenga el Producto (no necesariamente la del expediente)

 

Response:

{

   "RESULT": 2,

   "MSG": "Inventario Ajustado Exitosamente"

}

 

 

 

 

[HttpGet] Function ListaProducto(Tipo:Integer; Filtro: String):TJSONObject;

Devuelve el catálogo de artículos que cumplan con el Filtro enviado

 

Parámetros:

Tipo =

 -1: Todo el Catálogo

1: Buscar en Descripción Por Palabra Y

2: Buscar en Descripción Por Palabra O

3: Buscar en Modelo Por Palabra Y

4: Buscar en Descripción por Contenido

5: Buscar por Clave Principal

6: Buscar por Cualquier Clave o Barra de Código

 

Filtro = Clave o Plabra a buscar según el Tipo elegido

 

Ejemplos:

Buscar en Descripción Por Palabra Y

URI: http://localhost:8888/service/DisPROAPI/ListaProducto/?Tipo=1&Filtro=DOVE

 

Buscar en Descripción Por Palabra O

URI: http://localhost:8888/service/DisPROAPI/ListaProducto/?Tipo=2&Filtro=DOVE

 

Buscar en Modelo Por Palabra Y

URI: http://localhost:8888/service/DisPROAPI/ListaProducto/?Tipo=3&Filtro=DOVE

 

Buscar en Descripción por Contenido

URI: http://localhost:8888/service/DisPROAPI/ListaProducto/?Tipo=4&Filtro=DOVE

 

Buscar por Clave Principal

URI: http://localhost:8888/service/DisPROAPI/ListaProducto/?Tipo=5&Filtro=00034888

 

Buscar por Cualquier Clave o Barra de Código

URI: http://localhost:8888/service/DisPROAPI/ListaProducto/?Tipo=6&Filtro=34888

 

 

Para mostrar todo el catalogo

URI: http://cloud.cwinsystems.net:8889/service/DisPROAPI/ListaProducto?Tipo=-1&Filtro=All

 

Mostrar todos los que inicien con texto A

http://cloud.cwinsystems.net:8889/service/DisPROAPI/ListaProducto?Tipo=7&Filtro=A

 

 

Response:

{

   "CATALOGO": [

       {

           "ID": "00012978",

           "DESCRIPCION": "ACON. DOVE RECONSTRUCCION COMPLT. 1\/1.1LT",

           "MODELO": " ",

           "EXISTENCIA": "0",

           "NUCATEGORIA": "410",

           "NUSUBCATEGORIA": "13",

           "NUUNIDADMEDIDA": "5",

           "NUMONEDA": "1",

           "OP_UNIDADDEVENTA": "0",

           "NUPRECIO1": "G",

           "NUPRECIO2": "A",

           "NUPRECIO3": "B",

           "NUPRECIO4": "C",

           "NUPRECIO5": "D",

           "BARCODE1": "7506306212978",

           "NUUNIDADMEDIDA2": "5",

           "NUUNIDADMEDIDA3": "5",

           "NUUNIDADMEDIDA4": "5",

           "NUUNIDADMEDIDA5": "5",

           "CATEGORIA": "Miscelanea*",

           "SUBCATEGORIA": "Miscelanea*",

           "CLAVEPRODSERV": "53131602",

           "NUESTADO": "0",

           "MOD6": "                              ",

           "MOD7": "                              ",

           "MOD8": "                              ",

           "MOD9": "                              ",

           "MOD10": "                              ",

           "PRECIO07": "151.9",

           "COSTO": "65.64",

           "TASAIVA": "8.00",

           "TASAIEPS": "0",

           "OP_PROMO_SINLIMITE": "X",

           "OP_PROMO_MIN_STOCK": "0",

           "FIN_PROMOCION": "30\/12\/1899",

           "PRECIO": "151.9",

           "PRECIO7": "151.9",

           "PRECIOCONIMP": 164.05,

           "PRECIOCONIMP2": 0,

           "PRECIOCONIMP3": 0,

           "PRECIOCONIMP4": 0,

           "PRECIOCONIMP5": 0,

           "PRECIOCONIMP6": 0,

           "PRECIOCONIMP7": 164.05,

           "PRECIOCONIMP8": 0,

           "UXC1": "1.00",

           "UXC2": "1.00",

           "UXC3": "1.00",

           "UXC4": "1.00",

           "UXC5": "1.00",

           "UXC6": "0.00",

           "UXC7": "0.00",

           "UXC8": "0.00",

           "UNIDAD": "pz",

           "UNIDAD2": "pz",

           "UNIDAD3": "pz",

           "UNIDAD4": "pz",

           "UNIDAD5": "pz"

       }

   ]

}

 

 

 

[HttpGet] Function ObtenerCategorias ():TJSONObject;

Devuelve la Lista de Categorías y Subcategorías activas

 

URI: http://localhost:8888/service/DisPROAPI/ObtenerCategorias/

 

Response:

{

   "CATEGORIAS": [

       {

           "NUCATEGORIA": 100,

           "DESCRIPCION": "Abarrotes en General*",

           "SUBCATEGORIAS": [

               {

                   "NUSUBCATEGORIA": 1,

                   "DESCRIPCION": "Artículos de Limpieza"

               },

               {

                   "NUSUBCATEGORIA": 4,

                   "DESCRIPCION": "Bebidas Alcohólicas"

               },

               {

                   "NUSUBCATEGORIA": 3,

                   "DESCRIPCION": "Bebidas No Alcohólicas"

               },

               {

                   "NUSUBCATEGORIA": 6,

                   "DESCRIPCION": "Comida para Mascotas"

               },

               {

                   "NUSUBCATEGORIA": 5,

                   "DESCRIPCION": "Desechables y Plásticos"

               }

           ]

       }

   ]

}

 

 

 

 

[HttpGet] Function Producto_PrecioPG(NuAlmacen:Integer; IDProducto:String):TJSONObject;

Devuelve el Precio de Publico General del producto solicitado

 

URI: http://localhost:8888/service/DisPROAPI/Producto_PrecioPG/

 

NuAlmacen = Folio del Almacén

IDProducto = Clave del Producto

 

Request:

http://localhost:8888/service/DisPROAPI/Producto_PrecioPG/?NuAlmacen=0&IDProducto=249455

 

Response:

{

   "RESULT": 2,

   "Precio": 137.01,

   "Descripcion": "ACONDICIONADOR TRESEMME EFECTO BOTOX 1\/1.1L",

   "Modelo": "ACONDICIONADOR ",

   "Unidad": "PIEZA - MXN",

   "Claves": "Clave [00249455]     BarCode [7506306249455]"

}

 

 

 

 


PEDIDOS EN LINEA

 

[HttpPost] function Alta_PedidoEnLinea([FromBody] PEDIDOJSON: TJSONObject):TJSONObject;

Se realizar el Alta de un Pedido mediante el envío de un JSON. El Almacén donde va a ser almacenado el Pedido será el que tenga asignado el Usuario como predeterminado, de lo contrario sera el Almacén 0.

 

URI: http://localhost:8888/service/DisPROAPI/Alta_PedidoEnLinea/

 

NUMONEDA:

1= MXN

2= USD

 

NUESTADO

{

0: Sin Pago

1: Pagado

2: Token de Pago

3: Token Rechazado

4: Pagar al Recoger

5: Transferencia por Confirmar

50: Transferencia Confirmada

6: Cheque por Confirmar

60: Cheque Confirmado

7: Oxxo por Confirmar

70: Oxxo Confirmada

}

 

NUIMPRESO

{0: No Requiere Factura (Remisión)  

1: Requiere Factura}

 

NUPASO

{

0 En Captura (Usarse para Dejar En Espera)

8 En Captura (Local)

1 En Proceso (Usarse para que el depto de Ventas haga la Factura)

2 Facturado  (No se use, es exclusivo de DisPRO)

3 Denegado   (No se use, es exclusivo de DisPRO)

4 Con Error  (No se use, es exclusivo de DisPRO)

5 Cancelado por Agente  (No se use, es exclusivo de DisPRO)

6 Cancelado por Ventas  (No se use, es exclusivo de DisPRO)

7 Cancelado por Cliente (No se use, es exclusivo de DisPRO)

9 Cotización (Usar para enviar solo la cotización)

10 En Revisión (para revisar Cantidades y Totales)

11 En Espera de Pago (Falta procesar el Token de pago)

}

 

 

Request:

{

   "PEDIDOJSON": {

       "NUPEDIDO": 0,

       "NUALMACEN": 0,

       "FECHA": "13/11/2024",

       "HORA": "13:37:19",

       "NOTAS": "TENER CUIDADO CON EL PRODUCTO CONGELADO",

       "REFERENCIAPAGO": "NUM. AUTORIZACION 3492394",

       "NUESTADO": 0,

       "NUIMPRESO": 1,

       "NUMONEDA": 1,

       "TIPOCAMBIO": 20,

      "NUPASO": 1,

      "TIPOFOLIOCLIENTE": 1,

 

      "USOCFDI": "G03",

      "METODOPAGO": "PPD",

      "FORMAPAGO": "99",

      "FACILIDAD271": "F",

 

"CLIENTE": [

           {

               "NUCLIENTEDISPRO": 111973,

               "NOMBRE": "DANIEL RAMIREZ JAIME",

               "RFC": "RAJD7601298SA",

               "TELEFONO": "6461156345",

               "EMAIL": "RDANIEL@MXFACTURA.COM"

           }

       ],

       "PRODUCTO": [

           {

               "NUDETALLE": 1,

               "VNUMEDIDA": 5,

               "NUPRODUCTO": "00034888",

               "OBSERVACION": "AQUI VAN LAS OBSERVACIONES",

               "ESP2": "DESCRIPCION ADICIONAL 2 (30CAR)",

               "ESP3": "DESCRIPCION ADICIONAL 2 (30CAR)",

               "ESP4": "DESCRIPCION ADICIONAL 2 (50CAR)",

               "ESP5": "DESCRIPCION ADICIONAL 2 (50CAR)",

               "CANTIDAD": 1,

               "PRECIO": 20.5,

               "DESCUENTO": 0,

               "TASAIVA": 16,

               "TASAIEPS": 0

           }

       ]

   }

}

 

Nota1: Vea los campos que puede usar en TPedido, TDetalle y TCliente (todos los campos deben ir en MAYÚSCULAS)

Nota2: Es importante definir el TipoFolioCliente correctamente para que el sistema determine de donde buscara al cliente, así como el Folio NuClienteDisPRO.

 

 

Response:

{

   "RESULT": 2,

   "MSG": "Pedido Guardado Exitosamente",

   "FOLIOPEDIDO": 664

}

 

 

 

 

[HttpGet] function Procesar_PedidoEnLinea(FolioPedido, Proceso: Integer):TJSONObject;

Convierte un Pedido En Linea en una Venta donde los Procesos pueden ser los siguientes:

 

FOLIOPEDIDO: Es el NUCARRO de la funcion ListaPedidos que identifica al Pedido a ser procesado.

 

PROCESO:

       0= Dejar en Espera

       1= Facturar con Fecha Original

       2= Facturar con Fecha Actual

       3= Remisionar con Fecha Original

 

URI: http://localhost:8888/service/DisPROAPI/Procesar_PedidoEnLinea/?FolioPedido=664&Proceso=1

 

Response:

{

   "RESULT": 2,

   "MSG": "Procesado Exitosamente",

   "FOLIOVENTA": 2050801

}

 

       Posibles resultados:

       0: Error. No Existe el Pedido

       1: Error. No se puede Facturar sino esta En Proceso

       2: Procesado Exitosamente

       3: No se proceso completo

       4,5: Se Proceso, pero No se pudo Entregar de Almacén

 

 

 

 

[HttpGet] function PDF_FacturaXFolioVenta(FolioVenta:Integer):TJSONObject;

Se recupera el PDF de una Factura a través del Folio de Venta que se obtuvo al Procesar un Pedido En Linea

 

URI: http://localhost:8888/service/DisPROAPI/PDF_FacturaXFolioVenta/?FolioVenta=2050801

 

Response:

{

   "RESULT": 2,

   "MSG": "PDF extraido exitosamente",

   "PDF_BASE64": "JVBERi0xLjcNCiWAgYKDDQoxIDAgb2JqDQo8PCAvQ3JlYXRvciA8Pg0KL0NyZWF0aW9uRGF0ZSA8\r\nNDQzYTMyMzAzMjM0MzEzMTMxMzQzMTM5MzUzOTM1MzQyZDMwMzcyNzMwMzA+DQovVGl0bGUgPD4N\r\nCi9BdXRob3IgPD4NCi9Qcm9kdWNlciA8NTI2NTcwNmY3Mjc0NDI3NTY5NmM2NDY1NzI+DQovS2V5\r\nd29yZHMgPD4NCi9TdWJqZWN0IDw+ID4+DQplbmRvYmoNCjIgMCBvYmoNClsvUERGIC9UZXh0IC9J\r\nbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXQ0KZW5kb2JqDQozIDAgb2JqDQo8PCAvVHlwZSAvRXh0R1N0\r

....

....

....

....

}

 

Nota: El PDF esta en base64, deberá convertirlo de Base64 a Bytes para poder ver la representación en PDF

 

El parámetro FolioVenta es el campo NUPEDIDO del arreglo devuelto por la función ListaVentasAdmin

 

 

 

[HttpGet] function PDF_FacturaXFolioPedido(FolioPedido:Integer):TJSONObject;

Se recupera el PDF de una Factura a través del Folio de Pedido que se obtuvo al dar de alta un Pedido En Linea

 

URI: http://localhost:8888/service/DisPROAPI/PDF_FacturaXFolioPedido/?FolioPedido=666

 

 

Response:

{

   "RESULT": 2,

   "MSG": "PDF extraido exitosamente",

   "PDF_BASE64": "JVBERi0xLjcNCiWAgYKDDQoxIDAgb2JqDQo8PCAvQ3JlYXRvciA8Pg0KL0NyZWF0aW9uRGF0ZSA8\r\nNDQzYTMyMzAzMjM0MzEzMTMxMzQzMTM5MzUzOTM1MzQyZDMwMzcyNzMwMzA+DQovVGl0bGUgPD4N\r\nCi9BdXRob3IgPD4NCi9Qcm9kdWNlciA8NTI2NTcwNmY3Mjc0NDI3NTY5NmM2NDY1NzI+DQovS2V5\r\nd29yZHMgPD4NCi9TdWJqZWN0IDw+ID4+DQplbmRvYmoNCjIgMCBvYmoNClsvUERGIC9UZXh0IC9J\r\nbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXQ0KZW5kb2JqDQozIDAgb2JqDQo8PCAvVHlwZSAvRXh0R1N0\r

....

....

....

....

}

 

Nota: El PDF esta en base64, deberá convertirlo de Base64 a Bytes para poder ver la representación en PDF

 

 

 

 

 

 

 

[HttpGet]function ListaPedidos(Tipo: Integer; Filtro: String): TJSONObject;

Muestra la Lista de Pedidos En Linea actualmente efectuados

 

URI: http://localhost:8888/service/DisPROAPI/ListaPedidos/

 

 

PARAMETROS

 

TIPO=

-1 : Las ultimas 10 pedidos de hoy

0 : Por fecha Actual

1 : Por fecha especifica  (MM/DD/YYYY)

2 : Por Nombre de Cliente

3 : Por Folio de Pedido (NuCarro)

4: Periodo de Fecha desde - hasta (MM/DD/YYYY|MM/DD/YYYY)

 

Request:

 

Muestra todas los Pedidos del dia de hoy

http://localhost:8889/service/DisPROAPI/ListaPedidos?Tipo=0&Filtro=All

 

Muestra todas los Pedidos del dia de 1 Enero 2026, formato

http://localhost:8889/service/DisPROAPI/ListaPedidos?Tipo=1&Filtro=01/30/2026

 

Muestra todas los Pedidos del dia del Cliente DANIEL

http://localhost:8889/service/DisPROAPI/ListaPedidos?Tipo=2&Filtro=DANIEL

 

Muestra el Pedido por Folio 35

http://localhost:8889/service/DisPROAPI/ListaPedidos?Tipo=3&Filtro=35

 

Muestra todas los Pedidos del dia de un perido de Tiempo

http://localhost:8889/service/DisPROAPI/ListaPedidos?Tipo=4&Filtro=01/30/2026|02/28/2026

 

 

NUCARRO Es la llave primaria de la Lista de Pedidos

NUPEDIDO Es el folio generado de la Venta realizada, puede consultar con la funcion ListaVentasAdmin

 

Response:

{

   "PEDIDOS": [

       {

           "NUCARRO": "1418998",

           "FECHA": "19\/03\/2026",

           "HORA": "12:06:31 p. m.",

           "FECHA_PRO": "19\/03\/2026",

           "CLIENTE": "Publico en General",

           "CAPTURISTA": "DANIEL",

           "AGENTE": "",

           "USOCFDI": "G03",

           "FORMAPAGO": "01",

           "METODOPAGO": "PUE",

           "NUTIPO": "1",

           "ESTADO": "En Revision",

           "ESTADOPAGO": "Sin Pago",

           "SUBTOTAL": "6000",

           "IEPS": "0",

           "IVA": "480",

           "TOTAL": "6480"

       },

       {

           "NUCARRO": "1418999",

           "FECHA": "19\/03\/2026",

           "HORA": "12:08:23 p. m.",

           "FECHA_PRO": "19\/03\/2026",

           "CLIENTE": "Publico en General",

           "CAPTURISTA": "DANIEL",

           "AGENTE": "",

           "USOCFDI": "G03",

           "FORMAPAGO": "01",

           "METODOPAGO": "PUE",

           "NUTIPO": "1",

           "ESTADO": "En Proceso",

           "ESTADOPAGO": "Sin Pago",

           "SUBTOTAL": "109.07",

           "IEPS": "0",

           "IVA": "8.73",

           "TOTAL": "117.8"

       },

       {

           "NUCARRO": "1419000",

           "FECHA": "19\/03\/2026",

           "HORA": "01:33:57 p. m.",

           "FECHA_PRO": "19\/03\/2026",

           "CLIENTE": "Publico en General",

           "CAPTURISTA": "DANIEL",

           "AGENTE": "",

           "USOCFDI": "G03",

           "FORMAPAGO": "01",

           "METODOPAGO": "PUE",

           "NUTIPO": "1",

           "ESTADO": "Facturado",

           "ESTADOPAGO": "Sin Pago",

           "SUBTOTAL": "72.8",

           "IEPS": "0",

           "IVA": "0",

           "TOTAL": "72.8"

       }

   ]

}

 

 

 

 

 

 


PROVEEDORES

 

[HttpGet] Function ListaProveedor(Tipo:Integer; Filtro: String):TJSONObject;

Devuelve el catálogo de artículos que cumplan con el Filtro enviado

 

Parámetros:

Tipo =

1: Buscar por Nombre o Comercial

2: Buscar en RFC

3: Buscar en Correo

4: Buscar en Teléfono

5: Buscar por Clave Principal

6: Buscar por Extra1

7: Buscar por Extra2

8: Buscar por Extra3

 

Filtro = Clave o Palabra a buscar según el Tipo elegido

 

URI: http://localhost:8888/service/DisPROAPI/ListaProveedor/

 

Ejemplos:

http://localhost:8888/service/DisPROAPI/ListaProveedor/?Tipo=1&Filtro=DANIEL

http://localhost:8888/service/DisPROAPI/ListaProveedor/?Tipo=5&Filtro=124

 

 

Response:

{

   "CATALOGO": [

       {

           "NUPROVEEDOR": 6659195,

           "NOMBRE": "Marquez Oscar Daniel",

           "COMERCIAL": "",

           "RFC": "MARO-660714-XXX",

           "CALLE": "VALLE DE LAS PALMAS ",

           "NUMERO": "KM 30",

           "COLONIA": "VALLE DE LAS PALMAS",

           "CIUDAD": "Tecate",

           "ESTADO": "Baja California",

           "PAIS": "Mexico",

           "CP": "22510",

           "EMAIL": "danerika@gmail.com",

           "EMAIL2": "wend@hotmail.com",

           "EMAIL3": "",

           "TELEFONO": "6651210000",

           "MSG_LIVE": "",

           "SALDO": "2518462.83",

           "LIMITE": "",

           "NUTIPOPAGO": "",

           "EXTRA1": "",

           "EXTRA2": "",

           "EXTRA3": ""

       }

}

 

 

 

 

 


COMPRAS

 

 

 

[HttpPost] function Alta_Entrada([FromBody] ENTRADAJSON: TJSONObject):TJSONObject;

Función para dar de Alta una Entrada de diferentes tipos

 

URI: http://localhost:8888/service/DisPROAPI/Alta_Entrada/

 

NUCOMPRA

Deje en CERO para que el sistema genere una nueva Entrada, de lo contrario significa que se agregaran los productos que se envie al Entrada que debe estar En Espera.

 

NUPROVEEDOR

El folio del proveedor al cual se asignará la Entrada, obtenga de la lista de proveedores el Folio

 

NUALMACEN

El folio de Almacén en donde se estableceré la Entrada.

 

NUTIPOENTRADA

1=Compra Nacional

2=Importación

3=Entrada Almacén

5=Orden de Compra

6=Entrada Importación

7=OC Importación

8=Cotización

 

NUMONEDA

1=PESOS

2=DOLARES

 

UNIDAD

Dentro del desglose de productos se define la Unidad de Medida que puede ser 1-8, que indica:

1=La Unidad Principal del producto en su expediente

2=La Unidad Segunda del producto en su expediente

3=La Unidad Tercera del producto en su expediente

etc...

 

Request:

{

   "ENTRADAJSON": {

       "NUCOMPRA": 0,

       "NUALMACEN": 0,

       "NUMONEDA": 1,

       "NUPROVEEDOR": -10,

       "NUTIPOENTRADA": 5,

       "NOTAENTRADA": "ESTA ES UNA ORDEN DE COMPRA NECESARIA",

       "PRODUCTO": [

           {

               "CLAVE": "00022589",

               "CANTIDAD": 200,

               "COSTO": 45.89,

               "UNIDAD": 1,

               "NOTACONCEPTO": "DEBE ESTAR EMPAQUETADO"

           },

           {

               "CLAVE": "00130103",

               "CANTIDAD": 100,

               "COSTO": 33.8,

               "UNIDAD": 1,

               "NOTACONCEPTO": ""

           }

       ]

   }

}

 

Response:

{

   "RESULT": 2,

   "MSG": "Alta Exitosamente de Entrada",

   "FOLIOENTRADA": 137947

}

 

 

 

 

 

 

[HttpPost] Function Alta_Conversion([FromBody] CONVERSIONJSON: TJSONObject):TJSONObject;

Realiza la conversión de un Producto (Padre) en un Producto (hijo), esta conversión es de  1 a 10. Es decir tanto el Padre como el Hijo debe ser solo de 1 a 10 registros.

 

URI: http://localhost:8888/service/DisPROAPI/Alta_Conversion/

 

Request:

{

  "CONVERSIONJSON": {

       "NUALMACEN": 0,

       "DESCRIPCION": "SE REQUIERE GENERAR UN FILETEADO DEL PRODUCTO",

       "PADRE" : [

         {

         "CLAVE":"00531071",

         "CANT" : 2

         },

         {

         "CLAVE":"00077103",

         "CANT" : 2

         }

       ],

       "HIJO": [

         {

         "CLAVE":"00508540",

         "CANT" : 1.8

         },

         {

         "CLAVE":"00028021",

         "CANT" : 1.7

         }

       ]

  }

}

 

Response:

{

   "RESULT": 2,

   "MSG": "Se ha generado la conversion con exito",

   "NUCONVERSION": 11,

   "NUCOMPRA": 137949,

   "NUPEDIDO": 2050808

}

 

 

 

 

 

 

 

 


ALMACEN DIGITAL

 

 

 

[HttpPost] function AsociarXML ([FromBody] XMLJSON: TJSONObject):TJSONObject;

Función asociar un CFDI que ya esta previamente almacenado en el almacén digital al ERP, en las operaciones que son factibles a ser asociadas son:

Compras Nacionales

Facturas de Servicios

Notas de Crédito de proveedores

Pagos a Proveedor (REP)

 

URI: http://localhost:8888/service/DisPROAPI/AsociarXML/

 

USER

Nombre de Usuario de Proveedor, las mismas credenciales de Proveedor En Linea

 

PASS

Contraseña del Proveedor, las mismas credenciales de Proveedor En Linea

 

UUID

Folio Fiscal a ser asociado, que ya se encuentra almacenado en el Almacén Digital.

 

 

Request:

{

 "XMLJSON": {

   "USER": "MARTINEZ",

   "PASS": "2025",

   "UUID": "CB342444-E5B3-46F7-A875-3934672FBB31"

 }

}

 

 

Response:

{

   "RESULT": 1,

   "MSG": "Se asocio un REP con 3 documentos pagados"

}

 

 

 

 

 

[HttpPost] function SubirXML ([FromBody] XMLJSON: TJSONObject):TJSONObject;

Función cargar un CFDI de Tipo Ingreso, Egreso o Pago proveniente de un proveedor, donde se podrá auto asociar

 

URI: http://localhost:8888/service/DisPROAPI/SubirXML/

 

ASOCIAR

0: No asociar, solo almacenar

1: Después de Almacenarlo, buscar una asociación

 

USER

Nombre de Usuario de Proveedor, las mismas credenciales de Proveedor En Linea

 

PASS

Contraseña del Proveedor, las mismas credenciales de Proveedor En Linea

 

CFDI

Aquí se debe colocar el XML con formato Escape.

 

 

Request:

{

   "XMLJSON": {

 "USER": "PROVEEDORA",

 "PASS": "48129297",

 "ASOCIAR": 1,

       "CFDI": "<?xml version=\"1.0\" encoding=\"utf-8\"?><cfdi:Comprobante xmlns:cfdi=\"http://www.sat.gob.mx/cfd/4\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd\"></cfdi:Comprobante>"

   }

}

 

Response:

 

Ejemplo de un CFDI Ingreso

{

   "RESULT": 1,

   "MSG": "Cargado con Exito"

}

 

Ejemplo de un CFDI Pago

{

   "RESULT": 1,

   "MSG": "Cargado con Exito, y se Asocio con Exito (Se asocio un REP con 3 documentos pagados)"

}

 

 

 

 

 

[HttpPost] function SubirXML_EnZip ([FromBody] ZIPJSON: TJSONObject):TJSONObject;

Función cargar un CFDI de Tipo Ingreso, Egreso o Pago proveniente de un proveedor, cuando es usada esta función solamente se podrá subir al almacén digital pero no se asociará a ninguna operación.

 

URI: http://localhost:8888/service/DisPROAPI/SubirXML_EnZip/

 

 

USER

Nombre de Usuario de Proveedor, las mismas credenciales de Proveedor En Linea

 

PASS

Contraseña del Proveedor, las mismas credenciales de Proveedor En Linea

 

BASE64

Aquí se debe colocar el archivo ZIP en Base64.

 

 

Request:

{

   "XMLJSON": {

 "USER": "PROVEEDORA",

 "PASS": "48129297",

 "BASE64": "JVBERi0xLjcNCiWAgYKDDQoxIDAgb2JqDQo8PCAvQ3JlYXRvciA8Pg0KL0NyZWF0aW9uRGF0ZSA8\r\nNDQzYTMyMzAzMjM0MzEzMTMxMzQzMTM5MzUzOTM1MzQyZDMwMzcyNzMwMzA+DQovVGl0bGUgPD4N\r\nCi9BdXRob3IgPD4NCi9Qcm9kdWNlciA8NTI2NTcwNmY3Mjc0NDI3NTY5NmM2NDY1NzI+DQovS2V5\r\nd29yZHMgPD4NCi9TdWJqZWN0IDw+ID4+DQplbmRvYmoNCjIgMCBvYmoNClsvUERGIC9UZXh0IC9J\r\nbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXQ0KZW5kb2JqDQozIDAgb2JqDQo8PCAvVHlwZSAvRXh0R1N0\r",

   }

}

 

Response:

Ejemplo de un CFDI Ingreso

{

   "RESULT": 1,

   "MSG": "Cargado con Exito"

}

 

 

 

 

CFDI Funciones

 

 

 

[HttpGet] Function CFDI_Estatus(UUID:String):TJSONObject;

Función para determinar cual es el Estado de un CFDI de Ingresos tanto en DisPRO como en el SAT.

 

Es importante recalcar que Puede estar Cancelado en el SAT pero Activo en DisPRO o viceversa, por eso es importante revisar que en ambos lugares se encuentre activo.

 

UUID: Es el folio fiscal del CFDI

 

URI: http://localhost:8889/service/DisPROAPI/CFDI_Estatus/

 

 

Request:

http://localhost:8889/service/DisPROAPI/CFDI_Estatus/?UUID=EB834D4E-63C7-49B5-A4F2-0F42371B72ED

 

Response:

 

Ejemplo de un CFDI encontrado satisfactoriamente y ademas en DisPRO esta activo también:

{

   "EB834D4E-63C7-49B5-A4F2-0F42371B72ED": [

       {

           "DISPRO_ESTATUS": "Activo",

           "FECHA": "06\/03\/2024",

           "FOLIOVENTA": "1365542",

           "ESTATUS": "Valido",

           "SAT_ESTADO": "Vigente",

           "SAT_ESTATUS": "S - Comprobante obtenido satisfactoriamente.",

           "SAT_ESCANCELABLE": "Cancelable con aceptación",

           "SAT_ESTATUSCANCELACION": "",

           "SAT_VALIDACIONEFOS": "200",

           "MSG": ""

       }

   ]

}

 

Ejemplo de un CFDI que no existe:

{

   "EB873D4E-D3C7-49B5-A4F2-0F42371B72EDD": [

       {

           "ERROR": "El CFDI No fue encontrado en DisPRO"

       }

   ]

}

 

Ejemplo de CFDI cancelado:

{

   "0CB7D2B5-BAFD-45F9-9679-0193BC8FB40F": [

       {

           "DISPRO_ESTATUS": "Cancelado",

           "FECHA": "25\/03\/2024",

           "FOLIOVENTA": "-10",

           "ESTATUS": "Valido",

           "SAT_ESTADO": "Cancelado",

           "SAT_ESTATUS": "S - Comprobante obtenido satisfactoriamente.",

           "SAT_ESCANCELABLE": "Cancelable sin aceptación",

           "SAT_ESTATUSCANCELACION": "Cancelado sin aceptación",

           "SAT_VALIDACIONEFOS": "200",

           "MSG": ""

       }

   ]

}

 

 

 

[HttpPost] Function CFDI_ListaEstatus([FromBody] LISTA:TJSONObject):TJSONObject;

Función para determinar cual es el Estado de una lista de CFDIs de Ingresos tanto en DisPRO como en el SAT.

 

Es importante recalcar que Puede estar Cancelado en el SAT pero Activo en DisPRO o viceversa, por eso es importante revisar que en ambos lugares se encuentre activo.

 

UUID: Es el folio fiscal del CFDI

 

URI: http://localhost:8889/service/DisPROAPI/CFDI_ListaEstatus/

 

 

Request:

 

Body

{

"LISTA":[

  {

  "UUID":"518D51EE-2C08-4F1C-AE14-4DF10EBD0885"

  },

  {

  "UUID":"0DD54B14-80B3-467F-8A3E-B1964FFE2F15"

  },

  {

  "UUID":"3B8B2DBE-93A8-4F05-92D4-E08832C3A24F"

  }

]

}

 

 

 

Response:

Ejemplo de un CFDI encontrado satisfactoriamente y ademas en DisPRO esta activo también

{

   "RESULT": [

       {

           "DISPRO_ESTATUS": "Activo",

           "FECHA": "13\/03\/2024",

           "FOLIOVENTA": "1366116",

           "ESTATUS": "Valido",

           "SAT_ESTADO": "Vigente",

           "SAT_ESTATUS": "S - Comprobante obtenido satisfactoriamente.",

           "SAT_ESCANCELABLE": "Cancelable sin aceptación",

           "SAT_ESTATUSCANCELACION": "",

           "SAT_VALIDACIONEFOS": "200",

           "MSG": ""

       },

       {

           "DISPRO_ESTATUS": "Activo",

           "FECHA": "13\/03\/2024",

           "FOLIOVENTA": "1366132",

           "ESTATUS": "Valido",

           "SAT_ESTADO": "Vigente",

           "SAT_ESTATUS": "S - Comprobante obtenido satisfactoriamente.",

           "SAT_ESCANCELABLE": "Cancelable sin aceptación",

           "SAT_ESTATUSCANCELACION": "",

           "SAT_VALIDACIONEFOS": "200",

           "MSG": ""

       },

       {

           "DISPRO_ESTATUS": "Activo",

           "FECHA": "13\/03\/2024",

           "FOLIOVENTA": "1366182",

           "ESTATUS": "Valido",

           "SAT_ESTADO": "Vigente",

           "SAT_ESTATUS": "S - Comprobante obtenido satisfactoriamente.",

           "SAT_ESCANCELABLE": "Cancelable sin aceptación",

           "SAT_ESTATUSCANCELACION": "",

           "SAT_VALIDACIONEFOS": "200",

           "MSG": ""

       }

   ]

}

 

 

 

 

[HttpGet] Function CFDI_Consulta(Desde, Hasta:String):TJSONObject;

Funcion para obtener la Lista de Facturas en un periodo de Tiempo

 

URI: http://localhost:8889/service/DisPROAPI/CFDI_Consulta

 

Parametros:

Desde: Fecha inicial de consulta debe presentarse en formato mm/dd/yyyy

Hasta: Fecha final de consulta debe presentarse en formato mm/dd/yyyy

 

 

Request:

http://localhost:8889/service/DisPROAPI/CFDI_Consulta?Desde=02/01/2024&Hasta=02/15/2024

 

 

Response:

{

   "FACTURA": [

       {

           "FECHA": "01\/02\/2024",

           "UUID": "8526A371-A831-4563-98EA-57B5EA5E6CA8",

           "SERIE": "AA",

           "FACTURA": "215208",

           "FOLIOVENTA": "1362795",

           "RFC": "FICF-740526-T39",

           "SUTOTAL": "573.75",

           "IVA": "0",

           "TOTAL": "573.75",

           "ESTADO": "Activo"

       },

       {

           "FECHA": "01\/02\/2024",

           "UUID": "3755D0FC-D041-4102-94D9-259C290A4F65",

           "SERIE": "AA",

           "FACTURA": "215209",

           "FOLIOVENTA": "1362796",

           "RFC": "RABR-620622-CX9",

           "SUTOTAL": "404.64",

           "IVA": "0.01",

           "TOTAL": "404.65",

           "ESTADO": "Activo"

       },

       {

           "FECHA": "01\/02\/2024",

           "UUID": "303FF201-AD88-4B6F-AB8D-49018067E73F",

           "SERIE": "AA",

           "FACTURA": "215216",

           "FOLIOVENTA": "1362807",

           "RFC": "AAPL-650818-BZ4",

           "SUTOTAL": "183.98",

           "IVA": "2.52",

           "TOTAL": "186.5",

           "ESTADO": "Cancelado"

       }

   ]

}

 

 

 

 

 

 

 

 

[HttpPost] Function CFDI_SolicitudCancela([FromBody] LISTA:TJSONObject):TJSONObject;

Esta función realiza la Solicitud hacia el SAT para la cancelación del CFDI, pero esto No significa que estará Cancelado, ya que puede tardar hasta 72hrs la respuesta, Debe usar la función CFDI_ListaEstatus para verificar si ya se encuentra Cancelado el CFDI en cuestión.

 

IMPORTANTE:

1.Tiempo de respuesta del receptor

 

Si el CFDI requiere aceptación (tipo 01 o 04):

El receptor tiene hasta 3 días hábiles para aceptar o rechazar.

Puedes reenviar la solicitud aunque ya exista otra pendiente.

 

2.Si el receptor ya respondió

 

Si acepta, ya no puedes enviar más solicitudes (ya estará cancelado).

Si rechaza, puedes reenviar otra solicitud nueva, no hay penalización.

 

3.Los PAC suelen poner límites internos

 

Aunque el SAT no penalice, cada PAC maneja:

Límite de intentos por minuto

Límite de solicitudes idénticas en un mismo CFDI

 

Esto es para evitar saturación o detección como comportamiento sospechoso. Normalmente el límite práctico es:

 

3 a 5 solicitudes por minuto por RFC, dependiendo del PAC.

 

 

UUID: Es el folio fiscal del CFDI a solicitar la cancelación

 

MOTIVO: 01 AL 04

 

POSIBLES MOTIVOS:

01 – Comprobante emitido con errores con relación

 

Este motivo aplica cuando:

El CFDI tiene errores en los datos fiscales, importe, conceptos, método de pago, impuestos, etc.

Sí existe un CFDI correcto que lo sustituye.

 

👉 Obligatorio: Enviar el campo “UUID de sustitución” apuntando al nuevo CFDI.

 

02 – Comprobante emitido con errores sin relación

 

Se usa cuando:

El comprobante tiene errores pero no existe otro CFDI que lo reemplace.

Normalmente porque el CFDI se emitió por equivocación y no debía existir.

 

👉 Aquí NO se envía UUID de sustitución.

 

03 – No se llevó a cabo la operación

 

Se usa cuando:

La venta/acuerdo nunca se realizó.

El cliente ya no quiso el producto o servicio.

No hubo entrega ni pago.

 

👉 NO lleva sustitución.

 

04 – Operación nominativa relacionada en fusión, escisión o reestructuración

 

Aplica en:

Movimientos corporativos entre empresas del mismo grupo:

fusión, escisión, reorganización.

 

👉 Normalmente NO lleva sustitución, salvo casos contables internos.

 

 

SUSTITUCION: Es el Folio Fiscal que será el sustituto

 

Aquí el proceso es:

 

1.Cancelas el CFDI incorrecto con motivo 01

2.Indicas el UUID del CFDI correcto

3.El SAT exige que el comprobante nuevo:

oCorrija lo que estaba mal

oTenga relación tipo "04 – Sustitución de CFDI previos" en el atributo CfdiRelacionados

 

 

URI: http://localhost:8889/service/DisPROAPI/CFDI_SolicitudCancela/

 

 

Request:

 

Body

{

"LISTA":[

  {

  "UUID":"518D51EE-2C08-4F1C-AE14-4DF10EBD0885",

  "MOTIVO":"02",

  "SUSTITUCION":""

  },

  {

  "UUID":"0DD54B14-80B3-467F-8A3E-B1964FFE2F15",

  "MOTIVO":"02",

  "SUSTITUCION":""

  },

  {

  "UUID":"3B8B2DBE-93A8-4F05-92D4-E08832C3A24F",

  "MOTIVO":"02",

  "SUSTITUCION":"612EA388-2215-4187-83C1-F5553E606123"

  }

]

}

 

 

 

Response:

Ejemplo de una solicitud que no tiene Motivo

{

   "RESULT": [

       {

           "UUID": "612EA388-2215-4187-83C1-F5553E606C56",

           "MOTIVO": "",

           "SUSTITUCION": "",

           "ESTADO": "ERROR",

           "MENSAJE": "FALTA EL MOTIVO"

       }

   ]

}

 

Ejemplo de una solicitud procesada exitosamente

{

   "RESULT": [

       {

           "UUID": "C5A56D85-0EF1-4C91-89D6-A7150E85453F",

           "MOTIVO": "02",

           "SUSTITUCION": "",

           "ESTADO": "PROCESADO",

           "MENSAJE": "Cancelado",

           "SAT_ESTATUS": "",

           "SAT_CODIGO": "",

           "SAT_MENSAJE": "",

           "SAT_DESCRIP": ""

       }

   ]

}

 

Ejemplo de una solicitud sobre un CFDI que ya estaba cancelado

{

   "RESULT": [

       {

           "UUID": "612EA388-2215-4187-83C1-F5553E606C56",

           "MOTIVO": "02",

           "SUSTITUCION": "",

           "ESTADO": "PROCESADO",

           "MENSAJE": "El CFDI fue previamente Cancelado",

           "SAT_ESTATUS": "404",

           "SAT_CODIGO": "API122",

           "SAT_MENSAJE": "Cancelacion duplicada",

           "SAT_DESCRIP": "El documento con UUID (612EA388-2215-4187-83C1-F5553E606C56) fue previamente cancelado"

       }

   ]

}

 

 

 

 

 

 

[HttpPost] Function CFDI_DisPROCancela([FromBody] LISTA:TJSONObject):TJSONObject;

Esta funcion es el paso final, una vez que el CFDI fue cancelado en el SAT, se procede a Cancelar el CFDI en el ERP.

 

URI: http://localhost:8889/service/DisPROAPI/CFDI_DisPROCancela/

 

 

Request:

 

Body

{

"LISTA":[

  {

  "UUID":"518D51EE-2C08-4F1C-AE14-4DF10EBD0885",

  "CAUSA":"SE VA A REFACTURAR"

  },

  {

  "UUID":"0DD54B14-80B3-467F-8A3E-B1964FFE2F15",

  "CAUSA":"SE CANCELO LA VENTA, EL CLIENTE NO LO QUISO"

  }

]

}

 

 

 

Response:

Ejemplo de una cancelación exitosa

{

   "RESULT": [

       {

           "UUID": "C5A56D85-0EF1-4C91-89D6-A7150E85453F",

           "FOLIOVENTA": 9193,

           "DISPRO_ESTATUS": "Cancelado",

           "SAT_ESTADO": "Cancelado"

       }

   ]

}

 

Ejemplo cuando se intenta cancelar otra vez

{

   "RESULT": [

       {

           "UUID": "C5A56D85-0EF1-4C91-89D6-A7150E85453F",

           "FOLIOVENTA": -10,

           "ERROR": "El CFDI ya esta Cancelado en DisPRO",

           "SAT_ESTADO": "Cancelado"

       }

   ]

}

 

 

 

 

 

 

 

VENTAS

 

 

 

[HttpGet]function ListaVentasAdmin(Tipo: Integer; Filtro: String): TJSONObject;

Muestra la Lista de Ventas administrativas actualmente efectuadas

 

URI: http://localhost:8888/service/DisPROAPI/ListaVentasAdmin/

 

 

PARAMETROS

 

TIPO=

-1 : Las ultimas 10 ventas de hoy

0 : Por fecha Actual

1 : Por fecha especifica  (MM/DD/YYYY)

2 : Por Nombre de Cliente

3 : Por Folio de Venta (NuPedido)

4: Periodo de Fecha desde - hasta (MM/DD/YYYY|MM/DD/YYYY)

 

Request:

 

Muestra todas las Ventas del dia de hoy

http://localhost:8889/service/DisPROAPI/ListaVentasAdmin?Tipo=0&Filtro=All

 

Muestra todas las Ventas del dia de 1 Enero 2026, formato

http://localhost:8889/service/DisPROAPI/ListaVentasAdmin?Tipo=1&Filtro=01/30/2026

 

Muestra todas las Ventas del dia del Cliente DANIEL

http://localhost:8889/service/DisPROAPI/ListaVentasAdmin?Tipo=2&Filtro=DANIEL

 

Muestra la Venta por Folio 35

http://localhost:8889/service/DisPROAPI/ListaVentasAdmin?Tipo=3&Filtro=35

 

Muestra todas las Ventas del dia de un perido de Tiempo

http://localhost:8889/service/DisPROAPI/ListaVentasAdmin?Tipo=4&Filtro=01/30/2026|02/28/2026

 

 

 

Response:

{

   "VENTAS": [

       {

           "NUPEDIDO": "1418998",

           "FECHA": "19\/03\/2026",

           "HORA": "12:06:31 p. m.",

           "NUTICKET": "",

           "SERIE": "AA",

           "FACTURA": "",

           "TIPO_VENTA": "Ticket",

           "UUID": "",

           "CLIENTE": "Publico en General",

           "CAPTURISTA": "DANIEL",

           "AGENTE": "",

           "SUBTOTAL": "6000",

           "IEPS": "0",

           "IVA": "480",

           "TOTAL": "6480",

           "ESTADO_ALMACEN": "En Espera",

           "ESTADO_FOLIO": "Sin Folio"

       },

       {

           "NUPEDIDO": "1418999",

           "FECHA": "19\/03\/2026",

           "HORA": "12:08:23 p. m.",

           "NUTICKET": "",

           "SERIE": "AA",

           "FACTURA": "",

           "TIPO_VENTA": "Ticket",

           "UUID": "",

           "CLIENTE": "Publico en General",

           "CAPTURISTA": "DANIEL",

           "AGENTE": "",

           "SUBTOTAL": "109.07",

           "IEPS": "0",

           "IVA": "8.73",

           "TOTAL": "117.8",

           "ESTADO_ALMACEN": "En Espera",

           "ESTADO_FOLIO": "Sin Folio"

       },

       {

           "NUPEDIDO": "1419000",

           "FECHA": "19\/03\/2026",

           "HORA": "01:33:57 p. m.",

           "NUTICKET": "23",

           "SERIE": "",

           "FACTURA": "",

           "TIPO_VENTA": "Ticket",

           "UUID": "",

           "CLIENTE": "Publico en General",

           "CAPTURISTA": "DANIEL",

           "AGENTE": "",

           "SUBTOTAL": "72.8",

           "IEPS": "0",

           "IVA": "0",

           "TOTAL": "72.8",

           "ESTADO_ALMACEN": "Entregada",

           "ESTADO_FOLIO": "Foliado  "

       },

       {

           "NUPEDIDO": "1419001",

           "FECHA": "19\/03\/2026",

           "HORA": "01:34:19 p. m.",

           "NUTICKET": "24",

           "SERIE": "",

           "FACTURA": "",

           "TIPO_VENTA": "Ticket",

           "UUID": "",

           "CLIENTE": "Publico en General",

           "CAPTURISTA": "DANIEL",

           "AGENTE": "",

           "SUBTOTAL": "362.15",

           "IEPS": "0",

           "IVA": "5.25",

           "TOTAL": "367.4",

           "ESTADO_ALMACEN": "Entregada",

           "ESTADO_FOLIO": "Foliado  "

       },

       {

           "NUPEDIDO": "1419002",

           "FECHA": "19\/03\/2026",

           "HORA": "01:34:42 p. m.",

           "NUTICKET": "25",

           "SERIE": "",

           "FACTURA": "",

           "TIPO_VENTA": "Ticket",

           "UUID": "",

           "CLIENTE": "Publico en General",

           "CAPTURISTA": "DANIEL",

           "AGENTE": "",

           "SUBTOTAL": "95",

           "IEPS": "0",

           "IVA": "7.6",

           "TOTAL": "102.6",

           "ESTADO_ALMACEN": "Entregada",

           "ESTADO_FOLIO": "Foliado  "

       },

       {

           "NUPEDIDO": "1419003",

           "FECHA": "19\/03\/2026",

           "HORA": "01:35:06 p. m.",

           "NUTICKET": "26",

           "SERIE": "",

           "FACTURA": "",

           "TIPO_VENTA": "Ticket",

           "UUID": "",

           "CLIENTE": "Publico en General",

           "CAPTURISTA": "DANIEL",

           "AGENTE": "",

           "SUBTOTAL": "109.17",

           "IEPS": "0",

           "IVA": "8.73",

           "TOTAL": "117.9",

           "ESTADO_ALMACEN": "Entregada",

           "ESTADO_FOLIO": "Foliado  "

       }

   ]

}