8713-testToMaster #3523

Merged
alexm merged 383 commits from 8713-testToMaster into master 2025-03-04 06:52:15 +00:00
14 changed files with 124 additions and 112 deletions
Showing only changes of commit a874b96c5e - Show all commits

View File

@ -23,7 +23,6 @@ BEGIN
DECLARE vInvoiceTypeReceived VARCHAR(1); DECLARE vInvoiceTypeReceived VARCHAR(1);
DECLARE vInvoiceTypeInformative VARCHAR(1); DECLARE vInvoiceTypeInformative VARCHAR(1);
DECLARE vIsInformativeExportation BOOL DEFAULT FALSE; DECLARE vIsInformativeExportation BOOL DEFAULT FALSE;
DECLARE vIsDeductible BOOL;
DECLARE vCursor CURSOR FOR DECLARE vCursor CURSOR FOR
SELECT SUM(it.taxableBase), SELECT SUM(it.taxableBase),
@ -32,8 +31,7 @@ BEGIN
it.transactionTypeSageFk, it.transactionTypeSageFk,
it.taxTypeSageFk, it.taxTypeSageFk,
tty.isIntracommunity, tty.isIntracommunity,
tt.ClaveOperacionDefecto, tt.ClaveOperacionDefecto
it.isDeductible
FROM vn.invoiceIn i FROM vn.invoiceIn i
JOIN vn.invoiceInTax it ON it.InvoiceInFk = i.id JOIN vn.invoiceInTax it ON it.InvoiceInFk = i.id
JOIN TiposIva t ON t.CodigoIva = it.taxTypeSageFk JOIN TiposIva t ON t.CodigoIva = it.taxTypeSageFk
@ -67,8 +65,7 @@ BEGIN
vTransactionCode, vTransactionCode,
vTaxCode, vTaxCode,
vIsIntracommunity, vIsIntracommunity,
vOperationCode, vOperationCode;
vIsDeductible;
IF vDone THEN IF vDone THEN
LEAVE l; LEAVE l;
@ -91,8 +88,7 @@ BEGIN
PorIva1 = vRate, PorIva1 = vRate,
CuotaIva1 = vVat, CuotaIva1 = vVat,
CodigoTransaccion1 = vTransactionCode, CodigoTransaccion1 = vTransactionCode,
CodigoIva1 = vTaxCode, CodigoIva1 = vTaxCode
IvaDeducible1 = vIsDeductible
WHERE id = vXDiarioFk; WHERE id = vXDiarioFk;
WHEN 2 THEN WHEN 2 THEN
@ -101,8 +97,7 @@ BEGIN
PorIva2 = vRate, PorIva2 = vRate,
CuotaIva2 = vVat, CuotaIva2 = vVat,
CodigoTransaccion2 = vTransactionCode, CodigoTransaccion2 = vTransactionCode,
CodigoIva2 = vTaxCode, CodigoIva2 = vTaxCode
IvaDeducible2 = vIsDeductible
WHERE id = vXDiarioFk; WHERE id = vXDiarioFk;
WHEN 3 THEN WHEN 3 THEN
UPDATE movContaIVA UPDATE movContaIVA
@ -110,8 +105,7 @@ BEGIN
PorIva3 = vRate, PorIva3 = vRate,
CuotaIva3 = vVat, CuotaIva3 = vVat,
CodigoTransaccion3 = vTransactionCode, CodigoTransaccion3 = vTransactionCode,
CodigoIva3 = vTaxCode, CodigoIva3 = vTaxCode
IvaDeducible3 = vIsDeductible
WHERE id = vXDiarioFk; WHERE id = vXDiarioFk;
WHEN 4 THEN WHEN 4 THEN
UPDATE movContaIVA UPDATE movContaIVA
@ -119,8 +113,7 @@ BEGIN
PorIva4 = vRate, PorIva4 = vRate,
CuotaIva4 = vVat, CuotaIva4 = vVat,
CodigoTransaccion4 = vTransactionCode, CodigoTransaccion4 = vTransactionCode,
CodigoIva4 = vTaxCode, CodigoIva4 = vTaxCode
IvaDeducible4 = vIsDeductible
WHERE id = vXDiarioFk; WHERE id = vXDiarioFk;
ELSE ELSE
SELECT vXDiarioFk INTO vXDiarioFk; SELECT vXDiarioFk INTO vXDiarioFk;
@ -175,6 +168,10 @@ BEGIN
mci.FechaOperacion = ii.issued, mci.FechaOperacion = ii.issued,
mci.MantenerAsiento = TRUE, mci.MantenerAsiento = TRUE,
mci.SuFacturaNo = ii.supplierRef, mci.SuFacturaNo = ii.supplierRef,
mci.IvaDeducible1 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva1, FALSE) = FALSE, FALSE, ii.isVatDeductible)),
mci.IvaDeducible2 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva2, FALSE) = FALSE, FALSE, ii.isVatDeductible)),
mci.IvaDeducible3 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva3, FALSE) = FALSE, FALSE, ii.isVatDeductible)),
mci.IvaDeducible4 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva4, FALSE) = FALSE, FALSE, ii.isVatDeductible)),
mci.FechaFacturaOriginal = x.FECHA_EX mci.FechaFacturaOriginal = x.FECHA_EX
WHERE mci.id = vXDiarioFk; WHERE mci.id = vXDiarioFk;

