From bab2ee78c428aba027764a5106fbc76a333dd676 Mon Sep 17 00:00:00 2001 From: alexm Date: Fri, 19 Apr 2024 13:13:57 +0200 Subject: [PATCH 1/9] feat: refs #6428 auto-changelog with bash --- CHANGELOG.md | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 6 ++++ changelog.sh | 34 +++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 changelog.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index b2be92faa..04a40cd20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,96 @@ +# Version XX.XX - XXXX-XX-XX (TEXTO DE PRUEBA CREADO APARTIR DE DEV → TEST) + +### Added 🆕 + +- feat: #7130 added "served" field to RouteList table(Salix). by:Jon +- feat(binlog): refs #4409 New function for binlog queue monitoring by:Juan Ferrer Toribio +- feat: bloquear facturas recibidas contabilizadas refs #7173 by:Carlos Andrés +- feat: commit by:pablone +- feat(delay): refs #6005 add new restriction by:pablone +- feat(git): add commit lint refs #6130 by:pablone +- feat(git): add commit lint refs#6130 by:pablone +- feat(githook) add reference by:pablone +- feat(noSpam): refs #6005 check if exists a previous notification by:pablone +- feat(notify): refs #6005 add restriction on created notification time by:pablone +- feat(operator.spec): refs #6005 add spec for delay and fix spec for spam by:pablone +- feat: permissions to vn.entry.isBooked refs#6724 by:Carlos Andrés +- feat: refs #12 peter by:pablone +- feat: refs #6005 move logic from report to hook by:pablone +- feat: refs #6005 mover sql a la ultima carpeta by:pablone +- feat: refs #6021 fix proc by:pablone +- feat: refs #6021 order_put refactor by:pablone +- feat: refs #6130 add commit by:pablone +- feat: refs #6130 handle branch without task by:pablone +- feat: refs #6130 test commitLint (6130-commitLint) by:alexm +- feat: refs #6500 by:robert +- feat: refs #6500 cambios solicitados by:robert +- feat: refs #6500 delete procedure by:robert +- feat: refs #6500 procRefactor8 by:robert +- feat: refs #6724 Added admon acl to vn-check by:guillermo +- feat: refs #6724 Grant changes by:guillermo +- feat: refs #6724 hook added by:jorgep +- feat: refs #6938 add scope & acls by:jorgep +- feat: refs #6968 Changed groupingMode to enum by:guillermo +- feat: refs #6968 Requested changes by:guillermo +- feat: refs #6968 Transactioned and isTriggerDisabled by:guillermo +- feat: refs #7173 Added restrictions in invoiceIn structure by:guillermo +- feat: refs #7173 Added traduction by:guillermo +- feat(salix): refs #6930 Undo rollback salix-back by:Javier Segarra +- feat(salix): refs #6930 Undo rollback salix-front by:Javier Segarra +- feat: sin concatenar en el nombre by:jgallego +- feat(spec): refs #6005 add spec by:pablone +- feat(spec): refs #6005 add spec to backup Notify by:pablone +- feat: test by:pablone +- refs #7190 feat: renewToken for multimedia by:Javier Segarra + +### Changed 📦 + +- feat: refs #6021 order_put refactor by:pablone +- refactor(main-labeler): refs #6005 refactor de mainLabeler a backupPrinterFk by:pablone +- refactor(printer-notification): refs #6005 refactor de la notificación by:pablone +- refactor: refs #6005 delay on productionConfig by:pablone +- refactor: refs #6005 move the logic to the report by:pablone +- refactor: refs #6005 refactor spec by:pablone +- refactor: refs #6724 Minor change by:guillermo +- refactor: refs #7139 replace warehouse with ticket by:Jon +- refactor: refs #7181 Added grant by:guillermo +- refactor: refs #7181 Minor change by:guillermo +- refactor: refs #7181 Requested changes by:guillermo +- refactor: refs #7181 vn2008.Deleted risk_vs_client_list by:guillermo + +### Fixed 🛠️ + +- feat(operator.spec): refs #6005 add spec for delay and fix spec for spam by:pablone +- feat: refs #6021 fix proc by:pablone +- fix(binlog): refs #4409 Fixtures for binlogQueue by:Juan Ferrer Toribio +- fix(changes): refs #6005 remove changes files by:pablone +- fix(claim): remove blank space refs #6130 by:pablone +- fix commit code by:pablone +- fix: husky by:alexm +- fix(notification): refs #6005 notification changes by:pablone +- fix: refs #6005 add fixtures for a spec by:pablone +- fix: refs #6005 move logic to hook by:pablone +- fix: refs #6021 catalogue_findById by:pablone +- fix: refs #6021 proc by:pablone +- fix: refs #6130 code by:pablone +- fix:refs #6130 code by:pablone +- fix: refs #6130 code:code by:pablone +- fix: refs #6130 code remove console.log by:pablone +- fix: refs #6130 test by:pablone +- fix: refs #6938 acls & scope by:jorgep +- fix: refs #6938 e2e tests by:jorgep +- fix: refs #6938 filters & scope by:jorgep +- fix: refs #6938 front tests by:jorgep +- fix: refs #6938 scope by:jorgep +- fix: remove logs (testHusky_deleteme) by:alexm +- fix(spec): refs #6005 backupLabeler spec by:pablone +- fix(sql): refs #6005 fix fk formation by:pablone +- fix(yml): refs #6005 backUpLabeler yml fix by:pablone +- refs #6641 fix PR changes by:jcasado +- refs #6641 fix test by:jcasado +- refs #6641 test fixtures by:jcasado +- refs #6835 fix: issue by:Javier Segarra + # Changelog All notable changes to this project will be documented in this file. diff --git a/README.md b/README.md index b420bc44f..53478f425 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,12 @@ For end-to-end tests run from project's root. $ npm run test:e2e ``` +## Generate changeLog test → master +``` +$ bash changelog.sh +``` + + ## Visual Studio Code extensions Open Visual Studio Code, press Ctrl+P and paste the following commands. diff --git a/changelog.sh b/changelog.sh new file mode 100644 index 000000000..8cd7b4716 --- /dev/null +++ b/changelog.sh @@ -0,0 +1,34 @@ +features_types=(chore feat style) +changes_types=(refactor perf) +fix_types=(fix revert) +file="CHANGELOG.md" +file_tmp="temp_log.txt" +file_current_tmp="temp_current_log.txt" + +setType(){ + echo "### $1" >> $file_tmp + arr=("$@") + echo "" > $file_current_tmp + for i in "${arr[@]}" + do + git log --grep="$i" --oneline --no-merges --format="- %s %d by:%an" master..test >> $file_current_tmp + done + # remove duplicates + sort -o $file_current_tmp -u $file_current_tmp + cat $file_current_tmp >> $file_tmp + echo "" >> $file_tmp + # remove tmp current file + [ -e $file_current_tmp ] && rm $file_current_tmp +} + +echo "# Version XX.XX - XXXX-XX-XX" >> $file_tmp +echo "" >> $file_tmp + +setType "Added 🆕" "${features_types[@]}" +setType "Changed 📦" "${changes_types[@]}" +setType "Fixed 🛠️" "${fix_types[@]}" + +cat $file >> $file_tmp +mv $file_tmp $file + + From a8299383b9dcf889bef75bef3d4f8f649186f13f Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 13 May 2024 16:28:29 +0200 Subject: [PATCH 2/9] refs #6428 remove sh --- changelog.sh | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 changelog.sh diff --git a/changelog.sh b/changelog.sh deleted file mode 100644 index 8cd7b4716..000000000 --- a/changelog.sh +++ /dev/null @@ -1,34 +0,0 @@ -features_types=(chore feat style) -changes_types=(refactor perf) -fix_types=(fix revert) -file="CHANGELOG.md" -file_tmp="temp_log.txt" -file_current_tmp="temp_current_log.txt" - -setType(){ - echo "### $1" >> $file_tmp - arr=("$@") - echo "" > $file_current_tmp - for i in "${arr[@]}" - do - git log --grep="$i" --oneline --no-merges --format="- %s %d by:%an" master..test >> $file_current_tmp - done - # remove duplicates - sort -o $file_current_tmp -u $file_current_tmp - cat $file_current_tmp >> $file_tmp - echo "" >> $file_tmp - # remove tmp current file - [ -e $file_current_tmp ] && rm $file_current_tmp -} - -echo "# Version XX.XX - XXXX-XX-XX" >> $file_tmp -echo "" >> $file_tmp - -setType "Added 🆕" "${features_types[@]}" -setType "Changed 📦" "${changes_types[@]}" -setType "Fixed 🛠️" "${fix_types[@]}" - -cat $file >> $file_tmp -mv $file_tmp $file - - From ebcf8e2927b8246b609b29efb7c3e2e6cf1e8cff Mon Sep 17 00:00:00 2001 From: carlossa Date: Tue, 14 May 2024 08:30:22 +0200 Subject: [PATCH 3/9] refs #6428 change file --- CHANGELOG.md | 92 ---------------------------------------------------- changelog.sh | 34 +++++++++++++++++++ 2 files changed, 34 insertions(+), 92 deletions(-) create mode 100644 changelog.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 04a40cd20..e11a5a6ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,95 +1,3 @@ -# Version XX.XX - XXXX-XX-XX (TEXTO DE PRUEBA CREADO APARTIR DE DEV → TEST) - -### Added 🆕 - -- feat: #7130 added "served" field to RouteList table(Salix). by:Jon -- feat(binlog): refs #4409 New function for binlog queue monitoring by:Juan Ferrer Toribio -- feat: bloquear facturas recibidas contabilizadas refs #7173 by:Carlos Andrés -- feat: commit by:pablone -- feat(delay): refs #6005 add new restriction by:pablone -- feat(git): add commit lint refs #6130 by:pablone -- feat(git): add commit lint refs#6130 by:pablone -- feat(githook) add reference by:pablone -- feat(noSpam): refs #6005 check if exists a previous notification by:pablone -- feat(notify): refs #6005 add restriction on created notification time by:pablone -- feat(operator.spec): refs #6005 add spec for delay and fix spec for spam by:pablone -- feat: permissions to vn.entry.isBooked refs#6724 by:Carlos Andrés -- feat: refs #12 peter by:pablone -- feat: refs #6005 move logic from report to hook by:pablone -- feat: refs #6005 mover sql a la ultima carpeta by:pablone -- feat: refs #6021 fix proc by:pablone -- feat: refs #6021 order_put refactor by:pablone -- feat: refs #6130 add commit by:pablone -- feat: refs #6130 handle branch without task by:pablone -- feat: refs #6130 test commitLint (6130-commitLint) by:alexm -- feat: refs #6500 by:robert -- feat: refs #6500 cambios solicitados by:robert -- feat: refs #6500 delete procedure by:robert -- feat: refs #6500 procRefactor8 by:robert -- feat: refs #6724 Added admon acl to vn-check by:guillermo -- feat: refs #6724 Grant changes by:guillermo -- feat: refs #6724 hook added by:jorgep -- feat: refs #6938 add scope & acls by:jorgep -- feat: refs #6968 Changed groupingMode to enum by:guillermo -- feat: refs #6968 Requested changes by:guillermo -- feat: refs #6968 Transactioned and isTriggerDisabled by:guillermo -- feat: refs #7173 Added restrictions in invoiceIn structure by:guillermo -- feat: refs #7173 Added traduction by:guillermo -- feat(salix): refs #6930 Undo rollback salix-back by:Javier Segarra -- feat(salix): refs #6930 Undo rollback salix-front by:Javier Segarra -- feat: sin concatenar en el nombre by:jgallego -- feat(spec): refs #6005 add spec by:pablone -- feat(spec): refs #6005 add spec to backup Notify by:pablone -- feat: test by:pablone -- refs #7190 feat: renewToken for multimedia by:Javier Segarra - -### Changed 📦 - -- feat: refs #6021 order_put refactor by:pablone -- refactor(main-labeler): refs #6005 refactor de mainLabeler a backupPrinterFk by:pablone -- refactor(printer-notification): refs #6005 refactor de la notificación by:pablone -- refactor: refs #6005 delay on productionConfig by:pablone -- refactor: refs #6005 move the logic to the report by:pablone -- refactor: refs #6005 refactor spec by:pablone -- refactor: refs #6724 Minor change by:guillermo -- refactor: refs #7139 replace warehouse with ticket by:Jon -- refactor: refs #7181 Added grant by:guillermo -- refactor: refs #7181 Minor change by:guillermo -- refactor: refs #7181 Requested changes by:guillermo -- refactor: refs #7181 vn2008.Deleted risk_vs_client_list by:guillermo - -### Fixed 🛠️ - -- feat(operator.spec): refs #6005 add spec for delay and fix spec for spam by:pablone -- feat: refs #6021 fix proc by:pablone -- fix(binlog): refs #4409 Fixtures for binlogQueue by:Juan Ferrer Toribio -- fix(changes): refs #6005 remove changes files by:pablone -- fix(claim): remove blank space refs #6130 by:pablone -- fix commit code by:pablone -- fix: husky by:alexm -- fix(notification): refs #6005 notification changes by:pablone -- fix: refs #6005 add fixtures for a spec by:pablone -- fix: refs #6005 move logic to hook by:pablone -- fix: refs #6021 catalogue_findById by:pablone -- fix: refs #6021 proc by:pablone -- fix: refs #6130 code by:pablone -- fix:refs #6130 code by:pablone -- fix: refs #6130 code:code by:pablone -- fix: refs #6130 code remove console.log by:pablone -- fix: refs #6130 test by:pablone -- fix: refs #6938 acls & scope by:jorgep -- fix: refs #6938 e2e tests by:jorgep -- fix: refs #6938 filters & scope by:jorgep -- fix: refs #6938 front tests by:jorgep -- fix: refs #6938 scope by:jorgep -- fix: remove logs (testHusky_deleteme) by:alexm -- fix(spec): refs #6005 backupLabeler spec by:pablone -- fix(sql): refs #6005 fix fk formation by:pablone -- fix(yml): refs #6005 backUpLabeler yml fix by:pablone -- refs #6641 fix PR changes by:jcasado -- refs #6641 fix test by:jcasado -- refs #6641 test fixtures by:jcasado -- refs #6835 fix: issue by:Javier Segarra # Changelog diff --git a/changelog.sh b/changelog.sh new file mode 100644 index 000000000..8cd7b4716 --- /dev/null +++ b/changelog.sh @@ -0,0 +1,34 @@ +features_types=(chore feat style) +changes_types=(refactor perf) +fix_types=(fix revert) +file="CHANGELOG.md" +file_tmp="temp_log.txt" +file_current_tmp="temp_current_log.txt" + +setType(){ + echo "### $1" >> $file_tmp + arr=("$@") + echo "" > $file_current_tmp + for i in "${arr[@]}" + do + git log --grep="$i" --oneline --no-merges --format="- %s %d by:%an" master..test >> $file_current_tmp + done + # remove duplicates + sort -o $file_current_tmp -u $file_current_tmp + cat $file_current_tmp >> $file_tmp + echo "" >> $file_tmp + # remove tmp current file + [ -e $file_current_tmp ] && rm $file_current_tmp +} + +echo "# Version XX.XX - XXXX-XX-XX" >> $file_tmp +echo "" >> $file_tmp + +setType "Added 🆕" "${features_types[@]}" +setType "Changed 📦" "${changes_types[@]}" +setType "Fixed 🛠️" "${fix_types[@]}" + +cat $file >> $file_tmp +mv $file_tmp $file + + From 2f4f199fad9607fdb901192621b0faf5930cf2af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 16 May 2024 14:40:02 +0200 Subject: [PATCH 4/9] fix: invoiceInTax_getFromEntries (referenceRate) --- .../invoiceInTax_getFromEntries.sql | 50 +++++++++++-------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql b/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql index b64996a66..5f2ceeb4f 100644 --- a/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql +++ b/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql @@ -1,24 +1,24 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTax_getFromEntries`(IN vInvoiceInFk INT) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTax_getFromEntries`( + IN vInvoiceInFk INT +) BEGIN DECLARE vRate DOUBLE DEFAULT 1; - DECLARE vDated DATE; DECLARE vExpenseFk VARCHAR(10); - SELECT MAX(rr.dated) INTO vDated - FROM referenceRate rr - JOIN invoiceIn ii ON ii.id = vInvoiceInFk - WHERE rr.dated <= ii.issued - AND rr.currencyFk = ii.currencyFk ; - - IF vDated THEN - SELECT `value` INTO vRate - FROM referenceRate - WHERE dated = vDated; - END IF; + WITH rate AS( + SELECT MAX(rr.dated) dated, ii.currencyFk + FROM vn.invoiceIn ii + JOIN vn.referenceRate rr ON rr.currencyFk = ii.currencyFk + WHERE ii.id = vInvoiceInFk + AND rr.dated <= ii.issued + ) SELECT `value` INTO vRate + FROM vn.referenceRate rr + JOIN rate r ON r.dated = rr.dated + AND r.currencyFk = rr.currencyFk; SELECT id INTO vExpenseFk - FROM vn.expense + FROM expense WHERE `name` = 'Adquisición mercancia Extracomunitaria' GROUP BY id LIMIT 1; @@ -26,19 +26,25 @@ BEGIN DELETE FROM invoiceInTax WHERE invoiceInFk = vInvoiceInFk; - INSERT INTO invoiceInTax(invoiceInFk, taxableBase, expenseFk, foreignValue, taxTypeSageFk, transactionTypeSageFk) - SELECT ii.id, - SUM(b.buyingValue * b.quantity) / IFNULL(vRate,1) taxableBase, - vExpenseFk, - IF(ii.currencyFk = 1,NULL,SUM(b.buyingValue * b.quantity )) divisa, - taxTypeSageFk, + INSERT INTO invoiceInTax( + invoiceInFk, + taxableBase, + expenseFk, + foreignValue, + taxTypeSageFk, transactionTypeSageFk + )SELECT ii.id, + SUM(b.buyingValue * b.quantity) / vRate taxableBase, + vExpenseFk, + IF(ii.currencyFk = 1, + NULL, + SUM(b.buyingValue * b.quantity )), + taxTypeSageFk, + transactionTypeSageFk FROM invoiceIn ii JOIN entry e ON e.invoiceInFk = ii.id JOIN supplier s ON s.id = e.supplierFk JOIN buy b ON b.entryFk = e.id - LEFT JOIN referenceRate rr ON rr.currencyFk = ii.currencyFk - AND rr.dated = ii.issued WHERE ii.id = vInvoiceInFk HAVING taxableBase IS NOT NULL; END$$ From 01d1a2391dda59132c367de1e9219458b559ad98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 16 May 2024 18:48:59 +0200 Subject: [PATCH 5/9] refs #7400 feat: book ledger with counters --- db/routines/vn/functions/xdiario_new.sql | 43 +-- db/routines/vn/procedures/duaTaxBooking.sql | 213 +++++++------- .../vn/procedures/invoiceIn_booking.sql | 4 +- .../vn/procedures/invoiceOutBooking.sql | 261 +++++++++--------- .../vn/procedures/ledger_doCompensation.sql | 103 ++++--- db/routines/vn/procedures/ledger_next.sql | 9 +- .../vn/triggers/payment_beforeInsert.sql | 167 +++++------ .../11054-orangeBamboo/00-firstScript.sql | 9 + 8 files changed, 421 insertions(+), 388 deletions(-) create mode 100644 db/versions/11054-orangeBamboo/00-firstScript.sql diff --git a/db/routines/vn/functions/xdiario_new.sql b/db/routines/vn/functions/xdiario_new.sql index 06e6e57b2..4f4b3f3fd 100644 --- a/db/routines/vn/functions/xdiario_new.sql +++ b/db/routines/vn/functions/xdiario_new.sql @@ -1,5 +1,6 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`xdiario_new`(vAsiento INT, +CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`xdiario_new`( + vBookNumber INT, vDated DATE, vSubaccount VARCHAR(12), vAccount VARCHAR(12), @@ -12,33 +13,33 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`xdiario_new`(vAsient vVat DOUBLE, vRe DOUBLE, vAux TINYINT, - vCompany INT + vCompanyFk INT ) RETURNS int(11) NOT DETERMINISTIC NO SQL BEGIN - IF vAsiento IS NULL THEN - CALL vn.ledger_next(vAsiento); + IF vBookNumber IS NULL THEN + CALL ledger_next(YEAR(vDated), vBookNumber); END IF; INSERT INTO XDiario - SET ASIEN = vAsiento, - FECHA = vDated, - SUBCTA = vSubaccount, - CONTRA = vAccount, - CONCEPTO = vConcept, - EURODEBE = vDebit, - EUROHABER = vCredit, - BASEEURO = vEuro, - SERIE = vSerie, - FACTURA = vInvoice, - IVA = vVat, - RECEQUIV = vRe, - AUXILIAR = IF(vAux = FALSE, NULL, '*'), - MONEDAUSO = 2, - empresa_id = vCompany; + SET ASIEN = vBookNumber, + FECHA = vDated, + SUBCTA = vSubaccount, + CONTRA = vAccount, + CONCEPTO = vConcept, + EURODEBE = vDebit, + EUROHABER = vCredit, + BASEEURO = vEuro, + SERIE = vSerie, + FACTURA = vInvoice, + IVA = vVat, + RECEQUIV = vRe, + AUXILIAR = IF(vAux = FALSE, NULL, '*'), + MONEDAUSO = 2, + empresa_id = vCompanyFk; - RETURN vAsiento; + RETURN vBookNumber; END$$ -DELIMITER ; +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/duaTaxBooking.sql b/db/routines/vn/procedures/duaTaxBooking.sql index 1fef11e96..5d4a98933 100644 --- a/db/routines/vn/procedures/duaTaxBooking.sql +++ b/db/routines/vn/procedures/duaTaxBooking.sql @@ -2,127 +2,121 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`duaTaxBooking`(vDuaFk INT) BEGIN DECLARE vBookNumber INT; - DECLARE vBookDated DATE; - DECLARE vDiff DECIMAL(10,2); - DECLARE vApunte BIGINT; - - SELECT ASIEN, IFNULL(bookEntried, util.VN_CURDATE()) INTO vBookNumber, vBookDated - FROM dua + DECLARE vBookDated DATE; + DECLARE vDiff DECIMAL(10,2); + DECLARE vApunte BIGINT; + + SELECT ASIEN, IFNULL(bookEntried, util.VN_CURDATE()) + INTO vBookNumber, vBookDated + FROM dua WHERE id = vDuaFk; - + IF vBookNumber IS NULL OR NOT vBookNumber THEN - CALL ledger_next(vBookNumber); + CALL ledger_next(YEAR(vBookDated), vBookNumber); END IF; -- Apunte de la aduana - INSERT INTO XDiario( - ASIEN, - FECHA, - SUBCTA, - CONCEPTO, - EUROHABER, - SERIE, - empresa_id, - CLAVE, - FACTURA) + ASIEN, + FECHA, + SUBCTA, + CONCEPTO, + EUROHABER, + SERIE, + empresa_id, + CLAVE, + FACTURA) + SELECT vBookNumber, + d.bookEntried, + '4700000999', + CONCAT('DUA ',d.`code`), + sum(dt.base * dt.rate / 100) EUROHABER, + 'R', + d.companyFk, + vDuaFk, + vDuaFk + FROM duaTax dt + JOIN dua d ON d.id = dt.duaFk + WHERE dt.duaFk = vDuaFk; - SELECT - vBookNumber, - d.bookEntried, - '4700000999', - CONCAT('DUA ',d.`code`), - sum(dt.base * dt.rate / 100) EUROHABER, - 'R', - d.companyFk, - vDuaFk, - vDuaFk - FROM duaTax dt - JOIN dua d ON d.id = dt.duaFk - WHERE dt.duaFk = vDuaFk; - - -- Apuntes por tipo de IVA y proveedor - - INSERT INTO XDiario( - ASIEN, - FECHA, - SUBCTA, - CONTRA, - EURODEBE, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - AUXILIAR, - SERIE, - FECHA_EX, - FECHA_OP, - FACTURAEX, - NFACTICK, - L340, - LDIFADUAN, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - TERIDNIF, - TERNIF, - TERNOM, - empresa_id, - FECREGCON - ) - - SELECT - vBookNumber ASIEN, - vBookDated FECHA, - tr.account SUBCTA, - '4330002067' CONTRA, - sum(dt.tax) EURODEBE, - sum(dt.base) BASEEURO, - CONCAT('DUA nº',d.code) CONCEPTO, - d.id FACTURA, - dt.rate IVA, - '*' AUXILIAR, - 'D' SERIE, - d.issued FECHA_EX, - d.operated FECHA_OP, - d.code FACTURAEX, - 1 NFACTICK, - 1 L340, - TRUE LDIFADUAN, - 1 TIPOCLAVE, - 1 TIPOEXENCI, - 1 TIPONOSUJE, - 5 TIPOFACT, - 1 TIPORECTIF, - IF(c.code = 'ES', 1, 4) TERIDNIF, - s.nif TERNIF, - s.name TERNOM, - d.companyFk, - d.booked FECREGCON - FROM duaTax dt - JOIN dua d ON dt.duaFk = d.id - JOIN (SELECT account, rate - FROM - (SELECT rate, account - FROM invoiceInTaxBookingAccount ta - WHERE ta.effectived <= vBookDated - AND taxAreaFk = 'WORLD' - ORDER BY ta.effectived DESC - LIMIT 10000000000000000000 - ) tba - GROUP BY rate + -- Apuntes por tipo de IVA y proveedor + INSERT INTO XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + FECHA_EX, + FECHA_OP, + FACTURAEX, + NFACTICK, + L340, + LDIFADUAN, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + empresa_id, + FECREGCON) + SELECT vBookNumber ASIEN, + vBookDated FECHA, + tr.account SUBCTA, + '4330002067' CONTRA, + SUM(dt.tax) EURODEBE, + SUM(dt.base) BASEEURO, + CONCAT('DUA nº',d.code) CONCEPTO, + d.id FACTURA, + dt.rate IVA, + '*' AUXILIAR, + 'D' SERIE, + d.issued FECHA_EX, + d.operated FECHA_OP, + d.code FACTURAEX, + 1 NFACTICK, + 1 L340, + TRUE LDIFADUAN, + 1 TIPOCLAVE, + 1 TIPOEXENCI, + 1 TIPONOSUJE, + 5 TIPOFACT, + 1 TIPORECTIF, + IF(c.code = 'ES', 1, 4) TERIDNIF, + s.nif TERNIF, + s.name TERNOM, + d.companyFk, + d.booked FECREGCON + FROM duaTax dt + JOIN dua d ON dt.duaFk = d.id + JOIN (SELECT account, rate + FROM + (SELECT rate, account + FROM invoiceInTaxBookingAccount ta + WHERE ta.effectived <= vBookDated + AND taxAreaFk = 'WORLD' + ORDER BY ta.effectived DESC + LIMIT 10000000000000000000 + ) tba + GROUP BY rate ) tr ON tr.rate = dt.rate - JOIN supplier s ON s.id = d.companyFk - JOIN country c ON c.id = s.countryFk - WHERE d.id = vDuaFk - GROUP BY dt.rate; + JOIN supplier s ON s.id = d.companyFk + JOIN country c ON c.id = s.countryFk + WHERE d.id = vDuaFk + GROUP BY dt.rate; SELECT SUM(EURODEBE) -SUM(EUROHABER), MAX(id) INTO vDiff, vApunte FROM XDiario WHERE ASIEN = vBookNumber; - + UPDATE XDiario SET BASEEURO = 100 * (EURODEBE - vDiff) / IVA, EURODEBE = EURODEBE - vDiff @@ -131,6 +125,5 @@ BEGIN UPDATE dua SET ASIEN = vBookNumber WHERE id = vDuaFk; - END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/invoiceIn_booking.sql b/db/routines/vn/procedures/invoiceIn_booking.sql index a75b2269a..4b015750f 100644 --- a/db/routines/vn/procedures/invoiceIn_booking.sql +++ b/db/routines/vn/procedures/invoiceIn_booking.sql @@ -2,6 +2,7 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceIn_booking`(vSelf INT) BEGIN DECLARE vBookNumber INT; + DECLARE vFiscalYear INT; CREATE OR REPLACE TEMPORARY TABLE tInvoiceIn ENGINE = MEMORY @@ -56,7 +57,8 @@ BEGIN LEFT JOIN sage.taxType tt ON tt.id = ti.CodigoIva WHERE ii.id = vSelf; - CALL vn.ledger_next(vBookNumber); + SELECT YEAR(bookEntried) INTO vFiscalYear FROM tInvoiceIn LIMIT 1; + CALL ledger_next(vFiscalYear, vBookNumber); -- Apunte del proveedor INSERT INTO XDiario( diff --git a/db/routines/vn/procedures/invoiceOutBooking.sql b/db/routines/vn/procedures/invoiceOutBooking.sql index bd109e1ec..913035576 100644 --- a/db/routines/vn/procedures/invoiceOutBooking.sql +++ b/db/routines/vn/procedures/invoiceOutBooking.sql @@ -1,22 +1,24 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOutBooking`(IN vInvoice INT) BEGIN -/* Asienta la factura emitida -* -* param vInvoice factura_id -*/ +/** + * Asienta una factura emitida + * + * @param vInvoice Id invoiceOut + */ DECLARE vBookNumber INT; - DECLARE vExpenseConcept VARCHAR(50); - DECLARE vSpainCountryFk INT; - DECLARE vOldBookNumber INT; + DECLARE vExpenseConcept VARCHAR(50); + DECLARE vSpainCountryFk INT; + DECLARE vOldBookNumber INT; + DECLARE vFiscalYear INT; - SELECT id INTO vSpainCountryFk FROM country WHERE code = 'ES'; + SELECT id INTO vSpainCountryFk FROM country WHERE `code` = 'ES'; - SELECT ASIEN + SELECT ASIEN INTO vOldBookNumber FROM XDiario x JOIN invoiceOut io ON io.id = vInvoice - WHERE x.SERIE = io.serial + WHERE x.SERIE = io.serial AND x.FACTURA = RIGHT(io.ref, LENGTH(io.ref) - 1) LIMIT 1; @@ -26,140 +28,133 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS rs; CREATE TEMPORARY TABLE rs - SELECT - c.accountingAccount AS clientBookingAccount, - io.amount as totalAmount, - CONCAT('n/fra ', io.ref) as simpleConcept, - CONCAT('n/fra ', io.ref, ' ', c.name) as Concept, - io.serial AS SERIE, - io.issued AS FECHA_EX, - io.issued AS FECHA_OP, - io.issued AS FECHA, - 1 AS NFACTICK, - IF(ic.correctingFk,'D','') AS TIPOOPE, - io.siiTrascendencyInvoiceOutFk AS TIPOCLAVE, - io.cplusTaxBreakFk AS TIPOEXENCI, - io.cplusSubjectOpFk AS TIPONOSUJE, - io.siiTypeInvoiceOutFk AS TIPOFACT, - ic.cplusRectificationTypeFk AS TIPORECTIF, + SELECT c.accountingAccount clientBookingAccount, + io.amount totalAmount, + CONCAT('n/fra ', io.ref) simpleConcept, + CONCAT('n/fra ', io.ref, ' ', c.name) Concept, + io.serial SERIE, + io.issued FECHA_EX, + io.issued FECHA_OP, + io.issued FECHA, + 1 NFACTICK, + IF(ic.correctingFk,'D','') TIPOOPE, + io.siiTrascendencyInvoiceOutFk TIPOCLAVE, + io.cplusTaxBreakFk TIPOEXENCI, + io.cplusSubjectOpFk TIPONOSUJE, + io.siiTypeInvoiceOutFk TIPOFACT, + ic.cplusRectificationTypeFk TIPORECTIF, io.companyFk, - RIGHT(io.ref, LENGTH(io.ref) - 1) AS invoiceNum, - IF(c.countryFk = vSpainCountryFk, vSpainCountryFk, IF(ct.isUeeMember,2,4)) AS TERIDNIF, - CONCAT(IF(ct.isUeeMember AND c.countryFk <> vSpainCountryFk,ct.code,''),c.fi) AS TERNIF, - c.socialName AS TERNOM, - ior.serial AS SERIE_RT, - RIGHT(ior.ref, LENGTH(ior.ref) - 1) AS FACTU_RT, - ior.issued AS FECHA_RT, - IF(ior.id,TRUE,FALSE) AS RECTIFICA + RIGHT(io.ref, LENGTH(io.ref) - 1) invoiceNum, + IF(c.countryFk = vSpainCountryFk, vSpainCountryFk, IF(ct.isUeeMember,2,4)) TERIDNIF, + CONCAT(IF(ct.isUeeMember AND c.countryFk <> vSpainCountryFk,ct.code,''),c.fi) TERNIF, + c.socialName TERNOM, + ior.serial SERIE_RT, + RIGHT(ior.ref, LENGTH(ior.ref) - 1) FACTU_RT, + ior.issued FECHA_RT, + IF(ior.id,TRUE,FALSE) RECTIFICA FROM invoiceOut io JOIN invoiceOutSerial ios ON ios.code = io.serial JOIN client c ON c.id = io.clientFk JOIN country ct ON ct.id = c.countryFk LEFT JOIN invoiceCorrection ic ON ic.correctingFk = io.id - LEFT JOIN invoiceOut ior ON ior.id = ic.correctedFk + LEFT JOIN invoiceOut ior ON ior.id = ic.correctedFk WHERE io.id = vInvoice; - CALL vn.ledger_next(vBookNumber); - + SELECT YEAR(FECHA) INTO vFiscalYear FROM rs LIMIT 1; + CALL ledger_next(vFiscalYear, vBookNumber); -- Linea del cliente INSERT INTO XDiario( - ASIEN, - FECHA, - SUBCTA, - EURODEBE, - CONCEPTO, - FECHA_EX, - FECHA_OP, - empresa_id - ) - SELECT - vBookNumber AS ASIEN, + ASIEN, + FECHA, + SUBCTA, + EURODEBE, + CONCEPTO, + FECHA_EX, + FECHA_OP, + empresa_id) + SELECT vBookNumber, rs.FECHA, - rs.clientBookingAccount AS SUBCTA, - rs.totalAmount AS EURODEBE, - rs.simpleConcept AS CONCEPTO, + rs.clientBookingAccount, + rs.totalAmount, + rs.simpleConcept, rs.FECHA_EX, rs.FECHA_OP, - rs.companyFk AS empresa_id + rs.companyFk FROM rs; -- Lineas de gasto INSERT INTO XDiario( - ASIEN, - FECHA, - SUBCTA, - CONTRA, - EUROHABER, - CONCEPTO, - FECHA_EX, - FECHA_OP, - empresa_id - ) - SELECT - vBookNumber AS ASIEN, - rs.FECHA, - ioe.expenseFk AS SUBCTA, - rs.clientBookingAccount AS CONTRA, - ioe.amount AS EUROHABER, - rs.Concept AS CONCEPTO, - rs.FECHA_EX, - rs.FECHA_OP, - rs.companyFk AS empresa_id - FROM rs - JOIN invoiceOutExpense ioe - WHERE ioe.invoiceOutFk = vInvoice; + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + CONCEPTO, + FECHA_EX, + FECHA_OP, + empresa_id) + SELECT vBookNumber, + rs.FECHA, + ioe.expenseFk, + rs.clientBookingAccount, + ioe.amount, + rs.Concept, + rs.FECHA_EX, + rs.FECHA_OP, + rs.companyFk + FROM rs + JOIN invoiceOutExpense ioe + WHERE ioe.invoiceOutFk = vInvoice; - SELECT GROUP_CONCAT(`name` SEPARATOR ',') - INTO vExpenseConcept - FROM expense e - JOIN invoiceOutExpense ioe ON ioe.expenseFk = e.id - WHERE ioe.invoiceOutFk = vInvoice; + SELECT GROUP_CONCAT(`name` SEPARATOR ',') + INTO vExpenseConcept + FROM expense e + JOIN invoiceOutExpense ioe ON ioe.expenseFk = e.id + WHERE ioe.invoiceOutFk = vInvoice; - -- Lineas de IVA + -- Lineas de IVA INSERT INTO XDiario( - ASIEN, - FECHA, - SUBCTA, - CONTRA, - EUROHABER, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - RECEQUIV, - AUXILIAR, - SERIE, - SERIE_RT, - FACTU_RT, - RECTIFICA, - FECHA_RT, - FECHA_OP, - FECHA_EX, - TIPOOPE, - NFACTICK, - TERIDNIF, - TERNIF, - TERNOM, - L340, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - empresa_id - ) - SELECT - vBookNumber AS ASIEN, + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + RECEQUIV, + AUXILIAR, + SERIE, + SERIE_RT, + FACTU_RT, + RECTIFICA, + FECHA_RT, + FECHA_OP, + FECHA_EX, + TIPOOPE, + NFACTICK, + TERIDNIF, + TERNIF, + TERNOM, + L340, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + empresa_id) + SELECT vBookNumber ASIEN, rs.FECHA, - iot.pgcFk AS SUBCTA, - rs.clientBookingAccount AS CONTRA, - iot.vat AS EUROHABER, - iot.taxableBase AS BASEEURO, - CONCAT(vExpenseConcept,' : ',rs.Concept) AS CONCEPTO, - rs.invoiceNum AS FACTURA, - IF(pe2.equFk,0,pgc.rate) AS IVA, - IF(pe2.equFk,0,pgce.rate) AS RECEQUIV, - IF(pgc.mod347,'','*') AS AUXILIAR, + iot.pgcFk SUBCTA, + rs.clientBookingAccount CONTRA, + iot.vat EUROHABER, + iot.taxableBase BASEEURO, + CONCAT(vExpenseConcept,' : ',rs.Concept) CONCEPTO, + rs.invoiceNum FACTURA, + IF(pe2.equFk,0,pgc.rate) IVA, + IF(pe2.equFk,0,pgce.rate) RECEQUIV, + IF(pgc.mod347,'','*') AUXILIAR, rs.SERIE, rs.SERIE_RT, rs.FACTU_RT, @@ -168,27 +163,27 @@ BEGIN rs.FECHA_OP, rs.FECHA_EX, rs.TIPOOPE, - rs.NFACTICK, + rs.NFACTICK, rs.TERIDNIF, rs.TERNIF, rs.TERNOM, - pgc.mod340 AS L340, - pgc.siiTrascendencyInvoiceOutFk AS TIPOCLAVE, - pgc.cplusTaxBreakFk as TIPOEXENCI, + pgc.mod340 L340, + pgc.siiTrascendencyInvoiceOutFk TIPOCLAVE, + pgc.cplusTaxBreakFk TIPOEXENCI, rs.TIPONOSUJE, rs.TIPOFACT, rs.TIPORECTIF, - rs.companyFk AS empresa_id + rs.companyFk FROM rs JOIN invoiceOutTax iot JOIN pgc ON pgc.code = iot.pgcFk LEFT JOIN pgcEqu pe ON pe.vatFk = iot.pgcFk -- --------------- Comprueba si la linea es de iva con rec.equiv. asociado LEFT JOIN pgc pgce ON pgce.code = pe.equFk - LEFT JOIN pgcEqu pe2 ON pe2.equFk = iot.pgcFk -- --------------- Comprueba si la linea es de rec.equiv. + LEFT JOIN pgcEqu pe2 ON pe2.equFk = iot.pgcFk -- --------------- Comprueba si la linea es de rec.equiv. WHERE iot.invoiceOutFk = vInvoice; - - UPDATE invoiceOut - SET booked = util.VN_CURDATE() - WHERE id = vInvoice; + + UPDATE invoiceOut + SET booked = util.VN_CURDATE() + WHERE id = vInvoice; END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/ledger_doCompensation.sql b/db/routines/vn/procedures/ledger_doCompensation.sql index e45db376c..80475ac08 100644 --- a/db/routines/vn/procedures/ledger_doCompensation.sql +++ b/db/routines/vn/procedures/ledger_doCompensation.sql @@ -1,5 +1,13 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_doCompensation`(vDated DATE, vCompensationAccount VARCHAR(10) , vBankFk VARCHAR(10), vConcept VARCHAR(255), vAmount DECIMAL(10,2), vCompanyFk INT, vOriginalAccount VARCHAR(10)) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_doCompensation`( + vDated DATE, + vCompensationAccount VARCHAR(10), + vBankFk VARCHAR(10), + vConcept VARCHAR(255), + vAmount DECIMAL(10,2), + vCompanyFk INT, + vOriginalAccount VARCHAR(10) +) BEGIN /** * Compensa un pago o un recibo insertando en contabilidad @@ -9,29 +17,31 @@ BEGIN * @param vBankFk banco de la compensacion * @param vConcept descripcion * @param vAmount cantidad que se compensa - * @param vCompany empresa + * @param vCompanyFk empresa * @param vOriginalAccount cuenta contable desde la cual se compensa * - */ + */ DECLARE vNewBookEntry INT; - DECLARE vIsClientCompensation INT; + DECLARE vIsClientCompensation INT; DECLARE vClientFk INT; - DECLARE vSupplierFk INT; - DECLARE vIsOriginalAClient BOOL; - DECLARE vPayMethodCompensation INT; - - CALL ledger_next(vNewBookEntry); + DECLARE vSupplierFk INT; + DECLARE vIsOriginalAClient BOOL; + DECLARE vPayMethodCompensation INT; - SELECT COUNT(id) INTO vIsOriginalAClient FROM client WHERE accountingAccount LIKE vOriginalAccount COLLATE utf8_general_ci; + CALL ledger_next(YEAR(vDated), vNewBookEntry); + + SELECT COUNT(id) INTO vIsOriginalAClient + FROM client + WHERE accountingAccount LIKE vOriginalAccount COLLATE utf8_general_ci; SELECT id, COUNT(id) INTO vClientFk, vIsClientCompensation FROM client WHERE accountingAccount LIKE vCompensationAccount COLLATE utf8_general_ci; - + SET @vAmount1:= 0.0; SET @vAmount2:= 0.0; - INSERT INTO XDiario (ASIEN, FECHA, SUBCTA, CONTRA, CONCEPTO, EURODEBE, EUROHABER, empresa_id) + INSERT INTO XDiario (ASIEN, FECHA, SUBCTA, CONTRA, CONCEPTO, EURODEBE, EUROHABER, empresa_id) VALUES ( vNewBookEntry, vDated, vOriginalAccount, @@ -49,30 +59,51 @@ BEGIN ), vCompanyFk ), - ( vNewBookEntry, - vDated, - vCompensationAccount, - vOriginalAccount, - vConcept, - @vAmount2, + ( vNewBookEntry, + vDated, + vCompensationAccount, + vOriginalAccount, + vConcept, + @vAmount2, @vAmount1, - vCompanyFk); - - IF vIsClientCompensation THEN - IF vIsOriginalAClient THEN - SET vAmount = -vAmount; - END IF; - INSERT INTO receipt(invoiceFk, amountPaid, payed, bankFk, companyFk, clientFk, isConciliate) - VALUES (vConcept, vAmount, vDated, vBankFk, vCompanyFk, vClientFk, TRUE); - ELSE - IF NOT vIsOriginalAClient THEN - SET vAmount = -vAmount; - END IF; - SELECT id INTO vSupplierFk FROM supplier WHERE `account` LIKE vCompensationAccount COLLATE utf8_general_ci; - SELECT id INTO vPayMethodCompensation FROM payMethod WHERE `code` = 'compensation'; - - INSERT INTO payment (received, dueDated, supplierFk, amount, bankFk, payMethodFk, concept, companyFk, isConciliated) - VALUES(vDated, vDated, vSupplierFk, vAmount, vBankFk, vPayMethodCompensation, vConcept, vCompanyFk, TRUE); - END IF; + vCompanyFk); + + IF vIsClientCompensation THEN + IF vIsOriginalAClient THEN + SET vAmount = -vAmount; + END IF; + + INSERT INTO receipt + SET invoiceFk = vConcept, + amountPaid = vAmount, + payed = vDated, + bankFk = vBankFk, + companyFk = vCompanyFk, + clientFk = vClientFk, + isConciliate = TRUE; + ELSE + IF NOT vIsOriginalAClient THEN + SET vAmount = -vAmount; + END IF; + + SELECT id INTO vSupplierFk + FROM supplier + WHERE `account` LIKE vCompensationAccount COLLATE utf8_general_ci; + + SELECT id INTO vPayMethodCompensation + FROM payMethod + WHERE `code` = 'compensation'; + + INSERT INTO payment + SET received = vDated, + dueDated = vDated, + supplierFk = vSupplierFk, + amount = vAmount, + bankFk = vBankFk, + payMethodFk = vPayMethodCompensation, + concept = vConcept, + companyFk = vCompanyFk, + isConciliated = TRUE; + END IF; END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/ledger_next.sql b/db/routines/vn/procedures/ledger_next.sql index a45ebdd29..88cc242fa 100644 --- a/db/routines/vn/procedures/ledger_next.sql +++ b/db/routines/vn/procedures/ledger_next.sql @@ -1,9 +1,10 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_next`(OUT vNewBookEntry INT) BEGIN - - UPDATE vn.ledgerConfig SET lastBookEntry = LAST_INSERT_ID(lastBookEntry + 1); - SET vNewBookEntry = LAST_INSERT_ID(); - + UPDATE ledgerCompany + SET bookEntry = LAST_INSERT_ID(bookEntry + 1) + WHERE fiscalYear = vFiscalYear; + + SET vNewBookEntry = LAST_INSERT_ID(); END$$ DELIMITER ; diff --git a/db/routines/vn/triggers/payment_beforeInsert.sql b/db/routines/vn/triggers/payment_beforeInsert.sql index 1b343712f..0a4cd1f12 100644 --- a/db/routines/vn/triggers/payment_beforeInsert.sql +++ b/db/routines/vn/triggers/payment_beforeInsert.sql @@ -3,92 +3,93 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`payment_beforeInsert` BEFORE INSERT ON `payment` FOR EACH ROW BEGIN - DECLARE cuenta_banco,cuenta_proveedor DOUBLE; - DECLARE vNewBookEntry INT; - DECLARE bolCASH BOOLEAN; - DECLARE isSupplierActive BOOLEAN; + DECLARE vBankAccount DOUBLE; + DECLARE vSupplierAccount DOUBLE; + DECLARE vNewBookEntry INT; + DECLARE vIsCash BOOLEAN; + DECLARE vIsSupplierActive BOOLEAN; - -- PAK 10/02/15 No se asientan los pagos directamente, salvo en el caso de las cajas de CASH - SELECT (at2.code = 'cash') INTO bolCASH - FROM accounting a - JOIN accountingType at2 ON at2.id = a.accountingTypeFk - WHERE a.id = NEW.bankFk; + -- PAK 10/02/15 No se asientan los pagos directamente, salvo en el caso de las cajas de CASH + SELECT (at2.code = 'cash') INTO vIsCash + FROM accounting a + JOIN accountingType at2 ON at2.id = a.accountingTypeFk + WHERE a.id = NEW.bankFk; - IF bolCASH THEN - - SELECT account INTO cuenta_banco - FROM accounting - WHERE id = NEW.bankFk; - - SELECT account INTO cuenta_proveedor - FROM supplier - WHERE id = NEW.supplierFk; + IF vIsCash THEN + SELECT account INTO vBankAccount + FROM accounting + WHERE id = NEW.bankFk; - CALL ledger_next(vNewBookEntry); - - INSERT INTO XDiario ( ASIEN, - FECHA, - SUBCTA, - CONTRA, - CONCEPTO, - EURODEBE, - EUROHABER, - empresa_id) - SELECT vNewBookEntry, - NEW.received, - SUBCTA, - CONTRA, - NEW.concept, - EURODEBE, - EUROHABER, - NEW.companyFk - FROM ( SELECT cuenta_banco SUBCTA, - cuenta_proveedor CONTRA, - 0 EURODEBE, - NEW.amount + NEW.bankingFees EUROHABER - UNION ALL - SELECT cuenta_proveedor SUBCTA, - cuenta_banco CONTRA, - NEW.amount EURODEBE, - 0 EUROHABER) gf; - - IF NEW.bankingFees <> 0 THEN - INSERT INTO XDiario ( ASIEN, - FECHA, - SUBCTA, - CONTRA, - CONCEPTO, - EURODEBE, - EUROHABER, - empresa_id) - SELECT vNewBookEntry, - NEW.received, - IF(c.id = 1,6260000002, - IF(CEE = 1,6260000003,6260000004)), - cuenta_banco, - NEW.concept, - NEW.bankingFees, - 0, - NEW.companyFk - FROM supplier s - JOIN country c ON s.countryFk = c.id - WHERE s.id = NEW.supplierFk; - END IF; - END IF; - - SET NEW.dueDated = IFNULL(NEW.dueDated, NEW.received); - - SELECT isActive INTO isSupplierActive + SELECT account INTO vSupplierAccount FROM supplier WHERE id = NEW.supplierFk; - - IF isSupplierActive = FALSE THEN - CALL util.throw('SUPPLIER_INACTIVE'); - END IF; - - IF ISNULL(NEW.workerFk) THEN - SET NEW.workerFk = account.myUser_getId(); - END IF; - - END$$ + + CALL ledger_next(YEAR(NEW.received), NEW.companyFk, vNewBookEntry); + + INSERT INTO XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + CONCEPTO, + EURODEBE, + EUROHABER, + empresa_id) + SELECT vNewBookEntry, + NEW.received, + SUBCTA, + CONTRA, + NEW.concept, + EURODEBE, + EUROHABER, + NEW.companyFk + FROM (SELECT vBankAccount SUBCTA, + vSupplierAccount CONTRA, + 0 EURODEBE, + NEW.amount + NEW.bankingFees EUROHABER + UNION ALL + SELECT vSupplierAccount SUBCTA, + vBankAccount CONTRA, + NEW.amount EURODEBE, + 0 EUROHABER) gf; + + IF NEW.bankingFees <> 0 THEN + INSERT INTO XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + CONCEPTO, + EURODEBE, + EUROHABER, + empresa_id) + SELECT vNewBookEntry, + NEW.received, + IF(c.id = 1,6260000002, + IF(CEE = 1,6260000003,6260000004)), + vBankAccount, + NEW.concept, + NEW.bankingFees, + 0, + NEW.companyFk + FROM supplier s + JOIN country c ON s.countryFk = c.id + WHERE s.id = NEW.supplierFk; + END IF; + END IF; + + SET NEW.dueDated = IFNULL(NEW.dueDated, NEW.received); + + SELECT isActive INTO vIsSupplierActive + FROM supplier + WHERE id = NEW.supplierFk; + + IF vIsSupplierActive = FALSE THEN + CALL util.throw('SUPPLIER_INACTIVE'); + END IF; + + IF ISNULL(NEW.workerFk) THEN + SET NEW.workerFk = account.myUser_getId(); + END IF; +END$$ DELIMITER ; diff --git a/db/versions/11054-orangeBamboo/00-firstScript.sql b/db/versions/11054-orangeBamboo/00-firstScript.sql new file mode 100644 index 000000000..5758cd5a2 --- /dev/null +++ b/db/versions/11054-orangeBamboo/00-firstScript.sql @@ -0,0 +1,9 @@ +CREATE OR REPLACE TABLE vn.ledgerCompany ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `fiscalYear` int(10) unsigned NOT NULL COMMENT 'Año del ejercicio contable', + `bookEntry` int(10) unsigned NOT NULL DEFAULT 1 COMMENT 'Contador asiento contable', + PRIMARY KEY (`id`), + UNIQUE KEY `ledgerCompany_unique` (`fiscalYear`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci + COMMENT='Contador para asientos contables'; + \ No newline at end of file From 38c505fb7a7f3d4e2d5da4a9d16dc19f5e320d9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 16 May 2024 19:07:48 +0200 Subject: [PATCH 6/9] refs #7400 feat: book ledger with counters --- .../11054-orangeBamboo/00-firstScript.sql | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/db/versions/11054-orangeBamboo/00-firstScript.sql b/db/versions/11054-orangeBamboo/00-firstScript.sql index 5758cd5a2..7fc1a2166 100644 --- a/db/versions/11054-orangeBamboo/00-firstScript.sql +++ b/db/versions/11054-orangeBamboo/00-firstScript.sql @@ -1,9 +1,16 @@ -CREATE OR REPLACE TABLE vn.ledgerCompany ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `fiscalYear` int(10) unsigned NOT NULL COMMENT 'Año del ejercicio contable', - `bookEntry` int(10) unsigned NOT NULL DEFAULT 1 COMMENT 'Contador asiento contable', - PRIMARY KEY (`id`), - UNIQUE KEY `ledgerCompany_unique` (`fiscalYear`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci - COMMENT='Contador para asientos contables'; - \ No newline at end of file + CREATE OR REPLACE TABLE vn.ledgerCompany ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `fiscalYear` int(10) unsigned NOT NULL COMMENT 'Año del ejercicio contable', + `bookEntry` int(10) unsigned NOT NULL DEFAULT 1 COMMENT 'Contador asiento contable', + PRIMARY KEY (`id`), + UNIQUE KEY `ledgerCompany_unique` (`fiscalYear`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci + COMMENT='Contador para asientos contables'; + + INSERT IGNORE INTO vn.ledgerCompany (fiscalYear, bookEntry) + SELECT YEAR(util.VN_CURDATE()), lastBookEntry + FROM vn.ledgerConfig; + + ALTER TABLE vn.ledgerConfig CHANGE IF EXISTS lastBookEntry lastBookEntry__ int(11) NOT NULL + COMMENT '@deprecated 2024-05-28 refs #7400 Modificar contador asientos contables'; + \ No newline at end of file From 8d8cfa24decd31af99e9cfab42a30151cc2c0929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 16 May 2024 19:16:25 +0200 Subject: [PATCH 7/9] refs #7400 feat: book ledger with counters --- db/routines/vn/procedures/ledger_next.sql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/ledger_next.sql b/db/routines/vn/procedures/ledger_next.sql index 88cc242fa..5cde90def 100644 --- a/db/routines/vn/procedures/ledger_next.sql +++ b/db/routines/vn/procedures/ledger_next.sql @@ -1,5 +1,8 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_next`(OUT vNewBookEntry INT) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_next`( + IN vFiscalYear INT, + OUT vNewBookEntry INT +) BEGIN UPDATE ledgerCompany SET bookEntry = LAST_INSERT_ID(bookEntry + 1) From bddc9a8386733f73c1bfe71662513aa62bc2ffd8 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 17 May 2024 07:51:51 +0200 Subject: [PATCH 8/9] Deleted insert into util.debug (deletedState) --- db/routines/vn/triggers/ticketTracking_afterDelete.sql | 5 ----- 1 file changed, 5 deletions(-) diff --git a/db/routines/vn/triggers/ticketTracking_afterDelete.sql b/db/routines/vn/triggers/ticketTracking_afterDelete.sql index 2f1bbbcee..2683e8d3c 100644 --- a/db/routines/vn/triggers/ticketTracking_afterDelete.sql +++ b/db/routines/vn/triggers/ticketTracking_afterDelete.sql @@ -18,11 +18,6 @@ BEGIN `changedModel` = 'TicketTracking', `changedModelId` = OLD.id, `userFk` = account.myUser_getId(); - - CALL util.debugAdd('deletedState', - CONCAT('interFk: ', OLD.id, - ' ticketFk: ', OLD.ticketFk, - ' stateFk: ', OLD.stateFk)); SELECT i.ticketFk, i.id, s.`name` INTO vTicketFk, vTicketTrackingFk, vStateName From a99554c773c5b6dfd0383e3d03017629eb190d48 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 17 May 2024 09:50:53 +0200 Subject: [PATCH 9/9] fix: Occasionally saleVolume bad index --- db/routines/vn/views/saleVolume.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/views/saleVolume.sql b/db/routines/vn/views/saleVolume.sql index aec739678..ffc6714c6 100644 --- a/db/routines/vn/views/saleVolume.sql +++ b/db/routines/vn/views/saleVolume.sql @@ -37,7 +37,7 @@ FROM ( ) JOIN `vn`.`volumeConfig` `vc` ) - JOIN `vn`.`itemCost` `ic` ON( + JOIN `vn`.`itemCost` `ic` FORCE INDEX (`PRIMARY`) ON( `ic`.`itemFk` = `s`.`itemFk` AND `ic`.`warehouseFk` = `t`.`warehouseFk` )