Backend I August 31, 2018

En Anjelica, el ERP desarrollado por mi hace unos años, hay un programa que saca un comparativo de ventas, entre dos años, mostrando mes a mes, los kilos, importes y ganancias.

La idea es realizar esta misma consulta pero usando Spring con REST en el backend y como frontend usar Angular.

Para ello se realizaran los siguientes pasos:

  1.  Crear tablas y cargar datos de prueba en la base de datos. Usare H2 embebido, en vez de postgresql, que es la base de datos que usa Anjelica.
  2. Crear aplicación servidor, bajo TOMCAT 9, usando Spring 5.  No usare Spring Boot para este ejemplo, aunque podría hacerlo perfectamente y de hecho haría la aplicación más sencilla.
  3. Crear aplicación cliente, para lo cual usare Angular 6.

La aplicación, como se ve en el anterior pantallazo, nos mostrara las ventas por meses, haciendo un comparativo del ejercicio introducido contra el anterior. Pulsando en cada mes, veremos las ventas por semanas.

Para empezar vamos a definir las tablas que usaremos en esta consulta:

--
-- Tabla calendarios
--
create table calendario
(
cal_ano int, -- Año
cal_mes int, -- Mes
cal_fecini date, -- Fecha Inicial
cal_fecfin date, -- Fecha Final.
constraint ix_calendario primary key (cal_ano,cal_mes)
);
create table histventas
(
hve_fecini date not null, -- Fecha Inicial
hve_fecfin date not null, -- Fecha Final
hve_kilven float, -- Kilos Venta (Total)
hve_impven float, -- Importe Ventas (Total)
hve_impgan float, -- Importe ganancia
div_codi int not null default 1, -- Divisa
constraint ix_histventas primary key (hve_fecini ,hve_fecfin,div_codi  )
);

Como se ve, tenemos una tabla calendario donde definimos, para cada mes, cual es la fecha inicial y fecha final. Esto es porque nosotros definimos cuando empieza un mes y cuando termina, la razón de hacerlo así es porque, en muchas empresas se vende por semanas enteras y como queremos hacer comparativos nos puede interesar especificar que semanas consideramos que son de un mes.

Así, en los datos que cargaremos, el mes de enero del 2018, empieza el día 11 (lunes) y termina el día 271 sábado, y el mes de febrero empieza el 281 y termina el 242. Es decir en nuestra empresa ficticia la semana comienza el domingo y termina el sábado siguiente (ambos inclusive). Excepto al principio del año, que empieza siempre el 11 y termina el 3112.

En la tabla histventas tenemos una serie de acumulados para los periodos marcados por hve_fecini (fecha Inicio) y hve_fecfin  (Fecha Final) y para una divisa dada.Esta tabla no tiene un indice único, pero buscaremos por los datos por esos 3 campos

Esta tabla la llena un proceso automático del ERP, a través de las tablas de ventas, pero en este ejemplo no explicare como se llenan esos datos, sino que precargare unos datos en la propia aplicación, cuando se instancie la base de datos.

En la siguiente entrada, empezare con el programa de la parte del servidor, pero podéis echarle un vistazo al código en https://github.com/chuchip/yagesserver.git

 

¡¡ Nos vemos pronto!!