NAV Navbar
Ejemplo SQL

Introducción

Integra tu sistema contable o ERP con Facturación Electrónica. La aplicación Link de Dátil te permite emitir todos los tipos de comprobantes electrónicos: facturas, retenciones, notas de crédito, notas de débito y guías de remisión.

Link funciona como un servicio del sistema operativo, de esta manera se mantiene en ejecución permanente emitiendo comprobantes.

Link se conecta a la base de datos de tu ERP o sistema contable para obtener la información de los comprobantes mientras sigues usando tu sistema como siempre lo has hecho.

¿Cómo funciona?

Compatibilidad

Sistema Operativo

Link es compatible con los siguientes sistemas operativos:

Windows

Disponible para 32 y 64 bits

Para saber si la versión de su equipo es de 32 o 64 bits en Windows, sigue los pasos del siguiente enlace.

Linux (próximamente)

Bases de Datos

Link utiliza ODBC para interactuar con la base de datos, por lo que si el sistema de base de datos que utiliza tu sistema tiene un controlador ODBC Link debería funcionar sin problemas.

Consulta la documentación del driver ODBC que utilizas para construir la cadena de conexión (connection string). El sitio web www.connectionstrings.com también puede ser de utilidad. Este sitio tiene documentación sobre varios motores de base de datos y drivers ODBC.

Link ha sido probado y es utilizado en producción en estos motores de base de datos.

SQL Server

Sybase

ORACLE

MySQL

Descargas

Integra Dátil a tu sistema en minutos.

Más reciente (6.2.0)

Notas de la versión

6.2.0
Octubre 30, 2019

Nuevo

Soporte para Microsoft Access.

Versiones anteriores

6.1.0

Notas de la versión

6.1.0
Octubre 24, 2019

Nuevo

Soporte para poder liquidaciones de compra

Corregido

Corrige error de regresión en la tarea sync_company_resources

5.0.1

Notas de la versión

5.0.1
Enero 5, 2018

Corregido

La longitud máxima para el nombre de una columna en versiones de ORACLE menores a la 12 es de 30 caracteres. Por esto agregamos alias más cortos para parámetros que exceden esta longitud, como fecha_emision_documento_sustento -> fecha_emi_doc_sustento, numero_autorizacion_documento_sustento -> num_aut_doc_sustento

5.0.0

Notas de la versión

5.0.0
Enero 5, 2018

Nuevo

Soporte para ORACLE.
Personalización del formato de fecha utilizado como literal de fecha utilizando la nueva entrada de configuración datetime_format.

Removido

La tarea sync_resources fue removida completamente en favor de tarea más reciente resource_sync.

4.7.0

Notas de la versión

4.7.0
Octubre 19, 2017

Nuevo

Emisión de facturas de reembolso. Se agregaron tres nuevas entradas al archivo de configuración config/receipts/invoice.ini: invoice_reimbursement, invoice_reimbursement_document, invoice_reimbursement_document_tax

Instalación

Luego de descargar el instalador, empiece la instalación con doble click, siguiendo el flujo de ventanas que aparecerán en su pantalla.

Preparando el ambiente

Link utiliza dos tablas indispensables para su operación: Control y Mensaje. En la tabla de Control registra los documentos que debe procesar y el estado de cada uno de ellos. Puedes crear estas tablas en la misma base de datos de tu ERP o en una distinta.

Crea la tabla de control y mensaje:

CREATE TABLE Control (
    id_control bigint IDENTITY(1,1) NOT NULL PRIMARY KEY,
    tipo_comprobante int NOT NULL,
    id_local varchar(100) NOT NULL,
    numero_comprobante varchar(20) NOT NULL,
    estado varchar(13),
    numero_autorizacion varchar(100),
    fecha_autorizacion datetime,
    fecha_emision datetime,
    fecha_ingreso datetime,
    fecha_ultimo_envio datetime,
    clave_acceso varchar(50),
    id_externo varchar(40),
    company_name varchar(40),
    CONSTRAINT ix_tipo_idlocal UNIQUE (tipo_comprobante, id_local, numero_comprobante, company_name)
  )
CREATE TABLE
    Mensaje(
    id_control bigint,
    identificador varchar(2) NOT NULL,
    mensaje TEXT NOT NULL,
    tipo varchar(50) NOT NULL,
    fecha_creacion datetime NOT NULL,
    CONSTRAINT pk_comprobante_identificador PRIMARY KEY (id_control, identificador),
    CONSTRAINT fk_control_id FOREIGN KEY (id_control) REFERENCES Control(id_control)
    )

Configuración

Link utiliza archivos de configuración en formato .ini que contienen todos los parámetros que se pueden ajustar. Puesto que los archivos de configuración se encuentran en la carpeta de C:\Archivos de Progama\Datil\Link\config para editarlos debes abrir siempre tu editor con permisos de administrador.

Los archivos INI están compuestos por secciones y cada sección puede tener varias claves y valores.

Base de datos

Cómo lo describimos en la sección de Introducción Link utiliza una tabla de control para mantener un registro de los documentos que ya ha procesado. Este registro contiene información como el estado, la fecha de registro en la tabla de control, la fecha y el número de autorización y el ID (id_externo) del documento en Datil.

En el archivo environment.ini va la configuración de la conexión a la base donde se encuentran las tablas de control y mensaje. En el archivo companies/my company.ini debes configurar la conexión a la base de datos donde están las tablas/vistas desde las que Link extraerá la información de los documentos.

Esta separación permite a Link funcionar en estos escenarios: - Emitir documentos de más de una compañía en un sistema ERP que almacena los documentos de cada compañía en una base de datos diferente. - Mantener la base de datos en la que puede escribir Link completamente aislada de la base de datos de la que sólo puede leer Link.

A partir de la versión 6.0.0 existen dos maneras de especificar los parámetros de conexión a la base de datos:

Simplificada

Link tiene la capacidad de construir la cadena de conexión para los siguientes drivers ODBC: SQL Anywhere 11, Microsoft ODBC for Oracle, Oracle in OraClient11g_home1, Microsoft ODBC Driver for Oracle y SQL Server. Si utilizas alguno de estos drivers debes especificar los siguientes parámetros:

Parámetros  
driver Controlador cuando se establece una conexión por ODBC.
server Dirección o nombre del servidor
name Nombre de la base de datos
user Nombre de usuario.
password Contraseña del usuario de la base de datos
version

requerido

Versión del motor de base de datos que se utiliza para constriur SQL dependiendo de la versión
connection_string Permite especificar la cadena de conexión ODBC para conectarse a la base. Si especificas este parámetro todos los otros parámetros de conexión como driver, server, name, user y password serán ignorados. Debes especificar este parámetro o el conjunto de parámetros driver, server, name, user, password.
api

requerido

Puede ser odbc o adodb
data_source

requerido

Utilizado para conexiones tipo adodb
provider

requerido

Utilizado para conexiones tipo adodb
datetime_format Formato de la representación literal de un SQL_TIMESTAMP. Por ejemplo en SQL Server el literal de un DATETIME es %Y-%m-%d %H:%M:%S

Cadena de conexión (connection string) explícita

La nueva manera a partir de la versión 6.0.0 de conexión sólo requiere que se especifique el parámetro connection_string. Así es posible utilizar cualquier motor de base de datos o controlador no soportado por la manera simplificada de conexión.

Esta es la manera de conexión recomendada a partir de la versión 6.0.0 de Link.

Ejemplos

Ejemplos de configuración para sistemas de base de datos más comunes

SQL Server
driver = SQL Server
server = ADMIN\SQLEXPRESS.
name = DATIL
user = link
password = Link007
version = 2012
api = odbc
datasource = None
provider   = None
Oracle
[DatabaseSource]
driver = Microsoft ODBC for Oracle
server = mydbserver
name =
user = link
password = datil
version = 10
api = odbc
data_source = None
provider = None
datetime_format = %Y-%m-%d %H:%M:%S.%f'
MySQL
[DatabaseSource]
connection_string = DRIVER={MySQL ODBC 8.0 ANSI Driver};SERVER=localhost;DATABASE=datil;USER=link;PASSWORD=Link007;OPTION=3
driver =
server =
name =
user =
password =
version = 8.0
api = odbc
data_source = None
provider = None

Consulta la documentación del driver ODBC que utilizas, o busca en la sitio web www.connectionstrings.com la documentación del motor de base de datos que utilizas.

environment.ini

Parámetros generales del ambiente. Contiene las siguientes secciones.

[DatabaseSource]

Revisa la sección de configuración de base de datos para más información

[Scheduler]

Las tareas de emisión, consulta y sincronización se ejecutan al iniciar el servicio y luego esperan el tiempo establecido por estos parámetros antes de volver a ejecutarse. Todos estos valores se especifican en segundos.

Parámetros  
issue_receipts_interval

requerido

Intervalo para la tarea de emisión de documentos.
read_receipts_interval

requerido

Intervalo para la tarea de consulta de estado de documentos.
issue_receipts_from_xml_interval

requerido

Intervalo para la tarea de emisión por xml.
send_status_interval

requerido

Intervalo para la tarea de reporte de estado (aun no utilizada)
sync_resources_interval

requerido

Intervalo para la tarea de sincronización de recursos.

[Constraints]

Restricciones para la consulta de documentos.

Parámetros  
issue_limit

requerido

Número máximo de documentos que la tarea de emisión de documentos toma cada vez que se ejecuta. Existe un problema conocido en bases de datos ORACLE que impide establecer este parámetro en un valor diferente a uno.
issue_order

requerido

Determina el ordenamiento de los documentos consultados para emitir. Puede ser ASC o DESC
get_info_limit

requerido

Número máximo de documentos que la tarea de consulta de estado de documentos toma cada vez que se ejecuta.
get_info_order

requerido

Determina el ordenamiento de los documentos consultados para obtener su estado. Puede ser ASC o DESC
first_receipt_date

requerido

Establece la fecha a partir de la cual necesitas emitir documentos. La fecha debe tener el formato YYYY-mm-dd hh:MM:SS ejemplo: 2002-09-12 13:40:00 para el 12 de septiembre del año 2002 a las trece horas con cuarenta minutos y cero segundos.
max_days_to_query

requerido

El número máximo de días previos a consultar a partir de la fecha actual. Normalmente se configura con 30 puesto que es el límite de fecha de emisión establecido por el SRI para emitir un documento electrónico.
new_receipts_limit

requerido

Número máximo de documentos que la tarea de control inserta a la tabla de Control cada vez que se ejecuta.

companies/my_company.ini

No es necesario, pero te recomendamos renombrar este archivo con un nombre corto de tu empresa, sobretodo si vas a utilizar una instalación de Link para varias empresas. Link utiliza el nombre de este archivo para garantizar que los registros en la tabla de control sean únicos para cada compañía, esto es lo que verás en el campo company_name una vez que Link empiece a funcionar e inserte registros en la tabla de control. Utiliza sólo letras, números, guiones o sub-guiones para el nombre del archivo. Ejemplo: acme_inc

[General]

En la sección [General] configura el parámetro ruc con el ruc de la empresa.

[Api]

En la sección [Api] configura el parámetro xkey con el API key de Dátil y xpassword con la clave del certificado de firma electrónica, environment con el valor 1 para emisión en modo de pruebas o 2 para emitir en producción.

[IssueFromDatabase]

Los parámetros de esta sección te permiten encender o apagar la tarea de emisión desde la base de datos para cada tipo de comprobante para esta compañía. Los posibles valores para estos parámetros son yes o no. El valor yes le indica a Link que debe encender la tarea y no que debe apagarla.

[IssueFromXml]

Estos parámetros permiten encender o apagar la tarea de emisión por xml.

[Read]

Estos parámetros permiten encender o apagar la tarea de consulta de autorización.

[DatabaseSource]

Revisa la sección de configuración de base de datos para más información.

[XmlSource]

Configuración de las rutas de los directorios donde se encuentran los archivos XML. Esto aplica para la emisión por XML.

Sincronización y Eventos

Link tiene la habilidad de suscribirse a eventos emitidos por Datil y ejecutar sentencias SQL y descargar archivos. Cualquier atributo del evento que contenga la dirección a un recurso (URI) válido puede ser descargado y almacenado en un directorio del sistema.

El nombre de la sección para cada configuración es el nombre del evento, de esta manera podrás tener configuraciones diferentes para cada evento.

Estos son los parámetros de configuración para cada evento:

Parámetros  
download_files

requerido

Activa o inactiva el proceso de descarga de archivos. Puede ser yes o no
update_tables

requerido

Activa o inactiva el proceso de ejecución de SQL. Puede ser yes o no
formats_to_download

requerido

