Compare commits

...

220 Commits

Author SHA1 Message Date
Robert Ferrús 9ee3e76594 Merge branch 'dev' into 5855-temporaryTable
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-15 10:11:35 +00:00
Juan Ferrer ba94bcdb19 Merge pull request 'feat(binlog): refs #4409 New function for binlog queue monitoring' (!2299) from 4409-binlogQueueFn into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2299
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2024-04-15 08:20:09 +00:00
Juan Ferrer 31e27f1926 Merge branch '4409-binlogQueueFn' of https://gitea.verdnatura.es/verdnatura/salix into 4409-binlogQueueFn
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-15 10:18:07 +02:00
Juan Ferrer 5414aaa1b4 fix(binlog): refs #4409 Fixtures for binlogQueue 2024-04-15 10:18:06 +02:00
Juan Ferrer ba9e1d9233 Merge branch 'dev' into 4409-binlogQueueFn
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-15 08:16:56 +00:00
Javier Casado e0fca2cf6c Merge pull request 'refs #6641 add button my team' (!2254) from 6641-checkboxMyTeam into dev
gitea/salix/pipeline/head There was a failure building this commit Details
Reviewed-on: #2254
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2024-04-15 08:11:36 +00:00
jcasado dc8a6d1274 Merge branch 'dev' into 6641-checkboxMyTeam
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-15 10:11:36 +02:00
Juan Ferrer 50d6c234be feat(binlog): refs #4409 New function for binlog queue monitoring
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-15 09:31:24 +02:00
Pablo Natek 40473d0cc9 Merge pull request 'test: refs #null commit' (!2297) from testHusky_deleteme into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2297
Reviewed-by: Pablo Natek <pablone@verdnatura.es>
2024-04-12 11:30:07 +00:00
Alex Moreno cc57fa72fd fix: remove logs
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-12 13:24:24 +02:00
Alex Moreno 827f152783 fix: husky
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-12 13:23:36 +02:00
Alex Moreno f0604bedd0 test: refs #null asd 2024-04-12 13:22:32 +02:00
Alex Moreno bb52b1bae2 test: refs #null test 2024-04-12 13:21:37 +02:00
Alex Moreno 85e6f30697 test: refs #null commit
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-12 13:18:34 +02:00
Pablo Natek 5c4d2dda97 Merge pull request '6130-commitLint' (!1792) from 6130-commitLint into dev
gitea/salix/pipeline/head There was a failure building this commit Details
Reviewed-on: #1792
Reviewed-by: Juan Ferrer <juan@verdnatura.es>
2024-04-12 11:01:59 +00:00
Pablo Natek 4633079255 Merge branch '6130-commitLint' of https://gitea.verdnatura.es/verdnatura/salix into 6130-commitLint
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-12 12:37:46 +02:00
Pablo Natek 8887550713 fix: refs #6130 test 2024-04-12 12:22:00 +02:00
Pablo Natek 0db4cd7a12 feat: refs #6130 handle branch without task 2024-04-12 12:20:18 +02:00
Pablo Natek fa1e679b48 feat: refs #12 peter 2024-04-12 12:04:05 +02:00
Pablo Natek 1a71be38a3 feat: test 2024-04-12 12:03:34 +02:00
Pablo Natek 68f142e560 Merge branch 'dev' into 6130-commitLint
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-12 09:31:52 +00:00
Pablo Natek f2fc9d09d5 Merge pull request 'fix(sql): refs #6005 fix fk formation' (!2294) from 6005-fixsql into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2294
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
2024-04-12 09:01:30 +00:00
Pablo Natek e43f7d9f28 Merge branch 'dev' into 6005-fixsql
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-12 08:21:42 +00:00
Pablo Natek 0d03cf76b4 fix(sql): refs #6005 fix fk formation
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-12 10:17:04 +02:00
Sergio De la torre 6014db75ea Merge pull request '6497_redirect_firewall' (!2239) from 6497_redirect_firewall into dev
gitea/salix/pipeline/head There was a failure building this commit Details
Reviewed-on: #2239
Reviewed-by: Juan Ferrer <juan@verdnatura.es>
2024-04-12 07:44:05 +00:00
Sergio De la torre 0af4c6ee2b Merge branch 'dev' into 6497_redirect_firewall
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-12 07:42:20 +00:00
Pablo Natek 3547299c70 Merge pull request '6005-backupLabeler' (!2276) from 6005-backupLabeler into dev
gitea/salix/pipeline/head There was a failure building this commit Details
gitea/salix/pipeline/pr-dev This commit looks good Details
Reviewed-on: #2276
Reviewed-by: Juan Ferrer <juan@verdnatura.es>
2024-04-12 07:12:53 +00:00
Guillermo Bonet e516f90a0b Merge branch 'test' into dev
gitea/salix/pipeline/head This commit looks good Details
2024-04-12 08:56:58 +02:00
Guillermo Bonet d503018d5c Fixtures Jorge
gitea/salix/pipeline/head This commit looks good Details
2024-04-12 08:56:38 +02:00
Guillermo Bonet b5f3b5ebee Fix version
gitea/salix/pipeline/head This commit looks good Details
2024-04-12 08:19:57 +02:00
Guillermo Bonet c0cabc894b refactor: refs #7181 Added grant
gitea/salix/pipeline/head This commit looks good Details
2024-04-12 08:08:49 +02:00
Guillermo Bonet f0472b7ace Merge branch 'test' into dev
gitea/salix/pipeline/head This commit looks good Details
2024-04-12 08:03:32 +02:00
Guillermo Bonet 69280c63b4 Merge branch 'master' into test
gitea/salix/pipeline/head This commit looks good Details
2024-04-12 08:03:12 +02:00
Guillermo Bonet d86bb6b004 Merge pull request 'refactor: refs #7181 vn2008.Deleted risk_vs_client_list' (!2283) from 7181-risk_vs_client_list into dev
gitea/salix/pipeline/head There was a failure building this commit Details
Reviewed-on: #2283
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2024-04-12 05:18:06 +00:00
Pablo Natek 726b1ddc07 Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-12 05:14:29 +00:00
Juan Ferrer cb1bb4ebc4 Merge pull request 'feat(pbx): refs #7198 country prefix, schedule' (!2284) from 7198-pbxPrefixSchedule into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2284
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2024-04-11 14:58:54 +00:00
Juan Ferrer 3f1941293e Merge branch 'master' into 7198-pbxPrefixSchedule
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-11 14:56:31 +00:00
Guillermo Bonet ec481b4141 Merge branch 'test' into dev
gitea/salix/pipeline/head This commit looks good Details
2024-04-11 14:52:42 +02:00
Guillermo Bonet 2226922366 Merge branch 'master' into test
gitea/salix/pipeline/head There was a failure building this commit Details
2024-04-11 14:52:16 +02:00
Guillermo Bonet 4449441cbf Merge pull request 'hotfix: ticket168996 Now ticket_doCmr ignore deliveryMethod' (!2279) from ticket168996-hotfix into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2279
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2024-04-11 12:42:44 +00:00
Guillermo Bonet f69acf3a05 Merge branch 'dev' into 7181-risk_vs_client_list
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-11 12:41:37 +00:00
Alex Moreno ec095161c8 Merge pull request 'hotFix(closeAll): continue loop' (!2290) from hotFix_closeAll_continueLoop into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2290
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2024-04-11 11:57:09 +00:00
Alex Moreno 99d80d4d30 hotFix(closeAll): continue loop
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-11 13:51:33 +02:00
Pako Natek 5285ff6557 Merge pull request 'moreProcs' (!2289) from 6021-floranet_moreLostProcs into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2289
2024-04-11 11:30:21 +00:00
Pako Natek 0298f3235c Merge pull request 'recovering procs' (!2288) from 6021-floranet_lostProcs into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2288
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2024-04-11 11:25:46 +00:00
Pako Natek 9de4095260 moreProcs
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-11 13:25:43 +02:00
Pako Natek bff3aef73b recovering procs
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-11 13:20:41 +02:00
Guillermo Bonet c190d2bef1 Merge branch 'master' into ticket168996-hotfix
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-11 07:31:31 +00:00
Guillermo Bonet c9b2bb5b5e Merge branch 'dev' into 7181-risk_vs_client_list
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-11 07:29:32 +00:00
Guillermo Bonet b1dc5efc8b refactor: refs #7181 Requested changes
gitea/salix/pipeline/pr-dev Build queued... Details
2024-04-11 09:29:25 +02:00
Alex Moreno 7ddc0b087e deploy: refs #7199 init version 2418
gitea/salix/pipeline/head This commit looks good Details
2024-04-11 08:28:43 +02:00
Alex Moreno 01425bd95e Merge pull request '7199-devToTest_2316' (!2287) from 7199-devToTest_2316 into test
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2287
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
2024-04-11 06:25:22 +00:00
Alex Moreno c27585d6f3 deploy: refs #7199
gitea/salix/pipeline/pr-test This commit looks good Details
2024-04-11 08:20:11 +02:00
Pablo Natek c008614139 Merge pull request 'fix: refs #7024 fix error on setting local variable' (!2286) from 7024-fixInventorryError into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2286
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2024-04-11 05:55:34 +00:00
Alex Moreno 3635a4b6d0 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix into dev
gitea/salix/pipeline/head This commit looks good Details
2024-04-11 07:46:16 +02:00
Pablo Natek b2c3442c12 Merge branch 'master' into 7024-fixInventorryError
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-11 05:33:44 +00:00
Pablo Natek 68ca5d369c fix: refs #7024 fix error on setting local variable
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-11 07:33:31 +02:00
Pablo Natek 4c2721b0c5 Merge pull request 'master' (!2285) from master into test
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2285
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
2024-04-11 05:16:37 +00:00
Juan Ferrer ce55058314 feat(pbx): refs #7198 country prefix, schedule
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-10 18:14:10 +02:00
Ivan Mas 7ceba23957 Merge pull request 'refs #6827 Check usernames special characters' (!2109) from 6827-check-usernames-special-characters into dev
gitea/salix/pipeline/head There was a failure building this commit Details
Reviewed-on: #2109
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
Reviewed-by: Juan Ferrer <juan@verdnatura.es>
2024-04-10 15:23:40 +00:00
Ivan Mas 83befbd120 Merge branch 'dev' into 6827-check-usernames-special-characters
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 15:21:42 +00:00
Pablo Natek e3feefefd7 Merge pull request 'fix: refs #7024 create exception for inventory' (!2282) from 7024-create-exception-for-inventory into master
gitea/salix/pipeline/head This commit looks good Details
gitea/salix/pipeline/pr-test This commit looks good Details
Reviewed-on: #2282
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
2024-04-10 12:56:09 +00:00
Guillermo Bonet 7b3472aa0b refactor: refs #7181 Minor change
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 14:23:24 +02:00
Pablo Natek 2c5c2ca5a7 fix: refs #7024 fix condition sintax
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-10 14:17:08 +02:00
Guillermo Bonet 5044cd454d refactor: refs #7181 vn2008.Deleted risk_vs_client_list
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 14:17:03 +02:00
Ivan Mas b0b71935da Merge pull request 'refs #6732 change Proveedores isReal' (!2281) from 6732-Change-name-vn.supplier.isSerious-to-vn.supplier.isReal into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2281
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
2024-04-10 12:06:41 +00:00
Ivan Mas 08948ad360 Merge branch 'dev' into 6732-Change-name-vn.supplier.isSerious-to-vn.supplier.isReal
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 12:05:04 +00:00
Pablo Natek 2e15b35fd1 fix: refs #7024 create exception for inventory
gitea/salix/pipeline/pr-master There was a failure building this commit Details
2024-04-10 14:01:03 +02:00
Ivan Mas 0b7042d597 refs #6732 change Proveedores isReal
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 13:55:25 +02:00
Ivan Mas bd026af917 Merge pull request 'refs #6732 change name supplier.isSerious to supplier.isReal' (!2063) from 6732-Change-name-vn.supplier.isSerious-to-vn.supplier.isReal into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2063
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
2024-04-10 11:21:19 +00:00
Ivan Mas 85301b84bc Merge branch 'dev' into 6732-Change-name-vn.supplier.isSerious-to-vn.supplier.isReal
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 11:18:31 +00:00
jcasado 0cf1ced747 remove focus
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-04-10 13:17:43 +02:00
jcasado 7d925bac87 refs #6641 fix PR changes
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-04-10 13:16:41 +02:00
Pablo Natek 11bbb716d3 Merge branch '6005-backupLabeler' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 13:09:32 +02:00
Pablo Natek c581deef66 refactor: refs #6005 refactor spec 2024-04-10 13:09:31 +02:00
Guillermo Bonet 1fe783cf0e hotfix: ticket168996 Now ticket_doCmr ignore deliveryMethod
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-10 12:00:52 +02:00
Jorge Penadés 0f5afc908c Merge pull request '#6492 refactor vn2008 procedures' (!2159) from 6492-refactorProceduresVn2008 into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2159
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2024-04-10 09:42:06 +00:00
Jorge Penadés 099fb70582 Merge branch 'dev' into 6492-refactorProceduresVn2008
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 09:29:15 +00:00
Alex Moreno f76123f106 Merge pull request 'hotFix(workerTimeControl): getWeekNumber' (!2278) from hotFix_fix_getWeekNumber into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2278
Reviewed-by: Pablo Natek <pablone@verdnatura.es>
2024-04-10 08:00:21 +00:00
Alex Moreno 51e7045e8b hotFix(workerTimeControl): getWeekNumber
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-10 09:44:09 +02:00
Pablo Natek 5602ed8835 Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 07:17:42 +00:00
Robert Ferrús acd422d48f Merge pull request 'feat: refs #7150' (!2224) from 7150-greuge_dif_porte_add into dev
gitea/salix/pipeline/head This commit looks good Details
gitea/salix/pipeline/pr-dev This commit looks good Details
Reviewed-on: #2224
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2024-04-10 07:01:13 +00:00
Sergio De la torre df999864d4 Merge branch 'dev' into 6497_redirect_firewall
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 06:48:02 +00:00
Robert Ferrús 2c91385e62 Merge branch '7150-greuge_dif_porte_add' of https://gitea.verdnatura.es/verdnatura/salix into 7150-greuge_dif_porte_add
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 08:09:57 +02:00
Robert Ferrús c30c0de92c feat: refs #7150 2024-04-10 08:09:54 +02:00
Robert Ferrús 3420667ae5 Merge branch 'dev' into 7150-greuge_dif_porte_add
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-10 06:05:03 +00:00
Javier Segarra 1bd1506c12 Merge pull request '#7188 - HOTFIX Rollback tokenMultimedia' (!2274) from 7188_HOTFIX_ROLLBACK_tokenMultimedia into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2274
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2024-04-10 05:39:16 +00:00
Pablo Natek 2a972a03ea Merge branch '6005-backupLabeler' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler
gitea/salix/pipeline/pr-dev Build queued... Details
2024-04-10 07:24:19 +02:00
Ivan Mas eedf30a2dd refs #6732 salix dependencies and undo changes Proveedores
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 17:31:34 +02:00
Jorge Penadés a3c1bceb7e refactor: refs #6492 use enum
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 15:57:34 +02:00
Jorge Penadés dca75437f1 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6492-refactorProceduresVn2008
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 15:20:30 +02:00
Javier Segarra d85562b090 refs #7188 fix: bug tokenMultimedia
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-09 15:06:05 +02:00
Pablo Natek ed517399dc Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler 2024-04-09 15:04:04 +02:00
Pablo Natek 4a8adf4155 Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/pr-dev Build started... Details
2024-04-09 13:03:40 +00:00
Pablo Natek ac9732606c remove(focus): refs #6005 from spec 2024-04-09 14:55:29 +02:00
Ivan Mas f02c4354ba Merge branch 'dev' into 6827-check-usernames-special-characters
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 14:45:29 +02:00
Ivan Mas 521033edd2 Merge branch 'dev' into 6732-Change-name-vn.supplier.isSerious-to-vn.supplier.isReal
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 11:54:41 +00:00
Pablo Natek aff73a179e remove: refs #6005 remove delay from notification model 2024-04-09 13:36:50 +02:00
Pablo Natek da037c5235 refactor: refs #6005 delay on productionConfig 2024-04-09 13:34:33 +02:00
Guillermo Bonet 0e2e68488d Merge branch 'test' into dev
gitea/salix/pipeline/head This commit looks good Details
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 13:08:54 +02:00
Guillermo Bonet 43111f8192 Merge branch 'master' into test
gitea/salix/pipeline/head This commit looks good Details
2024-04-09 13:08:31 +02:00
Guillermo Bonet 743dc2144e hotfix: refs #6276 Fix send chat msg getSales
gitea/salix/pipeline/head This commit looks good Details
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-09 13:05:01 +02:00
Jorge Penadés 9a28a59d00 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6492-refactorProceduresVn2008
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 11:11:30 +02:00
Alex Moreno c69a4e1c98 Merge pull request 'refactor(workerDms): adapat to lilium' (!2269) from 6551-workerDms_refactor into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2269
Reviewed-by: Javier Segarra <jsegarra@verdnatura.es>
2024-04-09 08:21:20 +00:00
Guillermo Bonet f8be6be7a3 feat: refs #6636 Minor change
gitea/salix/pipeline/head This commit looks good Details
2024-04-09 10:10:11 +02:00
Guillermo Bonet 9ab71318a9 Merge pull request 'feat: refs #6636 Modified updateClaim, model and tests' (!2256) from 6636-pickup into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2256
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2024-04-09 08:01:27 +00:00
Guillermo Bonet c42e00f11e Merge branch 'dev' into 6636-pickup
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 07:43:51 +00:00
Guillermo Bonet 449a06c85c feat: refs #6636 Added tests
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 09:43:30 +02:00
Pablo Natek 7cb40f5d89 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-04-09 09:42:39 +02:00
Pablo Natek 638b715ee5 fix: refs #6005 move logic to hook
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-04-09 09:30:28 +02:00
Alex Moreno 500244dbed fix id
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 07:51:57 +02:00
Sergio De la torre 47c33c1648 Merge pull request 'refs #6276 hotFix:itemShelving_add' (!2270) from 6276_hotfix_itemShelving_add into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2270
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2024-04-09 05:50:06 +00:00
Robert Ferrús 4a31fe29b8 Merge branch 'dev' into 7150-greuge_dif_porte_add
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-09 05:40:01 +00:00
Sergio De la torre 75293fbb9a refs #6276 hotFix:itemShelving_add
gitea/salix/pipeline/pr-master This commit looks good Details
2024-04-09 07:38:28 +02:00
Sergio De la torre 45e4e07df0 Merge branch 'dev' into 6497_redirect_firewall
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-08 13:33:39 +00:00
Alex Moreno 0ecc09fcc4 Merge branch 'dev' into 6551-workerDms_refactor
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-08 12:50:05 +00:00
Alex Moreno 9134216332 refactor(workerDms): adapat to lilium
gitea/salix/pipeline/pr-dev Build queued... Details
2024-04-08 14:46:35 +02:00
Robert Ferrús 6ba43a3c6d Merge branch 'dev' into 7150-greuge_dif_porte_add
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-08 11:29:09 +00:00
jcasado 26c74a3e71 refs #6641 fix test
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-04-08 13:03:15 +02:00
Robert Ferrús 0c5b9e3544 Merge branch 'dev' into 7150-greuge_dif_porte_add
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-08 10:28:02 +00:00
Robert Ferrús 657150a9a7 feat: refs #7150 greuge_dif_porte_add
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-08 08:57:56 +02:00
Pablo Natek 1728ed955b fix: refs #6130 code remove console.log 2024-04-08 08:51:13 +02:00
Robert Ferrús 1e8e6a67a3 Merge branch 'dev' into 7150-greuge_dif_porte_add
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-08 06:39:22 +00:00
Robert Ferrús 5517c29c1c fet: refs #7150 greuge_dif_porte_add
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-08 08:37:37 +02:00
Pablo Natek f7170309d2 test: refs #6130 89 add commit 2024-04-08 08:09:21 +02:00
Pablo Natek 30db151da7 Merge branch '6130-commitLint' of https://gitea.verdnatura.es/verdnatura/salix into 6130-commitLint 2024-04-08 08:08:41 +02:00
Pablo Natek 0dcd1518b9 feat: refs #6130 add commit 2024-04-08 08:08:17 +02:00
Pablo Natek 6a090eaef3 Merge branch 'dev' into 6130-commitLint 2024-04-08 06:02:58 +00:00
Alex Moreno 5df285d469 feat: refs #6130 test commitLint 2024-04-08 07:43:57 +02:00
Guillermo Bonet e27279e20e Merge branch 'dev' into 6636-pickup
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-08 05:18:36 +00:00
Pablo Natek 7acb4ee523 fix: refs #6130 code 2024-04-05 15:01:29 +02:00
Pablo Natek 2084d047b2 fix: refs #6130 code 2024-04-05 15:01:12 +02:00
Pablo Natek 29f952308f #code: refs #6130 code@ 2024-04-05 14:58:43 +02:00
Pablo Natek 1e669e99f8 fix: refs #6130 code:code 2024-04-05 14:58:20 +02:00
Pablo Natek 70bdb52371 fix: refs #6130 code 2024-04-05 14:57:52 +02:00
Pablo Natek 11dea43da2 fix:refs #6130 code 2024-04-05 14:53:06 +02:00
Pablo Natek 021280c53c fix commit code 2024-04-05 14:14:10 +02:00
Pablo Natek 42e21eb602 feat(githook) add reference 2024-04-05 14:13:17 +02:00
Guillermo Bonet 6c1e44638e feat: refs #6636 Added getEnumValue method
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-05 11:01:00 +02:00
Pablo Natek 0004d1da23 test: commit 2024-04-05 09:34:10 +02:00
Pablo Natek a30cc3b660 feat: commit 2024-04-05 09:32:07 +02:00
Pablo Natek 71a333786e commit 2024-04-05 09:08:20 +02:00
Pablo Natek d9a3cc9591 commit 2024-04-05 09:07:01 +02:00
Pablo Natek 9786c10e98 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6130-commitLint 2024-04-05 09:00:17 +02:00
Guillermo Bonet 16a6e3d8a6 feat: refs #6636 Requested change
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-05 08:18:38 +02:00
Pablo Natek 4b4aaa9e10 feat: refs #6005 move logic from report to hook 2024-04-05 08:04:53 +02:00
Guillermo Bonet 1656c8db63 Merge branch '6636-pickup' of https://gitea.verdnatura.es/verdnatura/salix into 6636-pickup
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-05 07:42:04 +02:00
Guillermo Bonet 23db6a41be feat: refs #6636 Minor change 2024-04-05 07:42:03 +02:00
Guillermo Bonet ac658fb6af Merge branch 'dev' into 6636-pickup
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-05 05:29:26 +00:00
jcasado 84e6e7f7bf refs #6641 test fixtures
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-04-04 14:53:26 +02:00
jcasado 1c6d913926 refs #6641 addFilterCollegues
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-04-04 14:28:39 +02:00
Guillermo Bonet fcb4fe92e8 Merge branch 'dev' into 6636-pickup
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-04 12:14:23 +00:00
Guillermo Bonet f44e19cae3 feat: refs #6636 Modified updateClaim, model and tests
gitea/salix/pipeline/pr-dev Build queued... Details
2024-04-04 14:15:20 +02:00
jcasado 5acef1fcc0 refs #6641 add button my team
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-04 13:53:23 +02:00
Sergio De la torre 11991ed5a1 refs #6497:redirect
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-04-03 09:36:03 +02:00
Sergio De la torre 53015d1c67 refs #6497:redirect 2024-04-03 09:33:50 +02:00
Sergio De la torre c65ce5fb61 refs #6497:redirect 2024-04-03 09:31:15 +02:00
Sergio De la torre 642d280386 refs #6497:rdirect 2024-04-03 09:30:18 +02:00
Jorge Penadés 0a89cddff9 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6492-refactorProceduresVn2008
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-28 15:04:28 +01:00
Jorge Penadés df271a242d fix: refs #6492 procedure
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-28 15:03:33 +01:00
Jorge Penadés e851c3b481 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6492-refactorProceduresVn2008
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-28 14:15:31 +01:00
Robert Ferrús ed1bc06301 feat: refs #7150
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-27 17:30:52 +01:00
Robert Ferrús 9667d31441 feat: refs #7150
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-03-27 17:00:27 +01:00
Jorge Penadés 94f6d20bb1 feat: refs #6942 add Insert
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-26 13:41:53 +01:00
Jorge Penadés 72baf1e80e Merge branch '6492-refactorProceduresVn2008' of https://gitea.verdnatura.es/verdnatura/salix into 6492-refactorProceduresVn2008
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-26 12:30:16 +01:00
Jorge Penadés 634bfc5091 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6492-refactorProceduresVn2008 2024-03-26 12:30:07 +01:00
Jorge Penadés 2ea9d042e3 Merge branch 'dev' into 6492-refactorProceduresVn2008
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-25 07:57:45 +00:00
Ivan Mas db71e69317 Merge branch 'dev' into 6827-check-usernames-special-characters
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-21 09:21:32 +00:00
Jorge Penadés d7115e40c1 feat: refs #6492 dropping vn2008 procedures
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-14 12:10:08 +01:00
Jorge Penadés 46b7acb52a Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6492-refactorProceduresVn2008
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-14 11:54:35 +01:00
Jorge Penadés ff130b773d fix: refs #6492 drop useless insert
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-03-14 11:49:21 +01:00
Pablo Natek e3b7c7bb60 Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-14 09:39:13 +00:00
Jorge Penadés 3e458281e6 fix: refs #6492 boxes alias
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-14 09:42:54 +01:00
Jorge Penadés 7a94ae3551 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6492-refactorProceduresVn2008
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-14 09:10:44 +01:00
Alex Moreno bce82881f3 Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-13 07:03:56 +00:00
Jorge Penadés 9e596e6525 fix: refs #6492 file names
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-12 15:27:09 +01:00
Jorge Penadés 10c2d25cbd feat: refs #6492 create procedures & grant privileges
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-03-12 12:57:34 +01:00
Pablo Natek 35dab518c8 Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-11 12:41:07 +00:00
Pablo Natek 421ca8654d fix(changes): refs #6005 remove changes files
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-11 13:39:03 +01:00
Pablo Natek 8815f07850 feat(spec): refs #6005 add spec to backup Notify
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-03-11 12:18:03 +01:00
Pablo Natek 8529bed895 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler 2024-03-11 12:01:13 +01:00
Pablo Natek ae25ba3fb6 feat(notify): refs #6005 add restriction on created notification time
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-03-08 13:44:19 +01:00
Pablo Natek 2421cc7c68 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-03-08 08:23:08 +01:00
Pablo Natek a44359762b feat(delay): refs #6005 add new restriction
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-03-06 14:51:34 +01:00
Ivan Mas 10a89cb790 refs #6827 Check usernames special characters
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-02-28 13:32:17 +01:00
Ivan Mas 48310d24c7 refs #6732 change name supplier.isSerious to supplier.isReal
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-02-21 14:36:12 +01:00
Pablo Natek 5e97f820a2 feat(spec): refs #6005 add spec
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-02-21 12:59:42 +01:00
Pablo Natek 59336b8588 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-02-20 14:33:45 +01:00
Pablo Natek 1c40e01fcb refactor: refs #6005 move the logic to the report
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-02-20 13:49:42 +01:00
Pablo Natek ab7eb88913 merge(dev): refs #6005 merge dev
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-02-20 09:34:08 +01:00
Pablo Natek c10a79493a Merge branch '6005-backupLabeler' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler
gitea/salix/pipeline/head There was a failure building this commit Details
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2023-12-19 14:07:48 +01:00
Pablo Natek 88739542fe move(version): refs #6005 move backupLabeler 2023-12-19 14:07:46 +01:00
Pablo Natek 3e2cac5544 Merge branch 'dev' into 6005-backupLabeler 2023-12-19 14:05:45 +01:00
Alex Moreno 3f44eeb130 Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/head This commit looks good Details
2023-12-19 11:45:48 +00:00
Pablo Natek 4fbb7f05ec Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/head This commit looks good Details
2023-12-19 09:51:36 +00:00
Pablo Natek f68529960e fix(notification): refs #6005 notification changes
gitea/salix/pipeline/head This commit looks good Details
2023-12-19 10:51:18 +01:00
Pablo Natek a58dae6cbe Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/head There was a failure building this commit Details
2023-11-29 08:13:54 +00:00
Pablo Natek d8cf059027 fix: refs #6005 add fixtures for a spec
gitea/salix/pipeline/head There was a failure building this commit Details
2023-11-29 09:10:45 +01:00
Pablo Natek d5fcfdfd79 fix(yml): refs #6005 backUpLabeler yml fix
gitea/salix/pipeline/head This commit looks good Details
2023-11-28 12:24:54 +01:00
Pablo Natek 17501a3c94 feat: refs #6005 mover sql a la ultima carpeta
gitea/salix/pipeline/head This commit looks good Details
2023-11-28 09:13:45 +01:00
Pablo Natek b713a32fe1 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler
gitea/salix/pipeline/head This commit looks good Details
2023-11-28 08:12:06 +01:00
Pablo Natek c929119797 fix(spec): refs #6005 backupLabeler spec
gitea/salix/pipeline/head This commit looks good Details
2023-11-28 08:11:42 +01:00
Pablo Natek 5714aeedce Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/head This commit looks good Details
2023-11-23 09:10:03 +00:00
Pablo Natek b261e9987a Merge branch '6005-backupLabeler' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler
gitea/salix/pipeline/head This commit looks good Details
2023-11-23 10:10:11 +01:00
Pablo Natek 754150d17d feat(operator.spec): refs #6005 add spec for delay and fix spec for spam 2023-11-23 10:10:09 +01:00
Pablo Natek 68dca67442 Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/head This commit looks good Details
2023-11-23 07:33:46 +00:00
Pablo Natek a35a790155 remove(getVideo.spec.js): refs #6005 created task to review the spec
gitea/salix/pipeline/head This commit looks good Details
2023-11-23 08:33:30 +01:00
Pablo Natek 1b4ce1a0b5 feat(noSpam): refs #6005 check if exists a previous notification 2023-11-23 08:22:24 +01:00
Pablo Natek 570ce97cc3 Merge branch '6005-backupLabeler' of https://gitea.verdnatura.es/verdnatura/salix into 6005-backupLabeler
gitea/salix/pipeline/head There was a failure building this commit Details
2023-11-22 12:57:26 +01:00
Pablo Natek 3788d160a6 Merge branch 'dev' into 6005-backupLabeler 2023-11-22 11:30:44 +01:00
Pablo Natek 8dae2919e8 Merge branch 'dev' into 6005-backupLabeler
gitea/salix/pipeline/head There was a failure building this commit Details
2023-11-22 09:38:20 +00:00
Pablo Natek 1e4f778ef9 refactor(main-labeler): refs #6005 refactor de mainLabeler a backupPrinterFk
gitea/salix/pipeline/head This commit looks good Details
2023-11-09 13:22:12 +01:00
Pablo Natek c00bbe070c Merge branch 'dev' into 6005-backupLabeler 2023-11-09 09:26:13 +01:00
Pablo Natek 9c896c835f refactor(printer-notification): refs #6005 refactor de la notificación 2023-11-09 07:56:35 +01:00
Pablo Natek 0a40b9e844 fix(claim): remove blank space refs #6130
gitea/salix/pipeline/head There was a failure building this commit Details
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2023-10-15 11:38:27 +02:00
Pablo Natek 597c5bd750 feat(git): add commit lint refs #6130
gitea/salix/pipeline/head This commit looks good Details
2023-10-15 11:35:15 +02:00
Pablo Natek a0eb6d0399 feat(git): add commit lint refs#6130
gitea/salix/pipeline/head This commit looks good Details
2023-10-15 11:33:05 +02:00
Pablo Natek a2f843f4e2 refs #6130 2023-10-15 11:21:13 +02:00
Pablo Natek 38ee64d8f1 refs #6131 2023-10-15 11:15:35 +02:00
Pablo Natek 42df711464 refs #6130 2023-10-15 11:15:07 +02:00
121 changed files with 1932 additions and 983 deletions

