DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_priceDifference`( vTicketFk INT, vLanded DATE, vAddressFk INT, vZoneFk INT, vWarehouseFk INT ) BEGIN /** * Devuelve las diferencias de precio de los movimientos de un ticket. * * @param vTicketFk Id del ticket * @param vLanded Fecha de recepcion * @param vAddressFk Id del consignatario * @param vZoneFk Id de la zona * @param vWarehouseFk Id del almacén */ CALL vn.ticket_componentPreview(vTicketFk, vLanded, vAddressFk, vZoneFk, vWarehouseFk); SELECT s.itemFk, i.name, i.size, i.category, IFNULL(s.quantity, 0) quantity, IFNULL(s.price, 0) price, ROUND(SUM(tc.cost), 2) newPrice, s.quantity * (s.price - ROUND(SUM(tc.cost), 2)) difference, s.id saleFk FROM sale s JOIN item i ON i.id = s.itemFk JOIN ticket t ON t.id = s.ticketFk LEFT JOIN tmp.ticketComponentPreview tc ON tc.itemFk = s.itemFk AND tc.warehouseFk = vWarehouseFk LEFT JOIN saleComponent sc ON sc.saleFk = s.id AND sc.componentFk = tc.componentFk LEFT JOIN `component` c ON c.id = tc.componentFk WHERE t.id = vTicketFk AND IF(sc.componentFk IS NULL AND c.classRate IS NOT NULL, FALSE, TRUE) GROUP BY s.id ORDER BY s.id; DROP TEMPORARY TABLE tmp.ticketComponentPreview; END$$ DELIMITER ;