invoiceOutMake in prod
This commit is contained in:
parent
79f9dfb515
commit
45055034dc
|
@ -1,141 +0,0 @@
|
|||
DROP procedure IF EXISTS `vn`.`invoiceOutMake`;
|
||||
|
||||
DELIMITER $$
|
||||
$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`invoiceOutMake`(
|
||||
vSerial VARCHAR(255),
|
||||
vInvoiceDate DATETIME,
|
||||
OUT vNewInvoiceId INT)
|
||||
BEGIN
|
||||
|
||||
/* Creación de facturas emitidas.
|
||||
* REQUIERE previamente tabla ticketToInvoice.
|
||||
*
|
||||
* @param vSerial, vInvoiceDate, vCompany, vClient
|
||||
*
|
||||
* @return vNewInvoiceId
|
||||
*/
|
||||
|
||||
DECLARE vSpainCountryCode INT DEFAULT 1;
|
||||
DECLARE vIsAnySaleToInvoice BOOL;
|
||||
DECLARE vCountry TINYINT DEFAULT 1;
|
||||
DECLARE vNewRef VARCHAR(255);
|
||||
DECLARE vWorker INT DEFAULT vn.getWorker();
|
||||
DECLARE vCompany INT;
|
||||
DECLARE vClient INT;
|
||||
DECLARE vCplusStandardInvoiceTypeFk INT DEFAULT 1;
|
||||
DECLARE vCplusCorrectingInvoiceTypeFk INT DEFAULT 6;
|
||||
DECLARE vCplusSimplifiedInvoiceTypeFk INT DEFAULT 2;
|
||||
DECLARE vCorrectingSerial VARCHAR(1) DEFAULT 'R';
|
||||
DECLARE vSimplifiedSerial VARCHAR(1) DEFAULT 'S';
|
||||
|
||||
SET vInvoiceDate = IFNULL(vInvoiceDate,CURDATE());
|
||||
|
||||
SELECT t.clientFk, t.companyFk
|
||||
INTO vClient, vCompany
|
||||
FROM ticketToInvoice tt
|
||||
JOIN ticket t ON t.id = tt.id
|
||||
LIMIT 1;
|
||||
|
||||
-- Elimina tickets sense moviments
|
||||
/* UPDATE ticket t
|
||||
JOIN ticketToInvoice ti ON ti.id = t.id
|
||||
LEFT JOIN sale s ON s.ticketFk = ti.id
|
||||
LEFT JOIN expedition e ON e.ticketFk = t.id
|
||||
LEFT JOIN ticketPackaging tp ON tp.ticketFk = t.id
|
||||
SET t.shipped = '2000-02-01 00:00:00'
|
||||
WHERE s.ticketFk IS NULL AND e.ticketFk IS NULL AND e.ticketFk IS NULL;
|
||||
*/
|
||||
-- Eliminem de ticketToInvoice els tickets que no han de ser facturats
|
||||
DELETE ti.*
|
||||
FROM ticketToInvoice ti
|
||||
JOIN ticket t ON t.id = ti.id
|
||||
JOIN client c ON c.id = t.clientFk
|
||||
WHERE YEAR(t.shipped) < 2001
|
||||
OR c.isTaxDataChecked = FALSE;
|
||||
|
||||
SELECT SUM(quantity * price * (100 - discount)/100)
|
||||
INTO vIsAnySaleToInvoice
|
||||
FROM sale s
|
||||
JOIN ticketToInvoice t on t.id = s.ticketFk;
|
||||
|
||||
IF vIsAnySaleToInvoice THEN
|
||||
|
||||
-- el trigger añade el siguiente Id_Factura correspondiente a la vSerial
|
||||
-- el trigger añade el siguiente Id_Factura correspondiente a la vSerial
|
||||
INSERT INTO invoiceOut
|
||||
(
|
||||
ref,
|
||||
serial,
|
||||
issued,
|
||||
clientFk,
|
||||
dued,
|
||||
companyFk,
|
||||
cplusInvoiceType477Fk
|
||||
)
|
||||
SELECT
|
||||
1,
|
||||
vSerial,
|
||||
vInvoiceDate,
|
||||
vClient,
|
||||
getDueDate(vInvoiceDate, dueDay),
|
||||
vCompany,
|
||||
IF(vSerial = vCorrectingSerial,
|
||||
vCplusCorrectingInvoiceTypeFk,
|
||||
IF(vSerial = vSimplifiedSerial,
|
||||
vCplusSimplifiedInvoiceTypeFk,
|
||||
vCplusStandardInvoiceTypeFk))
|
||||
FROM client
|
||||
WHERE id = vClient;
|
||||
|
||||
|
||||
SET vNewInvoiceId = LAST_INSERT_ID();
|
||||
|
||||
SELECT ref
|
||||
INTO vNewRef
|
||||
FROM invoiceOut
|
||||
WHERE id = vNewInvoiceId;
|
||||
|
||||
UPDATE ticket t
|
||||
JOIN ticketToInvoice ti ON ti.id = t.id
|
||||
SET t.refFk = vNewRef;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.updateInter;
|
||||
CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY
|
||||
SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador
|
||||
FROM ticketToInvoice ti
|
||||
LEFT JOIN vn.ticketState ts ON ti.id = ts.ticket
|
||||
JOIN state s
|
||||
WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = vn.getAlert3State(ti.id);
|
||||
|
||||
INSERT INTO vncontrol.inter(state_id,Id_Ticket,Id_Trabajador)
|
||||
SELECT * FROM tmp.updateInter;
|
||||
|
||||
|
||||
INSERT INTO ticketLog (action, userFk,originFk, description)
|
||||
SELECT 'UPDATE',account.userGetId(),ti.id, CONCAT('Crea factura ',vNewRef)
|
||||
FROM ticketToInvoice ti;
|
||||
|
||||
CALL invoiceExpenceMake(vNewInvoiceId);
|
||||
CALL invoiceTaxMake(vNewInvoiceId,vCountry);
|
||||
|
||||
UPDATE invoiceOut io
|
||||
JOIN (
|
||||
SELECT SUM(amount) AS total
|
||||
FROM invoiceOutExpence
|
||||
WHERE invoiceOutFk = vNewInvoiceId
|
||||
) base
|
||||
JOIN (
|
||||
SELECT SUM(vat) AS total
|
||||
FROM invoiceOutTax
|
||||
WHERE invoiceOutFk = vNewInvoiceId
|
||||
) vat
|
||||
SET io.amount = base.total + vat.total
|
||||
WHERE io.id = vNewInvoiceId;
|
||||
|
||||
END IF;
|
||||
|
||||
DROP TEMPORARY TABLE `ticketToInvoice`;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
Loading…
Reference in New Issue