DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bi`.`analisis_ventas_update`()
BEGIN
	DECLARE vLastMonth DATE;

	SET vLastMonth = util.firstDayOfMonth(TIMESTAMPADD(MONTH, -1, util.VN_CURDATE()));

	DELETE FROM analisis_ventas
		WHERE Año > YEAR(vLastMonth)
			OR (Año = YEAR(vLastMonth) AND Mes >= MONTH(vLastMonth));

	INSERT INTO analisis_ventas (
			Familia,
			Reino,
			Comercial,
			Comprador,
			Provincia,
			almacen,
			Año,
			Mes,
			Semana,
			Vista,
			Importe
		)
		SELECT 
			tp.Tipo AS Familia,
			r.reino AS Reino,
			tr.CodigoTrabajador AS Comercial,
			tr2.CodigoTrabajador AS Comprador,
			p.name AS Provincia,
			w.name AS almacen,
			tm.year AS Año,
			tm.month AS Mes,
			tm.week AS Semana,
			dm.description AS Vista,
			bt.importe AS Importe
		FROM bs.ventas bt
			LEFT JOIN vn2008.Tipos tp ON tp.tipo_id = bt.tipo_id
			LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id
			LEFT JOIN vn2008.Clientes c on c.Id_Cliente = bt.Id_Cliente
			LEFT JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = c.Id_Trabajador
			LEFT JOIN vn2008.Trabajadores tr2 ON tr2.Id_Trabajador = tp.Id_Trabajador
			JOIN vn2008.time tm ON tm.date = bt.fecha
			JOIN vn2008.Movimientos m ON m.Id_Movimiento = bt.Id_Movimiento
			LEFT JOIN vn.ticket t ON t.id = m.Id_Ticket
			JOIN vn2008.Agencias a ON a.Id_Agencia = t.agencyModeFk
			LEFT JOIN vn.deliveryMethod dm ON dm.id = a.Vista
			LEFT JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.addressFk
			LEFT JOIN vn2008.province p ON p.province_id = cs.province_id
			LEFT JOIN vn.warehouse w ON w.id = t.warehouseFk
		WHERE bt.fecha >= vLastMonth AND r.mercancia;
END$$
DELIMITER ;
