Compare commits

..

406 Commits

Author SHA1 Message Date
Javier Segarra 4399217b4b Merge pull request 'InvoiceOut change columns order' (!1415) from minor_requested_changes_invoiceOutList into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1415
2025-04-08 13:29:12 +00:00
Javier Segarra 3edd00d500 Merge pull request 'Add `vitest ui` as devDependency' (!1688) from vitest_ui into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1688
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-08 13:24:42 +00:00
Javier Segarra 6f938021bf Merge branch 'dev' into minor_requested_changes_invoiceOutList
gitea/salix-front/pipeline/pr-dev Build queued... Details
2025-04-08 13:10:43 +00:00
Javier Segarra 7e56cb96ef Merge pull request '#8725 - submit_form_onClick' (!1564) from 8725_submit_form_onClick into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1564
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-08 12:58:50 +00:00
Javier Segarra 87925d3fad Merge branch 'dev' into vitest_ui
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-08 12:57:32 +00:00
Javier Segarra 36ff68900f Merge pull request 'test: #7356 Ticket e2e' (!1531) from 7356_e2e into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1531
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-08 12:31:23 +00:00
Javier Segarra 77e01ed55c Merge branch 'dev' into vitest_ui
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-08 12:14:30 +00:00
Javier Segarra a24bc6cc4b Merge branch 'dev' into 7356_e2e
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-08 12:09:48 +00:00
Alex Moreno 9d2c0bf211 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-08 13:34:01 +02:00
Alex Moreno 123ec41f32 fix(WorkerCalendarFilter): fix style year and contract filter
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-08 13:32:31 +02:00
Javier Segarra d6362d042d Merge branch 'dev' into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-08 11:31:00 +00:00
Javier Segarra 1b695be63f feat: add vitest ui devDependency
gitea/salix-front/pipeline/pr-dev Build queued... Details
2025-04-08 13:30:22 +02:00
Alex Moreno d3b413fc25 Merge branch 'dev' into 7356_e2e
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-08 11:19:33 +00:00
Javier Segarra 1e1096a108 Merge pull request 'fix: FilterPanel when is multiline and VnTable vh on n toolbar' (!1657) from fix_itemFilter_multiLine into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1657
Reviewed-by: Pablo Natek <pablone@verdnatura.es>
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-08 10:17:23 +00:00
Javier Segarra 9d31a75dfe Merge branch 'dev' into fix_itemFilter_multiLine
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-08 10:00:52 +00:00
Javier Segarra af0c30f798 test: refs #8725 add save action to form model popup
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-08 11:57:21 +02:00
Javier Segarra 9cadb4a02b Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8725_submit_form_onClick 2025-04-08 11:12:22 +02:00
Javier Segarra 3c6bed6d7e Merge pull request '#8446 - update_vitest_version to 2.0.0' (!1127) from update_vitest_version into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1127
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-08 08:09:34 +00:00
Javier Segarra af4a398a90 Merge branch 'dev' into fix_itemFilter_multiLine
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-08 07:50:56 +00:00
Javier Segarra d91d5351c3 Merge branch 'dev' into update_vitest_version
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-08 07:48:18 +00:00
Alex Moreno 15cbbab043 fix(WorkerPDA): fix translations
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-08 08:35:27 +02:00
Alex Moreno 2a3e8f293a Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-08 08:28:17 +02:00
Alex Moreno ffd83e7e0f fix(WorkerPDA): use observation field
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-08 08:27:51 +02:00
Alex Moreno 72d9f9345c Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-08 07:24:04 +02:00
Alex Moreno e0ba8ab742 refactor: rollback
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-08 07:22:12 +02:00
Javier Segarra 2cb151e181 fix: update pnpm-lock.yaml
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-07 17:43:06 +02:00
Javier Segarra 5e9fe20f08 Merge branch 'update_vitest_version' of https://gitea.verdnatura.es/verdnatura/salix-front into update_vitest_version
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-04-07 15:35:19 +02:00
Javier Segarra dc93d1d394 Merge branch 'dev' into update_vitest_version 2025-04-07 15:35:14 +02:00
Javier Segarra 1fc9dc1ca6 Merge branch 'dev' into fix_itemFilter_multiLine 2025-04-07 13:27:30 +00:00
Alex Moreno 2d129dde01 fix: enable Jenkins find changes
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-07 14:14:22 +02:00
Alex Moreno d142797b1f fix: update Jenkinsfile to remove unused module retrieval and modify cypressParallel.sh invocation
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-07 14:03:43 +02:00
Alex Moreno 2b5802a7fb fix: update cypressParallel.sh invocation to use an empty string for modules
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-07 14:01:51 +02:00
Alex Moreno 3549f172d6 fix: pass modules as argument to cypressParallel.sh in Jenkinsfile
gitea/salix-front/pipeline/head Build queued... Details
2025-04-07 14:01:37 +02:00
Alex Moreno d6363e4b45 fix: temporal fix
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-07 13:36:43 +02:00
Alex Moreno 22f1373c84 fix: handle empty changes in getChangedModules function
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-07 13:31:52 +02:00
Alex Moreno 488d48e9e9 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-07 13:13:58 +02:00
Alex Moreno 642589d054 Merge pull request 'ci: refs #8698 Jenkins changeset' (!1525) from 8698_jenkins_e2e_onlyChanges into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1525
Reviewed-by: Juan Ferrer <juan@verdnatura.es>
Reviewed-by: Jon Elias <jon@verdnatura.es>
2025-04-07 11:13:38 +00:00
Alex Moreno 3fd3fef647 Merge branch 'master' of https://gitea.verdnatura.es/verdnatura/salix-front into test
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-07 13:12:54 +02:00
Alex Moreno 582c7c8d40 Merge branch 'dev' into 8698_jenkins_e2e_onlyChanges
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-07 10:47:24 +00:00
Javier Segarra d55ec1c738 Merge branch 'dev' into fix_itemFilter_multiLine
gitea/salix-front/pipeline/pr-dev Build queued... Details
2025-04-07 10:28:05 +00:00
Javier Segarra e8a3dc05dd fix: customer insurance grade
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-07 12:25:16 +02:00
Alex Moreno 455fd72db4 fix: refs #8698 update import path resolution to read jsconfig.json using fs
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-07 12:20:40 +02:00
Javier Segarra d4053d74d2 Merge pull request '#8006 - eslint_rules' (!1454) from 8006_eslint_rules into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1454
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-07 10:02:42 +00:00
Alex Moreno e474e21309 Merge branch 'dev' into update_vitest_version
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-07 09:44:24 +00:00
Javier Segarra eb5a0956a7 Merge branch 'dev' into 8006_eslint_rules
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-07 09:41:33 +00:00
Alex Moreno 406b25103d Merge branch 'dev' of https: refs #8698//gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-04-07 11:07:34 +02:00
Alex Moreno 12e4435709 fix: update Cypress parallel test execution to use a single instance
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-07 11:06:23 +02:00
Alex Moreno 830f506f5b fix: adjust Cypress parallel test execution to run with a single instance
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-07 11:06:02 +02:00
Alex Moreno c7f25d6909 feat: refs #8698 enhance module detection in Cypress tests and resolve import paths using jsconfig
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-04-07 10:37:45 +02:00
Alex Moreno c89fd0580f fix: refs #8698 update log message for E2E modules in Jenkinsfile
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-07 09:10:21 +02:00
Alex Moreno 4db9adb20a feat: refs #8698 log modules found during Cypress test setup
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-04-07 09:09:49 +02:00
Alex Moreno f9bf2e7a3e Merge branch 'dev' of https: refs #8698//gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-04-07 09:07:49 +02:00
Javier Segarra 6553a1a7fc Merge branch 'dev' into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-07 05:52:15 +00:00
Alex Moreno a3d828498b Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-04 11:36:25 +02:00
Alex Moreno 4f821c86c1 fix: warnings
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-04 11:35:53 +02:00
Jon Elias 4857962955 Merge pull request 'Warmfix[CardSumary]: Use ellipsis property and fixed summary cards to flex correctly' (!1670) from Fix-SummaryCardsFlex into test
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1670
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-04 09:07:37 +00:00
Jon Elias 624eac7094 Merge branch 'Fix-SummaryCardsFlex' of https://gitea.verdnatura.es/verdnatura/salix-front into Fix-SummaryCardsFlex
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-04 10:45:36 +02:00
Jon Elias f50f747310 fix: skip failing e2e 2025-04-04 10:45:34 +02:00
Jon Elias 5110a46328 Merge branch 'test' into Fix-SummaryCardsFlex
gitea/salix-front/pipeline/pr-test This commit is unstable Details
2025-04-04 07:52:38 +00:00
Javier Segarra bcee01280c Merge branch 'warmfix_vnLinkPhone' into test
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-04 09:51:46 +02:00
Javier Segarra 3c4c27889e fix: correct data-cy for SendEmailNotificationDialogInput 2025-04-04 09:50:37 +02:00
Javier Segarra b7625f06bd Merge branch 'warmfix_ticketList_sortByShipped' into test 2025-04-04 09:50:02 +02:00
Alex Moreno 8f3ec13ccc fix: remove unnecessary width properties from Route tables
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-04 08:58:10 +02:00
Jon Elias 5eee9965bf Merge branch 'Fix-SummaryCardsFlex' of https://gitea.verdnatura.es/verdnatura/salix-front into Fix-SummaryCardsFlex
gitea/salix-front/pipeline/pr-test There was a failure building this commit Details
2025-04-04 08:51:03 +02:00
Jon Elias e5f079121d refactor: undo skip due to its fix in other PR 2025-04-04 08:51:01 +02:00
Jon Elias a5d3babf1f Merge branch 'test' into Fix-SummaryCardsFlex
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-04 06:23:39 +00:00
Alex Moreno dc6487475f Merge branch 'dev' into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-04 06:04:18 +00:00
Jon Elias f32d07ccaa fix: skip test
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-04 07:44:36 +02:00
Jon Elias 1f5e4bd771 perf: use grid template instead of flex in card-group
gitea/salix-front/pipeline/pr-test This commit is unstable Details
2025-04-04 06:58:24 +02:00
Javier Segarra 1a7a8dfc95 fix: add 'hour' translation to English locale for ticket list
gitea/salix-front/pipeline/pr-test This commit is unstable Details
2025-04-03 20:10:05 +02:00
Javier Segarra 21c3384509 fix: use optional chaining for departmentFk in useRole composable
gitea/salix-front/pipeline/pr-test This commit is unstable Details
2025-04-03 20:07:54 +02:00
Javier Segarra 2992ac2d0d fix: rename 'shipped' to 'shippedDate' and 'shippedHour' 2025-04-03 20:06:31 +02:00
Javier Segarra cb1e1aa594 Merge branch 'dev' into update_vitest_version
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-03 09:37:15 +02:00
Javier Segarra 9b337062c8 Merge branch 'test' into warmfix_vnLinkPhone
gitea/salix-front/pipeline/pr-test This commit is unstable Details
2025-04-03 05:38:38 +00:00
Alex Moreno 6ef3df2322 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-03 07:18:44 +02:00
Alex Moreno e9ef1c308e Merge branch 'master' of https://gitea.verdnatura.es/verdnatura/salix-front into test
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-03 07:18:37 +02:00
Javier Segarra c08b3648f2 test: arrayData
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-03 01:36:30 +02:00
Javier Segarra d78460a438 test: add unit tests for useArrayDataStore and mock axios in axios.spec.js 2025-04-03 01:24:00 +02:00
Javier Segarra d406715a70 test: improve test 2025-04-03 00:56:54 +02:00
Javier Segarra fd036138e4 chore: update dependencies and configuration for vue-i18n and eslint 2025-04-03 00:40:52 +02:00
Javier Segarra e5005d08ed Merge branch 'dev' into 8006_eslint_rules
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-02 22:33:45 +00:00
Javier Segarra 8523f85b4e Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into update_vitest_version 2025-04-03 00:32:24 +02:00
Jon Elias 7ef02c8797 refactor: deleted unnecessary code
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 16:18:48 +02:00
Jorge Penadés 20ed8001bf Merge pull request 'test: refs #8441 enable invoice deletion test in invoiceInDescriptor.spec.js' (!1671) from 8441-warmfix-includeTest into test
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1671
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-02 14:10:26 +00:00
Jorge Penadés c700521b37 Merge pull request 'fix: refs #5835 update icon for invoice button in InvoiceInDescriptor' (!1676) from 5835-hotfix-icon into master
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1676
Reviewed-by: Pablo Natek <pablone@verdnatura.es>
2025-04-02 14:06:43 +00:00
Jorge Penadés b2ce75d2f6 fix: refs #5835 update icon for invoice button in InvoiceInDescriptor
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-04-02 15:54:55 +02:00
Jorge Penadés a5b27b3683 Merge branch 'test' into 8441-warmfix-includeTest
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 13:49:36 +00:00
Jorge Penadés daa3289b58 Merge pull request 'refactor: refs #8326 conditionally render vn-card-content based on advancedSummary' (!1668) from 8326-warmfix-preventNull into test
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1668
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-02 13:26:48 +00:00
Javier Segarra 1c96090d02 Merge branch 'dev' into 7356_e2e
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-02 15:25:49 +02:00
Javier Segarra 6df58d021a test: refs #7356 ticketSaleTracking 2025-04-02 15:25:27 +02:00
Jorge Penadés 8c132298bb Merge pull request 'fix: refs #5835 update ticket references to invoices in InvoiceInDescriptor and localization files' (!1674) from 5835-hotfix-changeLocale into master
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1674
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-02 13:11:10 +00:00
Jorge Penadés e444828e4e Merge branch 'test' into 8326-warmfix-preventNull
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 13:01:29 +00:00
Jorge Penadés ce72c78af7 Merge branch 'test' into 8441-warmfix-includeTest
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 13:01:15 +00:00
Alex Moreno a472e35bcf Merge pull request 'fix: refs #8449 reset pagination in VnLog and bind all attributes in AccountDescriptorProxy' (!1673) from 8449-fixes_2 into test
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1673
2025-04-02 13:01:01 +00:00
Jorge Penadés 832646638b fix: refs #5835 update ticket references to invoices in InvoiceInDescriptor and localization files
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-04-02 14:50:17 +02:00
Jorge Penadés cf05dc0d5b Merge branch 'test' into 8441-warmfix-includeTest
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 12:44:13 +00:00
Jorge Penadés 5afc9ce983 Merge branch 'test' into 8326-warmfix-preventNull
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 12:43:56 +00:00
Alex Moreno 00ed955577 fix: refs #8449 reset pagination in VnLog and bind all attributes in AccountDescriptorProxy
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 14:39:23 +02:00
Javier Segarra a780786a2c style: select needs filled
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-02 14:27:07 +02:00
Alex Moreno 00e1e4441c Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-02 14:21:02 +02:00
Alex Moreno 6fd01a4d09 fix: remove duplicate departmentFk entries in CustomerFilter.vue
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-02 14:20:58 +02:00
Alex Moreno a4b710352d Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head Build queued... Details
2025-04-02 14:18:19 +02:00
Alex Moreno 4821390f22 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into test
gitea/salix-front/pipeline/head There was a failure building this commit Details
2025-04-02 14:18:12 +02:00
Pablo Natek 8b24874f72 Merge pull request 'refactor: improve layout and styling in ExtraCommunity.vue' (!1669) from warmFixExtraComunityFieldsDisplay into test
Reviewed-on: #1669
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-02 12:18:08 +00:00
Alex Moreno 425e2adcdb Merge branch 'master' of https://gitea.verdnatura.es/verdnatura/salix-front into test 2025-04-02 14:17:44 +02:00
Javier Segarra 21c9abf273 test: refs #7356 fix test ticketSale
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-02 13:30:50 +02:00
Javier Segarra 20f3525e50 revert: refs #7356 command dataCy proposal 2025-04-02 13:23:00 +02:00
Javier Segarra 97c55aa1ec Merge branch '7356_e2e' of https://gitea.verdnatura.es/verdnatura/salix-front into 7356_e2e 2025-04-02 12:55:13 +02:00
Javier Segarra 600c16e822 Merge branch 'dev' into 7356_e2e 2025-04-02 12:54:51 +02:00
Javier Segarra d7866f9bdb build: refs #8006 disable no-void off
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-04-02 12:54:07 +02:00
Pablo Natek 6debb64b2b test: skip VnShortcuts and WorkerList test suites
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 12:52:51 +02:00
Javier Segarra 4bdd8a6494 build: refs #8006 disable no-void off 2025-04-02 12:49:49 +02:00
Javier Segarra 9989e752bc build: refs #8006 disable no-void off 2025-04-02 12:47:51 +02:00
Javier Segarra d3848a2343 build: refs #8006 disable no-void off 2025-04-02 12:46:09 +02:00
Javier Segarra 7deb9b1f16 build: refs #8006 disable no-void off 2025-04-02 12:45:27 +02:00
Javier Segarra e4196e7176 build: refs #8006 disable no-void off 2025-04-02 12:45:08 +02:00
Javier Segarra 6aceda51f5 build: refs #8006 disable no-void off 2025-04-02 12:42:39 +02:00
Javier Segarra 7a7463ebf1 build: refs #8006 disable no-void off 2025-04-02 12:42:03 +02:00
Jon Elias b5fa2bb18e fix: fixed cardSummary to use ellipsis and fixed summary cards to flex correctly
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 12:38:30 +02:00
Jorge Penadés 1e1715df1a test: refs #8441 enable invoice deletion test in invoiceInDescriptor.spec.js
gitea/salix-front/pipeline/pr-test This commit is unstable Details
2025-04-02 12:37:16 +02:00
Javier Segarra 736471bcbe build: refs #8006 disable no-void off
gitea/salix-front/pipeline/pr-dev Build queued... Details
2025-04-02 12:36:34 +02:00
Alex Moreno 861bbb1574 Merge pull request 'chore: update Cypress parallel test execution to use 2 instances' (!1648) from enable-parallel-x2 into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1648
Reviewed-by: Pablo Natek <pablone@verdnatura.es>
2025-04-02 10:36:02 +00:00
Javier Segarra 736f3e1c00 build: refs #8006 disable prefer-destructuring off
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-02 12:35:00 +02:00
Alex Moreno 0af42130c1 Merge branch 'dev' into enable-parallel-x2
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-02 10:07:19 +00:00
Pablo Natek 74033a7bdf refactor: improve layout and styling in ExtraCommunity.vue
gitea/salix-front/pipeline/pr-test This commit is unstable Details
2025-04-02 11:51:03 +02:00
Javier Segarra 87e56d9ff1 fix: customer missing i18n
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-02 11:39:02 +02:00
Jorge Penadés 2e6963d505 refactor: refs #8326 conditionally render vn-card-content based on advancedSummary
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 11:38:44 +02:00
Javier Segarra e435674eda style: minor changes
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-04-02 11:34:19 +02:00
Javier Segarra 4b6696fdc9 style: add ellipsis support to CardSummary and related components
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-02 11:27:23 +02:00
Javier Segarra e150ffd9fc style: add ellipsis class to CardSummary
gitea/salix-front/pipeline/pr-test This commit is unstable Details
2025-04-02 11:22:24 +02:00
Javier Segarra 8bc40c74f2 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into warmfix_vnLinkPhone 2025-04-02 11:21:47 +02:00
Javier Segarra 61ec951011 Merge pull request 'fix_vnLinkPhone' (!1659) from fix_vnLinkPhone into dev
Reviewed-on: #1659
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-02 11:15:54 +02:00
Javier Segarra a1490a798b fix: remove calculateTableHeight
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-02 10:32:42 +02:00
Javier Segarra f384dd6f04 Merge branch 'dev' into fix_itemFilter_multiLine
gitea/salix-front/pipeline/pr-dev Build queued... Details
2025-04-02 10:28:40 +02:00
Javier Segarra 4caf496bd6 perf: use composable 2025-04-02 10:28:30 +02:00
Javier Segarra 6bf6ae0288 perf: rename filter
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-02 10:15:02 +02:00
Javier Segarra f13b168364 style: reduce height row 2025-04-02 10:13:24 +02:00
Javier Segarra c099b41e74 perf: move calc heightTable to filter 2025-04-02 10:13:12 +02:00
Javier Segarra 22b57f850c Merge pull request 'fix_vnLinkPhone' (!1659) from fix_vnLinkPhone into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1659
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-02 07:53:14 +00:00
Javier Segarra 046b6f8f28 Merge pull request 'fix: fixed CustomerTicket table order' (!1661) from hotfix-CustomerTicketOrder into master
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1661
Reviewed-by: Javier Segarra <jsegarra@verdnatura.es>
2025-04-02 05:47:20 +00:00
Javier Segarra d40bf0f2ca Merge branch 'dev' into 7356_e2e 2025-04-01 19:38:39 +02:00
Javier Segarra 34343188d2 Merge branch 'dev' into 7356_e2e
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-01 16:17:45 +00:00
Javier Segarra a43ade9852 Merge branch 'master' into hotfix-CustomerTicketOrder
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-04-01 13:33:57 +00:00
Alex Moreno 9be4cdccc0 Merge pull request 'refactor: remove keepData property from components and update related logic' (!1664) from warmFix_remove_keepData into test
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1664
2025-04-01 13:22:09 +00:00
Javier Segarra f02fa732ee feat: remove unused vnLinkPhone
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-01 15:10:49 +02:00
Alex Moreno 0a0e4dfca7 Merge branch 'test' into warmFix_remove_keepData
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-01 12:59:46 +00:00
Javier Segarra 8849b9ed97 Merge branch 'dev' into fix_vnLinkPhone
gitea/salix-front/pipeline/pr-dev Build queued... Details
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-01 14:52:22 +02:00
Javier Segarra 40cfe2a5cc style: add ellipsis class to CardSummary 2025-04-01 14:52:05 +02:00
Javier Segarra 02a78c662b perf: handle VnLinkMail and VnEmail 2025-04-01 14:51:49 +02:00
Javier Segarra 588876952a fix: customerSummary 2025-04-01 14:51:24 +02:00
Alex Moreno 3c4cbf82d2 Merge branch 'dev' into enable-parallel-x2
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-01 12:28:20 +00:00
Alex Moreno c15e4dcf32 Merge pull request 'fix: simplify data fetching logic in VnCard.vue' (!1656) from fix_vnCard_url into test
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1656
Reviewed-by: Jorge Penadés <jorgep@verdnatura.es>
2025-04-01 11:27:37 +00:00
Jon Elias da21c0aad6 Merge pull request '#7995: Added hasAcl to check only one acl' (!1654) from 7995-CreateHasAcl into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1654
Reviewed-by: Jorge Penadés <jorgep@verdnatura.es>
2025-04-01 11:24:34 +00:00
Alex Moreno 0863df25fe Merge branch 'dev' into enable-parallel-x2
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-01 11:07:05 +00:00
Alex Moreno c09254d204 Merge branch 'test' into fix_vnCard_url
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-01 11:04:15 +00:00
Alex Moreno 06e5188146 refactor: remove keepData property from components and update related logic
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-01 13:02:49 +02:00
Jon Elias 26861e92b6 Merge branch 'dev' into 7995-CreateHasAcl
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-01 11:01:11 +00:00
Alex Moreno fb3c015f89 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-01 12:39:31 +02:00
Alex Moreno 590afaba93 fix: update condition for rendering QChip in VnOrder component
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-01 12:39:26 +02:00
Jon Elias 3ddc6dc310 Merge branch 'dev' into 7995-CreateHasAcl
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-01 10:13:47 +00:00
Alex Moreno 79fbe2cc72 Merge branch 'dev' into enable-parallel-x2
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-01 09:57:35 +00:00
Alex Moreno e6e4b49d44 Merge branch 'test' into fix_vnCard_url
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-04-01 09:57:20 +00:00
Alex Moreno c9416b5286 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-01 11:56:09 +02:00
Alex Moreno da148c5435 test: skip invoice deletion test and add spinner waits in VnShortcuts
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-01 11:56:05 +02:00
Jon Elias 27ec560fc5 Merge branch 'dev' into 7995-CreateHasAcl
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-01 09:31:33 +00:00
Javier Segarra 49fafa2b34 Merge pull request 'hotfix_ticketSale_handle_notifications' (!1660) from hotfix_ticketSale_handle_notifications into master
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1660
Reviewed-by: Jon Elias <jon@verdnatura.es>
2025-04-01 09:20:32 +00:00
Alex Moreno 246e4429bd refactor: update getArrayData function to accept entityId for improved data fetching
gitea/salix-front/pipeline/pr-test This commit is unstable Details
2025-04-01 11:04:36 +02:00
Javier Segarra 98a4ac450d Merge branch 'master' into hotfix_ticketSale_handle_notifications
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-04-01 08:55:26 +00:00
PAU ROVIRA ROSALENY 35886999e4 fix: rollback
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-04-01 07:54:41 +00:00
PAU ROVIRA ROSALENY 79fdaffbc8 fix: fixed CustomerTicket table order
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-04-01 07:42:30 +00:00
Jon Elias 8c9c156817 Merge branch '7995-CreateHasAcl' of https://gitea.verdnatura.es/verdnatura/salix-front into 7995-CreateHasAcl
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-01 09:34:39 +02:00
Jon Elias b00d89a4be perf: refs #7995 has acl function 2025-04-01 09:34:38 +02:00
Jorge Penadés e679282e57 Merge branch '7995-CreateHasAcl' of https://gitea.verdnatura.es/verdnatura/salix-front into 7995-CreateHasAcl
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-01 09:22:14 +02:00
Alex Moreno 044c607405 chore: update version to 25.16.0 in package.json
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-01 08:32:58 +02:00
Jon Elias 9f05984e80 Merge pull request 'Hotfix[CustomerAddress]: Fixed buttons disabled when there are no changes' (!1641) from Hotfix-CustomerAddress into master
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1641
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-01 06:08:11 +00:00
Alex Moreno c4f895e060 Merge branch 'dev' into enable-parallel-x2
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-01 05:39:06 +00:00
Alex Moreno 8e66be1874 Merge branch 'dev' into fix_vnCard_url
gitea/salix-front/pipeline/pr-test This commit is unstable Details
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-04-01 05:38:57 +00:00
Alex Moreno 40d59846fa Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into dev
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-01 07:28:11 +02:00
Alex Moreno 68a86e9fcd Merge branch 'master' of https://gitea.verdnatura.es/verdnatura/salix-front into test
gitea/salix-front/pipeline/head This commit looks good Details
2025-04-01 07:25:42 +02:00
Alex Moreno 7c5ce312cc Merge branch 'master' into Hotfix-CustomerAddress
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-04-01 05:20:59 +00:00
Jose Antonio Tubau 1c3eee9695 Merge pull request 'test: refs #8717 add integration test for agencyModes' (!1545) from 8717-reviewAndFixAgencySection into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1545
Reviewed-by: Javier Segarra <jsegarra@verdnatura.es>
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-04-01 05:19:05 +00:00
Jose Antonio Tubau e9ebb3ad8a Merge branch 'dev' into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-01 04:44:23 +00:00
Javier Segarra 7dd28393dd perf: refs #8006 rules
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-04-01 00:47:02 +02:00
Javier Segarra 3c68220903 perf: refs #8006 handle rules
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-04-01 00:32:32 +02:00
Javier Segarra d81a14737c Merge pull request 'fix: remove reserved ticket functionality from TicketProblems and TicketSaleMoreActions components' (!1600) from hotfix_remove_reserved into master
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1600
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
Reviewed-by: Jon Elias <jon@verdnatura.es>
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-03-31 21:50:48 +00:00
Javier Segarra 1d5509313a test: refs #8006 use write variable
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-31 23:47:18 +02:00
Javier Segarra a1ca92a135 Merge branch 'dev' into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-31 21:39:09 +00:00
Javier Segarra 61cdf2c3c7 Merge branch 'master' into hotfix_remove_reserved
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-31 21:38:47 +00:00
Javier Segarra d71029c7e9 feat: dashIfEmpty
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
gitea/salix-front/pipeline/pr-test This commit looks good Details
2025-03-31 15:15:37 +02:00
Javier Segarra 19121fbeb9 fix: roadmap 2025-03-31 15:15:29 +02:00
Javier Segarra dd739b1165 fix: customer vnLinkPhone 2025-03-31 15:15:17 +02:00
Javier Segarra 0208debdbe feat: worker vnLinkPhone 2025-03-31 15:15:07 +02:00
Javier Segarra f392502673 fix: workerSummary 2025-03-31 15:02:37 +02:00
Javier Segarra a81f8fcdaf feat: add noOne
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-31 14:43:15 +02:00
Javier Segarra 5ade9fd133 fix: add trycatch to handle notifications 2025-03-31 14:43:00 +02:00
Javier Segarra f2a20ce4bf test: refs #8006 config 2025-03-31 13:52:30 +02:00
Alex Moreno 95950b7485 refactor(VnCard): use prop.url when init
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-31 13:27:28 +02:00
Javier Segarra 9ef29e61bd Merge branch 'dev' into 8006_eslint_rules 2025-03-31 13:20:57 +02:00
Javier Segarra 426438051c test: refs #7356 update command
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-31 13:20:41 +02:00
Javier Segarra 31ffdd4b61 Merge branch 'dev' into 7356_e2e
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-31 13:20:02 +02:00
Alex Moreno a937b2d3ac Merge pull request '#8449 - vnLogFilter' (!1640) from 8449-vnLogFilter into dev
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1640
Reviewed-by: Jorge Penadés <jorgep@verdnatura.es>
2025-03-31 11:13:16 +00:00
Pablo Natek 767a6302e1 Merge pull request 'refactor: update TravelSummary and TravelList components for improved data fetching and summary view' (!1658) from hotFixTravelSummaryDialog into master
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1658
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-03-31 10:56:40 +00:00
Alex Moreno 519ae66226 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into fix_vnCard_url 2025-03-31 12:39:05 +02:00
Javier Segarra a84c2a78c8 Merge branch 'dev' into 7356_e2e 2025-03-31 12:38:57 +02:00
Javier Segarra 50a8b97be5 Merge branch 'dev' into fix_itemFilter_multiLine
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-31 12:36:17 +02:00
Javier Segarra 04dcd1136a fix: remove prop printing 2025-03-31 12:35:47 +02:00
Pablo Natek c3d51259c4 Merge branch 'master' into hotFixTravelSummaryDialog
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-31 10:31:24 +00:00
Pablo Natek ba2084e906 refactor: update TravelSummary and TravelList components for improved data fetching and summary view 2025-03-31 12:30:16 +02:00
Javier Segarra 8c9a863d71 style: handle height based on number of toolbars
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-31 12:23:45 +02:00
Jose Antonio Tubau 1f41e3c8d1 Merge branch 'dev' into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-31 10:17:23 +00:00
Javier Segarra 96bcc04d78 style: fix vnselect style with full-width 2025-03-31 11:59:08 +02:00
Alex Moreno ae5465687e Merge branch 'dev' into enable-parallel-x2
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-31 09:40:58 +00:00
Jon Elias 801e9687f7 Merge branch 'dev' into 7995-CreateHasAcl
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-31 09:32:47 +00:00
Alex Moreno cad78aedd0 Merge branch 'dev' into enable-parallel-x2
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-31 08:11:32 +00:00
Javier Segarra ddfed3a59d Merge branch 'master' into hotfix_remove_reserved
gitea/salix-front/pipeline/pr-master This commit is unstable Details
2025-03-31 07:51:58 +00:00
Jon Elias f8cc7b95ab refactor: refs #7995 modified hasAcl function
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-31 09:51:40 +02:00
Alex Moreno 36f142800f refactor: simplify data fetching logic in VnCard.vue
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-31 09:51:36 +02:00
Alex Moreno 16cb224926 Merge branch 'dev' into enable-parallel-x2
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-31 06:54:24 +00:00
Pablo Natek 668745981f Merge pull request 'fix: update filter in TravelCard to include route parameter' (!1651) from hotFix_travelCard_addWhere into master
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1651
Reviewed-by: Pablo Natek <pablone@verdnatura.es>
2025-03-31 06:36:19 +00:00
Javier Segarra d60d7da33c fix: improve monitorClient.department
gitea/salix-front/pipeline/head This commit looks good Details
2025-03-28 14:31:11 +01:00
Alex Moreno ea59cf8b0d Merge branch 'dev' into enable-parallel-x2
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-28 13:17:47 +00:00
Alex Moreno 17821917ea Merge branch 'master' into hotFix_travelCard_addWhere
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-28 13:17:34 +00:00
Jorge Penadés 6adf7a91cf Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 7995-CreateHasAcl 2025-03-28 14:06:20 +01:00
Jorge Penadés 74a7b39108 Merge pull request 'refactor: refs #8718 simplify VnAccountNumber component and remove obsolete tests' (!1645) from 8718-hotfix-vnAccount into master
gitea/salix-front/pipeline/head This commit looks good Details
Reviewed-on: #1645
Reviewed-by: Javier Segarra <jsegarra@verdnatura.es>
2025-03-28 13:04:29 +00:00
Javier Segarra fe2024c26a Merge branch 'master' into 8718-hotfix-vnAccount
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-28 12:28:15 +00:00
Jose Antonio Tubau 033fe3375f Merge branch '8717-reviewAndFixAgencySection' of https://gitea.verdnatura.es/verdnatura/salix-front into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-28 13:20:04 +01:00
Jose Antonio Tubau 4fbcb82234 fix: refs #8717 update AgencyCard to include filter by agency ID and correct locale key casing 2025-03-28 13:20:02 +01:00
Javier Segarra cce3a0cef8 Merge branch 'test' into warmfix_monitorClients
gitea/salix-front/pipeline/pr-test This commit is unstable Details
gitea/salix-front/pipeline/head This commit looks good Details
2025-03-28 12:03:29 +01:00
Javier Segarra 50fb8a31a6 test: fix test 2025-03-28 12:03:15 +01:00
Pablo Natek 1a1a859edc Merge branch 'master' into hotFix_travelCard_addWhere
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-28 09:58:45 +00:00
Javier Segarra a49c8891a7 fix: params.departmentFk i18n and ticketFilter.groupedStates 2025-03-28 10:22:08 +01:00
Jon Elias c03a56f69f feat: refs #7995 added hasAcl to check only one acl 2025-03-28 09:28:24 +01:00
Javier Segarra 687bd54e64 refactor: refs #8006 update ESLint rules and disable unused rules 2025-03-28 02:27:46 +01:00
Javier Segarra 0b614f15d8 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8006_eslint_rules 2025-03-28 02:21:32 +01:00
Javier Segarra 2a3e072b1b feat: add departmentFk to user data and filter clients by department
gitea/salix-front/pipeline/head There was a failure building this commit Details
2025-03-28 01:25:38 +01:00
Javier Segarra 4ae9b69e11 test: refs #7356 clean commands 2025-03-28 00:38:47 +01:00
Javier Segarra bdfc1fa309 test: refs #7356 clean commands 2025-03-28 00:25:27 +01:00
Javier Segarra 9492c71128 fix: refs #7356 remove bad code 2025-03-27 23:29:11 +01:00
Javier Segarra 39fcfb83a6 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 7356_e2e 2025-03-27 21:41:59 +01:00
Javier Segarra dcf0b906f4 Merge branch 'master' into hotfix_remove_reserved
gitea/salix-front/pipeline/head This commit is unstable Details
2025-03-27 20:22:54 +00:00
Javier Segarra cb4c740319 Merge pull request 'hotfix_ticketSale_hasChanges' (!1650) from hotfix_ticketSale_hasChanges into master
Reviewed-on: #1650
2025-03-27 20:21:25 +00:00
Javier Segarra 7bc793cfb7 Merge branch 'dev' into 8717-reviewAndFixAgencySection 2025-03-27 20:15:57 +00:00
Javier Segarra 848341f9d9 Merge branch 'dev' into 8725_submit_form_onClick 2025-03-27 19:44:05 +00:00
Javier Segarra 71755025a6 Merge branch 'master' into hotfix_remove_reserved 2025-03-27 19:42:57 +00:00
Jose Antonio Tubau 0aa4c1c527 test: refs #8717 skip RouteAutonomous test suite 2025-03-27 16:12:03 +01:00
Jose Antonio Tubau 34c18d2baa test: refs #8717 update invoice creation test to ensure save button visibility
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-27 15:31:55 +01:00
Jon Elias c9e7411c90 Merge branch 'master' into hotfix_ticketSale_hasChanges
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-27 14:04:07 +00:00
Jon Elias 3fc56700e4 Merge branch 'Hotfix-CustomerAddress' of https://gitea.verdnatura.es/verdnatura/salix-front into Hotfix-CustomerAddress
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-27 15:03:12 +01:00
Jon Elias 60899ef2d2 perf: clean payload 2025-03-27 15:03:11 +01:00
Alex Moreno c4ab00ffd2 fix: update filter in TravelCard to include route parameter
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-27 14:56:22 +01:00
Jon Elias dcd5d357ae Merge branch 'master' into Hotfix-CustomerAddress
gitea/salix-front/pipeline/pr-master This commit is unstable Details
2025-03-27 12:37:30 +00:00
Alex Moreno 985e8663a3 Merge branch 'dev' into enable-parallel-x2
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-27 12:27:04 +00:00
Alex Moreno ea314073d2 chore: update Cypress parallel test execution to use 2 instances
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-03-27 13:26:42 +01:00
Javier Segarra 6e84341aea perf: add await
gitea/salix-front/pipeline/pr-master This commit is unstable Details
2025-03-27 13:06:29 +01:00
Javier Segarra a91a0146fe fix: hasChanges 2025-03-27 13:03:21 +01:00
Alex Moreno 71c6741cf2 chore: update Cypress parallel test execution to use 6 instances
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-03-27 12:28:11 +01:00
Alex Moreno 696dbd4149 chore: update Cypress parallel test execution to use 4 instances
gitea/salix-front/pipeline/pr-dev Build queued... Details
2025-03-27 12:27:47 +01:00
Alex Moreno d94dafd667 chore: update Cypress parallel test execution to use 3 instances
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-27 11:43:00 +01:00
Alex Moreno 446b679bca chore: update Cypress parallel test execution to use 2 instances
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-27 10:23:55 +01:00
Javier Segarra 67e0791f34 fix: update order list tests to remove only and skip modifiers
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-27 09:03:40 +01:00
Javier Segarra a624d65178 Merge branch 'dev' into 7356_e2e
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-26 21:28:04 +01:00
Javier Segarra 59c08be804 test: refs #7356 add waitRequest 2025-03-26 21:27:48 +01:00
Javier Segarra 229737c75c Merge branch 'master' of https://gitea.verdnatura.es/verdnatura/salix-front into hotfix_remove_reserved
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-26 20:29:08 +01:00
Jorge Penadés b464344cd0 Merge branch 'master' of https://gitea.verdnatura.es/verdnatura/salix-front into 8718-hotfix-vnAccount
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-26 16:02:08 +01:00
Jorge Penadés dd4e872fcc refactor: refs #8718 simplify VnAccountNumber component and remove obsolete tests
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-26 16:00:50 +01:00
Jose Antonio Tubau 09bbb89376 Merge branch '8717-reviewAndFixAgencySection' of https://gitea.verdnatura.es/verdnatura/salix-front into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-26 15:48:20 +01:00
Jose Antonio Tubau 8e35b49927 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8717-reviewAndFixAgencySection 2025-03-26 15:48:10 +01:00
Jon Elias e353f7916a perf: clean payload
gitea/salix-front/pipeline/pr-master This commit looks good Details
2025-03-26 14:15:01 +01:00
Jon Elias a3b1095952 refactor: clean payload
gitea/salix-front/pipeline/pr-master This commit is unstable Details
2025-03-26 13:51:03 +01:00
Jon Elias ae9cc49add refactor: manage every nullable option
gitea/salix-front/pipeline/pr-master This commit is unstable Details
2025-03-26 12:32:22 +01:00
Jon Elias 3783cdeed4 fix: fixed buttons disabled when there are no changes
gitea/salix-front/pipeline/pr-master This commit is unstable Details
2025-03-26 12:03:46 +01:00
Jose Antonio Tubau 1e89bdfe95 Merge branch 'dev' into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-26 08:38:49 +00:00
Javier Segarra 4b1a648509 fix: refs #8006 defaults 2025-03-26 09:22:25 +01:00
Jose Antonio Tubau c5a05917c0 fix: refs #8717 enable RouteAutonomous tests and adjust notification check in RouteExtendedList
gitea/salix-front/pipeline/pr-dev Build queued... Details
2025-03-26 08:50:25 +01:00
Jose Antonio Tubau cb8362c0fa Merge branch '8717-reviewAndFixAgencySection' of https://gitea.verdnatura.es/verdnatura/salix-front into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-26 08:37:03 +01:00
Jose Antonio Tubau 4d0ababbde Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8717-reviewAndFixAgencySection 2025-03-26 08:32:24 +01:00
Javier Segarra 718042445f Merge branch 'dev' into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 22:57:28 +00:00
Javier Segarra 943e0abb2a fix: refs #8006 update ESLint configuration and correct Vue import in Vitest config
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-25 22:31:40 +01:00
Javier Segarra e7a501f528 test: refs #7356 remove child class
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 22:27:45 +01:00
Javier Segarra 6e7e28226a feat: refs #8006 remove eslint.config
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-25 22:20:27 +01:00
Javier Segarra 1a284acdc5 feat: refs #8006 41 problems 2025-03-25 22:19:09 +01:00
Javier Segarra eb81b9b6ee feat: refs #8006 restart 2025-03-25 21:53:06 +01:00
Javier Segarra 240d671701 revert: refs #8006 clean branch 2025-03-25 21:50:38 +01:00
Javier Segarra f9f4b16d71 Merge branch 'dev' into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 20:28:00 +00:00
Javier Segarra 3c16d516dc Merge branch 'dev' into minor_requested_changes_invoiceOutList
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 20:27:48 +00:00
Javier Segarra dc35377f13 Merge branch 'dev' into 8006_eslint_rules 2025-03-25 19:59:48 +01:00
Javier Segarra 5a642f4c3a fix: refs #7356 update reference value in routeAutonomous test
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 19:46:56 +01:00
Javier Segarra ec6f6c81c0 Merge branch 'dev' into 7356_e2e
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 19:27:19 +01:00
Jose Antonio Tubau 5dd3b85012 Merge branch 'dev' into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 14:56:04 +00:00
Jose Antonio Tubau 9a2c7c8012 fix: refs #8717 streamline field filling logic in tests
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-25 14:02:13 +01:00
Jose Antonio Tubau 6766a6136a Merge branch 'dev' into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 12:17:44 +00:00
Javier Segarra b22807f884 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 7356_e2e
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 09:39:48 +01:00
Javier Segarra fbe3eae670 test: refs #7356 fix ticket*.spec.js 2025-03-25 09:39:30 +01:00
Javier Segarra 30eecdee2f Merge branch 'dev' into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 08:18:07 +00:00
Jose Antonio Tubau 090c77dd91 Merge branch 'dev' into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-25 07:13:20 +00:00
Javier Segarra 1be8e65fa1 revert: refs #7356 update default mapper logic to handle null values and refactor onBeforeSave function
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-24 15:02:18 +01:00
Jose Antonio Tubau 486f3e265f Merge branch 'dev' into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-24 13:56:30 +00:00
Javier Segarra 5ded8686e6 Merge branch 'dev' into 7356_e2e 2025-03-24 14:42:31 +01:00
Javier Segarra 2190a0c17d test: refs #7356 removing unused mapper functions and updating default mapper logic 2025-03-24 14:41:44 +01:00
Jose Antonio Tubau e0fbc7cfa7 Merge branch 'dev' into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-24 13:40:59 +00:00
Javier Segarra 1e049847a7 Merge branch 'dev' into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-24 12:32:34 +00:00
Javier Segarra 73740822a3 test: refs #7356 update ticket tracking components and remove unused TicketCreateTracking.vue 2025-03-24 13:18:41 +01:00
Javier Segarra 69629147ad Merge branch 'dev' into 7356_e2e 2025-03-24 12:35:16 +01:00
Jose Antonio Tubau feabf9c7be refactor: refs #8717 use markRaw for cardDescriptor in VnCard component
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-24 11:19:26 +01:00
Jon Elias be966abf51 Merge branch 'dev' into minor_requested_changes_invoiceOutList
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-24 08:56:37 +00:00
Jose Antonio Tubau fb00824ee3 refactor: refs #8717 change toModule prop type from String to Object
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-24 09:55:03 +01:00
Javier Segarra 17b784e4d1 test: rename account descriptor test and enable claim notes test
gitea/salix-front/pipeline/pr-master This commit is unstable Details
2025-03-24 09:46:10 +01:00
Jose Antonio Tubau 1a46576572 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-24 09:34:52 +01:00
Jose Antonio Tubau e28f30d7e9 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-24 09:22:14 +01:00
Javier Segarra 26f2044097 test: update order creation test and remove reserved ticket tests
gitea/salix-front/pipeline/pr-master This commit is unstable Details
2025-03-24 09:08:18 +01:00
Jose Antonio Tubau 5f48c9b887 refactor: refs #8717 eliminate warnings and add component on children routes
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-24 08:13:06 +01:00
Javier Segarra 31e8229cd3 chore: refs #8006 update vue-i18n and related dependencies to latest versions 2025-03-24 04:08:26 +01:00
Javier Segarra 96a3f52b79 Merge branch 'dev' of https: refs #8006//gitea.verdnatura.es/verdnatura/salix-front into 8006_eslint_rules
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-24 03:38:17 +01:00
Javier Segarra 6c4136fb58 Merge branch 'dev' of https: refs #8725//gitea.verdnatura.es/verdnatura/salix-front into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-24 03:31:04 +01:00
Javier Segarra aebd9ea83c fix: refs #7356 update validation logic and enhance Cypress tests for ticket components
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-24 03:24:10 +01:00
Javier Segarra c7218ce2cf Merge branch 'dev' into 7356_e2e 2025-03-24 01:45:02 +01:00
Alex Moreno 07f24cb9ae Merge branch 'master' into hotfix_remove_reserved
gitea/salix-front/pipeline/pr-master This commit is unstable Details
2025-03-21 10:22:19 +00:00
Jose Antonio Tubau 868172d208 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8717-reviewAndFixAgencySection
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-20 13:49:25 +01:00
Javier Segarra 1a0df60e06 fix: remove reserved ticket functionality from TicketProblems and TicketSaleMoreActions components
gitea/salix-front/pipeline/pr-master This commit is unstable Details
2025-03-14 14:21:26 +01:00
Alex Moreno ae62e40c60 Merge branch 'dev' into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-13 08:21:44 +00:00
Javier Segarra 007c407433 Merge branch '8725_submit_form_onClick' of https://gitea.verdnatura.es/verdnatura/salix-front into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-12 23:53:44 +01:00
Javier Segarra e100078f4b Merge branch 'dev' into 8725_submit_form_onClick
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-12 22:53:20 +00:00
Javier Segarra 9b3a98e26f fix: refs #8725 submit or button 2025-03-12 11:34:37 +01:00
Javier Segarra 50e3385be4 feat: refs #8725 enable validations in formPopup 2025-03-12 11:34:18 +01:00
Javier Segarra 4f17691d86 feat: refs #8725 remove inject dependency 2025-03-10 12:07:47 +01:00
Javier Segarra 9e037c0300 Merge branch 'dev' into 8725_submit_form_onClick 2025-03-10 10:29:53 +01:00
Javier Segarra 215e3a6da4 feat: refs #8725 ok
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-07 14:00:50 +01:00
Javier Segarra 255df3acd6 fix: refs #8725 streamline form submission logic in FormModel.vue 2025-03-07 13:33:53 +01:00
Alex Moreno 69d99350bc fix(jenkins): refs #8698 update module detection logic to ensure execution only for changed modules
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-06 10:18:08 +01:00
Alex Moreno 76e9aab5ae fix(cypress): refs #8698 improve parallel test execution and adjust module detection logic
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-06 10:16:16 +01:00
Javier Segarra 32dac089f8 feat: refs #8725 saveAndContinue
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-06 10:11:56 +01:00
Alex Moreno 22a978098e refactor(cypress): refs #8698 restructure parallel test execution and cleanup scripts
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-03-06 10:05:35 +01:00
Javier Segarra 1f83197440 Merge branch 'dev' into 8725_submit_form_onClick 2025-03-06 10:01:49 +01:00
Javier Segarra 095f01717d perf: refs #8725 handle axios.error 2025-03-06 10:01:35 +01:00
Alex Moreno cf261828db Merge branch 'dev' of https: refs #8698//gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges 2025-03-06 09:53:28 +01:00
Javier Segarra a01f02e31b fix: refs #8725 customerFiscalData 2025-03-05 23:24:11 +01:00
Javier Segarra 4641adbae3 feat: refs #8725 init 2025-03-05 23:20:23 +01:00
Alex Moreno eb6ed49060 Merge branch 'dev' of https: refs #8698//gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-05 14:02:44 +01:00
Alex Moreno 838d5e24ce fix: refs #8698 clean up Jenkinsfile and improve error handling in find.js
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-05 13:59:46 +01:00
Alex Moreno 0f9f9bf21d ci: refs #8698 try git_commit
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-05 13:35:38 +01:00
Alex Moreno b9f23dfb18 ci: refs #8698 try git_commit
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-05 13:32:28 +01:00
Alex Moreno 4ee8c80340 fix: refs #8698 update Jenkinsfile to skip Cypress execution if no modules have changed
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-05 13:28:08 +01:00
Alex Moreno 27d7a732b7 refactor: refs #8698 remove commented-out code in ItemDescriptorProxy.vue and VnLog.spec.js
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-03-05 13:13:50 +01:00
Alex Moreno 04f1aae5a0 feat: refs #8698 add Cypress tests for Order Catalog and Supplier Balance, improve module name handling
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-05 13:06:39 +01:00
Alex Moreno 83c0bfad0c fix: refs #8698 update Jenkinsfile to run Cypress tests with specified modules
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-05 13:03:44 +01:00
Alex Moreno d01951a709 fix: refs #8698 handle promise rejection in getChangedModules function
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-05 12:57:23 +01:00
Alex Moreno 31bfe6c44e feat: refs #8698 add module resolution and import finding utilities for Cypress tests
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-05 12:52:32 +01:00
Alex Moreno 2fd9067096 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges 2025-03-05 12:42:02 +01:00
Alex Moreno 92566f6e53 Merge branch 'dev' of https: refs #8698//gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges 2025-03-05 12:02:56 +01:00
Alex Moreno f1e334f1fc Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges 2025-03-05 10:30:42 +01:00
Jose Antonio Tubau fa5c1643a4 test: refs #8717 add integration test for agencyModes
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-04 12:32:21 +01:00
Alex Moreno 31ff7de958 ci: refs #8698 use always lastCommit from CHANGE_TARGET
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-03-04 09:55:50 +01:00
Alex Moreno 5bb078540d ci: refs #8698 use always lastCommit from CHANGE_TARGET
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-04 09:54:37 +01:00
Alex Moreno 7d8f25ff7d Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-03-04 09:48:38 +01:00
Alex Moreno fcebf6f664 ci: refs #8698 move functions inside script step
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-03-04 09:47:04 +01:00
Alex Moreno e1b96d6a73 ci: refs #8698 move functions inside script step
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-04 09:44:57 +01:00
Alex Moreno d15144a98a ci: refs #8698 refactor Cypress test command to use a variable for specs
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-04 09:00:29 +01:00
Alex Moreno b51f99f5f1 ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-03 14:21:43 +01:00
Alex Moreno 5c627dd489 ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-03 13:49:31 +01:00
Alex Moreno d199478c1d ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-03 13:23:35 +01:00
Alex Moreno 5e782a1465 ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev Build queued... Details
2025-03-03 13:22:57 +01:00
Alex Moreno 42f898531d ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-03 13:16:33 +01:00
Alex Moreno 1d34fc0287 ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-03 12:59:39 +01:00
Alex Moreno a6eb5dde8d ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-03 12:57:37 +01:00
Alex Moreno 04543c8397 ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-03 12:53:13 +01:00
Alex Moreno ee96142f2d ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-03 12:39:45 +01:00
Alex Moreno d5486f89a5 ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-03 12:07:16 +01:00
Alex Moreno 15159c1937 ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-03 11:46:05 +01:00
Alex Moreno 4789c1d3cb ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-03 11:33:19 +01:00
Alex Moreno ca020fff80 ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-03 11:32:14 +01:00
Alex Moreno d302ee58c0 ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev Build queued... Details
2025-03-03 11:31:01 +01:00
Alex Moreno e24600d1ad ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-03 11:18:19 +01:00
Alex Moreno 1fcdd120c5 Merge branch '8698_jenkins_e2e_onlyChanges' of https://gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-03 11:13:17 +01:00
Alex Moreno 6ab64453ab ci: refs #8698 try lastSuccessfulBuild 2025-03-03 11:13:15 +01:00
Alex Moreno ed615d7bbd Merge branch 'dev' into 8698_jenkins_e2e_onlyChanges
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-03 09:12:45 +00:00
Alex Moreno 1a52a23712 fix: refs #8698 update Jenkinsfile to include last successful build test information
gitea/salix-front/pipeline/pr-dev Something is wrong with the build of this commit Details
2025-03-03 09:56:52 +01:00
Alex Moreno 0491fa58b4 Merge branch 'dev' of https: refs #8698//gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges
gitea/salix-front/pipeline/pr-dev Build queued... Details
2025-03-03 09:56:22 +01:00
Alex Moreno d2be59ddbf fix: refs #8698 comment out unnecessary echo statements and clean up lastSuccessfulBuild logic in Jenkinsfile
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-03 09:45:25 +01:00
Alex Moreno efaa8a517b feat: refs #8698 add Cypress tests for login, logout, password recovery, and two-factor authentication
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-03 09:32:03 +01:00
Alex Moreno c7d26084aa fix: refs #8698 comment out commit ID echo in Jenkinsfile
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-03 08:59:06 +01:00
Alex Moreno 40875256ff Merge branch 'dev' of https: refs #8698//gitea.verdnatura.es/verdnatura/salix-front into 8698_jenkins_e2e_onlyChanges 2025-03-03 08:58:59 +01:00
Alex Moreno 4ee7a5c4fb ci: refs #8698 try lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-03 08:49:05 +01:00
Javier Segarra 0263af7938 test: refs #7356 init each missing e2e
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-02 23:58:36 +01:00
Javier Segarra 644339bd13 test: vnNotes restore
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-03-01 02:38:05 +01:00
Javier Segarra bdda691ca9 Merge branch 'dev' into update_vitest_version 2025-03-01 02:37:35 +01:00
Javier Segarra a330efd13f Merge branch 'dev' into minor_requested_changes_invoiceOutList
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-03-01 02:32:15 +01:00
Javier Segarra 36083b4e7a perf: refs #8006 eslintrc
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-01 02:18:04 +01:00
Javier Segarra cc55cd3822 Merge branch 'dev' into 8006_eslint_rules
gitea/salix-front/pipeline/pr-dev This commit is unstable Details
2025-03-01 02:16:28 +01:00
Alex Moreno a250cc0eb5 ci: refs #8698 extract lastSuccessfulBuild
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-02-28 15:01:45 +01:00
Alex Moreno 95f9917dc2 refactor: refs #8698 update Jenkinsfile to log last successful build details and clean up commented code
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-02-28 14:59:54 +01:00
Alex Moreno 28ae84a931 refactor: refs #8698 update Jenkinsfile to use last successful build's changesets for commit extraction
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-02-28 14:58:37 +01:00
Alex Moreno f17b773cca refactor: refs #8698 update Jenkinsfile to extract last successful build commit hash and improve logging
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-02-28 14:57:33 +01:00
Alex Moreno bfe302e9d4 refactor: refs #8698 update Jenkinsfile to extract last successful build commit hash and improve logging
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-02-28 14:55:35 +01:00
Alex Moreno 69f84e2fcd refactor: refs #8698 update Jenkinsfile to extract last successful build commit hash and improve logging
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-02-28 14:53:54 +01:00
Alex Moreno d755c0c8ba refactor: refs #8698 update Jenkinsfile to find last successful build and remove commented test stages
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-02-28 14:41:27 +01:00
Javier Segarra 59ddd2377b feat: refs #8006 eslint migration
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-02-21 00:35:32 +01:00
Javier Segarra 95e69ff79b fix: refs #8006 example
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-02-20 13:10:19 +01:00
Javier Segarra e797905764 feat: refs #8006 quasar viteConfig 2025-02-20 13:10:09 +01:00
Javier Segarra 158c0f684a feat: refs #8006 copy paste rules 2025-02-20 13:10:00 +01:00
Javier Segarra af531958ca feat: change customersumamry title
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-02-17 19:18:25 +01:00
Javier Segarra fa755bf608 feat: change columns order
gitea/salix-front/pipeline/pr-dev This commit looks good Details
2025-02-17 18:50:41 +01:00
Javier Segarra 5f2b71dc70 feat: updates 2025-01-23 11:33:19 +01:00
Javier Segarra ff63a8fd11 Merge branch 'dev' into update_vitest_version
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2025-01-22 23:18:55 +01:00
Javier Segarra fcb2e3cc74 feat: organize imports
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
gitea/salix-front/pipeline/head There was a failure building this commit Details
2024-12-23 12:47:09 +01:00
Javier Segarra 5b0479e60c Merge branch 'dev' into update_vitest_version
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2024-12-23 12:26:33 +01:00
Javier Segarra 099c613ccc feat: update_vitest_version to 2.0.0
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details
2024-12-23 12:23:53 +01:00
191 changed files with 3544 additions and 3256 deletions

