Parsea archivos PDF de liquidaciones mensuales de tarjetas Visa, Cabal y Maestro (débito únicamente).
- PyPDF2
pip install pypdf2Crear la base de datos (data.db) con el siguiente statement:
CREATE TABLE "cupones"
( `fecha` INTEGER, `sucursal` TEXT, `tarjeta` TEXT, `lote` INTEGER,
`importe` REAL );
CREATE TABLE operaciones
(sucursal char, fpago float, liqno int, lote int, arancel float,
impuestos float, importe float, adicionales float, tarjeta char);
CREATE VIEW cupones_agrupados AS
SELECT
cast(strftime('%m', date(fecha, 'unixepoch')) as int) AS mes,
cast(strftime('%Y', date(fecha, 'unixepoch')) as int) AS ano,
sucursal, tarjeta, lote, SUM(importe) AS importe
FROM cupones
GROUP BY mes, ano, sucursal, tarjeta, lote;
CREATE VIEW lotes_agrupados AS
SELECT
CAST(STRFTIME('%m', DATE(fpago, 'unixepoch')) AS int) AS mes,
CAST(STRFTIME('%Y', DATE(fpago, 'unixepoch')) AS int) AS ano,
sucursal, tarjeta, lote, GROUP_CONCAT(DISTINCT liqno) AS liquidaciones,
SUM(importe) AS importe, SUM(arancel + impuestos + adicionales) AS gastos
FROM operaciones
GROUP BY mes, ano, sucursal, tarjeta, lote;
CREATE VIEW export AS
SELECT
c.mes, c.ano, c.sucursal, c.tarjeta, c.lote, l.liquidaciones,
ROUND(c.importe, 2) AS presentado, ROUND(l.importe, 2) AS liquidado,
ROUND((l.importe - c.importe), 2) AS diferencia,
ROUND(l.gastos, 2) AS gastos
FROM cupones_agrupados c
LEFT JOIN lotes_agrupados l
ON
c.mes == l.mes
AND c.ano == l.ano
AND c.sucursal == l.sucursal
AND c.tarjeta == l.tarjeta
AND c.lote == l.lote;-
Cargar los cupones de liquidaciones desde un archivo
Cupones.csv, con formatofecha|sucursal|tarjeta|lote|importe.- Usar
importarCupones.py, modificando el separador y los caracteres a reemplazar si la configuración regional lo requiriera.
- Usar
-
Borrar todos los PDF que hayan quedado de fechas anteriores.
-
Descargar las liquidaciones mensuales en PDF desde las páginas correspondientes (Prisma para Visa y Cabal, FirstData para Maestro).
-
Guardar esas liquidaciones en una carpeta ./pdf, en el mismo directorio que todos los fuentes.
Importante: Los nombres deben respetar el formato
YYYY-MM-(tarjeta)-(sucursal).pdf. Por ejemplo,2018-08-Maestro-Belgrano.pdf. -
Ejecutar
importfrompdf.py. -
(Opcional) Ejecutar
DBtoCSV.py. Esto crea los archivospagados.csv,nopagados.csvyproblematicos.csv, que pueden ser usados con Excel para visualizar los datos de manera más cómoda.