33
.husky/addReferenceTag.js Normal file
View File

@ -0,0 +1,33 @@
const fs = require('fs');
const path = require('path');
function getCurrentBranchName(p = process.cwd()) {
if (!fs.existsSync(p)) return false;
const gitHeadPath = path.join(p, '.git', 'HEAD');
if (!fs.existsSync(gitHeadPath))
return getCurrentBranchName(path.resolve(p, '..'));
const headContent = fs.readFileSync(gitHeadPath, 'utf-8');
return headContent.trim().split('/')[2];
}
const branchName = getCurrentBranchName();
if (branchName) {
const msgPath = `.git/COMMIT_EDITMSG`;
const msg = fs.readFileSync(msgPath, 'utf-8');
const reference = branchName.match(/^\d+/);
const referenceTag = `refs #${reference}`;
if (!msg.includes(referenceTag) && reference) {
const splitedMsg = msg.split(':');
if (splitedMsg.length > 1) {
const finalMsg = splitedMsg[0] + ': ' + referenceTag + splitedMsg.slice(1).join(':');
fs.writeFileSync(msgPath, finalMsg);
}
}
}

8
.husky/commit-msg Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
echo "Running husky commit-msg hook"
npx --no-install commitlint --edit
echo "Adding reference tag to commit message"
node .husky/addReferenceTag.js