View File

@ -2,10 +2,10 @@ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `sage`.`invoiceIn_manager`(vYear INT, vCompanyFk INT) CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `sage`.`invoiceIn_manager`(vYear INT, vCompanyFk INT)
BEGIN BEGIN
/** /**
* Traslada la info de contabilidad relacionada con las facturas recibidas * Traslada la info de contabilidad relacionada con las facturas recibidas
* *
* @vYear Año contable del que se quiere trasladar la información * @vYear Año contable del que se quiere trasladar la información
* @vCompany Empresa de la que se quiere trasladar datos * @vCompany Empresa de la que se quiere trasladar datos
*/ */
DECLARE vDone BOOL DEFAULT FALSE; DECLARE vDone BOOL DEFAULT FALSE;
DECLARE vInvoiceFk INT; DECLARE vInvoiceFk INT;
@ -17,22 +17,22 @@ BEGIN
DECLARE vAccountTaxOutstanding VARCHAR(10); DECLARE vAccountTaxOutstanding VARCHAR(10);
DECLARE vInvoiceTypeSended VARCHAR(1); DECLARE vInvoiceTypeSended VARCHAR(1);
DECLARE vCursor CURSOR FOR DECLARE vCursor CURSOR FOR
SELECT IFNULL(x.CLAVE, x.FACTURA) invoiceInFk, SELECT IFNULL(x.CLAVE, x.FACTURA) invoiceInFk,
x.id XDiarioFk x.id XDiarioFk
FROM vn.XDiario x FROM vn.XDiario x
JOIN(SELECT DISTINCT(x.ASIEN) JOIN(SELECT DISTINCT(x.ASIEN)
FROM vn.XDiario x FROM vn.XDiario x
LEFT JOIN vn.invoiceIn ii ON x.CLAVE = ii.id LEFT JOIN vn.invoiceIn ii ON x.CLAVE = ii.id
LEFT JOIN vn.invoiceInTax it ON it.invoiceInFk = ii.id LEFT JOIN vn.invoiceInTax it ON it.invoiceInFk = ii.id
WHERE(it.taxTypeSageFk IS NOT NULL OR x.SERIE = vSerialDua COLLATE utf8mb3_unicode_ci) WHERE(it.taxTypeSageFk IS NOT NULL OR x.SERIE = vSerialDua COLLATE utf8mb3_unicode_ci)
AND x.enlazadoSage = FALSE AND x.enlazadoSage = FALSE
AND x.FECHA BETWEEN vDatedFrom AND vDatedTo AND x.FECHA BETWEEN vDatedFrom AND vDatedTo
AND x.empresa_id = vCompanyFk AND x.empresa_id = vCompanyFk
) sub ON sub.ASIEN = x.ASIEN ) sub ON sub.ASIEN = x.ASIEN
WHERE x.CLAVE IS NOT NULL; WHERE x.CLAVE IS NOT NULL;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
SELECT CAST(CONCAT(vYear, '-01-01') AS DATETIME), util.dayEnd(CAST(CONCAT(vYear, '-12-31') AS DATE)) SELECT CAST(CONCAT(vYear, '-01-01') AS DATETIME), util.dayEnd(CAST(CONCAT(vYear, '-12-31') AS DATE))
INTO vDatedFrom, vDatedTo; INTO vDatedFrom, vDatedTo;
@ -46,15 +46,15 @@ BEGIN
SELECT codeSage INTO vInvoiceTypeSended SELECT codeSage INTO vInvoiceTypeSended
FROM invoiceType WHERE `code` ='sended'; FROM invoiceType WHERE `code` ='sended';
DROP TEMPORARY TABLE IF EXISTS tmp.invoiceDua; DROP TEMPORARY TABLE IF EXISTS tmp.invoiceDua;
CREATE TEMPORARY TABLE tmp.invoiceDua CREATE TEMPORARY TABLE tmp.invoiceDua
SELECT x.id SELECT x.id
FROM vn.XDiario x FROM vn.XDiario x
JOIN vn.company c ON c.id = x.empresa_id JOIN vn.company c ON c.id = x.empresa_id
JOIN (SELECT ASIEN JOIN (SELECT ASIEN
FROM vn.XDiario x FROM vn.XDiario x
WHERE x.enlazadoSage = FALSE WHERE x.enlazadoSage = FALSE
AND x.SUBCTA = vAccountTaxOutstanding COLLATE utf8mb3_unicode_ci AND x.SUBCTA = vAccountTaxOutstanding COLLATE utf8mb3_unicode_ci
AND x.FECHA BETWEEN vDatedFrom AND vDatedTo AND x.FECHA BETWEEN vDatedFrom AND vDatedTo
)sub ON sub.ASIEN = x.ASIEN )sub ON sub.ASIEN = x.ASIEN
@ -67,19 +67,21 @@ BEGIN
i.serial COLLATE utf8mb3_unicode_ci serial, i.serial COLLATE utf8mb3_unicode_ci serial,
i.supplierFk, i.supplierFk,
i.issued, i.issued,
IF(expenseFkDeductible, FALSE, i.isVatDeductible) isVatDeductible,
IF(c.code = 'EUR', '',c.`code`) currencyFk IF(c.code = 'EUR', '',c.`code`) currencyFk
FROM vn.invoiceIn i FROM vn.invoiceIn i
JOIN vn.currency c ON c.id = i.currencyFk JOIN vn.currency c ON c.id = i.currencyFk
WHERE i.bookEntried BETWEEN vDatedFrom AND vDatedTo WHERE i.bookEntried BETWEEN vDatedFrom AND vDatedTo
UNION ALL UNION ALL
SELECT d.id, SELECT d.id,
d.code, d.code,
vSerialDua COLLATE utf8mb3_unicode_ci, vSerialDua COLLATE utf8mb3_unicode_ci,
d.companyFk , d.companyFk ,
d.issued, d.issued,
FALSE,
'' -- EUROS '' -- EUROS
FROM vn.dua d FROM vn.dua d
WHERE d.issued IS NOT NULL WHERE d.issued IS NOT NULL
AND code IS NOT NULL; AND code IS NOT NULL;
OPEN vCursor; OPEN vCursor;
@ -87,7 +89,7 @@ BEGIN
l: LOOP l: LOOP
FETCH vCursor INTO vInvoiceFk, vXDiarioFk; FETCH vCursor INTO vInvoiceFk, vXDiarioFk;
IF vDone THEN IF vDone THEN
LEAVE l; LEAVE l;
END IF; END IF;
CALL invoiceIn_add(vInvoiceFk, vXDiarioFk); CALL invoiceIn_add(vInvoiceFk, vXDiarioFk);
@ -175,21 +177,21 @@ BEGIN
JOIN (SELECT x.ASIEN, x.id JOIN (SELECT x.ASIEN, x.id
FROM vn.XDiario x FROM vn.XDiario x
JOIN(SELECT DISTINCT(x.ASIEN) ASIEN JOIN(SELECT DISTINCT(x.ASIEN) ASIEN
FROM vn.XDiario x FROM vn.XDiario x
JOIN (SELECT DISTINCT(ASIEN) JOIN (SELECT DISTINCT(ASIEN)
FROM vn.XDiario x FROM vn.XDiario x
WHERE SUBCTA LIKE '472%' WHERE SUBCTA LIKE '472%'
AND x.enlazadoSage = FALSE AND x.enlazadoSage = FALSE
AND x.empresa_id = vCompanyFk AND x.empresa_id = vCompanyFk
AND x.FECHA BETWEEN vDatedFrom AND vDatedTo AND x.FECHA BETWEEN vDatedFrom AND vDatedTo
) sub ON sub.ASIEN = x.ASIEN ) sub ON sub.ASIEN = x.ASIEN
WHERE x.SUBCTA LIKE '477%' WHERE x.SUBCTA LIKE '477%'
)sub2 ON sub2.ASIEN = x.ASIEN )sub2 ON sub2.ASIEN = x.ASIEN
WHERE x.CONTRA IS NOT NULL WHERE x.CONTRA IS NOT NULL
AND x.SUBCTA LIKE '477%' AND x.SUBCTA LIKE '477%'
GROUP BY x.ASIEN GROUP BY x.ASIEN
)sub3 ON sub3.ASIEN = x.ASIEN; )sub3 ON sub3.ASIEN = x.ASIEN;
INSERT INTO movContaIVA INSERT INTO movContaIVA
(`id`, (`id`,
`CodigoDivisa`, `CodigoDivisa`,
@ -260,9 +262,9 @@ BEGIN
`FechaGrabacion`, `FechaGrabacion`,
`Intracomunitaria`, `Intracomunitaria`,
`moveData`) `moveData`)
SELECT * SELECT *
FROM tmp.movContaIVA; FROM tmp.movContaIVA;
DROP TEMPORARY TABLE tmp.movContaIVA; DROP TEMPORARY TABLE tmp.movContaIVA;
END$$ END$$

