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
tipoText Box
chequear la opciónRequired Field
. - Generar el campo
tipo_factura
tipoDrop Down
con las opcionesA,B
y chequear la opciónRequired Field
yAdmin only
. - Generar el campo
condicion_iva
del tipoDrop Down
con las opcionesRI,EX,CF
chequear la opciónRequired 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
ynotes
nulo o vacio + donde el tipo de factura requerida seaA
oB
.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
oUnpaid
dondenotes
sea nulo o vacio, y el tipo de factura requerida seaA
oB
.
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.