View File

@ -1,6 +0,0 @@
/dist
/src-capacitor
/src-cordova
/.quasar
/node_modules
.eslintrc.js

View File

@ -1,75 +0,0 @@
export default {
// https://eslint.org/docs/user-guide/configuring#configuration-cascading-and-hierarchy
// This option interrupts the configuration hierarchy at this file
// Remove this if you have an higher level ESLint config file (it usually happens into a monorepos)
root: true,
parserOptions: {
ecmaVersion: '2021', // Allows for the parsing of modern ECMAScript features
},
env: {
node: true,
browser: true,
'vue/setup-compiler-macros': true,
},
// Rules order is important, please avoid shuffling them
extends: [
// Base ESLint recommended rules
'eslint:recommended',
// Uncomment any of the lines below to choose desired strictness,
// but leave only one uncommented!
// See https://eslint.vuejs.org/rules/#available-rules
// 'plugin:vue/vue3-essential', // Priority A: Essential (Error Prevention)
'plugin:vue/vue3-strongly-recommended', // Priority B: Strongly Recommended (Improving Readability)
// 'plugin:vue/vue3-recommended', // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead)
// https://github.com/prettier/eslint-config-prettier#installation
// usage with Prettier, provided by 'eslint-config-prettier'.
'prettier',
],
plugins: [
// https://eslint.vuejs.org/user-guide/#why-doesn-t-it-work-on-vue-files
// required to lint *.vue files
'vue',
// https://github.com/typescript-eslint/typescript-eslint/issues/389#issuecomment-509292674
// Prettier has not been included as plugin to avoid performance impact
// add it as an extension for your IDE
],
globals: {
ga: 'readonly', // Google Analytics
cordova: 'readonly',
__statics: 'readonly',
__QUASAR_SSR__: 'readonly',
__QUASAR_SSR_SERVER__: 'readonly',
__QUASAR_SSR_CLIENT__: 'readonly',
__QUASAR_SSR_PWA__: 'readonly',
process: 'readonly',
Capacitor: 'readonly',
chrome: 'readonly',
},
// add your custom rules here
rules: {
'prefer-promise-reject-errors': 'off',
'no-unused-vars': 'warn',
'vue/no-multiple-template-root': 'off',
// allow debugger during development only
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
},
overrides: [
{
files: ['test/cypress/**/*.*'],
extends: [
// Add Cypress-specific lint rules, globals and Cypress plugin
// See https://github.com/cypress-io/eslint-plugin-cypress#rules
'plugin:cypress/recommended',
],
},
],
};