Especifica este valor si download_files está activo. Puede ser una lista de valores separados por coma o la palabra reservada all. Si utilizas la palabra all intentará descargar los archivos detallados en este mismo parámetro en la sección [Sync] del archivo environment.ini
download_path Ruta del directorio donde se descargará los archivos. Requerido si download_files está activo.
download_path_[ATRIBUTO] Ruta del directorio donde se descargarán los archivos para el atributo "ATRIBUTO". Puedes personalizar esta ruta utilizando condicionales, lazos, macros, bloques, variables, etiquetas disponibles en Jinja2.
update_tables_sentences Sentencias SQL a ejecutar cuando el evento sea recibido. Puedes personalizar este SQL utilizando condicionales, lazos, macros, bloques, variables disponibles en Jinja2. Requerido si update_tables está activo.

Ejemplo de descarga en un solo directorio

[invoice.received]
download_files = yes
update_tables = yes
formats_to_download = printable_version_url, electronic_document_url
download_path = C:/Documentos Recibidos/
update_tables_sentences = UPDATE factura
  SET numero_autorizacion = '{{ authorization.number }}'
  WHERE numero = '{{ number }}'

De esta manera podrías, por ejemplo, actualizar información en una tabla de tu base de datos y descargar el PDF (printable_version_url) y el documento electrónico XML (electronic_document_url) cada vez que en tu cuenta Dátil recibas una factura de compra (invoice.received). La configuración luciría así:

Ejemplo de descarga con un directorio diferente para cada archivo

[invoice.received]
download_files = yes
update_tables = yes
formats_to_download = printable_version_url, electronic_document_url
download_path_printable_version_url = C:/Documentos Recibidos/{{ issue_date_date.year }}/{{ issue_date_month_name }}/pdf/
download_path_electronic_document_url = C:/Documentos Recibidos/{{ issue_date_date.year }}/{{ issue_date_month_name }}/xml/
update_tables_sentences = UPDATE factura
  SET numero_autorizacion = '{{ authorization.number }}'
  WHERE numero = '{{ number }}'

Si quisieras almacenar los archivos en directorios separados podrías configurar el evento de esta manera.

Ejecutar el servicio

En el menú Inicio buscar el Simbolo del Sistema , darle click derecho y escoger la opción Ejecutar como administrador.

Luego para iniciar el servicio ejecutar el comando:

net start datilink

Enter.

Si desea detener el servicio, ejecutar:

net stop datilink

Queries

Tablas o Vistas

Para que la aplicación Link se conecte a su ERP o sistema contable se deben configurar los queries para extraer información directamente de las tablas de su base de datos.

Si no desea que Link consulte directamente sus tablas puede crear vistas con la información de los comprobantes a emitir.

Formato

Los queries se guardan siguiendo el formato de archivos .ini. en el directorio C:/Archivos de Programa/Datil/Link/config/.

En cada archivo .ini cada query está asignado a una variable.

Si aún no ha instalado Link, puede crear un archivo .ini de respaldo con los queries configurados.

Ver ejemplos de archivos de configuración

Nombres de tablas y columnas

Sea directamente o por medio de vistas, dependiendo de su sistema, deberá cambiar los nombres de las tablas al configurar los queries.

Los nombres de las columnas en las tablas de su sistema pueden ser distintos pero el resultado de cada query debe tener los nombres establecidos en esta documentación.

Queries opcionales

Algunos queries son opcionales porque la información que extraen no es obligatoria para el SRI, en este caso la variable que se configura en el archivo .ini debe tener asignada el valor de None.

Ejemplo:

invoice_additional_information = None

item_details = None

Facturas

Los queries para la emisión electrónica de facturas se guardan en el archivo de configuración invoice.ini.

Ejemplo de archivo invoice.ini

Cabecera

Obtiene información de la cabecera de la factura.

headers = SELECT
  id_factura            id_local,
  secuencial,
  fecha_emision,
  guia_remision,
  moneda,
  clave_acceso,
  tipo_emision
  FROM
  DocElectronicoFactura.cabecera
  WHERE
  info.id_factura in (:sequence)
  ORDER BY id_factura :order
Campo Tipo Descripción
id_local int o string Identifica de manera única la factura. Requerido
secuencial string Número de secuencia de la factura. Requerido
fecha_emision datetime Fecha de emisión Requerido
guia_remision string Número de guía de remisión asociada a esta factura en formato 001-002-000000003 ([0-9]{3}-[0-9]{3}-[0-9]{9})
moneda string Código ISO de la moneda. Requerido
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido

Emisor

Obtiene información del vendedor en la factura

invoice_seller  = SELECT
  ruc,
  obligado_contabilidad,
  contribuyente_especial,
  nombre_comercial,
  razon_social,
  direccion_establecimiento,
  direccion_emisor,
  codigo,
  punto_emision
  FROM
  DocElectronicoFactura.cabecera
  WHERE
  id_factura = ?
Campo Tipo Descripción
ruc string Número de RUC de 13 caracteres. Requerido
obligado_contabilidad string 'SI' si está obligado a llevar contabilidad. 'NO' si no lo está.
contribuyente_especial string Número de resolución. En blanco '' si no es contribuyente especial.
nombre_comercial string Nombre comercial. Máximo 300 caracteres Requerido
razon_social string Razón social. Máximo 300 caracteres Requerido
direccion_establecimiento string Dirección registrada en el SRI. Máximo 300 caracteres. Requerido
direccion_emisor string Dirección del punto de emisión. Máximo 300 caracteres. Requerido
codigo string Código numérico de 3 caracteres que representa al establecimiento. Ejemplo: 001 Requerido
punto_emision string Código numérico de 3 caracteres que representa al punto de emisión, o punto de venta. Ejemplo: 001. Requerido

Comprador

Obtiene información del comprador en la factura

invoice_buyer  = SELECT
  identificacion,
  tipo_identificacion,
  razon_social,
  direccion,
  email,
  telefono
  FROM
  FROM
  DocElectronicoFactura.cabecera
  WHERE
  id_factura = ?
Campo Tipo Descripción
razon_social string Razón social. Máximo 300 caracteres. Requerido
identificacion string De 5 a 20 caracteres. Requerido
tipo_identificacion string Ver tabla de tipos de identificación Requerido
email string Correo electrónico. Máximo 300 caracteres. Requerido
telefono string Teléfono
direccion string Dirección

Totales

Obtiene información de los valores totales de la facturas

invoice_totals  = SELECT
  total_sin_impuestos,
  importe_total,
  propina,
  descuento
  FROM
  DocElectronicoFactura.cabecera
  WHERE
  id_factura = ?
Campo Tipo Descripción
total_sin_impuestos float Total antes de los impuestos. Requerido
importe_total float Total incluyendo impuestos. Requerido
propina float Propina total, llamado también servicio. Requerido
descuento float Suma de los descuentos de cada ítem y del descuento adicional. Requerido

Impuestos de totales

Obtiene información de los impuestos de los totales de la factura

invoice_totals_taxes  = SELECT
  codigo,
  codigo_porcentaje,
  base_imponible,
  valor
  FROM
  DocElectronicoFactura.totales_impuestos
  WHERE
  id_factura = ?
Campo Tipo Descripción
codigo string Código del tipo de impuesto Requerido
codigo_porcentaje string Código del porcentaje. Requerido
base_imponible float Base imponible. Requerido
valor float Valor del total. Requerido

Items

Obtiene todos los items de una factura

items  = SELECT
  id_detalle,
  codigo_principal,
  codigo_auxiliar,
  descripcion,
  cantidad,
  precio_unitario,
  descuento,
  precio_total_sin_impuestos,
  unidad_medida
  FROM
  DocElectronicoFactura.items
  WHERE
  id_factura = ?
Campo Tipo Descripción
id_detalle string Identifica de manera única el ítem o detalle de la factura. Si no hay un solo campo que lo identifique de manera única se debe usar la concatenación de varios.Requerido
codigo_principal string Código alfanumérico de uso del comercio. Máximo 25 caracteres. Requerido
codigo_auxiliar string Código alfanumérico de uso del comercio. Máximo 25 caracteres.
descripcion string Descripción del ítem. Requerido
cantidad float Cantidad de items. Requerido
precio_unitario float Precio unitario. Requerido
descuento float El descuento es aplicado por cada producto. Requerido
precio_total_sin_impuestos float Precio antes de los impuestos. Se obtiene multiplicando la cantidad por el precio_unitario Requerido
unidad_medida string Unidad de medida. Ejemplo: Kilos. Requerido para facturas de exportación

Impuestos de items

Obtiene los impuestos de un item. Este query es opcional

item_taxes  = SELECT
  base_imponible,
  valor,
  tarifa,
  codigo,
  codigo_porcentaje
  FROM
  DocElectronicoFactura.items_impuestos
  WHERE
  id_detalle = ?
Campo Tipo Descripción
base_imponible float Base imponible. Requerido
valor float Valor del total. Requerido
tarifa float Porcentaje actual del impuesto expresado por un número entre 0.0 y 100.0 Requerido
codigo string Código del tipo de impuesto Requerido
codigo_porcentaje string Código del porcentaje. Requerido

Detalles adicionales de items

Obtiene los detalles adicionales de un ítem. Este query es opcional.

Los detalles adicionales de un ítem se manejan de la forma 'Clave':'Valor'. Ejemplo: 'Peso':'Kg'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con detalles adicionales del ítem:

columna_de_nombres columna_de_valores
Peso KG
Color Rojo
Caducidad 10 días
item_details = SELECT
  columna_de_nombres    nombre,
  columna_de_valores   valor
  FROM
  DocElectronicoFactura.items_detalles_adicionales
  WHERE
  id_detalle = ?
Campo Tipo Descripción
nombre string Nombre del detalle adicional del ítem
valor string Valor del detalle adicional del ítem

Información adicional

Obtiene la información adicional de la factura. Este query es opcional

La información adicional de la factura se maneja de la forma 'Clave':'Valor'. Ejemplo: 'Tipo de pago':'Cheque'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con información adicional de la factura:

columna_de_nombres columna_de_valores
Tipo de servicio Avanzado
Forma de pago Cheque
Periodo 3 meses
invoice_additional_information = SELECT
  columna_de_nombres    _nombre_,
  columna_de_valores     _valor_
  FROM
  DocElectronicoFactura.informacion_adicional
  WHERE
  id_factura = ?
Campo Tipo Descripción
_nombre_ string Nombre de la información adicional de la factura
_valor_ string Valor de la información adicional de la factura

Pagos

Obtiene la información de los pagos aplicables a la factura.

payment_methods  = SELECT
  id_pago,
  medio_pago medio,
  total_pago total
  FROM
  DocElectronicoFactura.pagos
  WHERE
  id_factura = ?
Parámetro Tipo Descripción
id_pago -- Identificador único del pago, se usa para obtener las [propiedades

del pago](Propiedades de Pagos), si no hay un identificador único del pago o no hay propiedades de pagos, se debe devolver el id_factura. medio | string | Código del tipo de forma de pago. Requerido total | float | Total aplicable a la forma de pago especificada. Requerido

Propiedades de Pagos

Obtiene la propiedades de los pagos de determinada factura. Este query es opcional

Las propiedades de los pagos se manejan de la forma 'Clave':'Valor'. Ejemplo: 'Plazo':'5'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con propiedades de los pagos:

columna_de_nombres columna_de_valores
plazo 9
unidad_tiempo dias
payment_method_properties = SELECT
  columna_de_nombres    _nombre_,
  columna_de_valores     _valor_
  FROM
  DocElectronicoFactura.propiedades_pagos
  WHERE
  id_pago = ?
Campo Tipo Descripción
_nombre_ string Nombre de la propiedad del pago
_valor_ string Valor de la propiedad del pago

Para el Servicio de Rentas Internas de Ecuador (SRI), las únicas propiedades que se tomarán en cuenta son plazo (especifica el plazo del tipo de pago) y unidad_tiempo (especifica la unidad de tiempo en la cual se expresa el plazo).

Las demás propiedades que se especifiquen se registrarán en Dátil como parte del pago, pero no se reportarán al SRI.

Crédito

Crédito otorgado en la venta. Este query es opcional , en caso de que todos los pagos se realizan en el momento de la venta, es decir no hay crédito.

Campo Tipo Descripción
fecha_vencimiento string Fecha de vencimiento en formato AAAA-MM-DD, definido en el estándar ISO8601. Requerido
monto float Monto otorgado de crédito. Requerido
invoice_credit = SELECT
  monto,
  fecha_vencimiento
  FROM
  facturas.credito
  WHERE
  id_factura = ?

Compensación solidaria

Descuento otorgado a las provincias de Manabí y Esmeraldas. Obligatorio solo para estas provincias.

Campo Tipo Descripción
codigo int Código del porcentaje de IVA . Requerido
tarifa int Porcentaje de compensación. Requerido
valor float Valor de la compensación. Requerido
invoice_compensation = SELECT
  codigo,
  tarifa,
  valor
  FROM
  facturas.compensacion
  WHERE
  id_factura = ?

Exportación

Obligatorio solo para facturas de exportación

