Guía Del Integrador
Guía Del Integrador
Versión 5.0.0
▪ En esta versión se permiten importar y exportar formatos de venta. Es compatible con
versiones anteriores excepto porque ahora al exportar añadidos de un producto en el
nodo Addin se está indicando el Id del añadido en un atributo SaleFormatId en lugar
de ProductId. A la hora de importar se permite usar tanto SaleFormatId como
ProductId para mantener compatibilidad con versiones antiguas.
Versión 5.0.2
▪ Corregido error al exportar datos en formato JSON. Los valores de tipos enumerados se
enviaban en formato numérico en lugar de en formato texto, tal y como se recogía en la
documentación.
Versión 5.0.4
▪ Corregido error al intentar importar documentos con añadidos cuando el id del producto
añadido no coincidía con el id del formato de venta.
Versión 5.0.7
▪ Se permite importar y exportar mútiples grupos de añadidos para los productos. Se
mantiene la compatibilidad con el formato anterior, aunque pasa a considerarse
obsoleto y en un futuro desaparecerá.
Versión 5.0.8
▪ Corregido error al exportar productos. Se estaba exportando mal el valor de
PreparationOrder (se estaba enviando dos veces el valor del PreparationType).
Versión 5.0.9
▪ Desaparece la propiedad ShowInKitchenDisplays de PreparationType porque ya no
existe en Ágora. A partir de esta versión Ágora detecta automáticamente si se debe
enviar a un tipo de preparación o no a los monitores basándose en la existencia de
monitores que estén configurados para mostrar ese tipo de preparación asociados al
punto de venta que generó la preparación.
Versión 5.1.0
▪ Aparece la propiedad Notes en las líneas de pedidos a proveedor, albaranes de entrada
y facturas de compra.
Los servicios de integración de Ágora le permiten traspasar información entre Ágora y otras
aplicaciones, como por ejemplo un ERP o un programa de contabilidad. Para poder utilizar estos
servicios deberá activar una licencia para el "Módulo de Servicios de Integración" desde la
opción Ayuda -> Activar Licencia de Módulo en el Monitor de Ágora:
▪ Series: series
▪ Customers: clientes
▪ Users: usuarios
▪ PriceLists: tarifas
▪ Families: familias
▪ Products: productos
▪ Menus: menús
▪ Offers: promociones
▪ Warehouses: almacenes
En caso de que se produzca algún error al importar o exportar, Ágora lo reflejará en el log del
servidor.
Ágora no realizará ninguna acción sobre la información existente en Ágora que no aparezca en
el fichero de datos importados. Es decir, si por ejemplo se crea un producto en Ágora y luego el
producto no aparece en el fichero, el producto seguirá existiendo en Ágora.
Este sistema permite mucha flexibilidad, porque es posible realizar importaciones totales o
parciales. Cuando se realiza la puesta en marcha de la aplicación se puede enviar un fichero con
la base de datos completa y, a partir de ese momento, enviar sólo en el fichero aquellos
registros que sea necesario crear, modificar o eliminar. Ante cualquier problema, siempre se
puede volver a enviar la base de datos completa.
Hay ocasiones en que un campo es opcional pero no puede dejarse vacío. O bien aparece en el
XML con un valor válido, en cuyo caso se sobreescribirá el valor actual en Ágora, o bien no
aparece en el XML, en cuyo caso se mantiene el valor actual de Ágora. Esto ocurre, en general,
con campos que no permiten valores "nulos" o vacíos. Por ejemplo, el descuento de un cliente
puede indicarse con un valor numérico válido (incluyendo 0) para actualizarlo en Ágora, o puede
no indicarse para mantener el valor actual, pero no puede indicarse con un valor vacío porque
no es un valor válido para un número.
XML:
JSON:
{
"Users": [],
"Customers": [],
"Series": [],
"PaymentMethods": [],
"Vats": [],
"PreparationTypes": [],
"PreparationOrders": [],
"Families": [],
"PriceLists": [],
"SaleCenters": [],
"Products": [],
"Menus": [],
"SalesOrders": [],
"DeliveryNotes": [],
"Invoices": [],
"Suppliers": []
}
En cada sección del fichero habrá información que sea obligatoria e información opcional. Los
campos opcionales ni siquiera es necesario que aparezcan en el documento XML.
Series
Las series de documentos se indican dentro del elemento <Series> en etiquetas específicas
para cada serie:
<Series>
<BasicInvoice Name="T" LastNumber="0"/>
<StandardInvoice Name="F" LastNumber="99"/>
<BasicRefund Name="TD" LastNumber="0"/>
<StandardRefund Name="FD" LastNumber="0"/>
<DeliveryNote Name="ALB" LastNumber="80"/>
<SalesOrder Name="PED" LastNumber="91"/>
</Series>
JSON:
{
"Series": {
"BasicInvoice": {
"Name": "T",
"LastNumber": 0
},
"StandardInvoice": {
"Name": "F",
"LastNumber": 99
},
"BasicRefund": {
"Name": "TD",
"LastNumber": 0
},
"StandardRefund": {
"Name": "FD",
"LastNumber": 0
},
"DeliveryNote": {
"Name": "ALB",
"LastNumber": 80
},
"SalesOrder": {
"Name": "PED",
"LastNumber": 91
}
}
}
Todas las series son opcionales, si no incluye una serie, no será modificada en Ágora. Las series
que puede indicar son:
▪ SalesOrder: pedidos/reservas.
Name [Obligatorio]
Nombre de la serie.
LastNumber
último documento generado en esa serie. El siguiente documento que se genere en esa
serie tendrá como número LastNumber+1.
Usuarios
Los usuarios se indican dentro del elemento <Users> en sucesivos elementos <User>:
XML:
JSON:
Id [Obligatorio]
Identificador numérico único del usuario.
Name [Obligatorio]
Nombre del usuario.
SmartphonePassword
Contraseña del usuario para acceder a la comandera. Puede dejarse vacía para
permitir el acceso de este usuario sin contraseña.
WebAdminPassword
Contraseña del usuario para acceder a la administración. Puede dejarse vacía para
permitir el acceso de este usuario sin contraseña.
ButtonText
Texto mostrado en el botón asociado al usuario en el punto de venta.
Color
Color del botón asociado al usuario en el punto de venta. El formato es #RRGGBB,
como los ejemplos mostrados en el anexo I.
CardNumber
Código de la tarjeta de acceso asociada al usuario.
IsTrainee
Indica si es un usuario en formación. Por defecto no lo es.
Profile
Perfil del usuario. Los posibles valores son:
ShowInClockings
Indica si el usuario se muestra en la pantalla de fichajes o no.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
SocialSecurityNumber
Número de la Seguridad Social del usuario.
Nif
NIF del usuario.
Telephone
Número de teléfono del usuario.
Street
Dirección del usuario.
City
Población del usuario.
Region
Provincia del usuario.
ZipCode
Código postal del usuario.
CompanyName
Nombre de empresa que se va a usar en los informes de fichajes.
CompanyCif
CIF de empresa que se va a usar en los informes de fichajes.
CompanyCCC
Código de cuenta contable de la empresa que se va a usar en los informes de fichajes.
CompanyCCC
Código de cuenta contable de la empresa que se va a usar en los informes de fichajes.
AutoClockOutMaxHours
Max. horas jornada: Si está presente activa el fichaje salida automático e indica el
máximo número de horas permitidas desde la última entrada.
Clientes
Los clientes se indican dentro del elemento <Customers> en sucesivos elementos <Customer>:
XML:
JSON:
Id [Obligatorio]
Identificador numérico único del cliente.
FiscalName [Obligatorio]
Nombre fiscal del cliente.
Cif
CIF/NIF del cliente. Puede dejar este campo vacío si desea crear un cliente sin CIF o
quitar el CIF de un cliente, pero recuerde que no podrá emitir facturas a clientes sin
CIF.
Street
Dirección del cliente.
City
Población del cliente.
Region
Provincia del cliente.
ZipCode
Código postal del cliente.
DiscountRate
Tanto por uno de descuento del cliente, por ejemplo, si le desea aplicar un 10% de
descuento, este valor debería ser 0.1.
ApplySurcharge
Indica si al cliente se le aplica recargo de equivalencia o no.
CardNumber
Código de la tarjeta de acceso asociada al cliente.
PriceListId
Identificador de la tarifa asociada al cliente (si la tiene).
Telephone
Teléfono del cliente.
Email
Correo electrónico del cliente.
ContactPerson
Persona de contacto.
Notes
Notas asociadas al cliente.
ShowNotes
Indica si se muestran las notas del cliente cuando se le asigna a un documento de
venta.
SendMailing
Indica si el cliente recibe o no publicidad desde el módulo de e-mailing.
AccountCode
Código de la cuenta contable asignada al cliente.
Offers
Promociones que se aplican al ticket de asociado a un cliente. Las promociones deben
tener como "ApplicationMode" el valor "SelectedCustomerOrTickets". Cada promoción
debe indicarse en un elemento Offer con un atributo Id que contenga el Id de la
promoción asignada.
Los clientes creados en Ágora tendrán IDs inferiores a 500000 o superiores a 1000000000, por
lo que podrá configurar el otro sistema para que genere clientes en ese rango de IDs para evitar
colisiones.
Formas de Pago
Las formas de pago se indican dentro del elemento <PaymentMethods> en sucesivos elementos
<PaymentMethod>:
XML:
<PaymentMethods>
<PaymentMethod Id="2" Name="Tarjeta"
GiveChange="false" IncludeInBalance="false"
OpenCashDrawer="false"
AllowOverPaid="false" AllowExtraInformation="false"
IsValidForSale="true" IsValidForPurchase="false"
ExtractTipFromCashdrawer="false" />
<PaymentMethod Id="3" Name="Cheque Restaurante"
GiveChange="false" IncludeInBalance="false"
OpenCashDrawer="false" RegisterTip="false"
AllowOverPaid="true" AllowExtraInformation="false"
ButtonText="Cheque Restaurante" Color="#ffffff"
ExtractTipFromCashdrawer="true"
Priority="1"/>
</PaymentMethods>
JSON:
Id [Obligatorio]
Identificador numérico único de la forma de pago.
Name [Obligatorio]
Nombre de la forma de pago.
GiveChange
Indica si al pagar con esta forma de pago se devolverá cambio, por ejemplo, en el caso
de pago en efectivo se devuelve cambio, pero si paga con un "vale" o con un "cheque
restaurante", puede decidir no devolver cambio.
OpenCashDrawer
Indica si se debe abrir el cajón portamonedas automáticamente cuando se realiza un
cobro con esta forma de pago.
RegisterTip
Indica si el usuario debe introducir la propina que se ha recibido mediante esta forma
de pago. Si se marca esta opción, cuando se cierra un ticket se permite al usuario
indicar el importe de la propina recibida mediante esta forma de pago.
AllowOverPaid
Indica si se puede pagar más del importe total con esta forma de pago. Por ejemplo,
con un cheque restaurante se puede pagar más del importe total del ticket, pero no
tarjeta de crédito no.
IsValidForSale
Indica si la forma de pago es válida para realizar ventas. Si no lo es no aparecerá
como forma de pago para realizar la venta.
IsValidForPurchase
Indica si la forma de pago es válida para realizar compras. Si no lo es no aparecerá
como forma de pago para realizar la compra.
AllowExtraInformation
Indica si se puede asociar a la forma de pago notas. Útil para asociar códigos de barras
de un cheque restaurante, etc.
ButtonText
Texto mostrado en el botón asociado a la forma de pago en el punto de venta.
Color
Color del botón asociado a la forma de pago en el punto de venta. El formato es
#RRGGBB, como los ejemplos mostrados en el anexo I.
Priority
Indica el orden que tomarán las formas de pago en la pantalla de cobros.
ExtractTipFromCashdrawer
Indica si, al aceptar pagos mediante esta forma de pago, las propinas se descuenten
del saldo del cajón.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
XML:
<Vats>
<Vat Id="1" Name="Exento" VatRate="0.00"
SurchargeRate="0.000"/>
<Vat Id="2" Name="Super reducido" VatRate="0.04"
SurchargeRate="0.005"/>
<Vat Id="3" Name="Reducido" VatRate="0.10"
SurchargeRate="0.014"/>
<Vat Id="4" Name="General" VatRate="0.21"
SurchargeRate="0.052"/>
<Vat Id="5" Name="Especial" VatRate="0.33"
SurchargeRate="0.15" Enabled="false"/>
</Vats>
JSON:
Ágora soporta hasta 10 tipos de impuestos que pueden ser indicados a través del fichero de
importación de datos. Cada tipo de impuesto debe tener un Id asociado entre 1 y 10 (inclusive).
Para cada tipo de impuesto podrá indicar los siguientes atributos:
Id [Obligatorio]
Identificador numérico único del tipo de impuesto. Deberá ser un valor entre 1 y 10.
Name [Obligatorio]
Nombre del tipo de impuesto.
VatRate [Obligatorio]
Tanto por uno de impuesto. Por ejemplo, si el impuesto es del 21%, este valor será
0.21.
Enabled [Obligatorio]
Permite indicar si el impuesto está habilitado (true) o no (false).
Proveedores
Los proveedores se indican dentro del elemento <Suppliers> en sucesivos elementos
<Supplier>:
XML:
<Suppliers>
<Supplier Id="1" FiscalName="Casbega S.A." BusinessName="Casbega"
Cif="A23429423" Street="Avd. Real de Pinto" City="Madrid"
Region="Madrid" ZipCode="28021" AccountCode="" ApplySurcharge="false"
Email="[email protected]" Telephone="912341212" Web="www.casbega.com"
ContactPerson="Isabel Pita" ShowSupplierProductsInPurchaseDocumentOnly="false"
WarnIfPurchaseDocumentAlreadyExists="false" />
</Suppliers>
JSON:
{
"Suppliers": [
{
"Id": 1,
"FiscalName": "Casbega S.A.",
"BusinessName": "Casbega",
"Cif": "A23429423",
"Street": "Avd. Real de Pinto",
"City": "Madrid",
"Region": "Madrid",
"ZipCode": "28021",
"AccountCode": "",
"ApplySurcharge": false,
"Email": "[email protected]",
"Telephone": "912341212",
"Web": "www.casbega.com",
"ContactPerson": "Isabel Pita",
"ShowSupplierProductsInPurchaseDocumentOnly" : false,
"WarnIfPurchaseDocumentAlreadyExists": false
}
]
}
FiscalName [Obligatorio]
Nombre fiscal del proveedor.
BusinessName
Nombre comercial del proveedor.
Cif [Obligatorio]
CIF/NIF del proveedor.
Street
Dirección del proveedor.
City
Población del proveedor.
Region
Provincia del proveedor.
ZipCode
Código postal del proveedor.
ApplySurcharge
Indica si al proveedor compramos con recargo de equivalencia o no.
Telephone
Teléfono del cliente.
Email
Correo electrónico del cliente.
Web
Paígina web del proveedor.
ContactPerson
Persona de contacto.
AccountCode
Código de la cuenta contable asignada al proveedor.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
ShowSupplierProductsInPurchaseDocumentOnly
Indica si, al crear documentos de compra para este proveedor, solo se muestra
productos asociados al mismo.
WarnIfPurchaseDocumentAlreadyExists
Indica si, al crear documentos de compra para este proveedor con un número de
documento ya existente, Ágora debe mostrar un aviso de advertencia.
XML:
<Warehouses>
<Warehouse Id="100" Name="General"
Street="Avd. Marcos Retuerto, S/N" City="Getafe"
Region="Madrid" ZipCode="28054"
PurchaseOrderSerie="PC"
IncomingDeliveryNoteSerie="AC"
PurchaseInvoiceSerie="FC">
<FiscalInfo Cif="" FiscalName=""
UseInDocuments="false"/>
UpdateCostPricePolicy="PurchasePrice"
</Warehouse>
<Warehouse Id="101" Name="Entradas"/>
</Warehouses>
JSON:
{
"Warehouses": [
{
"Id": 100,
"Name": "General",
"Street": "Avd. Marcos Retuerto, S/N",
"City": "Getafe",
"Region": "Madrid",
"ZipCode": "28054",
"PurchaseOrderSerie": "PC",
"IncomingDeliveryNoteSerie": "AC",
"PurchaseInvoiceSerie": "FC",
"FiscalInfo": {
"UseInDocuments": false,
"FiscalName": "",
"Cif": ""
},
"UpdateCostPricePolicy": "PurchasePrice"
}
]
}
Name [Obligatorio]
Nombre del almacén.
Street
Dirección del almacén.
City
Población del almacén.
Region
Provincia del almacén.
ZipCode
Código postal del almacén.
PurchaseOrderSerie
Serie para los pedidos a proveedor. Si no se especifica se usara la serie por defecto.
IncomingDeliveryNoteSerie
Serie para los albaranes de entrada. Si no se especifica se usara la serie por defecto.
PurchaseInvoiceSerie
Serie para las facturas de proveedor. Si no se especifica se usara la serie por defecto.
FiscalInfo
Información fiscal que se usa para la generación de documentos en pdf de los
documentos de compra, incluyendo:
FiscalName
Nombre Fiscal.
Cif
Cif.
UseInDocuments
Sí se usa en los documentos de compra o no. Si no se usa se usarán los datos de
empresa.
Delivered
El pedido ha sido servido totalmente desde algún albarán.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
UpdateCostPricePolicy
Política de actualización de los precios de coste del Almacén a la hora de crear un
Albarán de Entrada asociado al mismo.
XML:
<PreparationTypes>
<PreparationType Id="1" Name="Barra"/>
<PreparationType Id="2" Name="Plancha"/>
<PreparationType Id="3" Name="Freidora"/>
</PreparationTypes>
JSON:
{
"PreparationTypes": [
{
"Id": 1,
"Name": "Barra"
},
{
"Id": 2,
"Name": "Plancha"
},
{
"Id": 3,
"Name": "Freidora"
}
]
}
Id [Obligatorio]
Identificador numérico único del tipo de preparación.
Name [Obligatorio]
Nombre del tipo de preparación.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
XML:
<PreparationOrders>
<PreparationType Id="1" Name="Bebidas" Priority="0"
CanBeRequested="false"/>
<PreparationType Id="2" Name="Primeros" Priority="1"
CanBeRequested="false"/>
<PreparationType Id="3" Name="Segundos" Priority="2"
CanBeRequested="true"/>
</PreparationOrders>
JSON:
{
"PreparationOrders": [
{
"Id": 1,
"Name": "Bebidas",
"Priority": 0,
"CanBeRequested": false
},
{
"Id": 2,
"Name": "Primeros",
"Priority": 1,
"CanBeRequested": false
},
{
"Id": 3,
"Name": "Segundos",
"Priority": 2,
"CanBeRequested": true
}
]
}
Id [Obligatorio]
Identificador numérico único del orden de preparación.
Name [Obligatorio]
Nombre del orden de preparación.
CanBeRequested [Obligatorio]
Indica si es posible marchar este órden de preparación (true) o no (false).
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
Familias
Las familias se indican dentro del elemento <Families> en sucesivos elementos <Family>:
XML:
<Families>
<Family Id="100" Name="Refrescos" Color="#00FF00" Order="2"/>
<Family Id="101" Name="Bocadillos" Color="#FF0000"
ButtonText="BOCATAS" Order="1"/>
<Family Id="102" Name="Helados"
DeletionDate="2012-11-30T15:00:50"/>
<Family Id="103" Name="Sin Gas" Color="#00FF00"
ParentFamilyId="100" ShowInPos="false"/>
<Family Id="104" Name="Menús" Color="#00FF00"/>
</Families>
JSON:
Id [Obligatorio]
Identificador numérico único de la familia.
Name [Obligatorio]
Nombre de la familia.
ButtonText
Texto mostrado en el botón asociado a la familia en el punto de venta.
Color
Color del botón asociado a la familia en el punto de venta. El formato es #RRGGBB,
como los ejemplos mostrados en el anexo I.
ShowInPos
Permite indicar si la familia se visualiza o no en el punto de venta.
Order
Posición de la familia en el punto de venta. A la hora de mostrar las familias, se
ordenarán por el valor introducido en este campo. Las familias para las que no se haya
indicado el orden aparecerán al final de la lista de familias.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
Tarifas
Las tarifas de venta se indican dentro del elemento <PriceLists> en sucesivos elementos
<PriceList>:
XML:
<PriceLists>
<PriceList Id="20" Name="Hora Feliz" VatIncluded="true"/>
<PriceList Id="21" Name="Clientes VIP" VatIncluded="true"/>
</PriceLists>
JSON:
{
"PriceLists": [
{
"Id": 20,
"Name": "Hora Feliz",
"VatIncluded": true
},
{
"Id": 21,
"Name": "Clientes VIP",
"VatIncluded": true
}
]
}
Name [Obligatorio]
Nombre de la tarifa.
VatIncluded [Obligatorio]
Indica si los precios en esta tarifa son con impuestos incluidos (true) o no (false).
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
Centros de Venta
Los centros de venta se indican dentro del elemento <SaleCenters> en sucesivos elementos
<SaleCenter>:
XML:
<SaleCenters>
<SaleCenter Id="10" Name="Salón" PriceListId='1' CurrentPriceListId='1'
ButtonText="SALÓN" Color="#341122" VatIncluded="true"
AskForGuests="true" GuestProductId="2" WhenAskForGuests="OnCloseDocument
<SaleLocations>
<SaleLocation Name="S1"/>
<SaleLocation Name="S2"/>
<SaleLocation Name="S3"/>
<SaleLocation Name="S4"/>
<SaleLocation Name="S5"/>
</SaleLocations>
</SaleCenter>
<SaleCenter Id="11" Name="Terraza" PriceListId='2'
Color="#00FF00" VatIncluded="false"
DeletionDate="2012-12-24T15:00:00">
<SaleLocations>
<SaleLocation Name="T1"/>
<SaleLocation Name="T2"/>
<SaleLocation Name="T3"/>
<SaleLocation Name="T4"/>
</SaleLocations>
</SaleCenter>
</SaleCenters>
JSON:
Id [Obligatorio]
Identificador numérico único del centro de venta.
Name [Obligatorio]
Nombre del centro de venta.
CurrentPriceListId
Identificador de la tarifa actual del centro de venta. Esta tarifa debe existir
previamente.
VatIncluded [Obligatorio]
Indica si los precios en esta tarifa son con impuestos incluidos (true) o no (false).
ButtonText
Texto mostrado en el botón asociado al centro de venta en el punto de venta.
Color
Color del botón asociado al centro de venta en el punto de venta. El formato es
#RRGGBB, como los ejemplos mostrados en el anexo I.
AskForGuests [Obsoleto]
Indica si al seleccionar una ubicación del centro de venta debe solicitarse (true) o no
(false) la introducción del número de comensales. Obsoleto, ver WhenAskForGuests
GuestProductId
Id del producto que se venderá automáticamente por cada comensal introducido al
seleccionar una ubicación del centro de venta. Si no desea que se realice la venta
automática de ningún producto, deberá incluir este atributo vacío. El producto deberá
existir en la base de datos. Tenga en cuenta que, durante el proceso de importación,
se realiza primero la importación de centros de venta y luego la de productos, por lo
que no es posible asignar como producto de servicio un producto que esté siendo
creado en la misma importación.
WhenAskForGuests
Indica cuando se debe solicitar la introducción del número de comensales. Los posibles
valores son (Never) Nunca, (OnOpenDocument) Al abrir documento y
(OnCloseDocument) Al cerrar documento
SaleLocations [Obligatorio]
Lista de ubicaciones/mesas existentes en el centro de venta, cada una de ellas debe
indicarse en un elemento SaleLocation con un único atributo Name que contenga el
nombre único de la ubicación dentro del centro de venta. En cada centro de venta debe
existir al menos ubicación.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
Productos
Los productos se indican dentro del elemento <Products> en sucesivos elementos <Product>:
JSON:
Id [Obligatorio]
Identificador numérico único del producto. Este ID se utilizará también para crear el
formato base del producto.
Name [Obligatorio]
Nombre del producto.
VatId [Obligatorio]
Id del impuesto de venta asociado al producto.
BaseSaleFormatId
Id de formato de venta base del producto. Si no se indica, se asumirá que el Id del
formato base coincide con el Id del producto y que no se van a utilizar formatos de
venta en Ágora.
FamilyId
Id de la familia a la que pertenece el producto. Si el producto no pertenece a ninguna
familia, deberá incluirse este atributo vacío.
ButtonText
Texto mostrado en el botón asociado al producto en el punto de venta.
PLU
Código PLU del menú. Debe ser una cadena numérica. Ejemplos: 0001, 33232, etc.
Barcodes
Lista de códigos de barras del producto. Cada uno de ellos debe indicarse en un
elemento Barcode con un único atributo Value que contenga el código de barras. En el
caso de esté asociado a una talla y color llevará ademñas los atributos ColorId y
SizeId.
StorageOptions
Opciones de almacenamiento del producto en cada almacén. Cada una debe indicarse
dentro de un elemento StorageOption con los siguientes atributos:
WarehouseId [Obligatorio]
Id del almacén.
Location [Obligatorio]
Ubicación del producto dentro del almacén. Si no desea asignar ninguna
ubicación, puede dejar el atributo vacío. Nota para productos con tallas y
colores: la ubicación dentro del almacén es única para todas las tallas y
colores de un mismo producto, por lo que debería replicar el mismo valor en
todos los registros de tallas y colores asociados a un mismo almacén y
producto.
MinStock [Obligatorio]
Stock mínimo del producto en unidades de venta.
MaxStock [Obligatorio]
Stock máximo del producto en unidades de venta.
Order
Posición del producto dentro de su familia en el punto de venta. A la hora de mostrar
los productos de una determinada familia, se ordenarán por el valor introducido en
este campo. Los productos para los que no se haya indicado el orden, aparecerán al
final de la lista de los productos.
UseAsDirectSale
Indica si el producto debe tratarse como un producto de venta directa (true) o no
(false). Si es así, el producto se mostrará junto a los grupos de productos en la
pantalla de venta, y la posición indicada en el atributo Order será relativa a la posición
de las familias y otros productos de venta directa, no a la posición de los productos de
esta familia.
SaleableAsMain
Indica si el producto puede venderse como producto principal (true) o no (false).
AskForAddins
Indica si al vender el producto deben solicitarse automáticamente añadidos (true) o
no (false).
AskForPreparationNotes
Indica si al vender el producto deben solicitarse automáticamente notas de preparación
(true) o no (false).
PrintWhenPriceIsZero
Indica si al imprimir un ticket en el cual este producto tiene precio cero, debe
mostrarse el producto (true) o no (false).
PreparationTypeId
Id del tipo de preparación asociado al producto. Si el producto no tiene tipo de
preparación, deberá incluirse el atributo vacío. Si un producto tiene tipo de
preparación, deberá establecer también su orden de preparación.
PreparationOrderId
Id del order de preparación asociado al producto. Si el producto no tiene order de
preparación, deberá incluirse el atributo vacío. Si un producto tiene orden de
preparación, deberá establecer también su tipo de preparación.
IsSoldByWeight
Indica si el producto es vendible al peso (true) o no (false).
Prices
Precios del producto en cada centro de venta y tarifa especial. Cada precio debe
indicarse en un elemento Price con los siguientes atributos:
PriceListId [Obligatorio]
Id de la tarifa cuyos precios se quieren establecer.
MainPrice [Obligatorio]
Precio de venta como producto principal. El precio será con impuestos
incluidos o no dependiendo de la configuración de la tarifa. Si deja el atributo
vacío, Ágora solicitará el precio en el momento de la venta.
AddinPrice [Obligatorio]
Precio de venta como añadido de otro producto. El precio será con impuestos
incluidos o no dependiendo de la configuración de la tarifa. Si deja el atributo
vacío, Ágora solicitará el precio en el momento de la venta.
MenuItemPrice [Obligatorio]
Suplemento al incluir el producto en un menú. El precio será con impuestos
incluidos o no dependiendo de la configuración de la tarifa. Si deja el atributo
vacío, Ágora solicitará el precio en el momento de la venta.
AddinRoles
Grupos de añadidos disponibles para el producto. Prevalece sobre el node Addins. Cada
grupo debe indicarse en un elemento AddinRole con los siguientes atributos:
Name [Obligatorio]
Nombre del grupo de añadidos.
ButtonText
Texto del botón del grupo de añadidos.
Color
Color del botón del grupo de añadidos.
MinAddins
Número mínimo de añadidos que se deberán seleccionar al vender el producto
con un añadido de este grupo.
MaxAddins
Número máximo de añadidos que se podrán seleccionar al vender el producto
con un añadido de este grupo.
UsePreparationType
Tipo de preparación para los añadidos del grupo. Puede tener dos valores
"FromMain" para usar el tipo de preparción del producto del que es añadido o
"FromAddin" para usar el del añadido.
AdditionalSaleFormats
Formatos de venta adicionales del producto. Los formatos que aparezca en este
elemento serán creados o actualizado en la base de datos conforme sea necesario.
Para eliminar un formato, será necesario indicarlo en este nodo con su DeletionDate
correspondiente. Cada formato de venta debe indicarse en un elemento SaleFormat
con los siguientes atributos:
Id [Obligatorio]
Identificador único del formato de venta. Este identificador debe ser único en
todos los formatos de venta de Ágora, no sólo los de este producto,
incluyendo los Ids de los formatos base de los productos indicados en el
atributo BaseSaleFormatId de los elementos Product.
Name [Obligatorio]
Nombre del formato de venta.
Ratio [Obligatorio]
Relación de la cantidad consumida por este formato con respecto al formato
base.
ButtonText
Texto mostrado en el botón asociado al formato de venta en el punto de
venta.
SaleableAsMain
Indica si el formato puede venderse como formato principal (true) o no
(false).
SaleableAsAddin
Indica si el formato puede venderse como formato añadido (true) o no
(false).
AskForAddins
Indica si al vender el formato deben solicitarse automáticamente añadidos
(true) o no (false).
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de
querer eliminar el registro. Si se incluye este atributo con un valor de fecha y
hora válido, se considerará que el registro ha sido dado de baja. El formato de
fechas soportado es aaaa-mm-ddThh:mm:ss, por ejemplo
2012-01-31T10:59:20.
Prices
Precios del formato en cada centro de venta y tarifa especial. Cada precio
debe indicarse en un elemento Price con los siguientes atributos:
PriceListId [Obligatorio]
Id de la tarifa cuyos precios se quieren establecer.
MainPrice [Obligatorio]
Precio de venta como formato principal. El precio será con impuestos
incluidos o no dependiendo de la configuración de la tarifa. Si deja el
atributo vacío, Ágora solicitará el precio en el momento de la venta.
AddinPrice [Obligatorio]
Precio de venta como añadido de otro producto o formato. El precio
será con impuestos incluidos o no dependiendo de la configuración
de la tarifa. Si deja el atributo vacío, Ágora solicitará el precio en el
momento de la venta.
MenuItemPrice [Obligatorio]
Suplemento al incluir el formato en un menú. El precio será con
impuestos incluidos o no dependiendo de la configuración de la
tarifa. Si deja el atributo vacío, Ágora solicitará el precio en el
momento de la venta.
SaleFormatId [Obligatorio]
Id del formato de venta que se usará como añadido. Por razones
de compatibilidad, este atributo se puede sustituir por
ProductId.
AddinRoles
Grupos de añadidos disponibles para el formato. Prevalece sobre el node
Addins. Cada grupo debe indicarse en un elemento AddinRole con los
siguientes atributos:
Name [Obligatorio]
Nombre del grupo de añadidos.
ButtonText
Texto del botón del grupo de añadidos.
Color
Color del botón del grupo de añadidos.
MinAddins
Número mínimo de añadidos que se deberán seleccionar al vender el
producto con un añadido de este grupo.
MaxAddins
Número máximo de añadidos que se podrán seleccionar al vender el
producto con un añadido de este grupo.
UsePreparationType
Tipo de preparación para los añadidos del grupo. Puede tener dos
valores "FromMain" para usar el tipo de preparción del producto del
que es añadido o "FromAddin" para usar el del añadido.
CostPrice
Precio de coste del producto.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registro. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. Si se indica este atributo, todos los
formatos relacionados con el producto también serán eliminados. El formato de fechas
soportado es aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
Internamente Ágora creará el formato de venta base del producto usando el mismo Id que el
producto si no se especifica el atributo BaseSaleFormatId. Si ya existiese un formato de venta
con ese Id en la base de datos asociado a otro producto, por ejemplo porque ha sido creado
manualmente desde la administración de Ágora, se generará un error.
XML:
<Menus>
<Menu Id="401" Name="Menú Merienda" VatId="3" FamilyId="104"
ButtonText="M.Merienda" Color="#341122" Order="1"
UseAsDirectSale="true" Tag="MM" PLU="0001">
<Barcodes>
<Barcode Value="15998763"/>
</Barcodes>
<Prices>
<Price SaleCenterId="10" MainPrice="9.00"/>
<Price SaleCenterId="11" MainPrice="10.00"/>
</Prices>
<MenuGroups>
<MenuGroup Name="Bebida" MaxItems="1"
PreparationOrderId="1">
<Products>
<Product Id="100"/>
<Product Id="101"/>
</Products>
</MenuGroup>
<MenuGroup Name="Bocadillo" MaxItems="1"
PreparationOrderId="2">
<Products>
<Product Id="301"/>
<Product Id="302"/>
</Products>
</MenuGroup>
</MenuGroups>
</Menu>
</Menus>
JSON:
Para cada menú podrá indicar información similar a la del producto, pero además deberá indicar
los grupos que forman parte del menú:
Id [Obligatorio]
Identificador numérico único del menú. Este Id se utilizará también para crear el
formato base del menú. Deberá asegurarse además de que este Id no coincide con
ningún Id de producto.
Name [Obligatorio]
Nombre del menú.
VatId [Obligatorio]
Id del impuesto de venta asociado al menú.
FamilyId
Id de la familia a la que pertenece el menú. Si el menú no pertenece a ninguna familia,
deberá incluirse este atributo vacío.
ButtonText
Texto mostrado en el botón asociado al menú en el punto de venta.
Color
Color del botón asociado al menú el punto de venta. El formato es #RRGGBB, como los
ejemplos mostrados en el anexo I.
Barcodes
Lista de códigos de barras del menú. Cada uno de ellos debe indicarse en un elemento
Barcode con un único atributo Value que contenga el código de barras.
Order
Posición del menú dentro de su familia en el punto de venta. A la hora de mostrar los
productos y menús de una determinada familia, se ordenarán por el valor introducido
en este campo. Los productos y menús para los que no se haya indicado el orden,
aparecerán al final de la lista de los productos.
UseAsDirectSale
Indica si el menú debe tratarse como un producto de venta directa (true) o no
(false). Si es así, el menú se mostrará junto a los grupos de productos en la pantalla
de venta, y la posición indicada en el atributo Order será relativa a la posición de las
familias y otros productos de venta directa, no a la posición de los productos de esta
familia.
Tag [Obligatorio]
Texto usado en la comanda impresa y en los monitores de cocina para distinguir los
platos de este menú. Si no se desea utilizar ningún indicador, este campo debe dejarse
vacio.
PLU
Código PLU del menú. Debe ser una cadena numérica. Ejemplos: 0001, 33232, etc.
Prices
Precios del menú en cada centro de venta y tarifa especial. Cada precio debe indicarse
en un elemento Price con los siguientes atributos:
SaleCenterId o SpecialPriceListId
Id del centro de venta o tarifa especial cuyos precios se quieren establecer.
MainPrice
Precio de venta del menú. El precio será con impuestos incluidos o no
dependiendo de la configuración del centro de venta o tarifa. Si deja el
atributo vacío, Ágora solicitará el precio en el momento de la venta.
MenuGroups [Obligatorio]
Grupos de platos que forman el menú. Deberá indicar al menos un grupo de platos.
Cada uno de ellos deberá especificarse en un element MenuGroup con los siguientes
atributos:
Name [Obligatorio]
Nombre del grupo de platos.
MaxItems [Obligatorio]
Número máximo de platos de este grupo que puede pedirse.
PreparationOrderId [Obligatorio]
Id del orden de preparación que se usará al pedir los platos de este grupo.
Products
Lista de productos que se pueden elegir para este grupo de platos. Cada uno
de ellos debe indicarse en un elemento Product con un único atributo Id que
contenga el Id del producto.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
Internamente Ágora creará el formato de venta base del menú usando el mismo Id que el
menú. Si ya existiese un formato de venta con ese Id en la base de datos asociado a otro menú,
por ejemplo porque ha sido creado manualmente desde la administración de Ágora, se generará
un error. Además, deberá asegurarse de que no existe ningún producto o menú en la base de
datos con el Id asignado.
Promociones
Las promociones se indican dentro del elemento <Offers> en sucesivos elementos <Offer>:
XML:
<Offers>
<Offer
Id="2"
Name="50%"
Code="50%"
ApplicationMode="AllTickets"
FromDate="2016-02-17"
ToDate="2016-03-17"
StartTime="00:00"
EndTime="23:59"
ApplyOnMonday="true"
ApplyOnTuesday="true"
ApplyOnWednesday="true"
ApplyOnThursday="true"
ApplyOnFriday="true"
ApplyOnSaturday="true"
ApplyOnSunday="true">
<Discount>...</Discount>
<Custom>...</Custom>
<FixedPrice>...</FixedPrice>
</Offer>
</Offers>
JSON:
Id [Obligatorio]
Identificador numérico único de la promoción.
Name [Obligatorio]
El nombre de la promoción. Este campo no puede ser vacío
Code [Obligatorio]
Código de la promoción. Este campo no puede ser vacío
ApplicationMode [Obligatorio]
Si el valor es "AllTickets" indica que la promoción se aplica automáticamente a todos
los tickets o por el contrario es una promoción que puede asociarse a clientes o tickets
manualmente cuando el valor es "SelectedCustomerOrTickets".
FromDate [Obligatorio]
Fecha de inicio de la promoción. El fomato soportado es de la forma aaaa-mm-dd
ToDate [Obligatorio]
Fecha de fin de la promoción. El fomato soportado es de la forma aaaa-mm-dd
EndTime [Obligatorio]
Hora de fin de la promoción. El formato soportado es de la forma HH:mm
ApplyOnMonday [Obligatorio]
Indica si la promoción está vigente los lunes.
ApplyOnTuesday [Obligatorio]
Indica si la promoción está vigente los martes.
ApplyOnWednesday [Obligatorio]
Indica si la promoción está vigente los miércoles.
ApplyOnThursday [Obligatorio]
Indica si la promoción está vigente los jueves.
ApplyOnFriday [Obligatorio]
Indica si la promoción está vigente los viernes.
ApplyOnSaturday [Obligatorio]
Indica si la promoción está vigente los sábados.
ApplyOnSunday [Obligatorio]
Indica si la promoción está vigente los domingos.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
Descuento Directo
Se corresponde con la promoción de "Descuento Directo" que aparece en el manual de Ágora.
Esta promoción se encuentra dentro del elemento <Discount> que contiene el elemento
<Products> con los productos a los que se aplica la promoción:
JSON:
{
"Discount": {
"Products": [
{
"Id": 12
},
{
"Id": 13
},
{
"Id": 14
},
{
"Id": 91
},
{
"Id": 92
},
{
"Id": 93
}
],
"DiscountRate": 0.5000,
"RequiredQuantity": 1.000,
"ApplyBy": "Groups"
}
}
ApplyBy
Modo de aplicación de la promoción. Los posibles valores para este atributo son
"Groups" y "Units". Este atributo, si está presente, modifica el comportamiento de
Ágora a la hora de aplicar la promoción. Con el valor "Units", una vez que se alcancen
la cantidad requerida de unidades, se aplicará la promoción a todas ellas. Con el valor
"Groups" la promoción se aplicará a cada tantas unidades como se hayan establecido.
Id [Obligatorio]
Identificador del producto.
Esta promoción se encuentra dentro del elemento <FixedPrice> que contiene el elemento
<Products> con los productos a los que se aplica la promoción y por otro lado el elemento
<Prices> con los precios por tarifa o centro de venta del pack de productos:
XML:
<FixedPrice RequiredQuantity='2'>
<Products>
<Product Id='1'/>
<Product Id='2'/>
<Product Id='3'/>
<Product Id='4'/>
</Products>
<Prices>
<Price PriceListId='11' Value='1.6'/>
<Price PriceListId='12' Value='1.6'/>
</Prices>
</FixedPrice>
JSON:
RequiredQuantity [Obligatorio]
Cantidad necesaria que se debe comprar de los productos para aplicar la promoción.
Id [Obligatorio]
Identificador del producto.
PriceListId [Obligatorio]
Id de la tarifa cuyos precios se quieren establecer.
Value [Obligatorio]
Precio de venta del pack de productos. El precio será con impuestos incluidos o no
dependiendo de la configuración del centro de venta o tarifa.
Esta promoción se encuentra dentro del elemento <Custom> que contiene el elemento
<SourceProducts> con los productos que es necesario comprar para que se aplique la
promoción y el elemento <TargetProducts> con los productos sobre los que se aplica el
descuento de la promoción:
XML:
<Custom RequiredSourceQuantity="1.000"
MaxTargetQuantity="1.000"
DiscountRate="1.0000">
<SourceProducts >
<Product Id="19" />
<Product Id="20" />
<Product Id="21" />
<Product Id="22" />
<Product Id="23" />
</SourceProducts>
<TargetProducts>
<Product Id="19" />
<Product Id="20" />
<Product Id="21" />
<Product Id="22" />
<Product Id="23" />
</TargetProducts>
</Custom>
JSON:
RequiredSourceQuantity [Obligatorio]
Cantidad necesaria que se debe comprar de los productos indicados para aplicar la
promoción.
Id [Obligatorio]
Identificador del producto.
Id [Obligatorio]
Identificador del producto.
Notas Predefinidas
Las notas predefinidas se indican dentro del elemento <PredefinedNotes> en sucesivos
elementos <PredefinedNote>:
XML:
JSON:
Id [Obligatorio]
Identificador numérico único de la nota predefinida.
Text [Obligatorio]
Texto de la nota predefinida.
Priority [Obligatorio]
Prioridad usada para ordenar las notas predefinidas a la hora de mostrarlas en la
pantalla de selección de notas. Las notas con un valor de Priority más bajo serán
mostradas antes.
ValidForAllGroups [Obligatorio]
Indica si la nota predefinida se puede aplicar a todas las familias y categorías de
productos (true) o sólo a algunas familias (false).
ButtonText
Texto mostrado en el botón asociado a la nota predefinida en el punto de venta.
Color
Color del botón asociado a la nota en el punto de venta. El formato es #RRGGBB,
como los ejemplos mostrados en el anexo I.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
Pedidos
El formato de importación de los pedidos es igual que el formato usado para la exportación,
con la salvedad de que no es obligatorio añadir el elemento <Totals> porque será recalculado
en base a los descuentos y líneas introducidas.
▪ Si el pedido no existía en Ágora, se guardará un pedido que puede ser editado desde
Ágora, independientemente de que su estado en el documento XML sea "Pendiente" o
"Facturado". Para que un pedido quede como facturado, será necesario importar la
factura correspondiente, y será en ese momento cuando el pedido dejará de ser
editable.
Albaranes
El formato de importación de los albaranes es igual que el formato usado para la exportación.
Con la salvedad de que no es obligatorio añadir el elemento <Totals> porque será recalculado
en base a los descuentos y líneas introducidas.
▪ Si el albarán no existía en Ágora, se guardará un albarán que puede ser editado desde
Ágora independientemente de que su estado en el documento XML sea "Pendiente" o
"Facturado". Para que un albarán quede como facturado, será necesario importar la
factura correspondiente, y será en ese momento cuando el albarán dejará de ser
editable.
Facturas
El formato de importación de las facturas es igual que el formato usado para la exportación.
Con la salvedad de que no es obligatorio añadir cualquier elemento <Totals> porque será
recalculado en base a los descuentos y líneas introducidas.
Si se importa una factura que ya existe en Ágora, sea cual sea su contenido se ignorará porque
ninguna factura puede ser modificada y por tanto es seguro descartar la nueva factura.
Asimismo, si se importa una factura que referencia a otra, la factura referenciada deberá existir
previamente en Ágora.
XML:
JSON:
{
"Serie": "F",
"Number": 1,
"BusinessDay": "2014-09-29",
...
"FixTotalToPayments": true
...
}
Pedidos a Proveedor
El formato de importación de los pedidos a proveedor es igual que el formato usado para la
exportación, con la salvedad de que no es obligatorio añadir el elemento <Totals> y
▪ Si el pedido no existía en Ágora, se guardará un pedido que puede ser editado desde
Ágora ignorando la cantidad servida si se ha indicado. Cuando el pedido a importar
tiene un estado "Borrador" (Draft) se mantendrá como tal. Si por el contrario tiene un
estado distinto como "Confirmado" (Confirmed), "Servido Parcialmente"
(PartialDelivery) o "Servido" (Delivered), el pedido se importará como "Confirmado"
(Confirmed).
Albaranes de Proveedor
El formato de importación de los albaranes es igual que el formato usado para la exportación.
Con la salvedad de que no es obligatorio añadir el elemento <Totals> y <TotalAmount> de las
líneas del albarán porque serán recalculados en base a los descuentos y líneas introducidas.
▪ Si el albarán no existía en Ágora, se guardará un albarán que puede ser editado desde
Ágora independientemente de que su estado en el documento XML sea "Pendiente" o
"Facturado". Para que un albarán quede como facturado, será necesario importar la
factura de proveedor correspondiente, y será en ese momento cuando el albarán dejará
de ser editable. Si el albarán está sirviendo líneas de pedidos que no existen en Ágora
se producirá un error de importación. Los pedidos que se estén sirviendo en el albarán
quedarán marcados como "Servidos" o "Servidos Parcialmente".
Facturas a Proveedor
El formato de importación de las facturas es igual que el formato usado para la exportación.
Con la salvedad de que no es obligatorio añadir cualquier elemento <Totals> porque será
recalculado en base a los descuentos y líneas introducidas.
A la hora de importar una factura de proveedor en Ágora se tratará de distinta manera según su
estado y si existía o no en Ágora:
▪ Si la factura existía en Ágora, será reimportada marcando como facturados todos los
albaranes que se incluyan con la factura. Si la factura incluye pagos que la pagan
Los ejemplos que se incluyen en este documento son orientativos y puede que
no cubran todos los casos existentes. Le recomendamos encarecidamente que,
además de seguir los textos incluidos en este documento, utilice la versión de
demostración de Ágora para verificar el formato de ficheros.
La información del fichero se generará para la fecha de negocio indicada como parámetro al
ejecutar la aplicación ais.exe. Si no se indica una fecha de negocio, se usará el día actual como
fecha de negocio.
Sólo se incluirán en el documento aquellas secciones que tengan datos. Por ejemplo, si no se ha
generado ninguna factura o no hay ningún cierre de caja, estas secciones no aparecerán en el
documento.
Movimientos de Caja
Los movimientos de caja se indican dentro del elemento CashTransactions en sucesivos
elementos CashTransaction:
XML:
<CashTransactions>
<CashTransaction Id="1" PosId="1" UserId="3"
BusinessDay="2014-09-29" Date="2014-09-29T12:06:46"
Amount="500.00" Supplier="Casbega"
Description="Devolución de Mercancía" />
<CashTransaction Id="2" PosId="1" UserId="3"
BusinessDay="2014-09-29" Date="2014-09-29T12:07:20"
Amount="-100.00" Supplier="Fontanero"
Description="Grifo WC Caballeros" />
</CashTransactions>
JSON:
{
"CashTransactions": [
{
"Id": 1,
"PosId": 1,
"UserId": 3,
"BusinessDay": "2014-09-29",
"Date": "2014-09-29T12:06:46",
"Amount": 500.00,
"Supplier": "Casbega",
"Description": "Devolución de Mercancía"
},
{
"Id": 2,
"PosId": 1,
"UserId": 3,
"BusinessDay": "2014-09-29",
"Date": "2014-09-29T12:07:20",
"Amount": -100.00,
"Supplier": "Fontanero",
"Description": "Grifo WC Caballeros"
}
]
}
Id
Identificador del movimiento de caja.
PosId
Identificador del punto de venta donde se ha realizado el movimiento de caja.
UserId
Identificador del usuario que ha realizado el movimiento de caja.
BusinessDay
Fecha de negocio en que se ha realizado el movimiento de caja con formato aaaa-mm-
dd.
Date
Fecha y hora en que se ha realizado el movimento de caja con formato aaaa-mm-
ddThh:mm:ss.
Amount
Importe del movimiento de caja. Si es un movimiento de entrada, el importe será
positivo, y si es de salida, el importe será negativo.
Supplier
Proveedor para el que se ha realizado el movimiento de caja.
Description
Motivo o concepto del movimiento de caja.
Pedidos
Los pedidos se indican dentro del elemento SalesOrders en sucesivos elementos SalesOrder:
XML:
<Lines>
<Line
Index="0" Type="Standard"
CreationDate="2014-09-29T12:08:00"
ParentIndex="" MenuGroup=""
ProductId="16" ProductName="Hamburguesa doble"
SaleFormatId="16"
SaleFormatName="Hamburguesa doble"
SaleFormatRatio="1.000"
MainBarcode=""
ProductPrice="3.25"
Quantity="1.000"
VatId="3" VatRate="0.1000"
SurchargeRate="0.0140"
UnitPrice="4.25"
DiscountRate="0.0000" CashDiscount="0.0000"
TotalAmount="4.25"
UnitCostPrice="0.00"
TotalCostPrice="0.00"
PreparationTypeId=""
PreparationTypeName=""
PLU="598"
FamilyId="1"
FamilyName="Hamburguesas"
PreparationOrderId=""
PreparationOrderName="">
<Addins>
<Addin ProductId="18" ProductName="Bacon"
SaleFormatId="18"
<Payments>
<Payment MethodId="2" MethodName="Tarjeta" Amount="-6.85"
PaidAmount="-6.85" ChangeAmount="0.00" PosId="1"
IsPrepayment="true" >
<ExtraInformation>
<![CDATA[Tipo de Tarjeta: MASTERVISA]]>
</ExtraInformation>
</Payment>
</Payments>
<Offers>
<Offer Id="1"/>
</Offers>
<LoyaltyProgram MemberId="3hRXhZ01Kictq">
<Rewards>
<Reward Id="7cnZDFPw" Name="Descuento de 3€"
Type="CashDiscount" Value="3.00" />
<Reward Id="8xmssMkq" Name="Descuento Cumpleaños"
Type="NamedDiscount" Code="EMPT" />
</Rewards>
</LoyaltyProgram>
</SalesOrder>
</SalesOrders>
JSON:
Serie
Serie de pedido.
Number
Número de pedido.
BusinessDay
Fecha de negocio en formato aaaa-mm-dd.
Guests
Número de comensales. Vacío si no los tiene asociados.
VatIncluded
Indica si lleva impuestos incluidos (true) o no (false).
Date
Fecha y hora de creación del pedido en formato aaaa-mm-ddThh:mm:ss.
Pos
Identificador único y nombre del TPV en que se creó el pedido.
Workplace
Identificador único y nombre del Local en que se creó el pedido.
User
Identificador único y nombre del usuario que creó el pedido.
Status
Estado del pedido. Puede ser:
Pending
El pedido está pendiente de facturar.
Cancelled
El pedido no ha sido facturado y ya no podrá facturarse nunca más (por
ejempo, porque ha sido cancelado).
Invoiced
El pedido ha sido facturado.
Customer
Datos del cliente al que se emite la factura, incluyendo:
Id
Identificador único del cliente.
FiscalName
Nombre fiscal del cliente.
Cif
CIF/NIF del cliente.
AccountCode
Código de la cuenta contable del cliente.
Street
Calle del cliente.
City
Población del cliente.
Region
Provincia del cliente.
ZipCode
Código postal del cliente.
ApplySurcharge
Indica si al cliente se le aplica recargo de equivalencia.
DeliveryAddress
Dirección de Entrega del pedido. Es opcional si no se indica se usará la dirección de
facturación del cliente.
Street
Calle del cliente.
City
Ciudad del cliente.
Region
Población del cliente.
ZipCode
Código Postal del cliente.
SaleCenter
Información del centro de venta donde se ha realizado el pedido, incluyendo Id,
Nombre y Ubicación.
Lines
Líneas del documento, cada una de ellas en un elemento Line con el siguiente
formato:
Index
Índice de la línea dentro del documento. Las líneas se empiezan a numerar en
0.
Type
Tipo de línea. Puede ser Standard si es una línea normal, MenuHeader si es la
un menú, o MenuItem si es un plato perteneciente a un menú.
CreationDate
Fecha en que se añadió la línea al documento.
ParentIndex
Índice de la línea a la que está asociada ésta. Sólo se utiliza en el caso de
platos de menú, es decir, cuando Type="MenuItem". En ese caso,
ParentIndex es el índice de la línea que contiene el menú al que pertenece
este plato. Si la línea es de otro tipo, este atributo estará vacío.
MenuGroup
Nombre del grupo de platos del menú al que pertenece esta línea. Sólo se
utiliza en el caso de platos de menú, es decir, cuando Type="MenuItem". En
ese caso, MenuGroup es nombre del group de platos al que pertenece este
plato. Si la línea es de otro tipo, este atributo estará vacío.
UserId
Identificador del usuario que añadió la línea.
ProductId
Identificador del producto principal de la línea.
ProductName
Nombre del producto principal de la línea.
SaleFormatId
Identificador del formamto de venta principal de la línea.
SaleFormatName
Nombre del formato de venta principal de la línea.
SaleFormatRatio
Ratio del formato de venta principal de la línea con respecto a su formato
base.
MainBarcode
Código de barras principal del artículo.
Quantity
Cantidad.
VatId
Identificador único del impuesto asociado al producto principal de la línea.
VatRate
Tanto por uno de impuesto asociado al producto principal de la línea. Por
ejemplo, si el porcentaje de impuesto es 21%, este valor será 0.21.
SurchargeRate
Tanto por uno de recargo de equivalencia asociado al producto principal de la
línea. Por ejemplo, si el porcentaje de recargo es 4%, este valor será 0.04.
UnitPrice
Precio unitario de la línea incluyendo tanto el producto principal como los
añadidos. Es decir, si el producto principal tiene un precio de 6€ y lleva un
añadido de 2€, el valor de este atributo será 8€. Este precio incluirá
impuestos o no dependiendo del valor del atributo VatIncluded del ticket.
DiscountRate
Tanto por uno de descuento aplicado a la línea. Por ejemplo, si el porcentaje
de descuento es 10%, este valor será 0.1.
CashDiscount
Descuento en moneda aplicado a la línea.
TotalAmount
Importe total de la línea tras aplicar descuentos. Este valor incluirá impuestos
o no dependiendo del valor del atributo VatIncluded del ticket.
ProductCostPrice
Precio de coste del producto principal.
UnitCostPrice
Precio de coste unitario de la línea, incluyendo tanto el producto principal
como los añadidos.
TotalCostPrice:
Precio de coste total de la línea. Es decir la cantidad por el precio de coste de
la línea.
OfferId
En caso de que la línea pertenezca a una promoción se incluye este elemento
con el identificador de la oferta.
OfferCode
En caso de que la línea pertenezca a una promoción se incluye este elemento
con el código de la oferta.
PreparationTypeName [Opcional]
Nombre del tipo de preparación del producto principal.
PLU
PLU del artículo. Puede ser vacía si el artículo no tiene asignada ninguna PLU.
FamilyId
Identificador de la familia a la que pertenece el producto. Puede ser vacío si el
producto no está asociado a ninguna familia.
FamilyName
Nombre de la familia a la que pertenece el producto. Puede ser vacío si el
producto no está asociado a ninguna familia
PreparationOrderId
Identificador del orden de preparación del producto principal. Si no lleva tipo
de preparación el campo se dejará vacío.
PreparationOrderName [Opcional]
Nombre del orden del preparación del producto principal.
Addins
En caso de que haya añadidos al producto principal se incluyen en este
elemento. Para cada uno de ellos se indica información análoga a la del
producto principal salvo que no llevan ordenes de preparación, usan el orden
de preparación del producto principal.
Notes
Notas de preparación asociadas a la línea. Si la línea no lleva notas de
preparación, no se incluirá este elemento.
Discounts
Descuentos del documento
DiscountRate
Tanto por uno de descuento aplicado al documento. Por ejemplo, si el
porcentaje de descuento es 10%, este valor será 0.1.
CashDiscount
Descuento en moneda aplicado al documento.
Offers
Lista con las promociones asignadas:
Id
Identificador de la promoción.
Totals
Contiene el detalle de los descuentos en pie del documento y de los totales,
desglosándolos por base imponible. La información incluida para cada uno es:
NetAmount
Importe tras descontar los impuestos.
VatAmount
Cuota correspondiente al impuesto.
SurchageAmount
Cuota correspondiente al recargo de equivalencia.
LoyaltyProgram [Opcional]
Información sobre los datos del participante del sistema de fidelización asociados al
documento en caso de que el documento tenga asociado un participante del programa
de fidelización. Puede consultar los detalles sobre la información suministrada en la
sección sobre integración con sistemas de fidelización de este manual.
Payments
Lista con los pagos asociados al pedido. Cada pago incluirá la siguiente información:
MethodId
Identificador de la forma de pago.
MethodName
Nombre de la forma de pago.
Amount
Cantidad total. La diferencia entra la cantidad pagada y el cambio
PaidAmount
Cantidad pagada.
ChangeAmount
Cambio entregado.
Date
Fecha en la que se ha realizado el pago.
PosId
Identificador del punto de venta donde se registró el pago
IsPrepayment
Indica si el pago se realizó antes de emitir al factura (true) o en el momento
de emitirla (false). En este caso de pedidos, todos los pagos tendrán el valor
true.
ExtraInformation
Información adicional sobre el pago que se haya introducido en el punto de
venta.
Los documentos aparecen ordenados primero por Fecha de Creación y luego por
Id.
XML:
<Payments>
<Payment MethodId="2" MethodName="Tarjeta"
Amount="-6.85" PaidAmount="-6.85"
ChangeAmount="0.00" PosId="1"
IsPrepayment="true" >
<ExtraInformation>
<![CDATA[Tipo de Tarjeta: MASTERVISA]]>
</ExtraInformation>
</Payment>
</Payments>
<Offers>
<Offer Id="1"/>
</Offers>
<LoyaltyProgram MemberId="3hRXhZ01Kictq">
<Rewards>
<Reward Id="7cnZDFPw" Name="Descuento de 3€"
Type="CashDiscount" Value="3.00" />
<Reward Id="8xmssMkq" Name="Descuento Cumpleaños"
Type="NamedDiscount" Code="EMPT" />
</Rewards>
</LoyaltyProgram>
</DeliveryNote>
</DeliveryNotes>
JSON:
Serie
Serie de albarán.
Number
Número de albarán.
BusinessDay
Fecha de negocio en formato aaaa-mm-dd.
VatIncluded
Indica si lleva impuestos incluidos (true) o no (false).
Date
Fecha y hora de creación del albarán en formato aaaa-mm-ddThh:mm:ss.
Guests
Número de comensales. Si no se han indicado comensales, este campo aparecerá
vacío.
Pos
Identificador único y nombre del TPV en que se creó el albarán.
Workplace
Identificador único y nombre del Local en que se creó el albarán.
User
Identificador único y nombre del usuario que creó el albarán.
Notes
Notas asociadas al albarán.
Status
Estado del albarán. Puede ser:
Pending
El albarán está pendiente de facturar.
Cancelled
El albarán no ha sido facturado y ya no podrá facturarse nunca más (por
ejempo, porque ha sido cancelado).
Invoiced
El albarán ha sido facturado.
Customer
Datos del cliente al que se emite la factura, incluyendo:
Id
Identificador único del cliente.
FiscalName
Nombre fiscal del cliente.
Cif
CIF/NIF del cliente.
AccountCode
Código de la cuenta contable del cliente.
Street
Calle del cliente.
City
Población del cliente.
Region
Provincia del cliente.
ApplySurcharge
Indica si al cliente se le aplica recargo de equivalencia.
DeliveryAddress
Dirección de Entrega del albarán. Es opcional si no se indica se usará la dirección de
facturación del cliente.
Street
Calle del cliente.
City
Ciudad del cliente.
Region
Población del cliente.
ZipCode
Código Postal del cliente.
SuggestedTip
Propina sugerida para la factura, incluyendo impuesto aplicado a la propina y modo de
aplicación (si es sobre el total con o sin impuestos y con o sin descuentos al pie del
ticket).
ServiceCharge
Recargo por servicio para la factura, incluyendo impuesto aplicado al servicio por
recargo y modo de aplicación (si es sobre el total con o sin impuestos y con o sin
descuentos al pie del ticket).
RelatedSalesOrder
Serie y número del pedido relaccionado con éste documento. Este campo sólo se indica
cuando el documento ha sido emitido a partir de un pedido.
Lines
Líneas del documento, cada una de ellas en un elemento Line con el siguiente
formato:
Index
Índice de la línea dentro del documento. Las líneas se empiezan a numerar en
0.
Type
Tipo de línea. Puede ser Standard si es una línea normal, MenuHeader si es la
un menú, o MenuItem si es un plato perteneciente a un menú.
CreationDate
Fecha en que se añadió la línea al documento.
ParentIndex
Índice de la línea a la que está asociada ésta. Sólo se utiliza en el caso de
platos de menú, es decir, cuando Type="MenuItem". En ese caso,
MenuGroup
Nombre del grupo de platos del menú al que pertenece esta línea. Sólo se
utiliza en el caso de platos de menú, es decir, cuando Type="MenuItem". En
ese caso, MenuGroup es nombre del group de platos al que pertenece este
plato. Si la línea es de otro tipo, este atributo estará vacío.
UserId
Identificador del usuario que añadió la línea.
ProductId
Identificador del producto principal de la línea.
ProductName
Nombre del producto principal de la línea.
SaleFormatId
Identificador del formamto de venta principal de la línea.
SaleFormatName
Nombre del formato de venta principal de la línea.
SaleFormatRatio
Ratio del formato de venta principal de la línea con respecto a su formato
base.
MainBarcode
Código de barras principal del artículo.
ProductPrice
Precio unitario del producto principal de la línea. Este precio incluirá
impuestos o no dependiendo del valor del atributo VatIncluded del ticket.
Quantity
Cantidad.
VatId
Identificador único del impuesto asociado al producto principal de la línea.
VatRate
Tanto por uno de impuesto asociado al producto principal de la línea. Por
ejemplo, si el porcentaje de impuesto es 21%, este valor será 0.21.
SurchargeRate
Tanto por uno de recargo de equivalencia asociado al producto principal de la
línea. Por ejemplo, si el porcentaje de recargo es 4%, este valor será 0.04.
UnitPrice
Precio unitario de la línea incluyendo tanto el producto principal como los
añadidos. Es decir, si el producto principal tiene un precio de 6€ y lleva un
añadido de 2€, el valor de este atributo será 8€. Este precio incluirá
impuestos o no dependiendo del valor del atributo VatIncluded del ticket.
CashDiscount
Descuento en moneda aplicado a la línea.
TotalAmount
Importe total de la línea tras aplicar descuentos. Este valor incluirá impuestos
o no dependiendo del valor del atributo VatIncluded del ticket.
ProductCostPrice
Precio de coste del producto principal.
UnitCostPrice
Precio de coste unitario de la línea, incluyendo tanto el producto principal
como los añadidos.
TotalCostPrice:
Precio de coste total de la línea. Es decir la cantidad por el precio de coste de
la línea.
OfferId
En caso de que la línea pertenezca a una promoción se incluye este elemento
con el identificador de la oferta.
OfferCode
En caso de que la línea pertenezca a una promoción se incluye este elemento
con el código de la oferta.
PreparationTypeId
Identificador del tipo de preparación del producto principal. Si no lleva tipo de
preparación el campo se dejará vacío.
PreparationTypeName [Opcional]
Nombre del tipo de preparación del producto principal.
PLU
PLU del artículo. Puede ser vacía si el artículo no tiene asignada ninguna PLU.
FamilyId
Identificador de la familia a la que pertenece el producto. Puede ser vacío si el
producto no está asociado a ninguna familia.
FamilyName
Nombre de la familia a la que pertenece el producto. Puede ser vacío si el
producto no está asociado a ninguna familia
PreparationOrderId
Identificador del orden de preparación del producto principal. Si no lleva tipo
de preparación el campo se dejará vacío.
PreparationOrderName [Opcional]
Nombre del orden del preparación del producto principal.
Notes
Notas de preparación asociadas a la línea. Si la línea no lleva notas de
preparación, no se incluirá este elemento.
Discounts
Descuentos del documento
DiscountRate
Tanto por uno de descuento aplicado al documento. Por ejemplo, si el
porcentaje de descuento es 10%, este valor será 0.1.
CashDiscount
Descuento en moneda aplicado al documento.
Offers
Lista con las promociones asignadas:
Id
Identificador de la promoción.
Totals
Contiene el detalle de los descuentos en pie del albarán y de los totales,
desglosándolos por base imponible. La información incluida para cada uno es:
GrossAmount
Importe incluyendo los impuestos.
NetAmount
Importe tras descontar los impuestos.
VatAmount
Cuota correspondiente al impuesto.
SurchageAmount
Cuota correspondiente al recargo de equivalencia.
LoyaltyProgram [Opcional]
Información sobre los datos del participante del sistema de fidelización asociados al
documento en caso de que el documento tenga asociado un participante del programa
de fidelización. Puede consultar los detalles sobre la información suministrada en la
sección sobre integración con sistemas de fidelización de este manual.
Payments
Lista con los pagos asociados al albarán. Cada pago incluirá la siguiente información:
MethodId
Identificador de la forma de pago.
Amount
Cantidad total. La diferencia entra la cantidad pagada y el cambio
PaidAmount
Cantidad pagada.
ChangeAmount
Cambio entregado.
Date
Fecha en la que se ha realizado el pago.
PosId
Identificador del punto de venta donde se registró el pago
IsPrepayment
Indica si el pago se realizó antes de emitir al factura (true) o en el momento
de emitirla (false). En este caso de albaranes, todos los pagos tendrán el
valor true.
ExtraInformation
Información adicional sobre el pago que se haya introducido en el punto de
venta.
Los documentos aparecen ordenados primero por Fecha de Creación y luego por
Id.
Facturas
Las facturas se indican dentro del elemento Invoices en sucesivos elementos Invoice:
XML:
<InvoiceItems>
<Item ContentType="T" BusinessDay="2014-09-29"
Guests="2"
VatIncluded="true" Date="2014-09-29T12:10:30">
<Lines>
<Line
Index="0" Type="Standard"
CreationDate="2014-09-29T12:08:00"
ParentIndex="" MenuGroup=""
ProductId="16" ProductName="Hamburguesa doble"
SaleFormatId="16"
SaleFormatName="Hamburguesa doble"
SaleFormatRatio="1.000"
MainBarcode=""
PLU=""
ProductPrice="3.25"
Quantity="1.000"
VatId="3" VatRate="0.1000"
SurchargeRate="0.0140"
<Payments/>
<Offers/>
<LoyaltyProgram MemberId="3hRXhZ01Kictq">
<Rewards>
<Reward Id="7cnZDFPw" Name="Descuento de 3€"
Type="CashDiscount" Value="3.00" />
<Reward Id="8xmssMkq" Name="Descuento Cumpleaños"
Type="NamedDiscount" Value="EMPT" />
</Rewards>
</LoyaltyProgram>
</Item>
</InvoiceItems>
<Payments>
<Payment MethodId="2" MethodName="Tarjeta"
Amount="-6.85" PaidAmount="-6.85"
JSON:
Serie
Serie de factura.
BusinessDay
Fecha de negocio en formato aaaa-mm-dd.
VatIncluded
Indica si lleva impuestos incluidos (true) o no (false).
PrintCount
Número de veces que ha sido impresa la factura.
Date
Fecha y hora de creación de la factura en formato aaaa-mm-ddThh:mm:ss.
DocumentType
Tipo de factura. Puede ser:
Pos
Identificador único y nombre del TPV en que se creó la factura.
Workplace
Identificador único y nombre del Local en que se creó la factura.
User
Identificador único y nombre del usuario que creó la factura.
SaleCenter
Información del centro de venta donde se ha realizado la factura, incluyendo Id,
Nombre y Ubicación.
ServiceCharge
Recargo por servicio para la factura, incluyendo impuesto aplicado al servicio por
recargo y modo de aplicación (si es sobre el total con o sin impuestos y con o sin
descuentos al pie del ticket).
RelatedInvoice
Serie y número de la factura relaccionada con ésta. Este campo sólo se indica cuando
la factura ha sido emitida a partir de otra factura, por ejemplo, para realizar una
devolución. En ese caso, se indicará en este campo la factura original.
Customer
Datos del cliente al que se emite la factura. Si se trata de una factura simplificada sin
cliente asignado, este elemento será omitido. Si se incluye el cliente, contendrá la
siguiente información:
Id
Identificador único del cliente.
FiscalName
Nombre fiscal del cliente.
Cif
CIF/NIF del cliente.
AccountCode
Código de la cuenta contable del cliente.
Street
Calle del cliente.
City
Población del cliente.
Region
Provincia del cliente.
ZipCode
Código postal del cliente.
ApplySurcharge
Indica si al cliente se le aplica recargo de equivalencia.
DeliveryAddress
Dirección de Entrega del documento. Es opcional si no se indica se usará la dirección
de facturación del cliente.
Street
Calle del cliente.
Region
Población del cliente.
ZipCode
Código Postal del cliente.
RelatedInvoice
Serie y número de la factura relaccionada con ésta. Este campo sólo se indica cuando
la factura ha sido emitida a partir de otra factura, por ejemplo, para realizar una
devolución. En ese caso, se indicará en este campo la factura original.
InvoiceItems
Documentos que forman parte de la factura. En Ágora, una factura puede estar
formada por un único ticket o por varios albaranes. El contenido de la factura se
indicará dentro de este elemento en sucesivos elementos Item con el siguiente
formato:
ContentType
Indica si el documento es un ticket (T) o un albarán (D).
BusinessDay
Fecha de negocio del documento.
Guests
Número de comensales. Vacío si no los tiene asociados.
VatIncluded
Indica si el documento lleva impuestos incluidos (true) o no (false).
Date
Fecha de creación del documento.
Pos
Identificador único y nombre del TPV en que se creó el documento. Si la
factura es de un único ticket, este elemento coincidirá con el elemento Pos de
la propia factura. Si la factura es de uno o más albaranes, es posible que cada
albarán se generase en un TPV distinto del TPV que se utilizó para emitir la
factura.
User
Identificador único y nombre del usuario que creó el documento. Si la factura
es de un único ticket, este elemento coincidirá con el elemento User de la
propia factura. Si la factura es de uno o más albaranes, es posible que cada
albarán lo generase un usuario distinto del usuario que emitió la factura.
RelatedSalesOrder
Este campo sólo se indica cuando el documento ha sido emitido a partir de un
pedido. En ese caso, incluye serie y número de pedido.
Lines
Líneas del documento, cada una de ellas en un elemento Line con el
siguiente formato:
Index
Índice de la línea dentro del documento. Las líneas se empiezan a
numerar en 0.
Type
Tipo de línea. Puede ser Standard si es una línea normal,
MenuHeader si es la un menú, o MenuItem si es un plato
perteneciente a un menú.
CreationDate
Fecha en que se añadió la línea al documento.
ParentIndex
Índice de la línea a la que está asociada ésta. Sólo se utiliza en el
caso de platos de menú, es decir, cuando Type="MenuItem". En ese
caso, ParentIndex es el índice de la línea que contiene el menú al
que pertenece este plato. Si la línea es de otro tipo, este atributo
estará vacío.
MenuGroup
Nombre del grupo de platos del menú al que pertenece esta línea.
Sólo se utiliza en el caso de platos de menú, es decir, cuando
Type="MenuItem". En ese caso, MenuGroup es nombre del group de
platos al que pertenece este plato. Si la línea es de otro tipo, este
atributo estará vacío.
UserId
Identificador del usuario que añadió la línea.
ProductId
Identificador del producto principal de la línea.
ProductName
Nombre del producto principal de la línea.
SaleFormatId
Identificador del formamto de venta principal de la línea.
SaleFormatRatio
Ratio del formato de venta principal de la línea con respecto a su
formato base.
MainBarcode
Código de barras principal del artículo.
PLU
Código PLU del artículo.
ProductPrice
Precio unitario del producto principal de la línea. Este precio incluirá
impuestos o no dependiendo del valor del atributo VatIncluded del
ticket.
Quantity
Cantidad.
VatId
Identificador único del impuesto asociado al producto principal de la
línea.
VatRate
Tanto por uno de impuesto asociado al producto principal de la línea.
Por ejemplo, si el porcentaje de impuesto es 21%, este valor será
0.21.
SurchargeRate
Tanto por uno de recargo de equivalencia asociado al producto
principal de la línea. Por ejemplo, si el porcentaje de recargo es 4%,
este valor será 0.04.
UnitPrice
Precio unitario de la línea incluyendo tanto el producto principal
como los añadidos. Es decir, si el producto principal tiene un precio
de 6€ y lleva un añadido de 2€, el valor de este atributo será 8€.
Este precio incluirá impuestos o no dependiendo del valor del
atributo VatIncluded del ticket.
DiscountRate
Tanto por uno de descuento aplicado a la línea. Por ejemplo, si el
porcentaje de descuento es 10%, este valor será 0.1.
CashDiscount
Descuento en moneda aplicado a la línea.
TotalAmount
Importe total de la línea tras aplicar descuentos. Este valor incluirá
impuestos o no dependiendo del valor del atributo VatIncluded del
ticket.
UnitCostPrice
Precio de coste unitario de la línea, incluyendo tanto el producto
principal como los añadidos.
TotalCostPrice:
Precio de coste total de la línea. Es decir la cantidad por el precio de
coste de la línea.
OfferId
En caso de que la línea pertenezca a una promoción se incluye este
elemento con el identificador de la oferta.
OfferCode
En caso de que la línea pertenezca a una promoción se incluye este
elemento con el código de la oferta.
PreparationTypeId
Identificador del tipo de preparación del producto principal. Si no
lleva tipo de preparación el campo se dejará vacío.
PreparationTypeName [Opcional]
Nombre del tipo de preparación del producto principal.
PLU
PLU del artículo. Puede ser vacía si el artículo no tiene asignada
ninguna PLU.
FamilyId
Identificador de la familia a la que pertenece el producto. Puede ser
vacío si el producto no está asociado a ninguna familia.
FamilyName
Nombre de la familia a la que pertenece el producto. Puede ser vacío
si el producto no está asociado a ninguna familia
PreparationOrderId
Identificador del orden de preparación del producto principal. Si no
lleva tipo de preparación el campo se dejará vacío.
PreparationOrderName [Opcional]
Nombre del orden del preparación del producto principal.
Addins
En caso de que haya añadidos al producto principal se incluyen en
este elemento. Para cada uno de ellos se indica información análoga
a la del producto principal salvo que no llevan ordenes de
preparación, usan el orden de preparación del producto principal.
Notes
Notas de preparación asociadas a la línea. Si la línea no lleva notas
de preparación, no se incluirá este elemento.
DiscountRate
Tanto por uno de descuento aplicado al documento. Por ejemplo, si
el porcentaje de descuento es 10%, este valor será 0.1.
CashDiscount
Descuento en moneda aplicado al documento.
Payments
Lista con los pagos asociados al documento antes de convertirse en factura.
Para cada pago se incluye la misma información que en los pagos de factura,
tal y como se detalla más adelante.
Offers
Lista con las promociones asignadas:
Id
Identificador de la promoción.
Totals
Contiene el detalle de los descuentos en pie del documento y de los totales,
desglosándolos por base imponible. La información incluida para cada uno es:
GrossAmount
Importe incluyendo los impuestos.
NetAmount
Importe tras descontar los impuestos.
VatAmount
Cuota correspondiente al impuesto.
SurchageAmount
Cuota correspondiente al recargo de equivalencia.
LoyaltyProgram [Opcional]
Información sobre los datos del participante del sistema de fidelización
asociados al documento en caso de que el documento tenga asociado un
participante del programa de fidelización. Puede consultar los detalles sobre la
información suministrada en la sección sobre integración con sistemas de
fidelización de este manual.
Payments
Lista con los pagos asociados a la factura. Cada pago incluirá la siguiente información:
MethodId
Identificador de la forma de pago.
MethodName
Nombre de la forma de pago.
Amount
Cantidad total. La diferencia entra la cantidad pagada y el cambio
ChangeAmount
Cambio entregado.
Date
Fecha en la que se ha realizado el pago.
Tip
Propina recibida.
PosId
Identificador del punto de venta donde se registró el pago
IsPrepayment
Indica si el pago se realizó antes de emitir al factura (true) o en el momento
de emitirla (false). Los pagos procedentes de tickets, albaranes o pedidos,
tendrán este valor a true, mientras que los pagos que se hayan realizado en
el momento de emitir la factura, tendrá este valor a false.
ExtraInformation
Información adicional sobre el pago que se haya introducido en el punto de
venta.
Totals
Contiene el importe total de la factura, incluyendo todos sus documentos, desglosado
por base imponibles. Para cada base imponible se detallará:
GrossAmount
Importe incluyendo los impuestos.
NetAmount
Importe tras descontar los impuestos.
VatAmount
Cuota correspondiente al impuesto.
SurchageAmount
Cuota correspondiente al recargo de equivalencia.
Los documentos aparecen ordenados primero por Fecha de Creación y luego por
Id.
Cierres de Caja
Los cierres de caja se indican en el elemento PosCloseOuts en sucesivos elementos
PosCloseOut:
<PosCloseOuts>
<PosCloseOut Id="1" PosId="1" WorkplaceId="1" BusinessDay="2014-09-29"
InitialAmount="100.00"
ExpectedEndAmount="512.07"
ActualEndAmount="500.00"
Incident="Desconocido"
OpenDate="2014-09-29T12:05:58" OpenerUserId="3"
CloseDate="2014-09-29T12:11:17" CloserUserId="5"
VerificationCode="acmINnin5qGq"/>
</PosCloseOuts>
JSON:
{
"PosCloseOuts": [
{
"Id": 1,
"PosId": 1,
"WorkplaceId": 1,
"BusinessDay": "2014-09-29",
"InitialAmount": 100.00,
"ExpectedEndAmount": 512.07,
"ActualEndAmount": 500.00,
"Incident": "Desconocido",
"OpenDate": "2014-09-29T12:05:58",
"OpenerUserId": 3,
"CloseDate": "2014-09-29T12:11:17",
"CloserUserId": 5,
"VerificationCode": "acmINnin5qGq"
}
]
}
Id
Identificador del cierre de caja.
PosId
Identificador del punto de venta donde se ha realizado el movimiento de caja.
WorkplaceId
Identificador del local donde se ha realizado el cierre de caja.
BusinessDay
Fecha de negocio en que se ha realizado el cierre de caja con formato aaaa-mm-dd.
ExpectedEndAmount
Cantidad final teórica de dinero en caja.
ActualEndAmount
Cantidad final real de dinero en caja.
Incident
Incidencia registrada al cerrar la caja. Si no hubo descuadre, este atributo estará
vacío.
OpenDate
Fecha y hora en que se ha realizado la apertura de caja con formato aaaa-mm-
ddThh:mm:ss.
OpenerUserId
Id del usuario que ha realizado la apertura de caja.
CloseDate
Fecha y hora en que se ha realizado el cierre de caja con formato aaaa-mm-
ddThh:mm:ss.
CloserUserId
Id del usuario que ha realizado el cierre de caja.
VerificationCode
Código de seguridad único para identificar el cierre de caja.
Cierres de Sistema
Los cierres de sistema se indican en el elemento SystemCloseOuts en sucesivos elementos
SystemCloseOut:
XML:
JSON:
Number
Número único y correlativo de cierre de sistema.
BusinessDay
Fecha de negocio asociada a la jornada de trabajo con formato aaaa-mm-dd.
OpenDate
Fecha y hora en que se ha realizado la apertura de la jornada de trabajo con formato
aaaa-mm-ddThh:mm:ss.
OpenerUserId
Id del usuario que ha realizado la apertura de la jornada de trabajo.
CloseDate
Fecha y hora en que se ha realizado el cierre de la jornada de trabajo con formato
aaaa-mm-ddThh:mm:ss.
CloserUserId
Id del usuario que ha realizado el cierre de jornada de trabajo.
WokrplaceId
Id del local que ha realizado el cierre de sistema.
Documents
Información sobre los documentos generados en cada serie de facturas (incluyendo
facturas simplificadas y devoluciones). Para cada uno se incluye la siguiente
información en un elemento Document:
Serie
Serie de los documentos.
LastNumber
Número del último documento generado en esa serie durante esta jornada de
trabajo.
Count
Número total de documentos generados en esa serie durante esta joranada
de trabajo.
Amount
Importe total (impuestos incluidos) facturado en esta serie.
Amounts
Importes totales de ventas durante esta jornada de trabajo. Detallando:
GrossAmount
Importe con impuestos incluidos.
NetAmount
Importe tras descontar impuestos.
VatAmount
Cuota correspondiente al impuesto.
SurchargeAmount
Cuota correspondiente al recargo de equivalencia.
InvoicePayments
Pagos de facturas realizados durante la jornada de trabajo ((impuestos incluidos)
desglosada por forma de pago. Para cada forma de pago se indica:
MethodName
Nombre de la forma de pago.
Amount
Importe cobrado.
SalesOrderPayments
Pagos de pedidos realizados durante la jornada de trabajo (impuestos incluidos)
desglosada por forma de pago. Para cada forma de pago se indica:
MethodName
Nombre de la forma de pago.
Amount
Importe cobrado.
DeliveryNotePayments
Pagos de albaranes realizados durante la jornada de trabajo ((impuestos incluidos)
desglosada por forma de pago. Para cada forma de pago se indica:
Amount
Importe cobrado.
TicketPayments
Pagos de proformas realizados durante la jornada de trabajo ((impuestos incluidos)
desglosada por forma de pago. Para cada forma de pago se indica:
MethodName
Nombre de la forma de pago.
Amount
Importe cobrado.
Pedidos a Proveedor
Los pedidos a proveedor se indican dentro del elemento PurchaseOrders en sucesivos
elementos PurchaseOrder:
XML:
<Lines>
<Line
Index="0"
ProductId="1"
ProductName="Coca Cola"
PurchaseUnitId="1"
PurchaseUnitName="Uno"
FamilyId="1"
FamilyName="Refrescos"
VatId="3" VatRate="0.10" SurchargeRate="0.014"
OrderedQuantity="10.00" DeliveredQuantity="0.00"
Price="1.00" DiscountRate="0.01" CashDiscount="1.00"
TotalAmount="8.90">
<Notes><![CDATA[Servir en cajas nuevas]]>
</Line>
</Lines>
<Notes><![CDATA[Mis notas]]><Notes>
</PurchaseOrder>
</PurchaseOrders>
JSON:
Serie
Serie de pedido.
Number
Número de pedido.
Date
Fecha del pedido en formato aaaa-mm-dd.
SupplierDocumentNumber
Número del pedido del proveedor.
Status
Estado del pedido. Puede ser:
Draft
El pedido está en borrador.
Confirmed
El pedido ha sido confirmado para enviar al proveedor (por ejempo, porque
ha sido cancelado).
PartialDelivery
El pedido ha sido servido parcialmente desde algún albarán.
Warehouse
Datos del almacén, incluyendo:
Id
Identificador único del cliente.
Name
Nombre del almacén.
Street
Calle del almacén.
City
Ciudad del almacén.
Region
Provincia del almacén
ZipCode
Código postal del almacén.
Cif
Cif asociado al almacén.
FiscalName
Nommbre fiscal asociado al almacén.
Proveedor
Datos del proveedor, incluyendo:
Id
Identificador único del proveedor.
FiscalName
Nombre fiscal del proveedor.
Cif
CIF/NIF del proveedor.
Street
Calle del almacén.
City
Ciudad del almacén.
Region
Provincia del almacén
ZipCode
Código postal del almacén.
ApplySurcharge
Si al proveedor se compra con recargo de equivalencia.
Lines
Líneas del documento, cada una de ellas en un elemento Line con el siguiente
formato:
Index
Índice de la línea dentro del documento. Las líneas se empiezan a numerar en
0.
ProductId
Identificador del producto principal de la línea.
ProductName
Nombre del producto principal de la línea.
PurchaseUnitId
Identificador único de la unidad de compra.
PurchaseUnitName
Nombre de la unidad de compra.
FamilyId
Identificador único de la familia asociada al producto de la línea, o cadena
vacía si este no tuviera asociada ninguna familia.
FamilyName
Nombre de la familia asociada al producto de la línea, o cadena vacía si este
no tuviera asociada ninguna familia.
OrderedQuantity
Cantidad pedida.
DeliveredQuantity
Cantidad servida.
VatId
Identificador único del impuesto asociado al producto de la línea.
VatRate
Tanto por uno de impuesto asociado al producto de la línea. Por ejemplo, si el
porcentaje de impuesto es 21%, este valor será 0.21.
SurchargeRate
Tanto por uno de recargo de equivalencia asociado al producto de la línea. Por
ejemplo, si el porcentaje de recargo es 4%, este valor será 0.04.
Price
Precio unitario de la unidad comprada.
CashDiscount
Descuento en moneda aplicado a la línea.
TotalAmount
Importe total de la línea tras aplicar descuentos.
Notes
Notas a nivel de línea de pedido.
Notas
Notas del pedido.
Discounts
Descuentos del documento
DiscountRate
Tanto por uno de descuento aplicado al documento. Por ejemplo, si el
porcentaje de descuento es 10%, este valor será 0.1.
CashDiscount
Descuento en moneda aplicado al documento.
Totals
Contiene el detalle de los descuentos en pie del documento y de los totales,
desglosándolos por base imponible. La información incluida para cada uno es:
GrossAmount
Importe incluyendo los impuestos.
NetAmount
Importe tras descontar los impuestos.
VatAmount
Cuota correspondiente al impuesto.
SurchageAmount
Cuota correspondiente al recargo de equivalencia.
Albaranes de Entrada
Los albaranes de entrada se indican dentro del elemento IncomingDeliveryNotes en sucesivos
elementos IncomingDeliveryNote:
XML:
<Lines>
<Line
Index="0"
ProductId="1"
ProductName="Fanta"
PurchaseUnitId="1"
PurchaseUnitName="Uno"
FamilyId="1"
FamilyName="Refrescos"
VatId="3" VatRate="0.10" SurchargeRate="0.014"
Quantity="10.00"
Price="1.00" DiscountRate="0.01" CashDiscount="1.00"
TotalAmount="8.90">
<Notes><![CDATA[Servir en cajas amarillas]]><Notes>
</Line>
<Line
Index="1"
ProductId="2"
ProductName="Coca Cola"
PurchaseUnitId="1"
PurchaseUnitName="Uno"
VatId="3" VatRate="0.10" SurchargeRate="0.014"
Quantity="10.00"
Price="1.00" DiscountRate="1.00" CashDiscount="1.00"
TotalAmount="-1.00">
<DeliveredOrder Serie="PO" Number="1"
LineIndex="0"/>
</Line>
</Lines>
<Notes><![CDATA[Mis notas]]><Notes>
</IncomingDeliveryNote>
</IncomingDeliveryNotes>
JSON:
"IncomingDeliveryNotes": [
{
"Serie": "IDN",
"Number": 1,
"Warehouse": {
"Id": 1,
"Name": "Almacén Global",
"Street": "Calle del Almacén, 9",
"City": "Madrid",
"Region": "Madrid",
"ZipCode": "28099",
"Cif": "",
"FiscalName": ""
},
"Supplier": {
"Id": 1,
"FiscalName": "Casbega",
"Cif": "AASDFGH",
"Street": "",
"City": "",
"Region": "",
"ZipCode": "",
"ApplySurcharge": false
},
"SupplierDocumentNumber": "AP1234",
"Date": "2018-12-19",
"Lines": [
{
"Index": 0,
"ProductId": 2,
"ProductName": "Coca Cola",
"PurchaseUnitId": 1,
"PurchaseUnitName": "Uno",
"FamilyId": 1,
"FamilyName": "Refrescos",
"VatId": 3,
"VatRate": 0.1000,
"SurchargeRate": 0.0140,
"Quantity": 10.000,
"Price": 1.00000000,
"DiscountRate": 0.1000,
"CashDiscount": 0.00000000,
"TotalAmount": 9.00000000,
"Notes": "Es fanta de limón"
}
],
"Discounts": {
"DiscountRate": 0.0000,
"CashDiscount": 0.000
Serie
Serie del albarán de entrada.
Number
Número del albarán de entrada.
Date
Fecha del albarán de entrada en formato aaaa-mm-dd.
SupplierDocumentNumber
Número del documento del albarán de entrada del proveedor.
Invoiced
Si el pedido tiene ha sido facturado o no.
Warehouse
Datos del almacén, incluyendo:
Id
Identificador único del cliente.
Name
Nombre del almacén.
Street
Calle del almacén.
Region
Provincia del almacén
ZipCode
Código postal del almacén.
Cif
Cif asociado al almacén.
FiscalName
Nommbre fiscal asociado al almacén.
Proveedor
Datos del proveedor, incluyendo:
Id
Identificador único del proveedor.
FiscalName
Nombre fiscal del proveedor.
Cif
CIF/NIF del proveedor.
Street
Calle del almacén.
City
Ciudad del almacén.
Region
Provincia del almacén
ZipCode
Código postal del almacén.
Cif
Cif asociado al almacén.
ApplySurcharge
Si al proveedor se compra con recargo de equivalencia.
Lines
Líneas del documento, cada una de ellas en un elemento Line con el siguiente
formato:
Index
Índice de la línea dentro del documento. Las líneas se empiezan a numerar en
0.
ProductId
Identificador del producto principal de la línea.
PurchaseUnitId
Identificador único de la unidad de compra.
PurchaseUnitName
Nombre de la unidad de compra.
FamilyId
Identificador único de la familia asociada al producto de la línea, o cadena
vacía si este no tuviera asociada ninguna familia.
FamilyName
Nombre de la familia asociada al producto de la línea, o cadena vacía si este
no tuviera asociada ninguna familia.
Quantity
Cantidad del producto entregada.
VatId
Identificador único del impuesto asociado al producto de la línea.
VatRate
Tanto por uno de impuesto asociado al producto de la línea. Por ejemplo, si el
porcentaje de impuesto es 21%, este valor será 0.21.
SurchargeRate
Tanto por uno de recargo de equivalencia asociado al producto de la línea. Por
ejemplo, si el porcentaje de recargo es 4%, este valor será 0.04.
Price
Precio unitario de la unidad comprada.
DiscountRate
Tanto por uno de descuento aplicado a la línea. Por ejemplo, si el porcentaje
de descuento es 10%, este valor será 0.1.
CashDiscount
Descuento en moneda aplicado a la línea.
TotalAmount
Importe total de la línea tras aplicar descuentos.
Notes
Notas a nivel de línea de pedido.
DeliveredOrder
Referencia de la línea del pedido que sirve.
Serie
Serie del pedido
Number
Número del pedido.
Notas
Notas del pedido.
Discounts
Descuentos del documento
DiscountRate
Tanto por uno de descuento aplicado al documento. Por ejemplo, si el
porcentaje de descuento es 10%, este valor será 0.1.
CashDiscount
Descuento en moneda aplicado al documento.
Totals
Contiene el detalle de los descuentos en pie del documento y de los totales,
desglosándolos por base imponible. La información incluida para cada uno es:
GrossAmount
Importe incluyendo los impuestos.
NetAmount
Importe tras descontar los impuestos.
VatAmount
Cuota correspondiente al impuesto.
SurchageAmount
Cuota correspondiente al recargo de equivalencia.
Facturas de Proveedor
Las facturas de proveedor se indican dentro del elemento PurchaseInvoices en sucesivos
elementos PurchaseInvoice:
XML:
<IncomingDeliveryNotes>
<IncomingDeliveryNote Serie="IDN" Number="1"
SupplierDocumentNumber="A4422" Date="2010-10-10"
Invoiced="false">
<Warehouse Id="1" Name="Almacén Global"
Street="Calle del Almacén, 9" City="Madrid" Regi
ZipCode="28099" Cif="" FiscalName="">
<Supplier Id="2" FiscalName="Arcoiris" Cif="B0018912"
Street="C/ García de Paredes, 10"
City="Madrid" Region="Madrid" ZipCode="28010"
ApplySurcharge="false"
AccountCode="43100001"/>
<Lines>
<Line
Index="0"
ProductId="1"
ProductName="Fanta"
PurchaseUnitId="1"
PurchaseUnitName="Uno"
FamilyId="1"
FamilyName="Refrescos"
VatId="3" VatRate="0.10" SurchargeRate
Quantity="10.00"
Price="1.00" DiscountRate="0.10" CashD
TotalAmount="9.00">
<Notes><![CDATA[Servir en cajas amarilla
</Line>
</Lines>
<Notes><![CDATA[Mis notas]]><Notes>
</IncomingDeliveryNote>
</IncomingDeliveryNotes>
</PurchaseInvoice>
</PurchaseInvoices>
JSON:
Serie
Serie de la factura.
Number
Número de factura.
Date
Fecha de la factura en formato aaaa-mm-dd.
SupplierDocumentNumber
Número de la factura del proveedor.
Accounted
Si la factura ha sido procesada y contabilizada. Una factura contabilizada no se puede
borrar ni modioficar
Proveedor
Datos del proveedor, incluyendo:
Id
Identificador único del proveedor.
FiscalName
Nombre fiscal del proveedor.
Cif
CIF/NIF del proveedor.
Street
Calle del almacén.
City
Ciudad del almacén.
Region
Provincia del almacén
Cif
Cif asociado al almacén.
ApplySurcharge
Si al proveedor se compra con recargo de equivalencia.
IncomingDeliveryNotes
Albaranes de entrada que incluye la factura. Los datos que incluye cada albarán se
pueden consultar en el apartado de exportación de alabaranes de entrada.
Totals
Contiene el detalle de los descuentos en pie del documento y de los totales,
desglosándolos por base imponible. La información incluida para cada uno es:
GrossAmount
Importe incluyendo los impuestos.
NetAmount
Importe tras descontar los impuestos.
VatAmount
Cuota correspondiente al impuesto.
SurchageAmount
Cuota correspondiente al recargo de equivalencia.
Payments
Lista con los pagos asociados a la factura. Cada pago incluirá la siguiente información:
MethodId
Identificador de la forma de pago.
MethodName
Nombre de la forma de pago.
Amount
Cantidad pagada
Date
Fecha en la que se ha realizado el pago.
Resumen de Locales
Es posible exportar una información resumida de la estructura de locales generadas para
obtener información de los grupos de puntos de venta asociados a cada local, los puntos de
venta existentes en cada grupo, y los almacenes asociados a algún grupo de puntos de venta
del local. Para ello deberá utilizar el parámetro workplacessummary al invocar los servicios de
integración.
XML:
JSON:
Id
Id del local.
Name
Nombre del local.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de querer
eliminar el registros. Si se incluye este atributo con un valor de fecha y hora válido, se
considerará que el registro ha sido dado de baja. El formato de fechas soportado es
aaaa-mm-ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
PosGroups
Contiene los grupos de puntos de venta asociados al local. Para cada uno se indica:
Id
Id del grupo de puntos de venta.
Name
Nombre del grupo de puntos de venta.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de
querer eliminar el registros. Si se incluye este atributo con un valor de fecha y
hora válido, se considerará que el registro ha sido dado de baja. El formato de
fechas soportado es aaaa-mm-ddThh:mm:ss, por ejemplo
2012-01-31T10:59:20.
Id
Id del punto de venta.
Name
Nombre del punto de venta.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en
caso de querer eliminar el registros. Si se incluye este atributo con
un valor de fecha y hora válido, se considerará que el registro ha
sido dado de baja. El formato de fechas soportado es aaaa-mm-
ddThh:mm:ss, por ejemplo 2012-01-31T10:59:20.
Warehouses
Almacenes asociados a alguno de los grupos de puntos de venta del local. Para cada
uno se indica:
Id
Id del almacén.
Name
Nombre del almacén.
DeletionDate
Fecha de borrado del registro. Sólo se debe incluir este atributo en caso de
querer eliminar el registros. Si se incluye este atributo con un valor de fecha y
hora válido, se considerará que el registro ha sido dado de baja. El formato de
fechas soportado es aaaa-mm-ddThh:mm:ss, por ejemplo
2012-01-31T10:59:20.
Stocks
Es posible exportar el stock de cada producto en cada almacén utilizando el parámetro stocks
al invocar los servicios de integración.
El stock no se puede importar en Ágora a través de servicios de integración. Esto es así porque
no es posible garantizar que no haya habido movimientos de stock entre el momento en que se
generó el fichero xml con la información de stock, y el momento de la importación en Ágora, por
lo que se podrían producir errores difíciles de detectar y resolver.
Los datos de stock se indican dentro del elemento Stocks en sucesivos elementos Stock:
XML:
</Stocks>
JSON:
{
"Stocks": [
{
"WarehouseId": 1,
"ProductId": 2,
"Quantity": 5.000
},
{
"WarehouseId": 1,
"ProductId": 3,
"Quantity": 9.000
}
]
}
WarehouseId
Id del almacén.
ProductId
Id del producto.
Quantity
Cantidad en unidades de venta disponible actualmente en stock.
El fichero incluirá el stock de todos los productos que controlan stock (excepto los que tienen
escandallo) para todos los almacenes. En los casos en que no haya stock, se indicará el valor 0.
Ágora también soporta la importación y exportación de datos mediante una API HTTP. Para ello,
deberá activar la opción correspondiente al configurar el módulo de servicios de integración. Al
activar el API HTTP deberá indicar un token de autenticación, que tendrá que ser enviado junto
con cada petición que quiera enviar u obtener datos del API.
El servidor HTTP utilizado será el mismo que el de la Administración de Ágora. Todas las URLs
que aparecen en este manual son relativas a la URL base de la administración, por defecto,
http://SERVIDOR:8984/.
El API soporta los mismos tipos de exportación e importación que la aplicación de línea de
comandos ais.exe por lo que puede usarla para exportar e importar datos maestros de Ágora,
así como exportar e importar datos de ventas.
A diferencia de la integración mediante ficheros, el API soporta tanto XML como JSON. El
formato es el descrito en las secciones correspondientes de este manual.
Api-Token
Valor de la clave (token de autenticación) que se haya configurado en Ágora desde la
pantalla de Activar Módulos Adicionales. Ejemplo:
▪ Api-Token: gtSUwbHbxwg3hRXhZ01Kictq
Accept
Formato de serialización empleado. Por defecto se usará JSON si está cabecera no está
presente. Los valores soportados son:
Accept-Encoding (opcional)
Permite habilitar la compresión de datos en la respuesta para reducir el tráfico de red a
costa de incrementar el tiempo de proceso en el servidor. Para habilitar la compresión
es necesario añadir esta cabecera con el valor:
▪ Accept-Encoding: gzip
El código de estado de la respuesta será 200 OK en caso de que la petición se ha procesado con
éxito, o un código de error en caso contrario. Si se trata de una solicitud de exportación de
datos, el cuerpo de la respuesta contendrá los datos exportados en el formato indicado.
Además, se incluiría una cabecerá Api-Version con la versión de Ágora que ha generado la
respuesta para permitir que los sistemas externos puedan amoldarse a cambios de versiones.
/api/export/
Deberá lanzar una petición GET a esta URL. Opcionalmente se pueden incluir los siguientes
parámetros:
business-day
Indica la fecha de negocio en formato aaaa-mm-dd para los documentos de venta o
documentos de compra para la cual se desean obtener los datos. Si no se especifica se
exportarán las ventas y compras de hoy.
▪ /api/export/?business-day=2013-05-21
filter
Permite restringir el tipo de datos exportado. Si no se establece se exportan todos los
datos disponibles, pero puede indicar los tipos de datos que desee exportar separados
por comas:
▪ DeliveryNotes: alabaranes
▪ SalesOrders: pedidos
▪ Invoices: facturas
▪ /api/export/?filter=Invoices
O si necesita conocer los pedidos y albaranes de un día concreto:
▪ /api/export/?business-
day=2018-04-28&filter=SalesOrders,DeliveryNotes
workplaces
Permite limitar la exportación a los locales con los ids indicados. Si no se establece se
exportan datos para todos los locales, pero puede indicar los locales para los cuales
quiere exportar datos pasando sus ids separados por comas:
▪ /api/export/?workplaces=2,3,5,7
/api/export-master/
Deberá lanzar una petición GET a esta URL. Opcionalmente se pueden incluir los siguientes
parámetros:
filter
Permite restringir el tipo de datos a exportar, separándolos por comas. Si no se indica
este parámetro, se exportará toda la información. Los posibles valores son:
▪ Series: series
▪ Customers: clientes
▪ Users: usuarios
▪ PriceLists: tarifas
▪ Families: familias
▪ Products: productos
▪ Menus: menús
▪ Offers: promociones
▪ Suppliers: proveedores
▪ Warehouses: almacenes
▪ /api/export-master/?filter=Series,Customers,Families
where-product-category-id
Permite limitar la exportación de los datos de productos y stocks a los productos que
tienen asignada la categoría indicada. Este parámetro será ignorado a la hora de
exportar el resto de información. Si no se establece se exportarán datos de todas las
categorías existentes. Para utilizarlo, deberá indicar el id de la categoría cuyos
productos quiere exportar:
▪ /api/export-master/?filter=Products&where-product-category-id=2
where-stock-warehouse-id
▪ /api/export-master/?filter=Stocks&where-stock-warehouse-id=14
Este parámetro puede usarse conjuntamente con el parámetro where-product-
category-id para acotar más exportación de datos de stock. Por ejemplo, para
obtener el stock de los productos de la categoría 17 en el almacén 14, se debe enviar
una petición a la URL:
▪ /api/export-master/?filter=Stocks&where-stock-warehouse-
id=14&where-product-category-id=17
/api/import/
El cuerpo de la petición deberá contener los datos a importar en el formato indicado en las
secciones correspondientes de este manual.
Recuerde que deberá establecer tanto la cabecera Accept para indicar el formato de
serialización que quiere emplear con el API y como la cabecera Content-Type para indicar la
codificación de los mismos.
Por ejemplo, para enviar datos en formato XML codificado como utf-8 deberá usar las siguientes
cabeceras:
Para enviar datos en formato json codificado como utf-8 deberá usar las siguientes cabeceras:
Api-Token: gtSUwbHbxwg3hRXhZ01Kictq
Accept: application/json
Content-Type: application/json; charset=utf-8
Impresión libre
Utilizando los servicios de integración a través del API HTTP es posible imprimir textos y
documentos usando las impresoras configuradas en el sistema. Esto puede ser útil para notificar
a los empleados del establecimiento de determinados eventos, por ejemplo que se acaba de
recibir un nuevo pedido, o que se ha activado una promoción.
/api/print/
{
"PrinterName": "tickets-pr80",
"Format": "plain",
"Data": "Primera línea de texto\nSegunda línea de texto\nTercera línea de texto"
}
Donde:
PrinterName
Es el nombre en Windows de la impresora por la que desea imprmir. Si no indica esta
propiedad, se usará la impresora configurada como predeterminada en Windows. Si
indica la propiedad, deberá ser un nombre de impresora válido.
Format
Formato en el que se están enviando lo datos. Puede ser plain, si la petición contiene
los datos en formato texto, o base64 si la petición contiene los datos en formato
binario codificado en base64. Si no indica esta propiedad, se asumirá que los datos
Data
Información que se enviará a la impresora. Ágora no realizará ningún proceso sobre
esta información, que será enviada directamente al driver de impresión.
/api/hub/generate-data/
Deberá lanzar una petición POST a esta URL. Opcionalmente se pueden incluir los siguientes
parámetros:
workplaces
Permite restringir los locales con los ids indicados a los cuales se enviarán los datos
desde la central, separándolos por comas. Si no se indica este parámetro, los datos se
enviarán a todos los locales. Por ejemplo, si quiere enviar datos a los locales con Id 1 y
3, se enviaría una peticion a la URL:
▪ /api/hub/generate-data/?workplaces=1,3
Donde:
url_agora_central
Es la dirección de internet de la central de la instalación.
api_token
El token configurado en el monitor de servicio de Ágora, especificado al activar el
módulo de Servicios de Integración y el API web.
Ágora se puede integrar con sistemas de fidelización a través de los servicios de integración
incluidos con Ágora. Para poder realizar la integración, es necesario primero conocer los
conceptos sobre los que se va a asentar:
▪ Que Ágora pueda identificar un participante del programa y conocer los premios que
tiene disponibles.
▪ Que Ágora pueda notificar al sistema de fidelización las consumiciones realizadas y los
premios redimidos por un participante cuando se le emite una factura.
▪ Evitar posibles problemas legales. Habrá sistemas de fidelización en los que el acuerdo
de cesión de datos se haya realizado entre el participante del programa y el sistema de
fidelización, pero no sea legal cederle esos datos al establecimiento.
▪ Dar libertad al programa de fidelización para definir sus participantes con la información
que quiera, sin necesidad de buscar un modelo que sea compatible con los requisitos de
Ágora para crear un cliente.
▪ Poder desligar el cliente de una factura del participante del programa de fidelización,
cubriendo así casos como que la factura se emita a una empresa pero los puntos los
acumule otra persona.
El único requisito que impone Ágora es que en el programa de fidelización los participantes
cuenten con un identificador único. El programa de fidelización podrá decidir si ese identificador
es una clave numérica, un código QR, un número de telefóno, un DNI, etc. Desde el punto de
vista de Ágora se tratará como un valor alfanumérico y se usará para acceder al sistema de
fidelización para validar el participante, obtener sus promociones o imputarle los consumos.
▪ Aumentar la seguridad del sistema. Al hacer obligatorio leer el identificador único del
cliente, si éste se encuentra en una tarjeta/app de fidelización, es más complicado
(aunque posible) para el empleado del comercio realizar operativas ilegales.
Premios
Los participantes del programa de fidelización pueden obtener distintos tipos de premio en base
a sus consumiciones previas o a los parámetros que decida el sistema de fidelización. Desde el
punto de vista de Ágora, cómo se consiguen esos premios es irrelevante.
Una vez que en Ágora se ha identificado a un participante del programa de fidelización se podrá
solicitar al sistema de fidelización los premios que tiene disponibles. Ágora mostrará al usuario
la lista de premios para que pueda seleccionar cuales desea redimir. Los premios no se
aplicarán automáticamente, únicamente se aplicarán aquellos que hayan sido seleccionados
manualmente por el usaurio. De esta forma el participante del programa de fidelización puede
decidir si desea redimir los premios acumulados o conservarlos para el futuro.
El sistema de fidelización no debe considerar el premio redimido hasta que reciba desde Ágora
la notificación de factura. Esto es necesario para cubrir escenarios en los que se asocia un
premio a un ticket de Ágora, pero luego el ticket no llega a facturarse por el motivo que sea.
Consumiciones
Cada vez que se emite una factura en Ágora se notificará al sistema de fidelización de ello,
indicando su importe, el contenido detallado, el participante del programa al que se imputar las
consumiciones y los posibles premios redimidos.
Hay algunas operativas en Ágora que pueden resultar complejas desde el punto de vista del
sistema de fidelización y la asignación del participante al documento. Se trata de las siguientes:
Protocolo de Integración
La integración entre Ágora y el sistema de fidelización se realizará a través de peticiones HTTP
realizadas desde Ágora. Cada petición se hará a una URL diferente configurable en Ágora, pero
deberá ajustarse al protocolo definido en este documento.
Dado que cada sistema de fidelización puede tener su propio esquema de autenticación y
autorización, no existirá ningún mecanismo explícito para autenticar Ágora frente a las URLs
proporcionadas. Es recomendable que todo el acceso se realice a través de SSL y, en caso de
considerarse necesario, se puede incluir un token de autorización como parte de la URL para
poder limitar el acceso de Ágora revocando el token si fuera necesario.
Todas las peticiones y respuestas serán en formato JSON codificado en utf8. Esto se reflejará en
las cabeceras HTTP de las peticiones y respuestas. Adicionalmente, en las peticiones realizadas
con Ágora se enviará una cabecera Agora-Version para indicar la versión de Ágora que está
generando la petición, por si el sistema de fidelización tuviera que tenerlo en cuenta (por
ejemplo, porque una versión antigua de Ágora no soportase nuevos formatos de premios).
Peticiones:
Accept: application/json
Agora-Version: 5.0.4
Respuestas:
https://api.loyalty-club.com/member/{member_id}/
Al leer el identificador de participante 3hRXhZ01Kictq Ágora lanzará una petición GET a la URL:
https://api.loyalty-club.com/member/3hRXhZ01Kictq/
Donde:
▪ Id: identificador único del premio. Este identificador será generado por el
sistema de fidelización y será enviado por Ágora al notificar una venta para que
pueda proceder a redimirlo.
Si no hay premios disponibles para redimir se deberá devolver un array vacío, pero el código de
respuesta deberá seguir siendo 200 OK.
https://api.loyalty-club.com/invoices/
Esta URL no incluye información del member_id asociado a la factura porque en el caso de
facturas de varios albaranes, cada albarán podría tener un member_id distinto.
"LoyaltyProgram": {
"MemberId": "3hRXhZ01Kictq",
"Rewards": [{
"Id": "7cnZDFPw",
"Name": "Descuento de 3€",
"Type": "CashDiscount",
"Value": 3.000000
}, {
"Id": "8xmssMkq",
"Name": "Descuento Cumpleaños",
"Type": "NamedDiscount",
"Code": "EMPT"
}]
}
MemberId
Identificador único del participante del sistema de fidelización.
Rewards
Contiene la lista de premios consumidos por el participante. Puede ser vacía si no se ha
redimido ningún premio. Cada premio incluye la siguiente información:
Id
Identificador único del premio.
Name
Nombre del premio.
Type
Tipo de premio. Puede ser:
CashDiscount
Descuento directo en moneda sobre total de factura. El valor del
descuento se indicará en la propiedad Value.
DiscountRate
Descuento directo en porcentaje expresado en tanto por uno sobre
total de factura (por ejemplo, un descuento del 25% se expresa
como 0.25). El valor del descuento se indicará en la propiedad
Value.
Offer
Promoción definida en Ágora. El código de promoción se indicará en
la propiedad Code.
El sistema de fidelización podrá decidir si acepta o rechaza la factura. En caso de que se rechace
la factura, Ágora no realizará el cierre de factura. Esto permite que el sistema de fidelización
tenga la última palabra sobre los premios redimidos. Si considera que hay algún problema en la
forma en que se han redimido los premios, puede notificárselo a Ágora y abortar la operación.
Tanto si se acepta la factura como si se rechaza, la respuesta deberá ser tener como estado 200
OK.
{
"Status": "accepted",
"PrinterText": "Has acumulado 20 puntos con tu compra.\n\nSALDO DISPONIBLE: 2.34€"
}
Donde:
Status
Deberá ser el literal accepted para indicar que la factura es aceptada.
PrinterText
Contendrá un texto libre que Ágora imprimirá al final de la factura. Puede ser vacío.
{
"Status": "rejected",
"RejectReason": "Se han redimido más premios de los permitidos este mes"
}
Donde:
Status
Deberá ser el literal rejected para indicar que la factura es rechazada.
Cualquier código de respuesta que esté en el rango 4xx Client Error o 5xx Server Error
será procesado como error por parte de Ágora y se impedirá el cierre de la factura.
Para realizar el envío Ágora tendrá configurado un timeout que evita que el sistema se cuelgue
indefinidamente en caso de que no haya respuesta del sistema de fidelización. En un escenario
de fallo, el usuario siempre podría desasociar el participante del programa de la factura de
Ágora y proceder a un cierre de factura normal, sin acumular puntos y sin redimir premios.
Ágora no puede garantizar que cada mensaje se entregue exactamente una vez porque podría
haber problemas de red al recibir la respuesta del servidor del sistema de fidelización. El
sistema de fidelización deberá mantener un control para detectar reenvíos y evitar duplicar la
acumulación de consumos o la redención de premios.