3
.eslintrc.json Normal file
View File

@ -0,0 +1,3 @@
{
"extends": ["plugin:cypress/recommended"]
}

5
Jenkinsfile vendored
View File

@ -125,8 +125,10 @@ pipeline {
sh "docker-compose ${env.COMPOSE_PARAMS} pull db"
sh "docker-compose ${env.COMPOSE_PARAMS} up -d"
def modules = sh(script: 'node test/cypress/docker/find/find.js', returnStdout: true).trim()
echo "E2E MODULES: ${modules}"
image.inside("--network ${env.COMPOSE_PROJECT}_default -e CI -e TZ --init") {
sh 'sh test/cypress/cypressParallel.sh 1'
sh "sh test/cypress/docker/cypressParallel.sh 1 '${modules}'"
}
}
}
@ -183,3 +185,4 @@ pipeline {
}
}
}

87
eslint.config.js Normal file
View File

@ -0,0 +1,87 @@
import cypress from 'eslint-plugin-cypress';
import eslint from 'eslint-plugin-import';
import globals from 'globals';
import js from '@eslint/js';
import vue from 'eslint-plugin-vue';
export default {
plugins: { vue, eslint, cypress },
languageOptions: {
globals: {
...globals.node,
...globals.browser,
...vue.configs['vue3-strongly-recommended'].globals,
...cypress.environments.globals.globals,
ga: 'readonly',
cordova: 'readonly',
__statics: 'readonly',
__QUASAR_SSR__: 'readonly',
__QUASAR_SSR_SERVER__: 'readonly',
__QUASAR_SSR_CLIENT__: 'readonly',
__QUASAR_SSR_PWA__: 'readonly',
process: 'readonly',
Capacitor: 'readonly',
chrome: 'readonly',
},
ecmaVersion: 2020,
sourceType: 'module',
parserOptions: {
parser: '@babel/eslint-parser',
},
},
rules: {
...vue.rules['flat/strongly-recommended'],
...js.configs.recommended.rules,
semi: 'off',
'generator-star-spacing': 'warn',
'arrow-parens': 'warn',
'no-var': 'error',
'prefer-const': 'error',
'prefer-template': 'warn',
'prefer-destructuring': 'off',
'prefer-spread': 'warn',
'prefer-rest-params': 'warn',
'prefer-object-spread': 'warn',
'prefer-arrow-callback': 'warn',
'prefer-numeric-literals': 'warn',
'prefer-exponentiation-operator': 'warn',
'prefer-regex-literals': 'warn',
'one-var': [
'error',
{
let: 'never',
const: 'never',
},
],
'no-void': 'off',
'prefer-promise-reject-errors': 'error',
'multiline-ternary': 'warn',
'no-restricted-imports': 'warn',
'no-import-assign': 'warn',
'no-duplicate-imports': 'warn',
'no-useless-rename': 'warn',
'eslint/no-named-as-default': 'warn',
'eslint/no-named-as-default-member': 'warn',
'no-unsafe-optional-chaining': 'warn',
'no-undef': 'error',
'no-unused-vars': 'error',
'no-console': 'error',
'no-debugger': 'error',
'no-useless-escape': 'error',
'no-prototype-builtins': 'error',
'no-async-promise-executor': 'error',
'no-irregular-whitespace': 'error',
'no-constant-condition': 'error',
'no-unsafe-finally': 'error',
'no-extend-native': 'error',
},
ignores: [
'/dist',
'/src-capacitor',
'/src-cordova',
'/.quasar',
'/node_modules',
'.eslintrc.js',
],
};

