DROP FUNCTION IF EXISTS `vn`.`invoiceOut_getMaxIssued`; DELIMITER $$ $$ CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceOut_getMaxIssued`( vSerial VARCHAR(2), vCompanyFk INT, vYear INT ) RETURNS DATE READS SQL DATA BEGIN /** * Retorna la fecha a partir de la cual es válido emitir una factura * * @param vSerial Serie de facturación * @param vCompanyFk Empresa factura emitida * @param vYear Año contable * @return vInvoiceOutIssued fecha factura válida */ DECLARE vInvoiceOutIssued DATE; DECLARE vFirstDayOfYear DATE; SET vFirstDayOfYear := MAKEDATE(vYear, 1); SELECT IFNULL(MAX(io.issued), vFirstDayOfYear) INTO vInvoiceOutIssued FROM invoiceOut io WHERE io.serial = vSerial AND io.companyFk = vCompanyFk AND io.issued BETWEEN vFirstDayOfYear AND util.lastDayOfYear(vFirstDayOfYear); RETURN vInvoiceOutIssued; END$$ DELIMITER ;