Campo Tipo Descripción
incoterm_termino string Código de 3 letras correspondiente al Incoterm . Requerido
incoterm_lugar string Lugar Incoterm . Requerido
incoterm_total_sin_impuestos string Total sin impuestos pagado por el incoterm. Requerido
codigo_pais_origen string Código de dos letras del país origen según ISO_3166 . Requerido
codigo_pais_destino string Código de dos letras del país origen según ISO_3166
codigo_pais_adquisicion string Código de dos letras del país origen segúnISO_3166
puerto_origen string Puerto de origen. Requerido
puerto_destino string Puerto de destino. Requerido
total_flete_internacional float Total del flete internacional
total_seguro_internacional float Total del seguro internacional
total_gastos_aduaneros float Total de los gastos aduaneros
total_otros_gastos_transporte float Total de otros gastos de transporte
invoice_export = SELECT
  incoterm_termino,
  incoterm_lugar,
  incoterm_total_sin_impuestos,
  codigo_pais_origen,
  codigo_pais_destino,
  codigo_pais_adquisicion,
  puerto_origen,
  puerto_destino,
  total_flete_internacional,
  total_seguro_internacional,
  total_gastos_aduaneros,
  total_otros_gastos_transporte,
  FROM
  facturas.exportacion
  WHERE
  id_factura = ?

Tablas recomendadas

Estructura recomendada para las tablas o vistas con información de la factura.

Ejemplo en SQL Server:

CREATE SCHEMA facturas

DROP TABLE [facturas].[pago_propiedad]
DROP TABLE [facturas].[pago]
DROP TABLE [facturas].[item_impuesto]
DROP TABLE [facturas].[item_detalle_adicional]
DROP TABLE [facturas].[item]
DROP TABLE [facturas].[total_impuesto]
DROP TABLE [facturas].[informacion_adicional]
DROP TABLE [facturas].[factura]


CREATE TABLE [facturas].[factura](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [ambiente] [int] NOT NULL, -- (OPCIONAL) el ambiente se toma del archivo de configuración de Link App.
    [tipo_emision] [int] NOT NULL,
    [secuencial] [bigint] NOT NULL,
    [fecha_emision] [datetime] NULL,
    [moneda] [varchar](15) NOT NULL, -- USD para dólares
    [guia_remision] [varchar](17),
    [clave_acceso] [varchar](49) NULL,
    -- EMISOR
    [ruc] [varchar](13) NULL,
    [obligado_contabilidad] [varchar](2) NULL,
    [contribuyente_especial] [varchar](10) NULL,
    [nombre_comercial] [varchar](300) NULL,
    [razon_social] [varchar](300) NULL,
    [direccion_matriz] [varchar](300) NULL,
    [codigo_establecimiento] [varchar](3) NULL,
    [punto_emision] [varchar](3) NULL,
    [direccion_establecimiento] [varchar](300) NULL,
    -- COMPRADOR
    [email_comprador] [varchar](254) NULL,
    [identificacion_comprador] [varchar](20) NULL,
    [tipo_identificacion_comprador] [varchar](2) NULL,
    [razon_social_comprador] [varchar](200) NULL,
    [direccion_comprador] [varchar](200) NULL,
    [telefono_comprador] [varchar](200) NULL,
    -- TOTALES
    [total_sin_impuestos] [decimal](14,2) NULL,
    [importe_total] [decimal](14,2) NULL,
    [propina] [decimal](14,2) NULL,
    [descuento] [decimal](14,2) NULL,
    [descuento_adicional] [decimal](14,2) NULL,
    -- CREDITO
    [monto_credito] [decimal](14,2) NULL,
    [fecha_vencimiento_credito] [date] NULL,
    -- VALORES RETENIDOS
    [valor_retenido_iva] [decimal](14,2) NULL,
    [valor_retenido_renta] [decimal](14,2) NULL,
)

-- FACTURA: ITEMS
CREATE TABLE [facturas].[item](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [id_factura] bigint NOT NULL FOREIGN KEY REFERENCES [facturas].[factura](id),
    [cantidad] [decimal](14,2)  NOT NULL,
    [codigo_principal] [varchar](50)  NULL,
    [codigo_auxiliar] [varchar](50)  NULL,
    [precio_unitario] [decimal](14,2)  NOT NULL,
    [descripcion] [varchar](300)  NOT NULL,
    [precio_total_sin_impuestos] [decimal](14,2)  NOT NULL,
    [descuento] [decimal](14,2)  NULL,
    [unidad_medida] [varchar](50)  NULL

)

-- FACTURA: IMPUESTOS DE ITEMS
CREATE TABLE [facturas].[item_impuesto](
    [id_item] [bigint] NOT NULL FOREIGN KEY REFERENCES [facturas].[item](id),
    [codigo] [varchar](2) NOT NULL,
    [codigo_porcentaje] [varchar](2) NOT NULL,
    [base_imponible] [decimal](14,2) NOT NULL,
    [valor] [decimal](14,2) NOT NULL,
    [tarifa] [decimal](14,2) NOT NULL, -- porcentaje
    CONSTRAINT PK_item_impuesto PRIMARY KEY (id_item, codigo, codigo_porcentaje)
)

-- FACTURA: DETALLES ADICIONALES DE ITEMS
CREATE TABLE [facturas].[item_detalle_adicional](
    [id_item] [bigint] NOT NULL FOREIGN KEY REFERENCES [facturas].[item](id),
    [nombre] [varchar](100) NOT NULL,
    [valor] [varchar](100) NOT NULL
    CONSTRAINT pk_items_detalles_adicionales PRIMARY KEY (id_item, nombre)
)

-- FACTURA: IMPUESTOS TOTALES
CREATE TABLE [facturas].[total_impuesto](
    [id_factura] bigint NOT NULL FOREIGN KEY REFERENCES [facturas].[factura](id),
    [codigo] [varchar](2) NOT NULL,
    [codigo_porcentaje] [varchar](2) NOT NULL,
    [base_imponible] [decimal](14,2) NOT NULL,
    [valor] [decimal](14,2) NOT NULL
    CONSTRAINT PK_total_impuesto PRIMARY KEY (id_factura, codigo, codigo_porcentaje)
)

-- FACTURA: INFORMACION ADICIONAL DE LA FACTURA
CREATE TABLE [facturas].[informacion_adicional](
    [id_factura] bigint NOT NULL FOREIGN KEY REFERENCES [facturas].[factura](id),
    [nombre] [varchar](100) NOT NULL,
    [valor] [varchar](100) NOT NULL
    CONSTRAINT PK_informacion_adicional PRIMARY KEY (id_factura, nombre)
)

-- FACTURA: PAGOS
CREATE TABLE [facturas].[pago](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [id_factura] bigint NOT NULL FOREIGN KEY REFERENCES [facturas].[factura](id),
    [fecha] [datetime] NOT NULL,
    [medio] [varchar](100) NOT NULL,
    [notas] [varchar](max) NOT NULL,
    [monto] [decimal](14, 2) NOT NULL
)

-- FACTURA: PROPIEDADES DE PAGOS
CREATE TABLE [facturas].[pago_propiedad](
  [id_pago] bigint NOT NULL FOREIGN KEY REFERENCES [facturas].[pago](id),
  [nombre] [varchar](100) NOT NULL,
  [valor] [varchar](100) NOT NULL,
  CONSTRAINT PK_pago_propiedad PRIMARY KEY (id_pago, nombre)
)

-- FACTURA: CREDITO
CREATE TABLE [facturas].[credito](
  [id] bigint IDENTITY(1,1) PRIMARY KEY,
  [id_factura] bigint NOT NULL FOREIGN KEY REFERENCES [facturas].[factura](id),
  [monto] [decimal](14,2) NOT NULL,
  [fecha_vencimiento] [varchar](10) NOT NULL
)

-- FACTURA: COMPENSACION SOLIDARIA
CREATE TABLE [facturas].[compensacion](
  [id] bigint IDENTITY(1,1) PRIMARY KEY,
  [id_factura] bigint NOT NULL FOREIGN KEY REFERENCES [facturas].[factura](id),
  [codigo] [int] NOT NULL,
  [tarifa] [int] NOT NULL,
  [valor] [decimal](14,2) NOT NULL
)

-- FACTURA: EXPORTACION
CREATE TABLE [facturas].[exportacion](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [id_factura] bigint NOT NULL FOREIGN KEY REFERENCES [facturas].[factura](id),
    [incoterm_termino] [varchar](10)  NULL,
    [incoterm_lugar] [varchar](300)  NULL,
    [incoterm_total_sin_impuestos] [varchar](10)  NOT NULL,
    [codigo_pais_origen] [varchar](2)  NULL,
    [codigo_pais_destino] [varchar](2)  NULL,
    [codigo_pais_adquisicion] [varchar](2)  NULL,
    [puerto_origen] [varchar](300)  NULL,
    [puerto_destino] [varchar](300)  NULL,
    [total_flete_internacional] [decimal](14,2)  NOT NULL,
    [total_seguro_internacional] [decimal](14,2)  NOT NULL,
    [total_gastos_aduaneros] [decimal](14,2)  NOT NULL,
    [total_otros_gastos_transporte] [decimal](14,2)  NOT NULL
)

Notas de crédito

Los queries para la emisión electrónica de notas de crédito se guardan en el archivo de configuración credit_note.ini.

Ejemplo de archivo credit_note.ini

Cabecera

Obtiene información de la cabecera de la nota de crédito

headers = SELECT
  id_nota_credito             id_local,
  secuencial,
  fecha_emision,
  moneda,
  clave_acceso,
  tipo_emision,
  fecha_emision_documento_modificado,
  numero_documento_modificado,
  tipo_documento_modificado,
  motivo
  FROM
  DocElectronicoNotaCredito.cabecera
  WHERE
  id_nota_credito in (:sequence)
  ORDER BY id_nota_credito :order
Campo Descripción Valor de ejemplo
id_local int o string Identifica de manera única la nota de crédito. Requerido
secuencial string Número de secuencia de la nota de crédito. Requerido
fecha_emision datetime Fecha de emisión Requerido
moneda string Código ISO de la moneda. Requerido
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido
fecha_emision_documento_modificado datetime Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria del documento modificado, definido en el estándar ISO8601. Requerido
numero_documento_modificado string Número completo del documento que se está afectando. Normalmente facturas. Ejm: 001-002-010023098 Requerido
tipo_documento_modificado string Códigos de tipos de documentos. Requerido
motivo string Motivo de la operación. Ejm: Devolución de producto. Requerido

Vendedor

Obtiene información del vendedor en la nota de crédito

credit_note_seller  = SELECT
  ruc,
  obligado_contabilidad,
  contribuyente_especial,
  nombre_comercial,
  razon_social,
  direccion_establecimiento,
  direccion_emisor,
  codigo,
  punto_emision
  FROM
  DocElectronicoNotaCredito.cabecera
  WHERE
  id_nota_credito = ?
Campo Tipo Descripción
ruc string Número de RUC de 13 caracteres. Requerido
obligado_contabilidad string 'SI' si está obligado a llevar contabilidad. 'NO' si no lo está.
contribuyente_especial string Número de resolución. En blanco '' si no es contribuyente especial.
nombre_comercial string Nombre comercial. Máximo 300 caracteres Requerido
razon_social string Razón social. Máximo 300 caracteres Requerido
direccion_establecimiento string Dirección registrada en el SRI. Máximo 300 caracteres. Requerido
direccion_emisor string Dirección del punto de emisión. Máximo 300 caracteres. Requerido
codigo string Código numérico de 3 caracteres que representa al establecimiento. Ejemplo: 001 Requerido
punto_emision string Código numérico de 3 caracteres que representa al punto de emisión, o punto de venta. Ejemplo: 001. Requerido

Comprador

Obtiene información del comprador en la nota de crédito

credit_note_buyer  = SELECT
  identificacion,
  tipo_identificacion,
  razon_social,
  direccion,
  email,
  telefono
  FROM
  DocElectronicoNotaCredito.cabecera
  WHERE
  id_nota_credito = ?
Campo Tipo Descripción
razon_social string Razón social. Máximo 300 caracteres. Requerido
identificacion string De 5 a 20 caracteres. Requerido
tipo_identificacion string Ver tabla de tipos de identificación Requerido
email string Correo electrónico. Máximo 300 caracteres.
telefono string Teléfono
direccion string Dirección

Totales

Obtiene información de los valores totales de la nota de crédito

credit_note_totals  = SELECT
  total_sin_impuestos,
  importe_total
  FROM
  DocElectronicoNotaCredito.cabecera
  WHERE
  id_nota_credito = ?
Campo Tipo Descripción
total_sin_impuestos float Total antes de los impuestos. Requerido
importe_total float Total incluyendo impuestos. Requerido

Impuestos de totales

Obtiene información de los impuestos de los totales de la nota de crédito

