100 lines
3.5 KiB
SQL
100 lines
3.5 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`workerProductivity_add`()
|
|
BEGIN
|
|
DECLARE vDateFrom DATE;
|
|
SELECT DATE_SUB(util.VN_CURDATE(),INTERVAL 30 DAY) INTO vDateFrom;
|
|
|
|
DELETE FROM workerProductivity
|
|
WHERE dated >= vDateFrom;
|
|
|
|
-- SACADORES Y ARTIFICIAL
|
|
INSERT INTO workerProductivity(dated, wareHouseFk, workerFk, volume, seconds, stateFk)
|
|
SELECT sub.dated,
|
|
sub.warehouseFk,
|
|
sub.workerFk,
|
|
SUM(sub.volume),
|
|
SUM(sub.seconds),
|
|
sub.stateFk
|
|
FROM(SELECT t.warehouseFk warehouseFk,
|
|
st.workerFk,
|
|
DATE(t.shipped) dated,
|
|
SUM((ic.cm3delivery * s.quantity)/1000000) volume,
|
|
TIME_TO_SEC(TIMEDIFF( MAX(st.created),MIN(st.created))) + wc.minSeconsItemPicker seconds,
|
|
s2.id stateFk
|
|
FROM vn.saleTracking st
|
|
LEFT JOIN vn.salesPreviousPreparated sp ON sp.saleFk = st.saleFk
|
|
JOIN vn.sale s ON s.id = st.saleFk
|
|
JOIN vn.ticket t ON t.id = s.ticketFk
|
|
JOIN vn.itemCost ic ON ic.warehouseFk = t.warehouseFk AND ic.itemFk = s.itemFk
|
|
JOIN vn.worker w ON w.id = st.workerFk
|
|
JOIN vn.state s2 ON s2.id = st.stateFk
|
|
LEFT JOIN vn.workerDepartment wd ON wd.workerFk = st.workerFk
|
|
JOIN workerProductivityConfig wc ON TRUE
|
|
WHERE t.shipped >= vDateFrom
|
|
AND ISNULL(sp.saleFk)
|
|
AND (s2.code IN ('OK PREVIOUS', 'PREVIOUS_PREPARATION', 'PREPARED', 'OK'))
|
|
GROUP BY t.id, t.warehouseFk, st.workerFk
|
|
) sub
|
|
GROUP BY sub.warehouseFk, sub.workerFk, sub.dated;
|
|
|
|
-- ENCAJADORES
|
|
INSERT INTO workerProductivity(dated, wareHouseFk, workerFk, volume, seconds, stateFk)
|
|
SELECT sub2.shipped,
|
|
sub2.warehouseFk,
|
|
sub2.workerFK,
|
|
SUM(sub2.volume),
|
|
SUM(sub2.seconds),
|
|
s2.id stateFk
|
|
FROM (SELECT t.warehouseFk,
|
|
SUM(s.volume) volume,
|
|
sub.workerFk,
|
|
DATE(t.shipped) shipped,
|
|
sub.seconds + w.minSeconsPackager seconds,
|
|
s.saleFk
|
|
FROM vn.saleVolume s
|
|
JOIN vn.ticket t ON t.id = s.ticketFk
|
|
JOIN(SELECT e.workerFk, e.ticketFk,TIME_TO_SEC(TIMEDIFF( MAX(e.created), MIN(e.created))) seconds
|
|
FROM vn.expedition e
|
|
JOIN vn.ticket t ON t.id = e.ticketFk
|
|
WHERE e.workerFk IS NOT NULL AND
|
|
t.shipped >= vDateFrom
|
|
GROUP BY e.ticketFk
|
|
)sub ON sub.ticketFk = t.id
|
|
JOIN workerProductivityConfig w ON TRUE
|
|
GROUP BY s.ticketFk, t.warehouseFk
|
|
)sub2
|
|
JOIN vn.state s2 ON s2.code IN ('PACKING','PACKED')
|
|
GROUP BY sub2.warehouseFk,sub2.workerFk, sub2.shipped;
|
|
|
|
-- REVISADORES
|
|
INSERT INTO workerProductivity(dated, wareHouseFk, workerFk, volume, seconds, stateFk)
|
|
SELECT sub2.shipped,
|
|
sub2.warehouseFk,
|
|
sub2.workerFK,
|
|
SUM(sub2.volume),
|
|
SUM(sub2.seconds),
|
|
sub2.stateFk
|
|
FROM (SELECT t.warehouseFk,
|
|
SUM(s.volume) volume,
|
|
sub.workerFk,
|
|
DATE(t.shipped) shipped,
|
|
sub.seconds + w.minSeconsPackager seconds,
|
|
sub.stateFk
|
|
FROM vn.saleVolume s
|
|
JOIN vn.ticket t ON t.id = s.ticketFk
|
|
JOIN(SELECT st.workerFk, t.id ticketFk,TIME_TO_SEC(TIMEDIFF( MAX(st.created), MIN(st.created))) seconds, s2.id stateFk
|
|
FROM vn.saleTracking st
|
|
JOIN vn.state s2 ON s2.id = st.stateFk
|
|
JOIN vn.sale s ON s.id = st.saleFk
|
|
JOIN vn.ticket t ON s.ticketFk = t.id
|
|
WHERE s2.code = 'CHECKED'
|
|
AND t.shipped >= vDateFrom
|
|
GROUP BY t.id
|
|
)sub ON sub.ticketFk = t.id
|
|
JOIN workerProductivityConfig w ON TRUE
|
|
GROUP BY s.ticketFk, t.warehouseFk
|
|
)sub2
|
|
GROUP BY sub2.warehouseFk,sub2.workerFk, sub2.shipped;
|
|
END$$
|
|
DELIMITER ;
|