Facturacionweb.com.ar – Factura electrónica automática

BETA, LANZAMIENTO EN NOVIEMBRE

Este software no es opensource, tiene una licencia anual. Esta descarga es un Trial por 30 días.

Facturaciónweb.com.ar permite generar facturas electrónicas en la Afip mediante REST totalmente gratis, y esta aplicación permite generarlas

FACTURACIÓN ELECTRONICA Argentina

desde Whmcs hacia Facturacionweb.com.ar

Instalación

Descomprimir el archivo impfw.zip. El directorio impfw puede ubicarse en la raiz del sistema WHMCS o en otra ubicación dentro del ámbito del servidor web.

Permisos de archivos

Asignar permisos de escritura sobre el directorio logs/ donde el sistema debe poder generar archivos de registro de actividades.

Configuración manual de archivos

classes/Parametros.php

Reemplazar los valores correspondiente para el acceso a la base de datos de WHMCS, url, usuario admin del sistema y clave de acceso.

$_dbServer = "localhost";
$_dbUser = "dbuser";
$_dbPass = "dbpass";
$_dbDatabase = "whmcs";
    
$_whmcsAdminUser = "admin";
$_whmcsAdminPass = "passadmin";
$_whmcsUrl = "http://www.paneldecliente.com/";

classes/FWConfigurations.php

El token y el punto de venta son otrogados por FacturacionWEB. El token es el login a la API, para etapas de testing pedir el entorno de pruebas mediante un TKT en la web y generar un token. Una vez finalizados los testing, solicitar por la misma via que retornen el ambiente de producción. Una vez productivo, deberá generar un nuevo token que será el definitivo.

$accessToken = "6ADmD2l3_AlsGMLn3wa1FF18pGu0275mps9U0nUw7lxHYBIEMqPEwcRAtK_ab43nn";
$puntoVenta = 1001;

Configuraciones sobre WHCMS

Debe realizar una serie de configuraciones sobre el sistema, a detallar.

Seguridad en en whmcs
  • Habilitar IP para acceso a la API de WHMCS. Dirigirse a Setup > General Settings > Security > API IP Access Restriction completar con la dirección IP desde la cual se va a ejecutar esta solución de factura electrónica. Es fundamental para que el sistema pueda interactuar con la API de WHMCS.
Generar campos adicionales de cliente en whmcs

Generar campos adicionales para clientes. Dirigirse a Setup > Custom Client Fields

  • Generar el campo cuitdni tipo Text Box chequear la opción Required Field.
  • Generar el campo tipo_factura tipo Drop Down con las opciones A,B y chequear la opción Required Field y Admin only.
  • Generar el campo condicion_iva del tipo Drop Down con las opciones RI,EX,CF chequear la opción Required Field.
Provincias para argentina

Luego de generados estos 3 campos debe editar cada cliente para configurarlos según corresponda. También deberá configurar el campo State de cada cliente con el nombre de Provincia correspondiente de la manera que fue acordada respetando mayúsculas y minúsculas.
Para hacerlo vayan a /assets/js/StatesDropdown.js y agreguen este codigo en la linea 14 (al final del listado digamos)

states['AR'] = ["Capital Federal","Buenos Aires","Catamarca","Chaco","Chubut","Córdoba","Corrientes","Entre Ríos","Formosa","Jujuy","La Pampa","La Rioja","Mendoza","Misiones","Neuquén","Río Negro","Salta","San Juan","San Luis","Santa Cruz","Santa Fe","Santiago del Estero","Tierra del Fuego","Tucumán","end"]; 

Configuraciones de Base de Datos

Debe generar las siguientes vistas en el orden indicado.

CREATE VIEW tblinvoicesextravalues AS
SELECT t1.relid,
       MAX(IF(t2.fieldname = "cuitdni", t1.value, NULL)) AS cuitdni,
       MAX(IF(t2.fieldname = "condicion_iva", t1.value, NULL)) AS condicion_iva,
       MAX(IF(t2.fieldname = "tipo_factura", t1.value, NULL)) AS tipo_factura
FROM tblcustomfieldsvalues t1
JOIN tblcustomfields t2 ON t1.fieldid = t2.id
GROUP BY t1.relid;
CREATE VIEW tblinvoicesview AS
SELECT tc.id as clientid, tc.firstname,tc.lastname,tc.companyname,tc.email,tc.address1,tc.city,
       tc.state,tc.postcode,tc.phonenumber,
       ti.status,ti.id as invoiceid,ti.subtotal,ti.total,ti.notes,
       tiev.cuitdni, tiev.condicion_iva, tiev.tipo_factura
FROM tblclients tc
LEFT JOIN tblinvoices ti ON ti.userid = tc.id
LEFT JOIN tblinvoicesextravalues tiev ON tc.id = tiev.relid;

Utilizaciòn

Hay 2 opciones para utilizar el sistema, una es manual y la otra es automática mediante cron

Automático mediante cron (solo fact pagas)

El archivo .../cron/cron.php esta preparado para realizar operaciones en background.

Tomará las facturas con estado Paid y notes nulo o vacio + donde el tipo de factura requerida sea A o B.Por cada una de ellas se conectará a la API para obtener el CAE. La actividad será grabada en los logs.

Manual mediante Listado en pantalla (fact pagas e impagas)

Con todos los settings previos realizados, ya podrá listar las facturas pendiente de obtener CAE ingresando por browser a .../pages/listado.php

Serán listadas todas las facturas con estado Paid o Unpaid donde notes sea nulo o vacio, y el tipo de factura requerida sea A o B.

Cada fila tiene sobre la derecha una opción llamada Generar CAE mediante la cual se realiza una conexión a la api de FacturaciónWEB. El resultado general de esta operación devuelve si la factura fue aprobada o rechazada.

Una factura rechazada no puede volverse a procesar con el mismo ID. Deberá generarse una nueva factura y realizar la operación para obtener CAE nuevamente.

Una factura aprobada tiene CAE, entre otros datos. Una factura rechazada indica un detalle del rechazo.

Si por algún motivo se intenta obtener el CAE de una factura que ya fue procesada. La respuesta de la API informará que el ID de factura ya fue procesado y devolverá los datos de la misma.

Luego obtener exitosamente el CAE de una solicitud realizada, se mostrará en pantalla desglosados los datos informados a la API: El detalle de items, valores, etc. Junto con el numero de comprobante y CAE obtenidos.

Obtener comprobante emitido

Recordemos que el numero de CAE es almacenado en campo NOTES, por lo que si el campo notes tiene CAE no podrá verse en el listado para factura manualmente.

Puede obtener los datos de un comprobante emitidos accediendo a la url ../pages/ver.php?id=xxx donde xxx es el invoiceid de la factura a obtener.

El sistema tomará las facturas del sistema y tratará de hacer una factura fiscal, pero no los errores vendrán del lado del procesamiento, por ejemplo :

  • Si el cuit es invalido, vendrá rechazado
  • Si envias una factura como B, el sistema no enviará el campo iva, tomará el campo total y lo enviará así.
  • Si envias una factura como A, el sistema enviará el subtotal, iva y total.