credit_note_totals_taxes  = SELECT
  codigo,
  codigo_porcentaje,
  base_imponible,
  valor
  FROM
  DocElectronicoNotaCredito.totales_impuestos
  WHERE
  id_nota_credito = ?
Campo Tipo Descripción
codigo string Código del tipo de impuesto Requerido
codigo_porcentaje string Código del porcentaje. Requerido
base_imponible float Base imponible. Requerido
valor float Valor del total. Requerido

Items

Obtiene todos los items de una nota de crédito

items  = SELECT
  id_detalle,
  codigo_principal,
  codigo_auxiliar,
  descripcion,
  cantidad,
  precio_unitario,
  descuento,
  precio_total_sin_impuestos
  FROM
  DocElectronicoNotaCredito.items
  WHERE
  id_nota_credito = ?
Campo Tipo Descripción
id_detalle string Identifica de manera única el ítem o detalle de la nota de crédito. Si no hay un solo campo que lo identifique de manera única se debe usar la concatenación de varios.Requerido
codigo_principal string Código alfanumérico de uso del comercio. Máximo 25 caracteres. Requerido
codigo_auxiliar string Código alfanumérico de uso del comercio. Máximo 25 caracteres.
descripcion string Descripción del ítem. Requerido
cantidad float Cantidad de items. Requerido
precio_unitario float Precio unitario. Requerido
descuento float El descuento es aplicado por cada producto. Requerido
precio_total_sin_impuestos float Precio antes de los impuestos. Se obtiene multiplicando la cantidad por el precio_unitario Requerido

Impuestos de items

Obtiene los impuestos de un item

item_taxes  = SELECT
  base_imponible,
  valor,
  tarifa,
  codigo,
  codigo_porcentaje
  FROM
  DocElectronicoNotaCredito.items_impuestos
  WHERE
  id_detalle = ?
Campo Tipo Descripción
base_imponible float Base imponible. Requerido
valor float Valor del total. Requerido
tarifa float Porcentaje actual del impuesto expresado por un número entre 0.0 y 100.0 Requerido
codigo string Código del tipo de impuesto Requerido
codigo_porcentaje string Código del porcentaje. Requerido

Detalles adicionales de items

Obtiene los detalles adicionales de un ítem. Este query es opcional.

Los detalles adicionales de un ítem se manejan de la forma 'Clave':'Valor'. Ejemplo: 'Peso':'Kg'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con detalles adicionales del ítem:

columna_de_nombres columna_de_valores
Peso KG
Color Rojo
Caducidad 10 días
item_details = SELECT
  columna_de_nombres    _nombre_,
  columna_de_valores   _valor_
  FROM
  DocElectronicoNotaCredito.items_detalles_adicionales
  WHERE
  id_detalle = ?
Campo Tipo Descripción
nombre string Nombre del detalle adicional del ítem
valor string Valor del detalle adicional del ítem

Información adicional

Obtiene la información adicional de la nota de crédito.

La información adicional de la nota de crédito se maneja de la forma 'Clave':'Valor'. Ejemplo: 'Tipo de pago':'Cheque'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con información adicional de la nota de crédito:

columna_de_nombres columna_de_valores
Tipo de servicio Avanzado
Forma de pago Cheque
Periodo 3 meses
credit_note_additional_information = SELECT
  columna_de_nombres    _nombre_,
  columna_de_valores     _valor_
  FROM
  DocElectronicoNotaCredito.informacion_adicional
  WHERE
  id_nota_credito = ?
Campo Tipo Descripción
_nombre_ string Nombre de la información adicional de la nota de crédito
_valor_ string Valor de la información adicional de la nota de crédito

Detalles adicionales de items

Obtiene los detalles adicionales de un ítem. Este query es opcional.

Los detalles adicionales de un ítem se manejan de la forma 'Clave':'Valor'. Ejemplo: 'Peso':'Kg'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con detalles adicionales del ítem:

columna_de_nombres columna_de_valores
Peso KG
Color Rojo
Caducidad 10 días
item_details = SELECT
  columna_de_nombres    _nombre_,
  columna_de_valores   _valor_
  FROM
  DocElectronicoNotaCredito.items_detalles_adicionales
  WHERE
  id_detalle = ?
Campo Tipo Descripción
nombre string Nombre del detalle adicional del ítem
valor string Valor del detalle adicional del ítem

Tablas recomendadas

Estructura recomendada para las tablas o vistas con información de la nota de crédito.

Ejemplo en SQL Server:


CREATE SCHEMA notas_de_credito

DROP TABLE [notas_de_credito].[item_impuesto]
DROP TABLE [notas_de_credito].[item_detalle_adicional]
DROP TABLE [notas_de_credito].[item]
DROP TABLE [notas_de_credito].[total_impuesto]
DROP TABLE [notas_de_credito].[informacion_adicional]
DROP TABLE [notas_de_credito].[nota_de_credito]


CREATE TABLE [notas_de_credito].[nota_de_credito](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [ambiente] [int] NOT NULL,
    [tipo_emision] [int] NOT NULL,
    [secuencial] [bigint] NOT NULL,
    [fecha_emision] [datetime] NULL,
    [moneda] [varchar](15) NOT NULL,
    [clave_acceso] [varchar](49),
    -- DOCUMENTO MODIFICADO
    [fecha_emision_documento_modificado] [datetime] NULL,
    [numero_documento_sustento] [varchar](17) NULL,
    [tipo_documento_modificado] [varchar](2) NULL,
    [motivo] [varchar](300) NULL,
    -- EMISOR
    [ruc] [varchar](13) NULL,
    [obligado_contabilidad] [varchar](2) NULL,
    [contribuyente_especial] [varchar](10) NULL,
    [nombre_comercial] [varchar](300) NULL,
    [razon_social] [varchar](300) NULL,
    [direccion_matriz] [varchar](300) NULL,
    [codigo_establecimiento] [varchar](3) NULL,
    [punto_emision] [varchar](3) NULL,
    [direccion_establecimiento] [varchar](300) NULL,
    -- COMPRADOR
    [email_comprador] [varchar](254) NULL,
    [identificacion_comprador] [varchar](20) NULL,
    [tipo_identificacion_comprador] [varchar](2) NULL,
    [razon_social_comprador] [varchar](200) NULL,
    [direccion_comprador] [varchar](200) NULL,
    [telefono_comprador] [varchar](200) NULL,
    -- TOTALES
    [total_sin_impuestos] [decimal](14,2) NULL,
    [importe_total] [decimal](14,2) NULL,
)

-- NOTA DE CRÉDITO: ITEMS
CREATE TABLE [notas_de_credito].[item](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [id_nota_credito] bigint NOT NULL FOREIGN KEY REFERENCES [notas_de_credito].[nota_de_credito](id),
    [cantidad] [decimal](14,2)  NOT NULL,
    [codigo_principal] [varchar](50)  NULL,
    [codigo_auxiliar] [varchar](50)  NULL,
    [precio_unitario] [decimal](14,2)  NOT NULL,
    [descripcion] [varchar](300)  NOT NULL,
    [precio_total_sin_impuestos] [decimal](14,2)  NOT NULL,
    [descuento] [decimal](14,2)  NULL
)

-- NOTA DE CRÉDITO: IMPUESTOS DE ITEMS
CREATE TABLE [notas_de_credito].[item_impuesto](
    [id_item] [bigint] NOT NULL FOREIGN KEY REFERENCES [notas_de_credito].[item](id),
    [codigo] [varchar](2) NOT NULL,
    [codigo_porcentaje] [varchar](2) NOT NULL,
    [base_imponible] [decimal](14,2) NOT NULL,
    [valor] [decimal](14,2) NOT NULL,
    [tarifa] [decimal](14,2) NOT NULL, -- porcentaje
    CONSTRAINT PK_item_impuesto PRIMARY KEY (id_item, codigo, codigo_porcentaje)
)

-- NOTA DE CRÉDITO: DETALLES ADICIONALES DE ITEMS
CREATE TABLE [notas_de_credito].[item_detalle_adicional](
    [id_item] [bigint] NOT NULL FOREIGN KEY REFERENCES [notas_de_credito].[item](id),
    [nombre] [varchar](100) NOT NULL,
    [valor] [varchar](100) NOT NULL
    CONSTRAINT pk_items_detalles_adicionales PRIMARY KEY (id_item, nombre)
)

-- NOTA DE CRÉDITO: IMPUESTOS TOTALES
CREATE TABLE [notas_de_credito].[total_impuesto](
    [id_nota_credito] bigint NOT NULL FOREIGN KEY REFERENCES [notas_de_credito].[nota_de_credito](id),
    [codigo] [varchar](2) NOT NULL,
    [codigo_porcentaje] [varchar](2) NOT NULL,
    [base_imponible] [decimal](14,2) NOT NULL,
    [valor] [decimal](14,2) NOT NULL
    CONSTRAINT PK_total_impuesto PRIMARY KEY (id_nota_credito, codigo, codigo_porcentaje)
)

-- NOTA DE CRÉDITO: INFORMACION ADICIONAL DE LA NOTA DE CRÉDITO
CREATE TABLE [notas_de_credito].[informacion_adicional](
    [id_nota_credito] bigint NOT NULL FOREIGN KEY REFERENCES [notas_de_credito].[nota_de_credito](id),
    [nombre] [varchar](100) NOT NULL,
    [valor] [varchar](100) NOT NULL
    CONSTRAINT PK_informacion_adicional PRIMARY KEY (id_nota_credito, nombre)
)

Comprobantes de Retención

Los queries para la emisión electrónica de retención se guardan en el archivo de configuración retention.ini.

Ejemplo de archivo retention.ini

Cabecera

Obtiene información de la cabecera de la retención

headers = SELECT
  id_nota_credito             id_local,
  secuencial,
  fecha_emision,
  clave_acceso,
  tipo_emision,
  periodo_fiscal
  FROM
  DocElectronicoRetencion.cabecera
  WHERE
  id_retencion in (:sequence)
  ORDER BY id_retencion :order
Campo Descripción Valor de ejemplo
id_local int o string Identifica de manera única la retención. Requerido
secuencial string Número de secuencia de la retención. Requerido
fecha_emision datetime Fecha de emisión Requerido
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido
periodo_fiscal string Mes y año en el siguiente formato MM/AAAA. Ejm: 12/2015 Requerido

Vendedor

Obtiene información del vendedor en la retención

retention_seller  = SELECT
  ruc,
  obligado_contabilidad,
  contribuyente_especial,
  nombre_comercial,
  razon_social,
  direccion_establecimiento,
  direccion_emisor,
  codigo,
  punto_emision
  FROM
  DocElectronicoRetencion.cabecera
  WHERE
  id_retencion = ?
Campo Tipo Descripción
ruc string Número de RUC de 13 caracteres. Requerido
obligado_contabilidad string 'SI' si está obligado a llevar contabilidad. 'NO' si no lo está.
contribuyente_especial string Número de resolución. En blanco '' si no es contribuyente especial.
nombre_comercial string Nombre comercial. Máximo 300 caracteres Requerido
razon_social string Razón social. Máximo 300 caracteres Requerido
direccion_establecimiento string Dirección registrada en el SRI. Máximo 300 caracteres. Requerido
direccion_emisor string Dirección del punto de emisión. Máximo 300 caracteres. Requerido
codigo string Código numérico de 3 caracteres que representa al establecimiento. Ejemplo: 001 Requerido
punto_emision string Código numérico de 3 caracteres que representa al punto de emisión, o punto de venta. Ejemplo: 001. Requerido

Sujeto retenido

Obtiene información del sujeto retenido en la retención

retention_recipient  = SELECT
  identificacion,
  tipo_identificacion,
  razon_social,
  direccion,
  email,
  telefono
  FROM
  DocElectronicoRetencion.cabecera
  WHERE
  id_retencion = ?
Campo Tipo Descripción
identificacion string De 5 a 20 caracteres. Requerido
tipo_identificacion string Ver tabla de tipos de identificación Requerido
razon_social string Razón social. Máximo 300 caracteres. Requerido
direccion string Dirección
email string Correo electrónico. Máximo 300 caracteres.
telefono string Teléfono

Impuestos de la retención

Obtiene información de los impuestos de la retención

retention_taxes  = SELECT
    codigo,
    codigo_porcentaje,
    porcentaje,
    base_imponible,
    valor_retenido,
    tipo_documento_sustento,
    numero_documento_sustento,
    fecha_emision_documento_sustento
    FROM
    DocElectronicoRetencion.impuesto
    WHERE
    id_retencion = ?
Campo Tipo Descripción
codigo string Código de tipo de impuesto. Requerido
codigo_porcentaje string Código del porcentaje a aplicar dentro del tipo de impuesto Requerido
porcentaje string Porcentaje a retener Requerido
base_imponible float Base imponible. Requerido
valor_retenido float Valor retenido. Requerido
tipo_documento_sustento string Códigos de tipos de documentos. Requerido
numero_documento_sustento string Número completo del documento que se está afectando. Normalmente facturas. Ejm: 001-002-010023098 Requerido
fecha_emision_documento_sustento datetime Fecha de emisión del documento sustento de la retención_Requerido_