View File

@ -1,15 +1,15 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceIn_booking`( CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceIn_booking`(
vSelf INT, vSelf INT,
vBookNumber INT vBookNumber INT
) )
BEGIN BEGIN
/** /**
* Genera la contabilidad para una factura y la marca como contabilizada * Genera la contabilidad para una factura y la marca como contabilizada
* Cuadra el asiento generado en si encuentra problemas derivados * Cuadra el asiento generado en si encuentra problemas derivados
* de los calculos con decimales * de los calculos con decimales
* *
* @param vSelf Id invoiceIn * @param vSelf Id invoiceIn
* @param vBookEntry Id de asiento, si es NULL se genera uno nuevo * @param vBookEntry Id de asiento, si es NULL se genera uno nuevo
*/ */
DECLARE vFiscalYear INT; DECLARE vFiscalYear INT;
@ -23,7 +23,7 @@ BEGIN
HAVING COUNT(DISTINCT iit.transactionTypeSageFk) > 1 HAVING COUNT(DISTINCT iit.transactionTypeSageFk) > 1
LIMIT 1; LIMIT 1;
IF vHasRepeatedTransactions THEN IF vHasRepeatedTransactions THEN
CALL util.throw ('This invoice contains different types of transactions'); CALL util.throw ('This invoice contains different types of transactions');
END IF; END IF;
@ -32,7 +32,7 @@ BEGIN
SELECT ii.bookEntried, SELECT ii.bookEntried,
iit.foreignValue, iit.foreignValue,
ii.companyFk, ii.companyFk,
iit.isDeductible, ii.expenseFkDeductible,
iit.taxableBase, iit.taxableBase,
iit.transactionTypeSageFk, iit.transactionTypeSageFk,
ii.serial, ii.serial,
@ -66,13 +66,13 @@ BEGIN
e.name expenseName e.name expenseName
FROM invoiceIn ii FROM invoiceIn ii
JOIN supplier s ON s.id = ii.supplierFk JOIN supplier s ON s.id = ii.supplierFk
LEFT JOIN invoiceInCorrection ic ON ic.correctingFk = ii.id LEFT JOIN invoiceInCorrection ic ON ic.correctingFk = ii.id
LEFT JOIN province p ON p.id = s.provinceFk LEFT JOIN province p ON p.id = s.provinceFk
LEFT JOIN autonomy a ON a.id = p.autonomyFk LEFT JOIN autonomy a ON a.id = p.autonomyFk
JOIN country c ON c.id = s.countryFk JOIN country c ON c.id = s.countryFk
JOIN supplier sc ON sc.id = ii.companyFk JOIN supplier sc ON sc.id = ii.companyFk
JOIN country cc ON cc.id = sc.countryFk JOIN country cc ON cc.id = sc.countryFk
JOIN invoiceInSerial iis ON iis.code = ii.serial JOIN invoiceInSerial iis ON iis.code = ii.serial
JOIN siiTypeInvoiceIn cit ON cit.id = ii.siiTypeInvoiceInFk JOIN siiTypeInvoiceIn cit ON cit.id = ii.siiTypeInvoiceInFk
LEFT JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id LEFT JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id
LEFT JOIN sage.TiposTransacciones ttr ON ttr.CodigoTransaccion = iit.transactionTypeSageFk LEFT JOIN sage.TiposTransacciones ttr ON ttr.CodigoTransaccion = iit.transactionTypeSageFk
@ -83,7 +83,7 @@ BEGIN
SELECT YEAR(bookEntried) INTO vFiscalYear FROM tInvoiceIn LIMIT 1; SELECT YEAR(bookEntried) INTO vFiscalYear FROM tInvoiceIn LIMIT 1;
IF vBookNumber IS NULL THEN IF vBookNumber IS NULL THEN
CALL ledger_nextTx(vFiscalYear, vBookNumber); CALL ledger_nextTx(vFiscalYear, vBookNumber);
END IF; END IF;
@ -99,18 +99,18 @@ BEGIN
NFACTICK, NFACTICK,
CLAVE, CLAVE,
empresa_id) empresa_id)
SELECT SELECT
vBookNumber ASIEN, vBookNumber ASIEN,
tii.bookEntried FECHA, tii.bookEntried FECHA,
tii.supplierAccount SUBCTA, tii.supplierAccount SUBCTA,
SUM(tii.taxableBase * SUM(tii.taxableBase *
IF(tii.serial= 'R' AND ((tii.taxCode IS NULL OR tii.taxCode <> 'ISP21') IF(tii.serial= 'R' AND ((tii.taxCode IS NULL OR tii.taxCode <> 'ISP21')
AND tii.taxTypeSageFk IS NOT NULL), AND tii.taxTypeSageFk IS NOT NULL),
1 + (tii.PorcentajeIva / 100), 1 + (tii.PorcentajeIva / 100),
1)) EUROHABER, 1)) EUROHABER,
CONCAT('s/fra', CONCAT('s/fra',
RIGHT(tii.supplierRef, 8), RIGHT(tii.supplierRef, 8),
':', ':',
LEFT(tii.supplierName, 10)) CONCEPTO, LEFT(tii.supplierName, 10)) CONCEPTO,
CAST(tii.taxableBase / tii.foreignValue AS DECIMAL (10,4)) CAMBIO, CAST(tii.taxableBase / tii.foreignValue AS DECIMAL (10,4)) CAMBIO,
SUM(tii.foreignValue * IF(tii.serial = 'R', 1 + (tii.PorcentajeIva / 100), 1)) HABERME, SUM(tii.foreignValue * IF(tii.serial = 'R', 1 + (tii.PorcentajeIva / 100), 1)) HABERME,
@ -127,7 +127,7 @@ BEGIN
CONTRA, CONTRA,
EURODEBE, EURODEBE,
EUROHABER, EUROHABER,
CONCEPTO, CONCEPTO,
CAMBIO, CAMBIO,
DEBEME, DEBEME,
HABERME, HABERME,
@ -139,9 +139,9 @@ BEGIN
tii.supplierAccount CONTRA, tii.supplierAccount CONTRA,
IF(tii.isWithheld AND tii.taxableBase < 0, NULL, ROUND(SUM(tii.taxableBase),2)) EURODEBE, IF(tii.isWithheld AND tii.taxableBase < 0, NULL, ROUND(SUM(tii.taxableBase),2)) EURODEBE,
IF(tii.isWithheld AND tii.taxableBase < 0, ROUND(SUM(-tii.taxableBase), 2), NULL) EUROHABER, IF(tii.isWithheld AND tii.taxableBase < 0, ROUND(SUM(-tii.taxableBase), 2), NULL) EUROHABER,
CONCAT('s/fra', CONCAT('s/fra',
RIGHT(tii.supplierRef, 8), RIGHT(tii.supplierRef, 8),
':', ':',
LEFT(tii.supplierName, 10)) CONCEPTO, LEFT(tii.supplierName, 10)) CONCEPTO,
CAST(tii.taxableBase / tii.foreignValue AS DECIMAL (10, 4)) CAMBIO, CAST(tii.taxableBase / tii.foreignValue AS DECIMAL (10, 4)) CAMBIO,
IF(tii.isWithheld, NULL,ABS(ROUND(SUM(tii.foreignValue), 2))) DEBEME, IF(tii.isWithheld, NULL,ABS(ROUND(SUM(tii.foreignValue), 2))) DEBEME,
@ -153,17 +153,17 @@ BEGIN
GROUP BY tii.expenseFk; GROUP BY tii.expenseFk;
-- Líneas de IVA -- Líneas de IVA
INSERT INTO XDiario( INSERT INTO XDiario(
ASIEN, ASIEN,
FECHA, FECHA,
SUBCTA, SUBCTA,
CONTRA, CONTRA,
EURODEBE, EURODEBE,
BASEEURO, BASEEURO,
CONCEPTO, CONCEPTO,
FACTURA, FACTURA,
IVA, IVA,
AUXILIAR, AUXILIAR,
SERIE, SERIE,
TIPOOPE, TIPOOPE,
FECHA_EX, FECHA_EX,
@ -184,7 +184,7 @@ BEGIN
empresa_id) empresa_id)
SELECT vBookNumber ASIEN, SELECT vBookNumber ASIEN,
tii.bookEntried FECHA, tii.bookEntried FECHA,
IF(tii.isDeductible, tii.expenseFk, tii.CuentaIvaSoportado) SUBCTA, IF(tii.expenseFkDeductible>0, tii.expenseFkDeductible, tii.CuentaIvaSoportado) SUBCTA,
tii.supplierAccount CONTRA, tii.supplierAccount CONTRA,
SUM(ROUND(tii.PorcentajeIva * tii.taxableBase / 100, 2)) EURODEBE, SUM(ROUND(tii.PorcentajeIva * tii.taxableBase / 100, 2)) EURODEBE,
SUM(tii.taxableBase) BASEEURO, SUM(tii.taxableBase) BASEEURO,
@ -212,28 +212,28 @@ BEGIN
tii.companyFk tii.companyFk
FROM tInvoiceIn tii FROM tInvoiceIn tii
LEFT JOIN ( LEFT JOIN (
SELECT e.id SELECT e.id
FROM tInvoiceIn tii FROM tInvoiceIn tii
JOIN expense e ON e.id = tii.expenseFk JOIN expense e ON e.id = tii.expenseFk
WHERE e.isWithheld WHERE e.isWithheld
LIMIT 1 LIMIT 1
) eWithheld ON TRUE ) eWithheld ON TRUE
WHERE tii.taxTypeSageFk IS NOT NULL WHERE tii.taxTypeSageFk IS NOT NULL
AND (tii.taxCode IS NULL OR tii.taxCode NOT IN ('import10', 'import21')) AND (tii.taxCode IS NULL OR tii.taxCode NOT IN ('import10', 'import21'))
GROUP BY tii.CuentaIvaRepercutido; GROUP BY tii.CuentaIvaRepercutido;
-- Línea iva inversor sujeto pasivo -- Línea iva inversor sujeto pasivo
INSERT INTO XDiario( INSERT INTO XDiario(
ASIEN, ASIEN,
FECHA, FECHA,
SUBCTA, SUBCTA,
CONTRA, CONTRA,
EUROHABER, EUROHABER,
BASEEURO, BASEEURO,
CONCEPTO, CONCEPTO,
FACTURA, FACTURA,
IVA, IVA,
AUXILIAR, AUXILIAR,
SERIE, SERIE,
TIPOOPE, TIPOOPE,
FECHA_EX, FECHA_EX,
@ -282,31 +282,31 @@ BEGIN
JOIN sage.config c JOIN sage.config c
WHERE tii.taxCode = 'ISP21' OR MID(tii.supplierAccount, 4, 1) = '1' WHERE tii.taxCode = 'ISP21' OR MID(tii.supplierAccount, 4, 1) = '1'
AND tii.taxTypeSageFk IS NOT NULL AND tii.taxTypeSageFk IS NOT NULL
AND NOT(tii.isVies AND NOT(tii.isVies
AND c.nontaxableTransactionTypeFk = tii.transactionTypeSageFk AND c.nontaxableTransactionTypeFk = tii.transactionTypeSageFk
AND tii.taxCode = 'nonTaxable') AND tii.taxCode = 'nonTaxable')
GROUP BY tii.CuentaIvaRepercutido; GROUP BY tii.CuentaIvaRepercutido;
-- Actualización del registro original -- Actualización del registro original
UPDATE invoiceIn ii UPDATE invoiceIn ii
SET ii.isBooked = TRUE SET ii.isBooked = TRUE
WHERE ii.id = vSelf; WHERE ii.id = vSelf;
-- Problemas derivados de la precisión en los decimales al calcular los impuestos -- Problemas derivados de la precisión en los decimales al calcular los impuestos
UPDATE XDiario UPDATE XDiario
SET EURODEBE = EURODEBE - SET EURODEBE = EURODEBE -
(SELECT IF(ABS(sub.difference) = 0.01, sub.difference, 0) (SELECT IF(ABS(sub.difference) = 0.01, sub.difference, 0)
FROM( FROM(
SELECT SUM(IFNULL(ROUND(EURODEBE, 2),0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) difference SELECT SUM(IFNULL(ROUND(EURODEBE, 2),0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) difference
FROM XDiario FROM XDiario
WHERE ASIEN = vBookNumber WHERE ASIEN = vBookNumber
)sub )sub
) )
WHERE ASIEN = vBookNumber WHERE ASIEN = vBookNumber
AND EURODEBE <> 0 AND EURODEBE <> 0
ORDER BY id DESC ORDER BY id DESC
LIMIT 1; LIMIT 1;
DROP TEMPORARY TABLE tInvoiceIn; DROP TEMPORARY TABLE tInvoiceIn;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -20,5 +20,7 @@ AS SELECT `r`.`id` AS `id`,
`r`.`cplusTaxBreakFk` AS `cplusTaxBreakFk`, `r`.`cplusTaxBreakFk` AS `cplusTaxBreakFk`,
`r`.`siiTrascendencyInvoiceInFk` AS `siiTrascendencyInvoiceInFk`, `r`.`siiTrascendencyInvoiceInFk` AS `siiTrascendencyInvoiceInFk`,
`r`.`bookEntried` AS `bookEntried`, `r`.`bookEntried` AS `bookEntried`,
`r`.`withholdingSageFk` AS `withholdingSageFk` `r`.`isVatDeductible` AS `isVatDeductible`,
`r`.`withholdingSageFk` AS `withholdingSageFk`,
`r`.`expenseFkDeductible` AS `expenseFkDeductible`
FROM `vn`.`invoiceIn` `r` FROM `vn`.`invoiceIn` `r`

View File

@ -1,8 +0,0 @@
ALTER TABLE vn.invoiceInTax ADD isDeductible TINYINT(1) DEFAULT FALSE NOT NULL;
ALTER TABLE vn.invoiceIn CHANGE expenseFkDeductible expenseFkDeductible__ varchar(10)
CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL NULL COMMENT '@deprecated 2025-02-15';
ALTER TABLE vn.invoiceIn CHANGE isVatDeductible isVatDeductible__ tinyint(1)
DEFAULT 1 NOT NULL COMMENT '@deprecated 2025-02-15';

View File

@ -255,12 +255,7 @@
"Holidays to past days not available": "Holidays to past days not available", "Holidays to past days not available": "Holidays to past days not available",
"Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}",
"Ticket has been delivered out of order": "The ticket {{ticket}} of route {{{fullUrl}}} has been delivered out of order.", "Ticket has been delivered out of order": "The ticket {{ticket}} of route {{{fullUrl}}} has been delivered out of order.",
"clonedFromTicketWeekly": ", that is a cloned sale from ticket {{ ticketWeekly }}", "clonedFromTicketWeekly": ", that is a cloned sale from ticket {{ ticketWeekly }}",
"negativeReplaced": "Replaced item [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} with [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} from ticket [{{ticketId}}]({{{ticketUrl}}})", "negativeReplaced": "Replaced item [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} with [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} from ticket [{{ticketId}}]({{{ticketUrl}}})",
"The tag and priority can't be repeated": "The tag and priority can't be repeated", "The tag and priority can't be repeated": "The tag and priority can't be repeated"
"workerSocialName": "workerSocialName", }
"workerName": "workerName",
"The tag or priority can't be repeated for an item": "The tag or priority can't be repeated for an item",
"An item type with the same code already exists": "An item type with the same code already exists",
"null": "null"
}

View File

@ -16,6 +16,7 @@ columns:
bookEntried: book entried bookEntried: book entried
isVatDeductible: is VAT deductible isVatDeductible: is VAT deductible
withholdingSageFk: withholding withholdingSageFk: withholding
expenseFkDeductible: expense deductible
editorFk: editor editorFk: editor
siiTrasCendencyInvoiceInFk: SII tax regime siiTrasCendencyInvoiceInFk: SII tax regime
siiTypeInvoiceInFk: SII Type siiTypeInvoiceInFk: SII Type

View File

@ -16,6 +16,7 @@ columns:
bookEntried: fecha asiento bookEntried: fecha asiento
isVatDeductible: impuesto deducible isVatDeductible: impuesto deducible
withholdingSageFk: código de retención withholdingSageFk: código de retención
expenseFkDeductible: gasto deducible
editorFk: editor editorFk: editor
siiTrasCendencyInvoiceInFk: régimen fiscal SII siiTrasCendencyInvoiceInFk: régimen fiscal SII
siiTypeInvoiceInFk: tipo SII siiTypeInvoiceInFk: tipo SII

View File

@ -46,6 +46,7 @@ module.exports = Self => {
'issued', 'issued',
'currencyFk', 'currencyFk',
'companyFk', 'companyFk',
'isVatDeductible',
'withholdingSageFk', 'withholdingSageFk',
'deductibleExpenseFk', 'deductibleExpenseFk',
], ],
@ -78,6 +79,7 @@ module.exports = Self => {
issued: issued, issued: issued,
currencyFk: sourceInvoiceIn.currencyFk, currencyFk: sourceInvoiceIn.currencyFk,
companyFk: sourceInvoiceIn.companyFk, companyFk: sourceInvoiceIn.companyFk,
isVatDeductible: sourceInvoiceIn.isVatDeductible,
withholdingSageFk: sourceInvoiceIn.withholdingSageFk, withholdingSageFk: sourceInvoiceIn.withholdingSageFk,
deductibleExpenseFk: sourceInvoiceIn.deductibleExpenseFk, deductibleExpenseFk: sourceInvoiceIn.deductibleExpenseFk,
}, myOptions); }, myOptions);