View File

@ -1,6 +1,6 @@
{
"name": "salix-front",
"version": "25.14.0",
"version": "25.16.0",
"description": "Salix frontend",
"productName": "Salix",
"author": "Verdnatura",
@ -9,7 +9,8 @@
"type": "module",
"scripts": {
"resetDatabase": "cd ../salix && gulp docker",
"lint": "eslint --ext .js,.vue ./",
"lint": "eslint \"**/*.{vue,js}\" ",
"lint:fix": "eslint \"**/*.{vue,js}\" --fix ",
"format": "prettier --write \"**/*.{js,vue,scss,html,md,json}\" --ignore-path .gitignore",
"test:e2e": "cypress open",
"test:e2e:ci": "npm run resetDatabase && cd ../salix-front && cypress run",
@ -17,6 +18,8 @@
"test:e2e:summary": "bash ./test/cypress/summary.sh",
"test": "echo \"See package.json => scripts for available tests.\" && exit 0",
"test:front": "vitest",
"test:ui": "vitest --ui",
"test:coverage": "vitest run --coverage",
"test:front:ci": "vitest run",
"commitlint": "commitlint --edit",
"prepare": "npx husky install",
@ -26,43 +29,53 @@
"docs:preview": "vitepress preview docs"
},
"dependencies": {
"@eslint/eslintrc": "^3.2.0",
"@eslint/js": "^9.20.0",
"@quasar/cli": "^2.4.1",
"@quasar/extras": "^1.16.16",
"axios": "^1.4.0",
"chromium": "^3.0.3",
"croppie": "^2.6.5",
"es-module-lexer": "^1.6.0",
"fast-glob": "^3.3.3",
"moment": "^2.30.1",
"pinia": "^2.1.3",
"quasar": "^2.17.7",
"validator": "^13.9.0",
"vue": "^3.5.13",
"vue-i18n": "^9.3.0",
"vue-i18n": "^9.4.0",
"vue-router": "^4.2.5"
},
"devDependencies": {
"@commitlint/cli": "^19.2.1",
"@commitlint/config-conventional": "^19.1.0",
"@intlify/unplugin-vue-i18n": "^0.8.2",
"@eslint/eslintrc": "^3.2.0",
"@eslint/js": "^9.20.0",
"@intlify/unplugin-vue-i18n": "^4.0.0",
"@pinia/testing": "^0.1.2",
"@quasar/app-vite": "^2.0.8",
"@quasar/quasar-app-extension-qcalendar": "^4.0.2",
"@quasar/quasar-app-extension-testing-unit-vitest": "^0.4.0",
"@vitest/ui": "3.1.1",
"@vue/compiler-sfc": "^3.5.13",
"@vue/test-utils": "^2.4.4",
"autoprefixer": "^10.4.14",
"cypress": "^14.1.0",
"cypress-mochawesome-reporter": "^3.8.2",
"eslint": "^9.18.0",
"eslint-config-prettier": "^10.0.1",
"eslint-import-resolver-alias": "^1.1.2",
"eslint-plugin-cypress": "^4.1.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-vue": "^9.32.0",
"globals": "^16.0.0",
"husky": "^8.0.0",
"junit-merge": "^2.0.0",
"mocha": "^11.1.0",
"postcss": "^8.4.23",
"prettier": "^3.4.2",
"sass": "^1.83.4",
"vitepress": "^1.6.3",
"vitest": "^0.34.0",
"vitest": "^3.0.3",
"xunit-viewer": "^10.6.1"
},
"engines": {
@ -76,4 +89,4 @@
"vite": "^6.0.11",
"vitest": "^0.31.1"
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -53,7 +53,7 @@ export default configure(function (/* ctx */) {
build: {
target: {
browser: ['es2022', 'edge88', 'firefox78', 'chrome87', 'safari13.1'],
node: 'node18',
node: 'node20',
},
vueRouterMode: 'hash', // available values: 'hash', 'history'
@ -92,6 +92,7 @@ export default configure(function (/* ctx */) {
vitePlugins: [
[
VueI18nPlugin({
strictMessage: false,
runtimeOnly: false,
include: [
path.resolve(__dirname, './src/i18n/locale/**'),

View File

@ -0,0 +1,227 @@
/* eslint-disable */
/**
* THIS FILE IS GENERATED AUTOMATICALLY.
* 1. DO NOT edit this file directly as it won't do anything.
* 2. EDIT the original quasar.config file INSTEAD.
* 3. DO NOT git commit this file. It should be ignored.
*
* This file is still here because there was an error in
* the original quasar.config file and this allows you to
* investigate the Node.js stack error.
*
* After you fix the original file, this file will be
* deleted automatically.
**/
// quasar.config.js
import { configure } from "quasar/wrappers";
import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite";
import path from "path";
var __quasar_inject_dirname__ = "/home/jsegarra/Projects/salix-front";
var target = `http://${process.env.CI ? "back" : "localhost"}:3000`;
var quasar_config_default = configure(function() {
return {
eslint: {
// fix: true,
// include = [],
// exclude = [],
// rawOptions = {},
warnings: true,
errors: true
},
// https://v2.quasar.dev/quasar-cli/prefetch-feature
// preFetch: true,
// app boot file (/src/boot)
// --> boot files are part of "main.js"
// https://v2.quasar.dev/quasar-cli/boot-files
boot: ["i18n", "axios", "vnDate", "validations", "quasar", "quasar.defaults"],
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css
css: ["app.scss"],
// https://github.com/quasarframework/quasar/tree/dev/extras
extras: [
// 'ionicons-v4',
// 'mdi-v5',
// 'fontawesome-v6',
// 'eva-icons',
// 'themify',
// 'line-awesome',
// 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
"roboto-font",
"material-icons-outlined",
"material-symbols-outlined"
],
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#build
build: {
target: {
browser: ["es2022", "edge88", "firefox78", "chrome87", "safari13.1"],
node: "node20"
},
vueRouterMode: "hash",
// available values: 'hash', 'history'
// vueRouterBase,
// vueDevtools,
// vueOptionsAPI: false,
// rebuildCache: true, // rebuilds Vite/linter/etc cache on startup
// publicPath: '/',
// analyze: true,
// env: {},
rawDefine: {
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV)
},
// ignorePublicFolder: true,
// minify: false,
// polyfillModulePreload: true,
// distDir
extendViteConf(viteConf) {
delete viteConf.build.polyfillModulePreload;
viteConf.build.modulePreload = {
polyfill: false
};
},
// viteVuePluginOptions: {},
alias: {
composables: path.join(__quasar_inject_dirname__, "./src/composables"),
filters: path.join(__quasar_inject_dirname__, "./src/filters")
},
vitePlugins: [
[
VueI18nPlugin({
strictMessage: false,
runtimeOnly: false,
include: [
path.resolve(__quasar_inject_dirname__, "./src/i18n/locale/**"),
path.resolve(__quasar_inject_dirname__, "./src/pages/**/locale/**")
]
})
]
]
},
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#devServer
devServer: {
server: {
type: "http"
},
proxy: {
"/api": {
target,
logLevel: "debug",
changeOrigin: true,
secure: false
}
},
open: false,
allowedHosts: [
"front",
// Agrega este nombre de host
"localhost"
// Opcional, para pruebas locales
]
},
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#framework
framework: {
config: {
config: {
dark: "auto"
}
},
lang: "en-GB",
// iconSet: 'material-icons', // Quasar icon set
// lang: 'en-US', // Quasar language pack
// For special cases outside of where the auto-import strategy can have an impact
// (like functional components as one of the examples),
// you can manually specify Quasar components/directives to be available everywhere:
//
// components: [],
// directives: [],
// Quasar plugins
plugins: ["Notify", "Dialog"],
all: "auto",
autoImportComponentCase: "pascal"
},
// animations: 'all', // --- includes all animations
// https://v2.quasar.dev/options/animations
animations: [],
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#property-sourcefiles
// sourceFiles: {
// rootComponent: 'src/App.vue',
// router: 'src/router/index',
// store: 'src/store/index',
// registerServiceWorker: 'src-pwa/register-service-worker',
// serviceWorker: 'src-pwa/custom-service-worker',
// pwaManifestFile: 'src-pwa/manifest.json',
// electronMain: 'src-electron/electron-main',
// electronPreload: 'src-electron/electron-preload'
// },
// https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr
ssr: {
// ssrPwaHtmlFilename: 'offline.html', // do NOT use index.html as name!
// will mess up SSR
// extendSSRWebserverConf (esbuildConf) {},
// extendPackageJson (json) {},
pwa: false,
// manualStoreHydration: true,
// manualPostHydrationTrigger: true,
prodPort: 3e3,
// The default port that the production server should use
// (gets superseded if process.env.PORT is specified at runtime)
middlewares: [
"render"
// keep this as last one
]
},
// https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa
pwa: {
workboxMode: "generateSW",
// or 'injectManifest'
injectPwaMetaTags: true,
swFilename: "sw.js",
manifestFilename: "manifest.json",
useCredentialsForManifestTag: false
// useFilenameHashes: true,
// extendGenerateSWOptions (cfg) {}
// extendInjectManifestOptions (cfg) {},
// extendManifestJson (json) {}
// extendPWACustomSWConf (esbuildConf) {}
},
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova
cordova: {
// noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
},
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor
capacitor: {
hideSplashscreen: true
},
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron
electron: {
// extendElectronMainConf (esbuildConf)
// extendElectronPreloadConf (esbuildConf)
inspectPort: 5858,
bundler: "packager",
// 'packager' or 'builder'
packager: {
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
// OS X / Mac App Store
// appBundleId: '',
// appCategoryType: '',
// osxSign: '',
// protocol: 'myapp://path',
// Windows only
// win32metadata: { ... }
},
builder: {
// https://www.electron.build/configuration/configuration
appId: "salix-frontend"
}
},
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex
bex: {
contentScripts: ["my-content-script"]
// extendBexScriptsConf (esbuildConf) {}
// extendBexManifestJson (json) {}
}
};
});
export {
quasar_config_default as default
};

View File

@ -9,6 +9,30 @@ vi.mock('src/composables/useSession', () => ({
}),
}));
// Mock axios
vi.mock('axios', () => ({
default: {
create: vi.fn(() => ({
interceptors: {
request: { use: vi.fn() },
response: { use: vi.fn() },
},
})),
interceptors: {
request: { use: vi.fn() },
response: { use: vi.fn() },
},
defaults: {
baseURL: '',
},
},
}));
vi.mock('src/router', () => ({
Router: {
push: vi.fn(),
},
}));
vi.mock('src/stores/useStateQueryStore', () => ({
useStateQueryStore: () => ({
add: () => vi.fn(),
@ -29,7 +53,7 @@ describe('Axios boot', () => {
'Accept-Language': 'en-US',
Authorization: 'DEFAULT_TOKEN',
},
})
}),
);
});
});

View File

@ -1,3 +1,4 @@
/* eslint-disable eslint/export */
export * from './defaults/qTable';
export * from './defaults/qInput';
export * from './defaults/qSelect';

View File

@ -13,13 +13,12 @@ import VnConfirm from './ui/VnConfirm.vue';
import { tMobile } from 'src/composables/tMobile';
import { useArrayData } from 'src/composables/useArrayData';
import { getDifferences, getUpdatedValues } from 'src/filters';
const { push } = useRouter();
const quasar = useQuasar();
const state = useState();
const stateStore = useStateStore();
const { t } = useI18n();
const { validate } = useValidator();
const { validate, validations } = useValidator();
const { notify } = useNotify();
const route = useRoute();
const myForm = ref(null);
@ -119,7 +118,7 @@ const defaultButtons = computed(() => ({
color: 'primary',
icon: 'save',
label: 'globals.save',
click: async () => await save(),
click: async (evt) => submitForm(evt),
type: 'submit',
},
reset: {
@ -132,6 +131,13 @@ const defaultButtons = computed(() => ({
...$props.defaultButtons,
}));
const submitForm = async (evt) => {
const isFormValid = await myForm.value.validate();
if (isFormValid) {
await save(evt);
}
};
onMounted(async () => {
nextTick(() => (componentIsRendered.value = true));
@ -227,10 +233,9 @@ async function save() {
const method = $props.urlCreate ? 'post' : 'patch';
const url =
$props.urlCreate || $props.urlUpdate || $props.url || arrayData.store.url;
let response;
if ($props.saveFn) response = await $props.saveFn(body);
else response = await axios[method](url, body);
const response = await Promise.resolve(
$props.saveFn ? $props.saveFn(body) : axios[method](url, body),
);
if ($props.urlCreate) notify('globals.dataCreated', 'positive');
@ -307,11 +312,13 @@ async function onKeyup(evt) {
selectionStart = selectionEnd = selectionStart + 1;
return;
}
await save();
await myForm.value.submit(evt);
}
}
defineExpose({
submitForm,
myForm,
save,
isLoading,
hasChanges,
@ -325,7 +332,7 @@ defineExpose({
<QForm
ref="myForm"
v-if="formData"
@submit.prevent
@submit.prevent="save"
@keyup.prevent="onKeyup"
@reset="reset"
class="q-pa-md"
@ -339,6 +346,7 @@ defineExpose({
name="form"
:data="formData"
:validate="validate"
:validations="validations()"
:filter="filter"
/>
<SkeletonForm v-else />

View File

@ -41,9 +41,12 @@ const onDataSaved = async (formData, requestResponse) => {
emit('onDataSaved', formData, requestResponse);
};
const onClick = async (saveAndContinue) => {
const onClick = async (saveAndContinue = showSaveAndContinueBtn) => {
await formModelRef.value.myForm.validate(true);
isSaveAndContinue.value = saveAndContinue;
await formModelRef.value.save();
if (formModelRef.value) {
await formModelRef.value.submitForm();
}
};
defineExpose({
@ -59,16 +62,23 @@ defineExpose({
ref="formModelRef"
:observe-form-changes="false"
:default-actions="false"
@submit="onClick"
v-bind="$attrs"
@on-data-saved="onDataSaved"
:prevent-submit="false"
>
<template #form="{ data, validate }">
<template #form="{ data, validate, validations }">
<span ref="closeButton" class="close-icon" v-close-popup>
<QIcon name="close" size="sm" />
</span>
<h1 class="title">{{ title }}</h1>
<p>{{ subtitle }}</p>
<slot name="form-inputs" :data="data" :validate="validate" />
<slot
name="form-inputs"
:data="data"
:validate="validate"
:validations="validations"
/>
<div class="q-mt-lg row justify-end">
<QBtn
:label="t('globals.cancel')"
@ -87,12 +97,13 @@ defineExpose({
:flat="showSaveAndContinueBtn"
:label="t('globals.save')"
:title="t('globals.save')"
@click="onClick(false)"
:type="!showSaveAndContinueBtn ? 'submit' : 'button'"
color="primary"
class="q-ml-sm"
:disabled="isLoading"
:loading="isLoading"
data-cy="FormModelPopup_save"
@click="showSaveAndContinueBtn ? onClick(false) : null"
z-max
/>
<QBtn
@ -100,12 +111,13 @@ defineExpose({
:label="t('globals.isSaveAndContinue')"
:title="t('globals.isSaveAndContinue')"
color="primary"
:type="showSaveAndContinueBtn ? 'submit' : 'button'"
class="q-ml-sm"
:disabled="isLoading"
:loading="isLoading"
data-cy="FormModelPopup_isSaveAndContinue"
@click="showSaveAndContinueBtn ? onClick(true) : null"
z-max
@click="onClick(true)"
/>
</div>
</template>

View File

@ -17,17 +17,6 @@ defineProps({ row: { type: Object, required: true } });
</QTooltip>
</QIcon>
</router-link>
<QIcon
v-if="row?.reserved"
color="primary"
name="vn:reserva"
size="xs"
data-cy="ticketSaleReservedIcon"
>
<QTooltip>
{{ t('ticketSale.reserved') }}
</QTooltip>
</QIcon>
<QIcon
v-if="row?.isDeleted"
color="primary"

View File

@ -55,6 +55,8 @@ const $props = defineProps({
},
});
const label = $props.showLabel && $props.column.label ? $props.column.label : '';
const defaultSelect = {
attrs: {
row: $props.row,
@ -62,7 +64,7 @@ const defaultSelect = {
class: 'fit',
},
forceAttrs: {
label: $props.showLabel && $props.column.label,
label,
},
};
@ -74,7 +76,7 @@ const defaultComponents = {
class: 'fit',
},
forceAttrs: {
label: $props.showLabel && $props.column.label,
label,
},
},
number: {
@ -84,7 +86,7 @@ const defaultComponents = {
class: 'fit',
},
forceAttrs: {
label: $props.showLabel && $props.column.label,
label,
},
},
date: {
@ -96,7 +98,7 @@ const defaultComponents = {
class: 'fit',
},
forceAttrs: {
label: $props.showLabel && $props.column.label,
label,
},
},
time: {
@ -105,7 +107,7 @@ const defaultComponents = {
disable: !$props.isEditable,
},
forceAttrs: {
label: $props.showLabel && $props.column.label,
label,
},
},
checkbox: {
@ -125,7 +127,7 @@ const defaultComponents = {
return defaultAttrs;
},
forceAttrs: {
label: $props.showLabel && $props.column.label,
label,
autofocus: true,
},
events: {

View File

@ -70,7 +70,7 @@ function textAlignToFlex(textAlign) {
:style="textAlignToFlex(align)"
>
<span :title="label">{{ label }}</span>
<div v-if="name">
<div v-if="name && (model?.index || vertical)">
<QChip
:label="!vertical ? model?.index : ''"
:icon="

View File

@ -19,6 +19,7 @@ import { useQuasar, date } from 'quasar';
import { useStateStore } from 'stores/useStateStore';
import { useFilterParams } from 'src/composables/useFilterParams';
import { dashIfEmpty, toDate } from 'src/filters';
import { useTableHeight } from './filters/useTableHeight';
import CrudModel from 'src/components/CrudModel.vue';
import FormModelPopup from 'components/FormModelPopup.vue';
@ -117,7 +118,7 @@ const $props = defineProps({
},
tableHeight: {
type: String,
default: '90vh',
default: undefined,
},
footer: {
type: Boolean,
@ -166,6 +167,7 @@ const tableRef = ref();
const params = ref(useFilterParams($attrs['data-key']).params);
const orders = ref(useFilterParams($attrs['data-key']).orders);
const app = inject('app');
const tableHeight = useTableHeight();
const editingRow = ref(null);
const editingField = ref(null);
@ -678,7 +680,7 @@ const rowCtrlClickFunction = computed(() => {
table-header-class="bg-header"
card-container-class="grid-three"
flat
:style="isTableMode && `max-height: ${tableHeight}`"
:style="isTableMode && `max-height: ${$props.tableHeight || tableHeight}`"
:virtual-scroll="isTableMode"
@virtual-scroll="handleScroll"
@row-click="(event, row) => handleRowClick(event, row)"
@ -1042,7 +1044,7 @@ const rowCtrlClickFunction = computed(() => {
:model="$attrs['data-key'] + 'Create'"
@on-data-saved="(_, res) => createForm.onDataSaved(res)"
>
<template #form-inputs="{ data }">
<template #form-inputs="{ data, validations }">
<slot name="alter-create" :data="data">
<div :style="createComplement?.containerStyle">
<div
@ -1060,6 +1062,7 @@ const rowCtrlClickFunction = computed(() => {
:key="column.name"
:name="`column-create-${column.name}`"
:data="data"
:validations="validations"
:column-name="column.name"
:label="column.label"
>

View File

@ -1,8 +1,7 @@
import { describe, expect, it, beforeEach, afterEach, vi } from 'vitest';
import { createWrapper } from 'app/test/vitest/helper';
import VnVisibleColumn from '../VnVisibleColumn.vue';
import { axios } from 'app/test/vitest/helper';
import { default as axios } from 'axios';
describe('VnVisibleColumns', () => {
let wrapper;
let vm;

View File

@ -0,0 +1,18 @@
import { onMounted, nextTick, ref } from 'vue';
export function useTableHeight() {
const tableHeight = ref('90vh');
onMounted(async () => {
await nextTick();
let height = 100;
Array.from(document.querySelectorAll('[role="toolbar"]'))
.filter((element) => window.getComputedStyle(element).display !== 'none')
.forEach(() => {
height -= 10;
});
tableHeight.value = `${height}vh`;
});
return tableHeight;
}

View File

@ -1,4 +1,6 @@
import { createWrapper, axios } from 'app/test/vitest/helper';
import { createWrapper } from 'app/test/vitest/helper';
import { default as axios } from 'axios';
import CrudModel from 'components/CrudModel.vue';
import { vi, afterEach, beforeEach, beforeAll, describe, expect, it } from 'vitest';

View File

@ -1,4 +1,5 @@
import { createWrapper, axios } from 'app/test/vitest/helper';
import { createWrapper } from 'app/test/vitest/helper';
import { default as axios } from 'axios';
import EditForm from 'components/EditTableCellValueForm.vue';
import { vi, afterEach, beforeAll, describe, expect, it } from 'vitest';

View File

@ -1,4 +1,6 @@
import { createWrapper, axios } from 'app/test/vitest/helper';
import { createWrapper } from 'app/test/vitest/helper';
import { default as axios } from 'axios';
import FilterItemForm from 'src/components/FilterItemForm.vue';
import { vi, beforeAll, describe, expect, it } from 'vitest';
@ -38,9 +40,9 @@ describe('FilterItemForm', () => {
{ relation: 'producer', scope: { fields: ['name'] } },
{ relation: 'ink', scope: { fields: ['name'] } },
],
where: {"name":{"like":"%bolas de madera%"}},
where: { name: { like: '%bolas de madera%' } },
};
expect(axios.get).toHaveBeenCalledWith('Items/withName', {
params: { filter: JSON.stringify(expectedFilter) },
});
@ -79,4 +81,4 @@ describe('FilterItemForm', () => {
vm.selectItem({ id: 12345 });
expect(wrapper.emitted('itemSelected')[0]).toEqual([12345]);
});
});
});

View File

@ -1,5 +1,7 @@
import { describe, expect, it, beforeAll, vi, afterAll } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import { createWrapper } from 'app/test/vitest/helper';
import { default as axios } from 'axios';
import FormModel from 'src/components/FormModel.vue';
describe('FormModel', () => {

View File

@ -1,6 +1,7 @@
import { vi, describe, expect, it, beforeAll, beforeEach, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import Leftmenu from 'components/LeftMenu.vue';
import { vi, describe, expect, it, beforeAll, afterEach, beforeEach } from 'vitest';
import { default as axios } from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import LeftMenu from 'components/LeftMenu.vue';
import * as vueRouter from 'vue-router';
import { useNavigationStore } from 'src/stores/useNavigationStore';
@ -101,7 +102,7 @@ function mount(source = 'main') {
vi.spyOn(axios, 'get').mockResolvedValue({
data: [],
});
const wrapper = createWrapper(Leftmenu, {
const wrapper = createWrapper(LeftMenu, {
propsData: {
source,
},
@ -164,7 +165,7 @@ describe('getRoutes', () => {
});
});
describe('Leftmenu as card', () => {
describe('LeftMenu as card', () => {
beforeAll(() => {
vm = mount('card').vm;
});
@ -173,7 +174,7 @@ describe('Leftmenu as card', () => {
vm.getRoutes();
});
});
describe('Leftmenu as main', () => {
describe('LeftMenu as main', () => {
beforeEach(() => {
vm = mount().vm;
});

View File

@ -60,7 +60,7 @@ async function confirm() {
v-model="address"
is-outlined
autofocus
data-cy="SendEmailNotifiactionDialogInput"
data-cy="SendEmailNotificationDialogInput"
/>
</QCardSection>
<QCardActions align="right">

View File

@ -1,35 +1,14 @@
<script setup>
import { nextTick, ref } from 'vue';
import VnInput from './VnInput.vue';
import { useAccountShortToStandard } from 'src/composables/useAccountShortToStandard';
const $props = defineProps({
insertable: {
type: Boolean,
default: false,
},
});
const emit = defineEmits(['update:modelValue', 'accountShortToStandard']);
const model = defineModel({ prop: 'modelValue' });
const inputRef = ref(false);
function setCursorPosition(pos) {
const input = inputRef.value.vnInputRef.$el.querySelector('input');
input.focus();
input.setSelectionRange(pos, pos);
}
async function handleUpdateModel(val) {
model.value = val?.at(-1) === '.' ? useAccountShortToStandard(val) : val;
await nextTick(() => setCursorPosition(0));
}
</script>
<template>
<VnInput
v-model="model"
ref="inputRef"
:insertable
@update:model-value="handleUpdateModel"
@keydown.tab="model = useAccountShortToStandard($event.target.value) ?? model"
@input="model = $event.target.value.replace(/[^\d.]/g, '')"
/>
</template>

View File

@ -1,5 +1,5 @@
<script setup>
import { onBeforeMount, computed } from 'vue';
import { onBeforeMount, computed, markRaw } from 'vue';
import { useRoute, useRouter, onBeforeRouteUpdate, onBeforeRouteLeave } from 'vue-router';
import { useArrayData } from 'src/composables/useArrayData';
import { useStateStore } from 'stores/useStateStore';
@ -26,18 +26,14 @@ const route = useRoute();
const stateStore = useStateStore();
const router = useRouter();
const entityId = computed(() => props.id || route?.params?.id);
const arrayData = useArrayData(props.dataKey, {
url: props.url,
userFilter: props.filter,
oneRecord: true,
});
let arrayData = getArrayData(entityId.value, props.url);
onBeforeRouteLeave(() => {
stateStore.cardDescriptorChangeValue(null);
});
onBeforeMount(async () => {
stateStore.cardDescriptorChangeValue(props.descriptor);
stateStore.cardDescriptorChangeValue(markRaw(props.descriptor));
const route = router.currentRoute.value;
try {
@ -61,16 +57,31 @@ onBeforeRouteUpdate(async (to, from) => {
});
async function fetch(id, append = false) {
const regex = /\/(\d+)/;
if (props.idInWhere) arrayData.store.filter.where = { id };
else if (!regex.test(props.url)) arrayData.store.url = `${props.url}/${id}`;
else arrayData.store.url = props.url.replace(regex, `/${id}`);
else {
arrayData = getArrayData(id);
}
await arrayData.fetch({ append, updateRouter: false });
emit('onFetch', arrayData.store.data);
}
function hasRouteParam(params, valueToCheck = ':addressId') {
return Object.values(params).includes(valueToCheck);
}
function formatUrl(id) {
const newId = id || entityId.value;
const regex = /\/(\d+)/;
if (!regex.test(props.url)) return `${props.url}/${newId}`;
return props.url.replace(regex, `/${newId}`);
}
function getArrayData(id, url) {
return useArrayData(props.dataKey, {
url: url ?? formatUrl(id),
userFilter: props.filter,
oneRecord: true,
});
}
</script>
<template>
<template v-if="visual">

View File

@ -219,6 +219,7 @@ function filterByRecord(modelLog) {
}
async function applyFilter(params = {}) {
paginate.value.arrayData.resetPagination();
paginate.value.arrayData.applyFilter({
filter: {},
params: { originFk: route.params.id, ...params },

View File

@ -10,6 +10,7 @@ import { useFilterParams } from 'src/composables/useFilterParams';
import FetchData from '../FetchData.vue';
import { useValidator } from 'src/composables/useValidator';
import { useCapitalize } from 'src/composables/useCapitalize';
import VnAvatar from '../ui/VnAvatar.vue';
const $props = defineProps({
dataKey: {
@ -99,7 +100,6 @@ function getActions() {
:columns="columns"
:redirect="false"
:hiddenTags="['originFk', 'creationDate']"
:exprBuilder
search-url="logs"
:showTagChips="false"
>

View File

@ -40,10 +40,6 @@ const $props = defineProps({
type: Boolean,
default: true,
},
keepData: {
type: Boolean,
default: true,
},
});
const route = useRoute();
@ -61,7 +57,6 @@ onBeforeMount(() => {
if ($props.dataKey)
arrayData = useArrayData($props.dataKey, {
searchUrl: 'table',
keepData: $props.keepData,
...$props.arrayDataProps,
navigate: $props.redirect,
});

View File

@ -1,4 +1,5 @@
import { createWrapper, axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import VnChangePassword from 'src/components/common/VnChangePassword.vue';
import { vi, beforeEach, afterEach, beforeAll, describe, expect, it } from 'vitest';
import { Notify } from 'quasar';

View File

@ -1,4 +1,5 @@
import { createWrapper, axios } from 'app/test/vitest/helper';
import { createWrapper } from 'app/test/vitest/helper';
import { default as axios } from 'axios';
import { vi, afterEach, beforeEach, beforeAll, describe, expect, it } from 'vitest';
import VnDms from 'src/components/common/VnDms.vue';
@ -40,7 +41,10 @@ describe('VnDms', () => {
companyFk: 2,
dmsTypeFk: 3,
description: 'This is a test description',
files: { name: 'example.txt', content: new Blob(['file content'], { type: 'text/plain' })},
files: {
name: 'example.txt',
content: new Blob(['file content'], { type: 'text/plain' }),
},
};
const expectedBody = {
@ -59,7 +63,7 @@ describe('VnDms', () => {
url: '/test',
formInitialData: { id: 1, reference: 'test' },
model: 'Worker',
}
},
});
wrapper = wrapper.wrapper;
vm = wrapper.vm;
@ -98,7 +102,7 @@ describe('VnDms', () => {
expect(vm.getUrl()).toBe('/test');
});
it('should returns url dms/"props.formInitialData.id"/updateFile when prop url is null', async () => {
it('should returns url dms/"props.formInitialData.id"/updateFile when prop url is null', async () => {
await wrapper.setProps({ url: null });
expect(vm.getUrl()).toBe('dms/1/updateFile');
});
@ -113,7 +117,9 @@ describe('VnDms', () => {
describe('save', () => {
it('should save data correctly', async () => {
await vm.save();
expect(postMock).toHaveBeenCalledWith(vm.getUrl(), expect.any(FormData), { params: expectedBody });
expect(postMock).toHaveBeenCalledWith(vm.getUrl(), expect.any(FormData), {
params: expectedBody,
});
expect(wrapper.emitted('onDataSaved')).toBeTruthy();
});
});
@ -127,8 +133,8 @@ describe('VnDms', () => {
warehouseFk: 2,
companyFk: 3,
dmsTypeFk: 2,
description: 'This is a test description'
}
description: 'This is a test description',
};
await wrapper.setProps({ formInitialData: testData });
vm.defaultData();
@ -137,10 +143,10 @@ describe('VnDms', () => {
it('should add reference with "route.params.id" to dms if formInitialData is null', async () => {
await wrapper.setProps({ formInitialData: null });
vm.route.params.id= '111';
vm.route.params.id = '111';
vm.defaultData();
expect(vm.dms.reference).toBe('111');
});
});
});
});

View File

@ -1,4 +1,6 @@
import { createWrapper, axios } from 'app/test/vitest/helper';
import { createWrapper } from 'app/test/vitest/helper';
import { default as axios } from 'axios';
import VnDmsList from 'src/components/common/VnDmsList.vue';
import { vi, afterEach, beforeAll, describe, expect, it } from 'vitest';

View File

@ -1,5 +1,6 @@
import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import VnLog from 'src/components/common/VnLog.vue';
describe('VnLog', () => {

View File

@ -1,5 +1,6 @@
import { describe, it, expect, vi, afterEach, beforeEach, afterAll } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import { createWrapper } from 'app/test/vitest/helper';
import { default as axios } from 'axios';
import VnNotes from 'src/components/ui/VnNotes.vue';
describe('VnNotes', () => {

View File

@ -159,6 +159,7 @@ async function fetch() {
display: flex;
flex-direction: row;
margin-top: 2px;
align-items: start;
.label {
color: var(--vn-label-color);
width: 9em;
@ -169,9 +170,15 @@ async function fetch() {
flex-grow: 0;
flex-shrink: 0;
}
&.ellipsis > .value {
text-overflow: ellipsis;
white-space: pre;
}
.value {
color: var(--vn-text-color);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.header {
@ -203,27 +210,21 @@ async function fetch() {
}
.vn-card-group {
display: flex;
flex-direction: column;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 16px;
}
.vn-card-content {
display: flex;
flex-direction: column;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
> div {
max-height: 70px;
}
}
@media (min-width: 1010px) {
.vn-card-group {
flex-direction: row;
}
.vn-card-content {
flex: 1;
}
}
</style>
<style lang="scss" scoped>
.summaryHeader .vn-label-value {

View File

@ -30,7 +30,7 @@ const $props = defineProps({
default: null,
},
toModule: {
type: String,
type: Object,
default: null,
},
});
@ -252,6 +252,10 @@ const toModule = computed(() => {
content: ':';
}
}
&.ellipsis > .value {
text-overflow: ellipsis;
white-space: pre;
}
.value {
color: var(--vn-text-color);
font-size: 14px;

View File

@ -1,8 +1,11 @@
<script setup>
import { dashIfEmpty } from 'src/filters';
defineProps({ email: { type: [String], default: null } });
</script>
<template>
<QBtn
class="q-pr-xs"
v-if="email"
flat
round
@ -13,4 +16,5 @@ defineProps({ email: { type: [String], default: null } });
:href="`mailto:${email}`"
@click.stop
/>
<span>{{ dashIfEmpty(email) }}</span>
</template>

View File

@ -1,7 +1,7 @@
<script setup>
import { ref, reactive, useAttrs, onBeforeMount, capitalize } from 'vue';
import axios from 'axios';
import { parsePhone } from 'src/filters';
import { dashIfEmpty, parsePhone } from 'src/filters';
import useOpenURL from 'src/composables/useOpenURL';
const props = defineProps({
@ -12,50 +12,65 @@ const props = defineProps({
const phone = ref(props.phoneNumber);
const config = reactive({
sip: { icon: 'phone', href: `sip:${props.phoneNumber}` },
'say-simple': {
icon: 'vn:saysimple',
url: null,
channel: props.channel,
},
sip: { icon: 'phone', href: `sip:${props.phoneNumber}` },
});
const type = Object.keys(config).find((key) => key in useAttrs()) || 'sip';
const attrs = useAttrs();
const types = Object.keys(config)
.filter((key) => key in attrs)
.sort();
const activeTypes = types.length ? types : ['sip'];
onBeforeMount(async () => {
if (!phone.value) return;
let { channel } = config[type];
if (type === 'say-simple') {
const { url, defaultChannel } = (await axios.get('SaySimpleConfigs/findOne'))
.data;
if (!channel) channel = defaultChannel;
for (const type of activeTypes) {
if (type === 'say-simple') {
let { channel } = config[type];
const { url, defaultChannel } = (await axios.get('SaySimpleConfigs/findOne'))
.data;
if (!channel) channel = defaultChannel;
phone.value = await parsePhone(props.phoneNumber, props.country?.toLowerCase());
config[
type
].url = `${url}?customerIdentity=%2B${phone.value}&channelId=${channel}`;
phone.value = await parsePhone(
props.phoneNumber,
props.country?.toLowerCase(),
);
config[type].url =
`${url}?customerIdentity=%2B${phone.value}&channelId=${channel}`;
}
}
});
function handleClick() {
function handleClick(type) {
if (config[type].url) useOpenURL(config[type].url);
else if (config[type].href) window.location.href = config[type].href;
}
</script>
<template>
<QBtn
v-if="phone"
flat
round
:icon="config[type].icon"
size="sm"
color="primary"
padding="none"
@click.stop="handleClick"
>
<QTooltip>
{{ capitalize(type).replace('-', '') }}
</QTooltip>
</QBtn>
{{ phoneNumber }}
<div class="flex items-center gap-2">
<template v-for="type in activeTypes">
<QBtn
:key="type"
v-if="phone"
flat
round
:icon="config[type].icon"
size="sm"
color="primary"
padding="none"
@click.stop="() => handleClick(type)"
>
<QTooltip>
{{ capitalize(type).replace('-', '') }}
</QTooltip>
</QBtn></template
>
<span>{{ dashIfEmpty(phone) }}</span>
</div>
</template>

View File

@ -115,7 +115,7 @@ onMounted(async () => {
});
onBeforeUnmount(() => {
if (!store.keepData) arrayData.reset(['data']);
arrayData.reset(['data']);
arrayData.resetPagination();
});

View File

@ -1,5 +1,7 @@
import { vi, describe, expect, it, beforeAll, afterEach, beforeEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import { createWrapper } from 'app/test/vitest/helper';
import { default as axios } from 'axios';
import CardSummary from 'src/components/ui/CardSummary.vue';
import * as vueRouter from 'vue-router';

View File

@ -1,5 +1,6 @@
import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import VnPaginate from 'src/components/ui/VnPaginate.vue';
describe('VnPaginate', () => {

View File

@ -1,5 +1,5 @@
import { describe, it, expect, beforeAll, vi } from 'vitest';
import { axios } from 'app/test/vitest/helper';
import axios from 'axios';
import parsePhone from 'src/filters/parsePhone';
describe('parsePhone filter', () => {

View File

@ -1,5 +1,6 @@
import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import VnSms from 'src/components/ui/VnSms.vue';
describe('VnSms', () => {

View File

@ -1,5 +1,5 @@
import { vi, describe, expect, it, beforeAll, afterAll } from 'vitest';
import { axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { downloadFile } from 'src/composables/downloadFile';
import { useSession } from 'src/composables/useSession';
const session = useSession();

View File

@ -1,5 +1,7 @@
import { vi, describe, expect, it, beforeAll, afterAll } from 'vitest';
import { axios, flushPromises } from 'app/test/vitest/helper';
import axios from 'axios';
import { flushPromises } from '@vue/test-utils';
import { useAcl } from 'src/composables/useAcl';
describe('useAcl', () => {

View File

@ -1,15 +1,39 @@
import { describe, expect, it, beforeEach, afterEach, vi } from 'vitest';
import { axios, flushPromises } from 'app/test/vitest/helper';
import { default as axios } from 'axios';
import { useArrayData } from 'composables/useArrayData';
import { useRouter } from 'vue-router';
import * as vueRouter from 'vue-router';
import { setActivePinia, createPinia } from 'pinia';
describe('useArrayData', () => {
const filter = '{"limit":20,"skip":0}';
const params = { supplierFk: 2 };
beforeEach(() => {
vi.spyOn(useRouter(), 'replace');
vi.spyOn(useRouter(), 'push');
setActivePinia(createPinia());
// Mock route
vi.spyOn(vueRouter, 'useRoute').mockReturnValue({
path: 'mockSection/list',
matched: [],
query: {},
params: {},
meta: { moduleName: 'mockName' },
});
// Mock router
vi.spyOn(vueRouter, 'useRouter').mockReturnValue({
push: vi.fn(),
replace: vi.fn(),
currentRoute: {
value: {
path: 'mockSection/list',
params: { id: 1 },
meta: { moduleName: 'mockName' },
matched: [{ path: 'mockName/:id' }],
},
},
});
});
afterEach(() => {
@ -17,103 +41,69 @@ describe('useArrayData', () => {
});
it('should fetch and replace url with new params', async () => {
vi.spyOn(axios, 'get').mockReturnValueOnce({ data: [] });
vi.spyOn(axios, 'get').mockResolvedValueOnce({ data: [] });
const arrayData = useArrayData('ArrayData', { url: 'mockUrl' });
const arrayData = useArrayData('ArrayData', {
url: 'mockUrl',
searchUrl: 'params',
});
arrayData.store.userParams = params;
arrayData.fetch({});
await arrayData.fetch({});
await flushPromises();
const routerReplace = useRouter().replace.mock.calls[0][0];
expect(axios.get.mock.calls[0][1].params).toEqual({
filter,
supplierFk: 2,
expect(axios.get).toHaveBeenCalledWith('mockUrl', {
signal: expect.any(Object),
params: {
filter,
supplierFk: 2,
},
});
expect(routerReplace.path).toEqual('mockSection/list');
expect(routerReplace.path).toBe('mockSection/list');
expect(JSON.parse(routerReplace.query.params)).toEqual(
expect.objectContaining(params),
);
});
it('should get data and send new URL without keeping parameters, if there is only one record', async () => {
vi.spyOn(axios, 'get').mockReturnValueOnce({ data: [{ id: 1 }] });
it('should redirect to detail when single record is returned with navigation', async () => {
vi.spyOn(axios, 'get').mockResolvedValueOnce({
data: [{ id: 1 }],
});
const arrayData = useArrayData('ArrayData', { url: 'mockUrl', navigate: {} });
const arrayData = useArrayData('ArrayData', {
url: 'mockUrl',
navigate: {},
});
arrayData.store.userParams = params;
arrayData.fetch({});
await arrayData.fetch({});
await flushPromises();
const routerPush = useRouter().push.mock.calls[0][0];
expect(axios.get.mock.calls[0][1].params).toEqual({
filter,
supplierFk: 2,
});
expect(routerPush.path).toEqual('mockName/1');
expect(routerPush.path).toBe('mockName/1');
expect(routerPush.query).toBeUndefined();
});
it('should get data and send new URL keeping parameters, if you have more than one record', async () => {
vi.spyOn(axios, 'get').mockReturnValueOnce({ data: [{ id: 1 }, { id: 2 }] });
vi.spyOn(vueRouter, 'useRoute').mockReturnValue({
matched: [],
query: {},
params: {},
meta: { moduleName: 'mockName' },
path: 'mockName/1',
});
vi.spyOn(vueRouter, 'useRouter').mockReturnValue({
push: vi.fn(),
replace: vi.fn(),
currentRoute: {
value: {
params: {
id: 1,
},
meta: { moduleName: 'mockName' },
matched: [{ path: 'mockName/:id' }],
},
},
});
const arrayData = useArrayData('ArrayData', { url: 'mockUrl', navigate: {} });
arrayData.store.userParams = params;
arrayData.fetch({});
await flushPromises();
const routerPush = useRouter().push.mock.calls[0][0];
expect(axios.get.mock.calls[0][1].params).toEqual({
filter,
supplierFk: 2,
});
expect(routerPush.path).toEqual('mockName/');
expect(routerPush.query.params).toBeDefined();
});
it('should return one record', async () => {
vi.spyOn(axios, 'get').mockReturnValueOnce({
it('should return one record when oneRecord is true', async () => {
vi.spyOn(axios, 'get').mockResolvedValueOnce({
data: [
{ id: 1, name: 'Entity 1' },
{ id: 2, name: 'Entity 2' },
],
});
const arrayData = useArrayData('ArrayData', { url: 'mockUrl', oneRecord: true });
const arrayData = useArrayData('ArrayData', {
url: 'mockUrl',
oneRecord: true,
});
await arrayData.fetch({});
expect(arrayData.store.data).toEqual({ id: 1, name: 'Entity 1' });
});
it('should handle empty data gracefully if has to return one record', async () => {
vi.spyOn(axios, 'get').mockReturnValueOnce({ data: [] });
const arrayData = useArrayData('ArrayData', { url: 'mockUrl', oneRecord: true });
await arrayData.fetch({});
expect(arrayData.store.data).toBeUndefined();
expect(arrayData.store.data).toEqual({
id: 1,
name: 'Entity 1',
});
});
});

View File

@ -1,5 +1,6 @@
import { vi, describe, expect, it } from 'vitest';
import { axios, flushPromises } from 'app/test/vitest/helper';
import axios from 'axios';
import { flushPromises } from '@vue/test-utils';
import { useRole } from 'composables/useRole';
const role = useRole();
@ -23,18 +24,19 @@ describe('useRole', () => {
name: `T'Challa`,
nickname: 'Black Panther',
lang: 'en',
worker: { department: { departmentFk: 155 } },
};
const expectedUser = {
id: 999,
name: `T'Challa`,
nickname: 'Black Panther',
lang: 'en',
departmentFk: 155,
};
const expectedRoles = ['salesPerson', 'admin'];
vi.spyOn(axios, 'get')
.mockResolvedValueOnce({
vi.spyOn(axios, 'get').mockResolvedValueOnce({
data: { roles: rolesData, user: fetchedUser },
})
});
vi.spyOn(role.state, 'setUser');
vi.spyOn(role.state, 'setRoles');

View File

@ -1,5 +1,5 @@
import { vi, describe, expect, it, beforeAll, beforeEach } from 'vitest';
import { axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { useSession } from 'composables/useSession';
import { useState } from 'composables/useState';
@ -75,6 +75,7 @@ describe('session', () => {
userConfig: {
darkMode: false,
},
worker: { department: { departmentFk: 155 } },
};
const rolesData = [
{
@ -143,7 +144,7 @@ describe('session', () => {
await session.destroy(); // this clears token and user for any other test
});
},
{}
{},
);
describe('RenewToken', () => {
@ -175,7 +176,7 @@ describe('session', () => {
await session.checkValidity();
expect(sessionStorage.getItem('token')).toEqual(expectedToken);
expect(sessionStorage.getItem('tokenMultimedia')).toEqual(
expectedTokenMultimedia
expectedTokenMultimedia,
);
});
it('Should renewToken', async () => {
@ -204,7 +205,7 @@ describe('session', () => {
await session.checkValidity();
expect(sessionStorage.getItem('token')).not.toEqual(expectedToken);
expect(sessionStorage.getItem('tokenMultimedia')).not.toEqual(
expectedTokenMultimedia
expectedTokenMultimedia,
);
});
});

View File

@ -1,5 +1,6 @@
import { vi, describe, expect, it } from 'vitest';
import { axios, flushPromises } from 'app/test/vitest/helper';
import axios from 'axios';
import { flushPromises } from '@vue/test-utils';
import { useTokenConfig } from 'composables/useTokenConfig';
const tokenConfig = useTokenConfig();

View File

@ -30,9 +30,16 @@ export function useAcl() {
return false;
}
function hasAcl(model, prop, accessType) {
const modelAcl = state.getAcls().value[model];
const propAcl = modelAcl?.[prop] || modelAcl?.['*'];
return !!(propAcl?.[accessType] || propAcl?.['*']);
}
return {
fetch,
hasAny,
state,
hasAcl,
};
}

View File

@ -5,12 +5,11 @@ import { useArrayDataStore } from 'stores/useArrayDataStore';
import { buildFilter } from 'filters/filterPanel';
import { isDialogOpened } from 'src/filters';
const arrayDataStore = useArrayDataStore();
export function useArrayData(key, userOptions) {
key ??= useRoute().meta.moduleName;
if (!key) throw new Error('ArrayData: A key is required to use this composable');
const arrayDataStore = useArrayDataStore(); // Move inside function
if (!arrayDataStore.get(key)) arrayDataStore.set(key);
@ -56,7 +55,6 @@ export function useArrayData(key, userOptions) {
'searchUrl',
'navigate',
'mapKey',
'keepData',
'oneRecord',
];
if (typeof userOptions === 'object') {
@ -108,7 +106,7 @@ export function useArrayData(key, userOptions) {
store.hasMoreData = limit && response.data.length >= limit;
if (!append && !isDialogOpened() && updateRouter) {
if (updateStateParams(response.data)?.redirect && !store.keepData) return;
if (updateStateParams(response.data)?.redirect) return;
}
store.isLoading = false;
canceller = null;

View File

@ -13,6 +13,7 @@ export function useRole() {
name: data.user.name,
nickname: data.user.nickname,
lang: data.user.lang || 'es',
departmentFk: data.user?.worker?.department?.departmentFk,
};
state.setUser(userData);
state.setRoles(roles);

View File

@ -60,7 +60,7 @@ export function useSession() {
const { data: isValidToken } = await axios.get('VnUsers/validateToken');
if (isValidToken)
destroyTokenPromises = Object.entries(tokens).map(([key, url]) =>
destroyToken(url, storage, key)
destroyToken(url, storage, key),
);
}
} finally {

View File

@ -78,7 +78,8 @@ export function useValidator() {
if (min >= 0)
if (Math.floor(value) < min) return t('inputMin', { value: min });
},
custom: (value) => validation.bindedFunction(value) || 'Invalid value',
custom: (value) =>
eval(`(${validation.bindedFunction})`)(value) || 'Invalid value',
};
};

View File

@ -340,3 +340,6 @@ input::-webkit-inner-spin-button {
.containerShrinked {
width: 70%;
}
.q-item__section--main ~ .q-item__section--side {
padding-inline: 0;
}

View File

@ -100,12 +100,8 @@ const onChangePass = (oldPass) => {
};
onMounted(() => {
hasitManagementAccess.value = useAcl().hasAny([
{ model: 'VnUser', props: 'higherPrivileges', accessType: 'WRITE' },
]);
hasSysadminAccess.value = useAcl().hasAny([
{ model: 'VnUser', props: 'adminUser', accessType: 'WRITE' },
]);
hasitManagementAccess.value = useAcl().hasAcl('VnUser', 'higherPrivileges', 'WRITE');
hasSysadminAccess.value = useAcl().hasAcl('VnUser', 'adminUser', 'WRITE');
});
</script>
<template>
@ -227,7 +223,7 @@ onMounted(() => {
<QItemSection>{{ t('account.card.actions.deactivateUser.name') }}</QItemSection>
</QItem>
<QItem
v-if="useAcl().hasAny([{ model: 'VnRole', props: '*', accessType: 'WRITE' }])"
v-if="useAcl().hasAcl('VnRole', '*', 'WRITE')"
v-ripple
clickable
@click="showSyncDialog = true"

View File

@ -6,7 +6,7 @@ import AccountSummary from './AccountSummary.vue';
<QPopupProxy style="max-width: 10px">
<AccountDescriptor
v-if="$attrs.id"
v-bind="$attrs.id"
v-bind="$attrs"
:summary="AccountSummary"
:proxy-render="true"
/>

View File

@ -88,13 +88,13 @@ const columns = [
auto-load
>
<template #column-itemFk="{ row }">
<span class="link">
<span class="link" @click.stop>
{{ row.itemFk }}
<ItemDescriptorProxy :id="row.itemFk" />
</span>
</template>
<template #column-ticketFk="{ row }">
<span class="link">
<span class="link" @click.stop>
{{ row.ticketFk }}
<TicketDescriptorProxy :id="row.ticketFk" />
</span>

View File

@ -1,5 +1,6 @@
import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import ClaimDescriptorMenu from 'pages/Claim/Card/ClaimDescriptorMenu.vue';
describe('ClaimDescriptorMenu', () => {

View File

@ -1,5 +1,6 @@
import { vi, describe, expect, it, beforeAll, beforeEach, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import ClaimLines from '/src/pages/Claim/Card/ClaimLines.vue';
describe('ClaimLines', () => {

View File

@ -1,5 +1,6 @@
import { vi, describe, expect, it, beforeAll, beforeEach, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import ClaimLinesImport from 'pages/Claim/Card/ClaimLinesImport.vue';
describe('ClaimLinesImport', () => {

View File

@ -1,7 +1,7 @@
import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import ClaimPhoto from 'pages/Claim/Card/ClaimPhoto.vue';
describe('ClaimPhoto', () => {
let vm;
@ -61,7 +61,7 @@ describe('ClaimPhoto', () => {
title: 'This file will be deleted',
icon: 'delete',
data: { index: 1 },
promise: vm.deleteDms
promise: vm.deleteDms,
},
})
);

View File

@ -115,6 +115,7 @@ const props = defineProps({
<i18n>
en:
params:
departmentFk: Department
search: Contains
clientFk: Customer
clientName: Customer
@ -127,6 +128,7 @@ en:
zoneFk: Zone
es:
params:
departmentFk: Departamento
search: Contiene
clientFk: Cliente
clientName: Cliente

View File

@ -25,7 +25,7 @@ import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.v
const { openConfirmationModal } = useVnConfirm();
const { sendEmail, openReport } = usePrintService();
const { t } = useI18n();
const { hasAny } = useAcl();
const { hasAcl } = useAcl();
const quasar = useQuasar();
const route = useRoute();
@ -276,9 +276,7 @@ const showBalancePdf = ({ id }) => {
>
<VnInput
v-model="scope.value"
:disable="
!hasAny([{ model: 'Receipt', props: '*', accessType: 'WRITE' }])
"
:disable="!hasAcl('Receipt', '*', 'WRITE')"
@keypress.enter="scope.set"
autofocus
/>

View File

@ -79,7 +79,7 @@ async function acceptPropagate({ isEqualizated }) {
observe-form-changes
@on-data-saved="checkEtChanges"
>
<template #form="{ data, validate }">
<template #form="{ data, validate, validations }">
<VnRow>
<VnInput
:label="t('Social name')"
@ -112,6 +112,7 @@ async function acceptPropagate({ isEqualizated }) {
v-model="data.sageTaxTypeFk"
data-cy="sageTaxTypeFk"
:required="data.isTaxDataChecked"
:rules="[(val) => validations.required(data.isTaxDataChecked, val)]"
/>
<VnSelect
:label="t('Sage transaction type')"
@ -122,6 +123,9 @@ async function acceptPropagate({ isEqualizated }) {
data-cy="sageTransactionTypeFk"
v-model="data.sageTransactionTypeFk"
:required="data.isTaxDataChecked"
:rules="[
(val) => validations.required(data.sageTransactionTypeFk, val),
]"
>
<template #option="scope">
<QItem v-bind="scope.itemProps">

View File

@ -84,29 +84,31 @@ const sumRisk = ({ clientRisks }) => {
<VnLv :label="t('customer.summary.customerId')" :value="entity.id" />
<VnLv :label="t('globals.name')" :value="entity.name" />
<VnLv :label="t('customer.summary.contact')" :value="entity.contact" />
<VnLv :value="entity.phone">
<template #label>
{{ t('customer.extendedList.tableVisibleColumns.phone') }}
<VnLv :label="t('customer.extendedList.tableVisibleColumns.phone')">
<template #value>
<VnLinkPhone :phone-number="entity.phone" />
</template>
</VnLv>
<VnLv :value="entity.mobile">
<template #label>
{{ t('customer.summary.mobile') }}
<VnLinkPhone :phone-number="entity.mobile" />
<VnLv :label="t('customer.summary.mobile')">
<template #value>
<VnLinkPhone
sip
say-simple
:phone-number="entity.mobile"
:channel="entity.country?.saySimpleCountry?.channel"
class="q-ml-xs"
/>
</template>
</VnLv>
<VnLv :value="entity.email" copy
><template #label>
{{ t('globals.params.email') }}
<VnLinkMail email="entity.email"></VnLinkMail> </template
></VnLv>
<VnLv
:label="t('globals.params.email')"
:value="entity.email"
class="ellipsis"
copy
>
<template #value>
<VnLinkMail :email="entity.email" />
</template>
</VnLv>
<VnLv :label="t('globals.department')">
<template #value>
<span class="link" v-text="entity.department?.name" />
@ -179,7 +181,7 @@ const sumRisk = ({ clientRisks }) => {
<QCard class="vn-one">
<VnTitle
:url="`#/customer/${entityId}/billing-data`"
:text="t('customer.summary.billingData')"
:text="t('customer.summary.payMethodFk')"
/>
<VnLv
:label="t('customer.summary.payMethod')"

View File

@ -72,6 +72,7 @@ const exprBuilder = (param, value) => {
option-value="id"
option-label="name"
url="Departments"
no-one="true"
/>
</QItemSection>
</QItem>
@ -154,6 +155,7 @@ en:
city: City
phone: Phone
email: Email
departmentFk: Department
isToBeMailed: Mailed
isEqualizated: Equailized
businessTypeFk: Business type
@ -166,6 +168,7 @@ en:
postcode: Postcode
es:
params:
departmentFk: Departamento
search: Contiene
fi: NIF
isActive: Activo

View File

@ -192,8 +192,10 @@ en:
date: L. O. Date
credit: Credit I.
defaulterSinced: From
departmentFk: Department
es:
params:
departmentFk: Departamento
clientFk: Cliente
countryFk: País
paymentMethod: F. Pago

View File

@ -127,6 +127,7 @@ es:
Identifier: Identificador
Social name: Razón social
Phone: Teléfono
Postcode: Código postal
City: Población
Email: Email
Campaign consumption: Consumo campaña

View File

@ -1,5 +1,6 @@
import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import CustomerPayments from 'src/pages/Customer/Payments/CustomerPayments.vue';
describe('CustomerPayments', () => {

View File

@ -93,10 +93,26 @@ const updateAddressTicket = async () => {
};
const updateObservations = async (payload) => {
await axios.post('AddressObservations/crud', payload);
await axios.post('AddressObservations/crud', cleanPayload(payload));
notes.value = [];
deletes.value = [];
};
function cleanPayload(payload) {
['creates', 'deletes', 'updates'].forEach((prop) => {
if (prop === 'creates' || prop === 'updates') {
payload[prop] = payload[prop].filter(
(item) => item.description !== '' && item.observationTypeFk !== '',
);
} else {
payload[prop] = payload[prop].filter(
(item) => item !== null && item !== undefined,
);
}
});
return payload;
}
async function updateAll({ data, payload }) {
await updateObservations(payload);
await updateAddress(data);

View File

@ -191,7 +191,7 @@ const getItemPackagingType = (ticketSales) => {
:without-header="true"
auto-load
:row-click="rowClick"
order="shipped DESC, id"
order="shipped DESC, id DESC"
:disable-option="{ card: true, table: true }"
class="full-width"
:disable-infinite-scroll="true"

View File

@ -787,7 +787,7 @@ onMounted(() => {
<span data-cy="footer-amount">{{ footer?.amount }} / </span>
<span style="color: var(--q-positive)">{{ footer?.checkedAmount }}</span>
</template>
<template #column-create-itemFk="{ data }">
<template #column-create-itemFk="{ data, validations }">
<VnSelect
url="Items/search"
v-model="data.itemFk"
@ -801,7 +801,8 @@ onMounted(() => {
await setBuyUltimate(value, data);
}
"
:required="true"
required
:rules="[(val) => validations.required(true, val)]"
data-cy="itemFk-create-popup"
sort-by="nickname DESC"
>

View File

@ -70,8 +70,8 @@ onMounted(async () => {
:url="`#/entry/${entityId}/basic-data`"
:text="t('globals.summary.basicData')"
/>
<div class="card-group">
<div class="card-content">
<div class="vn-card-group">
<div class="vn-card-content">
<VnLv
:label="t('entry.summary.commission')"
:value="entry?.commission"
@ -93,7 +93,7 @@ onMounted(async () => {
:value="entry?.invoiceNumber"
/>
</div>
<div class="card-content">
<div class="vn-card-content">
<VnCheckbox
:label="t('entry.list.tableVisibleColumns.isOrdered')"
v-model="entry.isOrdered"
@ -130,8 +130,8 @@ onMounted(async () => {
:url="`#/travel/${entry.travel.id}/summary`"
:text="t('Travel')"
/>
<div class="card-group">
<div class="card-content">
<div class="vn-card-group">
<div class="vn-card-content">
<VnLv :label="t('entry.summary.travelReference')">
<template #value>
<span class="link">
@ -161,7 +161,7 @@ onMounted(async () => {
:value="entry.travel.warehouseIn?.name"
/>
</div>
<div class="card-content">
<div class="vn-card-content">
<VnLv :label="t('travel.awbFk')" :value="entry.travel.awbFk" />
<VnCheckbox
:label="t('entry.summary.travelDelivered')"
@ -193,31 +193,6 @@ onMounted(async () => {
</template>
</CardSummary>
</template>
<style lang="scss" scoped>
.card-group {
display: flex;
flex-direction: column;
}
.card-content {
display: flex;
flex-direction: column;
text-overflow: ellipsis;
> div {
max-height: 24px;
}
}
@media (min-width: 1010px) {
.card-group {
flex-direction: row;
}
.card-content {
flex: 1;
margin-right: 16px;
}
}
</style>
<i18n>
es:
Travel: Envío

View File

@ -22,7 +22,7 @@ const routes = reactive({
getSupplier: (id) => {
return { name: 'SupplierCard', params: { id } };
},
getTickets: (id) => {
getInvoices: (id) => {
return {
name: 'InvoiceInList',
query: {
@ -131,11 +131,11 @@ async function setInvoiceCorrection(id) {
</QBtn>
<QBtn
size="md"
icon="vn:ticket"
icon="vn:invoice-in"
color="primary"
:to="routes.getTickets(entity.supplierFk)"
:to="routes.getInvoices(entity.supplierFk)"
>
<QTooltip>{{ t('globals.ticketList') }}</QTooltip>
<QTooltip>{{ t('invoiceIn.descriptor.invoices') }}</QTooltip>
</QBtn>
<QBtn
v-if="

View File

@ -15,6 +15,7 @@ invoiceIn:
amount: Amount
descriptor:
ticketList: Ticket list
invoices: Supplier invoices
descriptorMenu:
book: Book
unbook: Unbook

View File

@ -14,7 +14,7 @@ invoiceIn:
awb: AWB
amount: Importe
descriptor:
ticketList: Listado de tickets
invoices: Facturas de proveedor
descriptorMenu:
book: Contabilizar
unbook: Descontabilizar

View File

@ -79,6 +79,30 @@ const columns = computed(() => [
inWhere: true,
},
},
{
align: 'left',
name: 'issued',
label: t('invoiceOut.summary.issued'),
component: 'date',
format: (row) => toDate(row.issued),
columnField: { component: null },
},
{
align: 'left',
name: 'created',
label: t('globals.created'),
component: 'date',
columnField: { component: null },
format: (row) => toDate(row.created),
},
{
align: 'left',
name: 'dued',
label: t('invoiceOut.summary.expirationDate'),
component: 'date',
columnField: { component: null },
format: (row) => toDate(row.dued),
},
{
align: 'left',
name: 'clientFk',
@ -132,22 +156,6 @@ const columns = computed(() => [
cardVisible: true,
format: (row) => toCurrency(row.amount),
},
{
align: 'left',
name: 'created',
label: t('globals.created'),
component: 'date',
columnField: { component: null },
format: (row) => toDate(row.created),
},
{
align: 'left',
name: 'dued',
label: t('invoiceOut.summary.dued'),
component: 'date',
columnField: { component: null },
format: (row) => toDate(row.dued),
},
{
align: 'left',
name: 'customsAgentFk',

View File

@ -22,7 +22,7 @@ const $props = defineProps({
});
</script>
<template>
<QPopupProxy style="max-width: 10px">
<QPopupProxy style="max-width: 10px" data-cy="ItemDescriptor">
<ItemDescriptor
v-if="$props.id"
:id="$props.id"

View File

@ -7,7 +7,7 @@ import FetchData from 'components/FetchData.vue';
import VnFilterPanel from 'src/components/ui/VnFilterPanel.vue';
import VnSelect from 'src/components/common/VnSelect.vue';
import VnInput from 'src/components/common/VnInput.vue';
import { QCheckbox } from 'quasar';
import VnCheckbox from 'src/components/common/VnCheckbox.vue';
import { useArrayData } from 'composables/useArrayData';
import { useValidator } from 'src/composables/useValidator';
@ -250,10 +250,9 @@ onMounted(async () => {
</QItemSection>
</QItem>
<!-- Tags filter -->
<QItem class="row items-center">
<QItemLabel>
{{ t('params.tags') }}
</QItemLabel>
<QItemLabel header>
{{ t('params.tags') }}
<QIcon
name="add_circle"
class="fill-icon-on-hover q-ml-md"
@ -261,7 +260,7 @@ onMounted(async () => {
color="primary"
@click="tagValues.push({})"
/>
</QItem>
</QItemLabel>
<QItem
v-for="(tag, index) in tagValues"
:key="index"
@ -269,6 +268,7 @@ onMounted(async () => {
>
<QItemSection class="col">
<VnSelect
class="full-width"
:label="t('params.tag')"
v-model="tag.selectedTag"
:options="tagOptions"
@ -316,25 +316,19 @@ onMounted(async () => {
/>
</QItem>
<!-- Filter fields -->
<QItem class="row items-center">
<QItemLabel>
{{ t('More fields') }}
</QItemLabel>
<QItemLabel header
>{{ t('More fields') }}
<QIcon
name="add_circle"
class="fill-icon-on-hover q-ml-md"
size="sm"
color="primary"
@click="fieldFiltersValues.push({})"
/>
</QItem>
<QItem
v-for="(fieldFilter, index) in fieldFiltersValues"
:key="index"
class="row items-center"
>
/></QItemLabel>
<QItem v-for="(fieldFilter, index) in fieldFiltersValues" :key="index">
<QItemSection class="col">
<VnSelect
class="full-width"
:label="t('params.tag')"
:model-value="fieldFilter.selectedField"
:options="moreFields"
@ -355,7 +349,7 @@ onMounted(async () => {
/>
</QItemSection>
<QItemSection class="col">
<QCheckbox
<VnCheckbox
v-if="fieldFilter.selectedField?.type === 'boolean'"
v-model="fieldFilter.value"
:label="t('params.value')"
@ -370,13 +364,14 @@ onMounted(async () => {
@keydown.enter="applyFieldFilters(params, searchFn)"
/>
</QItemSection>
<QIcon
name="delete"
class="fill-icon-on-hover q-ml-xs"
size="sm"
color="primary"
@click="removeFieldFilter(index, params, searchFn)"
/>
<QItemSection side
><QIcon
name="delete"
class="fill-icon-on-hover q-ml-xs"
size="sm"
color="primary"
@click="removeFieldFilter(index, params, searchFn)"
/></QItemSection>
</QItem>
<QItem>
<QItemSection>

View File

@ -1,6 +1,7 @@
import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import { createWrapper } from 'app/test/vitest/helper';
import Login from 'pages/Login/LoginMain.vue';
import axios from 'axios';
describe('Login', () => {
let vm;

View File

@ -9,12 +9,14 @@ import VnInputDate from 'src/components/common/VnInputDate.vue';
import VnRow from 'src/components/ui/VnRow.vue';
import { dateRange } from 'src/filters';
import useOpenURL from 'src/composables/useOpenURL';
import { useState } from 'src/composables/useState';
const { t } = useI18n();
const dates = dateRange(Date.vnNew());
const from = ref(dates[0]);
const to = ref(dates[1]);
const state = useState();
const filter = computed(() => {
const obj = {};
const formatFrom = setHours(from.value, 'from');
@ -24,16 +26,18 @@ const filter = computed(() => {
if (!formatFrom && formatTo) stamp = { lte: formatTo };
else if (formatFrom && !formatTo) stamp = { gte: formatFrom };
else if (formatFrom && formatTo) stamp = { between: [formatFrom, formatTo] };
return Object.assign(obj, { where: { 'v.stamp': stamp } });
return Object.assign(obj, {
where: {
'v.stamp': stamp,
'c.departmentFk': state.getUser().value.departmentFk,
},
});
});
function exprBuilder(param, value) {
switch (param) {
case 'clientFk':
return { [`c.id`]: value };
case 'departmentFk':
return { [`c.${param}`]: value };
}
}
@ -66,9 +70,13 @@ const columns = computed(() => [
align: 'left',
name: 'departmentFk',
label: t('customer.summary.team'),
component: 'select',
attrs: {
url: 'Departments',
columnFilter: {
component: 'select',
attrs: {
url: 'Departments',
},
alias: 'c',
inWhere: true,
},
columnField: {
component: null,

View File

@ -198,7 +198,7 @@ const getLocale = (label) => {
<QItemSection>
<VnSelect
dense
rounded
filled
:label="t('globals.params.packing')"
v-model="params.packing"
url="ItemPackingTypes"

View File

@ -130,8 +130,10 @@ en:
myTeam: My Team
isConfirmed: Order Confirmed
showEmpty: Show Empty
departmentFk: Department
es:
params:
departmentFk: Departamento
search: Búsqueda
clientFk: Cliente
agencyModeFk: Agencia

View File

@ -3,5 +3,5 @@ import AgencyDescriptor from 'pages/Route/Agency/Card/AgencyDescriptor.vue';
import VnCard from 'src/components/common/VnCard.vue';
</script>
<template>
<VnCard data-key="Agency" url="Agencies" :descriptor="AgencyDescriptor" />
<VnCard data-key="Agency" url="Agencies" :descriptor="AgencyDescriptor" :filter="{ where: { id: $route.params.id } }" />
</template>

View File

@ -112,12 +112,9 @@ const filter = {
:label="t('Trailer Plate')"
:value="dashIfEmpty(entity?.trailerPlate)"
/>
<VnLv :label="t('Phone')" :value="dashIfEmpty(entity?.phone)">
<VnLv :label="t('Phone')">
<template #value>
<span>
{{ dashIfEmpty(entity?.phone) }}
<VnLinkPhone :phone-number="entity?.phone" />
</span>
<VnLinkPhone :phone-number="entity?.phone" />
</template>
</VnLv>
<VnLv

View File

@ -46,7 +46,6 @@ const columns = computed(() => [
},
isId: true,
columnFilter: false,
width: '25px',
},
{
name: 'workerFk',
@ -142,7 +141,6 @@ const columns = computed(() => [
label: 'm3',
cardVisible: true,
columnClass: 'shrink',
width: '50px',
},
{
name: 'started',
@ -150,7 +148,6 @@ const columns = computed(() => [
component: 'time',
columnFilter: false,
format: ({ started }) => toHour(started),
width: '50px',
},
{
name: 'finished',
@ -158,7 +155,6 @@ const columns = computed(() => [
component: 'time',
columnFilter: false,
format: ({ finished }) => toHour(finished),
width: '50px',
},
{
align: 'right',

View File

@ -46,7 +46,6 @@ const columns = computed(() => [
condition: () => true,
},
columnFilter: false,
width: '25px',
},
{
align: 'left',
@ -57,7 +56,6 @@ const columns = computed(() => [
cardVisible: true,
format: (row, dashIfEmpty) => dashIfEmpty(row.travelRef),
columnFilter: false,
width: '100px',
},
{
label: t('globals.agency'),
@ -100,7 +98,6 @@ const columns = computed(() => [
cardVisible: true,
columnFilter: false,
format: ({ started }) => toHour(started),
width: '50px',
},
{
align: 'center',
@ -109,7 +106,6 @@ const columns = computed(() => [
cardVisible: true,
columnFilter: false,
format: ({ finished }) => toHour(finished),
width: '50px',
},
{
align: 'left',

View File

@ -50,7 +50,7 @@ route:
agencyAgreement: Agency agreement
agencyModeName: Agency route
isOwn: Own
isAnyVolumeallowed: Any volume allowed
isAnyVolumeAllowed: Any volume allowed
Worker: Worker
Agency: Agency
Vehicle: Vehicle

View File

@ -106,7 +106,7 @@ const getEntryQueryParams = (supplier) => {
<QBtn
:to="{
name: 'EntryList',
query: { params: JSON.stringify(getEntryQueryParams(entity)) },
query: { table: JSON.stringify(getEntryQueryParams(entity)) },
}"
size="md"
icon="vn:entry"

View File

@ -91,7 +91,7 @@ const totalPrice = computed(() => {
const totalNewPrice = computed(() => {
return rows.value.reduce(
(acc, item) => acc + item.component.newPrice * item.quantity,
0
0,
);
});
@ -210,18 +210,18 @@ onMounted(async () => {
flat
>
<template #body-cell-item="{ row }">
<QTd @click.stop class="link">
<QBtn flat>
<QTd align="center">
<span @click.stop class="link">
{{ row.itemFk }}
<ItemDescriptorProxy :id="row.itemFk" />
</QBtn>
</span>
</QTd>
</template>
<template #body-cell-description="{ row }">
<QTd style="min-width: 120px; max-width: 120px">
<div class="column q-pb-xs" style="min-width: 120px">
<span>{{ row.item.name }}</span>
<FetchedTags :item="row.item" class="full-width" />
<FetchedTags :item="row.item" class="full-width" :columns="6" />
</div>
</QTd>
</template>

View File

@ -25,9 +25,7 @@ const { validate } = useValidator();
const { notify } = useNotify();
const router = useRouter();
const { t } = useI18n();
const canEditZone = useAcl().hasAny([
{ model: 'Ticket', props: 'editZone', accessType: 'WRITE' },
]);
const canEditZone = useAcl().hasAcl('Ticket', 'editZone', 'WRITE');
const agencyFetchRef = ref();
const warehousesOptions = ref([]);

View File

@ -1,59 +0,0 @@
<script setup>
import { ref } from 'vue';
import { useRoute } from 'vue-router';
import { useI18n } from 'vue-i18n';
import FormModelPopup from 'components/FormModelPopup.vue';
import VnRow from 'components/ui/VnRow.vue';
import VnSelect from 'src/components/common/VnSelect.vue';
import FetchData from 'components/FetchData.vue';
import { useState } from 'src/composables/useState';
import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
const emit = defineEmits(['onRequestCreated']);
const route = useRoute();
const { t } = useI18n();
const state = useState();
const user = state.getUser();
const stateFetchDataRef = ref(null);
const statesOptions = ref([]);
const onStateFkChange = (formData) => (formData.userFk = user.value.id);
</script>
<template>
<FetchData
ref="stateFetchDataRef"
url="States"
auto-load
@on-fetch="(data) => (statesOptions = data)"
/>
<FormModelPopup
:title="t('Create tracking')"
url-create="Tickets/state"
model="CreateTicketTracking"
:form-initial-data="{ ticketFk: route.params.id }"
@on-data-saved="() => emit('onRequestCreated')"
>
<template #form-inputs="{ data }">
<VnRow>
<VnSelect
v-model="data.stateFk"
:label="t('ticketList.state')"
:options="statesOptions"
@update:model-value="onStateFkChange(data)"
hide-selected
option-label="name"
option-value="id"
/>
<VnSelectWorker v-model="data.userFk" :fields="['id', 'name']" />
</VnRow>
</template>
</FormModelPopup>
</template>
<i18n>
es:
Create tracking: Crear estado
</i18n>

View File

@ -1,5 +1,5 @@
<script setup>
import { onMounted, ref, computed, watch } from 'vue';
import { onMounted, ref, computed, watch, inject } from 'vue';
import { useI18n } from 'vue-i18n';
import { useRouter, useRoute } from 'vue-router';
import { useQuasar } from 'quasar';
@ -25,7 +25,7 @@ import VnTable from 'src/components/VnTable/VnTable.vue';
import VnConfirm from 'src/components/ui/VnConfirm.vue';
import TicketProblems from 'src/components/TicketProblems.vue';
import RightMenu from 'src/components/common/RightMenu.vue';
const app = inject('app');
const route = useRoute();
const router = useRouter();
const { t } = useI18n();
@ -99,6 +99,7 @@ const columns = computed(() => [
align: 'left',
label: t('globals.quantity'),
name: 'quantity',
class: 'shrink',
format: (row) => toCurrency(row.quantity),
},
{
@ -187,20 +188,26 @@ const getRowUpdateInputEvents = (sale) => {
const resetChanges = async () => {
arrayData.fetch({ append: false });
tableRef.value.reload();
tableRef.value.CrudModelRef.hasChanges = false;
await tableRef.value.reload();
selectedRows.value = [];
};
const changeQuantity = async (sale) => {
if (!sale.itemFk || sale.quantity == null || sale?.originalQuantity === sale.quantity)
return;
else sale.originalQuantity = sale.quantity;
if (!sale.id) return addSale(sale);
try {
if (!sale.id) await addSale(sale);
} catch (e) {
app.config.errorHandler(e);
return;
}
if (await isSalePrepared(sale)) {
await confirmUpdate(() => updateQuantity(sale));
} else await updateQuantity(sale);
};
const updateQuantity = async (sale) => {
try {
let { quantity, id } = sale;
@ -213,7 +220,7 @@ const updateQuantity = async (sale) => {
(s) => s.id === sale.id,
);
sale.quantity = quantity;
throw e;
app.config.errorHandler(e);
}
};
@ -222,24 +229,27 @@ const addSale = async (sale) => {
barcode: sale.itemFk,
quantity: sale.quantity,
};
try {
const { data } = await axios.post(`tickets/${route.params.id}/addSale`, params);
const { data } = await axios.post(`tickets/${route.params.id}/addSale`, params);
if (!data) return;
if (!data) return;
const newSale = data;
sale.id = newSale.id;
sale.image = newSale.item.image;
sale.subName = newSale.item.subName;
sale.concept = newSale.concept;
sale.quantity = newSale.quantity;
sale.discount = newSale.discount;
sale.price = newSale.price;
sale.item = newSale.item;
const newSale = data;
sale.id = newSale.id;
sale.image = newSale.item.image;
sale.subName = newSale.item.subName;
sale.concept = newSale.concept;
sale.quantity = newSale.quantity;
sale.discount = newSale.discount;
sale.price = newSale.price;
sale.item = newSale.item;
notify('globals.dataSaved', 'positive');
sale.isNew = false;
resetChanges();
notify('globals.dataSaved', 'positive');
sale.isNew = false;
resetChanges();
} catch (e) {
app.config.errorHandler(e);
}
};
const changeConcept = async (sale) => {
if (await isSalePrepared(sale)) {
@ -248,10 +258,14 @@ const changeConcept = async (sale) => {
};
const updateConcept = async (sale) => {
const data = { newConcept: sale.concept };
await axios.post(`Sales/${sale.id}/updateConcept`, data);
notify('globals.dataSaved', 'positive');
resetChanges();
try {
const data = { newConcept: sale.concept };
await axios.post(`Sales/${sale.id}/updateConcept`, data);
notify('globals.dataSaved', 'positive');
resetChanges();
} catch (e) {
app.config.errorHandler(e);
}
};
const DEFAULT_EDIT = {
@ -262,18 +276,6 @@ const DEFAULT_EDIT = {
oldQuantity: null,
};
const edit = ref({ ...DEFAULT_EDIT });
const usesMana = ref(null);
const getUsesMana = async () => {
const { data } = await axios.get('Sales/usesMana');
usesMana.value = data;
};
const getMana = async () => {
const { data } = await axios.get(`Tickets/${route.params.id}/getDepartmentMana`);
mana.value = data;
await getUsesMana();
};
const selectedValidSales = computed(() => {
if (!sales.value) return;
@ -310,11 +312,15 @@ const changePrice = async (sale) => {
}
};
const updatePrice = async (sale, newPrice) => {
await axios.post(`Sales/${sale.id}/updatePrice`, { newPrice });
sale.price = newPrice;
edit.value = { ...DEFAULT_EDIT };
notify('globals.dataSaved', 'positive');
resetChanges();
try {
await axios.post(`Sales/${sale.id}/updatePrice`, { newPrice });
sale.price = newPrice;
edit.value = { ...DEFAULT_EDIT };
notify('globals.dataSaved', 'positive');
resetChanges();
} catch (e) {
app.config.errorHandler(e);
}
};
const changeDiscount = async (sale) => {
@ -337,15 +343,20 @@ const updateDiscounts = async (sales, newDiscount) => {
};
const updateDiscount = async (sales, newDiscount = 0) => {
const salesIds = sales.map(({ id }) => id);
const params = {
salesIds,
newDiscount,
manaCode: manaCode.value,
};
await axios.post(`Tickets/${route.params.id}/updateDiscount`, params);
notify('globals.dataSaved', 'positive');
resetChanges();
try {
const salesIds = sales.map(({ id }) => id);
const params = {
salesIds,
newDiscount,
manaCode: manaCode.value,
};
await axios.post(`Tickets/${route.params.id}/updateDiscount`, params);
notify('globals.dataSaved', 'positive');
resetChanges();
} catch (e) {
app.config.errorHandler(e);
return;
}
};
const getNewPrice = computed(() => {
@ -367,11 +378,15 @@ const getNewPrice = computed(() => {
});
const newOrderFromTicket = async () => {
const { data } = await axios.post(`Orders/newFromTicket`, {
ticketFk: Number(route.params.id),
});
const routeData = router.resolve({ name: 'OrderCatalog', params: { id: data } });
window.open(routeData.href, '_blank');
try {
const { data } = await axios.post(`Orders/newFromTicket`, {
ticketFk: Number(route.params.id),
});
const routeData = router.resolve({ name: 'OrderCatalog', params: { id: data } });
window.open(routeData.href, '_blank');
} catch (e) {
app.config.errorHandler(e);
}
};
const goToLog = (saleId) => {
@ -388,11 +403,15 @@ const goToLog = (saleId) => {
};
const changeTicketState = async (val) => {
stateBtnDropdownRef.value.hide();
const params = { ticketFk: route.params.id, code: val };
await axios.post('Tickets/state', params);
notify('globals.dataSaved', 'positive');
await resetChanges();
try {
stateBtnDropdownRef.value.hide();
const params = { ticketFk: route.params.id, code: val };
await axios.post('Tickets/state', params);
notify('globals.dataSaved', 'positive');
resetChanges();
} catch (e) {
app.config.errorHandler(e);
}
};
const removeSelectedSales = () => {
@ -412,10 +431,14 @@ const removeSales = async () => {
.forEach((sale) => tableRef.value.CrudModelRef.formData.splice(sale.$index, 1));
if (params.sales.length == 0) return;
await axios.post('Sales/deleteSales', params);
removeSelectedSales();
notify('globals.dataSaved', 'positive');
resetChanges();
try {
await axios.post('Sales/deleteSales', params);
removeSelectedSales();
notify('globals.dataSaved', 'positive');
resetChanges();
} catch (e) {
app.config.errorHandler(e);
}
};
const setTransferParams = async () => {
@ -769,7 +792,7 @@ watch(
{{ row?.item?.subName.toUpperCase() }}
</div>
</div>
<FetchedTags v-if="row.item" :item="row.item" :max-length="6" />
<FetchedTags v-if="row.item" :item="row.item" :columns="6" :max-length="6" />
<QPopupProxy v-if="row.id && isTicketEditable">
<VnInput
v-model="row.concept"

View File

@ -55,13 +55,12 @@ const isClaimable = computed(() => {
if (ticket.value) {
const landedPlusWeek = new Date(ticket.value.landed);
landedPlusWeek.setDate(landedPlusWeek.getDate() + 7);
const createAfterDeadline = acl.hasAny([
{ model: 'Claim', props: 'createAfterDeadline', accessType: 'WRITE' },
]);
const createAfterDeadline = acl.hasAcl('Claim', 'createAfterDeadline', 'WRITE');
return landedPlusWeek >= Date.vnNew() || createAfterDeadline;
}
return false;
});
const sendSms = async (params) => {
await axios.post(`Tickets/${ticket.value.id}/sendSms`, params);
notify(t('SMS sent'), 'positive');
@ -230,18 +229,6 @@ const createRefund = async (withWarehouse) => {
<QItemLabel>{{ t('Add claim') }}</QItemLabel>
</QItemSection>
</QItem>
<QItem
v-if="isTicketEditable"
clickable
v-close-popup
v-ripple
@click="setReserved(true)"
data-cy="markAsReservedItem"
>
<QItemSection>
<QItemLabel>{{ t('Mark as reserved') }}</QItemLabel>
</QItemSection>
</QItem>
<QItem clickable v-ripple data-cy="ticketSaleRefundItem">
<QItemSection>
<QItemLabel>{{ t('Refund') }}</QItemLabel>
@ -287,8 +274,6 @@ es:
Recalculate price: Recalcular precio
Update discount: Actualizar descuento
Add claim: Crear reclamación
Mark as reserved: Marcar como reservado
Unmark as reserved: Desmarcar como reservado
Refund: Abono
with warehouse: con almacén
without warehouse: sin almacén

View File

@ -1,27 +1,23 @@
<script setup>
import { ref, computed, watch, reactive } from 'vue';
import { ref, reactive, computed } from 'vue';
import { useI18n } from 'vue-i18n';
import { useRoute } from 'vue-router';
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
import TicketCreateTracking from './TicketCreateTracking.vue';
import VnPaginate from 'components/ui/VnPaginate.vue';
import VnSelect from 'src/components/common/VnSelect.vue';
import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
import { useState } from 'src/composables/useState';
import { toDateTimeFormat } from 'src/filters/date.js';
import VnTable from 'src/components/VnTable/VnTable.vue';
const state = useState();
const user = state.getUser();
const route = useRoute();
const { t } = useI18n();
const createTrackingDialogRef = ref(null);
const paginateRef = ref(null);
watch(
() => route.params.id,
async (val) => {
paginateFilter.where.ticketFk = val;
paginateRef.value.fetch();
},
);
const tableRef = ref(null);
const onStateFkChange = (formData) => (formData.userFk = user.value.id);
const paginateFilter = reactive({
include: [
{
@ -56,75 +52,68 @@ const columns = computed(() => [
name: 'state',
field: 'state',
align: 'left',
format: (val) => val.name,
format: (row) => row.state?.name,
},
{
label: t('expedition.worker'),
name: 'worker',
align: 'left',
field: 'user',
},
{
label: t('expedition.created'),
name: 'created',
field: 'created',
align: 'left',
format: (val) => toDateTimeFormat(val),
format: ({ created }) => toDateTimeFormat(created),
},
]);
const openCreateModal = () => createTrackingDialogRef.value.show();
</script>
<template>
<QPage class="column items-center q-pa-md">
<VnPaginate
ref="paginateRef"
data-key="TicketTracking"
:user-filter="paginateFilter"
search-url="table"
url="TicketTrackings"
auto-load
order="created DESC"
:limit="0"
>
<template #body="{ rows }">
<QTable
:rows="rows"
:columns="columns"
row-key="id"
:pagination="{ rowsPerPage: 0 }"
class="full-width q-mt-md"
:no-data-label="t('globals.noResults')"
>
<template #body-cell-worker="{ row }">
<QTd>
<QBtn flat class="link" @click.stop>
{{ row.user?.name }}
<WorkerDescriptorProxy :id="row.user?.worker?.id" />
</QBtn>
</QTd>
</template>
</QTable>
</template>
</VnPaginate>
<QDialog
ref="createTrackingDialogRef"
transition-show="scale"
transition-hide="scale"
>
<TicketCreateTracking @on-request-created="paginateRef.fetch()" />
</QDialog>
<QPageSticky :offset="[20, 20]">
<QBtn
@click="openCreateModal()"
color="primary"
fab
icon="add"
v-shortcut="'+'"
<VnTable
ref="tableRef"
:right-search="false"
:column-search="false"
:disable-option="{ card: true, table: true }"
:search-url="false"
:columns="columns"
data-key="TicketTracking"
:user-filter="paginateFilter"
url="TicketTrackings"
auto-load
order="created DESC"
:limit="0"
:without-header="true"
:create="{
urlCreate: 'Tickets/state',
title: t('Create tracking'),
onDataSaved: () => tableRef.reload(),
formInitialData: {
ticketFk: route.params.id,
},
}"
>
<template #more-create-dialog="{ data }">
<VnSelect
url="States"
v-model="data.stateFk"
:label="t('ticketList.state')"
auto-load
@update:model-value="onStateFkChange(data)"
hide-selected
/>
<QTooltip class="text-no-wrap">
{{ t('tracking.addState') }}
</QTooltip>
</QPageSticky>
</QPage>
<VnSelectWorker v-model="data.userFk" :fields="['id', 'name']" />
</template>
<template #column-worker="{ row }">
<span class="link" @click.stop>
{{ row.user.name }}
<WorkerDescriptorProxy :id="row.user?.worker?.id" />
</span>
</template>
</VnTable>
</template>
<i18n>
es:
Create tracking: Crear estado
</i18n>

View File

@ -134,7 +134,7 @@ onMounted(() => (stateStore.rightDrawer = true));
auto-load
>
<template #column-itemFk="{ row }">
<span class="link">
<span class="link" @click.stop>
{{ row.itemFk }}
<ItemDescriptorProxy :id="row.itemFk" />
</span>

View File

@ -1,5 +1,6 @@
import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import axios from 'axios';
import { createWrapper } from 'app/test/vitest/helper';
import TicketBoxing from 'pages/Ticket/Card/TicketBoxing.vue';
// #4836 - Investigate how to test q-drawer outside
@ -21,7 +22,11 @@ describe('TicketBoxing', () => {
min: 1,
max: 2,
};
const videoList = ['2022-01-01T01-01-00.mp4', '2022-02-02T02-02-00.mp4', '2022-03-03T03-03-00.mp4'];
const videoList = [
'2022-01-01T01-01-00.mp4',
'2022-02-02T02-02-00.mp4',
'2022-03-03T03-03-00.mp4',
];
vi.spyOn(axios, 'get').mockResolvedValue({ data: videoList });
vi.spyOn(vm.quasar, 'notify');
@ -44,7 +49,9 @@ describe('TicketBoxing', () => {
await vm.getVideoList(expeditionId, timed);
expect(vm.quasar.notify).toHaveBeenCalledWith(expect.objectContaining({ type: 'negative' }));
expect(vm.quasar.notify).toHaveBeenCalledWith(
expect.objectContaining({ type: 'negative' })
);
});
});
});

View File

@ -22,16 +22,6 @@ const states = ref([]);
const agencies = ref([]);
const warehouses = ref([]);
const groupedStates = ref([]);
const getGroupedStates = (data) => {
for (const state of data) {
groupedStates.value.push({
id: state.id,
name: t(`${state.code}`),
code: state.code,
});
}
};
</script>
<template>
@ -39,12 +29,11 @@ const getGroupedStates = (data) => {
<FetchData url="States" @on-fetch="(data) => (states = data)" auto-load />
<FetchData
url="AlertLevels"
@on-fetch="
(data) => {
getGroupedStates(data);
}
"
auto-load
@on-fetch="
(data) =>
(groupedStates = data.map((x) => Object.assign(x, { code: t(x.code) })))
"
/>
<FetchData
url="AgencyModes"
@ -126,12 +115,11 @@ const getGroupedStates = (data) => {
</QItemSection>
<QItemSection v-if="groupedStates">
<VnSelect
:label="t('Grouped state')"
:label="t('params.groupedStates')"
v-model="params.groupedStates"
@update:model-value="searchFn()"
:options="groupedStates"
option-value="id"
option-label="name"
option-label="code"
emit-value
map-options
use-input
@ -304,7 +292,7 @@ en:
ON_PREPARATION: On preparation
PACKED: Packed
DELIVERED: Delivered
ON_PREVIOUS: ON_PREVIOUS
ON_PREVIOUS: On previous
es:
params:
search: Contiene
@ -349,7 +337,7 @@ es:
ON_PREPARATION: En preparación
PACKED: Encajado
DELIVERED: Servido
ON_PREVIOUS: ON_PREVIOUS
ON_PREVIOUS: En previa
Collection: Colección
Nickname: Nombre mostrado
</i18n>

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