Información adicional

Obtiene la información adicional de la retención.

La información adicional de la retención se maneja de la forma 'Clave':'Valor'. Ejemplo: 'Tipo de pago':'Cheque'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con información adicional de la retención:

columna_de_nombres columna_de_valores
Tipo de servicio Avanzado
Forma de pago Cheque
Periodo 3 meses
retention_additional_information = SELECT
  columna_de_nombres    _nombre_,
  columna_de_valores     _valor_
  FROM
  DocElectronicoRetencion.informacion_adicional
  WHERE
  id_retencion = ?
Campo Tipo Descripción
_nombre_ string Nombre de la información adicional de la rentención
_valor_ string Valor de la información adicional de la retención

Tablas recomendadas

Estructura recomendada para las tablas o vistas con información de la retención.

Ejemplo en SQL Server:


CREATE SCHEMA retenciones

DROP TABLE [retenciones].[item]
DROP TABLE [retenciones].[informacion_adicional]
DROP TABLE [retenciones].[retencion]


CREATE TABLE [retenciones].[retencion](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [ambiente] [int] NOT NULL,
    [tipo_emision] [int] NOT NULL,
    [secuencial] [bigint] NOT NULL,
    [fecha_emision] [datetime] NULL,
    [clave_acceso] [varchar](49) NULL,
    [periodo_fiscal] [varchar](7),
    -- EMISOR
    [ruc] [varchar](13) NULL,
    [obligado_contabilidad] [varchar](2) NULL,
    [contribuyente_especial] [varchar](10) NULL,
    [nombre_comercial] [varchar](300) NULL,
    [razon_social] [varchar](300) NULL,
    [direccion_matriz] [varchar](300) NULL,
    [codigo_establecimiento] [varchar](3) NULL,
    [punto_emision] [varchar](3) NULL,
    [direccion_establecimiento] [varchar](300) NULL,
    -- SUJETO RETENIDO
    [email_sujeto] [varchar](254) NULL,
    [identificacion_sujeto] [varchar](20) NULL,
    [tipo_identificacion_sujeto] [varchar](2) NULL,
    [razon_social_sujeto] [varchar](200) NULL,
    [direccion_sujeto] [varchar](200) NULL,
    [telefono_sujeto] [varchar](200) NULL,
)

-- RETENCION: ITEMS
CREATE TABLE [retenciones].[item](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [id_retencion] bigint NOT NULL FOREIGN KEY REFERENCES [retenciones].[retencion](id),
    [codigo] [varchar](2) NOT NULL,
    [codigo_porcentaje] [varchar](5) NOT NULL,
    [base_imponible] [decimal](14,2) NOT NULL,
    [fecha_emision_documento_sustento] [datetime] NULL,
    [numero_documento_sustento] [varchar](17) NULL,
    [tipo_documento_sustento] [varchar](2) NULL,
    [porcentaje] [decimal](14,2) NULL,
    [valor_retenido] [decimal](14,2) NULL,
)

-- RETENCION: INFORMACION ADICIONAL DE LA RETENCION
CREATE TABLE [retenciones].[informacion_adicional](
    [id_retencion] bigint NOT NULL FOREIGN KEY REFERENCES [retenciones].[retencion](id),
    [nombre] [varchar](100) NOT NULL,
    [valor] [varchar](100) NOT NULL
    CONSTRAINT PK_informacion_adicional PRIMARY KEY (id_retencion, nombre)
)

Guías de Remisión

Los queries para la emisión electrónica de guías de remisión se guardan en el archivo de configuración waybill.ini.

Ejemplo de archivo waybill.ini

Cabecera

Obtiene información de la cabecera de la guía de remisión

headers = SELECT
  id_guia_remision             id_local,
  secuencial,
  fecha_inicio_transporte,
  fecha_fin_transporte,
  direccion_partida,
  clave_acceso,
  tipo_emision
  FROM
  DocElectronicoGuiaRemision.cabecera
  WHERE
  id_guia_remision in (:sequence)
  ORDER BY id_guia_remision :order
Campo Descripción Valor de ejemplo
id_local int o string Identifica de manera única la guía de remisión. Requerido
secuencial string Número de secuencia de la retención. Requerido
fecha_inicio_transporte datetime Fecha en la que inicia el transporte dada la guía de remisión Requerido
fecha_fin_transporte datetime Fecha en la que termina el transporte dada la guía de remisión Requerido
direccion_partida string Dirección de partida
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido

Vendedor

Obtiene información del vendedor en la guía de remisión

waybill_seller  = SELECT
  ruc,
  obligado_contabilidad,
  contribuyente_especial,
  nombre_comercial,
  razon_social,
  direccion_establecimiento,
  direccion_emisor,
  codigo,
  punto_emision
  FROM
  DocElectronicoGuiaRemision.cabecera
  WHERE
  id_guia_remision = ?
Campo Tipo Descripción
ruc string Número de RUC de 13 caracteres. Requerido
obligado_contabilidad string 'SI' si está obligado a llevar contabilidad. 'NO' si no lo está.
contribuyente_especial string Número de resolución. En blanco '' si no es contribuyente especial.
nombre_comercial string Nombre comercial. Máximo 300 caracteres Requerido
razon_social string Razón social. Máximo 300 caracteres Requerido
direccion_establecimiento string Dirección registrada en el SRI. Máximo 300 caracteres. Requerido
direccion_emisor string Dirección del punto de emisión. Máximo 300 caracteres. Requerido
codigo string Código numérico de 3 caracteres que representa al establecimiento. Ejemplo: 001 Requerido
punto_emision string Código numérico de 3 caracteres que representa al punto de emisión, o punto de venta. Ejemplo: 001. Requerido

Transportista

Obtiene información del transportista en la guía de remisión

waybill_shipper  = SELECT
  identificacion,
  tipo_identificacion,
  razon_social,
  direccion,
  email,
  telefono
  FROM
  DocElectronicoGuiaRemision.cabecera
  WHERE
  id_guia_remision = ?
Campo Tipo Descripción
identificacion string De 5 a 20 caracteres. Requerido
tipo_identificacion string Ver tabla de tipos de identificación Requerido
razon_social string Razón social. Máximo 300 caracteres. Requerido
direccion string Dirección
email string Correo electrónico. Máximo 300 caracteres.
telefono string Teléfono

Destinatarios

Obtiene información de los destinatarios en la guía de remisión

waybill_receivers  = SELECT
    id_destinatario     receiver_id,
    razon_social,
    identificacion,
    tipo_identificacion,
    email,
    telefono,
    direccion,
    ruta,
    documento_aduanero_unico,
    codigo_establecimiento_destino,
    fecha_emision_documento_sustento,
    numero_documento_sustento,
    tipo_documento_sustento,
    motivo_traslado,
    numero_autorizacion_documento_sustento
    FROM
    DocElectronicoGuiaRemision.destinatario
    WHERE
    id_guia_remision = ?
Campo Tipo Descripción
receiver_id string Identifica de manera única al destinatario en la guía de remisión. Requerido
razon_social string Razón social del destinatario. Máximo 300 caracteres Requerido
identificacion string De 5 a 20 caracteres. Requerido
tipo_identificacion string Ver tabla de tipos de identificación Requerido
email string Correo electrónico del destinatario. Máximo 300 caracteres.
telefono string Teléfono del destinatario
direccion string Dirección del destinatario
ruta string Ruta de transporte. Máximo 300 caracteres.
documento_aduanero_unico string Máximo 20 caracteres.
fecha_emision_documento_sustento datetime Fecha de emisión del documento sustento de la guía de remisión, usualmente una factura. Requerido
numero_documento_sustento string Número completo del documento que detalla la mercadería a transportar. Normalmente facturas. Ejm: 001-002-010023098
codigo_establecimiento_destino string Número establecimiento que recibe la entrega. Requerido
numero_documento_sustento string Número completo del documento que detalla la mercadería a transportar. Normalmente facturas. Ejm: 001-002-010023098 Requerido
tipo_documento_sustento string tipo_documento_sustento
motivo_traslado string Motivo del traslado. Ejm: Entrega de mercadería. Requerido
numero_autorizacion_documento_sustento string Autorización del documento de sustento.

Items del destinatario

Obtiene la información de los items que recibirá el destinatario

waybill_receiver_items = SELECT
    id_detalle,
    descripcion,
    codigo_principal,
    codigo_auxiliar,
    cantidad
    FROM
    DocElectronicoGuiaRemision.detalle
    WHERE
    id_destinatario = ?

Campo Tipo Descripción
id_detalle string Identifica de manera única el ítem o detalle de la factura. Si no hay un solo campo que lo identifique de manera única se debe usar la concatenación de varios.Requerido
descripcion string Descripción del ítem. Requerido
codigo_principal string Código alfanumérico de uso del comercio. Máximo 25 caracteres. Requerido
codigo_auxiliar string Código alfanumérico de uso del comercio. Máximo 25 caracteres.
cantidad float Cantidad de items. Requerido

Detalles adicionales de items

Obtiene los detalles adicionales de un ítem. Este query es opcional.

Los detalles adicionales de un ítem se manejan de la forma 'Clave':'Valor'. Ejemplo: 'Peso':'Kg'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con detalles adicionales del ítem:

columna_de_nombres columna_de_valores
Peso KG
Color Rojo
Caducidad 10 días
item_details = SELECT
  columna_de_nombres    _nombre_,
  columna_de_valores   _valor_
  FROM
  DocElectronicoGuiaRemision.items_detalles_adicionales
  WHERE
  id_detalle = ?
Campo Tipo Descripción
nombre string Nombre del detalle adicional del ítem
valor string Valor del detalle adicional del ítem

Información adicional

Obtiene la información adicional de la guía de remisión.

La información adicional de la guía de remisión se maneja de la forma 'Clave':'Valor'. Ejemplo: 'Tipo de pago':'Cheque'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con información adicional de la guía de remisión:

columna_de_nombres columna_de_valores
Tipo de servicio Avanzado
Forma de pago Cheque
Periodo 3 meses
waybill_additional_information = SELECT
  columna_de_nombres    _nombre_,
  columna_de_valores     _valor_
  FROM
  DocElectronicoRetencion.informacion_adicional
  WHERE
  id_retencion = ?
Campo Tipo Descripción
_nombre_ string Nombre de la información adicional de la rentención
_valor_ string Valor de la información adicional de la retención

Tablas recomendadas

Estructura recomendada para las tablas o vistas con información de la guía de remisión.

Ejemplo en SQL Server:

CREATE SCHEMA guias_de_remision

DROP TABLE [guias_de_remision].[guia_remision]
DROP TABLE [guias_de_remision].[destinatario]
DROP TABLE [guias_de_remision].[item]
DROP TABLE [guias_de_remision].[item_detalle_adicional]
DROP TABLE [guias_de_remision].[informacion_adicional]

CREATE TABLE [guias_de_remision].[guia_remision](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [ambiente] [int] NOT NULL,
    [tipo_emision] [int] NOT NULL,
    [secuencial] [bigint] NOT NULL,
    [fecha_inicio_transporte] [datetime] NULL,
    [fecha_fin_transporte] [datetime] NULL,
    [direccion_partida] [varchar](200) NULL,
    [clave_acceso] [varchar](49),
    -- EMISOR
    [ruc] [varchar](13) NULL,
    [obligado_contabilidad] [varchar](2) NULL,
    [contribuyente_especial] [int] NULL,
    [nombre_comercial] [varchar](300) NULL,
    [razon_social] [varchar](300) NULL,
    [direccion] [varchar](300) NULL,
    [codigo_establecimiento] [varchar](3) NULL,
    [punto_emision] [varchar](3) NULL,
    [direccion_establecimiento] [varchar](300) NULL,
    -- TRANSPORTISTA
    [email_comprador] [varchar](254) NULL,
    [identificacion_comprador] [varchar](20) NULL,
    [tipo_identificacion_comprador] [varchar](2) NULL,
    [razon_social_comprador] [varchar](200) NULL,
    [direccion_comprador] [varchar](200) NULL,
    [telefono_comprador] [varchar](200) NULL,
    [placa] [varchar](200) NULL
)

