|
<< 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
•Empresa
•Estadistica
•Clientes
•Tarjetas
•Productos
oProducto_ExistenciaActualReal
•Pedidos En Linea
•Proveedores
•Compras
•Almacén Digital
•CFDI Funciones
•Ventas
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
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
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
NUPASO
|
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 "
}
]
}