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