-- GUIA DE REMISION: DESTINATARIOS
CREATE TABLE [guias_de_remision].[destinatario](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [id_destinatario] bigint NOT NULL FOREIGN KEY REFERENCES [guias_de_remision].[guia_remision](id),
    [email] [varchar](254) NULL,
    [identificacion] [varchar](20) NULL,
    [tipo_identificacion] [varchar](2) NULL,
    [razon_social] [varchar](200) NULL,
    [direccion] [varchar](200) NULL,
    [telefono] [varchar](200) NULL,
    [fecha_emision_documento_sustento] [datetime] NULL,
    [numero_documento_sustento] [varchar](17) NULL,
    [tipo_documento_sustento] [varchar](2) NULL,
    [numero_autorizacion_documento_sustento] [varchar](300) NULL,
    [ruta] [varchar](300) NULL,
    [motivo_traslado] [varchar](300) NULL,
    [documento_aduanero_unico] [varchar](300) NULL,
    [codigo_establecimiento_destino] [varchar](3) NULL
)

-- GUIA DE REMISION: ITEMS
CREATE TABLE [guias_de_remision].[item](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [id_destinatario] bigint NOT NULL FOREIGN KEY REFERENCES [guias_de_remision].[destinatario](id),
    [cantidad] [decimal](14,2)  NOT NULL,
    [codigo_principal] [varchar](50)  NULL,
    [codigo_auxiliar] [varchar](50)  NULL,
    [descripcion] [varchar](300)  NOT NULL
)

-- GUIA DE REMISION: DETALLES ADICIONALES DE ITEMS
CREATE TABLE [guias_de_remision].[item_detalle_adicional](
    [id_item] [bigint] NOT NULL FOREIGN KEY REFERENCES [guias_de_remision].[item](id),
    [nombre] [varchar](100) NOT NULL,
    [valor] [varchar](100) NOT NULL
    CONSTRAINT pk_items_detalles_adicionales PRIMARY KEY(id_item, nombre)
)

-- GUIA DE REMISION: INFORMACION ADICIONAL DE LA GUIA DE REMISION
CREATE TABLE [guias_de_remision].[informacion_adicional](
    [id_guia_remision] bigint NOT NULL FOREIGN KEY REFERENCES [guias_de_remision].[guia_remision](id),
    [nombre] [varchar](100) NOT NULL,
    [valor] [varchar](100) NOT NULL
    CONSTRAINT PK_informacion_adicional PRIMARY KEY (id_guia_remision, nombre)
)

Liquidaciones de compra

Los queries para la emisión electrónica de liquidaciones de compra se guardan en el archivo de configuración purchase_settlement.ini.

Ejemplo de archivo purchase_settlement.ini

Cabecera

Obtiene información de la cabecera de la liquidación de compra

headers = SELECT
  id                      id_local,
  secuencial,
  fecha_emision,
  moneda,
  tipo_emision
  FROM
  liquidaciones_compra.liquidacion
  WHERE
  id in (:sequence)
  ORDER BY id :order
Campo Descripción Valor de ejemplo
id_local int o string Identifica de manera única la liquidación de compra. Requerido
secuencial string Número de secuencia de la liquidación. Requerido
fecha_emision datetime Fecha en la que se emite la liquidación.
moneda string Código ISO de la moneda. Requerido
tipo_emision int Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido

Emisor

Obitiene información del emisor de la liquidación de compra

purchase_settlement_buyer  = SELECT
  ruc,
  obligado_contabilidad,
  contribuyente_especial,
  nombre_comercial,
  razon_social,
  direccion_establecimiento,
  direccion_matriz              direccion_emisor,
  codigo_establecimiento        codigo,
  punto_emision
  FROM
  liquidaciones_compra.liquidacion
  WHERE
  id = ?
Campo Descripción Valor de ejemplo
ruc string Número de RUC de 13 caracteres. Requerido
obligado_contabilidad string 'SI' si está obligado a llevar contabilidad. 'NO' si no lo está.
contribuyente_especial string Número de resolución. En blanco '' si no es contribuyente especial.
nombre_comercial string Nombre comercial. Máximo 300 caracteres Requerido
razon_social
direccion_establecimiento string Dirección registrada en el SRI. Máximo 300 caracteres. Requerido
direccion_emisor string Dirección del punto de emisión. Máximo 300 caracteres. Requerido
codigo string Código numérico de 3 caracteres que representa al establecimiento. Ejemplo: 001 Requerido
punto_emision string Código numérico de 3 caracteres que representa al punto de emisión, o punto de venta. Ejemplo: 001. Requerido

Proveedor

Obtiene información del proveedor de la liquidación de compra

purchase_settlement_provider = SELECT
  identificador_proveedor                   identificacion,
  tipo_identificador_proveedor              tipo_identificacion,
  razon_social_proveedor razon_social,
  direccion_proveedor direccion
  FROM
  liquidaciones_compra.liquidacion
  WHERE
  id = ?
Campo Descripción Valor de ejemplo
identificacion string De 5 a 20 caracteres. Requerido
tipo_identificacion string Ver tabla de tipos de identificación Requerido
razon_social string Razón social. Máximo 300 caracteres Requerido
direccion string Dirección

Totales

Obtiene información de los valores totales de las liquidaciones

purchase_settlement_totals  = SELECT
  total_sin_impuestos,
  importe_total,
  descuento
  FROM
  liquidaciones_compra.liquidacion
  WHERE
  id = ?
Campo Descripción Valor de ejemplo
total_sin_impuestos float Total antes de los impuestos. Requerido
importe_total float Total incluyendo impuestos. Requerido
descuento float Suma de los descuentos de cada ítem y del descuento adicional. Requerido

Impuestos de totales

Obtiene información de los impuestos de los totales de la factura

purchase_settlement_totals_taxes = SELECT
  codigo,
  codigo_porcentaje,
  base_imponible,
  valor
  FROM 
  liquidaciones_compra.total_impuesto
  WHERE
  id_liquidacion = ?
Campo Descripción Valor de ejemplo
codigo string Código del tipo de impuesto Requerido
codigo_porcentaje string Código del porcentaje. Requerido
base_imponible float Base imponible. Requerido
valor float Valor del total. Requerido

Items

Obtiene todos los items de una factura

items  = SELECT
  id id_detalle,
  codigo_principal,
  codigo_auxiliar,
  descripcion,
  cantidad,
  unidad_medida,
  precio_unitario,
  descuento,
  precio_total_sin_impuestos
  FROM
  liquidaciones_compra.item
  WHERE
  id_liquidacion = ?
Campo Descripción Valor de ejemplo
id_detalle int Identifica de manera única el ítem o detalle de la factura. Requerido
codigo_principal string Código alfanumérico de uso del comercio. Máximo 25 caracteres. Requerido
codigo_auxiliar string Código alfanumérico de uso del comercio. Máximo 25 caracteres.
descripcion string Descripción del ítem. Requerido
cantidad float Cantidad de items. Requerido
unidad_medida string Unidad de medida. Ejemplo: Kilos.
precio_unitario float Precio unitario. Requerido
descuento float El descuento es aplicado por cada producto.
precio_total_sin_impuestos float Precio antes de los impuestos. Se obtiene multiplicando la cantidad por el precio_unitario Requerido

Impuestos de items

Obtiene los impuestos de un item.

item_taxes  = SELECT
  id_item id_detalle,
  base_imponible,
  valor,
  tarifa,
  codigo,
  codigo_porcentaje
  FROM
  liquidaciones_compra.item_impuesto
  WHERE
  id_item = ?
Campo Descripción Valor de ejemplo
id_detalle
base_imponible float Base imponible. Requerido
valor float Valor del total. Requerido
tarifa float Porcentaje actual del impuesto expresado por un número entre 0.0 y 100.0 Requerido
codigo string Código del tipo de impuesto Requerido
codigo_porcentaje string Código del porcentaje. Requerido

Detalles adicionales de items

Obtiene los detalles adicionales de un ítem.

Los detalles adicionales de un ítem se manejan de la forma 'Clave':'Valor'. Ejemplo: 'Peso':'Kg'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con detalles adicionales del ítem:

columna_de_nombres columna_de_valores
Peso KG
Color Rojo
Caducidad 10 días
item_details = SELECT
  nombre    nombre,
  valor   valor
  FROM
  liquidaciones_compra.item_detalle_adicional
  WHERE
  id_item = ?
Campo Tipo Descripción
nombre string Nombre del detalle adicional del ítem
valor string Valor del detalle adicional del ítem

Información adicional

Obtiene la información adicional de la factura. Este query es opcional

La información adicional de la factura se maneja de la forma 'Clave':'Valor'. Ejemplo: 'Tipo de pago':'Cheque'

Se asume que en la tabla consultada una columna tiene los nombres y otra los valores.

Ejemplo de columnas con información adicional de la liquidación:

columna_de_nombres columna_de_valores
Tipo de servicio Avanzado
Forma de pago Cheque
Periodo 3 meses
purchase_settlement_additional_information = SELECT
  nombre    _nombre_,
  valor     _valor_
  FROM
  liquidaciones_compra.info_adicional
  WHERE
  id_liquidacion = ?
Campo Tipo Descripción
_nombre_ string Nombre de la información adicional de la factura
_valor_ string Valor de la información adicional de la factura

Pagos

Obtiene la información de los pagos aplicables a la liquidación.

payment_methods = SELECT
  forma_pago,
  total total,
  unidad_tiempo,
  plazo
  FROM
  liquidaciones_compra.pago
  WHERE
  id_liquidacion = ?
Parámetro Tipo Descripción
forma_pago string Código del tipo de forma de pago. Requerido
total float Total aplicable a la forma de pago especificada. Requerido
unidad_tiempo string Especifica la unidad de tiempo en la cual se expresa el plazo.
plazo int Especifica el plazo del tipo de pago.

Reembolsos

Obtiene el reembolso aplicable a una liquidación.

purchase_settlement_reimbursement = SELECT
  r.id_reembolso,
  l.codigo_documento_reembolso
  FROM
  liquidaciones_compra.liquidacion AS l JOIN
  liquidaciones_compra.reembolso AS r 
  ON
  l.id = r.id_liquidacion
  WHERE
  id = ?
Parámetro Tipo Descripción
r.id_reembolso int Identificador del reembolso. Reembolso
l.codigo_documento_reembolso Identificador del documento de reembolso. Reembolso

Totales de reembolosos

Obtiene la información de los totales de un reembolso

purchase_settlement_reimbursement_totals = SELECT
  total_comprobante_reembolso            subtotal,
  total_base_imponible_reembolso         total,
  total_impuesto_reembolso               total_impuestos
  FROM
  liquidaciones_compra.liquidacion
  WHERE
  id = ?
Parámetro Tipo Descripción
subtotal float Total del reembolso incluyendo base imponible e impuestos. Requerido
total float Total del reembolso incluyendo la base imponible. Requerido
total_impuestos float Total del reembolso incluyendo los impuestos

Documennto reembolso

Obtiene la información de un reembolso.

purchase_settlement_reimbursement_document = SELECT
  codigo_documento_reembolso            codigo,
  id_reembolso                          id_documento,
  id_proveedor_reembolso,
  tipo_id_proveedor_reembolso,
  codigo_pais_pago_proveedor_reembolso,
  tipo_proveedor_reembolso,
  secuencia_reembolso,
  punto_emision_reembolso,
  fecha_emision_reembolso,
  numero_autorizacion_reembolso,
  codigo_establecimiento_reembolso
  FROM
  liquidaciones_compra.reembolso
  WHERE
  id_reembolso = ?
