This commit is contained in:
parent
67feac7c6c
commit
6f825ee3bc
|
@ -4849,9 +4849,9 @@ DELIMITER ;;
|
|||
CREATE DEFINER=`root`@`localhost` PROCEDURE `indicatorsUpdate`(vDated DATE)
|
||||
BEGIN
|
||||
|
||||
DECLARE oneYearBefore DATE DEFAULT TIMESTAMPADD(YEAR,-1,vDated);
|
||||
DECLARE twoMonthsBefore DATE DEFAULT TIMESTAMPADD(DAY,-60,vDated);
|
||||
DECLARE oneMonthBefore DATE DEFAULT TIMESTAMPADD(DAY,-30,vDated);
|
||||
DECLARE oneYearBefore DATE DEFAULT TIMESTAMPADD(YEAR,-1, vDated);
|
||||
DECLARE twoMonthsBefore DATE DEFAULT TIMESTAMPADD(DAY,-60, vDated);
|
||||
DECLARE oneMonthBefore DATE DEFAULT TIMESTAMPADD(DAY,-30, vDated);
|
||||
DECLARE vWeek INT;
|
||||
|
||||
REPLACE indicators(updated)
|
||||
|
@ -4860,9 +4860,8 @@ BEGIN
|
|||
-- Ventas totales del ultimo año
|
||||
UPDATE indicators
|
||||
SET lastYearSales =
|
||||
(
|
||||
SELECT SUM(importe + recargo)
|
||||
FROM bs.ventas v
|
||||
(SELECT SUM(importe + recargo)
|
||||
FROM ventas v
|
||||
JOIN vn2008.empresa e ON e.id = v.empresa_id
|
||||
JOIN vn2008.empresa_grupo eg ON eg.empresa_grupo_id = e.empresa_grupo
|
||||
WHERE fecha BETWEEN oneYearBefore AND vDated
|
||||
|
@ -4873,8 +4872,7 @@ BEGIN
|
|||
-- Greuge total acumulado
|
||||
UPDATE indicators
|
||||
SET totalGreuge =
|
||||
(
|
||||
SELECT SUM(amount)
|
||||
(SELECT SUM(amount)
|
||||
FROM vn.greuge
|
||||
WHERE shipped <= vDated
|
||||
)
|
||||
|
@ -4883,34 +4881,32 @@ BEGIN
|
|||
-- Tasa de morosidad con respecto a las ventas del último mes
|
||||
UPDATE indicators
|
||||
SET latePaymentRate =
|
||||
(SELECT SUM(amount) FROM bi.defaulters WHERE date = vDated and amount > 0)
|
||||
(SELECT SUM(amount)
|
||||
FROM bi.defaulters
|
||||
WHERE date = vDated AND amount > 0)
|
||||
/
|
||||
( SELECT SUM(importe + recargo) FROM bs.ventas WHERE fecha BETWEEN oneMonthBefore AND vDated)
|
||||
(SELECT SUM(importe + recargo)
|
||||
FROM ventas
|
||||
WHERE fecha BETWEEN oneMonthBefore AND vDated)
|
||||
WHERE updated = vDated;
|
||||
|
||||
-- Número de trabajadores activos
|
||||
UPDATE indicators
|
||||
SET countEmployee =
|
||||
( SELECT CAST(SUM(hours_week) / 40 AS DECIMAL (10 , 2 ))
|
||||
FROM
|
||||
postgresql.business AS b
|
||||
JOIN postgresql.profile p ON p.profile_id = b.provider_id
|
||||
JOIN postgresql.person pe ON pe.person_id = p.person_id
|
||||
LEFT JOIN
|
||||
postgresql.business_labour AS bl ON bl.business_id = b.business_id
|
||||
LEFT JOIN
|
||||
postgresql.calendar_labour_type AS cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id
|
||||
WHERE
|
||||
(vDated BETWEEN b.date_start AND b.date_end OR (b.date_end IS NULL AND b.date_start <= vDated))
|
||||
AND pe.name = 'VERDNATURA LEVANTE SL'
|
||||
(SELECT CAST(SUM(cl.hours_week) / 40 AS DECIMAL (10, 2))
|
||||
FROM postgresql.business b
|
||||
JOIN postgresql.business_labour bl ON bl.business_id = b.business_id
|
||||
JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id
|
||||
WHERE vDated BETWEEN b.date_start AND IFNULL(b.date_end, vDated)
|
||||
AND b.companyCodeFk = 'VNL'
|
||||
)
|
||||
WHERE updated = vDated;
|
||||
|
||||
-- Maná medio acumulado por comercial
|
||||
UPDATE indicators
|
||||
SET averageMana =
|
||||
(SELECT avg(used)
|
||||
FROM bs.mana_spellers
|
||||
(SELECT AVG(amount)
|
||||
FROM vn.workerMana
|
||||
)
|
||||
WHERE updated = vDated;
|
||||
|
||||
|
@ -4928,14 +4924,12 @@ BEGIN
|
|||
SET lastMonthLostClients =
|
||||
(SELECT COUNT(lm.clientFk)
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT t.clientFk
|
||||
(SELECT DISTINCT t.clientFk
|
||||
FROM vn.ticket t
|
||||
WHERE t.shipped BETWEEN oneMonthBefore AND vDated
|
||||
) cm
|
||||
RIGHT JOIN
|
||||
(
|
||||
SELECT DISTINCT t.clientFk
|
||||
(SELECT DISTINCT t.clientFk
|
||||
FROM vn.ticket t
|
||||
WHERE t.shipped >= twoMonthsBefore
|
||||
AND t.shipped < oneMonthBefore
|
||||
|
@ -4949,14 +4943,12 @@ BEGIN
|
|||
SET lastMonthNewClients =
|
||||
(SELECT COUNT(cm.clientFk)
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT t.clientFk
|
||||
(SELECT DISTINCT t.clientFk
|
||||
FROM vn.ticket t
|
||||
WHERE t.shipped BETWEEN oneMonthBefore AND vDated
|
||||
) cm
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT DISTINCT t.clientFk
|
||||
(SELECT DISTINCT t.clientFk
|
||||
FROM vn.ticket t
|
||||
WHERE t.shipped >= twoMonthsBefore
|
||||
AND t.shipped < oneMonthBefore
|
||||
|
@ -4968,51 +4960,37 @@ BEGIN
|
|||
-- Porcentaje de autopedidos sobre los pedidos totales
|
||||
UPDATE indicators
|
||||
SET lastMonthWebBuyingRate =
|
||||
( SELECT (SUM(source_app != '') - SUM(source_app = 'TPV')) / SUM(source_app != '')
|
||||
(SELECT (SUM(source_app != '') - SUM(source_app = 'TPV')) / SUM(source_app != '')
|
||||
FROM hedera.`order`
|
||||
WHERE date_send BETWEEN oneMonthBefore AND vDated
|
||||
)
|
||||
WHERE updated = vDated;
|
||||
|
||||
/*
|
||||
-- Indicadores de producción
|
||||
UPDATE indicators i
|
||||
JOIN productionIndicators pi ON pi.dated = i.updated
|
||||
SET i.productionHours = pi.productionHours,
|
||||
i.dailyWorkersCost = pi.dailyWorkersCost,
|
||||
i.volumeM3 = pi.volumeM3,
|
||||
i.salesValue = pi.salesValue,
|
||||
i.valueM3 = pi.valueM3,
|
||||
i.hoursM3 = pi.hoursM3,
|
||||
i.workerCostM3 = pi.workerCostM3,
|
||||
i.salesWorkersCostRate = pi.salesWorkersCostRate
|
||||
WHERE updated BETWEEN oneMonthBefore AND vDated;
|
||||
*/
|
||||
|
||||
-- CAP Para el calculo de las ventas agrupado por semanas
|
||||
|
||||
SELECT week
|
||||
-- Cálculo de las ventas agrupado por semanas
|
||||
SELECT week INTO vWeek
|
||||
FROM vn.time
|
||||
WHERE dated=vDated INTO vWeek;
|
||||
WHERE dated = vDated;
|
||||
|
||||
TRUNCATE `bs`.`salesByWeek`;
|
||||
TRUNCATE salesByWeek;
|
||||
|
||||
INSERT INTO `bs`.`salesByWeek` (week,year,sales)
|
||||
SELECT `t`.`week` AS `week`,`t`.`year` AS `year`, SUM(`v`.`importe` + `v`.`recargo`) AS `sales`
|
||||
FROM `bs`.`ventas` `v`
|
||||
LEFT JOIN `vn`.`time` `t` ON `t`.`dated` = fecha
|
||||
GROUP BY `t`.`week` , `t`.`year`
|
||||
ORDER BY `t`.`week` , `t`.`year`;
|
||||
INSERT INTO salesByWeek (week, year, sales)
|
||||
SELECT t.week, t.year, SUM(v.importe + v.recargo) sales
|
||||
FROM ventas v
|
||||
LEFT JOIN vn.time t ON t.dated = fecha
|
||||
GROUP BY t.week, t.year
|
||||
ORDER BY t.week, t.year;
|
||||
|
||||
-- CAP Indicador Ventas semana actual
|
||||
-- Indicador Ventas semana actual
|
||||
UPDATE indicators i
|
||||
JOIN `bs`.`salesByWeek` s ON s.week= vWeek AND s.year = YEAR(vDated)
|
||||
JOIN salesByWeek s ON s.week= vWeek
|
||||
AND s.year = YEAR(vDated)
|
||||
SET i.thisWeekSales = s.sales
|
||||
WHERE updated = vDated;
|
||||
|
||||
-- CAP indicador ventas semana actual en el año pasado
|
||||
-- Indicador ventas semana actual en el año pasado
|
||||
UPDATE indicators i
|
||||
JOIN `bs`.`salesByWeek` s ON s.week= vWeek AND s.year = YEAR(vDated)-1
|
||||
JOIN salesByWeek s ON s.week = vWeek
|
||||
AND s.year = YEAR(vDated)-1
|
||||
SET i.lastYearWeekSales = s.sales
|
||||
WHERE updated = vDated;
|
||||
|
||||
|
@ -6900,7 +6878,6 @@ BEGIN
|
|||
/**
|
||||
* Carga los datos de la plantilla de trabajadores, altas y bajas en la tabla workerLabourDataByMonth para facilitar el cálculo del gráfico en grafana.
|
||||
* Se carga el día 21 de cada mes, elimina los registros del último año y los vuelve a calcular
|
||||
*
|
||||
*/
|
||||
DECLARE vFristDay DATE;
|
||||
DECLARE vLastDay DATE;
|
||||
|
@ -6941,9 +6918,8 @@ BEGIN
|
|||
INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent)
|
||||
SELECT 'hiring', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(wbt.isPermanent)
|
||||
FROM vn.workerLabour w
|
||||
JOIN postgresql.workcenter wc ON wc.workcenter_id = w.workCenterFk
|
||||
JOIN vn.workCenter wc ON wc.id = w.workCenterFk
|
||||
JOIN postgresql.business_labour_payroll bl ON bl.business_id = w.businessFk
|
||||
JOIN postgresql.person p ON p.id_trabajador = w.workerFk
|
||||
LEFT JOIN vn.workerBusinessType wbt ON wbt.id = bl.cod_contrato
|
||||
LEFT JOIN (SELECT w.workerFk
|
||||
FROM vn.workerLabour w
|
||||
|
@ -6951,25 +6927,24 @@ BEGIN
|
|||
AND wl.workerFk = w.workerFk
|
||||
WHERE w.started BETWEEN vFristDay AND vLastDay AND wl.ended
|
||||
)sub ON sub.workerFk = w.workerFk
|
||||
WHERE wc.center_id IS NOT NULL
|
||||
WHERE wc.payrollCenterFk IS NOT NULL
|
||||
AND w.started BETWEEN vFristDay AND vLastDay
|
||||
AND sub.workerFk IS NULL
|
||||
AND NOT p.isFreelance;
|
||||
AND NOT w.isFreelance;
|
||||
|
||||
-- Bajas periodo
|
||||
INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent)
|
||||
SELECT 'layoffs', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(wbt.isPermanent)
|
||||
FROM vn.workerLabour w
|
||||
JOIN postgresql.workcenter wc ON wc.workcenter_id = w.workCenterFk
|
||||
JOIN vn.workCenter wc ON wc.id = w.workCenterFk
|
||||
JOIN postgresql.business_labour_payroll bl ON bl.business_id = w.businessFk
|
||||
JOIN postgresql.person p ON p.id_trabajador = w.workerFk
|
||||
LEFT JOIN vn.workerBusinessType wbt ON wbt.id = bl.cod_contrato
|
||||
LEFT JOIN (SELECT started, workerFk FROM vn.workerLabour) wl ON wl.started >= w.ended
|
||||
AND wl.workerFk = w.workerFk
|
||||
WHERE wc.center_id IS NOT NULL
|
||||
WHERE wc.payrollCenterFk IS NOT NULL
|
||||
AND w.ended BETWEEN vFristDay AND vLastDay
|
||||
AND wl.started IS NULL
|
||||
AND NOT p.isFreelance;
|
||||
AND NOT w.isFreelance;
|
||||
|
||||
-- Anterior al periodo
|
||||
SET vLastDay = LAST_DAY(DATE_SUB(vFristDay, INTERVAL 1 DAY));
|
||||
|
@ -6977,26 +6952,24 @@ BEGIN
|
|||
INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent)
|
||||
SELECT 'staff', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(wbt.isPermanent)
|
||||
FROM vn.workerLabour w
|
||||
JOIN postgresql.workcenter wc ON wc.workcenter_id = w.workCenterFk
|
||||
JOIN vn.workCenter wc ON wc.id = w.workCenterFk
|
||||
JOIN postgresql.business_labour_payroll bl ON bl.business_id = w.businessFk
|
||||
JOIN postgresql.person p ON p.id_trabajador = w.workerFk
|
||||
LEFT JOIN vn.workerBusinessType wbt ON wbt.id = bl.cod_contrato
|
||||
WHERE wc.center_id IS NOT NULL
|
||||
WHERE wc.payrollCenterFk IS NOT NULL
|
||||
AND vLastDay BETWEEN started AND IFNULL(ended, vLastDay)
|
||||
AND NOT p.isFreelance;
|
||||
AND NOT w.isFreelance;
|
||||
|
||||
-- Discapacidad
|
||||
INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent)
|
||||
SELECT 'disabled', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(wbt.isPermanent)
|
||||
FROM vn.workerLabour w
|
||||
JOIN postgresql.workcenter wc ON wc.workcenter_id = w.workCenterFk
|
||||
JOIN vn.workCenter wc ON wc.id = w.workCenterFk
|
||||
JOIN postgresql.business_labour_payroll bl ON bl.business_id = w.businessFk
|
||||
JOIN postgresql.person p ON p.id_trabajador = w.workerFk
|
||||
LEFT JOIN vn.workerBusinessType wbt ON wbt.id = bl.cod_contrato
|
||||
WHERE wc.center_id IS NOT NULL
|
||||
WHERE wc.payrollCenterFk IS NOT NULL
|
||||
AND vLastDay BETWEEN started AND IFNULL(ended, vLastDay)
|
||||
AND p.isDisable
|
||||
AND NOT p.isFreelance;
|
||||
AND w.isDisable
|
||||
AND NOT w.isFreelance;
|
||||
|
||||
END LOOP;
|
||||
CLOSE vCursor;
|
||||
|
@ -21042,21 +21015,20 @@ BEGIN
|
|||
IF(co.country IN ('España', 'España exento'), 1,IF(co.isUeeMember = 1, 2, 4)),
|
||||
IFNULL(s.taxTypeSageFk, 0),
|
||||
n.Nacion,
|
||||
IFNULL(con.Telefono, ''),
|
||||
IFNULL(con.Movil, ''),
|
||||
IFNULL(sc.phone, ''),
|
||||
IFNULL(sc.mobile, ''),
|
||||
IFNULL(s.transactionTypeSageFk, 0),
|
||||
IFNULL(s.withholdingSageFk, '0'),
|
||||
IFNULL(SUBSTR(con.email, 1, (COALESCE(NULLIF(LOCATE(',', con.email), 0), 99) - 1)), ''),
|
||||
IFNULL(SUBSTR(sc.email, 1, (COALESCE(NULLIF(LOCATE(',', sc.email), 0), 99) - 1)), ''),
|
||||
IFNULL(iban, '')
|
||||
FROM vn.supplier s
|
||||
JOIN providerLastThreeMonths pl ON pl.supplierFk = s.id
|
||||
JOIN supplierLastThreeMonths pl ON pl.supplierFk = s.id
|
||||
LEFT JOIN vn.country co ON co.id = s.countryFk
|
||||
LEFT JOIN Naciones n ON n.countryFk = co.id
|
||||
LEFT JOIN vn.province p ON p.id = s.provinceFk
|
||||
LEFT JOIN Provincias pr ON pr.provinceFk = p.id
|
||||
LEFT JOIN vn2008.Relaciones r ON r.Id_Proveedor = s.id
|
||||
LEFT JOIN vn.supplierContact sc ON sc.supplierFk = s.id
|
||||
LEFT JOIN vn.supplierAccount sa ON sa.supplierFk = s.id
|
||||
LEFT JOIN vn2008.Contactos con ON con.Id_Contacto = r.Id_Contacto
|
||||
JOIN vn.company c ON c.id = pl.companyFk
|
||||
WHERE c.id = vCompanyFk AND
|
||||
s.isActive AND
|
||||
|
@ -85349,7 +85321,6 @@ DELIMITER ;
|
|||
DELIMITER ;;
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `timeBusiness_calculate`(vDatedFrom DATETIME, vDatedTo DATETIME)
|
||||
BEGIN
|
||||
|
||||
/**
|
||||
* Horas que debe trabajar un empleado según contrato y día.
|
||||
* @param vDatedFrom workerTimeControl
|
||||
|
@ -85357,7 +85328,6 @@ BEGIN
|
|||
* @table tmp.user(userFk)
|
||||
* @return tmp.timeBusinessCalculate
|
||||
*/
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.timeBusinessCalculate;
|
||||
|
||||
CREATE TEMPORARY TABLE tmp.timeBusinessCalculate
|
||||
|
@ -85374,7 +85344,7 @@ BEGIN
|
|||
timeWorkSeconds timeBusinessSeconds,
|
||||
SEC_TO_TIME(timeWorkSeconds) timeBusinessSexagesimal,
|
||||
timeWorkSeconds / 3600 timeBusinessDecimal,
|
||||
type,
|
||||
name type,
|
||||
permissionRate,
|
||||
hoursWeek,
|
||||
discountRate,
|
||||
|
@ -85387,25 +85357,24 @@ BEGIN
|
|||
IF(j.start = NULL, NULL, GROUP_CONCAT(DISTINCT LEFT(j.end,5) ORDER BY j.end ASC SEPARATOR ' - ')) hourEnd,
|
||||
IF(j.start = NULL, NULL, GROUP_CONCAT(DISTINCT LEFT(j.start,5), " - ", LEFT(j.end,5) ORDER BY j.end ASC SEPARATOR ' - ')) timeTable,
|
||||
IF(j.start = NULL, 0, IFNULL(SUM(TIME_TO_SEC(j.end)) - SUM(TIME_TO_SEC(j.start)),0)) timeWorkSeconds,
|
||||
cs.type,
|
||||
cs.permissionRate,
|
||||
cs.discountRate,
|
||||
at2.name,
|
||||
at2.permissionRate,
|
||||
at2.discountRate,
|
||||
cl.hours_week hoursWeek,
|
||||
cs.isAllowedToWork
|
||||
FROM vn.time t
|
||||
LEFT JOIN postgresql.business b ON t.dated BETWEEN b.date_start AND ifnull(b.date_end, vDatedTo )
|
||||
LEFT JOIN postgresql.profile AS pr ON b.client_id = pr.profile_id
|
||||
LEFT JOIN postgresql.person AS p ON pr.person_id = p.person_id
|
||||
LEFT JOIN vn.worker AS w ON p.id_trabajador = w.id
|
||||
at2.isAllowedToWork
|
||||
FROM time t
|
||||
LEFT JOIN postgresql.business b ON t.dated BETWEEN b.date_start AND IFNULL(b.date_end, vDatedTo )
|
||||
LEFT JOIN postgresql.profile pr ON b.client_id = pr.profile_id
|
||||
LEFT JOIN worker w ON w.id = pr.workerFk
|
||||
JOIN tmp.`user` u ON u.userFK = w.userFK
|
||||
JOIN postgresql.business_labour AS bl ON b.business_id = bl.business_id
|
||||
LEFT JOIN postgresql.business_labour_payroll AS bp ON bl.business_id = bp.business_id
|
||||
LEFT JOIN postgresql.professional_category AS pc ON bl.professional_category_id = pc.professional_category_id
|
||||
LEFT JOIN postgresql.workcenter AS wc ON bl.workcenter_id = wc.workcenter_id
|
||||
LEFT JOIN postgresql.calendar_labour_type AS cl ON bl.calendar_labour_type_id = cl.calendar_labour_type_id
|
||||
LEFT JOIN postgresql.journey AS j ON j.business_id = b.business_id and j.day_id=WEEKDAY(t.dated)+1
|
||||
LEFT JOIN postgresql.calendar_employee ce ON ce.business_id=b.business_id and ce.date = t.dated
|
||||
LEFT JOIN postgresql.calendar_state cs ON cs.calendar_state_id = ce.calendar_state_id
|
||||
JOIN postgresql.business_labour bl ON b.business_id = bl.business_id
|
||||
LEFT JOIN postgresql.business_labour_payroll bp ON bl.business_id = bp.business_id
|
||||
LEFT JOIN postgresql.professional_category pc ON bl.professional_category_id = pc.professional_category_id
|
||||
LEFT JOIN workCenter wc ON bl.workcenter_id = wc.id
|
||||
LEFT JOIN postgresql.calendar_labour_type cl ON bl.calendar_labour_type_id = cl.calendar_labour_type_id
|
||||
LEFT JOIN postgresql.journey j ON j.business_id = b.business_id AND j.day_id=WEEKDAY(t.dated)+1
|
||||
LEFT JOIN postgresql.calendar_employee ce ON ce.business_id=b.business_id AND ce.date = t.dated
|
||||
LEFT JOIN absenceType at2 ON at2.id = ce.calendar_state_id
|
||||
WHERE t.dated BETWEEN vDatedFrom AND vDatedTo
|
||||
GROUP BY w.userFk,dated
|
||||
)sub;
|
||||
|
@ -85427,7 +85396,7 @@ BEGIN
|
|||
WHERE permissionRate <> 0;
|
||||
|
||||
UPDATE tmp.timeBusinessCalculate t
|
||||
JOIN vn.calendarHolidays ch ON ch.dated = t.dated
|
||||
JOIN calendarHolidays ch ON ch.dated = t.dated
|
||||
JOIN postgresql.business_labour bl ON bl.business_id = t.businessFk AND bl.workcenter_id = ch.workcenterFk
|
||||
SET t.timeWorkSeconds = 0,
|
||||
t.timeWorkSexagesimal = 0,
|
||||
|
@ -85503,17 +85472,16 @@ BEGIN
|
|||
SELECT DISTINCT w.userFk
|
||||
FROM postgresql.business AS b
|
||||
LEFT JOIN postgresql.profile AS pr ON pr.profile_id = b.client_id
|
||||
LEFT JOIN postgresql.person AS p ON p.person_id = pr.person_id
|
||||
LEFT JOIN postgresql.business_labour AS bl ON b.business_id = bl.business_id
|
||||
LEFT JOIN vn.worker AS w ON p.id_trabajador = w.id
|
||||
LEFT JOIN vn.department AS d ON bl.department_id = d.id
|
||||
WHERE ((b.date_start BETWEEN vDatedFrom AND vDatedTo OR b.date_end BETWEEN vDatedFrom AND vDatedTo) OR
|
||||
(b.date_end IS NULL AND b.date_start <= vDatedTo) OR
|
||||
(b.date_start <= vDatedFrom AND b.date_end >= vDatedTo)
|
||||
LEFT JOIN worker AS w ON w.id = pr.workerFk
|
||||
LEFT JOIN department AS d ON bl.department_id = d.id
|
||||
WHERE (b.date_start BETWEEN vDatedFrom AND vDatedTo
|
||||
OR IFNULL(b.date_end, vDatedTo) BETWEEN vDatedFrom AND vDatedTo
|
||||
OR (b.date_start <= vDatedFrom AND b.date_end >= vDatedTo)
|
||||
) AND bl.department_id = vDepartmentFk
|
||||
ORDER BY b.date_end DESC;
|
||||
|
||||
CALL vn.timeBusiness_calculate(vDatedFrom, vDatedTo);
|
||||
CALL timeBusiness_calculate(vDatedFrom, vDatedTo);
|
||||
|
||||
DROP TEMPORARY TABLE tmp.`user`;
|
||||
|
||||
|
@ -85949,17 +85917,16 @@ BEGIN
|
|||
SELECT DISTINCT w.userFk
|
||||
FROM postgresql.business AS b
|
||||
LEFT JOIN postgresql.profile AS pr ON pr.profile_id = b.client_id
|
||||
LEFT JOIN postgresql.person AS p ON p.person_id = pr.person_id
|
||||
LEFT JOIN postgresql.business_labour AS bl ON b.business_id = bl.business_id
|
||||
LEFT JOIN vn.worker AS w ON p.id_trabajador = w.id
|
||||
LEFT JOIN vn.department AS d ON bl.department_id = d.id
|
||||
WHERE ((b.date_start BETWEEN vDatedFrom AND vDatedTo OR b.date_end BETWEEN vDatedFrom AND vDatedTo) OR
|
||||
(b.date_end IS NULL AND b.date_start <= vDatedTo) OR
|
||||
(b.date_start <= vDatedFrom AND b.date_end >= vDatedTo)
|
||||
LEFT JOIN worker AS w ON w.id = pr.workerFk
|
||||
LEFT JOIN department AS d ON bl.department_id = d.id
|
||||
WHERE (b.date_start BETWEEN vDatedFrom AND vDatedTo
|
||||
OR IFNULL(b.date_end, vDatedTo) BETWEEN vDatedFrom AND vDatedTo
|
||||
OR (b.date_start <= vDatedFrom AND b.date_end >= vDatedTo)
|
||||
) AND bl.department_id = vDepartmentFk
|
||||
ORDER BY b.date_end DESC;
|
||||
|
||||
CALL vn.timeControl_calculate(vDatedFrom, vDatedTo);
|
||||
CALL timeControl_calculate(vDatedFrom, vDatedTo);
|
||||
|
||||
DROP TEMPORARY TABLE tmp.`user`;
|
||||
|
||||
|
@ -87359,18 +87326,7 @@ DELIMITER ;
|
|||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||
/*!50003 DROP PROCEDURE IF EXISTS `workerCalendar_calculateYear` */;
|
||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
|
||||
DELIMITER ;;
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `workerCalendar_calculateYear`(vYear INT, vWorkerFk INT)
|
||||
BEGIN
|
||||
/*!50003 DROP PROCEDURE IF EXISTS `BEGIN
|
||||
|
||||
/**
|
||||
* Calcula los días y horas de vacaciones en función de un trabajador y año
|
||||
|
@ -87379,7 +87335,6 @@ BEGIN
|
|||
* @param vWorkerFk
|
||||
* @return tmp.workerCalendarCalculateYear (days, hours, daysEnjoyed, hoursEnjoyed)
|
||||
*/
|
||||
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vBusinessFk INT;
|
||||
|
||||
|
@ -87387,9 +87342,8 @@ BEGIN
|
|||
SELECT b.business_id
|
||||
FROM postgresql.business b
|
||||
LEFT JOIN postgresql.profile AS pr ON pr.profile_id = b.client_id
|
||||
LEFT JOIN postgresql.person AS p ON p.person_id = pr.person_id
|
||||
WHERE vYear BETWEEN YEAR(b.date_start) AND IFNULL(YEAR(b.date_end), vYear )
|
||||
AND p.id_trabajador = vWorkerFk;
|
||||
AND pr.workerFk = vWorkerFk;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
||||
SET vDone = TRUE;
|
||||
|
@ -87446,18 +87400,20 @@ DELIMITER ;
|
|||
DELIMITER ;;
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `workerCreate`(
|
||||
vFirstname VARCHAR(50),
|
||||
vSurnames VARCHAR(50),
|
||||
vWorkerCode CHAR(3),
|
||||
vLastName VARCHAR(50),
|
||||
vCode CHAR(3),
|
||||
vBossFk INT,
|
||||
vUserFk INT
|
||||
vUserFk INT,
|
||||
vFi VARCHAR(15) ,
|
||||
vBirth DATE
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Create new worker
|
||||
*
|
||||
*/
|
||||
INSERT INTO worker(id, code, firstName, lastName, userFk, bossFk)
|
||||
VALUES (vUserFk, vWorkerCode, vFirstname, vSurnames, vUserFk, vBossFk);
|
||||
INSERT INTO worker(id, code, firstName, lastName, userFk, bossFk, fi, birth)
|
||||
VALUES (vUserFk, vCode, vFirstname, vLastName, vUserFk, vBossFk, vFi, vBirth);
|
||||
END ;;
|
||||
DELIMITER ;
|
||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||
|
@ -87559,30 +87515,24 @@ BEGIN
|
|||
DROP TEMPORARY TABLE IF EXISTS tmp.workerDepartmentByDate;
|
||||
CREATE TEMPORARY TABLE tmp.workerDepartmentByDate
|
||||
ENGINE = MEMORY
|
||||
SELECT
|
||||
w.userFk,
|
||||
p.name,
|
||||
p.firstname,
|
||||
d.name AS department,
|
||||
d.id as departmentFk,
|
||||
SELECT w.userFk,
|
||||
w.lastName name,
|
||||
w.firstName firstname,
|
||||
d.name department,
|
||||
d.id departmentFk,
|
||||
b.date_start,
|
||||
d.isProduction,
|
||||
CAST(12 * blp.importepactado / clt.hours_week / 52 AS DECIMAL(10,2)) as costeHora ,
|
||||
p.nif
|
||||
|
||||
FROM postgresql.person p
|
||||
JOIN postgresql.profile pr ON p.person_id = pr.person_id
|
||||
CAST(12 * blp.importepactado / clt.hours_week / 52 AS DECIMAL(10,2)) costeHora,
|
||||
w.fi nif
|
||||
FROM postgresql.profile pr
|
||||
JOIN postgresql.business b ON b.client_id = pr.profile_id
|
||||
JOIN postgresql.business_labour bl ON bl.business_id = b.business_id
|
||||
JOIN postgresql.calendar_labour_type clt ON clt.calendar_labour_type_id = bl.calendar_labour_type_id
|
||||
JOIN postgresql.business_labour_payroll blp ON blp.business_id = b.business_id
|
||||
JOIN vn.department d ON d.id = bl.department_id
|
||||
JOIN vn.worker w ON w.id = p.id_trabajador
|
||||
WHERE b.date_start <= vDate AND IFNULL(b.date_end,'3000-01-01') > vDate
|
||||
;
|
||||
|
||||
-- SELECT * FROM tmp.workerDepartmentByDate;
|
||||
|
||||
JOIN department d ON d.id = bl.department_id
|
||||
JOIN worker w ON w.id = pr.workerFk
|
||||
WHERE b.date_start <= vDate
|
||||
AND (b.date_end > vDate OR b.date_end IS NULL);
|
||||
END ;;
|
||||
DELIMITER ;
|
||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||
|
@ -87646,19 +87596,18 @@ BEGIN
|
|||
|
||||
DECLARE rs CURSOR FOR
|
||||
SELECT a.id
|
||||
FROM ((SELECT * FROM (select date_end,date_start,business_id, client_id
|
||||
FROM (SELECT client_id, business_id
|
||||
FROM (SELECT business_id, client_id
|
||||
FROM postgresql.business
|
||||
ORDER BY client_id, date_end IS NULL DESC , date_end DESC)
|
||||
c GROUP BY client_id) c
|
||||
INNER JOIN postgresql.business b ON c.client_id = b.client_id AND c.business_id = b.business_id
|
||||
INNER JOIN postgresql.profile pr ON b.client_id = pr.profile_id
|
||||
INNER JOIN postgresql.person p ON pr.person_id = p.person_id
|
||||
|
||||
INNER JOIN vn.worker w ON p.id_trabajador = w.id)
|
||||
INNER JOIN account.account a ON w.userFk = a.id
|
||||
WHERE ((b.date_end) IS NOT NULL
|
||||
AND (b.date_end) < CURDATE()
|
||||
AND (b.date_end) > TIMESTAMPADD(DAY, -70,CURDATE()) );
|
||||
ORDER BY client_id, date_end IS NULL DESC , date_end DESC
|
||||
LIMIT 10000000000000000000)sub
|
||||
GROUP BY client_id)sub2
|
||||
JOIN postgresql.business b ON sub2.client_id = b.client_id AND sub2.business_id = b.business_id
|
||||
JOIN postgresql.profile pr ON b.client_id = pr.profile_id
|
||||
JOIN account.account a ON pr.workerFk = a.id
|
||||
WHERE b.date_end IS NOT NULL
|
||||
AND b.date_end < CURDATE()
|
||||
AND b.date_end > TIMESTAMPADD(DAY, -70, CURDATE());
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
||||
|
||||
|
@ -89089,16 +89038,14 @@ proc: BEGIN
|
|||
END IF;
|
||||
|
||||
-- VERIFICAR VACACIONES
|
||||
SELECT cs.type INTO vCalendarStateType
|
||||
SELECT at2.name INTO vCalendarStateType
|
||||
FROM postgresql.calendar_employee ce
|
||||
JOIN postgresql.business b USING(business_id)
|
||||
JOIN postgresql.profile pr ON pr.profile_id = b.client_id
|
||||
JOIN postgresql.person p ON p.person_id = pr.person_id
|
||||
JOIN postgresql.calendar_state cs USING(calendar_state_id)
|
||||
JOIN worker w ON w.id = p.id_trabajador
|
||||
JOIN absenceType at2 ON at2.id = ce.calendar_state_id
|
||||
WHERE ce.date = CURDATE()
|
||||
AND cs.isAllowedToWork = FALSE
|
||||
AND w.userFk = vUserFk
|
||||
AND at2.isAllowedToWork = FALSE
|
||||
AND pr.workerFk = vUserFk
|
||||
LIMIT 1;
|
||||
|
||||
IF(LENGTH(vCalendarStateType)) THEN
|
||||
|
@ -89115,9 +89062,7 @@ proc: BEGIN
|
|||
IF (SELECT COUNT(*)
|
||||
FROM postgresql.business b
|
||||
JOIN postgresql.profile pr ON pr.profile_id = b.client_id
|
||||
JOIN postgresql.person p ON p.person_id = pr.person_id
|
||||
JOIN worker w ON w.id = p.id_trabajador
|
||||
WHERE w.userFk = vUserFk
|
||||
WHERE pr.workerFk = vUserFk
|
||||
AND b.date_start <= vDated
|
||||
AND IFNULL(b.date_end,vDated) >= vDated
|
||||
) = 0 THEN
|
||||
|
@ -90345,6 +90290,7 @@ BEGIN
|
|||
DECLARE vPermissionRate DECIMAL(5,2);
|
||||
DECLARE vIsTeleworking BOOL;
|
||||
DECLARE vIsTeleworkingOld BOOL;
|
||||
DECLARE vError BOOL DEFAULT FALSE;
|
||||
|
||||
DECLARE vCursor CURSOR FOR
|
||||
SELECT CONCAT(u.name, '@verdnatura.es'), u.id, tb.dated, tb.timeWorkDecimal, LEFT(tb.timeWorkSexagesimal,5) timeWorkSexagesimal,
|
||||
|
@ -90353,8 +90299,9 @@ BEGIN
|
|||
JOIN user u ON u.id = tb.userFk
|
||||
JOIN department d ON d.id = tb.departmentFk
|
||||
JOIN postgresql.business b ON b.business_id = tb.businessFk
|
||||
JOIN company c ON c.id = b.provider_id
|
||||
LEFT JOIN tmp.timeControlCalculate tc ON tc.userFk = tb.userFk AND tc.dated = tb.dated
|
||||
LEFT JOIN worker w ON w.id = u.id
|
||||
LEFT JOIN `user` u2 ON u2.id = w.bossFk
|
||||
JOIN (SELECT tb.userFk,
|
||||
SUM(IF(tb.type IS NULL,
|
||||
IF(tc.timeWorkDecimal > 0, FALSE, IF(tb.timeWorkDecimal > 0, TRUE, FALSE)),
|
||||
|
@ -90366,17 +90313,28 @@ BEGIN
|
|||
)sub ON sub.userFk = u.id
|
||||
WHERE d.hasToRefill AND
|
||||
IFNULL(vWorkerFk,u.id) = u.id AND
|
||||
c.code = 'VNL'
|
||||
b.companyCodeFk = 'VNL'
|
||||
ORDER BY u.id, tb.dated;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
SET vError = TRUE;
|
||||
|
||||
INSERT INTO tmp.error(workerFk)
|
||||
SELECT vWorkerFk;
|
||||
END;
|
||||
|
||||
DROP TABLE IF EXISTS tmp.timeControlCalculate;
|
||||
DROP TABLE IF EXISTS tmp.timeBusinessCalculate;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.timeBusinessCalculate;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate1;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.timeBusinessCalculate1;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.error;
|
||||
|
||||
CREATE TEMPORARY TABLE tmp.error (workerFk INT);
|
||||
|
||||
SELECT CONCAT (MIN(dated), ' 00:00:00'), CONCAT (MAX(dated), ' 23:59:59') INTO vStarted, vEnded
|
||||
FROM time
|
||||
|
@ -90419,6 +90377,9 @@ proc: LOOP
|
|||
LEAVE proc;
|
||||
END IF;
|
||||
|
||||
START TRANSACTION;
|
||||
SET vError = FALSE;
|
||||
|
||||
IF vTimeWorkDecimal>0 AND vTimeWorkedDecimal IS NULL AND IFNULL(vPermissionRate, TRUE) THEN
|
||||
IF vTimeTable IS NULL THEN
|
||||
INSERT INTO workerTimeControl (userFk, timed, manual, direction, isSendMail)
|
||||
|
@ -90516,9 +90477,10 @@ proc: LOOP
|
|||
FETCH vCursor INTO vReceiver, vWorkerFk, vDated, vTimeWorkDecimal, vTimeWorkSexagesimal, vTimeTable, vTimeWorkedDecimal, vTimeWorkedSexagesimal, vAbsenceType, vBusinessFk, vPermissionRate, vIsTeleworking;
|
||||
|
||||
IF vWorkerFk <> vWorkerFkOld OR vDone THEN
|
||||
SELECT CONCAT( IFNULL(nif, ''), ' - ', firstName, ' ', name ) INTO vWorkerInfo
|
||||
FROM postgresql.person
|
||||
WHERE id_trabajador = vWorkerFkOld;
|
||||
SELECT CONCAT_WS(' ', fi, firstName, surnames) INTO vWorkerInfo
|
||||
FROM person
|
||||
WHERE workerFk = vWorkerFkOld;
|
||||
|
||||
SET vHeader = CONCAT("<br><br><br>
|
||||
<div align=\"center\">
|
||||
<h2>", vWorkerInfo , "</h2>
|
||||
|
@ -90548,7 +90510,7 @@ proc: LOOP
|
|||
</table>
|
||||
</div>");
|
||||
|
||||
IF vIsTeleworkingOld THEN
|
||||
IF vIsTeleworkingOld AND NOT vError THEN
|
||||
CALL mail_insert(
|
||||
vReceiverOld,
|
||||
'timecontrol@verdnatura.es',
|
||||
|
@ -90558,6 +90520,8 @@ proc: LOOP
|
|||
|
||||
INSERT IGNORE INTO workerTimeControlMail (workerFk, year, week)
|
||||
VALUES(vWorkerFkOld, vYear, vWeek);
|
||||
ELSE
|
||||
ROLLBACK;
|
||||
END IF;
|
||||
|
||||
SET vBody = '';
|
||||
|
@ -90566,13 +90530,24 @@ proc: LOOP
|
|||
SET vIsTeleworkingOld = vIsTeleworking;
|
||||
SET vReceiverOld = vReceiver;
|
||||
END IF;
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
CLOSE vCursor;
|
||||
|
||||
INSERT INTO mail (receiver, replyTo, subject, body)
|
||||
SELECT CONCAT(u.name, '@verdnatura.es'),
|
||||
CONCAT('Error registro de horas semana ', vWeek, ' año ', vYear) ,
|
||||
CONCAT('No se ha podido enviar el registro de horas al empleado/s: ', GROUP_CONCAT(DISTINCT CONCAT('<br>', w.id, ' ', w.firstName, ' ', w.lastName)))
|
||||
FROM tmp.error e
|
||||
JOIN worker w ON w.id = e.workerFk
|
||||
JOIN user u ON u.id = w.bossFk
|
||||
GROUP BY w.bossFk;
|
||||
|
||||
DROP TABLE tmp.timeControlCalculate;
|
||||
DROP TABLE tmp.timeBusinessCalculate;
|
||||
DROP TABLE tmp.timeControlCalculate1;
|
||||
DROP TABLE tmp.timeBusinessCalculate1;
|
||||
DROP TABLE tmp.error;
|
||||
END ;;
|
||||
DELIMITER ;
|
||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||
|
@ -90785,33 +90760,30 @@ DELIMITER ;
|
|||
DELIMITER ;;
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `workerWeekControl`(vUserFk INT, vDated DATE, vTabletFk VARCHAR(100))
|
||||
BEGIN
|
||||
|
||||
/* Devuelve la cantidad de descansos de 12h y de 36 horas que ha disfrutado el trabajador
|
||||
/*
|
||||
* Devuelve la cantidad de descansos de 12h y de 36 horas que ha disfrutado el trabajador
|
||||
* en la semana inmediatamente anterior a la fecha que pasa como parámetro.
|
||||
*
|
||||
* UPDATED PAK 2019/09/02
|
||||
* PENDING REVIEW
|
||||
*/
|
||||
DECLARE vDescansos12h INT;
|
||||
DECLARE vDescansos36h INT;
|
||||
DECLARE vJornadas INT;
|
||||
DECLARE vImpares INT;
|
||||
DECLARE vHasSignedToday BOOLEAN;
|
||||
DECLARE v12hoursInMinutes INT DEFAULT 719;
|
||||
DECLARE v36hoursInMinutes INT DEFAULT 2159;
|
||||
DECLARE vCantWork VARCHAR(50) DEFAULT '';
|
||||
DECLARE vDepartmentFk INT;
|
||||
DECLARE isEnabled BOOLEAN DEFAULT TRUE;
|
||||
|
||||
DECLARE vDescansos12h INT;
|
||||
DECLARE vDescansos36h INT;
|
||||
DECLARE vJornadas INT;
|
||||
DECLARE vImpares INT;
|
||||
DECLARE vHasSignedToday BOOLEAN;
|
||||
DECLARE v12hoursInMinutes INT DEFAULT 719;
|
||||
DECLARE v36hoursInMinutes INT DEFAULT 2159;
|
||||
DECLARE vCantWork VARCHAR(50) DEFAULT '';
|
||||
DECLARE vDepartmentFk INT;
|
||||
DECLARE isEnabled BOOLEAN DEFAULT TRUE;
|
||||
SELECT COUNT(*) INTO vHasSignedToday
|
||||
FROM workerTimeControl WHERE timed >= vDated AND userFk = vUserFk;
|
||||
|
||||
SET @day := 0;
|
||||
SET @lastTimed := NOW();
|
||||
|
||||
SELECT COUNT(*) INTO vHasSignedToday
|
||||
FROM vn.workerTimeControl WHERE timed >= vDated AND userFk = vUserFk;
|
||||
|
||||
SET @day := 0;
|
||||
SET @lastTimed := NOW();
|
||||
|
||||
SELECT SUM(IF(interval_in_minutes >= v12hoursInMinutes,1,0)), SUM(FLOOR(interval_in_minutes/ v36hoursInMinutes)) , SUM(jornadas)
|
||||
SELECT SUM(IF(interval_in_minutes >= v12hoursInMinutes,1,0)), SUM(FLOOR(interval_in_minutes/ v36hoursInMinutes)) , SUM(jornadas)
|
||||
INTO vDescansos12h, vDescansos36h, vJornadas
|
||||
FROM
|
||||
(
|
||||
|
@ -90844,8 +90816,8 @@ SELECT SUM(IF(interval_in_minutes >= v12hoursInMinutes,1,0)), SUM(FLOOR(interva
|
|||
WHERE fichada_actual >= TIMESTAMPADD(WEEK, -1, vDated)
|
||||
) sub3 ;
|
||||
|
||||
SELECT IFNULL(SUM(impar),0) into vImpares
|
||||
FROM (
|
||||
SELECT IFNULL(SUM(impar),0) into vImpares
|
||||
FROM (
|
||||
SELECT day(timed) as dayNumber,
|
||||
count(*) mod 2 as impar
|
||||
FROM vn.workerTimeControl wtc
|
||||
|
@ -90854,103 +90826,70 @@ FROM (
|
|||
GROUP BY dayNumber
|
||||
) sub;
|
||||
|
||||
-- Vacaciones
|
||||
SELECT cs.type INTO vCantWork
|
||||
-- Vacaciones
|
||||
SELECT at2.name INTO vCantWork
|
||||
FROM postgresql.calendar_employee ce
|
||||
JOIN postgresql.business b USING(business_id)
|
||||
JOIN postgresql.profile pr ON pr.profile_id = b.client_id
|
||||
JOIN postgresql.person p ON p.person_id = pr.person_id
|
||||
JOIN postgresql.calendar_state cs USING(calendar_state_id)
|
||||
JOIN vn.worker w ON w.id = p.id_trabajador
|
||||
JOIN absenceType at2 ON at2.id = ce.calendar_state_id
|
||||
WHERE ce.date = CURDATE()
|
||||
AND cs.isAllowedToWork = FALSE
|
||||
AND w.userFk = vUserFk
|
||||
AND at2.isAllowedToWork = FALSE
|
||||
AND pr.workerFk = vUserFk
|
||||
LIMIT 1;
|
||||
|
||||
-- Contrato en vigor
|
||||
SELECT IF(COUNT(*),vCantWork,'Sin contrato') INTO vCantWork
|
||||
-- Contrato en vigor
|
||||
SELECT IF(COUNT(*),vCantWork,'Sin contrato') INTO vCantWork
|
||||
FROM postgresql.business b
|
||||
JOIN postgresql.profile pr ON pr.profile_id = b.client_id
|
||||
JOIN postgresql.person p ON p.person_id = pr.person_id
|
||||
JOIN vn.worker w ON w.id = p.id_trabajador
|
||||
WHERE w.userFk = vUserFk
|
||||
WHERE pr.workerFk = vUserFk
|
||||
AND b.date_start <= vDated
|
||||
AND IFNULL(b.date_end,vDated) >= vDated;
|
||||
|
||||
-- Departamento si vTabletFk es 0 no hacemos comprobacion (Madrid y Vilassar)
|
||||
IF vTabletFk <> '0' THEN
|
||||
-- 1 Obtener el departamento del usuario
|
||||
-- Departamento si vTabletFk es 0 no hacemos comprobacion (Madrid y Vilassar)
|
||||
IF vTabletFk <> '0' THEN
|
||||
-- 1 Obtener el departamento del usuario
|
||||
SELECT wtcu.departmentFk INTO vDepartmentFk
|
||||
FROM vn.workerTimeControlUserInfo wtcu
|
||||
FROM workerTimeControlUserInfo wtcu
|
||||
WHERE wtcu.userFk = vUserFk;
|
||||
-- 2 Comprobar si la tablet pertenece al departamento
|
||||
-- 2 Comprobar si la tablet pertenece al departamento
|
||||
SELECT COUNT(td.tabletFk) INTO isEnabled
|
||||
FROM vn.tabletDepartment td
|
||||
FROM tabletDepartment td
|
||||
WHERE td.tabletFk = vTabletFk AND td.departmentFk = vDepartmentFk;
|
||||
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
|
||||
|
||||
IF vJornadas IS NOT NULL THEN
|
||||
IF vJornadas IS NOT NULL THEN
|
||||
|
||||
SELECT 'Jornadas' as Item, vJornadas as Cantidad, 'Correcto' AS Análisis
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT 'Descansos 12 h' as Item, vDescansos12h as Cantidad, IF(vDescansos12h >= vJornadas, 'Correcto','Error: 1 por jornada') as Análisis
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT 'Descansos 36 h' as Item, vDescansos36h as Cantidad, IF(vDescansos36h / 2 >= FLOOR(vJornadas/10), 'Correcto','Error: mínimo 2 cada 14 dias') as Análisis
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT 'Dias con fichadas impares' as Item, vImpares as Cantidad, IF(vImpares = 0, 'Correcto','Error') as Análisis
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT IF (LENGTH(vCantWork),CONCAT('Dia no laborable: ', vCantWork),'Dia laborable') as Item,
|
||||
'' as Cantidad,
|
||||
IF(LENGTH(vCantWork),'Error', 'Correcto') as Análisis
|
||||
|
||||
UNION ALL
|
||||
SELECT 'El fichador no pertenece a tu departamento.' as Item, '' as Cantidad, IF(isEnabled, 'Correcto','Error') as Análisis;
|
||||
|
||||
SELECT 'El fichador no pertenece a tu departamento.' as Item, '' as Cantidad, IF(isEnabled, 'Correcto','Error') as Análisis
|
||||
|
||||
;
|
||||
|
||||
ELSE
|
||||
|
||||
ELSE
|
||||
|
||||
SELECT 'Jornadas' as Item, vJornadas as Cantidad, 'Correcto' AS Análisis
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT 'Descansos 12 h' as Item, vDescansos12h as Cantidad, 'Correcto' as Análisis
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT 'Descansos 36 h' as Item, vDescansos36h as Cantidad, 'Correcto' as Análisis
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT 'Dias con fichadas impares' as Item, vImpares as Cantidad, 'Correcto' as Análisis
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT IF (LENGTH(vCantWork),CONCAT('Dia no laborable: ', vCantWork),'Dia laborable') as Item,
|
||||
'' as Cantidad, IF(LENGTH(vCantWork),'Error', 'Correcto') as Análisis
|
||||
|
||||
UNION ALL
|
||||
SELECT 'El fichador no pertenece a tu departamento.' as Item, '' as Cantidad, IF(isEnabled, 'Correcto','Error') as Análisis;
|
||||
|
||||
SELECT 'El fichador no pertenece a tu departamento.' as Item, '' as Cantidad, IF(isEnabled, 'Correcto','Error') as Análisis
|
||||
;
|
||||
|
||||
END IF;
|
||||
|
||||
|
||||
|
||||
END IF;
|
||||
END ;;
|
||||
DELIMITER ;
|
||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||
|
@ -94308,7 +94247,7 @@ USE `bs`;
|
|||
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `bajasLaborales` AS select `p`.`firstname` AS `firstname`,`p`.`name` AS `name`,`b`.`business_id` AS `business_id`,max(`ce`.`date`) AS `lastDate`,max(ifnull(`b`.`date_end`,curdate())) AS `endContract`,`cs`.`type` AS `type`,cast(count(0) as decimal(10,0)) AS `dias`,`w`.`userFk` AS `userFk` from (((((`postgresql`.`calendar_employee` `ce` join `postgresql`.`business` `b` on((`b`.`business_id` = `ce`.`business_id`))) join `postgresql`.`profile` `pr` on((`pr`.`profile_id` = `b`.`client_id`))) join `postgresql`.`person` `p` on((`p`.`person_id` = `pr`.`person_id`))) join `postgresql`.`calendar_state` `cs` on((`cs`.`calendar_state_id` = `ce`.`calendar_state_id`))) join `vn`.`worker` `w` on((`w`.`id` = `p`.`id_trabajador`))) where ((`ce`.`date` >= (curdate() + interval -(1) year)) and (`cs`.`type` not in ('Vacaciones','Vacaciones 1/2 día','Compensar','Festivo'))) group by `p`.`firstname`,`p`.`name`,`cs`.`type` having (`endContract` >= curdate()) */;
|
||||
/*!50001 VIEW `bajasLaborales` AS SELECT `w`.`firstName` AS `firstname`, `w`.`lastName` AS `name`, `b`.`business_id` AS `business_id`, MAX(`ce`.`date`) AS `lastDate`, MAX(IFNULL(`b`.`date_end`, CURDATE())) AS `endContract`, `at`.`name` AS `type`, CAST(COUNT(0) AS DECIMAL (10 , 0 )) AS `dias`, `w`.`id` AS `userFk` FROM ((((`postgresql`.`calendar_employee` `ce` JOIN `postgresql`.`business` `b` ON ((`b`.`business_id` = `ce`.`business_id`))) JOIN `postgresql`.`profile` `pr` ON ((`pr`.`profile_id` = `b`.`client_id`))) JOIN `vn`.`worker` `w` ON ((`w`.`id` = `pr`.`workerFk`))) JOIN `vn`.`absenceType` `at` ON ((`at`.`id` = `ce`.`calendar_state_id`))) WHERE ((`ce`.`date` >= (CURDATE() + INTERVAL -(1) YEAR)) AND (`at`.`name` NOT IN ('Vacaciones' , 'Vacaciones 1/2 día', 'Compensar', 'Festivo'))) GROUP BY w.firstName , w.lastName , at.name HAVING (endContract >= CURDATE()) */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
@ -95237,11 +95176,11 @@ USE `sage`;
|
|||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `providerLastThreeMonths`
|
||||
-- Final view structure for view `supplierLastThreeMonths`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `providerLastThreeMonths`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `providerLastThreeMonths`*/;
|
||||
/*!50001 DROP TABLE IF EXISTS `supplierLastThreeMonths `*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `supplierLastThreeMonths`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
|
@ -95250,7 +95189,7 @@ USE `sage`;
|
|||
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `providerLastThreeMonths` AS select `vn`.`invoiceIn`.`supplierFk` AS `supplierFk`,`vn`.`invoiceIn`.`companyFk` AS `companyFk` from `vn`.`invoiceIn` where (`vn`.`invoiceIn`.`issued` > (curdate() - interval 3 month)) union select `vn`.`payment`.`supplierFk` AS `supplierFk`,`vn`.`payment`.`companyFk` AS `companyFk` from `vn`.`payment` where (`vn`.`payment`.`received` > (curdate() + interval -(3) month)) */;
|
||||
/*!50001 VIEW `supplierLastThreeMonths` AS SELECT `vn`.`invoiceIn`.`supplierFk` AS `supplierFk`, `vn`.`invoiceIn`.`companyFk` AS `companyFk` FROM `vn`.`invoiceIn` WHERE (`vn`.`invoiceIn`.`issued` > (CURDATE() - INTERVAL 3 MONTH)) UNION SELECT `vn`.`payment`.`supplierFk` AS `supplierFk`, `vn`.`payment`.`companyFk` AS `companyFk` FROM `vn`.`payment` WHERE (`vn`.`payment`.`received` > (CURDATE() + INTERVAL -(3) MONTH)) */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
@ -97136,7 +97075,7 @@ USE `vn`;
|
|||
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `personMedia` AS select `p`.`id_trabajador` AS `workerFk`,`m`.`value` AS `mediaValue` from ((((`postgresql`.`person` `p` join `postgresql`.`profile` `po` on((`po`.`person_id` = `p`.`person_id`))) join `postgresql`.`profile_media` `pom` on((`pom`.`profile_id` = `po`.`profile_id`))) join `postgresql`.`media` `m` on((`m`.`media_id` = `pom`.`media_id`))) join `postgresql`.`media_type` `mt` on((`mt`.`media_type_id` = `m`.`media_type_id`))) where (`mt`.`name` = 'movil personal') */;
|
||||
/*!50001 VIEW `personMedia` AS SELECT `po`.`workerFk` AS `workerFk`, `m`.`value` AS `mediaValue` FROM (((`postgresql`.`profile` `po` JOIN `postgresql`.`profile_media` `pom` ON ((`pom`.`profile_id` = `po`.`profile_id`))) JOIN `postgresql`.`media` `m` ON ((`m`.`media_id` = `pom`.`media_id`))) JOIN `postgresql`.`media_type` `mt` ON ((`mt`.`media_type_id` = `m`.`media_type_id`))) WHERE (`mt`.`name` = 'movil personal') */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
@ -97459,7 +97398,7 @@ USE `vn`;
|
|||
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `salesPersonSince` AS select `p`.`id_trabajador` AS `workerFk`,min(`b`.`date_start`) AS `started` from ((((`postgresql`.`person` `p` join `postgresql`.`profile` `pr` on((`pr`.`person_id` = `p`.`person_id`))) left join `postgresql`.`business` `b` on((`pr`.`profile_id` = `b`.`client_id`))) left join `postgresql`.`business_labour` `bl` on((`b`.`business_id` = `bl`.`business_id`))) join `postgresql`.`professional_category` `pc` on((`pc`.`professional_category_id` = `bl`.`professional_category_id`))) where (`pc`.`category_name` = 'Aux ventas') group by `p`.`id_trabajador` */;
|
||||
/*!50001 VIEW `salesPersonSince` AS SELECT `pr`.`workerFk` AS `workerFk`, MIN(`b`.`date_start`) AS `started` FROM (((`postgresql`.`profile` `pr` LEFT JOIN `postgresql`.`business` `b` ON ((`pr`.`profile_id` = `b`.`client_id`))) LEFT JOIN `postgresql`.`business_labour` `bl` ON ((`b`.`business_id` = `bl`.`business_id`))) JOIN `postgresql`.`professional_category` `pc` ON ((`pc`.`professional_category_id` = `bl`.`professional_category_id`))) WHERE (`pc`.`category_name` = 'Aux ventas') GROUP BY `pr`.`workerFk` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
@ -97877,7 +97816,7 @@ USE `vn`;
|
|||
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `workerBusinessDated` AS select `t`.`dated` AS `dated`,`b`.`business_id` AS `business_id`,`w`.`id` AS `workerFk` from ((((`vn`.`time` `t` left join `postgresql`.`business` `b` on((`t`.`dated` between `b`.`date_start` and ifnull(`b`.`date_end`,curdate())))) left join `postgresql`.`profile` `pr` on((`b`.`client_id` = `pr`.`profile_id`))) left join `postgresql`.`person` `p` on((`pr`.`person_id` = `p`.`person_id`))) left join `vn`.`worker` `w` on((`p`.`id_trabajador` = `w`.`id`))) where (`t`.`dated` > (curdate() + interval -(2) year)) */;
|
||||
/*!50001 VIEW `workerBusinessDated` AS SELECT `t`.`dated` AS `dated`, `b`.`business_id` AS `business_id`, `pr`.`workerFk` AS `workerFk` FROM ((`vn`.`time` `t` LEFT JOIN `postgresql`.`business` `b` ON ((`t`.`dated` BETWEEN `b`.`date_start` AND IFNULL(`b`.`date_end`, CURDATE())))) LEFT JOIN `postgresql`.`profile` `pr` ON ((`b`.`client_id` = `pr`.`profile_id`))) WHERE (`t`.`dated` > (CURDATE() + INTERVAL -(2) YEAR)) */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
@ -97896,7 +97835,7 @@ USE `vn`;
|
|||
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `workerCalendar` AS select `ce`.`business_id` AS `businessFk`,`p`.`id_trabajador` AS `workerFk`,`ce`.`calendar_state_id` AS `absenceTypeFk`,`ce`.`date` AS `dated` from (((`postgresql`.`person` `p` join `postgresql`.`profile` `pr` on((`pr`.`person_id` = `p`.`person_id`))) join `postgresql`.`business` `b` on((`b`.`client_id` = `pr`.`profile_id`))) join `postgresql`.`calendar_employee` `ce` on((`ce`.`business_id` = `b`.`business_id`))) */;
|
||||
/*!50001 VIEW `workerCalendar` AS SELECT `ce`.`business_id` AS `businessFk`, `pr`.`workerFk` AS `workerFk`, `ce`.`calendar_state_id` AS `absenceTypeFk`, `ce`.`date` AS `dated` FROM ((`postgresql`.`profile` `pr` JOIN `postgresql`.`business` `b` ON ((`b`.`client_id` = `pr`.`profile_id`))) JOIN `postgresql`.`calendar_employee` `ce` ON ((`ce`.`business_id` = `b`.`business_id`))) */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
@ -97915,7 +97854,7 @@ USE `vn`;
|
|||
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `workerDepartment` AS select `p`.`id_trabajador` AS `workerFk`,`d`.`id` AS `departmentFk` from (((`postgresql`.`person` `p` join `postgresql`.`profile` `pr` on((`pr`.`person_id` = `p`.`person_id`))) left join (`postgresql`.`business` `b` left join `postgresql`.`business_labour` `bl` on((`b`.`business_id` = `bl`.`business_id`))) on((`pr`.`profile_id` = `b`.`client_id`))) join `vn`.`department` `d` on((`d`.`id` = `bl`.`department_id`))) where ((isnull(`b`.`date_end`) and (`b`.`date_start` <= curdate())) or ((`b`.`date_end` >= curdate()) and (`b`.`date_start` <= curdate()))) */;
|
||||
/*!50001 VIEW `workerDepartment` AS SELECT `pr`.`workerFk` AS `workerFk`, `bl`.`department_id` AS `departmentFk` FROM (`postgresql`.`profile` `pr` LEFT JOIN (`postgresql`.`business` `b` LEFT JOIN `postgresql`.`business_labour` `bl` ON ((`b`.`business_id` = `bl`.`business_id`))) ON ((`pr`.`profile_id` = `b`.`client_id`))) WHERE ((ISNULL(`b`.`date_end`) AND (`b`.`date_start` <= CURDATE())) OR ((`b`.`date_end` >= CURDATE()) AND (`b`.`date_start` <= CURDATE()))) */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
@ -97953,7 +97892,7 @@ USE `vn`;
|
|||
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `workerLabour` AS select `b`.`business_id` AS `businessFk`,`p`.`id_trabajador` AS `workerFk`,`bl`.`workcenter_id` AS `workCenterFk`,`b`.`date_start` AS `started`,`b`.`date_end` AS `ended`,`d`.`id` AS `departmentFk`,`b`.`payedHolidays` AS `payedHolidays` from ((((`postgresql`.`person` `p` join `postgresql`.`profile` `pr` on((`pr`.`person_id` = `p`.`person_id`))) join `postgresql`.`business` `b` on((`b`.`client_id` = `pr`.`profile_id`))) join `postgresql`.`business_labour` `bl` on((`b`.`business_id` = `bl`.`business_id`))) join `vn`.`department` `d` on((`d`.`id` = `bl`.`department_id`))) order by `b`.`date_start` desc */;
|
||||
/*!50001 VIEW `workerLabour` AS SELECT `b`.`business_id` AS `businessFk`, `pr`.`workerFk` AS `workerFk`, `bl`.`workcenter_id` AS `workCenterFk`, `b`.`date_start` AS `started`, `b`.`date_end` AS `ended`, `d`.`id` AS `departmentFk`, `b`.`payedHolidays` AS `payedHolidays` FROM (((`postgresql`.`profile` `pr` JOIN `postgresql`.`business` `b` ON ((`b`.`client_id` = `pr`.`profile_id`))) JOIN `postgresql`.`business_labour` `bl` ON ((`b`.`business_id` = `bl`.`business_id`))) JOIN `vn`.`department` `d` ON ((`d`.`id` = `bl`.`department_id`))) ORDER BY `b`.`date_start` DESC */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
@ -97991,7 +97930,7 @@ USE `vn`;
|
|||
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `workerMedia` AS select `p`.`id_trabajador` AS `workerFk`,`m`.`value` AS `mediaValue` from ((((`postgresql`.`person` `p` join `postgresql`.`profile` `po` on((`po`.`person_id` = `p`.`person_id`))) join `postgresql`.`profile_media` `pom` on((`pom`.`profile_id` = `po`.`profile_id`))) join `postgresql`.`media` `m` on((`m`.`media_id` = `pom`.`media_id`))) join `postgresql`.`media_type` `mt` on((`mt`.`media_type_id` = `m`.`media_type_id`))) where (`mt`.`name` = 'movil empresa') */;
|
||||
/*!50001 VIEW `workerMedia` AS SELECT `po`.`workerFk` AS `workerFk`, `m`.`value` AS `mediaValue` FROM (((`postgresql`.`profile` `po` JOIN `postgresql`.`profile_media` `pom` ON ((`pom`.`profile_id` = `po`.`profile_id`))) JOIN `postgresql`.`media` `m` ON ((`m`.`media_id` = `pom`.`media_id`))) JOIN `postgresql`.`media_type` `mt` ON ((`mt`.`media_type_id` = `m`.`media_type_id`))) WHERE (`mt`.`name` = 'movil empresa') */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
|
Loading…
Reference in New Issue