View File

@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [24.18.01] - 2024-05-02
## [24.16.01] - 2024-04-18
## [2414.01] - 2024-04-04

View File

@ -3,14 +3,14 @@ const {models} = require('vn-loopback/server/server');
describe('Chat send()', () => {
it('should return true as response', async() => {
let ctx = {req: {accessToken: {userId: 1}}};
let response = await models.Chat.send(ctx, '@salesPerson', 'I changed something');
let response = await models.Chat.send(ctx, '@salesperson', 'I changed something');
expect(response).toEqual(true);
});
it('should return false as response', async() => {
let ctx = {req: {accessToken: {userId: 18}}};
let response = await models.Chat.send(ctx, '@salesPerson', 'I changed something');
let response = await models.Chat.send(ctx, '@salesperson', 'I changed something');
expect(response).toEqual(false);
});

View File

@ -29,6 +29,7 @@ module.exports = Self => {
});
Self.getSales = async(ctx, collectionOrTicketFk, print, source, options) => {
const models = Self.app.models;
const userId = ctx.req.accessToken.userId;
const myOptions = {userId};
const $t = ctx.req.__;

View File

@ -45,7 +45,6 @@ module.exports = Self => {
});
availableNotificationsMap.delete(active.notificationFk);
}
return {
active: [...activeNotificationsMap.entries()],
available: [...availableNotificationsMap.entries()]

View File

@ -4,8 +4,8 @@ describe('NotificationSubscription getList()', () => {
it('should return a list of available and active notifications of a user', async() => {
const userId = 9;
const {active, available} = await models.NotificationSubscription.getList(userId);
const notifications = await models.Notification.find({});
const totalAvailable = notifications.length - active.length;
const notifications = await models.NotificationSubscription.getAvailable(userId);
const totalAvailable = notifications.size - active.length;
expect(active.length).toEqual(3);
expect(available.length).toEqual(totalAvailable);

View File

@ -19,12 +19,12 @@ module.exports = Self => {
}
});
Self.getUrl = async(appName = 'salix') => {
const {url} = await Self.app.models.Url.findOne({
const url = await Self.app.models.Url.findOne({
where: {
appName,
environment: process.env.NODE_ENV || 'development'
}
});
return url;
return url?.url;
};
};

View File

@ -174,5 +174,8 @@
},
"WorkerActivityType": {
"dataSource": "vn"
},
"ProductionConfig": {
"dataSource": "vn"
}
}

View File

@ -0,0 +1,19 @@
{
"name": "ProductionConfig",
"base": "VnModel",
"options": {
"mysql": {
"table": "productionConfig"
}
},
"properties": {
"id": {
"type": "number",
"required": true,
"id": true
},
"backupPrinterNotificationDelay": {
"type": "string"
}
}
}

View File

@ -41,8 +41,7 @@ describe('loopback model NotificationSubscription', () => {
try {
const options = {transaction: tx, accessToken: {userId: 9}};
const notificationSubscriptionId = 2;
await models.NotificationSubscription.destroyAll({id: notificationSubscriptionId}, options);
await models.NotificationSubscription.destroyAll({id: 2}, options);
await tx.rollback();
} catch (e) {
@ -76,8 +75,7 @@ describe('loopback model NotificationSubscription', () => {
try {
const options = {transaction: tx, accessToken: {userId: 9}};
const notificationSubscriptionId = 6;
await models.NotificationSubscription.destroyAll({id: notificationSubscriptionId}, options);
await models.NotificationSubscription.destroyAll({id: 6}, options);
await tx.rollback();
} catch (e) {
@ -111,8 +109,7 @@ describe('loopback model NotificationSubscription', () => {
try {
const options = {transaction: tx, accessToken: {userId: 19}};
const notificationSubscriptionId = 4;
await models.NotificationSubscription.destroyAll({id: notificationSubscriptionId}, options);
await models.NotificationSubscription.destroyAll({id: 4}, options);
await tx.rollback();
} catch (e) {

1
commitlint.config.js Normal file
View File

@ -0,0 +1 @@
module.exports = {extends: ['@commitlint/config-conventional']};

View File

@ -9,6 +9,10 @@ SET foreign_key_checks = 0;
INSERT INTO util.config (id, environment, mockTime, mockUtcTime, mockEnabled)
VALUES (1, 'local', '2001-01-01 12:00:00', '2001-01-01 11:00:00', TRUE);
INSERT INTO util.binlogQueue (code,logName, `position`)
VALUES ('mylogger', 'bin.000001', 4);
/* #5483
INSERT INTO vn.entryConfig (defaultEntry, mailToNotify, inventorySupplierFk, maxLockTime, defaultSupplierFk)
VALUES(1, NULL, 1, 300, 1);
@ -113,9 +117,6 @@ INSERT INTO vn.ticket (clientFk, warehouseFk, shipped, nickname, refFk, addressF
(100, 4, '2022-07-12 00:00:00', 'root', NULL, 195, NULL, NULL, 0, 0, 0, 0, NULL, 0, '2022-07-12 16:18:58', 1, NULL, 4, NULL, 1, 567, 1, '2022-07-12', 0, 0, 6, NULL, NULL, NULL, NULL, NULL),
(100, 5, '2022-07-12 00:00:00', 'root', NULL, 195, NULL, NULL, 0, 0, 0, 0, NULL, 0, '2022-07-12 16:18:58', 1, NULL, 5, NULL, 1, 567, 1, '2022-07-12', 0, 0, 1, NULL, NULL, NULL, NULL, NULL);
*/
INSERT INTO vn.sector (description,warehouseFk) VALUES
('Sector One',1);
INSERT INTO vn.saleGroup (userFk,parkingFk,sectorFk) VALUES
(100,1,1);
@ -156,16 +157,6 @@ INSERT INTO `vn`.`occupationCode` (`code`, `name`)
('b', 'Representantes de comercio'),
('c', 'Personal de oficios en trabajos de construcción en general, y en instalac.,edificios y obras');
INSERT INTO `vn2008`.`payroll_employee` (`CodTrabajador`,`codempresa`)
VALUES
(36,20),
(43,20),
(76,20),
(1106,20),
(1107,20),
(1108,20),
(1109,20),
(1110,20);
INSERT INTO `vn`.`trainingCourseType` (`id`, `name`)
VALUES

View File

@ -81,7 +81,7 @@ INSERT INTO `account`.`roleConfig`(`id`, `mysqlPassword`, `rolePrefix`, `userPre
CALL `account`.`role_sync`;
INSERT INTO `account`.`user`(`id`,`name`, `nickname`, `role`,`active`,`email`, `lang`, `image`, `password`)
SELECT id, name, CONCAT(name, 'Nick'), id, 1, CONCAT(name, '@mydomain.com'), 'en', '4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2'
SELECT id, LOWER(name), CONCAT(name, 'Nick'), id, 1, CONCAT(name, '@mydomain.com'), 'en', '4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2'
FROM `account`.`role`
ORDER BY id;
@ -118,18 +118,18 @@ INSERT INTO `hedera`.`tpvConfig`(`id`, `currency`, `terminal`, `transactionType`
INSERT INTO `account`.`user`(`id`,`name`,`nickname`, `password`,`role`,`active`,`email`,`lang`, `image`)
VALUES
(1101, 'BruceWayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es','1101'),
(1102, 'PetterParker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'PetterParker@mydomain.com', 'en','1102'),
(1103, 'ClarkKent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr','1103'),
(1104, 'TonyStark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es','1104'),
(1105, 'MaxEisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt','1105'),
(1106, 'DavidCharlesHaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en','1106'),
(1107, 'HankPym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en','1107'),
(1108, 'CharlesXavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en','1108'),
(1109, 'BruceBanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en','1109'),
(1110, 'JessicaJones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en','1110'),
(1111, 'Missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29'),
(1112, 'Trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29');
(1101, 'brucewayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es','1101'),
(1102, 'petterparker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'PetterParker@mydomain.com', 'en','1102'),
(1103, 'clarkkent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr','1103'),
(1104, 'tonystark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es','1104'),
(1105, 'maxeisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt','1105'),
(1106, 'davidcharleshaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en','1106'),
(1107, 'hankpym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en','1107'),
(1108, 'charlesxavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en','1108'),
(1109, 'brucebanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en','1109'),
(1110, 'jessicajones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en','1110'),
(1111, 'missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29'),
(1112, 'trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29');
UPDATE account.`user`
SET passExpired = DATE_SUB(util.VN_CURDATE(), INTERVAL 1 YEAR)
@ -198,7 +198,7 @@ INSERT INTO `vn`.`printer` (`id`, `name`, `path`, `isLabeler`, `sectorFk`, `ipAd
(2, 'printer2', 'path2', 1, 1 , NULL),
(4, 'printer4', 'path4', 0, NULL, '10.1.10.4');
UPDATE `vn`.`sector` SET mainPrinterFk = 1 WHERE id = 1;
UPDATE `vn`.`sector` SET `backupPrinterFk` = 1 WHERE id = 1;
INSERT INTO `vn`.`worker`(`id`, `code`, `firstName`, `lastName`,`bossFk`, `phone`)
@ -1827,9 +1827,9 @@ INSERT INTO `vn`.`claimState`(`id`, `code`, `description`, `roleFk`, `priority`,
INSERT INTO `vn`.`claim`(`id`, `ticketCreated`, `claimStateFk`, `clientFk`, `workerFk`, `responsibility`, `isChargedToMana`, `created`, `packages`, `ticketFk`)
VALUES
(1, util.VN_CURDATE(), 1, 1101, 18, 3, 0, util.VN_CURDATE(), 0, 11),
(1, util.VN_CURDATE(), 1, 1101, 19, 3, 0, util.VN_CURDATE(), 0, 11),
(2, util.VN_CURDATE(), 4, 1101, 18, 3, 0, util.VN_CURDATE(), 1, 16),
(3, util.VN_CURDATE(), 3, 1101, 18, 1, 1, util.VN_CURDATE(), 5, 7),
(3, util.VN_CURDATE(), 3, 1101, 19, 1, 1, util.VN_CURDATE(), 5, 7),
(4, util.VN_CURDATE(), 3, 1104, 18, 5, 0, util.VN_CURDATE(), 10, 8);
INSERT INTO `vn`.`claimObservation` (`claimFk`, `workerFk`, `text`, `created`)
@ -1880,7 +1880,7 @@ INSERT INTO `vn`.`claimRatio`(`clientFk`, `yearSale`, `claimAmount`, `claimingRa
INSERT INTO `vn`.`claimLog` (`originFk`, userFk, `action`, changedModel, oldInstance, newInstance, changedModelId, `description`)
VALUES
(1, 18, 'update', 'Claim', '{"hasToPickUp":false}', '{"hasToPickUp":true}', 1, NULL),
(1, 18, 'update', 'Claim', '{"pickup":null}', '{"pickup":"agency"}', 1, NULL),
(1, 18, 'update', 'ClaimObservation', '{}', '{"claimFk":1,"text":"Waiting for customer"}', 1, NULL),
(1, 18, 'insert', 'ClaimBeginning', '{}', '{"claimFk":1,"saleFk":1,"quantity":10}', 1, NULL),
(1, 18, 'insert', 'ClaimDms', '{}', '{"claimFk":1,"dmsFk":1}', 1, NULL);
@ -1973,6 +1973,15 @@ INSERT INTO `vn`.`ticketService`(`id`, `description`, `quantity`, `price`, `taxC
(4, 'Documentos', 1, 2.00, 1, 9, 1),
(5, 'Documentos', 1, 2.00, 1, 8, 1);
INSERT INTO `pbx`.`config` (id,defaultPrefix)
VALUES (1,'0034');
INSERT INTO `pbx`.`prefix` (country, prefix)
VALUES
('es', '0034'),
('fr', '0033'),
('pt', '00351');
INSERT INTO `pbx`.`sip`(`user_id`, `extension`)
VALUES
(1, 1010),
@ -2813,7 +2822,8 @@ INSERT INTO `util`.`notification` (`id`, `name`, `description`)
(4, 'supplier-pay-method-update', 'A supplier pay method has been updated'),
(5, 'modified-entry', 'An entry has been modified'),
(6, 'book-entry-deleted', 'accounting entries deleted'),
(7, 'zone-included','An email to notify zoneCollisions');
(7, 'zone-included','An email to notify zoneCollisions'),
(8, 'backup-printer-selected','A backup printer has been selected');
TRUNCATE `util`.`notificationAcl`;
INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`)
@ -2825,7 +2835,8 @@ INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`)
(4, 1),
(5, 9),
(6, 9),
(7, 9);
(7, 9),
(8, 66);
TRUNCATE `util`.`notificationQueue`;
INSERT INTO `util`.`notificationQueue` (`id`, `notificationFk`, `params`, `authorFk`, `status`, `created`)
@ -2845,15 +2856,16 @@ INSERT INTO `util`.`notificationSubscription` (`notificationFk`, `userFk`)
(1, 9),
(1, 3),
(6, 9),
(7, 9);
(7, 9),
(8, 66);
INSERT INTO `vn`.`routeConfig` (`id`, `defaultWorkCenterFk`)
VALUES
(1, 9);
INSERT INTO `vn`.`productionConfig` (`isPreviousPreparationRequired`, `ticketPrintedMax`, `ticketTrolleyMax`, `rookieDays`, `notBuyingMonths`, `id`, `isZoneClosedByExpeditionActivated`, `maxNotReadyCollections`, `minTicketsToCloseZone`, `movingTicketDelRoute`, `defaultZone`, `defautlAgencyMode`, `hasUniqueCollectionTime`, `maxCollectionWithoutUser`, `pendingCollectionsOrder`, `pendingCollectionsAge`)
INSERT INTO `vn`.`productionConfig` (`isPreviousPreparationRequired`, `ticketPrintedMax`, `ticketTrolleyMax`, `rookieDays`, `notBuyingMonths`, `id`, `isZoneClosedByExpeditionActivated`, `maxNotReadyCollections`, `minTicketsToCloseZone`, `movingTicketDelRoute`, `defaultZone`, `defautlAgencyMode`, `hasUniqueCollectionTime`, `maxCollectionWithoutUser`, `pendingCollectionsOrder`, `pendingCollectionsAge`, `backupPrinterNotificationDelay`)
VALUES
(0, 8, 80, 0, 0, 1, 0, 15, 25, -1, 697, 1328, 0, 1, 8, 6);
(0, 8, 80, 0, 0, 1, 0, 15, 25, -1, 697, 1328, 0, 1, 8, 6, 3600);
INSERT INTO `vn`.`collection` (`id`, `created`, `workerFk`, `stateFk`, `itemPackingTypeFk`, `saleTotalCount`, `salePickedCount`, `trainFk`, `sectorFk`, `wagons`)
VALUES
@ -2913,7 +2925,8 @@ INSERT INTO `salix`.`url` (`appName`, `environment`, `url`)
VALUES
('lilium', 'development', 'http://localhost:9000/#/'),
('hedera', 'development', 'http://localhost:9090/'),
('salix', 'development', 'http://localhost:5000/#!/');
('salix', 'development', 'http://localhost:5000/#!/'),
('docuware', 'development', 'http://docuware');
INSERT INTO `vn`.`report` (`id`, `name`, `paperSizeFk`, `method`)
VALUES
@ -3733,5 +3746,23 @@ INSERT INTO vn.ticketLog (originFk,userFk,`action`,creationDate,changedModel,new
VALUES (18,9,'insert','2001-01-01 11:01:00.000','Ticket','{"isDeleted":true}',45,'Super Man');
INSERT INTO `vn`.`supplierDms`(`supplierFk`, `dmsFk`, `editorFk`)
VALUES (1, 10, 9);
INSERT INTO `vn`.`accountReconciliation` (supplierAccountFk,operationDated,valueDated,amount,concept,debitCredit,calculatedCode,created)
VALUES
(1, 10, 9);
(241,'2023-12-13 00:00:00.000','2023-12-07 00:00:00.000',19.36,'BEL 1','debit','2','2023-12-14 08:39:53.000'),
(241,'2023-12-13 00:00:00.000','2023-12-07 00:00:00.000',30226.43,'BEL 2','debit','1','2023-12-14 08:39:53.000'),
(241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',118.81,'RCBO','debit','10','2023-12-14 08:39:53.000'),
(241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',150.03,'TJ','debit','12','2023-12-14 08:39:53.000'),
(241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',150.03,'TJ','debit','12','2023-12-14 08:39:53.000'),
(241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',2149.71,'RCBO.AMAZON','debit','122','2023-12-14 08:39:53.000'),
(241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',3210.5,'RCBO.VOLVO','debit','121','2023-12-14 08:39:53.000'),
(241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',6513.7,'RCBO.ENERPLUS','debit','120','2023-12-14 08:39:53.000');
INSERT INTO `vn`.`accountReconciliationConfig`(currencyFk, warehouseFk)
VALUES (1, 1);
INSERT INTO vn.workerTeam(id, team, workerFk)
VALUES
(8, 1, 19);

View File

@ -7,7 +7,7 @@ BEGIN
* The user name must only contain lowercase letters or, starting with second
* character, numbers or underscores.
*/
IF vUserName NOT REGEXP '^[a-z0-9_-]*$' THEN
IF vUserName NOT REGEXP BINARY '^[a-z0-9_-]+$' THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'INVALID_USER_NAME';
END IF;

View File

@ -1,8 +1,19 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bi`.`greuge_dif_porte_add`()
BEGIN
DECLARE datSTART DATETIME DEFAULT TIMESTAMPADD(DAY,-60,util.VN_CURDATE()); -- '2019-07-01'
DECLARE datEND DATETIME DEFAULT TIMESTAMPADD(DAY,-1,util.VN_CURDATE());
/**
* Calculates the greuge based on a specific date in the 'grievanceConfig' table
*/
DECLARE vDateStarted DATETIME;
DECLARE vDateEnded DATETIME DEFAULT (util.VN_CURDATE() - INTERVAL 1 DAY);
DECLARE vDaysAgoOffset INT;
SELECT daysAgoOffset INTO vDaysAgoOffset
FROM vn.greugeConfig;
SET vDateStarted = util.VN_CURDATE() - INTERVAL vDaysAgoOffset DAY;
DROP TEMPORARY TABLE IF EXISTS tmp.dp;
@ -11,35 +22,34 @@ BEGIN
(PRIMARY KEY (ticketFk))
ENGINE = MEMORY
SELECT t.id ticketFk,
SUM((t.zonePrice - t.zoneBonus) * ebv.ratio) AS teorico,
00000.00 as practico,
00000.00 as greuge,
SUM((t.zonePrice - t.zoneBonus) * ebv.ratio) teorico,
00000.00 practico,
00000.00 greuge,
t.clientFk,
t.shipped
FROM
vn.ticket t
JOIN vn2008.Clientes cli ON cli.Id_cliente = t.clientFk
FROM vn.ticket t
JOIN vn.client c ON c.id = t.clientFk
LEFT JOIN vn.expedition e ON e.ticketFk = t.id
JOIN vn.expeditionBoxVol ebv ON ebv.boxFk = e.freightItemFk
JOIN vn.zone z ON t.zoneFk = z.id
WHERE
t.shipped between datSTART AND datEND
AND cli.`real`
AND t.companyFk IN (442 , 567)
AND z.isVolumetric = FALSE
JOIN vn.company cp ON cp.id = t.companyFk
WHERE t.shipped BETWEEN vDateStarted AND vDateEnded
AND c.isRelevant
AND cp.code IN ('VNL', 'VNH')
AND NOT z.isVolumetric
GROUP BY t.id;
-- Agencias que cobran por volumen
INSERT INTO tmp.dp
SELECT sv.ticketFk,
SUM(IFNULL(sv.freight,0)) AS teorico,
00000.00 as practico,
00000.00 as greuge,
SUM(IFNULL(sv.freight,0)) teorico,
00000.00 practico,
00000.00 greuge,
sv.clientFk,
sv.shipped
FROM vn.saleVolume sv
JOIN vn.zone z ON z.id = sv.zoneFk
AND sv.shipped BETWEEN datSTART AND datEND
AND sv.shipped BETWEEN vDateStarted AND vDateEnded
AND z.isVolumetric != FALSE
GROUP BY sv.ticketFk;
@ -48,11 +58,12 @@ BEGIN
CREATE TEMPORARY TABLE tmp.dp_aux
(PRIMARY KEY (ticketFk))
ENGINE = MEMORY
SELECT dp.ticketFk, sum(Cantidad * Valor) as valor
SELECT dp.ticketFk, SUM(s.quantity * sc.value) valor
FROM tmp.dp
JOIN vn2008.Movimientos m ON m.Id_Ticket = dp.ticketFk
JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento)
WHERE mc.Id_Componente = 15
JOIN vn.sale s ON s.ticketFk = dp.ticketFk
JOIN vn.saleComponent sc ON sc.saleFk = s.id
JOIN vn.component c ON c.id = sc.componentFk
WHERE c.code = 'delivery'
GROUP BY dp.ticketFk;
UPDATE tmp.dp
@ -64,10 +75,11 @@ BEGIN
CREATE TEMPORARY TABLE tmp.dp_aux
(PRIMARY KEY (ticketFk))
ENGINE = MEMORY
SELECT dp.ticketFk, sum(g.amount) Importe
SELECT dp.ticketFk, SUM(g.amount) Importe
FROM tmp.dp
JOIN vn.greuge g ON g.ticketFk = dp.ticketFk
WHERE g.greugeTypeFk = 1 -- dif_porte
JOIN vn.greugeType gt ON gt.id = g.greugeTypeFk
WHERE gt.code = 'freightDifference' -- dif_porte
GROUP BY dp.ticketFk;
UPDATE tmp.dp
@ -75,12 +87,12 @@ BEGIN
SET greuge = IFNULL(Importe,0);
INSERT INTO vn.greuge (clientFk,description,amount,shipped,greugeTypeFk,ticketFk)
SELECT dp.clientFk
, concat('dif_porte ', dp.ticketFk)
, round(IFNULL(dp.teorico,0) - IFNULL(dp.practico,0) - IFNULL(dp.greuge,0),2) as Importe
, date(dp.shipped)
, 1
,dp.ticketFk
SELECT dp.clientFk,
CONCAT('dif_porte ', dp.ticketFk),
ROUND(IFNULL(dp.teorico,0) - IFNULL(dp.practico,0) - IFNULL(dp.greuge,0),2) Importe,
date(dp.shipped),
1,
dp.ticketFk
FROM tmp.dp
JOIN vn.client c ON c.id = dp.clientFk
WHERE ABS(IFNULL(dp.teorico,0) - IFNULL(dp.practico,0) - IFNULL(dp.greuge,0)) > 1

View File

@ -6,7 +6,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.catalogue_get(vLanded DATE,
READS SQL DATA
proc:BEGIN
/**
* Returns list, price and all the stuff regarding the floranet items
* Returns list, price and all the stuff regarding the floranet items.
*
* @param vLanded Delivery date
* @param vPostalCode Delivery address postal code

View File

@ -11,7 +11,7 @@ PROCEDURE floranet.contact_request(
READS SQL DATA
BEGIN
/**
* Set actions for contact request.
* Set actions for contact request
*
* @param vPostalCode Delivery address postal code
*/

View File

@ -6,7 +6,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `floranet`.`deliveryDate_get`(vPosta
READS SQL DATA
BEGIN
/**
* Returns available dates for this postalCode, in the next seven days
* Returns available dates for this postalCode, in the next seven days.
*
* @param vPostalCode Delivery address postal code
*/

View File

@ -7,7 +7,7 @@ CREATE DEFINER=`root`@`localhost`PROCEDURE floranet.order_confirm(vCatalogueFk I
READS SQL DATA
BEGIN
/** Update order.isPaid field
/** Update order.isPaid field.
*
* @param vCatalogueFk floranet.catalogue.id
*

View File

@ -6,7 +6,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.order_put(vOrder JSON)
READS SQL DATA
BEGIN
/**
* Get and process an order
* Get and process an order.
*
* @param vOrder Data of the order
*

View File

@ -6,7 +6,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.sliders_get()
READS SQL DATA
BEGIN
/**
* Returns list of url for sliders
* Returns list of url for sliders.
*/
SELECT
CONCAT('https://cdn.verdnatura.es/image/catalog/1600x900/', i.image) url,

View File

@ -0,0 +1,45 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `util`.`binlogQueue_getDelay`(vCode VARCHAR(255))
RETURNS BIGINT
NOT DETERMINISTIC
BEGIN
/**
* Returns the difference between the current position of the binary log and
* the passed queue.
*
* @param vCode The queue code
* @return The difference in MB
*/
DECLARE vCurLogName VARCHAR(255);
DECLARE vCurPosition BIGINT;
DECLARE vQueueLogName VARCHAR(255);
DECLARE vQueuePosition BIGINT;
DECLARE vDelay BIGINT;
SELECT VARIABLE_VALUE INTO vCurLogName
FROM information_schema.GLOBAL_STATUS
WHERE VARIABLE_NAME = 'BINLOG_SNAPSHOT_FILE';
SELECT VARIABLE_VALUE INTO vCurPosition
FROM information_schema.GLOBAL_STATUS
WHERE VARIABLE_NAME = 'BINLOG_SNAPSHOT_POSITION';
SELECT logName, `position`
INTO vQueueLogName, vQueuePosition
FROM binlogQueue
WHERE code = vCode;
IF vQueuePosition IS NULL THEN
RETURN NULL;
END IF;
SET vDelay =
vCurPosition - CAST(vQueuePosition AS SIGNED) +
@@max_binlog_size * (
CAST(REGEXP_SUBSTR(vCurLogName, '[0-9]+') AS SIGNED) -
CAST(REGEXP_SUBSTR(vQueueLogName, '[0-9]+') AS SIGNED)
);
RETURN ROUND(vDelay / POW(1024, 2));
END$$
DELIMITER ;

View File

@ -0,0 +1,66 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`addAccountReconciliation`()
BEGIN
/**
* Updates duplicate records in the accountReconciliation table,
* by assigning them a new identifier and then inserts a new entry in the till table.
*/
UPDATE accountReconciliation ar
JOIN (
SELECT id,
calculatedCode,
CONCAT(
calculatedCode,
'(',
ROW_NUMBER() OVER (PARTITION BY calculatedCode ORDER BY id),
')'
) newId
FROM accountReconciliation ar
WHERE calculatedCode IN (
SELECT calculatedCode
FROM accountReconciliation
GROUP BY calculatedCode
HAVING COUNT(*) > 1
)
ORDER BY calculatedCode, id
) sub2 ON ar.id = sub2.id
SET ar.calculatedCode = sub2.newId;
INSERT INTO till(
dated,
isAccountable,
serie,
concept,
`in`,
`out`,
bankFk,
companyFk,
warehouseFk,
supplierAccountFk,
calculatedCode,
InForeignValue,
OutForeignValue,
workerFk
)
SELECT ar.operationDated,
TRUE,
'MB',
ar.concept,
IF(ar.debitCredit = 'credit' AND a.currencyFk = arc.currencyFk, ar.amount, NULL),
IF(ar.debitCredit = 'debit' AND a.currencyFk = arc.currencyFk, ar.amount, NULL),
a.id,
sa.supplierFk,
arc.warehouseFk,
ar.supplierAccountFk,
ar.calculatedCode,
IF(ar.debitCredit = 'credit' AND NOT a.currencyFk = arc.currencyFk, ar.amount, NULL),
IF(ar.debitCredit = 'debit' AND NOT a.currencyFk = arc.currencyFk, ar.amount, NULL),
account.myUser_getId()
FROM accountReconciliation ar
JOIN supplierAccount sa ON sa.id = ar.supplierAccountFk
JOIN accounting a ON a.id = sa.accountingFk
LEFT JOIN till t ON t.calculatedCode = ar.calculatedCode
JOIN accountReconciliationConfig arc
WHERE t.id IS NULL;
END$$
DELIMITER ;

View File

@ -0,0 +1,38 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyVolume`()
BEGIN
/**
* Calculates and presents information on shipment and packaging volumes
* for agencies that are not owned for a specific period.
*/
DECLARE vStarted DATETIME DEFAULT util.VN_CURDATE();
DECLARE vEnded DATETIME DEFAULT util.dayEnd(util.VN_CURDATE());
SELECT ag.id agency_id,
CONCAT(RPAD(c.country, 16,' _') ,' ',ag.name) Agencia,
COUNT(*) expediciones,
SUM(t.packages) Bultos,
SUM(tpe.boxes) Faltan
FROM ticket t
JOIN warehouse w ON w.id = t.warehouseFk
JOIN country c ON w.countryFk = c.id
JOIN address a ON a.id = t.addressFk
JOIN agencyMode am ON am.id = t.agencyModeFk
JOIN agency ag ON ag.id = am.agencyFk
JOIN (
SELECT sv.ticketFk,
CEIL(1000 * SUM(sv.volume) / vc.standardFlowerBox) boxes
FROM ticket t
JOIN saleVolume sv ON sv.ticketFk = t.id
JOIN volumeConfig vc
WHERE t.shipped BETWEEN vStarted AND vEnded
AND (t.packages IS NULL OR NOT t.packages)
GROUP BY t.id
) tpe ON tpe.ticketFk = t.id
WHERE t.shipped BETWEEN vStarted AND vEnded
AND NOT ag.isOwn
GROUP BY ag.id
ORDER BY Agencia;
END$$
DELIMITER ;

View File

@ -0,0 +1,35 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_getRisk`(
vDate DATE
)
BEGIN
/**
* Retorna el riesgo de los clientes activos.
*
* @param vDate Fecha a calcular
*/
CREATE OR REPLACE TEMPORARY TABLE tmp.clientGetDebt
(PRIMARY KEY (clientFk))
ENGINE = MEMORY
SELECT id clientFk
FROM client
WHERE isActive;
CALL client_getDebt(vDate);
SELECT c.socialName,
r.clientFk,
c.credit,
CAST(r.risk AS DECIMAL (10,2)) risk,
CAST(c.credit - r.risk AS DECIMAL (10,2)) difference,
co.country
FROM client c
JOIN tmp.risk r ON r.clientFk = c.id
JOIN country co ON co.id = c.countryFk
GROUP BY c.id;
DROP TEMPORARY TABLE
tmp.risk,
tmp.clientGetDebt;
END$$
DELIMITER ;

View File

@ -1,42 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`creditInsurance_getRisk`()
BEGIN
/**
* Devuelve el riesgo de los clientes que estan asegurados
*/
CREATE OR REPLACE TEMPORARY TABLE tmp.client_list
(PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY
SELECT * FROM (
SELECT cc.client Id_Cliente, ci.grade
FROM creditClassification cc
JOIN creditInsurance ci ON cc.id = ci.creditClassification
WHERE dateEnd IS NULL
ORDER BY ci.creationDate DESC
LIMIT 10000000000000000000) t1
GROUP BY Id_Cliente;
CALL vn2008.risk_vs_client_list(util.VN_CURDATE());
SELECT
c.id,
c.name,
c.credit clientCredit,
c.creditInsurance solunion,
CAST(r.risk AS DECIMAL(10,0)) risk,
CAST(c.creditInsurance - r.risk AS DECIMAL(10,0)) riskAlive,
cac.invoiced billedAnnually,
c.dueDay,
ci.grade,
c2.country
FROM tmp.client_list ci
LEFT JOIN tmp.risk r ON r.Id_Cliente = ci.Id_Cliente
JOIN client c ON c.id = ci.Id_Cliente
JOIN bs.clientAnnualConsumption cac ON c.id = cac.clientFk
JOIN country c2 ON c2.id = c.countryFk
GROUP BY c.id;
DROP TEMPORARY TABLE IF EXISTS tmp.risk;
DROP TEMPORARY TABLE IF EXISTS tmp.client_list;
END$$
DELIMITER ;

View File

@ -15,7 +15,7 @@ BEGIN
FROM `entry`
WHERE id = vSelf;
IF vIsBooked THEN
IF vIsBooked AND NOT @isModeInventory THEN
CALL util.throw('Entry is already booked');
END IF;
END$$

View File

@ -233,8 +233,6 @@ BEGIN
UPDATE config SET inventoried = vInventoryDate;
SET @isModeInventory := FALSE;
CREATE OR REPLACE TEMPORARY TABLE tEntryToDelete
(INDEX(entryId)) ENGINE = MEMORY
SELECT e.id entryId,
@ -262,6 +260,8 @@ BEGIN
FROM travel t
JOIN tEntryToDelete tmp ON tmp.travelId = t.id;
SET @isModeInventory := FALSE;
DROP TEMPORARY TABLE IF EXISTS tEntryToDelete;
COMMIT;

View File

@ -21,7 +21,6 @@ BEGIN
SELECT barcodeToItem(vBarcode) INTO vItemFk;
SET vPacking = COALESCE(vPacking, GREATEST(vn.itemPacking(vBarcode,vWarehouseFk), 1));
SET vQuantity = vQuantity * vPacking;
IF (SELECT COUNT(*) FROM shelving WHERE code = vShelvingFk COLLATE utf8_unicode_ci) = 0 THEN

View File

@ -1,29 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`riskAllClients`(maxRiskDate DATE)
BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.client_list;
CREATE TEMPORARY TABLE tmp.client_list
(PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY
SELECT id Id_Cliente, null grade FROM vn.client;
CALL vn2008.risk_vs_client_list(maxRiskDate);
SELECT
c.RazonSocial,
c.Id_Cliente,
c.Credito,
CAST(r.risk as DECIMAL (10,2)) risk,
CAST(c.Credito - r.risk as DECIMAL (10,2)) Diferencia,
c.Id_Pais
FROM
vn2008.Clientes c
JOIN tmp.risk r ON r.Id_Cliente = c.Id_Cliente
JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente
GROUP BY c.Id_cliente;
DROP TEMPORARY TABLE IF EXISTS tmp.risk;
DROP TEMPORARY TABLE IF EXISTS tmp.client_list;
END$$
DELIMITER ;

View File

@ -29,7 +29,6 @@ BEGIN
JOIN province p ON p.id = a.provinceFk
JOIN country co ON co.id = p.countryFk
JOIN agencyMode am ON am.id = t.agencyModeFk
JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
JOIN warehouse w ON w.id = t.warehouseFk
JOIN company com ON com.id = t.companyFk
JOIN client c2 ON c2.id = com.clientFk
@ -38,12 +37,10 @@ BEGIN
LEFT JOIN route r ON r.id = t.routeFk
LEFT JOIN worker wo ON wo.id = r.workerFk
LEFT JOIN vehicle v ON v.id = r.vehicleFk
WHERE t.shipped BETWEEN util.yesterday() AND util.dayEnd(util.VN_CURDATE())
AND al.code IN ('PACKED', 'DELIVERED')
WHERE al.code IN ('PACKED', 'DELIVERED')
AND co.code <> 'ES'
AND am.name <> 'ABONO'
AND w.code = 'ALG'
AND dm.code = 'DELIVERY'
AND t.id = vSelf
GROUP BY t.id;

View File

@ -1,33 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`account_conciliacion_add`()
BEGIN
UPDATE account_conciliacion ac
JOIN
(
SELECT idaccount_conciliacion, @c:= if(@id = id_calculated, @c + 1, 1) contador,
@id:= id_calculated as id_calculated, concat(id_calculated,'(',@c,')') as new_id
FROM account_conciliacion
JOIN
(
select id_calculated, count(*) rep, @c:= 0, @id:= concat('-',id_calculated)
from account_conciliacion
group by id_calculated
having rep > 1
) sub using(id_calculated)
) sub2 using(idaccount_conciliacion)
SET ac.id_calculated = sub2.new_id;
INSERT INTO Cajas(Cajafecha, Partida, Serie, Concepto, Entrada,
Salida, Id_Banco,empresa_id, warehouse_id,
Proveedores_account_id, id_calculated, InForeignValue, OutForeignValue, Id_Trabajador)
SELECT Fechaoperacion, TRUE, 'MB', ac.Concepto, IF(DebeHaber = 2 AND currencyFk = 1, importe,null),
IF(DebeHaber = 1 AND currencyFk = 1, importe, null), a.id, sa.supplierFk, 1,
ac.Id_Proveedores_account, ac.id_calculated, IF(DebeHaber = 2 AND NOT currencyFk = 1, importe, null),
IF(DebeHaber = 1 AND NOT currencyFk = 1, importe, null), account.myUser_getId()
FROM account_conciliacion ac
JOIN vn.supplierAccount sa on sa.id = ac.Id_Proveedores_account
JOIN vn.accounting a ON a.id = sa.accountingFk
LEFT JOIN Cajas c on c.id_calculated = ac.id_calculated
WHERE c.Id_Caja IS NULL;
END$$
DELIMITER ;

View File

@ -1,44 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`agencia_volume`()
BEGIN
DECLARE vStarted DATETIME DEFAULT TIMESTAMP(util.VN_CURDATE());
DECLARE vEnded DATETIME DEFAULT TIMESTAMP(util.VN_CURDATE(), '23:59:59');
DROP TEMPORARY TABLE IF EXISTS tmp.ticket_PackagingEstimated;
CREATE TEMPORARY TABLE tmp.ticket_PackagingEstimated
(
ticketFk INT PRIMARY KEY
,boxes INT DEFAULT 0
);
INSERT INTO tmp.ticket_PackagingEstimated(ticketFk, boxes)
SELECT sv.ticketFk, CEIL(1000 * sum(sv.volume) / vc.standardFlowerBox)
FROM vn.ticket t
JOIN vn.saleVolume sv ON sv.ticketFk = t.id
JOIN vn.volumeConfig vc
WHERE t.shipped BETWEEN vStarted AND vEnded
AND IFNULL(t.packages,0) = 0
GROUP BY t.id;
SELECT * FROM
(
SELECT ag.id agency_id,
CONCAT(RPAD(c.country, 16,' _') ,' ',ag.name) Agencia,
count(*) expediciones,
sum(t.packages) Bultos,
sum(tpe.boxes) Faltan
FROM vn.ticket t
JOIN vn.warehouse w ON w.id = t.warehouseFk
JOIN vn.country c ON w.countryFk = c.id
JOIN vn.address a ON a.id = t.addressFk
JOIN vn.agencyMode am ON am.id = t.agencyModeFk
JOIN vn.agency ag ON ag.id = am.agencyFk
JOIN tmp.ticket_PackagingEstimated tpe ON tpe.ticketFk = t.id
WHERE t.shipped BETWEEN vStarted AND vEnded
AND ag.isOwn = FALSE
GROUP BY ag.id
) sub
ORDER BY Agencia;
DROP TEMPORARY TABLE tmp.ticket_PackagingEstimated;
END$$
DELIMITER ;

View File

@ -1,15 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`article`()
BEGIN
/**
* Crea la tabla temporal: article_inventory
*/
DROP TEMPORARY TABLE IF EXISTS article_inventory;
CREATE TEMPORARY TABLE article_inventory
(
`article_id` INT(11) NOT NULL PRIMARY KEY,
`future` DATETIME
)
ENGINE = MEMORY;
END$$
DELIMITER ;

View File

@ -1,84 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`risk_vs_client_list`(maxRiskDate DATE)
BEGIN
/**
* Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list
*
* @deprecated usar vn.client_getDebt
* @param maxRiskDate Fecha maxima de los registros
* @return table tmp.risk
*/
DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(util.VN_CURDATE()) - 60, util.VN_CURDATE());
DECLARE endingDate DATETIME;
DECLARE MAX_RISK_ALLOWED INT DEFAULT 200;
SET maxRiskDate = IFNULL(maxRiskDate, util.VN_CURDATE());
SET endingDate = TIMESTAMP(maxRiskDate, '23:59:59');
DROP TEMPORARY TABLE IF EXISTS tmp.client_list_2;
CREATE TEMPORARY TABLE tmp.client_list_2
(PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY
SELECT *
FROM tmp.client_list;
DROP TEMPORARY TABLE IF EXISTS tmp.client_list_3;
CREATE TEMPORARY TABLE tmp.client_list_3
(PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY
SELECT *
FROM tmp.client_list;
DROP TEMPORARY TABLE IF EXISTS tmp.tickets_sin_facturar;
CREATE TEMPORARY TABLE tmp.tickets_sin_facturar
(PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY
SELECT t.Id_Cliente, floor(IF(cl.isVies, 1, 1.1) * sum(Cantidad * Preu * (100 - Descuento) / 100)) as total
FROM Movimientos m
JOIN Tickets t on m.Id_Ticket = t.Id_Ticket
JOIN tmp.client_list c on c.Id_Cliente = t.Id_Cliente
JOIN vn.client cl ON cl.id = t.Id_Cliente
WHERE Factura IS NULL
AND Fecha BETWEEN startingDate AND endingDate
GROUP BY t.Id_Cliente;
DROP TEMPORARY TABLE IF EXISTS tmp.risk;
CREATE TEMPORARY TABLE tmp.risk
(PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY
SELECT Id_Cliente, SUM(amount) risk, sum(saldo) saldo
FROM Clientes c
JOIN (
SELECT clientFk, SUM(amount) amount,SUM(amount) saldo
FROM vn.clientRisk
JOIN tmp.client_list on Id_Cliente = clientFk
GROUP BY clientFk
UNION ALL
SELECT Id_Cliente, SUM(Entregado),SUM(Entregado)
FROM Recibos
JOIN tmp.client_list_2 using(Id_Cliente)
WHERE Fechacobro > endingDate
GROUP BY Id_Cliente
UNION ALL
SELECT Id_Cliente, total,0
FROM tmp.tickets_sin_facturar
UNION ALL
SELECT t.clientFk, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)), CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2))
FROM hedera.tpvTransaction t
JOIN tmp.client_list_3 on Id_Cliente = t.clientFk
WHERE t.receiptFk IS NULL
AND t.status = 'ok'
GROUP BY t.clientFk
) t ON c.Id_Cliente = t.clientFk
WHERE c.activo != FALSE
GROUP BY c.Id_Cliente;
DELETE r.*
FROM tmp.risk r
JOIN vn2008.Clientes c on c.Id_Cliente = r.Id_Cliente
JOIN vn2008.pay_met pm on pm.id = c.pay_met_id
WHERE IFNULL(r.saldo,0) < 10
AND r.risk <= MAX_RISK_ALLOWED
AND pm.`name` = 'TARJETA';
END$$
DELIMITER ;

View File

@ -23,7 +23,7 @@ AS SELECT `s`.`id` AS `Id_Proveedor`,
`s`.`isOfficial` AS `oficial`,
`s`.`workerFk` AS `workerFk`,
`s`.`payDay` AS `pay_day`,
`s`.`isSerious` AS `serious`,
`s`.`isReal` AS `serious`,
`s`.`note` AS `notas`,
`s`.`taxTypeSageFk` AS `taxTypeSageFk`,
`s`.`withholdingSageFk` AS `withholdingSageFk`,

View File

@ -0,0 +1,11 @@
ALTER TABLE `vn`.`packingSite` DROP FOREIGN KEY IF EXISTS `packingSite_FK_4`;
ALTER TABLE `vn`.`arcRead` DROP FOREIGN KEY IF EXISTS `worker_printer_FK`;
ALTER TABLE `vn`.`host` DROP FOREIGN KEY IF EXISTS `configHost_FK`;
ALTER TABLE `vn`.`operator` DROP FOREIGN KEY IF EXISTS `operator_FK_5`;
ALTER TABLE `vn`.`packingSite` DROP FOREIGN KEY IF EXISTS `packingSite_FK_1`;
ALTER TABLE `vn`.`printQueue` DROP FOREIGN KEY IF EXISTS `printQueue_printerFk`;
ALTER TABLE `vn`.`sector` DROP FOREIGN KEY IF EXISTS `sector_FK_1`;
ALTER TABLE `vn`.`worker` DROP FOREIGN KEY IF EXISTS `worker_FK`;
ALTER TABLE dipole.printer DROP FOREIGN KEY IF EXISTS printer_FK;
ALTER TABLE dipole.expedition_PrintOut DROP FOREIGN KEY IF EXISTS expedition_PrintOut_FK;

View File

@ -0,0 +1,28 @@
ALTER TABLE `vn`.`printer` MODIFY COLUMN IF EXISTS `id` int unsigned auto_increment NOT NULL;
ALTER TABLE `vn`.`arcRead` MODIFY COLUMN IF EXISTS `printerFk` int unsigned DEFAULT NULL NULL;
ALTER TABLE `vn`.`arcRead` ADD CONSTRAINT `arcRead_FK` FOREIGN KEY IF NOT EXISTS (printerFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `vn`.`host` MODIFY COLUMN IF EXISTS `printerFk` int unsigned DEFAULT NULL NULL;
ALTER TABLE `vn`.`host` ADD CONSTRAINT `host_FK` FOREIGN KEY IF NOT EXISTS (printerFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `vn`.`operator` MODIFY COLUMN IF EXISTS `labelerFk` int unsigned DEFAULT NULL NULL;
ALTER TABLE `vn`.`operator` ADD CONSTRAINT `operator_FK_4` FOREIGN KEY IF NOT EXISTS (labelerFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `vn`.`packingSite` MODIFY COLUMN IF EXISTS `printerFk` int unsigned DEFAULT NULL NULL;
ALTER TABLE `vn`.`packingSite` ADD CONSTRAINT `packingSite_FK_1` FOREIGN KEY IF NOT EXISTS (printerFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE `vn`.`packingSite` MODIFY COLUMN IF EXISTS `printerRfidFk` int unsigned DEFAULT NULL NULL;
ALTER TABLE `vn`.`packingSite` ADD CONSTRAINT `packingSite_FK_4` FOREIGN KEY IF NOT EXISTS(printerRfidFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `vn`.`printQueue` MODIFY COLUMN IF EXISTS `printerFk` int unsigned DEFAULT NULL NULL;
ALTER TABLE `vn`.`printQueue` ADD CONSTRAINT `printQueue_FK` FOREIGN KEY IF NOT EXISTS (printerFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `vn`.`sector` MODIFY COLUMN IF EXISTS `mainPrinterFk` int unsigned DEFAULT NULL NULL;
ALTER TABLE `vn`.`sector` ADD CONSTRAINT `sector_FK` FOREIGN KEY IF NOT EXISTS (mainPrinterFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `dipole`.`printer` MODIFY COLUMN IF EXISTS `id` int unsigned DEFAULT NULL NULL;
ALTER TABLE `dipole`.`printer` ADD CONSTRAINT `vnPrinter_FK` FOREIGN KEY IF NOT EXISTS (id) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `dipole`.`expedition_PrintOut` MODIFY COLUMN IF EXISTS `printerFk` int unsigned DEFAULT 0 NOT NULL;
ALTER TABLE `dipole`.`expedition_PrintOut` ADD CONSTRAINT `expedition_PrintOut_FK` FOREIGN KEY IF NOT EXISTS (printerFk) REFERENCES printer(id) ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -0,0 +1,17 @@
ALTER TABLE `vn`.`productionConfig` ADD IF NOT EXISTS backupPrinterNotificationDelay int unsigned NULL
COMMENT 'Minimum seconds Interval to Prevent Spam from Same-Type Notifications';
ALTER TABLE vn.sector DROP FOREIGN KEY IF EXISTS sector_FK;
ALTER TABLE `vn`.`sector` CHANGE IF EXISTS `mainPrinterFk` `backupPrinterFk` int unsigned DEFAULT NULL NULL;
ALTER TABLE `util`.`notificationSubscription` DROP FOREIGN KEY IF EXISTS `notificationSubscription_ibfk_1`;
ALTER TABLE `util`.`notificationQueue` DROP FOREIGN KEY IF EXISTS `nnotificationQueue_ibfk_1`;
ALTER TABLE `util`.`notificationAcl` DROP FOREIGN KEY IF EXISTS `notificationAcl_ibfk_1`;
ALTER TABLE `util`.`notification` MODIFY COLUMN IF EXISTS `id` int(11) auto_increment NOT NULL;
ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscription_Fk` FOREIGN KEY IF NOT EXISTS (`notificationFk`) REFERENCES `util`.`notification`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `notificationQueue_Fk` FOREIGN KEY IF NOT EXISTS (`notificationFk`) REFERENCES `util`.`notification`(`name`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_Fk` FOREIGN KEY IF NOT EXISTS (`notificationFk`) REFERENCES `util`.`notification`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -0,0 +1,12 @@
INSERT IGNORE INTO util.notification (name, description)
VALUES ('backup-printer-selected','A backup printer has been selected');
INSERT IGNORE INTO util.notificationSubscription (notificationFk, userFk)
SELECT id, 10435
FROM util.notification
WHERE name = 'backup-printer-selected';
INSERT IGNORE INTO util.notificationAcl (notificationFk, roleFk)
SELECT id, 66
FROM util.notification
WHERE name = 'backup-printer-selected';

View File

@ -0,0 +1 @@
ALTER TABLE vn.supplier CHANGE COLUMN isSerious isReal tinyint(1) unsigned NOT NULL DEFAULT 0;

View File

@ -0,0 +1,9 @@
UPDATE account.user
SET name = LOWER(name),
name = REPLACE(name, ' ', ''),
name = REPLACE(name, '.', ''),
name = REPLACE(name, 'ñ', 'n'),
name = REPLACE(name, '*', ''),
name = REPLACE(name, 'ç', 'z'),
name = REPLACE(name, 'ã', 'a')
WHERE NOT active;

View File

@ -0,0 +1,8 @@
CREATE OR REPLACE TABLE `vn`.`accountReconciliationConfig` (
`id` INT AUTO_INCREMENT,
`currencyFk` TINYINT(3) unsigned,
`warehouseFk` SMALLINT(6) unsigned,
PRIMARY KEY (`id`),
CONSTRAINT `account_fk_currency` FOREIGN KEY (`currencyFk`) REFERENCES `currency` (`id`),
CONSTRAINT `account_fk_warehouse` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

View File

@ -0,0 +1,2 @@
INSERT INTO `vn`.`accountReconciliationConfig`(currencyFk, warehouseFk)
VALUES (1, 1);

View File

@ -0,0 +1,13 @@
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyVolume`()
BEGIN
END;
REVOKE EXECUTE ON PROCEDURE `vn2008`.`agencia_volume` FROM `agency`;
GRANT EXECUTE ON PROCEDURE `vn`.`agencyVolume` TO `agency`;
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`addAccountReconciliation`()
BEGIN
END;
REVOKE EXECUTE ON PROCEDURE `vn2008`.`account_conciliacion_add` FROM `financial`;
GRANT EXECUTE ON PROCEDURE `vn`.`addAccountReconciliation` TO `financial`;

View File

@ -0,0 +1 @@
ALTER TABLE `vn`.`accountReconciliation` MODIFY debitCredit ENUM('debit', 'credit');

View File

@ -0,0 +1,4 @@
ALTER TABLE IF EXISTS `vn`.`greugeConfig`
ADD COLUMN IF NOT EXISTS `daysAgoOffset` int(11) NOT NULL;
UPDATE vn.greugeConfig SET daysAgoOffset=15;

View File

@ -0,0 +1,20 @@
CREATE OR REPLACE TEMPORARY TABLE tmp.claimsWithHasToPickUp
SELECT id
FROM vn.claim
WHERE hasToPickUp;
ALTER TABLE vn.claim CHANGE hasToPickUp pickup ENUM('agency', 'delivery') DEFAULT NULL;
UPDATE vn.claim c
JOIN tmp.claimsWithHasToPickUp tmp ON tmp.id = c.id
SET c.pickup = 'delivery';
-- Solved bug empty value
UPDATE vn.claim
SET pickup = NULL
WHERE pickup = '';
DROP TEMPORARY TABLE tmp.claimsWithHasToPickUp;
INSERT INTO salix.ACL (model,property,accessType,principalId)
VALUES ('Application','getEnumValues','*','employee');

View File

@ -0,0 +1,35 @@
CREATE TABLE IF NOT EXISTS pbx.prefix (
country CHAR(2) NOT NULL COMMENT 'Country code',
prefix varchar(100) NOT NULL COMMENT 'Country prefix',
CONSTRAINT prefix_pk PRIMARY KEY (country)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb3
COLLATE=utf8mb3_unicode_ci;
ALTER TABLE pbx.config
CHANGE countryPrefix defaultPrefix varchar(20)
CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL NULL;
ALTER TABLE pbx.config DROP COLUMN IF EXISTS sundayFestive;
CREATE TABLE IF NOT EXISTS pbx.holiday (
id INT UNSIGNED auto_increment NOT NULL,
country CHAR(2) NOT NULL,
`day` DATE NOT NULL,
CONSTRAINT holiday_pk PRIMARY KEY (id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb3
COLLATE=utf8mb3_unicode_ci;
CREATE UNIQUE INDEX holiday_country_IDX USING BTREE ON pbx.holiday (country,`day`);
ALTER TABLE pbx.schedule
CHANGE timeStart startTime time NOT NULL,
CHANGE timeEnd endTime time NOT NULL,
DROP FOREIGN KEY schedule_ibfk_1,
DROP COLUMN queue,
ADD country CHAR(2) NOT NULL,
CHANGE weekDay weekDays set('mon','tue','wed','thu','fri','sat','sun') NOT NULL
COMMENT '0 = Monday, 6 = Sunday';

View File

@ -0,0 +1,13 @@
INSERT INTO pbx.prefix (country,prefix)
VALUES ('es','0034');
INSERT INTO pbx.prefix (country,prefix)
VALUES ('fr','0033');
INSERT INTO pbx.prefix (country,prefix)
VALUES ('pt','00351');
INSERT INTO pbx.schedule (weekDays,startTime,endTime,country)
VALUES ('mon,tue,wed,thu,fri,sat,sun','00:00','24:00','es');
INSERT INTO pbx.schedule (weekDays,startTime,endTime,country)
VALUES ('mon,tue,wed,thu,fri,sat,sun','00:00','24:00','fr');
INSERT INTO pbx.schedule (weekDays,startTime,endTime,country)
VALUES ('mon,tue,wed,thu,fri,sat,sun','00:00','24:00','pt');

View File

@ -0,0 +1,5 @@
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_getRisk`()
BEGIN
END;
GRANT EXECUTE ON PROCEDURE vn.client_getRisk TO financialBoss;

View File

@ -762,7 +762,6 @@ export default {
claimBasicData: {
claimState: 'vn-claim-basic-data vn-autocomplete[ng-model="$ctrl.claim.claimStateFk"]',
packages: 'vn-input-number[ng-model="$ctrl.claim.packages"]',
hasToPickUpCheckbox: 'vn-claim-basic-data vn-check[ng-model="$ctrl.claim.hasToPickUp"]',
saveButton: `button[type=submit]`
},
claimDetail: {
@ -1259,7 +1258,7 @@ export default {
},
supplierBasicData: {
alias: 'vn-supplier-basic-data vn-textfield[ng-model="$ctrl.supplier.nickname"]',
isSerious: 'vn-supplier-basic-data vn-check[ng-model="$ctrl.supplier.isSerious"]',
isReal: 'vn-supplier-basic-data vn-check[ng-model="$ctrl.supplier.isReal"]',
isActive: 'vn-supplier-basic-data vn-check[ng-model="$ctrl.supplier.isActive"]',
isPayMethodChecked: 'vn-supplier-basic-data vn-check[ng-model="$ctrl.supplier.isPayMethodChecked"]',
notes: 'vn-supplier-basic-data vn-textarea[ng-model="$ctrl.supplier.note"]',

View File

@ -32,7 +32,7 @@ describe('Client create path', () => {
await page.autocompleteSearch(selectors.createClientView.salesPerson, 'salesPerson');
await page.autocompleteSearch(selectors.createClientView.businessType, 'florist');
await page.write(selectors.createClientView.taxNumber, '74451390E');
await page.write(selectors.createClientView.userName, 'CaptainMarvel');
await page.write(selectors.createClientView.userName, 'captainmarvel');
await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es');
await page.waitToClick(selectors.createClientView.createButton);
const message = await page.waitForSnackbar();

View File

@ -29,7 +29,7 @@ describe('Client web access path', () => {
await page.click($.enableWebAccess);
await page.click($.saveButton);
const enableMessage = await page.waitForSnackbar();
await page.overwrite($.userName, 'Legion');
await page.overwrite($.userName, 'legion');
await page.overwrite($.email, 'legion@marvel.com');
await page.click($.saveButton);
const modifyMessage = await page.waitForSnackbar();
@ -47,7 +47,7 @@ describe('Client web access path', () => {
expect(modifyMessage.type).toBe('success');
expect(hasAccess).toBe('unchecked');
expect(userName).toEqual('Legion');
expect(userName).toEqual('legion');
expect(email).toEqual('legion@marvel.com');
// expect(logName).toEqual('Legion');

View File

@ -34,6 +34,6 @@ describe('Client Add credit path', () => {
const result = await page.waitToGetProperty(selectors.clientCredit.firstCreditText, 'innerText');
expect(result).toContain(999);
expect(result).toContain('salesAssistant');
expect(result).toContain('salesassistant');
});
});

View File

@ -61,7 +61,7 @@ describe('Client summary path', () => {
it('should display web access details', async() => {
const result = await page.waitToGetProperty(selectors.clientSummary.userName, 'innerText');
expect(result).toContain('PetterParker');
expect(result).toContain('petterparker');
});
it('should display business data', async() => {

View File

@ -59,7 +59,7 @@ describe('Ticket Create new tracking state path', () => {
const result = await page
.waitToGetProperty(selectors.createStateView.worker, 'value');
expect(result).toEqual('salesPerson');
expect(result).toEqual('salesperson');
});
it(`should succesfully create a valid state`, async() => {

View File

@ -34,15 +34,6 @@ describe('Claim edit basic data path', () => {
await page.waitForState('claim.card.detail');
});
it('should check the "Pick up" checkbox', async() => {
await page.reloadSection('claim.card.basicData');
await page.waitToClick(selectors.claimBasicData.hasToPickUpCheckbox);
await page.waitToClick(selectors.claimBasicData.saveButton);
const message = await page.waitForSnackbar();
expect(message.text).toContain('Data saved!');
});
it('should confirm the claim state was edited', async() => {
await page.reloadSection('claim.card.basicData');
await page.waitForSelector(selectors.claimBasicData.claimState);
@ -51,12 +42,6 @@ describe('Claim edit basic data path', () => {
expect(result).toEqual('Resuelto');
});
it('should confirm the "is paid with mana" and "Pick up" checkbox are checked', async() => {
const hasToPickUpCheckbox = await page.checkboxState(selectors.claimBasicData.hasToPickUpCheckbox);
expect(hasToPickUpCheckbox).toBe('checked');
});
it('should confirm the claim packages was edited', async() => {
const result = await page
.waitToGetProperty(selectors.claimBasicData.packages, 'value');

View File

@ -20,7 +20,7 @@ describe('Supplier basic data path', () => {
it('should edit the basic data', async() => {
await page.clearInput(selectors.supplierBasicData.alias);
await page.write(selectors.supplierBasicData.alias, 'Plants Nick SL');
await page.waitToClick(selectors.supplierBasicData.isSerious);
await page.waitToClick(selectors.supplierBasicData.isReal);
await page.waitToClick(selectors.supplierBasicData.isActive);
await page.waitToClick(selectors.supplierBasicData.isPayMethodChecked);
await page.write(selectors.supplierBasicData.notes, 'Some notes');
@ -41,8 +41,8 @@ describe('Supplier basic data path', () => {
expect(result).toEqual('Plants Nick SL');
});
it('should check the isSerious checkbox is now checked', async() => {
const result = await page.checkboxState(selectors.supplierBasicData.isSerious);
it('should check the isReal checkbox is now checked', async() => {
const result = await page.checkboxState(selectors.supplierBasicData.isReal);
expect(result).toBe('checked');
});

View File

@ -21,7 +21,7 @@ describe('Account create and basic data path', () => {
});
it('should fill the form and then save it by clicking the create button', async() => {
await page.write(selectors.accountIndex.newName, 'Remy');
await page.write(selectors.accountIndex.newName, 'remy');
await page.write(selectors.accountIndex.newNickname, 'Gambit');
await page.write(selectors.accountIndex.newEmail, 'RemyEtienneLeBeau@verdnatura.es');
await page.autocompleteSearch(selectors.accountIndex.newRole, 'Trainee');
@ -39,7 +39,7 @@ describe('Account create and basic data path', () => {
it('should check the name is as expected', async() => {
const result = await page.waitToGetProperty(selectors.accountBasicData.name, 'value');
expect(result).toEqual('Remy');
expect(result).toEqual('remy');
});
it('should check the nickname is as expected', async() => {

View File

@ -86,7 +86,8 @@ export default class Auth {
return this.$http.get('VnUsers/ShareToken', {
headers: {Authorization: json.data.token}
}).then(({data}) => {
this.vnToken.set(json.data.token, data.multimediaToken.id, now, json.data.ttl, remember);
// Usar data.multimediaToken.id cuando el resto de sistemas lo tengan completado
this.vnToken.set(json.data.token, json.data.token, now, json.data.ttl, remember);
this.loadAcls().then(() => {
let continueHash = this.$state.params.continue;
if (continueHash)

View File

@ -0,0 +1,56 @@
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
Self.remoteMethod('getEnumValues', {
description: 'Return enum values of column',
accessType: 'EXECUTE',
accepts: [
{
arg: 'schema',
type: 'string',
description: 'The schema of db',
required: true,
},
{
arg: 'table',
type: 'string',
description: 'The table of schema',
required: true,
},
{
arg: 'column',
type: 'string',
description: 'The column of table',
required: true,
},
],
returns: {
type: 'any',
root: true
},
http: {
path: `/get-enum-values`,
verb: 'GET'
}
});
Self.getEnumValues = async(schema, table, column) => {
const stmt = new ParameterizedSQL(`
SELECT COLUMN_TYPE
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = ?
AND TABLE_NAME = ?
AND COLUMN_NAME = ?
AND DATA_TYPE = 'enum';`,
[schema, table, column]);
const conn = Self.dataSource.connector;
const [result] = await conn.executeStmt(stmt);
if (!result) throw new UserError(`No results found`);
const regex = /'([^']*)'/g;
return result.COLUMN_TYPE.match(regex).map(match => match.slice(1, -1));
};
};

View File

@ -0,0 +1,35 @@
const models = require('vn-loopback/server/server').models;
describe('Application getEnumValues()', () => {
let tx;
beforeEach(async() => {
tx = await models.Application.beginTransaction({});
const options = {transaction: tx};
await models.Application.rawSql(`
CREATE TABLE tableWithEnum (
direction enum('in', 'out', 'middle'),
PRIMARY KEY (direction)
) ENGINE=InnoDB;
`, null, options);
});
it('should return three if is ok', async() => {
try {
const options = {transaction: tx};
const response = await models.Application.getEnumValues(
'vn',
'tableWithEnum',
'direction',
options
);
expect(response.length).toEqual(3);
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
});

View File

@ -5,4 +5,5 @@ module.exports = function(Self) {
require('../methods/application/execute')(Self);
require('../methods/application/executeProc')(Self);
require('../methods/application/executeFunc')(Self);
require('../methods/application/getEnumValues')(Self);
};

View File

@ -68,7 +68,7 @@
"Changed client paymethod": "I have changed the pay method for client [{{clientName}} ({{clientId}})]({{{url}}})",
"Sent units from ticket": "I sent *{{quantity}}* units of [{{concept}} ({{itemId}})]({{{itemUrl}}}) to *\"{{nickname}}\"* coming from ticket id [{{ticketId}}]({{{ticketUrl}}})",
"Change quantity": "{{concept}} change of {{oldQuantity}} to {{newQuantity}}",
"Claim will be picked": "The product from the claim [({{claimId}})]({{{claimUrl}}}) from the client *{{clientName}}* will be picked",
"Claim will be picked": "The product from the claim [({{claimId}})]({{{claimUrl}}}) from the client *{{clientName}}* will be picked, with the pickup type *{{claimPickup}}*",
"Claim state has changed to": "The state of the claim [({{claimId}})]({{{claimUrl}}}) from client *{{clientName}}* has changed to *{{newState}}*",
"Customs agent is required for a non UEE member": "Customs agent is required for a non UEE member",
"Incoterms is required for a non UEE member": "Incoterms is required for a non UEE member",
@ -89,6 +89,8 @@
"landed": "Landed",
"addressFk": "Address",
"companyFk": "Company",
"agency": "Agency",
"delivery": "Delivery",
"You need to fill sage information before you check verified data": "You need to fill sage information before you check verified data",
"The social name cannot be empty": "The social name cannot be empty",
"The nif cannot be empty": "The nif cannot be empty",

View File

@ -135,7 +135,7 @@
"Changed client paymethod": "He cambiado la forma de pago del cliente [{{clientName}} ({{clientId}})]({{{url}}})",
"Sent units from ticket": "Envio *{{quantity}}* unidades de [{{concept}} ({{itemId}})]({{{itemUrl}}}) a *\"{{nickname}}\"* provenientes del ticket id [{{ticketId}}]({{{ticketUrl}}})",
"Change quantity": "{{concept}} cambia de {{oldQuantity}} a {{newQuantity}}",
"Claim will be picked": "Se recogerá el género de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}*",
"Claim will be picked": "Se recogerá el género de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}*, con el tipo de recogida *{{claimPickup}}*",
"Claim state has changed to": "Se ha cambiado el estado de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}* a *{{newState}}*",
"Client checked as validated despite of duplication": "Cliente comprobado a pesar de que existe el cliente id {{clientId}}",
"ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto",
@ -168,6 +168,8 @@
"landed": "F. entrega",
"addressFk": "Consignatario",
"companyFk": "Empresa",
"agency": "Agencia",
"delivery": "Reparto",
"The social name cannot be empty": "La razón social no puede quedar en blanco",
"The nif cannot be empty": "El NIF no puede quedar en blanco",
"You need to fill sage information before you check verified data": "Debes rellenar la información de sage antes de marcar datos comprobados",
@ -349,5 +351,6 @@
"The address of the customer must have information about Incoterms and Customs Agent": "El consignatario del cliente debe tener informado Incoterms y Agente de aduanas",
"The line could not be marked": "La linea no puede ser marcada",
"This password can only be changed by the user themselves": "Esta contraseña solo puede ser modificada por el propio usuario",
"They're not your subordinate": "No es tu subordinado/a."
"They're not your subordinate": "No es tu subordinado/a.",
"No results found": "No se han encontrado resultados"
}

View File

@ -6,7 +6,6 @@ columns:
isChargedToMana: charged to mana
created: created
responsibility: responsibility
hasToPickUp: has to pickUp
ticketFk: ticket
claimStateFk: claim state
workerFk: worker

View File

@ -6,7 +6,6 @@ columns:
isChargedToMana: cargado al maná
created: creado
responsibility: responsabilidad
hasToPickUp: es recogida
ticketFk: ticket
claimStateFk: estado reclamación
workerFk: trabajador

View File

@ -79,7 +79,12 @@ module.exports = Self => {
type: 'number',
description: 'The claimResponsible id',
http: {source: 'query'}
}
},
{
arg: 'myTeam',
type: 'boolean',
description: `Team partners`
},
],
returns: {
type: ['object'],
@ -92,6 +97,7 @@ module.exports = Self => {
});
Self.filter = async(ctx, filter, options) => {
const userId = ctx.req.accessToken.userId;
const models = Self.app.models;
const conn = Self.dataSource.connector;
const args = ctx.args;
@ -121,7 +127,23 @@ module.exports = Self => {
claimIdsByClaimResponsibleFk = claims.map(claim => claim.claimFk);
}
const where = buildFilter(args, (param, value) => {
// Apply filter by team
const teamMembersId = [];
if (args.myTeam != null) {
const worker = await models.Worker.findById(userId, {
include: {
relation: 'collegues'
}
}, myOptions);
const collegues = worker.collegues() || [];
for (let collegue of collegues)
teamMembersId.push(collegue.collegueFk);
if (teamMembersId.length == 0)
teamMembersId.push(userId);
}
const where = buildFilter(ctx.args, (param, value) => {
switch (param) {
case 'search':
return /^\d+$/.test(value)
@ -152,6 +174,11 @@ module.exports = Self => {
to.setHours(23, 59, 59, 999);
return {'cl.created': {between: [value, to]}};
case 'myTeam':
if (value)
return {'cl.workerFk': {inq: teamMembersId}};
else
return {'cl.workerFk': {nin: teamMembersId}};
}
});

View File

@ -1,13 +1,25 @@
const app = require('vn-loopback/server/server');
const models = require('vn-loopback/server/server').models;
describe('claim filter()', () => {
let ctx;
beforeEach(() => {
ctx = {
req: {
accessToken: {userId: 9},
headers: {origin: 'http://localhost'}
}
};
});
it('should return 1 result filtering by id', async() => {
const tx = await app.models.Claim.beginTransaction({});
try {
const options = {transaction: tx};
const result = await app.models.Claim.filter({args: {filter: {}, search: 1}}, null, options);
ctx.args = {search: 1};
const result = await app.models.Claim.filter(ctx, null, options);
expect(result.length).toEqual(1);
expect(result[0].id).toEqual(1);
@ -25,7 +37,8 @@ describe('claim filter()', () => {
try {
const options = {transaction: tx};
const result = await app.models.Claim.filter({args: {filter: {}, search: 'Tony Stark'}}, null, options);
ctx.args = {search: 'Tony Stark'};
const result = await app.models.Claim.filter(ctx, null, options);
expect(result.length).toEqual(1);
expect(result[0].id).toEqual(4);
@ -43,7 +56,8 @@ describe('claim filter()', () => {
try {
const options = {transaction: tx};
const result = await app.models.Claim.filter({args: {filter: {}, workerFk: 18}}, null, options);
ctx.args = {workerFk: 18};
const result = await app.models.Claim.filter(ctx, null, options);
expect(result.length).toEqual(4);
expect(result[0].id).toEqual(1);
@ -64,7 +78,8 @@ describe('claim filter()', () => {
try {
const options = {transaction: tx};
const result = await app.models.Claim.filter({args: {filter: {}, itemFk: 2}}, null, options);
ctx.args = {itemFk: 2};
const result = await app.models.Claim.filter(ctx, null, options);
expect(result.length).toEqual(3);
expect(result[0].id).toEqual(1);
@ -84,7 +99,8 @@ describe('claim filter()', () => {
try {
const options = {transaction: tx};
const result = await app.models.Claim.filter({args: {filter: {}, claimResponsibleFk: 7}}, null, options);
ctx.args = {claimResponsibleFk: 7};
const result = await app.models.Claim.filter(ctx, null, options);
expect(result.length).toEqual(3);
expect(result[0].id).toEqual(2);
@ -97,4 +113,22 @@ describe('claim filter()', () => {
throw e;
}
});
it('should now return claims from the worker team', async() => {
const tx = await models.Claim.beginTransaction({});
try {
const options = {transaction: tx};
ctx.args = {itemFk: null, myTeam: true};
const result = await app.models.Claim.filter(ctx, null, options);
expect(result.length).toEqual(2);
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
});

View File

@ -11,7 +11,7 @@ describe('claim log()', () => {
model: 'Claim',
action: 'update',
changes: [
{property: 'hasToPickUp', before: false, after: true}
{property: 'pickup', before: null, after: 'agency'}
]
};

View File

@ -86,7 +86,7 @@ describe('Update Claim', () => {
args: {
observation: 'valid observation',
claimStateFk: pendingState,
hasToPickUp: false
pickup: null
}
};
ctx.req.__ = i18n.__;
@ -124,7 +124,7 @@ describe('Update Claim', () => {
args: {
observation: 'valid observation',
claimStateFk: canceledState,
hasToPickUp: false
pickup: null
}
};
ctx.req.__ = i18n.__;
@ -163,7 +163,7 @@ describe('Update Claim', () => {
claimStateFk: 3,
workerFk: 5,
observation: 'another valid observation',
hasToPickUp: true
pickup: 'agency'
}
};
ctx.req.__ = i18n.__;

View File

@ -27,8 +27,8 @@ module.exports = Self => {
type: 'string'
},
{
arg: 'hasToPickUp',
type: 'boolean'
arg: 'pickup',
type: 'any'
},
{
arg: 'packages',
@ -72,9 +72,7 @@ module.exports = Self => {
// Get sales person from claim client
const salesPerson = claim.client().salesPersonUser();
let changedHasToPickUp = false;
if (args.hasToPickUp)
changedHasToPickUp = true;
const changedPickup = args.pickup != claim.pickup;
// Validate when claimState has been changed
if (args.claimStateFk) {
@ -82,15 +80,15 @@ module.exports = Self => {
const canEditNewState = await models.ClaimState.isEditable(ctx, args.claimStateFk, myOptions);
const canEditState = await models.ACL.checkAccessAcl(ctx, 'Claim', 'editState', 'WRITE');
if (!canEditOldState || !canEditNewState || changedHasToPickUp && !canEditState)
if (!canEditOldState || !canEditNewState || changedPickup && !canEditState)
throw new UserError(`You don't have enough privileges to change that field`);
}
delete args.ctx;
const updatedClaim = await claim.updateAttributes(args, myOptions);
// When hasToPickUp has been changed
if (salesPerson && changedHasToPickUp && updatedClaim.hasToPickUp)
// When pickup has been changed
if (salesPerson && changedPickup && updatedClaim.pickup)
await notifyPickUp(ctx, salesPerson.id, claim);
// When claimState has been changed
@ -132,7 +130,8 @@ module.exports = Self => {
const message = $t('Claim will be picked', {
claimId: claim.id,
clientName: claim.client().name,
claimUrl: `${url}claim/${claim.id}/summary`
claimUrl: `${url}claim/${claim.id}/summary`,
claimPickup: $t(claim.pickup)
});
await models.Chat.sendCheckingPresence(ctx, workerId, message);
}

View File

@ -31,8 +31,8 @@
"responsibility": {
"type": "number"
},
"hasToPickUp": {
"type": "boolean"
"pickup": {
"type": "string"
},
"ticketFk": {
"type": "number"

View File

@ -85,7 +85,7 @@ describe('claim', () => {
it('should perform a patch query and show a success message', () => {
jest.spyOn(controller.vnApp, 'showSuccess');
const data = {hasToPickUp: true};
const data = {pickup: 'agency'};
$httpBackend.expect('PATCH', `Claims/1/updateClaimAction`, data).respond({});
controller.save(data);
$httpBackend.flush();

View File

@ -49,13 +49,6 @@
label="Packages received"
ng-model="$ctrl.claim.packages">
</vn-input-number>
<vn-check
class="vn-mr-md"
label="Pick up"
ng-model="$ctrl.claim.hasToPickUp"
vn-acl="claimManager"
title="{{'When checked will notify to the salesPerson' | translate}}">
</vn-check>
</vn-horizontal>
</vn-card>
<vn-button-bar>

View File

@ -70,6 +70,13 @@
label="Responsible">
</vn-autocomplete>
</vn-horizontal>
<vn-horizontal>
<vn-check
vn-one
label="My team"
ng-model="filter.myTeam"
triple-state="true">
</vn-horizontal>
<vn-horizontal class="vn-mt-lg">
<vn-submit label="Search"></vn-submit>
</vn-horizontal>

View File

@ -49,13 +49,6 @@
label="Attended by"
value="{{$ctrl.summary.claim.worker.user.nickname}}">
</vn-label-value>
<vn-check
class="vn-mr-md"
label="Pick up"
ng-model="$ctrl.summary.claim.hasToPickUp"
title="{{'When checked will notify to the salesPerson' | translate}}"
disabled="true">
</vn-check>
</vn-auto>
<vn-auto>
<h4 ng-show="$ctrl.isSalesPerson && $ctrl.summary.observations.length">

View File

@ -3,8 +3,8 @@ const LoopBackContext = require('loopback-context');
describe('Client Create', () => {
const newAccount = {
userName: 'Deadpool',
email: 'Deadpool@marvel.com',
userName: 'deadpool',
email: 'deadpool@marvel.com',
fi: '16195279J',
name: 'Wade',
socialName: 'DEADPOOL MARVEL',
@ -31,7 +31,7 @@ describe('Client Create', () => {
});
});
it(`should not find Deadpool as he's not created yet`, async() => {
it(`should not find deadpool as he's not created yet`, async() => {
const tx = await models.Client.beginTransaction({});
try {

View File

@ -31,8 +31,8 @@ describe('Client Model', () => {
await models.Client.notifyAssignment(instance, previousWorkerId, currentWorkerId);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@DavidCharlesHaller', `Client assignment has changed`);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@HankPym', `Client assignment has changed`);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@davidcharleshaller', `Client assignment has changed`);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@hankpym', `Client assignment has changed`);
});
it('should call to the Chat send() method for the previous worker', async() => {
@ -40,7 +40,7 @@ describe('Client Model', () => {
await models.Client.notifyAssignment(instance, null, currentWorkerId);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@HankPym', `Client assignment has changed`);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@hankpym', `Client assignment has changed`);
});
it('should call to the Chat send() method for the current worker', async() => {
@ -48,7 +48,7 @@ describe('Client Model', () => {
await models.Client.notifyAssignment(instance, previousWorkerId, null);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@DavidCharlesHaller', `Client assignment has changed`);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@davidcharleshaller', `Client assignment has changed`);
});
});

View File

@ -30,7 +30,7 @@ describe('ItemShelving upsertItem()', () => {
await tx.rollback();
});
xit('should add two new records', async() => {
it('should add two new records', async () => {
const shelvingFk = 'ZPP';
const items = [1, 1, 1, 2];
@ -40,17 +40,18 @@ describe('ItemShelving upsertItem()', () => {
expect(itemShelvings.length).toEqual(2);
});
xit('should update the visible items', async() => {
it('should update the visible items', async () => {
const shelvingFk = 'GVC';
const items = [2, 2];
const {visible: itemsBefore} = await models.ItemShelving.findOne({
const { visible: visibleItemsBefore } = await models.ItemShelving.findOne({
where: { shelvingFk, itemFk: items[0] }
}, options);
await models.ItemShelving.upsertItem(ctx, shelvingFk, items, warehouseFk, options);
const {visible: itemsAfter} = await models.ItemShelving.findOne({
const { visible: visibleItemsAfter } = await models.ItemShelving.findOne({
where: { shelvingFk, itemFk: items[0] }
}, options);
expect(itemsAfter).toEqual(itemsBefore + 2);
expect(visibleItemsAfter).toEqual(visibleItemsBefore + 2);
});
});

View File

@ -116,7 +116,6 @@ module.exports = Self => {
JOIN province p ON p.id = a.provinceFk
JOIN country co ON co.id = p.countryFk
JOIN agencyMode am ON am.id = t.agencyModeFk
JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
JOIN warehouse w ON w.id = t.warehouseFk
LEFT JOIN (
SELECT td.ticketFk, d.id
@ -128,7 +127,6 @@ module.exports = Self => {
WHERE co.code <> 'ES'
AND am.name <> 'ABONO'
AND w.code = 'ALG'
AND dm.code = 'DELIVERY'
AND t.cmrFk
) sub
`);

View File

@ -48,7 +48,7 @@
"type": "number",
"required": false
},
"mainPrinterFk": {
"backupPrinterFk": {
"type": "number",
"required": false
},

View File

@ -11,7 +11,7 @@ columns:
postcodeFk: postcode
isActive: active
isOfficial: official
isSerious: serious
isReal: real
isTrucker: trucker
note: note
street: street

View File

@ -11,7 +11,7 @@ columns:
postcodeFk: código postal
isActive: activo
isOfficial: oficial
isSerious: serio
isReal: real
isTrucker: camionero
note: nota
street: calle

View File

@ -25,7 +25,7 @@ module.exports = Self => {
'id',
'name',
'nickname',
'isSerious',
'isReal',
'isActive',
'note',
'nif',

View File

@ -48,7 +48,7 @@
"isOfficial": {
"type": "boolean"
},
"isSerious": {
"isReal": {
"type": "boolean"
},
"isTrucker": {

View File

@ -26,7 +26,7 @@
<vn-horizontal>
<vn-check
label="Verified"
ng-model="$ctrl.supplier.isSerious">
ng-model="$ctrl.supplier.isReal">
</vn-check>
<vn-check
label="Active"

View File

@ -32,7 +32,7 @@
<vn-icon
vn-tooltip="Unverified supplier"
icon="icon-supplierfalse"
ng-if="$ctrl.supplier.isSerious == false">
ng-if="$ctrl.supplier.isReal == false">
</vn-icon>
</div>
<div class="quicklinks">

View File

@ -40,7 +40,7 @@ class Controller extends Descriptor {
'payDemFk',
'payDay',
'isActive',
'isSerious',
'isReal',
'isTrucker',
'account'
],

View File

@ -26,7 +26,7 @@ describe('Supplier Component vnSupplierDescriptor', () => {
'payDemFk',
'payDay',
'isActive',
'isSerious',
'isReal',
'isTrucker',
'account'
],

View File

@ -44,7 +44,7 @@
</vn-label-value>
<vn-check
label="Verified"
ng-model="$ctrl.summary.isSerious"
ng-model="$ctrl.summary.isReal"
disabled="true">
</vn-check>
<vn-check

View File

@ -152,7 +152,10 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
VALUES ('invoicingTicketError', ?)
`, [ticket.id + ' - ' + error]);
// Domain not found
if (error.responseCode == 450) return invalidEmail(ticket);
if (error.responseCode == 450) {
await invalidEmail(ticket);
continue;
}
// Save tickets on a list of failed ids
failedtickets.push({

View File

@ -3,60 +3,80 @@ const models = require('vn-loopback/server/server').models;
describe('Operator', () => {
const authorFk = 9;
const sectorId = 1;
const mainPrinter = 1;
const notificationName = 'not-main-printer-configured';
const operator = {
workerFk: 1,
trainFk: 1,
itemPackingTypeFk: 'H',
warehouseFk: 1,
sectorFk: sectorId
};
const labeler = 1;
const notificationName = 'backup-printer-selected';
const sentStatus = 'sent';
async function createOperator(labelerFk, options) {
operator.labelerFk = labelerFk;
await models.Operator.create(operator, options);
return models.NotificationQueue.findOne({
where: {
notificationFk: notificationName
}
}, options);
beforeEach(async() => {
await deleteNotification();
});
afterAll(async() => {
await deleteNotification();
});
async function deleteNotification() {
await models.NotificationQueue.destroyAll({notificationFk: notificationName});
}
it('should create notification when configured a not main printer in the sector', async() => {
const tx = await models.Operator.beginTransaction({});
async function updateOperatorAndFindNotification(labelerFk = labeler) {
await models.Operator.updateAll({id: authorFk}, {workerFk: authorFk, labelerFk: labelerFk, sectorFk: sectorId});
return models.NotificationQueue.findOne({order: 'id DESC'});
}
try {
const options = {transaction: tx, accessToken: {userId: authorFk}};
const notificationQueue = await createOperator(2, options);
it('should create notification when configured a backup printer in the sector', async() => {
const notificationQueue = await updateOperatorAndFindNotification();
const params = JSON.parse(notificationQueue.params);
expect(notificationQueue.notificationFk).toEqual(notificationName);
expect(notificationQueue.authorFk).toEqual(authorFk);
expect(params.labelerId).toEqual(2);
expect(params.labelerId).toEqual(1);
expect(params.sectorId).toEqual(1);
expect(params.workerId).toEqual(9);
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
it('should not create notification when configured the main printer in the sector', async() => {
const tx = await models.Operator.beginTransaction({});
it('should not create notification when configured a non backup printer in the sector', async() => {
const notificationQueue = await updateOperatorAndFindNotification(2);
expect(notificationQueue?.notificationFk).not.toEqual(notificationName);
});
it('should create notification when delay is null', async() => {
const config = await models.ProductionConfig.findOne();
const delay = config.backupPrinterNotificationDelay;
await config.updateAttributes({backupPrinterNotificationDelay: null});
const lastNotification = await updateOperatorAndFindNotification();
await config.updateAttributes({backupPrinterNotificationDelay: delay});
expect(lastNotification.notificationFk).toEqual(notificationName);
});
it('should not sent notification when is already notified by another worker', async() => {
try {
const options = {transaction: tx, accessToken: {userId: authorFk}};
const notificationQueue = await createOperator(mainPrinter, options);
expect(notificationQueue).toEqual(null);
await tx.rollback();
await models.NotificationQueue.create({
authorFk: 2,
notificationFk: notificationName,
params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 2}),
created: '2001-01-01 12:30:00',
status: sentStatus
});
await models.Operator.updateAll({id: 1}, {labelerFk: labeler, sectorFk: sectorId});
} catch (e) {
await tx.rollback();
throw e;
expect(e.message).toEqual('Previous notification sended with the same parameters');
}
});
it('should send a notification when the previous one has distinct params', async() => {
await models.NotificationQueue.create({
authorFk: 2,
notificationFk: notificationName,
params: JSON.stringify({'labelerId': labeler, 'sectorId': 2, 'workerId': 1}),
created: '2001-01-01 12:30:00',
status: sentStatus
});
const lastNotification = await updateOperatorAndFindNotification();
expect(lastNotification.notificationFk).toEqual(notificationName);
});
});

View File

@ -1,4 +1,5 @@
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
const {mergeFilters, mergeWhere} = require('vn-loopback/util/filter');
module.exports = Self => {
Self.remoteMethodCtx('filter', {
@ -33,28 +34,31 @@ module.exports = Self => {
const userId = ctx.req.accessToken.userId;
const models = Self.app.models;
// Get ids alloweds
const account = await models.VnUser.findById(userId);
const stmt = new ParameterizedSQL(
`SELECT d.id dmsFk, d.reference, d.description, d.file, d.created, d.hardCopyNumber, d.hasFile
`SELECT d.id, d.id dmsFk
FROM workerDocument wd
JOIN dms d ON d.id = wd.document
JOIN dmsType dt ON dt.id = d.dmsTypeFk
LEFT JOIN account.roleRole rr ON rr.inheritsFrom = dt.readRoleFk AND rr.role = ?
`, [account.roleFk]
);
const oldWhere = filter.where;
const yourOwnDms = {and: [{isReadableByWorker: true}, {worker: userId}]};
filter.where = {
and: [{
const where = {
or: [yourOwnDms, {
role: {
neq: null
}
}]
}, oldWhere]};
stmt.merge(conn.makeSuffix(filter));
const workerDms = await conn.executeStmt(stmt);
};
stmt.merge(conn.makeSuffix(mergeWhere(filter.where, where)));
// Get workerDms alloweds
const dmsIds = await conn.executeStmt(stmt);
const allowedIds = dmsIds.map(dms => dms.id);
const allowedFilter = mergeFilters(filter, {where: {dmsFk: {inq: allowedIds}, workerFk: id}});
let workerDms = await models.WorkerDms.find(allowedFilter);
// Get docuware info
const docuware = await models.Docuware.findOne({
@ -63,28 +67,43 @@ module.exports = Self => {
});
const docuwareDmsType = docuware.dmsTypeFk;
let workerDocuware = [];
if (!docuwareDmsType || (docuwareDmsType && await models.DmsType.hasReadRole(ctx, docuwareDmsType))) {
if (!filter.skip && (!docuwareDmsType || (docuwareDmsType && await models.DmsType.hasReadRole(ctx, docuwareDmsType)))) {
const worker = await models.Worker.findById(id, {fields: ['fi', 'firstName', 'lastName']});
const docuwareParse = {
'Filename': 'dmsFk',
'Tipo Documento': 'description',
'Stored on': 'created',
'Document ID': 'id'
'Document ID': 'id',
'URL': 'download',
'Stored by': 'name',
'Estado': 'state'
};
workerDocuware =
await models.Docuware.getById('hr', worker.lastName + ' ' + worker.firstName, docuwareParse) ?? [];
const url = (await Self.app.models.Url.getUrl('docuware')) + 'WebClient';
for (document of workerDocuware) {
const docuwareId = document.id;
const defaultData = {
file: 'dw' + document.id + '.png',
id: docuwareId,
workerFk: id,
dmsFk: docuwareId,
dms: {
id: docuwareId,
file: docuwareId + '.pdf',
isDocuware: true,
hardCopyNumber: null,
hasFile: false,
reference: worker.fi,
dmsFk: 'DW' + document.id
dmsFk: docuwareId,
url,
description: document.description + ' - ' + document.state,
download: document.download,
created: document.created,
dmsType: {name: 'Docuware'},
worker: {id: null, user: {name: document.name}},
}
};
document = Object.assign(document, defaultData);
Object.assign(document, defaultData);
}
}
return workerDms.concat(workerDocuware);

View File

@ -6,7 +6,7 @@ describe('Worker activeWithInheritedRole', () => {
allRolesCount = await app.models.VnRole.count();
});
it('should return the workers with an inherited role of salesPerson', async() => {
it('should return the workers with an inherited role of salesperson', async() => {
const filter = {where: {role: 'salesPerson'}};
const result = await app.models.Worker.activeWithInheritedRole(filter);

View File

@ -20,7 +20,7 @@ describe('Worker new', () => {
const employeeId = 1;
const defaultWorker = {
fi: '78457139E',
name: 'DEFAULTERWORKER',
name: 'defaulterworker',
firstName: 'DEFAULT',
lastNames: 'WORKER',
email: 'defaultWorker@mydomain.com',

View File

@ -1,19 +1,41 @@
module.exports = Self => {
Self.observe('after save', async function(ctx) {
Self.observe('after save', async ctx => {
const instance = ctx.data || ctx.instance;
const models = Self.app.models;
const options = ctx.options;
const notificationName = 'backup-printer-selected';
const userId = ctx.options.accessToken?.userId || instance.workerFk;
if (!instance?.sectorFk || !instance?.labelerFk) return;
const sector = await models.Sector.findById(instance.sectorFk, {
fields: ['mainPrinterFk']
fields: ['backupPrinterFk']
}, options);
if (sector.mainPrinterFk && sector.mainPrinterFk != instance.labelerFk) {
const userId = ctx.options.accessToken.userId;
if (sector.backupPrinterFk && sector.backupPrinterFk == instance.labelerFk) {
const {labelerFk, sectorFk} = instance;
const {backupPrinterNotificationDelay} = await models.ProductionConfig.findOne();
if (backupPrinterNotificationDelay) {
const notifications = await models.NotificationQueue.find(
{where: {created: {gte: Date.vnNow() - (backupPrinterNotificationDelay * 1000) + (3600 * 1000)},
notificationFk: notificationName,
status: 'sent'
}
});
const criteria = {labelerId: labelerFk, sectorId: sectorFk};
const filteredNotifications = notifications.filter(notification => {
const paramsObj = JSON.parse(notification.params);
return Object.keys(criteria).every(key => criteria[key] === paramsObj?.[key]);
});
if (filteredNotifications.length >= 1)
throw new Error('Previous notification sended with the same parameters');
}
await models.NotificationQueue.create({
notificationFk: 'not-main-printer-configured',
notificationFk: notificationName,
authorFk: userId,
params: JSON.stringify(
{
@ -22,7 +44,8 @@ module.exports = Self => {
'workerId': userId
}
)
}, options);
});
}
});
};

View File

@ -2,6 +2,7 @@
vn-id="model"
url="WorkerDms/{{$ctrl.$params.id}}/filter"
link="{worker: $ctrl.$params.id}"
filter="$ctrl.filter"
limit="20"
data="$ctrl.workerDms"
order="dmsFk DESC"
@ -28,37 +29,37 @@
</vn-thead>
<vn-tbody>
<vn-tr ng-repeat="document in $ctrl.workerDms">
<vn-td number shrink>{{::document.dmsFk}}</vn-td>
<vn-td number shrink>{{::document.id}}</vn-td>
<vn-td shrink number>
<span class="chip" title="{{::document.hardCopyNumber}}"
<span class="chip" title="{{::document.dms.hardCopyNumber}}"
ng-class="{'message': document.hardCopyNumber}">
{{::document.hardCopyNumber}}
{{::document.dms.hardCopyNumber}}
</span>
</vn-td>
<vn-td expand>
<span title="{{::document.reference}}">
{{::document.reference}}
<span title="{{::document.dms.reference}}">
{{::document.dms.reference}}
</span>
</vn-td>
<vn-td expand>
<span title="{{::document.description}}">
{{::document.description}}
<span title="{{::document.dms.description}}">
{{::document.dms.description}}
</span>
</vn-td>
<vn-td shrink>
<vn-check
ng-model="document.hasFile"
ng-model="document.dms.hasFile"
disabled="true">
</vn-check>
</vn-td>
<vn-td shrink>
<span title="{{'Download file' | translate}}" class="link"
ng-click="$ctrl.downloadFile(document.dmsFk, document.isDocuware)">
{{::document.file}}
ng-click="$ctrl.downloadFile(document.dmsFk, document.dms.isDocuware)">
{{::document.dms.file}}
</span>
</vn-td>
<vn-td shrink-datetime>
{{::document.created | date:'dd/MM/yyyy HH:mm'}}
{{::document.dms.created | date:'dd/MM/yyyy HH:mm'}}
</vn-td>
<vn-td shrink>
<vn-icon-button title="{{'Download file' | translate}}"
@ -66,7 +67,7 @@
ng-click="$ctrl.downloadFile(document.dmsFk, document.isDocuware)">
</vn-icon-button>
</vn-td>
<vn-td expand ng-if="::!document.isDocuware">
<vn-td expand ng-if="::!document.dms.isDocuware">
<vn-icon-button ui-sref="worker.card.dms.edit({dmsId: {{::document.dmsFk}}})"
icon="edit"
title="{{'Edit file' | translate}}">
@ -78,7 +79,7 @@
tabindex="-1">
</vn-icon-button>
</vn-td>
<vn-td expand ng-if="::document.isDocuware">
<vn-td expand ng-if="::document.dms.isDocuware">
<vn-icon-button
icon="open_in_new"
ng-click="$ctrl.openDocuware()"

Some files were not shown because too many files have changed in this diff Show More