View File

@ -184,6 +184,7 @@ module.exports = Self => {
ii.docFk dmsFk, ii.docFk dmsFk,
dm.file, dm.file,
ii.supplierFk, ii.supplierFk,
ii.expenseFkDeductible deductibleExpenseFk,
s.name supplierName, s.name supplierName,
s.account, s.account,
SUM(iid.amount) amount, SUM(iid.amount) amount,

View File

@ -123,6 +123,12 @@ module.exports = Self => {
}] }]
} }
}, },
{
relation: 'expenseDeductible',
scope: {
fields: ['id', 'name', 'taxTypeFk']
}
},
{ {
relation: 'currency', relation: 'currency',
scope: { scope: {

View File

@ -24,9 +24,6 @@
"expenseFk": { "expenseFk": {
"type": "string" "type": "string"
}, },
"isDeductible": {
"type": "boolean"
},
"created": { "created": {
"type": "date" "type": "date"
} }
@ -53,4 +50,4 @@
"foreignKey": "transactionTypeSageFk" "foreignKey": "transactionTypeSageFk"
} }
} }
} }

View File

@ -36,6 +36,9 @@
"booked": { "booked": {
"type": "date" "type": "date"
}, },
"isVatDeductible": {
"type": "boolean"
},
"operated": { "operated": {
"type": "date" "type": "date"
}, },
@ -47,6 +50,12 @@
"mysql": { "mysql": {
"columnName": "docFk" "columnName": "docFk"
} }
},
"deductibleExpenseFk": {
"type": "number",
"mysql": {
"columnName": "expenseFkDeductible"
}
} }
}, },
"relations": { "relations": {
@ -70,6 +79,11 @@
"model": "SageWithholding", "model": "SageWithholding",
"foreignKey": "withholdingSageFk" "foreignKey": "withholdingSageFk"
}, },
"expenseDeductible": {
"type": "belongsTo",
"model": "Expense",
"foreignKey": "deductibleExpenseFk"
},
"company": { "company": {
"type": "belongsTo", "type": "belongsTo",
"model": "Company", "model": "Company",

View File

@ -36,6 +36,8 @@
<vn-one> <vn-one>
<vn-label-value label="Sage withholding" value="{{$ctrl.summary.sageWithholding.withholding}}"> <vn-label-value label="Sage withholding" value="{{$ctrl.summary.sageWithholding.withholding}}">
</vn-label-value> </vn-label-value>
<vn-label-value label="Undeductible VAT" value="{{$ctrl.summary.expenseDeductible.name}}">
</vn-label-value>
<vn-label-value label="Company" value="{{$ctrl.summary.company.code}}"> <vn-label-value label="Company" value="{{$ctrl.summary.company.code}}">
</vn-label-value> </vn-label-value>
<vn-vertical> <vn-vertical>
@ -47,10 +49,10 @@
<span td class="chip"><vn-label translate>Taxable base</vn-label> {{$ctrl.summary.totals.totalTaxableBase | currency: 'EUR':2 | dashIfEmpty}}</span> <span td class="chip"><vn-label translate>Taxable base</vn-label> {{$ctrl.summary.totals.totalTaxableBase | currency: 'EUR':2 | dashIfEmpty}}</span>
<p><vn-label translate>Total</vn-label> {{$ctrl.summary.totals.totalVat | currency: 'EUR':2 | dashIfEmpty}}</p> <p><vn-label translate>Total</vn-label> {{$ctrl.summary.totals.totalVat | currency: 'EUR':2 | dashIfEmpty}}</p>
<vn-label translate>Due day</vn-label> <vn-label translate>Due day</vn-label>
<vn-chip <vn-chip
class="transparent" class="transparent"
ng-class="{'alert': $ctrl.amountsNotMatch}" ng-class="{'alert': $ctrl.amountsNotMatch}"
translate-attr="{title: $ctrl.amountsNotMatch ? 'Do not match' : 'Due day'}" translate-attr="{title: $ctrl.amountsNotMatch ? 'Do not match' : 'Due day'}"
>{{$ctrl.summary.totals.totalDueDay | currency: 'EUR':2 | dashIfEmpty}} >{{$ctrl.summary.totals.totalDueDay | currency: 'EUR':2 | dashIfEmpty}}
</vn-chip> </vn-chip>
</vn-one> </vn-one>
@ -59,7 +61,7 @@
<vn-one ng-if="$ctrl.summary.invoiceInTax.length != 0"> <vn-one ng-if="$ctrl.summary.invoiceInTax.length != 0">
<h4> <h4>
<a <a
ui-sref="invoiceIn.card.tax({id:$ctrl.invoiceIn.id})" ui-sref="invoiceIn.card.tax({id:$ctrl.invoiceIn.id})"
target="_self"> target="_self">
<span translate vn-tooltip="Go to">Vat</span> <span translate vn-tooltip="Go to">Vat</span>
@ -92,7 +94,7 @@
<vn-horizontal> <vn-horizontal>
<vn-one ng-if="$ctrl.summary.invoiceInDueDay.length != 0"> <vn-one ng-if="$ctrl.summary.invoiceInDueDay.length != 0">
<h4> <h4>
<a <a
ui-sref="invoiceIn.card.dueDay({id:$ctrl.invoiceIn.id})" ui-sref="invoiceIn.card.dueDay({id:$ctrl.invoiceIn.id})"
target="_self"> target="_self">
<span translate vn-tooltip="Go to">Due day</span> <span translate vn-tooltip="Go to">Due day</span>
@ -121,7 +123,7 @@
<vn-horizontal> <vn-horizontal>
<vn-one ng-if="$ctrl.summary.invoiceInIntrastat.length != 0"> <vn-one ng-if="$ctrl.summary.invoiceInIntrastat.length != 0">
<h4> <h4>
<a <a
ui-sref="invoiceIn.card.intrastat({id:$ctrl.invoiceIn.id})" ui-sref="invoiceIn.card.intrastat({id:$ctrl.invoiceIn.id})"
target="_self"> target="_self">
<span translate vn-tooltip="Go to">Intrastat</span> <span translate vn-tooltip="Go to">Intrastat</span>
@ -139,7 +141,7 @@
</vn-thead> </vn-thead>
<vn-tbody> <vn-tbody>
<vn-tr ng-repeat="intrastat in $ctrl.summary.invoiceInIntrastat"> <vn-tr ng-repeat="intrastat in $ctrl.summary.invoiceInIntrastat">
<vn-td>{{::intrastat.intrastatFk}}: {{::intrastat.intrastat.description}}</vn-td> <vn-td>{{::intrastat.intrastatFk}}: {{::intrastat.intrastat.description}}</vn-td>
<vn-td>{{::intrastat.amount | currency: 'EUR':2}}</vn-td> <vn-td>{{::intrastat.amount | currency: 'EUR':2}}</vn-td>
<vn-td>{{::intrastat.net}}</vn-td> <vn-td>{{::intrastat.net}}</vn-td>
<vn-td>{{::intrastat.stems}}</vn-td> <vn-td>{{::intrastat.stems}}</vn-td>
@ -152,4 +154,4 @@
</vn-card> </vn-card>
<vn-supplier-descriptor-popover <vn-supplier-descriptor-popover
vn-id="supplierDescriptor"> vn-id="supplierDescriptor">
</vn-supplier-descriptor-popover> </vn-supplier-descriptor-popover>