Parámetro Tipo Descripción
codigo string Código numérico de 2 caracteres que representa al documento de reembolso. Ejemplo: 01 Requerido
id_documento int Identifica de manera única al documento de reemoblso. Requerido
id_proveedor_reembolso string Identifica de manera única al proveedor en la liquidación. Requerido
tipo_id_proveedor_reembolso string Ver tabla de tipos de identificación Requerido
codigo_pais_pago_proveedor_reembolso string Código de dos letras del país del proveedor según [ISO_3166](https://en.wikipedia.org/wiki/ Requerido
tipo_proveedor_reembolso string Tipo de proveedor Requerido
secuencia_reembolso int Número de secuencia de la factura. Requerido
punto_emision_reembolso string Código numérico de 3 caracteres que representa al punto de emisión, o punto de venta. Ejemplo: 001. Requerido
fecha_emision_reembolso datetime Fecha de emisión Requerido
numero_autorizacion_reembolso string Autorización del documento de reembolso. Requerido
codigo_establecimiento_reembolso float Número establecimiento que recibe la entrega. Requerido

Impuestos de reembolsos

Obtiene información de los impuestos de los reembolsos

purchase_settlement_reimbursement_tax = SELECT
  codigo,
  codigo_porcentaje,
  tarifa,
  base_imponible,
  impuesto_reembolso
  FROM
  liquidaciones_compra.reembolso_tax
  WHERE
  id_reembolso = ?
Parámetro Tipo Descripción
codigo string Código del tipo de impuesto Requerido
codigo_porcentaje string Código del porcentaje. Requerido
tarifa float Porcentaje actual del impuesto expresado por un número entre 0.0 y 100.0 Requerido
base_imponible float Base imponible. Requerido
impuesto_reembolso float Valor del impuesto del reembolso

Máquina fiscal

Obtiene información de la máquina fiscal con la que se emitió la liquidación

purchase_settlement_fiscal_machine = SELECT
  marca,
  modelo,
  serie
  FROM
  liquidaciones_compra.maquina_fiscal
  WHERE
  id_liquidacion = ?
Parámetro Tipo Descripción
marca string Marca de máximo 100 caracteres
modelo string Modelo de máximo 100 caracteres
serie string Serie de máximo 100 caracteres

Tablas recomendadas

Estructura recomendada para las tablas o vistas con información de las liquidaciones de compra.

Ejemplo en SQL Server:

CREATE SCHEMA liquidaciones_compra;
CREATE TABLE [liquidaciones_compra].[liquidacion](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [ambiente] [int] NOT NULL,
    [tipo_emision] [int] NOT NULL,
    [secuencial] [bigint] NOT NULL,
    [clave_acceso] [VARCHAR](49) NULL,
    [fecha_emision] [DATETIME] NULL,
    [moneda] [VARCHAR](15) NOT NULL,
    [codigo_documento] [VARCHAR](2) NOT NULL,
    -- EMISOR
    [ruc] [VARCHAR](13) NULL,
    [obligado_contabilidad] [VARCHAR](10) NULL,
    [contribuyente_especial] [VARCHAR](13) NULL,
    [nombre_comercial] [VARCHAR](300) NULL,
    [razon_social] [VARCHAR](300) NULL,
    [direccion_matriz] [VARCHAR](300) NOT NULL,
    [codigo_establecimiento] [VARCHAR](3) NULL,
    [punto_emision] [VARCHAR](3) NULL,
    [direccion_establecimiento] [VARCHAR](300) NULL,
    -- PROVEEDOR
    [tipo_identificador_proveedor] [VARCHAR](2) NULL,
    [razon_social_proveedor] [VARCHAR](300) NOT NULL,
    [identificador_proveedor] [VARCHAR](20) NOT NULL,
    [direccion_proveedor] [vARCHAR](300) NULL,
    -- TOTALES
    [total_sin_impuesto] [DECIMAL](14, 2) NOT NULL,
    [descuento] [DECIMAL](14, 2) NOT NULL,
    [importe_total] [DECIMAL](14, 2) NOT NULL,
    -- REEMBOLSO
    [codigo_documento_reembolso] [VARCHAR](2) NOT NULL,
    [total_comprobante_reembolso] [DECIMAL](14, 2) NOT NULL,
    [total_base_imponible_reembolso] [DECIMAL](14, 2) NOT NULL,
    [total_impuesto_reembolso] [DECIMAL](14, 2) NOT NULL,
)

-- LIQUIDACION: ITEMS
CREATE TABLE [liquidaciones_compra].[item](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [id_liquidacion] bigint NOT NULL FOREIGN KEY REFERENCES [liquidaciones_compra].[liquidacion](id),
    [codigo_principal] [VARCHAR](25) NOT NULL,
    [codigo_auxiliar] [VARCHAR](25)  NULL,
    [descripcion] [VARCHAR](300)  NOT NULL,
    [unidad_medida] [VARCHAR](50) NULL,
    [cantidad] [DECIMAL](14,2)  NOT NULL,
    [precio_unitario] [DECIMAL](18,6)  NOT NULL,
    [descuento] [DECIMAL](14,2)  NULL,
    [precio_total_sin_impuestos] [DECIMAL](14,2)  NOT NULL,
)

-- LIQUIDIACION: DETALLES ADICIONALES DE ITEMS
CREATE TABLE [liquidaciones_compra].[item_detalle_adicional](
    [id_item] [bigint] NOT NULL FOREIGN KEY REFERENCES [liquidaciones_compra].[item](id),
    [nombre] [varchar](100) NOT NULL,
    [valor] [varchar](100) NOT NULL
    CONSTRAINT pk_items_detalles_adicionales PRIMARY KEY (id_item, nombre)
)

-- LIQUIDACION: IMPUESTOS DE ITEMS
CREATE TABLE [liquidaciones_compra].[item_impuesto](
    [id_item] [bigint] NOT NULL FOREIGN KEY REFERENCES [liquidaciones_compra].[item](id),
    [codigo] [VARCHAR](2) NOT NULL,
    [codigo_porcentaje] [VARCHAR](2) NOT NULL,
    [base_imponible] [DECIMAL](14,2) NOT NULL,
    [valor] [DECIMAL](14,2) NOT NULL,
    [tarifa] [DECIMAL](5,2) NOT NULL, -- porcentaje
    CONSTRAINT PK_item_impuesto PRIMARY KEY (id_item, codigo, codigo_porcentaje)
)

-- LIQUIDACION: IMPUESTOS TOTALES
CREATE TABLE [liquidaciones_compra].[total_impuesto](
    [id_liquidacion] bigint NOT NULL FOREIGN KEY REFERENCES [liquidaciones_compra].[liquidacion](id),
    [codigo] [VARCHAR](2) NOT NULL,
    [codigo_porcentaje] [VARCHAR](2) NOT NULL,
    [descuento_adicional] [DECIMAL](14, 2) NULL,
    [base_imponible] [DECIMAL](14,2) NOT NULL,
    [tarifa] [DECIMAL](14, 2) NOT NULL,
    [valor] [DECIMAL](14,2) NOT NULL
    CONSTRAINT PK_total_impuesto PRIMARY KEY (id_liquidacion, codigo, codigo_porcentaje)
)

-- LIQUIDIACION: PAGOS
CREATE TABLE [liquidaciones_compra].[pago](
    [id] bigint IDENTITY(1,1) PRIMARY KEY,
    [id_liquidacion] bigint NOT NULL FOREIGN KEY REFERENCES [liquidaciones_compra].[liquidacion](id),
    [forma_pago] [VARCHAR](2) NOT NULL,
    [total] [DECIMAL](14, 2) NOT NULL,
    [plazo] VARCHAR(50) NOT NULL,
    [unidad_tiempo] VARCHAR(50) NOT NULL
)

-- LIQUIDACION: REEMBOLSOS
CREATE TABLE [liquidaciones_compra].[reembolso](
    [id_reembolso] bigint IDENTITY(1,1) PRIMARY KEY,
    [id_liquidacion] bigint NOT NULL FOREIGN KEY REFERENCES [liquidaciones_compra].[liquidacion](id),
    [tipo_id_proveedor_reembolso] [VARCHAR](2) NOT NULL,
    [id_proveedor_reembolso] [VARCHAR](20) NOT NULL,
    [codigo_pais_pago_proveedor_reembolso] [VARCHAR](2) NOT NULL,
    [tipo_proveedor_reembolso] [VARCHAR](2) NOT NULL,
    [codigo_documento_reembolso] [VARCHAR](3) NOT NULL,
    [codigo_establecimiento_reembolso] [DECIMAL](3) NOT NULL,
    [punto_emision_reembolso] [VARCHAR](3) NOT NULL,
    [secuencial_reembolso] [bigint] NOT NULL,
    [fecha_emision_reembolso] [DATETIME] NOT NULL,
    [numero_autorizacion_reembolso] [VARCHAR](49) NOT NULL
)

-- LIQUIDACION: REEMBOLSO IMPUESTOS
CREATE TABLE [liquidaciones_compra].[reembolso_tax](
    [id_reembolso] [bigint] NOT NULL FOREIGN KEY REFERENCES [liquidaciones_compra].[reembolso](id_reembolso),
    [codigo] [VARCHAR](2) NOT NULL,
    [codigo_porcentaje] [VARCHAR](2) NOT NULL,
    [tarifa] [DECIMAL](14, 2) NOT NULL,
    [base_imponible] [DECIMAL](14,2) NOT NULL,
    [impuesto_reembolso] [DECIMAL](14, 2) NOT NULL
)

-- LIQUIDACION: MAQUINA FISCAL
CREATE TABLE [liquidaciones_compra].[maquina_fiscal](
    [id_liquidacion] bigint NOT NULL FOREIGN KEY REFERENCES [liquidaciones_compra].[liquidacion](id),
    [marca] [VARCHAR](100) NOT NULL,
    [modelo] [VARCHAR](100) NOT NULL,
    [serie] [VARCHAR](100) NOT NULL,
    CONSTRAINT pk_maquina_fiscal PRIMARY KEY (id, marca)
)

-- LIQUIDACION: INFO ADICIONAL
CREATE TABLE [liquidaciones_compra].[info_adicional](
    [id_liquidacion] [bigint] NOT NULL FOREIGN KEY REFERENCES [liquidaciones_compra].[liquidacion](id),
    [nombre] [varchar](100) NOT NULL,
    [valor] [varchar(100)] NOT NULL,
    CONSTRAINT pk_info_adicionales PRIMARY KEY (id_liquidacion, nombre)
)

Clave de acceso

El sistema se encarga de generar automáticamente la clave de acceso de cada comprobante y luego retornarla como parte de la respuesta de emisión del mismo. Pero es posible también proveer la clave de acceso si se requiere tener control en la generación de esta clave. La siguiente documentación explica como debe estar estructurada la clave de acceso.

Las claves de acceso estarán compuestas de 49 caracteres numéricos, la herramienta o aplicativo a utilizar por el sujeto pasivo deberá generar de manera automática la clave de acceso, que constituirá un requisito que dará el carácter de único a cada uno de los comprobantes, y la misma servirá para que el SRI indique si el comprobante es autorizado o no; se describe a continuación su conformación:

Campo Formato Longitud
Fecha de Emisión ddmmaaaa 8
Tipo de Comprobante Tabla 4 2
Número de RUC 1234567890001 13
Tipo de Ambiente Tabla 5 1
Serie 001001 6
Número del Comprobante (secuencial) 000000001 9
Código Numérico Numérico 8
Tipo de Emisión Tabla 2 1
Dígito Verificador (módulo 11 ) Numérico 1

Nota: Todos los campos deben completarse conforme a la longitud indicada, es decir si en el número secuencial no completa los 9 dígitos, la clave de acceso estará mal conformada y será motivo de rechazo de la autorización en línea.

El dígito verificador será aplicado sobre toda la clave de acceso (48 dígitos) y deberá ser incorporado por el contribuyente a través del método denominado Módulo 11, con un factor de chequeo ponderado (2), este mecanismo de detección de errores, será verificado al momento de la recepción del comprobante. Cuando el resultado del dígito verificador obtenido sea igual a once (11), el digito verificador será el cero (0) y cuando el resultado del dígito verificador obtenido sea igual a diez 10, el digito verificador será el uno (1).

El código numérico constituye un mecanismo para brindar seguridad al emisor en cada comprobante emitido, el algoritmo numérico para conformar este código es potestad absoluta del contribuyente emisor.

Ver aquí ejemplo de verificación utilizando algoritmo de módulo 11.

Objetos comunes

Emisor

Información del emisor de un comprobante.

Parámetro Tipo Descripción
ruc string Número de RUC de 13 caracteres
razon_social string Razón social. Máximo 300 caracteres
nombre_comercial string Nombre comercial. Máximo 300 caracteres
direccion string Dirección registrada en el SRI. Máximo 300 caracteres.
contribuyente_especial string Número de resolución. En blanco si no es contribuyente especial.
obligado_contabilidad boolean true si está obligado a llevar contabilidad.
establecimiento establecimiento Establecimiento que emite la factura.

Establecimiento

Representa un establecimiento del comercio.

Parámetro Tipo Descripción
codigo string Código numérico de 3 caracteres que representa al establecimiento. Ejemplo: 001
direccion string Dirección registrada en el SRI. Máximo 300 caracteres
punto_emision string Código numérico de 3 caracteres que representa al punto de emisión, o punto de venta. Ejemplo: 001

Máquina fiscal

Datos de una máquina fiscal.

Parámetro Tipo Descripción
marca string Máximo 300 caracteres. Requerido
modelo string Máximo 300 caracteres. Requerido
serie string Máximo 300 caracteres. Requerido

Persona

Datos de una persona. Utilizado como comprador en facturas y notas de crédito, como sujeto en retenciones

Parámetro Tipo Descripción
razon_social string Razón social. Máximo 300 caracteres. Requerido
identificacion string De 5 a 20 caracteres. Requerido
tipo_identificacion string Ver tabla de tipos de identificación Requerido
email string Correo electrónico. Máximo 300 caracteres. Requerido
telefono string Teléfono.
direccion string Dirección

Tipo de identificación

Tipo de identificación Código
RUC 04
CEDULA 05
PASAPORTE 06
VENTA A CONSUMIDOR FINAL* 07
IDENTIFICACION DELEXTERIOR* 08
PLACA 09

Total Impuesto

Parámetro Tipo Descripción
codigo string Código del tipo de impuesto
codigo_porcentaje string Código del porcentaje.
base_imponible float Base imponible.
valor float Valor del total.

Impuesto Item

Parámetro Tipo Descripción
codigo string Código del tipo de impuesto
codigo_porcentaje string Código del porcentaje.
base_imponible float Base imponible.
valor float Valor del total.
tarifa float Porcentaje actual del impuesto expresado por un número entre 0.0 y 100.0

Envío SRI

Contiene la información y el estado de la fase de envío al SRI

Parámetro Tipo Descripción
mensajes listado de objeto mensaje SRI Listado de mensajes.
estado string Posibles valores: RECIBIDA, DEVUELTA
fecha string Fecha en la que se realizó el envío en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.

Autorización SRI

Contiene la información y el estado de la fase de autorización del comprobante.

Parámetro Tipo Descripción
mensajes listado de objeto mensaje SRI Listado de mensajes.
estado string Posibles valores: AUTORIZADO, NO AUTORIZADO
numero string Número de autorización.
fecha string Fecha en la que se otorgó la autorización en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.

Mensajes de respuesta SRI

Parámetro Tipo Descripción
identificador string Número con el que el SRI identifica al mensaje.
mensaje string Descripción del error, información o advertencia.
tipo string Posibles valores: INFORMATIVO, ADVERTENCIA, ERROR
informacion_adicional string Información adicional del mensaje.

Item de factura, nota de crédito y liquidación de compras

Representa un producto o servicio del comercio.

Parámetro Tipo Descripción
descripcion string Descripción del ítem. Requerido
codigo_principal string Código alfanumérico de uso del comercio. Máximo 25 caracteres.
codigo_auxiliar string Código alfanumérico de uso del comercio. Máximo 25 caracteres.
cantidad float Cantidad de items. Requerido
precio_unitario float Precio unitario. Requerido
descuento float El descuento es aplicado por cada producto, expresado en valor monetario. Requerido
precio_total_sin_impuestos float Precio antes de los impuestos. Se obtiene multiplicando la cantidad por el precio_unitario
unidad_medida string Unidad de medida Requerido para facturas de exportación
impuestos listado de objetos tipo impuesto item Impuestos grabados sobre el producto. Requerido
detalles_adicionales object Diccionario de datos de carácter adicional. Ejemplo:
{"marca": "Ferrari", "chasis": "UANEI832-NAU101"}

Retención en factura

Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/o revistas.

Parámetro Tipo Descripción
codigo string Código del tipo de impuesto para la retención en la factura. Requerido
codigo_porcentaje string Código del porcentaje del impuesto. Requerido
tarifa float Porcentaje actual del impuesto. Máximo 3 enteros y 2 decimales. Requerido
valor float Valor del impuesto. Máximo 12 enteros y 2 decimales. Requerido

Catálogo

Tipos de impuesto

Impuesto Código
IVA 2
ICE 3
IRBPNR 5

Código de Porcentaje de IVA

Porcentaje de IVA Código Tarifa
0% 0 0
12% 2 12
14% 3 14
No Objeto de Impuesto 6 -
Exento de IVA 7 -

Tipos de impuesto para la retención

Impuesto Código
RENTA 1
IVA 2
ISD 6

Tipos de impuesto para la retención en la factura

Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/o revistas.

Impuesto Código
IVA PRESUNTIVO Y RENTA 4

Retención de IVA

Porcentaje IVA Código
10% 9
20% 10
30% 1
70% 2
100% 3

Retención en cero

Porcentaje IVA Código
0% 7

No procede retención

Porcentaje IVA Código
0% 8

Retención ISD

Porcentaje IVA Código
5% 4580

Retención de IVA Presuntivo y Renta

Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/o revistas.

Retención IVA

Porcentaje IVA presuntivo Código
100% 3
12% (Editores a Margen de Comercialización Voceadores) 4
100% (Venta periódicos y/o Revistas a Distribuidores) 5
100% (Venta periódicos y/o Revistas a Voceadores) 6

Retención Renta

Porcentaje Renta Código
0.2% 327
0.3% 328

Tipos de documentos

Documento Código
Factura 01
Nota de Crédito 04
Nota de Débito 05
Guía de Remisión 06
Comprobante de Retención 07

Tipos de forma de pago

Forma de pago Código
Efectivo efectivo
Cheque cheque
Débito de cuenta bancaria debito_cuenta_bancaria
Transferencia bancaria transferencia
Depósito en cuenta (Corriente / Ahorros) deposito_cuenta_bancaria
Tarjeta de débito tarjeta_debito
Dinero electrónico Ecuador dinero_electronico_ec
Tarjeta prepago tarjeta_prepago
Tarjeta de crédito tarjeta_credito
Otros otros
Endoso de títulos endoso_titulos

Equivalencia entre formas de pago Dátil y formas de pago del SRI

Forma de pago Dátil Código Forma de pago SRI Código
Efectivo efectivo Sin utilización del sistema financiero 01
Cheque cheque Otros con utilización del sistema financiero 20
Débito bancario debito_cuenta_bancaria Otros con utilización del sistema financiero 20
Transferencia bancaria transferencia Otros con utilización del sistema financiero 20
Tarjeta de crédito tarjeta_credito Tarjeta de crédito nacional 19
Depósito en cuenta (Corriente / Ahorros) deposito_cuenta_bancaria Otros con utilización del sistema financiero 20
Tarjeta de débito tarjeta_debito Tarjeta de débito 16
Dinero electrónico Ecuador dinero_electronico_ec Dinero electrónico 17
Tarjeta prepago tarjeta_prepago Tarjeta prepago 18
Otros otros Otros con utilización del sistema financiero 20
Endoso de títulos endoso_titulos Endoso de títulos 21

Debido a que el Servicio de Rentas Internas exige incluir información del pago, las facturas a crédito se enviarán al SRI con forma de pago "Otros con utilización del sistema financiero".

Ejemplos de archivos de configuración

invoice.ini

Guarda la configuración y queries para la extracción y emisisón electrónica de facturas.

[Query] headers = SELECT id_factura id_local, secuencial, fecha_emision, guia_remision, moneda, clave_acceso, tipo_emision FROM DocElectronicoFactura.cabecera WHERE info.id_factura in (:sequence) ORDER BY id_factura :order

invoice_seller = SELECT ruc, obligado_contabilidad, contribuyente_especial, nombre_comercial, razon_social, direccion_establecimiento, direccion_emisor, codigo, punto_emision FROM DocElectronicoFactura.cabecera WHERE id_factura = ?

invoice_buyer = SELECT identificacion, tipo_identificacion, razon_social, direccion, email, telefono FROM FROM DocElectronicoFactura.cabecera WHERE id_factura = ?

invoice_totals = SELECT total_sin_impuestos, importe_total, propina, descuento FROM DocElectronicoFactura.cabecera WHERE id_factura = ?

invoice_totals_taxes = SELECT codigo, codigo_porcentaje, base_imponible, valor FROM DocElectronicoFactura.totales_impuestos WHERE id_factura = ?

items = SELECT id_detalle, codigo_principal, codigo_auxiliar, descripcion, cantidad, precio_unitario, descuento, precio_total_sin_impuestos FROM DocElectronicoFactura.items WHERE id_factura = ?

item_taxes = SELECT base_imponible, valor, tarifa, codigo, codigo_porcentaje FROM DocElectronicoFactura.items_impuestos WHERE id_detalle = ?

item_details = SELECT nombre nombre, valor valor FROM DocElectronicoFactura.items_detalles_adicionales WHERE id_detalle = ?

invoice_additional_information = SELECT columna_de_nombres nombre, columna_de_valores valor FROM DocElectronicoFactura.informacion_adicional WHERE id_detalle = ?

credit_note.ini

Guarda la configuración y queries para la extracción y emisisón electrónica de notas de crédito.

[Query] headers = SELECT id_nota_credito id_local, secuencial, fecha_emision, guia_remision, moneda, clave_acceso, tipo_emision, fecha_emision_documento_modificado, numero_documento_modificado, tipo_documento_modificado, motivo FROM DocElectronicoNotaCredito.cabecera WHERE info.id_nota_credito in (:sequence) ORDER BY id_nota_credito :order

credit_note_seller = SELECT ruc, obligado_contabilidad, contribuyente_especial, nombre_comercial, razon_social, direccion_establecimiento, direccion_emisor, codigo, punto_emision FROM DocElectronicoNotaCredito.cabecera WHERE id_nota_credito = ?

credit_note_buyer = SELECT identificacion, tipo_identificacion, razon_social, direccion, email, telefono FROM DocElectronicoNotaCredito.cabecera WHERE id_nota_credito = ?

credit_note_totals = SELECT total_sin_impuestos, importe_total FROM DocElectronicoNotaCredito.cabecera WHERE id_nota_credito = ?

credit_note_totals_taxes = SELECT codigo, codigo_porcentaje, base_imponible, valor FROM DocElectronicoNotaCredito.totales_impuestos WHERE id_nota_credito = ?

items = SELECT id_detalle, codigo_principal, codigo_auxiliar, descripcion, cantidad, precio_unitario, descuento, precio_total_sin_impuestos FROM DocElectronicoNotaCredito.items WHERE id_nota_credito = ?

item_taxes = SELECT base_imponible, valor, tarifa, codigo, codigo_porcentaje FROM DocElectronicoNotaCredito.items_impuestos WHERE id_detalle = ?

item_details = SELECT nombre nombre, valor valor FROM DocElectronicoNotaCredito.items_detalles_adicionales WHERE id_detalle = ?

credit_note_additional_information = SELECT columna_de_nombres nombre, columna_de_valores valor FROM DocElectronicoNotaCredito.informacion_adicional WHERE id_detalle = ?

retention.ini

Guarda la configuración y queries para la extracción y emisisón electrónica de retenciones.

[Query] headers = SELECT id_nota_credito id_local, secuencial, fecha_emision, clave_acceso, tipo_emision, periodo_fiscal FROM DocElectronicoRetencion.cabecera WHERE id_retencion in (:sequence) ORDER BY id_retencion :order

retention_seller = SELECT ruc, obligado_contabilidad, contribuyente_especial, nombre_comercial, razon_social, direccion_establecimiento, direccion_emisor, codigo, punto_emision FROM DocElectronicoRetencion.cabecera WHERE id_retencion = ?

retention_recipient = SELECT identificacion, tipo_identificacion, razon_social, direccion, email, telefono FROM DocElectronicoRetencion.cabecera WHERE id_retencion = ?

retention_taxes = SELECT codigo, codigo_porcentaje, porcentaje, base_imponible, valor_retenido, tipo_documento_sustento, numero_documento_sustento, fecha_emision_documento_sustento FROM DocElectronicoRetencion.impuesto WHERE id_retencion = ?

retention_additional_information = SELECT columna_de_nombres nombre, columna_de_valores valor FROM DocElectronicoRetencion.informacion_adicional WHERE id_retencion = ?

waybill.ini

Guarda la configuración y queries para la extracción y emisisón electrónica de guías de remisión.

[Query] headers = SELECT id_guia_remision id_local, secuencial, fecha_inicio_transporte, fecha_fin_transporte, direccion_partida, clave_acceso, tipo_emision FROM DocElectronicoGuiaRemision.cabecera WHERE id_guia_remision in (:sequence) ORDER BY id_guia_remision :order

waybill_seller = SELECT ruc, obligado_contabilidad, contribuyente_especial, nombre_comercial, razon_social, direccion_establecimiento, direccion_emisor, codigo, punto_emision FROM DocElectronicoGuiaRemision.cabecera WHERE id_guia_remision = ?

waybill_shipper = SELECT identificacion, tipo_identificacion, razon_social, direccion, email, telefono FROM DocElectronicoGuiaRemision.cabecera WHERE id_guia_remision = ?

waybill_receivers = SELECT id_destinatario receiver_id, razon_social, identificacion, tipo_identificacion, email, telefono, direccion, ruta, documento_aduanero_unico, codigo_establecimiento_destino, fecha_emision_documento_sustento, numero_documento_sustento, tipo_documento_sustento, motivo_traslado, numero_autorizacion_documento_sustento FROM DocElectronicoGuiaRemision.destinatario WHERE id_guia_remision = ?

waybill_receiver_items = SELECT id_detalle, descripcion, codigo_principal, codigo_auxiliar, cantidad FROM DocElectronicoGuiaRemision.detalle WHERE id_destinatario = ?

item_details = SELECT columna_de_nombres nombre, columna_de_valores valor FROM DocElectronicoGuiaRemision.items_detalles_adicionales WHERE id_detalle = ?

waybill_additional_information = SELECT columna_de_nombres nombre, columna_de_valores valor FROM DocElectronicoRetencion.informacion_adicional WHERE id_retencion = ?

Actualización

Para actualizar el programa Link de Dátil

net stop datilink

Windows: C:\Archivos de Programa\Datil\Link\config .

Windows: C:\Archivos de Programa\Datil\Link\unins

Dentro del directorio de instalación solo debe quedar la carpeta logs. Si otro archivo o carpeta sigue existiendo, borrarlo.

net start datilink