
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_setVisibleDiscard`(
    vItemFk INT,
	vWarehouseFk INT,
	vQuantity INT,
	vAddressFk INT)

BEGIN
	DECLARE vTicketFk INT;
	DECLARE vClientFk INT;
	DECLARE vCompanyVnlFk INT;
	DECLARE vCalc INT;

	SELECT barcodeToItem(vItemFk) INTO vItemFk;

	SELECT DEFAULT(companyFk)  INTO vCompanyVnlFk 
		FROM vn.ticket LIMIT 1;

	SELECT a.clientFk INTO vClientFk
		FROM address a
		WHERE a.id = vAddressFk;

	SELECT t.id INTO vTicketFk
		FROM ticket t
			JOIN address a ON a.id = t.addressFk
		WHERE t.warehouseFk = vWarehouseFk
			AND a.id = vAddressFk
			AND DATE(t.shipped) = util.VN_CURDATE();

	CALL cache.visible_refresh(vCalc, TRUE, vWarehouseFk);

	IF vTicketFk IS NULL THEN
		CALL ticket_add(
			vClientFk,
			util.VN_CURDATE(),
			vWarehouseFk,
			vCompanyVnlFk,
			vAddressFk,
			NULL,
			NULL,
			util.VN_CURDATE(),
			account.myUser_getId(),
			FALSE,
			vTicketFk);
	END IF;

	INSERT INTO sale(ticketFk, itemFk, concept, quantity)
		SELECT vTicketFk,
				vItemFk,
				CONCAT(longName,' ', getWorkerCode(), ' ', LEFT(CAST(util.VN_NOW() AS TIME),5)),
				vQuantity
			FROM item
			WHERE id = vItemFk;

	UPDATE cache.visible
		SET visible = visible - vQuantity
		WHERE calc_id = vCalc
			AND item_id = vItemFk;
END$$
DELIMITER ;

