Compare commits

..

384 Commits

Author SHA1 Message Date
Ivan Mas 074fe5b0ac Merge pull request 'feat: refs #8477 add costPerKg to awb view' (!3409) from 8477-addColumnToAwbView into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3409
Reviewed-by: Robert Ferrús <robert@verdnatura.es>
2025-01-31 11:45:36 +00:00
Ivan Mas 2e4c5fe401 feat: refs #8477 add costPerKg to awb view
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-31 12:10:19 +01:00
Ivan Mas 83228d481d Merge pull request 'feat: refs #8477 add fee column to awb table' (!3400) from 8477-AddFeeToAWB into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3400
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2025-01-31 10:42:43 +00:00
Ivan Mas 3fa74a18de Merge branch 'dev' into 8477-AddFeeToAWB
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-31 10:39:55 +00:00
Ivan Mas 45ccf8da28 Merge pull request 'feat: refs #8312 add flippingCost column to Cubos view' (!3407) from 8312-addColumnCubosView into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3407
Reviewed-by: Robert Ferrús <robert@verdnatura.es>
2025-01-31 10:10:12 +00:00
Ivan Mas fa9b9cc5a3 feat: refs #8312 modify fixtures.before
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-31 11:06:24 +01:00
Ivan Mas 66a08f7641 Merge branch 'dev' into 8312-addColumnCubosView
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-31 09:51:33 +00:00
Jon Elias 923fef444c Merge pull request 'Fix[CustomerList]: fixed country field' (!3406) from CustomerListCountryField into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3406
Reviewed-by: Javier Segarra <jsegarra@verdnatura.es>
2025-01-31 09:33:17 +00:00
Ivan Mas a2258a005a Merge branch 'dev' into 8312-addColumnCubosView
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-31 09:23:32 +00:00
Carlos Satorres 3fede6d586 Merge pull request 'refs #6553 changes models' (!2522) from 6553-workerBusiness into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #2522
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-31 09:19:14 +00:00
Ivan Mas da5e395450 feat: refs #8312 add flippingCost column to Cubos view
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-31 10:17:01 +01:00
Carlos Satorres e1125dc46d Merge branch 'dev' into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-31 09:16:13 +00:00
Jon Elias 53ee0c1617 fix: fixed country field
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-31 09:17:15 +01:00
Ivan Mas 4d210b34c7 Merge pull request 'feat: refs #8312 new column packaging.rejectCost' (!3391) from 8312-newPackagingColumn into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3391
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2025-01-30 17:03:58 +00:00
Ivan Mas f68f62543d Merge branch 'dev' into 8477-AddFeeToAWB
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-30 17:00:14 +00:00
Ivan Mas 148072b39d feat: refs #8477 change column name and add comment
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-30 17:58:39 +01:00
Ivan Mas 9e95afa190 Merge branch 'dev' into 8312-newPackagingColumn
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-30 16:37:52 +00:00
Ivan Mas e0e72272a7 feat: refs #8312 change column name
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-30 17:35:30 +01:00
Ivan Mas ecc92792da Merge pull request 'feat: refs #8487 deprecate travel.appointment' (!3399) from 8487-deprecateAppointmentFromTravel into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3399
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
2025-01-30 13:40:37 +00:00
Ivan Mas 85c3dc54fa Merge branch 'dev' into 8487-deprecateAppointmentFromTravel
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-30 13:24:08 +00:00
Jon Elias ef8e206520 Merge pull request '#7488: Deleted nif validation' (!3402) from 7488-DeleteNifValidation into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3402
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-30 12:52:50 +00:00
Jon Elias 0a89a6a6fd fix: refs #7488 deleted nif validation
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-30 12:40:48 +01:00
Robert Ferrús 7654a2e693 Merge pull request 'feat: refs #6822 ACL' (!3388) from 6822-entryTransferFix into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3388
Reviewed-by: Pablo Natek <pablone@verdnatura.es>
2025-01-30 07:26:33 +00:00
Robert Ferrús 9c467e67e0 Merge branch 'dev' into 6822-entryTransferFix
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-30 06:07:59 +00:00
Ivan Mas 2a7795d432 feat: refs #8477 add fee column to awb table
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 19:24:49 +01:00
Javier Segarra 1a8e962382 Merge pull request '#7134 SupplierBalance' (!3173) from 7134-supplierBalance into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3173
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-29 15:15:58 +00:00
Javier Segarra efe0aa708f Merge branch 'dev' into 7134-supplierBalance
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 15:13:49 +00:00
Ivan Mas 70d286df80 feat: refs #8487 deprecate travel.appointment
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 14:59:19 +01:00
Pako Natek e87803874c Merge pull request 'feat(available): refs #8408 available refreshing now includes time' (!3395) from 8408-Disponible-por-zonas-y-horas into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3395
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-29 12:57:13 +00:00
Pako Natek 73d1266bfc Merge branch 'dev' into 8408-Disponible-por-zonas-y-horas
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 12:54:07 +00:00
Robert Ferrús dd77326424 Merge pull request 'feat: refs #8077 redirection lilium' (!3389) from 8077-sumDefaulterRedirectionLilium into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3389
Reviewed-by: Pablo Natek <pablone@verdnatura.es>
2025-01-29 12:48:35 +00:00
Robert Ferrús f87fa37a79 Merge branch 'dev' into 8077-sumDefaulterRedirectionLilium
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 12:44:42 +00:00
Robert Ferrús 35e72c90d3 Merge branch 'dev' into 6822-entryTransferFix
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 11:46:23 +00:00
Robert Ferrús d536690197 feat: refs #6822 changes request
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 12:43:46 +01:00
Pako Natek af5b4981df Merge branch 'dev' into 8408-Disponible-por-zonas-y-horas
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 11:16:41 +00:00
Pako Natek 597615facb fix(agencyIncomingForeign): refs #8408 version changes rolled back
gitea/salix/pipeline/pr-dev This commit looks good Details
Refs: #8408
2025-01-29 12:15:04 +01:00
Pako Natek 4e2a6d275a fix(travel): refs #8408 trigger restriction for wrong availabled value
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
Refs: #8408
2025-01-29 12:12:23 +01:00
Pako Natek 0de9c3c172 feat(available): refs #8408 available refreshing now includes time
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
Refs: #8408
2025-01-29 12:03:55 +01:00
Jon Elias 17b4089b51 Merge pull request 'Fix[WorkerFilter]: Fixed filter' (!3394) from Fix-WorkerFilterLimit into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3394
Reviewed-by: Jorge Penadés <jorgep@verdnatura.es>
2025-01-29 11:03:14 +00:00
Jon Elias 1d53f2c490 fix: worker filter limit
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 11:43:15 +01:00
Carlos Satorres 78842cd69c Merge pull request 'fix: refs #7917 fix route filter freeLancer' (!3327) from 7917-freelancerRoute2 into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3327
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-29 10:37:04 +00:00
Carlos Satorres 17a27060c3 Merge branch 'dev' into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 10:11:50 +00:00
Javier Segarra 295c8493a8 Merge branch '7134-supplierBalance' of https://gitea.verdnatura.es/verdnatura/salix into 7134-supplierBalance
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-29 09:54:17 +01:00
Javier Segarra f2be71be6c fix: refs #7134 replace value by util.VN_CURDATE() 2025-01-29 09:54:05 +01:00
Javier Segarra b32c7f734f Merge branch 'dev' into 7134-supplierBalance
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-28 22:43:12 +00:00
Javier Segarra a63ca1b3c5 Merge branch 'dev' into 7134-supplierBalance 2025-01-28 23:39:03 +01:00
Ivan Mas dfcc155ef9 Merge branch 'dev' into 8312-newPackagingColumn
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-28 18:14:38 +00:00
Ivan Mas 821e2cbe4d feat: refs #8312 new column packaging.rejectCost
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-28 19:11:56 +01:00
Carlos Andrés ec71cb8df6 Merge pull request 'fix: refs #8492 Sage invoiceInTax Check VAT' (!3390) from 8492-InvoiceInTax-Check-VAT into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3390
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-28 17:58:17 +00:00
Carlos Andrés 801629c8db fix: refs #8492 Sage invoiceInTax Check VAT
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-28 18:04:02 +01:00
Robert Ferrús a6a875cb2c feat: refs #8077 redirection lilium
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-28 13:27:35 +01:00
Carlos Satorres b383725f9f fix: refs #7917 fix user tests
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-28 12:56:30 +01:00
Carlos Satorres bb08ad7d1a Merge branch '7917-freelancerRoute2' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-28 12:51:24 +01:00
Carlos Satorres a01c419b44 fix: refs #7917 fix tback 2025-01-28 12:51:21 +01:00
Carlos Satorres 3c16914135 Merge branch 'dev' into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-28 11:43:25 +00:00
Carlos Satorres b14beb83f4 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-28 11:55:27 +01:00
Robert Ferrús 8482743baf feat: refs #6822 ACL
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-28 11:26:48 +01:00
Javier Segarra 9419eada64 Merge branch 'dev' into 7134-supplierBalance
gitea/salix/pipeline/pr-dev Build queued... Details
2025-01-28 08:46:17 +01:00
Alex Moreno d75d4f82f2 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix into dev
gitea/salix/pipeline/head This commit looks good Details
2025-01-28 08:16:59 +01:00
Alex Moreno 837719327d Merge pull request 'build: refs #8452 dump db' (!3386) from 8452-dump into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3386
Reviewed-by: Jon Elias <jon@verdnatura.es>
2025-01-28 07:16:33 +00:00
Jon Elias eb29a66a80 Merge pull request 'Fix_TicketSummary[Address]: Added nickname in address relation' (!3383) from Fix-TicketSummaryAddress into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3383
Reviewed-by: Javier Segarra <jsegarra@verdnatura.es>
2025-01-28 07:14:07 +00:00
Jon Elias dac30dcac5 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into Fix-TicketSummaryAddress
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-28 08:10:25 +01:00
Alex Moreno f4b7683609 build: refs #8452 dump db
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-28 08:10:23 +01:00
Javi Gallego c73af0a44b fix: specify database context in agencyIncoming foreign key deletion SQL
gitea/salix/pipeline/head This commit looks good Details
2025-01-28 08:09:18 +01:00
Alex Moreno 7a02af9a3a Merge pull request '8452-testToMaster' (!3385) from 8452-testToMaster into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3385
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
2025-01-28 06:42:20 +00:00
Alex Moreno 7b8ddef4c2 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix into 8452-testToMaster
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-28 07:36:10 +01:00
Alex Moreno 3bf47af774 Merge pull request 'fix: some params' (!3384) from warmfix_customer_filters into test
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3384
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-28 06:36:00 +00:00
Jon Elias 167368b9ae Merge branch 'Fix-TicketSummaryAddress' of https://gitea.verdnatura.es/verdnatura/salix into Fix-TicketSummaryAddress
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-28 07:33:09 +01:00
Jon Elias e85b68650d Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into Fix-TicketSummaryAddress 2025-01-28 07:33:03 +01:00
Jon Elias 59d3bd9d44 Merge branch 'dev' into Fix-TicketSummaryAddress
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-28 06:28:57 +00:00
Alex Moreno 6e824c1b5e Merge branch 'test' into warmfix_customer_filters
gitea/salix/pipeline/pr-test This commit looks good Details
2025-01-28 06:27:44 +00:00
Javi Gallego b8f9dc7ad7 fix: correct SQL syntax for deleting orphaned agencyIncoming records
gitea/salix/pipeline/head This commit looks good Details
2025-01-27 16:37:17 +01:00
Javi Gallego 8cbe64eedd fix: remove orphaned agencyIncoming records with null agencyModeFk
gitea/salix/pipeline/head There was a failure building this commit Details
2025-01-27 16:34:28 +01:00
Javi Gallego 1261722943 Merge pull request 'feat: refs #8381 add agencyModeFk to travel thermograph and create AgencyModeIncoming model' (!3369) from 8381-thermographTravel into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3369
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-27 15:12:51 +00:00
Alex Moreno 5f07c159bc build: refs #8452 add change log
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-27 15:24:26 +01:00
Alex Moreno 9ba9338f9d Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix into dev
gitea/salix/pipeline/head This commit looks good Details
2025-01-27 14:39:58 +01:00
Alex Moreno bbebff7ea9 fix: prevent slow update
gitea/salix/pipeline/head This commit looks good Details
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-27 14:37:39 +01:00
Javier Segarra b003dff045 fix: new params
gitea/salix/pipeline/pr-test This commit looks good Details
2025-01-27 13:30:29 +00:00
Javier Segarra 72a1c2ca57 fix: some params
gitea/salix/pipeline/pr-test This commit looks good Details
2025-01-27 12:57:58 +00:00
Robert Ferrús 56982ee1ba Merge pull request 'feat: refs #8387 crudModel' (!3355) from 8387-itemTagCrudModel into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3355
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-27 11:38:07 +00:00
Carlos Satorres d9d80a0e43 Merge branch '7917-freelancerRoute2' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-27 11:46:31 +01:00
Carlos Satorres d659e05ce8 fix: refs #7917 remove update 2025-01-27 11:46:29 +01:00
Robert Ferrús 5a449c66ce Merge branch 'dev' into 8387-itemTagCrudModel
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-27 10:26:48 +00:00
Guillermo Bonet a948442e13 Merge branch 'test' into dev
gitea/salix/pipeline/head This commit looks good Details
2025-01-27 11:24:05 +01:00
Carlos Satorres 06cd177d31 Merge branch 'dev' into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-27 10:23:57 +00:00
Guillermo Bonet aecf529976 Merge branch 'master' into test
gitea/salix/pipeline/head This commit looks good Details
2025-01-27 11:23:55 +01:00
Guillermo Bonet cd8e04d648 refactor: refs #7568 ticket_doCmr ignore alertLevel
gitea/salix/pipeline/head This commit looks good Details
2025-01-27 11:22:21 +01:00
Robert Ferrús edb26a3750 Merge pull request '6822-entryTransfer' (!3376) from 6822-entryTransfer into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3376
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2025-01-27 10:08:23 +00:00
Carlos Satorres c4a7fbf6e8 fix: refs #7917 fix tests
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-27 10:57:54 +01:00
Carlos Satorres 14c087e17f Merge branch '7917-freelancerRoute2' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-27 10:00:34 +01:00
Robert Ferrús 6f8cbc1017 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-27 08:51:03 +00:00
Carlos Satorres 62f26ec8c8 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2 2025-01-27 09:24:38 +01:00
Robert Ferrús d10670cb37 Merge branch 'dev' into 8387-itemTagCrudModel
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-27 08:05:26 +00:00
Robert Ferrús 1f6779d86b feat: refs #8387 change request
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-27 08:59:33 +01:00
Jose Antonio Tubau be3bcefa46 Merge pull request '7322-addSelectAddressOnTicketTransfer' (!3363) from 7322-addSelectAddressOnTicketTransfer into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3363
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-27 07:31:51 +00:00
Jose Antonio Tubau 29af7cfcbc test: refs #7322 added test error for case when expected error is not thrown
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-27 08:23:30 +01:00
Robert Ferrús 46a22733e2 Merge branch 'dev' into 8387-itemTagCrudModel
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-27 07:10:54 +00:00
Jose Antonio Tubau 4fd58e24c5 Merge branch 'dev' into 7322-addSelectAddressOnTicketTransfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-27 07:07:28 +00:00
Robert Ferrús 705dec2dbc Merge pull request 'feat: refs #6629 refs # 6629 updateAddress' (!3255) from 6629-addressObservationBack2 into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3255
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-27 07:02:05 +00:00
Robert Ferrús ad87631092 Merge branch 'dev' into 6629-addressObservationBack2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-27 06:33:42 +00:00
Robert Ferrús b9206c44bb Merge branch 'dev' into 8387-itemTagCrudModel
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-27 06:17:49 +00:00
Jon Elias 034df6e8ea feat: added nickname in address
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-24 13:48:35 +01:00
Robert Ferrús 163302c770 feat: refs #6822 fix test
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-24 13:26:36 +01:00
Robert Ferrús 2ee5ba908a feat: refs #6822 change request
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-24 13:16:36 +01:00
Guillermo Bonet e54b148088 Merge pull request 'refactor: refs #8205 Added geoFk Fk' (!3304) from 8205-geoFk into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3304
Reviewed-by: Juan Ferrer <juan@verdnatura.es>
2025-01-24 11:42:13 +00:00
Robert Ferrús ad05641520 Merge pull request 'feat: refs #8077 sumDefaulter' (!3367) from 8077-sumDefaulterBackFix into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3367
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-24 10:55:32 +00:00
Robert Ferrús b09e3398ff Merge branch 'dev' into 8077-sumDefaulterBackFix
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-24 10:46:16 +00:00
Guillermo Bonet 57ed161d27 Merge branch 'dev' into 8205-geoFk
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-24 10:31:02 +00:00
Sergio De la torre bb35cbece0 Merge pull request '6861-itemShelvingSaleWithUser' (!3381) from 6861-itemShelvingSaleWithUser into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3381
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2025-01-24 08:23:13 +00:00
Jon Elias f3cb2bd200 Merge pull request 'Fix[priceDifference]: Fixed shipped field' (!3380) from Fix-priceDifferenceError into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3380
Reviewed-by: Javier Segarra <jsegarra@verdnatura.es>
2025-01-24 07:33:30 +00:00
Sergio De la torre 5dd60bd912 fix: refs #6861 refs#6861 showUsername
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-24 08:28:15 +01:00
Sergio De la torre df97534882 fix: refs #6861 refs#6861 showUsername 2025-01-24 08:25:44 +01:00
Jon Elias 603e3e32c4 fix: shipped field
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-24 07:39:18 +01:00
Javi Gallego e4733b5102 Merge pull request 'hotFix: address isEqualizated can be null for trigger' (!3379) from hotFix_addressIsEqualizated into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3379
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-23 14:18:04 +00:00
Jose Antonio Tubau 95329b7ddb Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 7322-addSelectAddressOnTicketTransfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-23 14:43:17 +01:00
Jose Antonio Tubau f165d17869 feat: refs #7322 add addressFk parameter to transferClient method and update tests
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-23 14:26:02 +01:00
Alex Moreno 518a91cff2 fix: address isEqualizated can be null for trigger
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-23 13:56:36 +01:00
Robert Ferrús 0038fabcc6 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-23 12:00:13 +00:00
Robert Ferrús d8847d3d09 feat: refs #6822 change request
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-23 12:59:32 +01:00
Ivan Mas 13821b86ea Merge pull request 'feat: refs #8342 deprecate sorter and splitLine tables' (!3377) from 8342-deprecateSorterAndSplitLineTables into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3377
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2025-01-23 11:40:55 +00:00
Ivan Mas d98a867e12 Merge branch 'dev' into 8342-deprecateSorterAndSplitLineTables
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-23 11:38:38 +00:00
Robert Ferrús 89de87c280 Merge pull request 'feat: refs #8398 sendCheckingPresence' (!3362) from 8398-mergeSendCheckingPresenceBack into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3362
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-23 09:51:03 +00:00
Carlos Satorres 10a6626a65 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness 2025-01-23 10:26:15 +01:00
Robert Ferrús 2124a50dc2 Merge branch 'dev' into 6629-addressObservationBack2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-23 08:37:03 +00:00
Robert Ferrús 1816ff6cf4 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-23 08:22:51 +00:00
Robert Ferrús 14e69c1c64 Merge branch 'dev' into 8398-mergeSendCheckingPresenceBack
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-23 08:21:32 +00:00
Jon Elias 64c697da6c Merge pull request '#7184: Created myTeam filter' (!3378) from 7184-MyTeamFilter into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3378
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-23 08:03:05 +00:00
Alex Moreno 8ebf68cc4c Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix into dev
gitea/salix/pipeline/head This commit looks good Details
2025-01-23 08:34:08 +01:00
Alex Moreno 200a7cf995 Merge branch 'master' of https://gitea.verdnatura.es/verdnatura/salix into test
gitea/salix/pipeline/head This commit looks good Details
2025-01-23 08:33:58 +01:00
Jon Elias 602e822599 refactor: refs #7184 deleted .value
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-23 08:21:19 +01:00
Jon Elias 6d5a329b49 fix: refs #7184 fixed filter and test
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-22 17:09:01 +01:00
Jon Elias 0eff155daf refactor: refs #7184 created myteam filter and modified filters where it is used
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-22 16:34:14 +01:00
Robert Ferrús 0f531d4b74 feat: refs #6822 change request
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-22 13:24:06 +01:00
Robert Ferrús e92e1d3a46 feat: refs #6822 refs #688 change request
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-22 13:20:24 +01:00
Ivan Mas 43528a0a53 feat: refs #8342 deprecate sorter and splitLine tables
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-22 13:04:16 +01:00
Carlos Satorres b47f175b67 Merge branch 'dev' into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-22 09:07:36 +00:00
Carlos Satorres 99b5433e62 fix: refs #7917 fix acls
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-22 10:02:20 +01:00
Robert Ferrús 4a2508716d Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-22 07:37:26 +00:00
Robert Ferrús 5a12a01565 Merge branch 'dev' of https: refs #8077//gitea.verdnatura.es/verdnatura/salix into 8077-sumDefaulterBackFix
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-22 07:51:41 +01:00
Javier Segarra 630d867787 fix: refs #7134 use vn_curdate
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-21 23:09:07 +01:00
Javier Segarra 294c2f832e Merge branch 'dev' into 7134-supplierBalance
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-21 14:53:19 +01:00
Robert Ferrús 2e247c3ea5 Merge branch 'dev' into 8387-itemTagCrudModel
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-21 14:14:27 +01:00
Robert Ferrús 3c89ea0df8 fix: refs #8387 local/es.json
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-21 14:12:14 +01:00
Carlos Satorres d66b8f4963 fix: refs #7917 acls
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-21 13:54:02 +01:00
Javier Segarra dfcfd34202 Merge branch 'dev' into 7134-supplierBalance
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-21 13:42:36 +01:00
Robert Ferrús 5ff27de72c feat: refs #8387
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-21 13:42:12 +01:00
Robert Ferrús a40e9a547b feat: refs #8387
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-21 13:40:24 +01:00
Robert Ferrús b4ac80615b feat: refs #8387 fix traductions
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-21 13:13:30 +01:00
Robert Ferrús 3d5bfb81da feat: refs #8387 regular expression all tags
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-21 13:12:03 +01:00
Alex Moreno 9d289fa11e build: init version
gitea/salix/pipeline/head This commit looks good Details
2025-01-21 11:57:35 +01:00
Robert Ferrús 0e0db6591e Merge pull request 'feat: refs #8401 create triggers to itemTaxCountry' (!3370) from 8401-itemTaxCountryTrigger into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3370
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-21 10:37:13 +00:00
Robert Ferrús c727586855 feat: refs #8387 add column validationRegex
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-21 11:25:03 +01:00
Javi Gallego da8609afd6 Merge branch 'dev' into 8381-thermographTravel
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-21 11:20:18 +01:00
Robert Ferrús 77606468fd Merge branch 'master' into 8401-itemTaxCountryTrigger
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-21 10:07:28 +00:00
Robert Ferrús 405e0adaec Merge pull request 'feat: refs #8447 create tables tag' (!3375) from 8447-createTableTags2 into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3375
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-21 10:02:01 +00:00
Alex Moreno ded035285b Merge pull request '8448-devToTest' (!3373) from 8448-devToTest into test
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3373
Reviewed-by: Carlos Satorres <carlossa@verdnatura.es>
2025-01-21 10:00:49 +00:00
Alex Moreno 05b383ecb0 test: refs #8448 fix e2e
gitea/salix/pipeline/pr-test This commit looks good Details
2025-01-21 10:57:40 +01:00
Robert Ferrús 7292ac48b2 Merge branch 'dev' into 6822-entryTransfer 2025-01-21 08:48:24 +00:00
Robert Ferrús 785a10a26a feat: refs #8447 create tables tag
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-21 09:34:56 +01:00
Javi Gallego a46ec1bc8d feat: refs #8381 add agencyModeFk to thermograph and insert agencyIncoming records
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-21 08:13:56 +01:00
Javi Gallego 8e21ca5293 Merge branch 'dev' into 8381-thermographTravel 2025-01-21 07:53:38 +01:00
Sergio De la torre 6f73758cad Merge pull request '7569-sendEmailOrderTicket' (!3350) from 7569-sendEmailOrderTicket into dev
gitea/salix/pipeline/head This commit looks good Details
gitea/salix/pipeline/pr-test This commit looks good Details
Reviewed-on: #3350
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-21 06:29:28 +00:00
Sergio De la torre c50ff6a43a feat: refs #7569 refs#7569 sendEmailNotification
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-21 07:05:42 +01:00
Sergio De la torre eee73f001d Merge branch 'dev' of https: refs #7569//gitea.verdnatura.es/verdnatura/salix into 7569-sendEmailOrderTicket
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-21 07:00:02 +01:00
Sergio De la torre 7f17cd59e7 Merge branch 'dev' of https: refs #7569//gitea.verdnatura.es/verdnatura/salix into 7569-sendEmailOrderTicket 2025-01-21 06:58:15 +01:00
Sergio De la torre ef68884fe0 feat: refs #7569 refs#7569 sendEmailNotification
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-20 16:27:35 +01:00
Carlos Satorres ffeb710933 Merge branch '7917-freelancerRoute2' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-20 13:27:42 +01:00
Carlos Satorres a98967bac1 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2 2025-01-20 12:38:46 +01:00
Sergio De la torre b5e27707a7 feat: refs #7569 refs#7569 sendEmailNotification
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-20 12:36:31 +01:00
Sergio De la torre 0340612645 feat: refs #7569 refs#7569 sendEmailNotification
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-20 12:35:55 +01:00
Robert Ferrús 316a17304f feat: refs #8401 restriction itemFk
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-20 12:26:29 +01:00
Robert Ferrús 4b78c12ee4 Merge branch 'master' into 8401-itemTaxCountryTrigger
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-20 10:26:14 +00:00
Robert Ferrús cb065f42cd feat: refs #8401 change request
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-20 11:19:24 +01:00
Guillermo Bonet aa62f1d483 Merge branch 'test' into dev
gitea/salix/pipeline/head This commit looks good Details
2025-01-20 08:10:38 +01:00
Guillermo Bonet 86a2b1de1e Merge branch 'master' into test
gitea/salix/pipeline/head This commit looks good Details
2025-01-20 08:10:29 +01:00
Guillermo Bonet 9584ffcf5b feat: refs #7531 Added landed index
gitea/salix/pipeline/head This commit looks good Details
2025-01-20 08:10:12 +01:00
Guillermo Bonet 04180bf8da Merge branch 'test' into dev
gitea/salix/pipeline/head This commit looks good Details
2025-01-20 07:52:04 +01:00
Guillermo Bonet 5998002420 Merge branch 'master' into test
gitea/salix/pipeline/head This commit looks good Details
2025-01-20 07:51:45 +01:00
Guillermo Bonet fff6979921 Merge pull request 'feat: refs #7531 Added address_hasDelivery' (!3361) from 7531-addressHasDelivery into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3361
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-20 06:51:18 +00:00
Guillermo Bonet 7a5ed0ff23 Merge branch 'master' into 7531-addressHasDelivery
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-20 06:49:42 +00:00
Guillermo Bonet 934507569e feat: refs #7531 Added comment
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-20 07:48:43 +01:00
Guillermo Bonet e6abb1d759 feat: refs #7531 Minor change
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-20 07:41:41 +01:00
Guillermo Bonet 044a22bc3e feat: refs #7531 Deleted address_hasDelivery
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-20 07:13:04 +01:00
PAU ROVIRA ROSALENY 5ef1d615a7 Merge pull request 'feat: #8258 added uppercase validation on supplier create' (!3368) from 8258-uppercaseInputs into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3368
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-20 06:01:20 +00:00
Robert Ferrús 52f9e71062 feat: refs #6822 refs#6822 fix branche 2025-01-19 09:02:48 +01:00
Robert Ferrús ce96b0a819 Merge branch 'dev' into 6822-entryTransfer 2025-01-19 07:58:16 +00:00
Robert Ferrús de2f12bdb5 Merge branch 'dev' into 6629-addressObservationBack2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-19 07:54:37 +00:00
Robert Ferrús 6c2071742c Merge branch 'dev' into 8398-mergeSendCheckingPresenceBack
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-19 07:38:25 +00:00
Robert Ferrús 5fe032ac75 feat: refs #8401 create triggers to itemTaxCountry
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-19 08:30:14 +01:00
Javi Gallego 4f68a7d262 feat: refs #8381 add agencyModeFk to travel thermograph and create AgencyModeIncoming model
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-17 15:36:11 +01:00
PAU ROVIRA ROSALENY 1cdeadb59d feat: refs #8258 added uppercase validation on supplier create
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-17 13:20:45 +01:00
Robert Ferrús 8b3f2572a1 Merge branch 'dev' into 8077-sumDefaulterBackFix
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-17 12:05:01 +00:00
Robert Ferrús 9cd8dfaf9d feat: refs #8077 fix spec
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-17 13:03:28 +01:00
Robert Ferrús 0bfd0895d7 feat: refs #8077 sumDefaulter
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-17 12:11:18 +01:00
Guillermo Bonet e636d43f04 feat: refs #7531 Added address_hasDelivery
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-17 09:42:15 +01:00
Guillermo Bonet a666cfa4cd feat: refs #7531 Added address_hasDelivery
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-17 09:40:07 +01:00
Javi Gallego d4b7d54052 Merge pull request '8298-zonePriceOptimum' (!3345) from 8298-zonePriceOptimum into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3345
Reviewed-by: Pako Natek <pako@verdnatura.es>
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-17 08:30:44 +00:00
Guillermo Bonet 1aa1fbda6c feat: refs #7531 Added address_hasDelivery
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-17 08:10:26 +01:00
Guillermo Bonet 69b78b6bf1 feat: refs #7531 Added address_hasDelivery
gitea/salix/pipeline/pr-master There was a failure building this commit Details
2025-01-16 15:04:21 +01:00
Javi Gallego 125b7730e7 feat: refs #8298 update price calculation logic and add packagesDiscountFactor column to client table
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-16 12:56:04 +01:00
Robert Ferrús 81ab9fe0ba Merge branch 'dev' into 6822-entryTransfer 2025-01-16 09:06:42 +00:00
Robert Ferrús df3f4c3d2e Merge branch 'dev' into 8398-mergeSendCheckingPresenceBack
gitea/salix/pipeline/pr-dev Build queued... Details
2025-01-16 08:59:15 +00:00
Guillermo Bonet 4d98c340d2 feat: refs #7882 Added coords to create a address
gitea/salix/pipeline/head This commit looks good Details
2025-01-16 09:34:18 +01:00
Javi Gallego b8dbaec46c Merge pull request 'test: refs #8361 enhance exchangeRateUpdate specs with additional scenarios' (!3340) from 8361-exchangeRateUpdateWithFestiveDays into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3340
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2025-01-16 08:10:09 +00:00
Robert Ferrús 03c974db12 Merge pull request 'feat: refs #257275 defaulterFilter' (!3356) from hotFixDefaulterFilter into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3356
Reviewed-by: Carlos Andrés <carlosap@verdnatura.es>
2025-01-16 07:00:48 +00:00
Javi Gallego 69f1e76307 Merge pull request 'feat: refs #8381 add initial and final temperature fields to entry model and queries' (!3354) from 8381-entryTemperature into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3354
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-16 06:56:42 +00:00
Robert Ferrús 0e8b4d92bf Merge branch 'master' into hotFixDefaulterFilter
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-16 06:53:00 +00:00
Robert Ferrús 4853e45051 feat: refs #8398 change merge.spec
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-16 07:29:40 +01:00
Carlos Andrés c24b008567 Actualizar modules/travel/back/methods/travel/filter.js
gitea/salix/pipeline/head This commit looks good Details
2025-01-15 16:34:44 +00:00
Ivan Mas 8da1d866e3 Merge pull request 'refactor: refs #8378 deprecate bi.f_tvc' (!3365) from 8378-deprecateBi.f_tvc into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3365
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
2025-01-15 15:12:08 +00:00
Ivan Mas 416e6c81f1 refactor: refs #8378 deprecate bi.f_tvc
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-15 15:22:48 +01:00
Jose Antonio Tubau b78603275f fix: refs #7322 reorder parameters in transferClient method for consistency
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-15 14:13:00 +01:00
Jose Antonio Tubau ec14281a82 feat: refs #7322 add optional addressFk parameter to transferClient method 2025-01-15 13:37:57 +01:00
Carlos Satorres 53eb1f427b Merge branch 'dev' into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-15 12:13:53 +00:00
Carlos Satorres 516147b8bb fix: refs #7917 fix acls
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-15 13:04:49 +01:00
Robert Ferrús 6ab0515f8e feat: refs #8398 sendCheckingPresence
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-15 12:31:28 +01:00
Guillermo Bonet c2ca9cfbe5 feat: refs #7531 Added address_hasDelivery
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-15 12:26:16 +01:00
Jon Elias d0df1c1f42 Merge pull request '#8247: Added new acl for VnUser model' (!3358) from 8247-CreateNewAcl into dev
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3358
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-15 10:51:25 +00:00
Carlos Satorres 024ab8602d fix: refs #6553 fix back advanced summary
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-15 10:31:49 +01:00
Robert Ferrús 93c9ef6f4c feat: refs #8387 changes
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-15 10:25:21 +01:00
Robert Ferrús 620d14355c Merge branch 'master' into hotFixDefaulterFilter
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-15 09:12:45 +00:00
Carlos Satorres 6ef0d2625d Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-15 08:40:16 +01:00
Carlos Satorres d95482ea54 Merge pull request 'fix: hotfix 7366 6943' (!3360) from hotfix-7366-6943CreditBillingDataAWB into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3360
Reviewed-by: Alex Moreno <alexm@verdnatura.es>
2025-01-15 07:00:40 +00:00
Robert Ferrús 807ddf07ad feat: refs #6629 test back
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-15 07:31:49 +01:00
Carlos Satorres d39c063786 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-15 06:31:00 +01:00
Robert Ferrús 849bcd1ff5 feat: refs #6629 test back updateObservations 2025-01-14 13:39:43 +01:00
Carlos Satorres d9716154bb Merge branch 'master' into hotfix-7366-6943CreditBillingDataAWB
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-14 11:54:20 +00:00
Carlos Satorres 01072f7cbc fix: hotfix 7366 6943
gitea/salix/pipeline/pr-master There was a failure building this commit Details
2025-01-14 11:36:54 +01:00
Alex Moreno e273733832 refactor: order by id
gitea/salix/pipeline/head This commit looks good Details
2025-01-14 09:33:26 +01:00
Javi Gallego 44765b5a64 feat: refs #8361 add hasToDownloadRate field to currency model and update exchange rate logic
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-14 09:07:00 +01:00
Robert Ferrús 2585cce627 Merge branch 'master' into hotFixDefaulterFilter
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-14 07:17:17 +00:00
Robert Ferrús 277cd80f50 Merge branch 'dev' into 6822-entryTransfer 2025-01-14 07:13:52 +00:00
Alex Moreno 48ad72ac98 Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix into dev
gitea/salix/pipeline/head This commit looks good Details
2025-01-14 08:00:08 +01:00
Alex Moreno b4686def94 Merge pull request 'build: refs #8389 dump db' (!3359) from 8389-dump into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3359
Reviewed-by: Jon Elias <jon@verdnatura.es>
2025-01-14 06:58:52 +00:00
Alex Moreno 6aa898ee59 build: refs #8389 dump db
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-14 07:39:52 +01:00
Alex Moreno 105a5045cf Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix into dev
gitea/salix/pipeline/head This commit looks good Details
2025-01-14 07:37:33 +01:00
Jon Elias 29e6a99983 feat: refs #8247 added new acl for VnUser model
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-14 07:36:23 +01:00
Robert Ferrús 0891fc6665 Merge branch 'master' into hotFixDefaulterFilter
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-14 06:31:23 +00:00
Alex Moreno 43edb1f82e Merge pull request '8389-testToMaster' (!3357) from 8389-testToMaster into master
gitea/salix/pipeline/head This commit looks good Details
Reviewed-on: #3357
Reviewed-by: Guillermo Bonet <guillermo@verdnatura.es>
2025-01-14 06:31:07 +00:00
Carlos Satorres 24f501f47a Merge branch '7917-freelancerRoute2' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-14 07:23:37 +01:00
Carlos Satorres 07b07611be Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2 2025-01-14 07:21:13 +01:00
Carlos Satorres 3bdb8f6228 Merge branch 'dev' into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-14 06:18:27 +00:00
Carlos Satorres 60c1daa47c Merge branch '7917-freelancerRoute2' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-14 07:18:09 +01:00
Carlos Satorres 86dde8dfb3 fix: refs #7917 fix pr 2025-01-14 07:18:05 +01:00
Javier Segarra 96649f5d8a feat: refs #7134 remove default value
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-13 23:13:26 +01:00
Javier Segarra 9bfc2a01c5 perf: refs #7134 sql style
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-13 23:09:13 +01:00
Javier Segarra f0e9cce228 fix: refs #7134 remove unnused method
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-13 22:52:35 +01:00
Alex Moreno 00577056dd build: refs #8389 changelog
gitea/salix/pipeline/pr-master This commit looks good Details
2025-01-13 15:24:12 +01:00
Alex Moreno 6e56bdeeb1 fix: refs #8389 prevent error propagation 2025-01-13 15:24:01 +01:00
Robert Ferrús da3b8ac8d0 Merge branch 'dev' into 8387-itemTagCrudModel
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-13 13:39:12 +00:00
Robert Ferrús c4870d52de feat: refs #257275 defaulterFilter
gitea/salix/pipeline/pr-master Build queued... Details
2025-01-13 14:37:27 +01:00
Robert Ferrús 6fd8c5ded6 feat: refs #8387 fix
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-13 14:33:32 +01:00
Robert Ferrús 050c338ffb feat: refs #8387 crudModel
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-13 14:29:13 +01:00
Carlos Satorres 60f0b169d4 fix: refs #6553 fix advanced
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-13 13:56:24 +01:00
Javier Segarra f6c3893d00 feat: refs #7134 minor changes
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-13 12:41:36 +01:00
Javier Segarra 420bb2a57e perf: refs #7134 remove unnecessary code 2025-01-13 12:41:16 +01:00
Carlos Satorres a4f9d62504 Merge branch '6553-workerBusiness' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-13 12:23:24 +01:00
Carlos Satorres 358f93c454 fix: refs #6553 fix worker back 2025-01-13 12:23:21 +01:00
Javier Segarra f207222b47 Merge branch 'dev' into 7134-supplierBalance 2025-01-13 11:56:25 +01:00
Javi Gallego c15a3bfe50 feat: refs #8381 add initial and final temperature fields to entry model and queries
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-13 11:28:30 +01:00
Carlos Satorres 978914aa71 Merge branch 'dev' into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-13 07:50:12 +00:00
Carlos Satorres d547456d22 Merge branch 'dev' into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-13 07:14:59 +00:00
Robert Ferrús 95e7757574 Merge branch 'dev' of https: refs #6629//gitea.verdnatura.es/verdnatura/salix into 6629-addressObservationBack2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-10 11:26:47 +01:00
Sergio De la torre a1e1d4fa72 fix: refs #7569 refs·6861 ticketOrderReserve
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-10 07:20:24 +01:00
Carlos Satorres 6d661dba85 Merge branch 'dev' into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-10 05:36:23 +00:00
Sergio De la torre 12fa87a93c fix: refs #7569 refs·6861 ticketOrderReserve
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-09 16:15:29 +01:00
Carlos Satorres c8d57a1efa Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-09 09:59:25 +01:00
Javi Gallego 53c604762a Merge branch 'dev' into 8298-zonePriceOptimum
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-08 13:43:17 +01:00
Javi Gallego be56313706 feat: refs #8298 add priceOptimum column to zoneEvent and update zone fixture data
gitea/salix/pipeline/pr-dev Build queued... Details
2025-01-08 11:58:50 +01:00
Javi Gallego 0d822d03c9 fix: refs #8298 remove duplicate entry in English locale file
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-08 10:30:47 +01:00
Javi Gallego 1816b6de67 feat: refs #8298 add priceOptimum and packagesDiscountFactor to zone and client tables 2025-01-08 10:24:18 +01:00
Carlos Satorres 209bd21548 Merge branch 'dev' of https: refs #6553//gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-08 10:17:50 +01:00
Robert Ferrús 115756aaf3 feat: refs #6822 fix transfer test
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-08 07:44:49 +01:00
Robert Ferrús 5d337c4def Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-08 06:34:24 +00:00
Javi Gallego dbd8d816c0 fix: refs #8361 streamline transaction handling in exchangeRateUpdate
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-07 14:53:26 +01:00
Carlos Satorres bd1cee6d8b Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-07 12:47:48 +01:00
Robert Ferrús 823be8e0ea Merge branch '6822-entryTransfer' of https://gitea.verdnatura.es/verdnatura/salix into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-07 12:02:35 +01:00
Robert Ferrús c4c9b5640e feat: refs #6822 modify transaction 2025-01-07 12:02:32 +01:00
Javi Gallego 786f1fe661 test: refs #8361 enhance exchangeRateUpdate specs to validate day1 and day2 entries without backfilling day3
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-07 11:06:09 +01:00
Javi Gallego 73d5d508ce test: refs #8361 enhance exchangeRateUpdate specs with additional scenarios
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-07 10:45:51 +01:00
Robert Ferrús 65aa931738 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-07 09:39:36 +00:00
Carlos Satorres a139c9849c fix: refs #6553 fix model
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-07 10:33:30 +01:00
Robert Ferrús 1b90317b67 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-07 08:51:21 +00:00
Robert Ferrús ebf234dd4f feat: refs #6822 delete fixtures to test
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-07 09:49:55 +01:00
Robert Ferrús aee747abd3 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-07 08:32:28 +00:00
Robert Ferrús b7658f5814 feat: refs #6822 fix test
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-07 09:28:17 +01:00
Robert Ferrús 04734ac55c feat: refs #6822 test transfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-07 08:59:47 +01:00
Carlos Satorres ddecfee24b Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-07 06:13:51 +01:00
Robert Ferrús cbf72be299 Merge branch '6822-entryTransfer' of https://gitea.verdnatura.es/verdnatura/salix into 6822-entryTransfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-03 08:40:05 +01:00
Robert Ferrús e8faaa42aa Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-03 07:37:20 +00:00
Robert Ferrús 31aa7f9915 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6822-entryTransfer 2025-01-03 08:35:17 +01:00
Robert Ferrús 02d77324b1 feat: refs #6822 crear test
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2025-01-03 08:27:34 +01:00
Sergio De la torre 05b8c3451a Merge branch 'dev' of https: refs #7569//gitea.verdnatura.es/verdnatura/salix into 7569-sendEmailOrderTicket 2025-01-02 10:47:11 +01:00
Carlos Satorres 78a8f80321 fix: refs #7917 fix tback
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-02 08:38:24 +01:00
Carlos Satorres 81d3bce12a Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 7917-freelancerRoute2
gitea/salix/pipeline/pr-dev This commit looks good Details
2025-01-02 06:23:35 +01:00
Javier Segarra a69a767c8a feat: refs #7134 use filter to order by
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-12-27 13:57:28 +01:00
Javier Segarra 3691daded4 feat: refs #7134 add bank name
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-12-27 13:26:38 +01:00
Javier Segarra ca90d6ecd7 Merge branch 'dev' into 7134-supplierBalance
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-12-27 11:57:28 +01:00
Carlos Satorres 85163a13fa fix: refs #7917 fix fixtures
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-12-24 08:13:00 +01:00
Carlos Satorres 6f16974320 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-12-23 13:30:27 +01:00
Carlos Satorres 16bbcf8185 fix: refs #7917 fix summary test
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-12-23 12:18:40 +01:00
Carlos Satorres a30cad1da1 fix: refs #7917 fix tback
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-12-23 12:14:16 +01:00
Carlos Satorres 419815ff87 fix: refs #7917 fix back
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-12-23 11:59:40 +01:00
Carlos Satorres afb01ed021 fix: refs #7917 fix route filter freeLancer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-12-23 11:55:48 +01:00
Carlos Satorres e2a4c5339a fix: refs #6553 fix back
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-12-16 13:01:44 +01:00
Carlos Satorres c1b9032534 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness 2024-12-16 12:12:41 +01:00
Carlos Satorres 4bc475d132 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-12-16 11:28:49 +01:00
Carlos Satorres d1aa164aea Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-12-16 07:19:27 +01:00
Guillermo Bonet 781a8a4d10 refactor: refs #8205 Added geoFk Fk
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-12-13 13:49:35 +01:00
Robert Ferrús ab1eed66df feat: refs #6822 changes required
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-12-13 12:29:03 +01:00
Sergio De la torre 2c672951c6 fix: refs #7569 refs#8188 add IfNotExists 2024-12-12 20:33:00 +01:00
Sergio De la torre 31a6db5da0 feat: refs #7569 refs#7569 sendMail 2024-12-12 20:30:38 +01:00
Robert Ferrús 4f370dbaea Merge branch '6822-entryTransfer' of https://gitea.verdnatura.es/verdnatura/salix into 6822-entryTransfer 2024-12-11 11:54:44 +01:00
Robert Ferrús 43bbdfd421 feat: refs #6822 2024-12-11 11:54:40 +01:00
Robert Ferrús b681585ad5 Merge branch 'dev' into 6822-entryTransfer 2024-12-11 10:21:00 +00:00
Javier Segarra f86bd1233b feat: refs #7134 tiller 2024-12-09 14:19:43 +01:00
Javier Segarra 0a4f4c5926 feat: refs #7134 rename supplier.createReceipt by createPayment 2024-12-05 14:54:01 +01:00
Robert Ferrús 6ac30dcb0c feat: refs #6822 fix conflict
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-12-04 13:32:10 +01:00
Robert Ferrús 47cb1ff722 Merge branch 'dev' of https: refs #6822//gitea.verdnatura.es/verdnatura/salix into 6822-entryTransfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-12-04 13:18:26 +01:00
Robert Ferrús b97b61c7dd feat: refs #6822 fix
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-12-04 09:40:28 +01:00
Robert Ferrús c518352bf7 feat: refs #6822 changes required
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-12-04 08:12:47 +01:00
Javier Segarra 22dc1e22f4 Merge branch 'dev' of https: refs #7134//gitea.verdnatura.es/verdnatura/salix into 7134-supplierBalance
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-12-02 10:18:21 +01:00
Robert Ferrús 3f4aa60cd2 feat: refs #6822 poner esquemas en el with
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-11-28 08:22:30 +01:00
Robert Ferrús be394cec28 feat: refs #6822 change request
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-11-28 08:17:32 +01:00
Robert Ferrús 4b474834cf feat: refs #6822 change request
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-11-28 08:13:53 +01:00
Robert Ferrús 7b8d4c6a2c Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-11-28 06:38:36 +00:00
Robert Ferrús 229a241bff Merge branch 'dev' into 6629-addressObservationBack2
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-11-27 12:08:37 +00:00
Robert Ferrús 01537d410c feat: refs #6629 refs # 6629 updateAddress 2024-11-27 13:08:14 +01:00
Javier Segarra aa2f9985cd feat: refs #7134 change index
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-11-20 14:07:35 +01:00
Javier Segarra aab595e9dd feat: refs #7134 #7134 use VN_CURDATE 2024-11-20 14:07:14 +01:00
Javier Segarra f46a46359e feat: refs #7134 #7134 modify balanceStartingDate 2024-11-20 14:07:00 +01:00
Javier Segarra 771e06743e feat: refs #7134 add supplier payment 2024-11-20 14:06:52 +01:00
Javier Segarra 50b35c3474 Merge branch 'dev' into 7134-supplierBalance
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-11-20 11:21:09 +01:00
Javier Segarra 62243e164a feat: refs #7134 refs #6427 #7134 add new supplier/receipts method
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-11-11 14:47:21 +01:00
Robert Ferrús d9575190ee Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-11-11 06:33:28 +00:00
Robert Ferrús 4e71fb97c3 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-10-29 07:24:17 +00:00
Robert Ferrús d86eaf5471 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-10-25 05:28:54 +00:00
Robert Ferrús 9a01ae5ccc feat: refs #6822 tabulaciones
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-10-23 12:32:48 +02:00
Robert Ferrús d2a4a84728 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-10-16 05:22:03 +00:00
Carlos Satorres 601909e853 Merge branch 'dev' into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-09-17 13:11:51 +00:00
Carlos Satorres 4b9a39e6ba Merge branch 'dev' into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-09-17 09:08:06 +00:00
Carlos Satorres 2aa0e2af2a Merge branch 'dev' into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-09-17 09:04:21 +00:00
Carlos Satorres c3c60b1fa7 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-09-13 13:06:51 +02:00
Robert Ferrús 18a055f28a Merge branch '6822-entryTransfer' of https://gitea.verdnatura.es/verdnatura/salix into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-09-11 09:59:05 +02:00
Robert Ferrús e999201969 feat: refs #6822 entry_clone 2024-09-11 09:59:01 +02:00
Robert Ferrús 400226f955 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-09-11 07:47:53 +00:00
Robert Ferrús 07c4fa4b1d Merge branch 'dev' of https: refs #6822//gitea.verdnatura.es/verdnatura/salix into 6822-entryTransfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-09-11 09:46:13 +02:00
Carlos Satorres ff328c9f0d Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-09-10 11:34:50 +02:00
Carlos Satorres a27e3ed60f Merge branch 'dev' of https: refs #6553//gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-09-09 13:21:00 +02:00
Carlos Satorres 5e5a8078ca fix: refs #6553 json worker
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-09-03 13:59:02 +02:00
Carlos Satorres cf651dc2e1 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-09-03 10:51:31 +02:00
Robert Ferrús 5f63017853 feat: refs #6822 changes transaction
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-08-06 07:20:30 +02:00
Robert Ferrús bb36667616 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-08-05 11:12:44 +02:00
Robert Ferrús 24e64fe607 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-19 05:21:27 +00:00
Robert Ferrús 8b106a0cbc Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-18 05:08:10 +00:00
Robert Ferrús 5a742ada5c Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-17 12:54:19 +02:00
Robert Ferrús 2cb8d07aef feat: refs #6822
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-17 10:30:23 +02:00
Robert Ferrús 109770b0a3 feat: refs #6822 return newEntry
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-07-17 10:28:22 +02:00
Robert Ferrús 1332aef213 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-15 05:31:08 +00:00
Robert Ferrús d60a1a3424 feat: refs #6822 entry_clone
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-11 09:39:06 +02:00
Robert Ferrús 5a7d5787f7 feat: refs #6822 clonar travel con warehouseInFk
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-11 07:38:13 +02:00
Robert Ferrús 1ffe41c23e Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-10 11:35:01 +00:00
Robert Ferrús c286dd780f Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-10 05:45:02 +00:00
Robert Ferrús a34376f4d2 feat: refs #6822
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-10 07:31:49 +02:00
Robert Ferrús 22c83b6b56 Merge branch 'dev' into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-03 10:04:55 +00:00
Robert Ferrús 04f6059d6f feat: refs #6822
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-03 12:03:28 +02:00
Robert Ferrús eb17d66986 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6822-entryTransfer
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-07-03 11:30:58 +02:00
Robert Ferrús b5f8ad77f1 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6822-entryTransfer
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-07-03 10:18:34 +02:00
Alex Moreno 36b4c7fb74 typo
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-06-26 12:33:38 +02:00
Alex Moreno 3362d7562f Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness 2024-06-26 12:33:19 +02:00
Carlos Satorres cc8af9d14a refs #6553 fix back
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-06-25 10:21:24 +02:00
Carlos Satorres be0de3511b Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-06-25 08:56:49 +02:00
Carlos Satorres 0486c40454 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-06-20 13:35:22 +02:00
Alex Moreno 4f7b625a4f fix(business): sql role
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-06-14 14:48:45 +02:00
Alex Moreno a9ad3df592 Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness 2024-06-14 13:36:22 +02:00
Alex Moreno e8d0ebe91d Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6553-workerBusiness
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-06-14 12:09:30 +02:00
Carlos Satorres 41fabecc9b refs #6553 fix acls
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-06-10 09:29:37 +02:00
Carlos Satorres 06fe0f5cef refs #6553 fix acls
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-06-06 07:34:17 +02:00
Carlos Satorres 5d73af5392 refs #6553 fix back
gitea/salix/pipeline/pr-dev There was a failure building this commit Details
2024-06-05 10:43:53 +02:00
Carlos Satorres 11d1cd8eb3 Merge branch 'dev' into 6553-workerBusiness
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-05-30 08:57:58 +00:00
Carlos Satorres a5ffdddb53 refs #6553 fix back
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-05-29 15:56:27 +02:00
Carlos Satorres 3e1b296b29 refs #6553 changes models
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-05-28 15:46:44 +02:00
Robert Ferrús bac07fe265 feat: refs #6822
gitea/salix/pipeline/pr-dev This commit looks good Details
2024-05-23 12:41:59 +02:00
Robert Ferrús 9585af8e77 feat: refs #6822 create entryTransfer 2024-05-23 12:39:30 +02:00
143 changed files with 2778 additions and 1292 deletions

View File

@ -1,3 +1,77 @@
# Version 25.04 - 2025-01-28
### Added 🆕
- feat: refs #7202 added new field by:Jon
- feat: refs #7343 delete sending to user by:ivanm
- feat: refs #7569 refs#7569 sendEmailNotification by:sergiodt
- feat: refs #7569 refs#7569 sendMail by:sergiodt
- feat: refs #7584 changes request by:robert
- feat: refs #7584 workerTimeControl_afterDelete by:robert
- feat: refs #7832 implement refund ticket restrictions and add unit tests for ticket service updates by:jgallego
- feat: refs #7882 Added coords to create a address by:guillermo
- feat: refs #8073 change names and primary key by:ivanm
- feat: refs #8073 new comment message by:ivanm
- feat: refs #8073 #refs 8073 create vn.productionCountryVolume by:ivanm
- feat: refs #8117 add worker first and last name to item type query by:jtubau
- feat: refs #8247 added new acl for VnUser model by:Jon
- feat: refs #8258 added uppercase validation on supplier create (origin/8258-uppercaseInputs) by:provira
- feat: refs #8298 add priceOptimum and packagesDiscountFactor to zone and client tables by:jgallego
- feat: refs #8298 add priceOptimum column to zoneEvent and update zone fixture data by:jgallego
- feat: refs #8298 update price calculation logic and add packagesDiscountFactor column to client table by:jgallego
- feat: refs #8357 Agregados triggers para manejar exclusiones de trabajadores en la tabla workerMana by:guillermo
- feat: refs #8361 add hasToDownloadRate field to currency model and update exchange rate logic by:jgallego
- feat: refs #8381 add initial and final temperature fields to entry model and queries by:jgallego
### Changed 📦
- refactor: order by id by:alexm
- refactor: refs #7202 modified new invoice procedure and incoterms sql by:Jon
- refactor: refs #7202 modified procedure to include customsAgent field when creating an invoice by:Jon
- refactor: refs #8378 deprecate bi.f_tvc by:ivanm
### Fixed 🛠️
- feat: refs #8298 add priceOptimum column to zoneEvent and update zone fixture data by:jgallego
- fix: prevent slow update (HEAD -> 8452-testToMaster, origin/test, origin/8452-testToMaster, test) by:alexm
- fix: refs #7202 fixed back test by:Jon
- fix: refs #7202 fixed sql by:Jon
- fix: refs #7569 refs·6861 ticketOrderReserve by:sergiodt
- fix: refs #7569 refs·6861 ticketOrderReserve (origin/7569-sendEmailOrderTicket) by:sergiodt
- fix: refs #7569 refs#8188 add IfNotExists by:sergiodt
- fix: refs #7832 update ticketService model test suite to correct describe block by:jgallego
- fix: refs #8298 remove duplicate entry in English locale file by:jgallego
- fix: refs #8361 streamline transaction handling in exchangeRateUpdate by:jgallego
- test: refs #8448 fix e2e by:alexm
# Version 25.00 - 2025-01-14
### Added 🆕
- feat: refs #7235 add serialType parameter to getInvoiceDate and implement corresponding tests by:jgallego
- feat: refs #7301 update lastEntriesFilter to include landedDate and enhance test cases (origin/7301-removeRedundantInventories) by:pablone
- feat: refs #7880 error code and translations by:ivanm
- feat: refs #7924 add isCustomInspectionRequired field to item and update related logic by:jgallego
- feat: refs #8167 update canBeInvoiced method to include active status check and improve test cases by:jgallego
- feat: refs #8167 update locale and improve invoicing logic with error handling by:jgallego
- feat: refs #8246 added relation for the front's new field by:Jon
- feat: refs #8266 added itemFk and needed fixtures by:jtubau
- feat: refs #8324 country unique by:Carlos Andrés
### Changed 📦
### Fixed 🛠️
- feat: refs #8266 added itemFk and needed fixtures by:jtubau
- fix: add isCustomInspectionRequired column to item table for customs inspection indication by:jgallego
- fix: canBeInvoiced only in makeInvoice by:alexm
- fix: hotFix getMondayWeekYear by:alexm
- fix: refs #6598 update ACL property assignment by:jorgep
- fix: refs #6861 refs#6861 addPrevOK by:sergiodt
- fix: refs #7301 remove debug console log and update test cases in lastEntriesFilter by:pablone
- fix: refs #7301 update SQL fixtures and improve lastEntriesFilter logic by:pablone
# Version 24.52 - 2024-01-07 # Version 24.52 - 2024-01-07
### Added 🆕 ### Added 🆕

View File

@ -67,7 +67,6 @@ module.exports = Self => {
INSERT INTO util.debug (variable, value) INSERT INTO util.debug (variable, value)
VALUES ('sendCheckingPresence_error', ?) VALUES ('sendCheckingPresence_error', ?)
`, [`User: ${userId}, recipient: ${recipientId}, message: ${message}, error: ${e}`]); `, [`User: ${userId}, recipient: ${recipientId}, message: ${message}, error: ${e}`]);
throw e;
} }
}; };
}; };

View File

@ -65,7 +65,8 @@ module.exports = Self => {
iss.id itemShelvingSaleFk, iss.id itemShelvingSaleFk,
iss.isPicked, iss.isPicked,
iss.itemShelvingFk, iss.itemShelvingFk,
st.code stateCode st.code stateCode,
ac.username
FROM ticketCollection tc FROM ticketCollection tc
LEFT JOIN collection c ON c.id = tc.collectionFk LEFT JOIN collection c ON c.id = tc.collectionFk
JOIN sale s ON s.ticketFk = tc.ticketFk JOIN sale s ON s.ticketFk = tc.ticketFk
@ -80,6 +81,7 @@ module.exports = Self => {
LEFT JOIN itemColor ic ON ic.itemFk = s.itemFk LEFT JOIN itemColor ic ON ic.itemFk = s.itemFk
LEFT JOIN origin o ON o.id = i.originFk LEFT JOIN origin o ON o.id = i.originFk
LEFT JOIN state st ON st.id = sg.stateFk LEFT JOIN state st ON st.id = sg.stateFk
LEFT JOIN account.user ac ON ac.id = iss.userFk
WHERE tc.collectionFk = ? WHERE tc.collectionFk = ?
GROUP BY s.id, ish.id, p.code, p2.code GROUP BY s.id, ish.id, p.code, p2.code
UNION ALL UNION ALL
@ -109,7 +111,8 @@ module.exports = Self => {
iss.id itemShelvingSaleFk, iss.id itemShelvingSaleFk,
iss.isPicked, iss.isPicked,
iss.itemShelvingFk, iss.itemShelvingFk,
st.code stateCode st.code stateCode,
ac.username
FROM sectorCollection sc FROM sectorCollection sc
JOIN sectorCollectionSaleGroup ss ON ss.sectorCollectionFk = sc.id JOIN sectorCollectionSaleGroup ss ON ss.sectorCollectionFk = sc.id
JOIN saleGroup sg ON sg.id = ss.saleGroupFk JOIN saleGroup sg ON sg.id = ss.saleGroupFk
@ -124,6 +127,7 @@ module.exports = Self => {
LEFT JOIN itemColor ic ON ic.itemFk = s.itemFk LEFT JOIN itemColor ic ON ic.itemFk = s.itemFk
LEFT JOIN origin o ON o.id = i.originFk LEFT JOIN origin o ON o.id = i.originFk
LEFT JOIN state st ON st.id = sg.stateFk LEFT JOIN state st ON st.id = sg.stateFk
LEFT JOIN account.user ac ON ac.id = sg.userFk
WHERE sc.id = ? WHERE sc.id = ?
AND sgd.saleGroupFk AND sgd.saleGroupFk
GROUP BY s.id, ish.id, p.code, p2.code`, [id, id], myOptions); GROUP BY s.id, ish.id, p.code, p2.code`, [id, id], myOptions);

View File

@ -52,7 +52,7 @@
}, },
"payMethod": { "payMethod": {
"type": "belongsTo", "type": "belongsTo",
"model": "PayMethodFk", "model": "PayMethod",
"foreignKey": "payMethodFk" "foreignKey": "payMethodFk"
}, },
"company": { "company": {

View File

@ -12,6 +12,12 @@
"required": true, "required": true,
"id": true "id": true
}, },
"sectorFromCode": {
"type": "string"
},
"sectorToCode": {
"type": "string"
},
"backupPrinterNotificationDelay": { "backupPrinterNotificationDelay": {
"type": "string" "type": "string"
}, },

View File

@ -4,7 +4,7 @@ USE `util`;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
INSERT INTO `version` VALUES ('vn-database','11385','72bf27f08d3ddf646ec0bb6594fc79cecd4b72f2','2025-01-07 07:46:33','11395'); INSERT INTO `version` VALUES ('vn-database','11410','7a02af9a3acae14a658de1557baa44542c24d480','2025-01-28 07:44:02','11423');
INSERT INTO `versionLog` VALUES ('vn-database','10107','00-firstScript.sql','jenkins@10.0.2.69','2022-04-23 10:53:53',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','10107','00-firstScript.sql','jenkins@10.0.2.69','2022-04-23 10:53:53',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10112','00-firstScript.sql','jenkins@10.0.2.69','2022-05-09 09:14:53',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','10112','00-firstScript.sql','jenkins@10.0.2.69','2022-05-09 09:14:53',NULL,NULL);
@ -1041,6 +1041,7 @@ INSERT INTO `versionLog` VALUES ('vn-database','11261','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','11262','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-10-03 07:47:43',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11262','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-10-03 07:47:43',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11263','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-09-27 12:05:32',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11263','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-09-27 12:05:32',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11264','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 08:00:15',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11264','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 08:00:15',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11269','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:58',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11271','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 08:00:15',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11271','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 08:00:15',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11272','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 08:00:15',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11272','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 08:00:15',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11273','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-10-03 10:50:51',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11273','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-10-03 10:50:51',NULL,NULL);
@ -1078,6 +1079,7 @@ INSERT INTO `versionLog` VALUES ('vn-database','11315','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','11316','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11316','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11317','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11317','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11319','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11319','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11320','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-14 07:32:07',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11321','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11321','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11322','00-entryAcl.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11322','00-entryAcl.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11324','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-13 10:49:47',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11324','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-13 10:49:47',NULL,NULL);
@ -1139,6 +1141,24 @@ INSERT INTO `versionLog` VALUES ('vn-database','11379','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','11379','01-secScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:32',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11379','01-secScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:32',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11384','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:32',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11384','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:32',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11385','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:33',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11385','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:33',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11387','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:58',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11390','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-14 07:32:08',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11391','00-itemAlter.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-14 07:32:08',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11396','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:58',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11398','00-zoneEventPriceOptimum.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11398','00-zonePriceOptimum.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11398','01-zoneUpdate.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11398','02-clientAlter.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11398','03-clientConfig.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11400','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-09 09:55:24',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11405','00-entryAlter.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:44:00',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11406','00-currrencyAlter.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:44:00',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11406','01-currrencyUpdate.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:44:00',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11407','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:44:00',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11410','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:44:00',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11415','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-20 08:12:38',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11418','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-21 11:03:27',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11423','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-23 15:19:32',NULL,NULL);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
@ -1237,6 +1257,7 @@ INSERT INTO `role` VALUES (127,'timeControl','Tablet para fichar',1,'2024-01-09
INSERT INTO `role` VALUES (129,'buyerAssistant','Comprador que tienes mas permisos para ayudar al buyerBoss en algunas tareas',1,'2024-02-06 06:59:12','2024-02-06 06:59:12',783); INSERT INTO `role` VALUES (129,'buyerAssistant','Comprador que tienes mas permisos para ayudar al buyerBoss en algunas tareas',1,'2024-02-06 06:59:12','2024-02-06 06:59:12',783);
INSERT INTO `role` VALUES (130,'reviewer','Revisor de producción',1,'2024-06-11 00:00:00','2024-06-11 00:00:00',10578); INSERT INTO `role` VALUES (130,'reviewer','Revisor de producción',1,'2024-06-11 00:00:00','2024-06-11 00:00:00',10578);
INSERT INTO `role` VALUES (131,'supplier','Privilegios básicos de un proveedor',1,'2024-07-05 10:18:58','2024-07-05 10:18:58',19295); INSERT INTO `role` VALUES (131,'supplier','Privilegios básicos de un proveedor',1,'2024-07-05 10:18:58','2024-07-05 10:18:58',19295);
INSERT INTO `role` VALUES (132,'salesPersonClaim','Departamento de ventas con funciones de reclamaciones',1,'2025-01-17 07:07:40','2025-01-17 07:07:40',19295);
INSERT INTO `roleInherit` VALUES (1,1,2,NULL); INSERT INTO `roleInherit` VALUES (1,1,2,NULL);
INSERT INTO `roleInherit` VALUES (2,1,3,NULL); INSERT INTO `roleInherit` VALUES (2,1,3,NULL);
@ -1248,7 +1269,6 @@ INSERT INTO `roleInherit` VALUES (8,5,33,NULL);
INSERT INTO `roleInherit` VALUES (10,11,6,NULL); INSERT INTO `roleInherit` VALUES (10,11,6,NULL);
INSERT INTO `roleInherit` VALUES (11,13,1,NULL); INSERT INTO `roleInherit` VALUES (11,13,1,NULL);
INSERT INTO `roleInherit` VALUES (12,15,35,NULL); INSERT INTO `roleInherit` VALUES (12,15,35,NULL);
INSERT INTO `roleInherit` VALUES (16,17,20,NULL);
INSERT INTO `roleInherit` VALUES (17,17,37,NULL); INSERT INTO `roleInherit` VALUES (17,17,37,NULL);
INSERT INTO `roleInherit` VALUES (18,17,39,NULL); INSERT INTO `roleInherit` VALUES (18,17,39,NULL);
INSERT INTO `roleInherit` VALUES (19,17,64,NULL); INSERT INTO `roleInherit` VALUES (19,17,64,NULL);
@ -1323,7 +1343,6 @@ INSERT INTO `roleInherit` VALUES (105,72,18,NULL);
INSERT INTO `roleInherit` VALUES (106,73,5,NULL); INSERT INTO `roleInherit` VALUES (106,73,5,NULL);
INSERT INTO `roleInherit` VALUES (107,73,64,NULL); INSERT INTO `roleInherit` VALUES (107,73,64,NULL);
INSERT INTO `roleInherit` VALUES (108,73,19,NULL); INSERT INTO `roleInherit` VALUES (108,73,19,NULL);
INSERT INTO `roleInherit` VALUES (109,59,50,NULL);
INSERT INTO `roleInherit` VALUES (115,39,76,NULL); INSERT INTO `roleInherit` VALUES (115,39,76,NULL);
INSERT INTO `roleInherit` VALUES (117,65,76,NULL); INSERT INTO `roleInherit` VALUES (117,65,76,NULL);
INSERT INTO `roleInherit` VALUES (118,30,76,NULL); INSERT INTO `roleInherit` VALUES (118,30,76,NULL);
@ -1515,6 +1534,10 @@ INSERT INTO `roleInherit` VALUES (378,101,15,19294);
INSERT INTO `roleInherit` VALUES (379,103,121,19294); INSERT INTO `roleInherit` VALUES (379,103,121,19294);
INSERT INTO `roleInherit` VALUES (381,119,123,19295); INSERT INTO `roleInherit` VALUES (381,119,123,19295);
INSERT INTO `roleInherit` VALUES (382,48,72,783); INSERT INTO `roleInherit` VALUES (382,48,72,783);
INSERT INTO `roleInherit` VALUES (383,114,111,19295);
INSERT INTO `roleInherit` VALUES (384,132,18,19295);
INSERT INTO `roleInherit` VALUES (385,132,72,19295);
INSERT INTO `roleInherit` VALUES (386,109,132,19295);
INSERT INTO `userPassword` VALUES (1,7,1,0,2,1); INSERT INTO `userPassword` VALUES (1,7,1,0,2,1);
@ -2311,9 +2334,9 @@ INSERT INTO `ACL` VALUES (938,'Worker','__get__mail','READ','ALLOW','ROLE','hr',
INSERT INTO `ACL` VALUES (939,'Machine','*','*','ALLOW','ROLE','productionBoss',10578); INSERT INTO `ACL` VALUES (939,'Machine','*','*','ALLOW','ROLE','productionBoss',10578);
INSERT INTO `ACL` VALUES (940,'ItemTypeLog','find','READ','ALLOW','ROLE','employee',10578); INSERT INTO `ACL` VALUES (940,'ItemTypeLog','find','READ','ALLOW','ROLE','employee',10578);
INSERT INTO `ACL` VALUES (941,'Entry','buyLabel','READ','ALLOW','ROLE','employee',10578); INSERT INTO `ACL` VALUES (941,'Entry','buyLabel','READ','ALLOW','ROLE','employee',10578);
INSERT INTO `ACL` VALUES (942,'Cmr','filter','READ','ALLOW','ROLE','production',10578); INSERT INTO `ACL` VALUES (942,'Cmr','filter','READ','ALLOW','ROLE','employee',19295);
INSERT INTO `ACL` VALUES (943,'Cmr','downloadZip','READ','ALLOW','ROLE','production',10578); INSERT INTO `ACL` VALUES (943,'Cmr','downloadZip','READ','ALLOW','ROLE','employee',19295);
INSERT INTO `ACL` VALUES (944,'Cmr','print','READ','ALLOW','ROLE','production',10578); INSERT INTO `ACL` VALUES (944,'Cmr','print','READ','ALLOW','ROLE','employee',19295);
INSERT INTO `ACL` VALUES (945,'Collection','create','WRITE','ALLOW','ROLE','productionBoss',10578); INSERT INTO `ACL` VALUES (945,'Collection','create','WRITE','ALLOW','ROLE','productionBoss',10578);
INSERT INTO `ACL` VALUES (946,'Collection','upsert','WRITE','ALLOW','ROLE','productionBoss',10578); INSERT INTO `ACL` VALUES (946,'Collection','upsert','WRITE','ALLOW','ROLE','productionBoss',10578);
INSERT INTO `ACL` VALUES (947,'Collection','replaceById','WRITE','ALLOW','ROLE','productionBoss',10578); INSERT INTO `ACL` VALUES (947,'Collection','replaceById','WRITE','ALLOW','ROLE','productionBoss',10578);
@ -2327,7 +2350,6 @@ INSERT INTO `ACL` VALUES (954,'RouteComplement','find','READ','ALLOW','ROLE','de
INSERT INTO `ACL` VALUES (955,'RouteComplement','create','WRITE','ALLOW','ROLE','delivery',10578); INSERT INTO `ACL` VALUES (955,'RouteComplement','create','WRITE','ALLOW','ROLE','delivery',10578);
INSERT INTO `ACL` VALUES (956,'RouteComplement','deleteById','WRITE','ALLOW','ROLE','delivery',10578); INSERT INTO `ACL` VALUES (956,'RouteComplement','deleteById','WRITE','ALLOW','ROLE','delivery',10578);
INSERT INTO `ACL` VALUES (957,'SaleGroup','find','READ','ALLOW','ROLE','production',10578); INSERT INTO `ACL` VALUES (957,'SaleGroup','find','READ','ALLOW','ROLE','production',10578);
INSERT INTO `ACL` VALUES (958,'Worker','canCreateAbsenceInPast','WRITE','ALLOW','ROLE','hr',10578);
INSERT INTO `ACL` VALUES (959,'WorkerRelative','updateAttributes','*','ALLOW','ROLE','hr',10578); INSERT INTO `ACL` VALUES (959,'WorkerRelative','updateAttributes','*','ALLOW','ROLE','hr',10578);
INSERT INTO `ACL` VALUES (960,'WorkerRelative','crud','WRITE','ALLOW','ROLE','hr',10578); INSERT INTO `ACL` VALUES (960,'WorkerRelative','crud','WRITE','ALLOW','ROLE','hr',10578);
INSERT INTO `ACL` VALUES (961,'WorkerRelative','findById','*','ALLOW','ROLE','hr',10578); INSERT INTO `ACL` VALUES (961,'WorkerRelative','findById','*','ALLOW','ROLE','hr',10578);
@ -2383,6 +2405,9 @@ INSERT INTO `ACL` VALUES (1010,'InventoryConfig','find','READ','ALLOW','ROLE','b
INSERT INTO `ACL` VALUES (1011,'SiiTypeInvoiceIn','find','READ','ALLOW','ROLE','salesPerson',10578); INSERT INTO `ACL` VALUES (1011,'SiiTypeInvoiceIn','find','READ','ALLOW','ROLE','salesPerson',10578);
INSERT INTO `ACL` VALUES (1012,'OsrmConfig','optimize','READ','ALLOW','ROLE','employee',10578); INSERT INTO `ACL` VALUES (1012,'OsrmConfig','optimize','READ','ALLOW','ROLE','employee',10578);
INSERT INTO `ACL` VALUES (1013,'Route','optimizePriority','*','ALLOW','ROLE','employee',10578); INSERT INTO `ACL` VALUES (1013,'Route','optimizePriority','*','ALLOW','ROLE','employee',10578);
INSERT INTO `ACL` VALUES (1014,'Worker','canModifyAbsenceInPast','WRITE','ALLOW','ROLE','hr',10578);
INSERT INTO `ACL` VALUES (1015,'Worker','__get__sip','READ','ALLOW','ROLE','employee',19294);
INSERT INTO `ACL` VALUES (1016,'VnUser','adminUser','WRITE','ALLOW','ROLE','sysadmin',10578);
INSERT INTO `fieldAcl` VALUES (1,'Client','name','update','employee'); INSERT INTO `fieldAcl` VALUES (1,'Client','name','update','employee');
INSERT INTO `fieldAcl` VALUES (2,'Client','contact','update','employee'); INSERT INTO `fieldAcl` VALUES (2,'Client','contact','update','employee');
@ -2681,71 +2706,72 @@ INSERT INTO `continent` VALUES (3,'África','AF');
INSERT INTO `continent` VALUES (4,'Europa','EU'); INSERT INTO `continent` VALUES (4,'Europa','EU');
INSERT INTO `continent` VALUES (5,'Oceanía','OC'); INSERT INTO `continent` VALUES (5,'Oceanía','OC');
INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,130,763,0,0,0,0,26,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,132,763,0,0,0,0,26,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (22,'shopping','COMPRAS',2,5,NULL,72,0,0,1,1,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (22,'shopping','COMPRAS',2,5,NULL,72,0,0,1,1,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (23,'CMA','CAMARA',15,16,NULL,72,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,'PREVIOUS'); INSERT INTO `department` VALUES (23,'CMA','CAMARA',15,16,NULL,72,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,'PREVIOUS');
INSERT INTO `department` VALUES (31,'it','INFORMATICA',6,7,NULL,72,0,0,1,0,1,'/1/','informatica-cau',1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (31,'it','INFORMATICA',6,7,NULL,72,0,0,1,0,1,'/1/','informatica-cau',1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (34,'accounting','CONTABILIDAD',8,9,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (34,'accounting','CONTABILIDAD',8,9,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (35,'finance','FINANZAS',10,11,NULL,0,0,0,1,0,1,'/1/',NULL,1,'begonya@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (35,'finance','FINANZAS',10,11,NULL,0,0,0,1,0,1,'/1/',NULL,1,'begonya@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (36,'labor','LABORAL',12,13,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (36,'labor','LABORAL',12,13,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',14,37,NULL,72,1,1,1,11,1,'/1/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',14,39,NULL,72,1,1,1,12,1,'/1/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (38,'picking','SACADO',17,18,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,1,NULL,NULL,NULL,'ON_PREPARATION'); INSERT INTO `department` VALUES (38,'picking','SACADO',17,18,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,1,NULL,NULL,NULL,'ON_PREPARATION');
INSERT INTO `department` VALUES (39,'packing','ENCAJADO',19,20,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'PACKING'); INSERT INTO `department` VALUES (39,'packing','ENCAJADO',19,20,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'PACKING');
INSERT INTO `department` VALUES (41,'administration','ADMINISTRACION',38,39,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (41,'administration','ADMINISTRACION',40,41,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (43,'VT','VENTAS',40,89,NULL,0,0,0,1,24,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (43,'VT','VENTAS',42,91,NULL,0,0,0,1,24,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (44,'management','GERENCIA',90,91,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (44,'management','GERENCIA',92,93,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (45,'logistic','LOGISTICA',92,93,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (45,'logistic','LOGISTICA',94,95,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (46,'delivery','REPARTO',94,95,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'DELIVERY'); INSERT INTO `department` VALUES (46,'delivery','REPARTO',96,97,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'DELIVERY');
INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',96,97,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'STORAGE'); INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',98,99,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'STORAGE');
INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',98,99,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',100,101,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (52,NULL,'CARGA AEREA',100,101,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (52,NULL,'CARGA AEREA',102,103,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (53,'marketing','MARKETING Y COMUNICACIÓN',41,42,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (53,'marketing','MARKETING Y COMUNICACIÓN',43,44,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (54,NULL,'ORNAMENTALES',102,103,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (54,NULL,'ORNAMENTALES',104,105,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (55,NULL,'TALLER NATURAL',21,22,14548,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1118,NULL,NULL,NULL); INSERT INTO `department` VALUES (55,NULL,'TALLER NATURAL',21,22,14548,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1118,NULL,NULL,NULL);
INSERT INTO `department` VALUES (56,NULL,'TALLER ARTIFICIAL',23,24,8470,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1927,NULL,NULL,NULL); INSERT INTO `department` VALUES (56,NULL,'TALLER ARTIFICIAL',23,24,8470,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1927,NULL,NULL,NULL);
INSERT INTO `department` VALUES (58,'CMP','CAMPOS',104,107,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'FIELD'); INSERT INTO `department` VALUES (58,'CMP','CAMPOS',106,109,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'FIELD');
INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',108,109,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',110,111,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (60,'claims','RECLAMACIONES',43,44,NULL,72,0,0,2,0,43,'/1/43/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'CLAIM'); INSERT INTO `department` VALUES (60,'claims','RECLAMACIONES',45,46,NULL,72,0,0,2,0,43,'/1/43/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'CLAIM');
INSERT INTO `department` VALUES (61,NULL,'VNH',110,113,NULL,73,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (61,NULL,'VNH',112,115,NULL,73,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (66,NULL,'VERDNAMADRID',114,115,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (66,NULL,'VERDNAMADRID',116,117,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (68,NULL,'COMPLEMENTOS',25,26,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (68,NULL,'COMPLEMENTOS',25,26,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (69,NULL,'VERDNABARNA',116,117,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (69,NULL,'VERDNABARNA',118,119,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (80,'spainTeam5','EQUIPO ESPAÑA 5',45,46,4250,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (80,'spainTeam5','EQUIPO ESPAÑA 5',47,48,4250,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',118,119,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',120,121,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (89,NULL,'COORDINACION',120,121,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (89,NULL,'COORDINACION',122,123,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (90,NULL,'TRAILER',111,112,NULL,0,0,0,2,0,61,'/1/61/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (90,NULL,'TRAILER',113,114,NULL,0,0,0,2,0,61,'/1/61/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (91,'artificial','ARTIFICIAL',27,28,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PREVIOUS'); INSERT INTO `department` VALUES (91,'artificial','ARTIFICIAL',27,28,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PREVIOUS');
INSERT INTO `department` VALUES (92,NULL,'EQUIPO SILVERIO',47,48,1203,0,0,0,2,0,43,'/1/43/','sdc_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (92,NULL,'EQUIPO SILVERIO',49,50,1203,0,0,0,2,0,43,'/1/43/','sdc_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (94,'spainTeam2','EQUIPO ESPAÑA 2',49,50,3797,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (94,'spainTeam2','EQUIPO ESPAÑA 2',51,52,3797,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',51,52,24065,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',53,54,24065,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (96,NULL,'EQUIPO C LOPEZ',53,54,4661,0,0,0,2,0,43,'/1/43/','cla_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (96,NULL,'EQUIPO C LOPEZ',55,56,4661,0,0,0,2,0,43,'/1/43/','cla_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (115,NULL,'EQUIPO CLAUDI',55,56,3810,0,0,0,2,0,43,'/1/43/','csr_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (115,NULL,'EQUIPO CLAUDI',57,58,3810,0,0,0,2,0,43,'/1/43/','csr_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (123,NULL,'EQUIPO ELENA BASCUÑANA',57,58,7102,0,0,0,2,0,43,'/1/43/','ebt_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (123,NULL,'EQUIPO ELENA BASCUÑANA',59,60,7102,0,0,0,2,0,43,'/1/43/','ebt_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',122,123,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',124,125,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (125,'spainTeam3','EQUIPO ESPAÑA 3',59,60,1118,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (125,'spainTeam3','EQUIPO ESPAÑA 3',61,62,1118,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (126,NULL,'PRESERVADO',29,30,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (126,NULL,'PRESERVADO',29,30,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (128,NULL,'PALETIZADO',31,32,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PALLETIZING'); INSERT INTO `department` VALUES (128,NULL,'PALETIZADO',31,32,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PALLETIZING');
INSERT INTO `department` VALUES (130,NULL,'REVISION',33,34,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'ON_CHECKING'); INSERT INTO `department` VALUES (130,'reviewers','REVISION',33,34,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'ON_CHECKING');
INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',105,106,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',107,108,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (132,NULL,'EQUIPO DC',61,62,1731,0,0,0,2,0,43,'/1/43/','dc_equipo',1,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (132,NULL,'EQUIPO DC',63,64,1731,0,0,0,2,0,43,'/1/43/','dc_equipo',1,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (133,'franceTeamManagement','EQUIPO GESTIÓN FRANCIA',63,64,9751,72,0,0,2,0,43,'/1/43/','fr_equipo',1,'gestionfrancia@verdnatura.es',0,0,0,0,NULL,NULL,'3300',NULL); INSERT INTO `department` VALUES (133,'franceTeamManagement','EQUIPO GESTIÓN FRANCIA',65,66,9751,72,0,0,2,0,43,'/1/43/','fr_equipo',1,'gestionfrancia@verdnatura.es',0,0,0,0,NULL,NULL,'3300',NULL);
INSERT INTO `department` VALUES (134,'portugalTeam','EQUIPO PORTUGAL',65,66,8964,0,0,0,2,0,43,'/1/43/','pt_equipo',1,'portugal@verdnatura.es',0,0,0,0,NULL,NULL,'3500',NULL); INSERT INTO `department` VALUES (134,'portugalTeam','EQUIPO PORTUGAL',67,68,8964,0,0,0,2,0,43,'/1/43/','pt_equipo',1,'portugal@verdnatura.es',0,0,0,0,NULL,NULL,'3500',NULL);
INSERT INTO `department` VALUES (135,'routers','ENRUTADORES',124,125,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (135,'routers','ENRUTADORES',126,127,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (136,'heavyVehicles','VEHICULOS PESADOS',126,127,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (136,'heavyVehicles','VEHICULOS PESADOS',128,129,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (137,'sorter','SORTER',128,129,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (137,'sorter','SORTER',130,131,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (139,'spainTeam4','EQUIPO ESPAÑA 4',67,68,3803,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (139,'spainTeam4','EQUIPO ESPAÑA 4',69,70,3803,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (140,'internationalTeam','EQUIPO INTERNACIONAL',69,70,24065,0,0,0,2,0,43,'/1/43/','int_equipo',1,'international@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (140,'internationalTeam','EQUIPO INTERNACIONAL',71,72,24065,0,0,0,2,0,43,'/1/43/','int_equipo',1,'international@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (141,NULL,'PREVIA',35,36,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'PREVIOUS'); INSERT INTO `department` VALUES (141,NULL,'PREVIA',35,36,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'PREVIOUS');
INSERT INTO `department` VALUES (146,NULL,'VERDNACOLOMBIA',3,4,NULL,72,0,0,2,0,22,'/1/22/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (146,NULL,'VERDNACOLOMBIA',3,4,NULL,72,0,0,2,0,22,'/1/22/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (147,'spainTeamAsia','EQUIPO ESPAÑA ASIA',71,72,40214,0,0,0,2,0,43,'/1/43/','esA_equipo',1,'esA@verdnatura.es',0,0,0,0,NULL,NULL,'5500',NULL); INSERT INTO `department` VALUES (147,'spainTeamAsia','EQUIPO ESPAÑA ASIA',73,74,40214,0,0,0,2,0,43,'/1/43/','esA_equipo',1,'esA@verdnatura.es',0,0,0,0,NULL,NULL,'5500',NULL);
INSERT INTO `department` VALUES (148,'franceTeamCatchment','EQUIPO CAPTACIÓN FRANCIA',73,74,25178,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,'6000',NULL); INSERT INTO `department` VALUES (148,'franceTeamCatchment','EQUIPO CAPTACIÓN FRANCIA',75,76,25178,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,'6000',NULL);
INSERT INTO `department` VALUES (149,'spainTeamCatchment','EQUIPO ESPAÑA CAPTACIÓN',75,76,1203,0,0,0,2,0,43,'/1/43/','es_captacion_equipo',1,'es_captacion@verdnatura.es',0,0,0,0,NULL,NULL,'5700',NULL); INSERT INTO `department` VALUES (149,'spainTeamCatchment','EQUIPO ESPAÑA CAPTACIÓN',77,78,1203,0,0,0,2,0,43,'/1/43/','es_captacion_equipo',1,'es_captacion@verdnatura.es',0,0,0,0,NULL,NULL,'5700',NULL);
INSERT INTO `department` VALUES (150,'spainTeamLevanteIslands','EQUIPO ESPAÑA LEVANTE',77,78,1118,0,0,0,2,0,43,'/1/43/','es_levante_equipo',1,'levanteislas.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5000',NULL); INSERT INTO `department` VALUES (150,'spainTeamLevanteIslands','EQUIPO ESPAÑA LEVANTE',79,80,1118,0,0,0,2,0,43,'/1/43/','es_levante_equipo',1,'es_levante@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL);
INSERT INTO `department` VALUES (151,'spainTeamNorthwest','EQUIPO ESPAÑA NOROESTE',79,80,7102,0,0,0,2,0,43,'/1/43/','es_noroeste_equipo',1,'noroeste.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5300',NULL); INSERT INTO `department` VALUES (151,'spainTeamNorthwest','EQUIPO ESPAÑA NOROESTE',81,82,7102,0,0,0,2,0,43,'/1/43/','es_noroeste_equipo',1,'es_noroeste@verdnatura.es',0,0,0,0,NULL,NULL,'5300',NULL);
INSERT INTO `department` VALUES (152,'spainTeamNortheast','EQUIPO ESPAÑA NORESTE',81,82,1118,0,0,0,2,0,43,'/1/43/','es_noreste_equipo',1,'noreste.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5200',NULL); INSERT INTO `department` VALUES (152,'spainTeamNortheast','EQUIPO ESPAÑA NORESTE',83,84,1118,0,0,0,2,0,43,'/1/43/','es_noreste_equipo',1,'es_noreste@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL);
INSERT INTO `department` VALUES (153,'spainTeamSouth','EQUIPO ESPAÑA SUR',83,84,36578,0,0,0,2,0,43,'/1/43/','es_sur_equipo',1,'sur.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5400',NULL); INSERT INTO `department` VALUES (153,'spainTeamSouth','EQUIPO ESPAÑA SUR',85,86,36578,0,0,0,2,0,43,'/1/43/','es_sur_equipo',1,'es_sur@verdnatura.es',0,0,0,0,NULL,NULL,'5400',NULL);
INSERT INTO `department` VALUES (154,'spainTeamCenter','EQUIPO ESPAÑA CENTRO',85,86,4661,0,0,0,2,0,43,'/1/43/','es_centro_equipo',1,'centro.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5100',NULL); INSERT INTO `department` VALUES (154,'spainTeamCenter','EQUIPO ESPAÑA CENTRO',87,88,4661,0,0,0,2,0,43,'/1/43/','es_centro_equipo',1,'es_centro@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL);
INSERT INTO `department` VALUES (155,'spainTeamVip','EQUIPO ESPAÑA VIP',87,88,5432,0,0,0,2,0,43,'/1/43/','es_vip_equipo',1,'vip.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5600',NULL); INSERT INTO `department` VALUES (155,'spainTeamVip','EQUIPO ESPAÑA VIP',89,90,5432,0,0,0,2,0,43,'/1/43/','es_vip_equipo',1,'es_vip@verdnatura.es',0,0,0,0,NULL,NULL,'5600',NULL);
INSERT INTO `department` VALUES (156,NULL,'COCINA',37,38,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `docuware` VALUES (1,'deliveryNote','Albaranes cliente','find','find','N__ALBAR_N',NULL); INSERT INTO `docuware` VALUES (1,'deliveryNote','Albaranes cliente','find','find','N__ALBAR_N',NULL);
INSERT INTO `docuware` VALUES (2,'deliveryNote','Albaranes cliente','store','Archivar','N__ALBAR_N',NULL); INSERT INTO `docuware` VALUES (2,'deliveryNote','Albaranes cliente','store','Archivar','N__ALBAR_N',NULL);
@ -3046,6 +3072,7 @@ INSERT INTO `message` VALUES (20,'clientNotVerified','Incomplete tax data, pleas
INSERT INTO `message` VALUES (21,'quantityLessThanMin','The quantity cannot be less than the minimum'); INSERT INTO `message` VALUES (21,'quantityLessThanMin','The quantity cannot be less than the minimum');
INSERT INTO `message` VALUES (22,'ORDER_ROW_UNAVAILABLE','The ordered quantity exceeds the available'); INSERT INTO `message` VALUES (22,'ORDER_ROW_UNAVAILABLE','The ordered quantity exceeds the available');
INSERT INTO `message` VALUES (23,'AMOUNT_NOT_MATCH_GROUPING','The quantity ordered does not match the grouping'); INSERT INTO `message` VALUES (23,'AMOUNT_NOT_MATCH_GROUPING','The quantity ordered does not match the grouping');
INSERT INTO `message` VALUES (24,'orderLinesWithZero','There are empty lines. Please delete them');
INSERT INTO `metatag` VALUES (2,'title','Verdnatura Levante SL, mayorista de flores, plantas y complementos para floristería y decoración'); INSERT INTO `metatag` VALUES (2,'title','Verdnatura Levante SL, mayorista de flores, plantas y complementos para floristería y decoración');
INSERT INTO `metatag` VALUES (3,'description','Verdnatura Levante SL, mayorista de flores, plantas y complementos para floristería y decoración. Envío a toda España, pedidos por internet o por teléfono.'); INSERT INTO `metatag` VALUES (3,'description','Verdnatura Levante SL, mayorista de flores, plantas y complementos para floristería y decoración. Envío a toda España, pedidos por internet o por teléfono.');

View File

@ -602,7 +602,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','projectState'
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','entrySplit__','alexm@%','0000-00-00 00:00:00','Select,Insert,Update,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','entrySplit__','alexm@%','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','entryType','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','entryType','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','projectNotes','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','projectNotes','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','project','juan@10.5.1.1','0000-00-00 00:00:00','Select,Update',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','project','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','productionConfig','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','productionConfig','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','manager','productionConfig','alexm@%','0000-00-00 00:00:00','Update',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','manager','productionConfig','alexm@%','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','creditInsurance','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','creditInsurance','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
@ -1494,6 +1494,17 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','travelThermograph','
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','thermograph','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','thermograph','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyerSalesAssistant','Tickets','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyerSalesAssistant','Tickets','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','sim','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','sim','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','zoneGeo','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','itemCampaign','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemCampaign','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','campaign','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','awb','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','awbComponent','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','awbComponentType','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemSoldOutTag','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemDurationTag','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemGrowingTag','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminBoss','receipt','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update,Delete','');
/*!40000 ALTER TABLE `tables_priv` ENABLE KEYS */; /*!40000 ALTER TABLE `tables_priv` ENABLE KEYS */;
/*!40000 ALTER TABLE `columns_priv` DISABLE KEYS */; /*!40000 ALTER TABLE `columns_priv` DISABLE KEYS */;
@ -2138,6 +2149,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','srt','delivery','buffer_settypebynam
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','expedition_getstate','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','expedition_getstate','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','srt','delivery','expedition_scan','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','srt','delivery','expedition_scan','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_get','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_get','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','remittance_calc','PROCEDURE','jgallego@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_add','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_add','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_getsaledate','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_getsaledate','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_filterbuyer','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_filterbuyer','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@ -2200,7 +2212,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','claimManager','entry_getTransfe
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','entry_getTransfer','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','entry_getTransfer','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','intrastat_estimateNet','FUNCTION','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','intrastat_estimateNet','FUNCTION','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','artificialBoss','confection_controlSource','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','artificialBoss','confection_controlSource','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','remittance_calc','PROCEDURE','alexm@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','developer','connection_kill','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','util','developer','connection_kill','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','client_getRisk','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','client_getRisk','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','account','developer','user_hasRole','FUNCTION','root@localhost','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','account','developer','user_hasRole','FUNCTION','root@localhost','Execute','0000-00-00 00:00:00');
@ -2308,6 +2319,7 @@ INSERT IGNORE INTO `global_priv` VALUES ('','root','{\"access\": 549755781119, \
INSERT IGNORE INTO `global_priv` VALUES ('','salesAssistant','{\"access\":0,\"version_id\":101106,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','salesAssistant','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','salesBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','salesBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','salesPerson','{\"access\": 0, \"is_role\": true,\"version_id\":101106}'); INSERT IGNORE INTO `global_priv` VALUES ('','salesPerson','{\"access\": 0, \"is_role\": true,\"version_id\":101106}');
INSERT IGNORE INTO `global_priv` VALUES ('','salesPersonClaim','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','salesTeamBoss','{\"access\":0,\"version_id\":100707,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','salesTeamBoss','{\"access\":0,\"version_id\":100707,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','salix','{\"access\":33555456,\"version_id\":100707,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','salix','{\"access\":33555456,\"version_id\":100707,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','sysadmin','{\"access\": 201326592, \"is_role\": true, \"version_id\": 100707}'); INSERT IGNORE INTO `global_priv` VALUES ('','sysadmin','{\"access\": 201326592, \"is_role\": true, \"version_id\": 100707}');

View File

@ -2543,17 +2543,17 @@ CREATE TABLE `defaulting` (
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
-- --
-- Table structure for table `f_tvc` -- Table structure for table `f_tvc__`
-- --
DROP TABLE IF EXISTS `f_tvc`; DROP TABLE IF EXISTS `f_tvc__`;
/*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */; /*!40101 SET character_set_client = utf8 */;
CREATE TABLE `f_tvc` ( CREATE TABLE `f_tvc__` (
`Id_Ticket` int(11) NOT NULL, `Id_Ticket` int(11) NOT NULL,
PRIMARY KEY (`Id_Ticket`), PRIMARY KEY (`Id_Ticket`),
CONSTRAINT `id_ticket_to_comisionantes` FOREIGN KEY (`Id_Ticket`) REFERENCES `vn`.`ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE CONSTRAINT `id_ticket_to_comisionantes` FOREIGN KEY (`Id_Ticket`) REFERENCES `vn`.`ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Almacenamos la lista de tickets para agilizar la consulta. Corresponde a los clientes REAL y en los almacenes COMISIONANTES'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='@deprecated 2025-01-15';
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
-- --
@ -6249,19 +6249,27 @@ BEGIN
* @param vDateFrom Fecha desde * @param vDateFrom Fecha desde
* @param vDateTo Fecha hasta * @param vDateTo Fecha hasta
*/ */
IF vDateFrom IS NULL THEN DECLARE vDaysInYear INT;
SET vDateFrom = util.VN_CURDATE() - INTERVAL WEEKDAY(util.VN_CURDATE()) DAY; SET vDaysInYear = DATEDIFF(util.lastDayOfYear(CURDATE()), util.firstDayOfYear(CURDATE()));
SET vDateFrom = COALESCE(vDateFrom, util.VN_CURDATE());
SET vDateTo = COALESCE(vDateTo, util.VN_CURDATE());
IF DATEDIFF(vDateTo, vDateFrom) > vDaysInYear THEN
CALL util.throw('The period cannot be longer than one year');
END IF; END IF;
IF vDateTo IS NULL THEN -- Obtiene el primer día de la semana de esa fecha
SET vDateTo = vDateFrom + INTERVAL 6 DAY; SET vDateFrom = DATE_SUB(vDateFrom, INTERVAL ((WEEKDAY(vDateFrom) + 1) % 7) DAY);
END IF;
-- Obtiene el último día de la semana de esa fecha
SET vDateTo = DATE_ADD(vDateTo, INTERVAL (6 - ((WEEKDAY(vDateTo) + 1) % 7)) DAY);
CALL cache.last_buy_refresh(FALSE); CALL cache.last_buy_refresh(FALSE);
REPLACE bs.waste REPLACE bs.waste
SELECT YEAR(t.shipped), SELECT YEARWEEK(t.shipped, 6) DIV 100,
WEEK(t.shipped, 4), WEEK(t.shipped, 6),
it.workerFk, it.workerFk,
it.id, it.id,
s.itemFk, s.itemFk,
@ -6307,9 +6315,9 @@ BEGIN
JOIN cache.last_buy lb ON lb.item_id = i.id JOIN cache.last_buy lb ON lb.item_id = i.id
AND lb.warehouse_id = w.id AND lb.warehouse_id = w.id
JOIN vn.buy b ON b.id = lb.buy_id JOIN vn.buy b ON b.id = lb.buy_id
WHERE t.shipped BETWEEN vDateFrom AND vDateTo WHERE t.shipped BETWEEN vDateFrom AND util.dayEnd(vDateTo)
AND w.isManaged AND w.isManaged
GROUP BY YEAR(t.shipped), WEEK(t.shipped, 4), i.id; GROUP BY YEARWEEK(t.shipped, 6) DIV 100, WEEK(t.shipped, 6), i.id;
END ;; END ;;
DELIMITER ; DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -13807,7 +13815,7 @@ BEGIN
) INTO vHas0Amount; ) INTO vHas0Amount;
IF vHas0Amount THEN IF vHas0Amount THEN
CALL util.throw('Hay líneas vacías. Por favor, elimínelas'); CALL util.throw('orderLinesWithZero');
END IF; END IF;
START TRANSACTION; START TRANSACTION;
@ -25870,7 +25878,7 @@ CREATE TABLE `address` (
`isActive` tinyint(4) NOT NULL DEFAULT 1, `isActive` tinyint(4) NOT NULL DEFAULT 1,
`longitude` decimal(11,7) DEFAULT NULL COMMENT 'Indica la última longitud proporcionada por tabla delivery', `longitude` decimal(11,7) DEFAULT NULL COMMENT 'Indica la última longitud proporcionada por tabla delivery',
`latitude` decimal(11,7) DEFAULT NULL COMMENT 'Indica la última latitud proporcionada por tabla delivery', `latitude` decimal(11,7) DEFAULT NULL COMMENT 'Indica la última latitud proporcionada por tabla delivery',
`isEqualizated` tinyint(1) NOT NULL DEFAULT 0, `isEqualizated` tinyint(1) DEFAULT NULL,
`customsAgentFk` int(11) DEFAULT NULL, `customsAgentFk` int(11) DEFAULT NULL,
`incotermsFk` varchar(3) DEFAULT NULL, `incotermsFk` varchar(3) DEFAULT NULL,
`isLogifloraAllowed` tinyint(4) NOT NULL DEFAULT 0, `isLogifloraAllowed` tinyint(4) NOT NULL DEFAULT 0,
@ -27717,6 +27725,7 @@ CREATE TABLE `client` (
`hasDailyInvoice` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indica si el cliente requiere facturación diaria por defecto se copiará lo que tenga country.hasDailyInvoice', `hasDailyInvoice` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indica si el cliente requiere facturación diaria por defecto se copiará lo que tenga country.hasDailyInvoice',
`geoFk` int(11) DEFAULT NULL, `geoFk` int(11) DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL, `editorFk` int(10) unsigned DEFAULT NULL,
`packagesDiscountFactor` decimal(4,3) NOT NULL DEFAULT 1.000 COMMENT 'Porcentaje de ajuste entre el numero de bultos medio del cliente, y el número medio óptimo para las zonas en las que compra',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `IF` (`fi`), UNIQUE KEY `IF` (`fi`),
KEY `Id_Trabajador` (`salesPersonFk`), KEY `Id_Trabajador` (`salesPersonFk`),
@ -27796,6 +27805,8 @@ CREATE TABLE `clientConfig` (
`defaultHasCoreVnl` tinyint(1) DEFAULT NULL, `defaultHasCoreVnl` tinyint(1) DEFAULT NULL,
`defaultMandateTypeFk` smallint(5) DEFAULT NULL, `defaultMandateTypeFk` smallint(5) DEFAULT NULL,
`monthsToDisableUser` int(10) unsigned DEFAULT NULL, `monthsToDisableUser` int(10) unsigned DEFAULT NULL,
`packagesOptimum` int(10) unsigned NOT NULL DEFAULT 20 COMMENT 'Numero de bultos por cliente/dia para conseguir el precio optimo',
`monthsToCalcOptimumPrice` tinyint(3) unsigned NOT NULL DEFAULT 3 COMMENT 'Número de meses a usar para el cálculo de client.packagesDiscountFactor',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `clientNewConfigPayMethod_FK` (`defaultPayMethodFk`), KEY `clientNewConfigPayMethod_FK` (`defaultPayMethodFk`),
KEY `clientNewConfigMandateType_FK` (`defaultMandateTypeFk`), KEY `clientNewConfigMandateType_FK` (`defaultMandateTypeFk`),
@ -28922,6 +28933,7 @@ CREATE TABLE `country` (
`isSocialNameUnique` tinyint(1) NOT NULL DEFAULT 1, `isSocialNameUnique` tinyint(1) NOT NULL DEFAULT 1,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `country_unique` (`code`), UNIQUE KEY `country_unique` (`code`),
UNIQUE KEY `country_unique_name` (`name`),
KEY `currency_id_fk_idx` (`currencyFk`), KEY `currency_id_fk_idx` (`currencyFk`),
KEY `country_Ix4` (`name`), KEY `country_Ix4` (`name`),
KEY `continent_id_fk_idx` (`continentFk`), KEY `continent_id_fk_idx` (`continentFk`),
@ -29052,6 +29064,7 @@ CREATE TABLE `currency` (
`code` varchar(3) NOT NULL, `code` varchar(3) NOT NULL,
`name` varchar(45) DEFAULT NULL, `name` varchar(45) DEFAULT NULL,
`ratio` double NOT NULL DEFAULT 1, `ratio` double NOT NULL DEFAULT 1,
`hasToDownloadRate` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Si se guarda el tipo de cambio diariamente en referenceRate',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `Moneda_UNIQUE` (`code`) UNIQUE KEY `Moneda_UNIQUE` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
@ -29963,6 +29976,8 @@ CREATE TABLE `entry` (
`editorFk` int(10) unsigned DEFAULT NULL, `editorFk` int(10) unsigned DEFAULT NULL,
`lockerUserFk` int(10) unsigned DEFAULT NULL, `lockerUserFk` int(10) unsigned DEFAULT NULL,
`locked` datetime DEFAULT current_timestamp(), `locked` datetime DEFAULT current_timestamp(),
`initialTemperature` decimal(10,2) DEFAULT NULL COMMENT 'Temperatura de como lo recibimos del proveedor ej. en colombia',
`finalTemperature` decimal(10,2) DEFAULT NULL COMMENT 'Temperatura final de como llega a nuestras instalaciones',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `Id_Proveedor` (`supplierFk`), KEY `Id_Proveedor` (`supplierFk`),
KEY `Fecha` (`dated`), KEY `Fecha` (`dated`),
@ -31765,6 +31780,8 @@ CREATE TABLE `invoiceOut` (
`cplusTaxBreakFk` int(10) unsigned NOT NULL DEFAULT 1, `cplusTaxBreakFk` int(10) unsigned NOT NULL DEFAULT 1,
`cplusSubjectOpFk` int(10) unsigned NOT NULL DEFAULT 1, `cplusSubjectOpFk` int(10) unsigned NOT NULL DEFAULT 1,
`siiTrascendencyInvoiceOutFk` int(10) unsigned NOT NULL DEFAULT 1, `siiTrascendencyInvoiceOutFk` int(10) unsigned NOT NULL DEFAULT 1,
`customsAgentFk` int(11) DEFAULT NULL,
`incotermsFk` varchar(3) DEFAULT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `invoiceOut_unique` (`ref`), UNIQUE KEY `invoiceOut_unique` (`ref`),
KEY `Id_Banco` (`bankFk`), KEY `Id_Banco` (`bankFk`),
@ -31777,9 +31794,13 @@ CREATE TABLE `invoiceOut` (
KEY `Facturas_ibfk_5_idx` (`siiTrascendencyInvoiceOutFk`), KEY `Facturas_ibfk_5_idx` (`siiTrascendencyInvoiceOutFk`),
KEY `Facturas_idx_Vencimiento` (`dued`), KEY `Facturas_idx_Vencimiento` (`dued`),
KEY `invoiceOut_serial` (`serial`), KEY `invoiceOut_serial` (`serial`),
KEY `invoiceOut_customsAgentFk` (`customsAgentFk`),
KEY `invoiceOut_incotermsFk` (`incotermsFk`),
CONSTRAINT `invoiceOut_customsAgentFk` FOREIGN KEY (`customsAgentFk`) REFERENCES `customsAgent` (`id`) ON UPDATE CASCADE,
CONSTRAINT `invoiceOut_ibfk_2` FOREIGN KEY (`siiTypeInvoiceOutFk`) REFERENCES `siiTypeInvoiceOut` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceOut_ibfk_2` FOREIGN KEY (`siiTypeInvoiceOutFk`) REFERENCES `siiTypeInvoiceOut` (`id`) ON UPDATE CASCADE,
CONSTRAINT `invoiceOut_ibfk_3` FOREIGN KEY (`cplusSubjectOpFk`) REFERENCES `cplusSubjectOp` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceOut_ibfk_3` FOREIGN KEY (`cplusSubjectOpFk`) REFERENCES `cplusSubjectOp` (`id`) ON UPDATE CASCADE,
CONSTRAINT `invoiceOut_ibfk_4` FOREIGN KEY (`cplusTaxBreakFk`) REFERENCES `cplusTaxBreak` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceOut_ibfk_4` FOREIGN KEY (`cplusTaxBreakFk`) REFERENCES `cplusTaxBreak` (`id`) ON UPDATE CASCADE,
CONSTRAINT `invoiceOut_incotermsFk` FOREIGN KEY (`incotermsFk`) REFERENCES `incoterms` (`code`) ON UPDATE CASCADE,
CONSTRAINT `invoiceOut_serial` FOREIGN KEY (`serial`) REFERENCES `invoiceOutSerial` (`code`), CONSTRAINT `invoiceOut_serial` FOREIGN KEY (`serial`) REFERENCES `invoiceOutSerial` (`code`),
CONSTRAINT `invoice_bank_id` FOREIGN KEY (`bankFk`) REFERENCES `accounting` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoice_bank_id` FOREIGN KEY (`bankFk`) REFERENCES `accounting` (`id`) ON UPDATE CASCADE,
CONSTRAINT `invoice_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE CONSTRAINT `invoice_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE
@ -31971,6 +31992,7 @@ CREATE TABLE `item` (
`value12` varchar(50) DEFAULT NULL, `value12` varchar(50) DEFAULT NULL,
`tag13` varchar(20) DEFAULT NULL, `tag13` varchar(20) DEFAULT NULL,
`value13` varchar(50) DEFAULT NULL, `value13` varchar(50) DEFAULT NULL,
`isCustomInspectionRequired` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indicates if the item requires physical inspection at customs',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `item_supplyResponseFk_idx` (`supplyResponseFk`), UNIQUE KEY `item_supplyResponseFk_idx` (`supplyResponseFk`),
KEY `Color` (`inkFk`), KEY `Color` (`inkFk`),
@ -32249,6 +32271,21 @@ CREATE TABLE `itemCost` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Almacena los valores de rotacion en los ultimos 365 dias'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Almacena los valores de rotacion en los ultimos 365 dias';
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `itemDurationTag`
--
DROP TABLE IF EXISTS `itemDurationTag`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `itemDurationTag` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
-- --
-- Temporary table structure for view `itemEntryIn` -- Temporary table structure for view `itemEntryIn`
-- --
@ -32313,6 +32350,21 @@ CREATE TABLE `itemFarmingTag` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `itemGrowingTag`
--
DROP TABLE IF EXISTS `itemGrowingTag`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `itemGrowingTag` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
-- --
-- Table structure for table `itemImageQueue` -- Table structure for table `itemImageQueue`
-- --
@ -32861,6 +32913,21 @@ SET character_set_client = utf8;
1 AS `removed` */; 1 AS `removed` */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
--
-- Table structure for table `itemSoldOutTag`
--
DROP TABLE IF EXISTS `itemSoldOutTag`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `itemSoldOutTag` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
-- --
-- Table structure for table `itemStateTag` -- Table structure for table `itemStateTag`
-- --
@ -35450,6 +35517,21 @@ CREATE TABLE `productionConfigLog` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `productionCountry`
--
DROP TABLE IF EXISTS `productionCountry`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `productionCountry` (
`countryFk` mediumint(8) unsigned NOT NULL,
`volumeGrowthEstimatePercent` decimal(6,2) DEFAULT NULL COMMENT 'Porcentaje estimado de crecimiento del volumen',
PRIMARY KEY (`countryFk`),
CONSTRAINT `productionCountryVolume_countryFK` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Datos de producción por país';
/*!40101 SET character_set_client = @saved_cs_client */;
-- --
-- Table structure for table `productionError` -- Table structure for table `productionError`
-- --
@ -37982,7 +38064,7 @@ CREATE TABLE `supplier` (
`payDay` tinyint(4) unsigned DEFAULT NULL, `payDay` tinyint(4) unsigned DEFAULT NULL,
`payDemFk` tinyint(3) unsigned NOT NULL DEFAULT 7, `payDemFk` tinyint(3) unsigned NOT NULL DEFAULT 7,
`created` timestamp NOT NULL DEFAULT current_timestamp(), `created` timestamp NOT NULL DEFAULT current_timestamp(),
`isReal` tinyint(1) unsigned NOT NULL DEFAULT 0, `isReal` tinyint(1) unsigned NOT NULL DEFAULT 1,
`note` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `note` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
`postcodeFk` int(11) unsigned DEFAULT NULL, `postcodeFk` int(11) unsigned DEFAULT NULL,
`postCode` char(8) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `postCode` char(8) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
@ -38575,6 +38657,7 @@ CREATE TABLE `ticket` (
KEY `tickets_zone_fk_idx` (`zoneFk`), KEY `tickets_zone_fk_idx` (`zoneFk`),
KEY `ticket_fk_editor` (`editorFk`), KEY `ticket_fk_editor` (`editorFk`),
KEY `ticket_cmrFk` (`cmrFk`), KEY `ticket_cmrFk` (`cmrFk`),
KEY `ticket_landed_IDX` (`landed`) USING BTREE,
CONSTRAINT `ticketCompany_Fk` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE, CONSTRAINT `ticketCompany_Fk` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE,
CONSTRAINT `ticket_cmrFk` FOREIGN KEY (`cmrFk`) REFERENCES `cmr` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticket_cmrFk` FOREIGN KEY (`cmrFk`) REFERENCES `cmr` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `ticket_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE, CONSTRAINT `ticket_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE,
@ -41251,6 +41334,7 @@ CREATE TABLE `zone` (
`agencyModeFk` int(11) NOT NULL, `agencyModeFk` int(11) NOT NULL,
`travelingDays` int(11) NOT NULL DEFAULT 1, `travelingDays` int(11) NOT NULL DEFAULT 1,
`price` decimal(10,2) DEFAULT NULL, `price` decimal(10,2) DEFAULT NULL,
`priceOptimum` decimal(10,2) NOT NULL COMMENT 'Precio mínimo que puede pagar un bulto',
`bonus` double NOT NULL DEFAULT 0, `bonus` double NOT NULL DEFAULT 0,
`isVolumetric` tinyint(1) NOT NULL DEFAULT 0, `isVolumetric` tinyint(1) NOT NULL DEFAULT 0,
`inflation` decimal(5,2) NOT NULL DEFAULT 1.00, `inflation` decimal(5,2) NOT NULL DEFAULT 1.00,
@ -41267,7 +41351,8 @@ CREATE TABLE `zone` (
KEY `zone_address_FK` (`addressFk`), KEY `zone_address_FK` (`addressFk`),
CONSTRAINT `fk_zone_2` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_zone_2` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `zone_address_FK` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON UPDATE CASCADE, CONSTRAINT `zone_address_FK` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON UPDATE CASCADE,
CONSTRAINT `zone_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`) CONSTRAINT `zone_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
CONSTRAINT `ck_zone_priceOptimum` CHECK (`priceOptimum` <= `price`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
@ -41360,6 +41445,7 @@ CREATE TABLE `zoneEvent` (
`hour` datetime DEFAULT NULL, `hour` datetime DEFAULT NULL,
`travelingDays` int(11) DEFAULT NULL, `travelingDays` int(11) DEFAULT NULL,
`price` decimal(10,2) DEFAULT NULL, `price` decimal(10,2) DEFAULT NULL,
`priceOptimum` decimal(10,2) DEFAULT NULL COMMENT 'Precio mínimo que puede pagar un bulto',
`bonus` decimal(10,2) DEFAULT NULL, `bonus` decimal(10,2) DEFAULT NULL,
`m3Max` decimal(10,2) unsigned DEFAULT NULL, `m3Max` decimal(10,2) unsigned DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL, `editorFk` int(10) unsigned DEFAULT NULL,
@ -41367,7 +41453,8 @@ CREATE TABLE `zoneEvent` (
UNIQUE KEY `zoneFk` (`zoneFk`,`type`,`dated`), UNIQUE KEY `zoneFk` (`zoneFk`,`type`,`dated`),
KEY `zoneEvent_fk_editor` (`editorFk`), KEY `zoneEvent_fk_editor` (`editorFk`),
CONSTRAINT `zoneEvent_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`), CONSTRAINT `zoneEvent_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
CONSTRAINT `zoneEvent_ibfk_1` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE CONSTRAINT `zoneEvent_ibfk_1` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `ck_zoneEvent_priceOptimum` CHECK (`priceOptimum` <= `price`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
@ -41601,6 +41688,24 @@ END */ ;;
/*!50003 SET character_set_client = @saved_cs_client */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;;
/*!50003 SET character_set_results = @saved_cs_results */ ;; /*!50003 SET character_set_results = @saved_cs_results */ ;;
/*!50003 SET collation_connection = @saved_col_connection */ ;; /*!50003 SET collation_connection = @saved_col_connection */ ;;
/*!50106 DROP EVENT IF EXISTS `client_setPackagesDiscountFactor` */;;
DELIMITER ;;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
/*!50003 SET character_set_client = utf8mb4 */ ;;
/*!50003 SET character_set_results = utf8mb4 */ ;;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
/*!50106 CREATE*/ /*!50117 DEFINER=`vn`@`localhost`*/ /*!50106 EVENT `client_setPackagesDiscountFactor` ON SCHEDULE EVERY 1 DAY STARTS '2024-10-18 03:00:00' ON COMPLETION PRESERVE ENABLE DO CALL client_setPackagesDiscountFactor() */ ;;
/*!50003 SET time_zone = @saved_time_zone */ ;;
/*!50003 SET sql_mode = @saved_sql_mode */ ;;
/*!50003 SET character_set_client = @saved_cs_client */ ;;
/*!50003 SET character_set_results = @saved_cs_results */ ;;
/*!50003 SET collation_connection = @saved_col_connection */ ;;
/*!50106 DROP EVENT IF EXISTS `client_unassignSalesPerson` */;; /*!50106 DROP EVENT IF EXISTS `client_unassignSalesPerson` */;;
DELIMITER ;; DELIMITER ;;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;;
@ -49224,7 +49329,19 @@ BEGIN
SELECT tcc.warehouseFK, SELECT tcc.warehouseFK,
tcc.itemFk, tcc.itemFk,
c2.id, c2.id,
z.inflation * ROUND(ic.cm3delivery * (IFNULL(zo.price,5000) - IFNULL(zo.bonus,0)) / (1000 * vc.standardFlowerBox) , 4) cost z.inflation
* ROUND(
ic.cm3delivery
* (
(
zo.priceOptimum + (( zo.price - zo.priceOptimum) * 2 * ( 1 - c.packagesDiscountFactor))
)
- IFNULL(zo.bonus, 0)
)
/ (1000 * vc.standardFlowerBox),
4
) cost
FROM tmp.ticketComponentCalculate tcc FROM tmp.ticketComponentCalculate tcc
JOIN item i ON i.id = tcc.itemFk JOIN item i ON i.id = tcc.itemFk
JOIN tmp.zoneOption zo ON zo.zoneFk = vZoneFk JOIN tmp.zoneOption zo ON zo.zoneFk = vZoneFk
@ -49232,6 +49349,7 @@ BEGIN
JOIN agencyMode am ON am.id = z.agencyModeFk JOIN agencyMode am ON am.id = z.agencyModeFk
JOIN vn.volumeConfig vc JOIN vn.volumeConfig vc
JOIN vn.component c2 ON c2.code = 'delivery' JOIN vn.component c2 ON c2.code = 'delivery'
JOIN `client` c on c.id = vClientFk
LEFT JOIN itemCost ic ON ic.warehouseFk = tcc.warehouseFk LEFT JOIN itemCost ic ON ic.warehouseFk = tcc.warehouseFk
AND ic.itemFk = tcc.itemFk AND ic.itemFk = tcc.itemFk
HAVING cost <> 0; HAVING cost <> 0;
@ -50934,6 +51052,41 @@ BEGIN
ORDER BY clientFk; ORDER BY clientFk;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `client_setPackagesDiscountFactor` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `client_setPackagesDiscountFactor`()
BEGIN
/**
* Set the discount factor for the packages of the clients.
*/
UPDATE client c
JOIN (
SELECT t.clientFk,
LEAST((
SUM(t.packages) / COUNT(DISTINCT DATE(t.shipped))
) / cc.packagesOptimum, 1) discountFactor
FROM ticket t
JOIN clientConfig cc ON TRUE
WHERE t.shipped > util.VN_CURDATE() - INTERVAL cc.monthsToCalcOptimumPrice MONTH
AND t.packages
GROUP BY t.clientFk
) ca ON c.id = ca.clientFk
SET c.packagesDiscountFactor = ca.discountFactor;
END ;; END ;;
DELIMITER ; DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -58727,6 +58880,7 @@ BEGIN
DECLARE vMaxShipped DATE; DECLARE vMaxShipped DATE;
DECLARE vDone BOOL; DECLARE vDone BOOL;
DECLARE vTicketFk INT; DECLARE vTicketFk INT;
DECLARE vAddressFk INT;
DECLARE vCursor CURSOR FOR DECLARE vCursor CURSOR FOR
SELECT id SELECT id
FROM tmp.ticketToInvoice; FROM tmp.ticketToInvoice;
@ -58741,11 +58895,13 @@ BEGIN
DATE(vInvoiceDate) >= invoiceOut_getMaxIssued( DATE(vInvoiceDate) >= invoiceOut_getMaxIssued(
vSerial, vSerial,
t.companyFk, t.companyFk,
YEAR(vInvoiceDate)) YEAR(vInvoiceDate)),
t.addressFk
INTO vClientFk, INTO vClientFk,
vCompanyFk, vCompanyFk,
vMaxShipped, vMaxShipped,
vIsCorrectInvoiceDate vIsCorrectInvoiceDate,
vAddressFk
FROM tmp.ticketToInvoice tt FROM tmp.ticketToInvoice tt
JOIN ticket t ON t.id = tt.id; JOIN ticket t ON t.id = tt.id;
@ -58798,7 +58954,9 @@ BEGIN
clientFk, clientFk,
dued, dued,
companyFk, companyFk,
siiTypeInvoiceOutFk siiTypeInvoiceOutFk,
customsAgentFk,
incotermsFk
) )
SELECT SELECT
1, 1,
@ -58811,9 +58969,12 @@ BEGIN
vCplusCorrectingInvoiceTypeFk, vCplusCorrectingInvoiceTypeFk,
IF(vSerial = vSimplifiedSerial, IF(vSerial = vSimplifiedSerial,
vCplusSimplifiedInvoiceTypeFk, vCplusSimplifiedInvoiceTypeFk,
vCplusStandardInvoiceTypeFk)) vCplusStandardInvoiceTypeFk)),
FROM client a.customsAgentFk,
WHERE id = vClientFk; a.incotermsFk
FROM client c
JOIN address a ON a.id = vAddressFk
WHERE c.id = vClientFk;
SET vNewInvoiceId = LAST_INSERT_ID(); SET vNewInvoiceId = LAST_INSERT_ID();
@ -67481,14 +67642,14 @@ DELIMITER ;
/*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `remittance_calc` */; /*!50003 DROP PROCEDURE IF EXISTS `remittance_calc` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET collation_connection = utf8mb4_general_ci */ ;
DELIMITER ;; DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `remittance_calc`( CREATE DEFINER=`vn`@`localhost` PROCEDURE `remittance_calc`(
vDated DATE vDated DATE
@ -67552,7 +67713,7 @@ BEGIN
) risk ON risk.clientFk = c.id ) risk ON risk.clientFk = c.id
GROUP BY risk.companyFk, c.id GROUP BY risk.companyFk, c.id
HAVING receipt > 10 HAVING receipt > 1
) sub ON sub.id = c.id ) sub ON sub.id = c.id
JOIN supplier s ON s.id = sub.companyFk JOIN supplier s ON s.id = sub.companyFk
JOIN company co ON co.id = sub.companyFk JOIN company co ON co.id = sub.companyFk
@ -68661,10 +68822,11 @@ BEGIN
TRUE, TRUE,
sc.userFk, sc.userFk,
s.id s.id
FROM vn.sectorCollection sc FROM sectorCollection sc
JOIN vn.sectorCollectionSaleGroup scsg ON scsg.sectorCollectionFk = sc.id JOIN sectorCollectionSaleGroup scsg ON scsg.sectorCollectionFk = sc.id
JOIN vn.saleGroupDetail sgd ON sgd.saleGroupFk = scsg.saleGroupFk JOIN saleGroupDetail sgd ON sgd.saleGroupFk = scsg.saleGroupFk
JOIN vn.state s ON s.code = 'OK PREVIOUS' JOIN state s ON s.code = 'OK PREVIOUS'
JOIN itemShelvingSale iss ON iss.saleFk = sgd.saleFk
WHERE sc.id = vSectorCollectionFk; WHERE sc.id = vSectorCollectionFk;
END ;; END ;;
DELIMITER ; DELIMITER ;
@ -74493,9 +74655,6 @@ BEGIN
IFNULL(sat.supplierFk, su.id) supplierFk, IFNULL(sat.supplierFk, su.id) supplierFk,
t.landed t.landed
FROM ticket t FROM ticket t
JOIN ticketState ts ON ts.ticketFk = t.id
JOIN `state` s ON s.id = ts.stateFk
JOIN alertLevel al ON al.id = s.alertLevel
JOIN client c ON c.id = t.clientFk JOIN client c ON c.id = t.clientFk
JOIN `address` a ON a.id = t.addressFk JOIN `address` a ON a.id = t.addressFk
JOIN province p ON p.id = a.provinceFk JOIN province p ON p.id = a.provinceFk
@ -74512,8 +74671,7 @@ BEGIN
LEFT JOIN agency ag ON ag.id = am.agencyFk LEFT JOIN agency ag ON ag.id = am.agencyFk
LEFT JOIN supplierAgencyTerm sat ON sat.agencyFk = ag.id LEFT JOIN supplierAgencyTerm sat ON sat.agencyFk = ag.id
AND wo.isFreelance AND wo.isFreelance
WHERE al.code IN ('PACKED', 'DELIVERED') WHERE co.code <> 'ES'
AND co.code <> 'ES'
AND am.name <> 'ABONO' AND am.name <> 'ABONO'
AND w.code = 'ALG' AND w.code = 'ALG'
AND t.id = vSelf AND t.id = vSelf
@ -81580,26 +81738,27 @@ DELIMITER ;
DELIMITER ;; DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `zone_getAddresses`( CREATE DEFINER=`vn`@`localhost` PROCEDURE `zone_getAddresses`(
vSelf INT, vSelf INT,
vShipped DATE, vLanded DATE,
vDepartmentFk INT vDepartmentFk INT
) )
BEGIN BEGIN
/** /**
* Devuelve un listado de todos los clientes activos * Devuelve un listado de todos los clientes activos
* con consignatarios a los que se les puede * con consignatarios a los que se les puede
* vender producto para esa zona. * entregar producto para esa zona.
* *
* @param vSelf Id de zona * @param vSelf Id de zona
* @param vShipped Fecha de envio * @param vLanded Fecha de entrega
* @param vDepartmentFk Id de departamento * @param vDepartmentFk Id de departamento | NULL para mostrar todos
* @return Un select * @return Un select
*/ */
CALL zone_getPostalCode(vSelf); CALL zone_getPostalCode(vSelf);
WITH clientWithTicket AS ( WITH clientWithTicket AS (
SELECT clientFk SELECT DISTINCT clientFk
FROM vn.ticket FROM vn.ticket
WHERE shipped BETWEEN vShipped AND util.dayEnd(vShipped) WHERE landed BETWEEN vLanded AND util.dayEnd(vLanded)
AND NOT isDeleted
) )
SELECT c.id, SELECT c.id,
c.name, c.name,
@ -81609,7 +81768,7 @@ BEGIN
u.name username, u.name username,
aai.invoiced, aai.invoiced,
cnb.lastShipped, cnb.lastShipped,
cwt.clientFk IF(cwt.clientFk, TRUE, FALSE) hasTicket
FROM vn.client c FROM vn.client c
JOIN vn.worker w ON w.id = c.salesPersonFk JOIN vn.worker w ON w.id = c.salesPersonFk
JOIN vn.workerDepartment wd ON wd.workerFk = w.id JOIN vn.workerDepartment wd ON wd.workerFk = w.id
@ -81629,7 +81788,7 @@ BEGIN
AND c.isActive AND c.isActive
AND ct.code = 'normal' AND ct.code = 'normal'
AND bt.code <> 'worker' AND bt.code <> 'worker'
AND (d.id = vDepartmentFk OR NOT vDepartmentFk) AND (d.id = vDepartmentFk OR vDepartmentFk IS NULL)
GROUP BY c.id; GROUP BY c.id;
DROP TEMPORARY TABLE tmp.zoneNodes; DROP TEMPORARY TABLE tmp.zoneNodes;
@ -82342,6 +82501,7 @@ BEGIN
TIME(IFNULL(e.`hour`, z.`hour`)) `hour`, TIME(IFNULL(e.`hour`, z.`hour`)) `hour`,
l.travelingDays, l.travelingDays,
IFNULL(e.price, z.price) price, IFNULL(e.price, z.price) price,
IFNULL(e.priceOptimum, z.priceOptimum) priceOptimum,
IFNULL(e.bonus, z.bonus) bonus, IFNULL(e.bonus, z.bonus) bonus,
l.landed, l.landed,
vShipped shipped vShipped shipped
@ -90882,4 +91042,4 @@ USE `vn2008`;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2025-01-07 6:51:38 -- Dump completed on 2025-01-28 7:08:42

View File

@ -6804,6 +6804,30 @@ DELIMITER ;;
FOR EACH ROW FOR EACH ROW
BEGIN BEGIN
SET NEW.editorFk = account.myUser_getId(); SET NEW.editorFk = account.myUser_getId();
IF NOT(NEW.`countryFk` <=> OLD.`countryFk`) OR NOT(NEW.`itemFk` <=> OLD.`itemFk`) THEN
CALL util.throw('Only the VAT can be modified');
END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemTaxCountry_beforeDelete`
BEFORE DELETE ON `itemTaxCountry`
FOR EACH ROW
BEGIN
CALL util.throw('Records in this table cannot be deleted');
END */;; END */;;
DELIMITER ; DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -11019,6 +11043,92 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; /*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;; DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`workerMana_beforeInsert`
BEFORE INSERT ON `workerMana`
FOR EACH ROW
BEGIN
IF (SELECT EXISTS(SELECT TRUE FROM workerManaExcluded WHERE workerFk = NEW.workerFk)) THEN
CALL util.throw('Worker is excluded from mana');
END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`workerMana_beforeUpdate`
BEFORE UPDATE ON `workerMana`
FOR EACH ROW
BEGIN
IF (SELECT EXISTS(SELECT TRUE FROM workerManaExcluded WHERE workerFk = NEW.workerFk)) THEN
CALL util.throw('Worker is excluded from mana');
END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`workerManaExcluded_beforeInsert`
BEFORE INSERT ON `workerManaExcluded`
FOR EACH ROW
BEGIN
DELETE FROM workerMana
WHERE workerFk = NEW.workerFk;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`workerManaExcluded_beforeUpdate`
BEFORE UPDATE ON `workerManaExcluded`
FOR EACH ROW
BEGIN
DELETE FROM workerMana
WHERE workerFk = NEW.workerFk;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`workerTimeControl_beforeInsert` /*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`workerTimeControl_beforeInsert`
BEFORE INSERT ON `workerTimeControl` BEFORE INSERT ON `workerTimeControl`
FOR EACH ROW FOR EACH ROW
@ -11085,11 +11195,13 @@ DELIMITER ;;
AFTER DELETE ON `workerTimeControl` AFTER DELETE ON `workerTimeControl`
FOR EACH ROW FOR EACH ROW
BEGIN BEGIN
IF account.myUser_getId() IS NOT NULL THEN
INSERT INTO workerLog INSERT INTO workerLog
SET `action` = 'delete', SET `action` = 'delete',
`changedModel` = 'WorkerTimeControl', `changedModel` = 'WorkerTimeControl',
`changedModelId` = OLD.id, `changedModelId` = OLD.id,
`userFk` = account.myUser_getId(); `userFk` = account.myUser_getId();
END IF;
END */;; END */;;
DELIMITER ; DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -11499,4 +11611,4 @@ USE `vn2008`;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2025-01-07 6:51:57 -- Dump completed on 2025-01-28 7:09:01

View File

@ -158,13 +158,13 @@ INSERT INTO `account`.`mailForward`(`account`, `forwardTo`)
INSERT INTO `vn`.`currency`(`id`, `code`, `name`, `ratio`) INSERT INTO `vn`.`currency`(`id`, `code`, `name`, `ratio`, `hasToDownloadRate`)
VALUES VALUES
(1, 'EUR', 'Euro', 1), (1, 'EUR', 'Euro', 1, FALSE),
(2, 'USD', 'Dollar USA', 1.4), (2, 'USD', 'Dollar USA', 1.4, TRUE),
(3, 'GBP', 'Libra', 1), (3, 'GBP', 'Libra', 1, TRUE),
(4, 'JPY', 'Yen Japones', 1), (4, 'JPY', 'Yen Japones', 1, FALSE),
(5, 'CNY', 'Yuan Chino', 1.2); (5, 'CNY', 'Yuan Chino', 1.2, TRUE);
INSERT INTO `vn`.`country`(`id`, `name`, `isUeeMember`, `code`, `currencyFk`, `ibanLength`, `continentFk`, `hasDailyInvoice`, `CEE`) INSERT INTO `vn`.`country`(`id`, `name`, `isUeeMember`, `code`, `currencyFk`, `ibanLength`, `continentFk`, `hasDailyInvoice`, `CEE`)
VALUES VALUES
@ -321,6 +321,11 @@ UPDATE `vn`.`agencyMode` SET `web` = 1, `reportMail` = 'no-reply@gothamcity.com'
UPDATE `vn`.`agencyMode` SET `code` = 'refund' WHERE `id` = 23; UPDATE `vn`.`agencyMode` SET `code` = 'refund' WHERE `id` = 23;
INSERT INTO `vn`.`agencyIncoming`(`agencyModeFk`)
VALUES
(1),
(2);
INSERT INTO `vn`.`payMethod`(`id`,`code`, `name`, `graceDays`, `outstandingDebt`, `isIbanRequiredForClients`, `isIbanRequiredForSuppliers`, `hasVerified`) INSERT INTO `vn`.`payMethod`(`id`,`code`, `name`, `graceDays`, `outstandingDebt`, `isIbanRequiredForClients`, `isIbanRequiredForSuppliers`, `hasVerified`)
VALUES VALUES
(1, NULL, 'PayMethod one', 0, 001, 0, 0, 0), (1, NULL, 'PayMethod one', 0, 001, 0, 0, 0),
@ -694,22 +699,22 @@ INSERT INTO `vn`.`invoiceOutExpense`(`id`, `invoiceOutFk`, `amount`, `expenseFk`
(6, 4, 8.07, 2000000000, util.VN_CURDATE()), (6, 4, 8.07, 2000000000, util.VN_CURDATE()),
(7, 5, 8.07, 2000000000, util.VN_CURDATE()); (7, 5, 8.07, 2000000000, util.VN_CURDATE());
INSERT INTO `vn`.`zone` (`id`, `name`, `hour`, `agencyModeFk`, `travelingDays`, `price`, `bonus`, `itemMaxSize`) INSERT INTO `vn`.`zone`
(`id`, `name`, `hour`, `agencyModeFk`, `travelingDays`, `price`, `bonus`, `itemMaxSize`, `priceOptimum`)
VALUES VALUES
(1, 'Zone pickup A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100), (1, 'Zone pickup A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100, 1),
(2, 'Zone pickup B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100), (2, 'Zone pickup B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100, 1),
(3, 'Zone 247 A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100), (3, 'Zone 247 A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100, 1),
(4, 'Zone 247 B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100), (4, 'Zone 247 B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100, 1),
(5, 'Zone expensive A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100), (5, 'Zone expensive A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100, 500),
(6, 'Zone expensive B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100), (6, 'Zone expensive B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100, 500),
(7, 'Zone refund', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 23, 0, 1, 0, 100), (7, 'Zone refund', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 23, 0, 1, 0, 100, 0.5),
(8, 'Zone others', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 10, 0, 1, 0, 100), (8, 'Zone others', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 10, 0, 1, 0, 100, 0.5),
(9, 'Zone superMan', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 2, 0, 1, 0, 100), (9, 'Zone superMan', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 2, 0, 1, 0, 100, 0.5),
(10, 'Zone teleportation', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 3, 0, 1, 0, 100), (10, 'Zone teleportation', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 3, 0, 1, 0, 100, 0.5),
(11, 'Zone pickup C', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100), (11, 'Zone pickup C', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100, 0.5),
(12, 'Zone entanglement', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 4, 0, 1, 0, 100), (12, 'Zone entanglement', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 4, 0, 1, 0, 100, 0.5),
(13, 'Zone quantum break', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 5, 0, 1, 0, 100); (13, 'Zone quantum break', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 5, 0, 1, 0, 100, 0.5);
INSERT INTO `vn`.`zoneWarehouse` (`id`, `zoneFk`, `warehouseFk`) INSERT INTO `vn`.`zoneWarehouse` (`id`, `zoneFk`, `warehouseFk`)
VALUES VALUES
@ -747,13 +752,15 @@ INSERT INTO `vn`.`zoneConfig` (`id`, `scope`) VALUES (1, '1');
INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `zoneFk`, `dated`) INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `zoneFk`, `dated`)
VALUES VALUES
(1, '1899-12-30 12:15:00', 56, util.VN_CURDATE(), 1, 1, 'first route', 1.8, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1, util.VN_CURDATE()), (1, '1899-12-30 12:15:00', 133, util.VN_CURDATE(), 1, 1, 'first route', 1.8, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1, util.VN_CURDATE()),
(2, '1899-12-30 13:20:00', 56, util.VN_CURDATE(), 1, 2, 'second route', 0.2, 20, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 9, util.VN_CURDATE()), (2, '1899-12-30 13:20:00', 56, util.VN_CURDATE(), 1, 2, 'second route', 0.2, 20, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 9, util.VN_CURDATE()),
(3, '1899-12-30 14:30:00', 56, util.VN_CURDATE(), 2, 3, 'third route', 0.5, 30, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 10, util.VN_CURDATE()), (3, '1899-12-30 14:30:00', 56, util.VN_CURDATE(), 2, 3, 'third route', 0.5, 30, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 10, util.VN_CURDATE()),
(4, '1899-12-30 15:45:00', 56, util.VN_CURDATE(), 3, 4, 'fourth route', 0, 40, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 12, util.VN_CURDATE()), (4, '1899-12-30 15:45:00', 56, util.VN_CURDATE(), 3, 4, 'fourth route', 0, 40, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 12, util.VN_CURDATE()),
(5, '1899-12-30 16:00:00', 56, util.VN_CURDATE(), 4, 5, 'fifth route', 0.1, 50, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 13, util.VN_CURDATE()), (5, '1899-12-30 16:00:00', 56, util.VN_CURDATE(), 4, 5, 'fifth route', 0.1, 50, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 13, util.VN_CURDATE()),
(6, NULL, 57, util.VN_CURDATE(), 5, 7, 'sixth route', 1.7, 60, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 3, util.VN_CURDATE()), (6, NULL, 57, util.VN_CURDATE(), 5, 7, 'sixth route', 1.7, 60, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 3, util.VN_CURDATE()),
(7, NULL, 57, util.VN_CURDATE(), 6, 8, 'seventh route', 0, 70, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 5, util.VN_CURDATE()); (7, NULL, 57, util.VN_CURDATE(), 6, 8, 'seventh route', 0, 70, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 5, util.VN_CURDATE()),
(8, NULL, 133, util.VN_CURDATE(), 1, 1, 'eighth route', 1.8, 10.0, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1, util.VN_CURDATE()),
(9, NULL, 133, util.VN_CURDATE(), 1, 2, 'ninth route', 0.2, 20.0, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 9, util.VN_CURDATE());
INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `zonePrice`, `zoneBonus`, `created`, `weight`, `cmrFk`, `problem`, `risk`) INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `zonePrice`, `zoneBonus`, `created`, `weight`, `cmrFk`, `problem`, `risk`)
VALUES VALUES
@ -2634,9 +2641,9 @@ REPLACE INTO `vn`.`invoiceIn`(`id`, `serialNumber`,`serial`, `supplierFk`, `issu
(9, 1009, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1242, 0, 442, 1,util.VN_CURDATE()), (9, 1009, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1242, 0, 442, 1,util.VN_CURDATE()),
(10, 1010, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1243, 0, 442, 1,util.VN_CURDATE()); (10, 1010, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1243, 0, 442, 1,util.VN_CURDATE());
INSERT INTO `vn`.`invoiceInConfig` (`id`, `retentionRate`, `retentionName`, `sageFarmerWithholdingFk`, `daysAgo`) INSERT INTO `vn`.`invoiceInConfig` (`id`, `retentionRate`, `retentionName`, `sageFarmerWithholdingFk`, `daysAgo`, `balanceStartingDate`)
VALUES VALUES
(1, -2, '2% retention', 2, 45); (1, -2, '2% retention', 2, 45, '2000-01-01');
INSERT INTO `vn`.`invoiceInDueDay`(`invoiceInFk`, `dueDated`, `bankFk`, `amount`) INSERT INTO `vn`.`invoiceInDueDay`(`invoiceInFk`, `dueDated`, `bankFk`, `amount`)
VALUES VALUES
@ -3200,7 +3207,7 @@ UPDATE vn.department
SET workerFk = null; SET workerFk = null;
INSERT INTO vn.packaging INSERT INTO vn.packaging
VALUES('--', 2745600.00, 100.00, 120.00, 220.00, 0.00, 1, '2001-01-01 00:00:00.000', NULL, NULL, NULL, 0.00, 16, 0.00, 0, NULL, 0.00, NULL, NULL, 0, NULL, 0, 0,0,1); VALUES('--', 2745600.00, 100.00, 120.00, 220.00, 0.00, 1, '2001-01-01 00:00:00.000', NULL, NULL, NULL, 0.00, 16, 0.00, 0, NULL, 0.00, NULL, NULL, 0, NULL, 0, 0,0,1,0);
INSERT IGNORE INTO vn.intrastat INSERT IGNORE INTO vn.intrastat
@ -4045,6 +4052,9 @@ INSERT IGNORE INTO vn.saySimpleConfig (url, defaultChannel)
INSERT INTO vn.workerIrpf (workerFk,spouseNif, geographicMobilityDate) INSERT INTO vn.workerIrpf (workerFk,spouseNif, geographicMobilityDate)
VALUES (1106,'26493101E','2019-09-20'); VALUES (1106,'26493101E','2019-09-20');
INSERT INTO vn.payment (received, supplierFk, amount, currencyFk, divisa, bankFk, payMethodFk, bankingFees, concept, companyFk, created, isConciliated, dueDated, workerFk) VALUES
(util.VN_CURDATE(), 1, 1000.00, 1, NULL, 1, 1, 0.0, 'n/pago', 442, util.VN_CURDATE(), 1, util.VN_CURDATE(), 9);
INSERT INTO vn.referenceRate (currencyFk, dated, value) INSERT INTO vn.referenceRate (currencyFk, dated, value)
VALUES (2, '2000-12-01', 1.0495), VALUES (2, '2000-12-01', 1.0495),
(2, '2001-01-01', 1.0531), (2, '2001-01-01', 1.0531),
@ -4056,3 +4066,8 @@ INSERT IGNORE INTO vn.osrmConfig (id,url,tolerance)
INSERT IGNORE INTO vn.inventoryConfig INSERT IGNORE INTO vn.inventoryConfig
SET id = 1, SET id = 1,
supplierFk = 4; supplierFk = 4;
UPDATE vn.worker
SET isFreelance=1
WHERE firstName='deliveryFreelancer';

View File

@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`available_refres
OUT `vCalc` INT, OUT `vCalc` INT,
`vRefresh` INT, `vRefresh` INT,
`vWarehouse` INT, `vWarehouse` INT,
`vDated` DATE `vAvailabled` DATETIME
) )
proc: BEGIN proc: BEGIN
DECLARE vStartDate DATE; DECLARE vStartDate DATE;
@ -12,6 +12,7 @@ proc: BEGIN
DECLARE vInventoryDate DATE; DECLARE vInventoryDate DATE;
DECLARE vLifeScope DATE; DECLARE vLifeScope DATE;
DECLARE vWarehouseFkInventory INT; DECLARE vWarehouseFkInventory INT;
DECLARE vDated DATE;
DECLARE EXIT HANDLER FOR SQLEXCEPTION DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN BEGIN
@ -19,13 +20,17 @@ proc: BEGIN
RESIGNAL; RESIGNAL;
END; END;
IF vDated < util.VN_CURDATE() THEN IF vAvailabled < util.VN_CURDATE() THEN
LEAVE proc; LEAVE proc;
END IF; END IF;
SET vDated = DATE(vAvailabled);
SET vAvailabled = vDated + INTERVAL HOUR(vAvailabled) HOUR;
CALL vn.item_getStock(vWarehouse, vDated, NULL); CALL vn.item_getStock(vWarehouse, vDated, NULL);
SET vParams = CONCAT_WS('/', vWarehouse, vDated); SET vParams = CONCAT_WS('/', vWarehouse, vAvailabled);
CALL cache_calc_start (vCalc, vRefresh, 'available', vParams); CALL cache_calc_start (vCalc, vRefresh, 'available', vParams);
IF !vRefresh THEN IF !vRefresh THEN
@ -87,11 +92,10 @@ proc: BEGIN
SELECT i.itemFk, i.landed, i.quantity SELECT i.itemFk, i.landed, i.quantity
FROM vn.itemEntryIn i FROM vn.itemEntryIn i
JOIN itemRange ir ON ir.itemFk = i.itemFk JOIN itemRange ir ON ir.itemFk = i.itemFk
LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = i.entryFk
WHERE i.landed >= vStartDate WHERE i.landed >= vStartDate
AND IFNULL(i.availabled, i.landed) <= vAvailabled
AND (ir.ended IS NULL OR i.landed <= ir.ended) AND (ir.ended IS NULL OR i.landed <= ir.ended)
AND i.warehouseInFk = vWarehouse AND i.warehouseInFk = vWarehouse
AND ISNULL(wf.entryFk)
UNION ALL UNION ALL
SELECT i.itemFk, i.shipped, i.quantity SELECT i.itemFk, i.shipped, i.quantity
FROM vn.itemEntryOut i FROM vn.itemEntryOut i

View File

@ -23,6 +23,7 @@ BEGIN
DECLARE vInvoiceTypeInformativeCode VARCHAR(1); DECLARE vInvoiceTypeInformativeCode VARCHAR(1);
DECLARE vCountryCanariasCode, vCountryCeutaMelillaCode VARCHAR(2); DECLARE vCountryCanariasCode, vCountryCeutaMelillaCode VARCHAR(2);
DECLARE vCompanyCode INT; DECLARE vCompanyCode INT;
DECLARE vHasErrorTax BOOL DEFAULT FALSE;
SELECT SiglaNacion INTO vCountryCanariasCode SELECT SiglaNacion INTO vCountryCanariasCode
FROM Naciones FROM Naciones
@ -66,6 +67,24 @@ BEGIN
WHERE enlazadoSage = FALSE WHERE enlazadoSage = FALSE
AND Asiento <> 1 ; AND Asiento <> 1 ;
SELECT EXISTS (
SELECT TRUE
FROM vn.XDiario x
JOIN vn.invoiceIn ii ON ii.id = x.CLAVE
JOIN vn.invoiceInTax it ON it.invoiceInFk = ii.id
LEFT JOIN TiposIva ti ON ti.CodigoIva = it.taxTypeSageFk
LEFT JOIN taxType tt ON tt.id = it.taxTypeSageFk
WHERE x.FECHA BETWEEN vDatedFrom AND vDatedTo
AND NOT x.enlazadoSage
AND x.empresa_id = vCompanyFk
AND it.taxTypeSageFk
AND (ti.CodigoIva IS NULL OR tt.id IS NULL)
) INTO vHasErrorTax;
IF vHasErrorTax tHEN
CALL util.throw ('Error in tables for received invoices tax');
END IF;
CALL invoiceOut_manager(vYear, vCompanyFk); CALL invoiceOut_manager(vYear, vCompanyFk);
CALL invoiceIn_manager(vYear, vCompanyFk); CALL invoiceIn_manager(vYear, vCompanyFk);

View File

@ -0,0 +1,8 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`client_setPackagesDiscountFactor`
ON SCHEDULE EVERY 1 DAY
STARTS '2024-10-18 03:00:00.000'
ON COMPLETION PRESERVE
ENABLE
DO CALL client_setPackagesDiscountFactor()$$
DELIMITER ;

View File

@ -231,7 +231,19 @@ BEGIN
SELECT tcc.warehouseFK, SELECT tcc.warehouseFK,
tcc.itemFk, tcc.itemFk,
c2.id, c2.id,
z.inflation * ROUND(ic.cm3delivery * (IFNULL(zo.price,5000) - IFNULL(zo.bonus,0)) / (1000 * vc.standardFlowerBox) , 4) cost z.inflation
* ROUND(
ic.cm3delivery
* (
(
zo.priceOptimum + (( zo.price - zo.priceOptimum) * 2 * ( 1 - c.packagesDiscountFactor))
)
- IFNULL(zo.bonus, 0)
)
/ (1000 * vc.standardFlowerBox),
4
) cost
FROM tmp.ticketComponentCalculate tcc FROM tmp.ticketComponentCalculate tcc
JOIN item i ON i.id = tcc.itemFk JOIN item i ON i.id = tcc.itemFk
JOIN tmp.zoneOption zo ON zo.zoneFk = vZoneFk JOIN tmp.zoneOption zo ON zo.zoneFk = vZoneFk
@ -239,6 +251,7 @@ BEGIN
JOIN agencyMode am ON am.id = z.agencyModeFk JOIN agencyMode am ON am.id = z.agencyModeFk
JOIN vn.volumeConfig vc JOIN vn.volumeConfig vc
JOIN vn.component c2 ON c2.code = 'delivery' JOIN vn.component c2 ON c2.code = 'delivery'
JOIN `client` c on c.id = vClientFk
LEFT JOIN itemCost ic ON ic.warehouseFk = tcc.warehouseFk LEFT JOIN itemCost ic ON ic.warehouseFk = tcc.warehouseFk
AND ic.itemFk = tcc.itemFk AND ic.itemFk = tcc.itemFk
HAVING cost <> 0; HAVING cost <> 0;

View File

@ -0,0 +1,25 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost`
PROCEDURE `vn`.`client_setPackagesDiscountFactor`()
BEGIN
/**
* Set the discount factor for the packages of the clients.
*/
UPDATE client c
JOIN (
SELECT t.clientFk,
LEAST((
SUM(t.packages) / COUNT(DISTINCT DATE(t.shipped))
) / cc.packagesOptimum, 1) discountFactor
FROM ticket t
JOIN clientConfig cc ON TRUE
WHERE t.shipped > util.VN_CURDATE() - INTERVAL cc.monthsToCalcOptimumPrice MONTH
AND t.packages
GROUP BY t.clientFk
) ca ON c.id = ca.clientFk
SET c.packagesDiscountFactor = ca.discountFactor;
END$$
DELIMITER ;

View File

@ -1,20 +1,31 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_clone`(vSelf INT) CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_clone`(
vSelf INT,
OUT vOutputEntryFk INT
)
BEGIN BEGIN
/** /**
* clones an entry. * clones an entry.
* *
* @param vSelf The entry id * @param vSelf The entry id
* @param vOutputEntryFk The new entry id
*/ */
DECLARE vNewEntryFk INT; DECLARE vNewEntryFk INT;
START TRANSACTION; DECLARE vIsRequiredTx BOOL DEFAULT NOT @@in_transaction;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
CALL util.tx_rollback(vIsRequiredTx);
RESIGNAL;
END;
CALL util.tx_start(vIsRequiredTx);
CALL entry_cloneHeader(vSelf, vNewEntryFk, NULL); CALL entry_cloneHeader(vSelf, vNewEntryFk, NULL);
CALL entry_copyBuys(vSelf, vNewEntryFk); CALL entry_copyBuys(vSelf, vNewEntryFk);
COMMIT; CALL util.tx_commit(vIsRequiredTx);
SET vOutputEntryFk = vNewEntryFk;
SELECT vNewEntryFk;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -0,0 +1,158 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_transfer`(
vOriginalEntry INT,
OUT vNewEntryFk INT
)
BEGIN
/**
* Adelanta a mañana la mercancia de una entrada a partir de lo que hay ubicado en el almacén
*
* @param vOriginalEntry entrada que se quiera adelantar
* @param vNewEntry nueva entrada creada
*/
DECLARE vTravelFk INT;
DECLARE vWarehouseFk INT;
DECLARE vWarehouseInFk INT;
DECLARE vWarehouseOutFk INT;
DECLARE vRef INT;
DECLARE vIsReceived INT;
DECLARE vAgencyModeFk INT;
DECLARE vTomorrow DATETIME DEFAULT util.tomorrow();
DECLARE vCurDate DATE DEFAULT util.VN_CURDATE();
DECLARE vIsRequiredTx BOOL DEFAULT NOT @@in_transaction;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
CALL util.tx_rollback(vIsRequiredTx);
RESIGNAL;
END;
-- Clonar la entrada
CALL entry_clone(vOriginalEntry, vNewEntryFk);
CALL util.tx_start(vIsRequiredTx);
/* Hay que crear un nuevo travel, con salida hoy y llegada mañana y
asignar la entrada nueva al nuevo travel.*/
SELECT t.warehouseInFk, t.warehouseOutFk, t.`ref`, t.isReceived, t.agencyModeFk
INTO vWarehouseInFk, vWarehouseOutFk, vRef, vIsReceived, vAgencyModeFk
FROM travel t
JOIN entry e ON e.travelFk = t.id
WHERE e.id = vOriginalEntry;
SELECT id INTO vTravelFk
FROM travel t
WHERE shipped = vCurDate
AND landed = vTomorrow
AND warehouseInFk = vWarehouseInFk
AND warehouseOutFk = vWarehouseOutFk
AND `ref` = vRef
AND isReceived =vIsReceived
AND agencyModeFk = vAgencyModeFk;
IF vTravelFk IS NULL THEN
INSERT INTO travel(
shipped,
landed,
warehouseInFk,
warehouseOutFk,
`ref`,
isReceived,
agencyModeFk)
SELECT vCurDate,
vTomorrow,
t.warehouseInFk,
t.warehouseOutFk,
t.`ref`,
t.isReceived,
t.agencyModeFk
FROM travel t
JOIN entry e ON e.travelFk = t.id
WHERE e.id = vOriginalEntry;
SET vTravelFk = LAST_INSERT_ID();
END IF;
UPDATE entry
SET travelFk = vTravelFk,
evaNotes = vOriginalEntry
WHERE id = vNewEntryFk;
-- Poner a 0 las cantidades
UPDATE buy b
SET b.quantity = 0, b.stickers = 0
WHERE b.entryFk = vNewEntryFk;
-- Eliminar duplicados
DELETE b
FROM buy b
LEFT JOIN (SELECT b.id, b.itemFk
FROM buy b
WHERE b.entryFk = vNewEntryFk
GROUP BY b.itemFk) tBuy ON tBuy.id = b.id
WHERE b.entryFk = vNewEntryFk
AND tBuy.id IS NULL;
SELECT t.warehouseInFk INTO vWarehouseFk
FROM travel t
JOIN entry e ON e.travelFk = t.id
WHERE e.id = vOriginalEntry;
/* Actualizar nueva entrada con lo que no está ubicado HOY,
descontando lo vendido HOY de esas ubicaciones*/
CREATE OR REPLACE TEMPORARY TABLE buys
WITH tBuy AS (
SELECT b.itemFk, SUM(b.quantity) totalQuantity
FROM vn.buy b
WHERE b.entryFk = vOriginalEntry
GROUP BY b.itemFk
),
itemShelvings AS (
SELECT ish.itemFk, SUM(ish.visible) visible
FROM vn.itemShelving ish
JOIN vn.shelving sh ON sh.id = ish.shelvingFk
JOIN vn.parking p ON p.id = sh.parkingFk
JOIN vn.sector s ON s.id = p.sectorFk
JOIN vn.buy b ON b.id = ish.buyFk
JOIN vn.entry e ON e.id = b.entryFk
JOIN tBuy t ON t.itemFk = ish.itemFk
WHERE s.warehouseFk = vWarehouseFk
AND sh.parked >= vCurDate
GROUP BY ish.itemFk
),
sales AS (
SELECT s.itemFk, SUM(s.quantity) sold
FROM vn.ticket t
JOIN vn.sale s ON s.ticketFk = t.id
JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id
JOIN vn.itemShelving is2 ON is2.id = iss.itemShelvingFk
JOIN vn.shelving s2 ON s2.id = is2.shelvingFk
JOIN tBuy t ON t.itemFk = s.itemFk
WHERE t.shipped BETWEEN vCurDate AND util.dayend(vCurDate)
AND s2.parked >= vCurDate
GROUP BY s.itemFk
)
SELECT tmp.itemFk,
IFNULL(iss.visible, 0) visible,
tmp.totalQuantity,
IFNULL(s.sold, 0) sold
FROM tBuy tmp
LEFT JOIN itemShelvings iss ON tmp.itemFk = iss.itemFk
LEFT JOIN sales s ON s.itemFk = tmp.itemFk
WHERE visible < tmp.totalQuantity
OR iss.itemFk IS NULL;
UPDATE buy b
JOIN buys tmp ON tmp.itemFk = b.itemFk
SET b.quantity = tmp.totalQuantity - tmp.visible - tmp.sold
WHERE b.entryFk = vNewEntryFk;
-- Limpia la nueva entrada
DELETE FROM buy WHERE entryFk = vNewEntryFk AND quantity = 0;
CALL util.tx_commit(vIsRequiredTx);
CALL cache.visible_refresh(@c,TRUE,vWarehouseFk);
CALL cache.available_refresh(@c, TRUE, vWarehouseFk, vCurDate);
END$$
DELIMITER ;

View File

@ -15,8 +15,6 @@ BEGIN
* *
* @return tmp.itemList(itemFk, stock, visible, available) * @return tmp.itemList(itemFk, stock, visible, available)
*/ */
DECLARE vIsLogifloraDay BOOL DEFAULT vn.isLogifloraDay(vDated, vWarehouseFk);
SET vDated = TIMESTAMP(vDated, '00:00:00'); SET vDated = TIMESTAMP(vDated, '00:00:00');
CREATE OR REPLACE TEMPORARY TABLE tmp.itemList CREATE OR REPLACE TEMPORARY TABLE tmp.itemList
@ -36,14 +34,11 @@ BEGIN
UNION ALL UNION ALL
SELECT iei.itemFk, iei.quantity SELECT iei.itemFk, iei.quantity
FROM itemEntryIn iei FROM itemEntryIn iei
LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = iei.entryFk
JOIN item i ON i.id = iei.itemFk JOIN item i ON i.id = iei.itemFk
WHERE iei.landed >= util.VN_CURDATE() WHERE iei.landed >= util.VN_CURDATE()
AND iei.landed < vDated AND iei.landed < vDated
AND iei.warehouseInFk = vWarehouseFk AND iei.warehouseInFk = vWarehouseFk
AND (vItemFk IS NULL OR iei.itemFk = vItemFk) AND (vItemFk IS NULL OR iei.itemFk = vItemFk)
AND (wf.entryFk IS NULL OR vIsLogifloraDay)
AND NOT (iei.landed > util.VN_CURDATE() AND i.isFloramondo)
UNION ALL UNION ALL
SELECT ieo.itemFk, ieo.quantity SELECT ieo.itemFk, ieo.quantity
FROM itemEntryOut ieo FROM itemEntryOut ieo
@ -52,7 +47,6 @@ BEGIN
AND ieo.shipped < vDated AND ieo.shipped < vDated
AND ieo.warehouseOutFk = vWarehouseFk AND ieo.warehouseOutFk = vWarehouseFk
AND (vItemFk IS NULL OR ieo.itemFk = vItemFk) AND (vItemFk IS NULL OR ieo.itemFk = vItemFk)
AND NOT (ieo.shipped > util.VN_CURDATE() AND i.isFloramondo)
) sub ) sub
GROUP BY itemFk GROUP BY itemFk
HAVING stock; HAVING stock;

View File

@ -41,6 +41,7 @@ BEGIN
) currencyBalance ) currencyBalance
FROM ( FROM (
SELECT NULL bankFk, SELECT NULL bankFk,
NULL bank,
ii.companyFk, ii.companyFk,
ii.serial, ii.serial,
ii.id, ii.id,
@ -74,6 +75,7 @@ BEGIN
GROUP BY iid.id, ii.id GROUP BY iid.id, ii.id
UNION ALL UNION ALL
SELECT p.bankFk, SELECT p.bankFk,
a.bank,
p.companyFk, p.companyFk,
NULL, NULL,
p.id, p.id,
@ -109,6 +111,7 @@ BEGIN
AND (vIsConciliated = p.isConciliated OR NOT vIsConciliated) AND (vIsConciliated = p.isConciliated OR NOT vIsConciliated)
UNION ALL UNION ALL
SELECT NULL, SELECT NULL,
NULL bankFk,
companyFk, companyFk,
NULL, NULL,
se.id, se.id,
@ -136,6 +139,7 @@ BEGIN
AND (vIsConciliated = se.isConciliated OR NOT vIsConciliated) AND (vIsConciliated = se.isConciliated OR NOT vIsConciliated)
UNION ALL UNION ALL
SELECT NULL bankFk, SELECT NULL bankFk,
NULL,
e.companyFk, e.companyFk,
'E' serial, 'E' serial,
e.invoiceNumber id, e.invoiceNumber id,
@ -154,7 +158,7 @@ BEGIN
JOIN travel tr ON tr.id = e.travelFk JOIN travel tr ON tr.id = e.travelFk
JOIN currency c ON c.id = e.currencyFk JOIN currency c ON c.id = e.currencyFk
WHERE e.supplierFk = vSupplierFk WHERE e.supplierFk = vSupplierFk
AND tr.landed >= CURDATE() AND tr.landed >= util.VN_CURDATE()
AND e.invoiceInFk IS NULL AND e.invoiceInFk IS NULL
AND vHasEntries AND vHasEntries
ORDER BY (dated IS NULL AND NOT isBooked), ORDER BY (dated IS NULL AND NOT isBooked),

View File

@ -19,6 +19,7 @@ BEGIN
sub2.iptd futureIpt, sub2.iptd futureIpt,
sub2.state futureState, sub2.state futureState,
t.clientFk, t.clientFk,
cl.salespersonFk,
t.warehouseFk, t.warehouseFk,
ts.alertLevel, ts.alertLevel,
sub2.alertLevel futureAlertLevel, sub2.alertLevel futureAlertLevel,
@ -38,6 +39,7 @@ BEGIN
JOIN vn.province p ON p.id = a.provinceFk JOIN vn.province p ON p.id = a.provinceFk
JOIN vn.country c ON c.id = p.countryFk JOIN vn.country c ON c.id = p.countryFk
JOIN vn.ticketState ts ON ts.ticketFk = t.id JOIN vn.ticketState ts ON ts.ticketFk = t.id
JOIN vn.client cl ON cl.id = t.clientFk
JOIN vn.state st ON st.id = ts.stateFk JOIN vn.state st ON st.id = ts.stateFk
JOIN vn.alertLevel al ON al.id = ts.alertLevel JOIN vn.alertLevel al ON al.id = ts.alertLevel
LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id

View File

@ -21,9 +21,6 @@ BEGIN
IFNULL(sat.supplierFk, su.id) supplierFk, IFNULL(sat.supplierFk, su.id) supplierFk,
t.landed t.landed
FROM ticket t FROM ticket t
JOIN ticketState ts ON ts.ticketFk = t.id
JOIN `state` s ON s.id = ts.stateFk
JOIN alertLevel al ON al.id = s.alertLevel
JOIN client c ON c.id = t.clientFk JOIN client c ON c.id = t.clientFk
JOIN `address` a ON a.id = t.addressFk JOIN `address` a ON a.id = t.addressFk
JOIN province p ON p.id = a.provinceFk JOIN province p ON p.id = a.provinceFk
@ -40,8 +37,7 @@ BEGIN
LEFT JOIN agency ag ON ag.id = am.agencyFk LEFT JOIN agency ag ON ag.id = am.agencyFk
LEFT JOIN supplierAgencyTerm sat ON sat.agencyFk = ag.id LEFT JOIN supplierAgencyTerm sat ON sat.agencyFk = ag.id
AND wo.isFreelance AND wo.isFreelance
WHERE al.code IN ('PACKED', 'DELIVERED') WHERE co.code <> 'ES'
AND co.code <> 'ES'
AND am.name <> 'ABONO' AND am.name <> 'ABONO'
AND w.code = 'ALG' AND w.code = 'ALG'
AND t.id = vSelf AND t.id = vSelf

View File

@ -1,26 +1,27 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getAddresses`( CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getAddresses`(
vSelf INT, vSelf INT,
vShipped DATE, vLanded DATE,
vDepartmentFk INT vDepartmentFk INT
) )
BEGIN BEGIN
/** /**
* Devuelve un listado de todos los clientes activos * Devuelve un listado de todos los clientes activos
* con consignatarios a los que se les puede * con consignatarios a los que se les puede
* vender producto para esa zona. * entregar producto para esa zona.
* *
* @param vSelf Id de zona * @param vSelf Id de zona
* @param vShipped Fecha de envio * @param vLanded Fecha de entrega
* @param vDepartmentFk Id de departamento * @param vDepartmentFk Id de departamento | NULL para mostrar todos
* @return Un select * @return Un select
*/ */
CALL zone_getPostalCode(vSelf); CALL zone_getPostalCode(vSelf);
WITH clientWithTicket AS ( WITH clientWithTicket AS (
SELECT clientFk SELECT DISTINCT clientFk
FROM vn.ticket FROM vn.ticket
WHERE shipped BETWEEN vShipped AND util.dayEnd(vShipped) WHERE landed BETWEEN vLanded AND util.dayEnd(vLanded)
AND NOT isDeleted
) )
SELECT c.id, SELECT c.id,
c.name, c.name,
@ -30,7 +31,7 @@ BEGIN
u.name username, u.name username,
aai.invoiced, aai.invoiced,
cnb.lastShipped, cnb.lastShipped,
cwt.clientFk IF(cwt.clientFk, TRUE, FALSE) hasTicket
FROM vn.client c FROM vn.client c
JOIN vn.worker w ON w.id = c.salesPersonFk JOIN vn.worker w ON w.id = c.salesPersonFk
JOIN vn.workerDepartment wd ON wd.workerFk = w.id JOIN vn.workerDepartment wd ON wd.workerFk = w.id
@ -50,7 +51,7 @@ BEGIN
AND c.isActive AND c.isActive
AND ct.code = 'normal' AND ct.code = 'normal'
AND bt.code <> 'worker' AND bt.code <> 'worker'
AND (d.id = vDepartmentFk OR NOT vDepartmentFk) AND (d.id = vDepartmentFk OR vDepartmentFk IS NULL)
GROUP BY c.id; GROUP BY c.id;
DROP TEMPORARY TABLE tmp.zoneNodes; DROP TEMPORARY TABLE tmp.zoneNodes;

View File

@ -30,6 +30,7 @@ BEGIN
TIME(IFNULL(e.`hour`, z.`hour`)) `hour`, TIME(IFNULL(e.`hour`, z.`hour`)) `hour`,
l.travelingDays, l.travelingDays,
IFNULL(e.price, z.price) price, IFNULL(e.price, z.price) price,
IFNULL(e.priceOptimum, z.priceOptimum) priceOptimum,
IFNULL(e.bonus, z.bonus) bonus, IFNULL(e.bonus, z.bonus) bonus,
l.landed, l.landed,
vShipped shipped vShipped shipped

View File

@ -0,0 +1,8 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemTaxCountry_beforeDelete`
BEFORE DELETE ON `itemTaxCountry`
FOR EACH ROW
BEGIN
CALL util.throw('Records in this table cannot be deleted');
END$$
DELIMITER ;

View File

@ -4,5 +4,9 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemTaxCountry_beforeUp
FOR EACH ROW FOR EACH ROW
BEGIN BEGIN
SET NEW.editorFk = account.myUser_getId(); SET NEW.editorFk = account.myUser_getId();
IF NOT(NEW.`countryFk` <=> OLD.`countryFk`) OR NOT(NEW.`itemFk` <=> OLD.`itemFk`) THEN
CALL util.throw('Only the VAT can be modified');
END IF;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -16,5 +16,9 @@ BEGIN
IF NEW.awbFk IS NOT NULL THEN IF NEW.awbFk IS NOT NULL THEN
CALL travel_throwAwb(NEW.id); CALL travel_throwAwb(NEW.id);
END IF; END IF;
IF NEW.availabled < NEW.landed THEN
CALL util.throw('The travel availabled cannot be earlier than landed');
END IF;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -40,5 +40,9 @@ BEGIN
IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL THEN IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL THEN
CALL travel_throwAwb(NEW.id); CALL travel_throwAwb(NEW.id);
END IF; END IF;
IF NEW.availabled < NEW.landed THEN
CALL util.throw('The travel availabled cannot be earlier than landed');
END IF;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -0,0 +1,9 @@
CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`agencyModeIncoming` AS
SELECT
am.id,
am.name
FROM `vn`.`agencyMode` AS am
JOIN `vn`.`agencyIncoming` AS ai
ON am.id = ai.agencyModeFk;

View File

@ -7,7 +7,8 @@ AS SELECT `t`.`warehouseInFk` AS `warehouseInFk`,
`b`.`quantity` AS `quantity`, `b`.`quantity` AS `quantity`,
`t`.`isReceived` AS `isReceived`, `t`.`isReceived` AS `isReceived`,
`t`.`isRaid` AS `isVirtualStock`, `t`.`isRaid` AS `isVirtualStock`,
`e`.`id` AS `entryFk` `e`.`id` AS `entryFk`,
`t`.`availabled`
FROM ( FROM (
( (
`vn`.`buy` `b` `vn`.`buy` `b`

View File

@ -18,5 +18,6 @@ AS SELECT `p`.`id` AS `Id_Cubo`,
`p`.`base` AS `Base`, `p`.`base` AS `Base`,
`p`.`isBox` AS `box`, `p`.`isBox` AS `box`,
`p`.`returnCost` AS `costeRetorno`, `p`.`returnCost` AS `costeRetorno`,
`p`.`isActive` AS `isActive` `p`.`isActive` AS `isActive`,
`p`.`flippingCost` AS `flippingCost`
FROM `vn`.`packaging` `p` FROM `vn`.`packaging` `p`

View File

@ -1,8 +0,0 @@
CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `vn2008`.`Split_lines`
AS SELECT `sl`.`id` AS `Id_Split_lines`,
`sl`.`splitFk` AS `Id_Split`,
`sl`.`itemFk` AS `Id_Article`,
`sl`.`buyFk` AS `Id_Compra`
FROM `vn`.`splitLine` `sl`

View File

@ -29,5 +29,6 @@ AS SELECT `a`.`id` AS `id`,
`a`.`invoiceInPaletizedFk` AS `invoiceInPaletizedFk`, `a`.`invoiceInPaletizedFk` AS `invoiceInPaletizedFk`,
`a`.`observation` AS `observation`, `a`.`observation` AS `observation`,
`a`.`hasFreightPrepaid` AS `hasFreightPrepaid`, `a`.`hasFreightPrepaid` AS `hasFreightPrepaid`,
`a`.`propertyNumber` AS `propertyNumber` `a`.`propertyNumber` AS `propertyNumber`,
`a`.`costPerKg` AS `costPerKg`
FROM `vn`.`awb` `a` FROM `vn`.`awb` `a`

View File

@ -0,0 +1,27 @@
ALTER TABLE vn.business
ADD CONSTRAINT `business_companyCodeFk` FOREIGN KEY (`companyCodeFk`) REFERENCES `company` (`code`) ON DELETE CASCADE ON UPDATE CASCADE;
-- Auto-generated SQL script. Actual values for binary/complex data types may differ - what you see is the default string representation of values.
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('BusinessReasonEnd','find','*','ALLOW','ROLE','hr');
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('CalendarType','find','*','ALLOW','ROLE','hr');
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('OccupationCode','find','*','ALLOW','ROLE','hr');
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('BusinessReasonEnd','find','*','ALLOW','ROLE','hr');
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('WorkerBusinessProfessionalCategory','find','*','ALLOW','ROLE','hr');
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('WorkerBusinessAgreement','find','*','ALLOW','ROLE','hr');
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('WorkerBusinessType','find','*','ALLOW','ROLE','hr');
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('PayrollCategory','find','*','ALLOW','ROLE','hr');
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('Worker','__get__business','*','ALLOW','ROLE','hr');
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('Worker','__create__business','*','ALLOW','ROLE','hr');
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('Business','crud','*','ALLOW','ROLE','hr');

View File

@ -7,9 +7,9 @@ ALTER TABLE vn.invoiceOut ADD CONSTRAINT invoiceOut_customsAgentFk FOREIGN KEY (
ALTER TABLE vn.invoiceOut ADD CONSTRAINT invoiceOut_incotermsFk FOREIGN KEY (incotermsFk) ALTER TABLE vn.invoiceOut ADD CONSTRAINT invoiceOut_incotermsFk FOREIGN KEY (incotermsFk)
REFERENCES vn.incoterms (`code`) ON DELETE RESTRICT ON UPDATE CASCADE; REFERENCES vn.incoterms (`code`) ON DELETE RESTRICT ON UPDATE CASCADE;
UPDATE vn.invoiceOut io -- UPDATE vn.invoiceOut io
JOIN vn.client c ON c.id = io.clientFk -- JOIN vn.client c ON c.id = io.clientFk
JOIN vn.ticket t ON t.clientFk = c.id -- JOIN vn.ticket t ON t.clientFk = c.id
JOIN vn.address a ON a.id = t.addressFk -- JOIN vn.address a ON a.id = t.addressFk
SET io.customsAgentFk = a.customsAgentFk, -- SET io.customsAgentFk = a.customsAgentFk,
io.incotermsFk = a.incotermsFk; -- io.incotermsFk = a.incotermsFk;

View File

@ -0,0 +1,10 @@
UPDATE vn.town t
LEFT JOIN vn.zoneGeo zg ON zg.id = t.geoFk
SET t.geoFk = NULL
WHERE zg.id IS NULL;
ALTER TABLE vn.town
ADD CONSTRAINT town_zoneGeo_FK FOREIGN KEY (geoFk)
REFERENCES vn.zoneGeo(id)
ON DELETE RESTRICT
ON UPDATE CASCADE;

View File

@ -0,0 +1,10 @@
UPDATE vn.postCode pc
LEFT JOIN vn.zoneGeo zg ON zg.id = pc.geoFk
SET pc.geoFk = NULL
WHERE zg.id IS NULL;
ALTER TABLE vn.postCode
ADD CONSTRAINT postCode_zoneGeo_FK FOREIGN KEY (geoFk)
REFERENCES vn.zoneGeo(id)
ON DELETE RESTRICT
ON UPDATE CASCADE;

View File

@ -0,0 +1,10 @@
UPDATE vn.province p
LEFT JOIN vn.zoneGeo zg ON zg.id = p.geoFk
SET p.geoFk = NULL
WHERE zg.id IS NULL;
ALTER TABLE vn.province
ADD CONSTRAINT province_zoneGeo_FK FOREIGN KEY (geoFk)
REFERENCES vn.zoneGeo(id)
ON DELETE RESTRICT
ON UPDATE CASCADE;

View File

@ -0,0 +1,19 @@
INSERT INTO account.`role` (name,description,hasLogin)
VALUES ('deliveryFreelancer','Repartidor autónomo',1);
INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId)
VALUES
('Route', 'getTickets', 'READ', 'ALLOW', 'ROLE', 'deliveryFreelancer'),
('AgencyTerm', 'filter', 'READ', 'ALLOW', 'ROLE', 'deliveryFreelancer'),
('Route', 'summary', 'READ', 'ALLOW', 'ROLE', 'deliveryFreelancer'),
('Route', 'getRouteByAgency', 'WRITE', 'ALLOW', 'ROLE', 'deliveryFreelancer'),
('Route','filter','READ','ALLOW','ROLE','deliveryFreelancer'),
('UserConfig','getUserConfig','*','ALLOW','ROLE','deliveryFreelancer'),
('Route', 'getTickets', 'READ', 'ALLOW', 'ROLE', 'deliveryFreelancer'),
('Route','guessPriority','WRITE','ALLOW','ROLE','deliveryFreelancer'),
('Route','getDeliveryPoint','READ','ALLOW','ROLE','deliveryFreelancer'),
('Route', 'findById', 'READ', 'ALLOW', 'ROLE', 'deliveryFreelancer'),
('Route','sendSms','WRITE','ALLOW','ROLE','deliveryFreelancer'),
('Ticket','updateAttributes','WRITE','ALLOW','ROLE','deliveryFreelancer'),
('Client','findById','READ','ALLOW','ROLE','deliveryFreelancer');
;

View File

@ -1,16 +0,0 @@
DELETE FROM salix.ACL
WHERE property ='hasItemOlder';
ALTER TABLE vn.productionConfig DROP FOREIGN KEY productionConfig_sector_FK;
ALTER TABLE vn.productionConfig DROP FOREIGN KEY productionConfig_sector_FK_1;
ALTER TABLE vn.productionConfig DROP COLUMN sectorToCode;
ALTER TABLE vn.productionConfig DROP COLUMN sectorFromCode;

View File

@ -0,0 +1,5 @@
ALTER TABLE `vn`.`zoneEvent`
ADD COLUMN `priceOptimum` DECIMAL(10,2) NULL COMMENT 'Precio mínimo que puede pagar un bulto'
AFTER `price`,
ADD CONSTRAINT `ck_zoneEvent_priceOptimum`
CHECK (priceOptimum <= price)

View File

@ -0,0 +1,5 @@
ALTER TABLE `vn`.`zone`
ADD COLUMN `priceOptimum` DECIMAL(10,2) NOT NULL COMMENT 'Precio mínimo que puede pagar un bulto'
AFTER `price`,
ADD CONSTRAINT `ck_zone_priceOptimum`
CHECK (priceOptimum <= price)

View File

@ -0,0 +1,2 @@
UPDATE `vn`.`zone`
SET `priceOptimum` = `price`;

View File

@ -0,0 +1,3 @@
ALTER TABLE `vn`.`client`
ADD COLUMN `packagesDiscountFactor` DECIMAL(4,3) NOT NULL DEFAULT 1.000
COMMENT 'Porcentaje de ajuste entre el numero de bultos medio del cliente, y el número medio óptimo para las zonas en las que compra';

View File

@ -0,0 +1,3 @@
ALTER TABLE `vn`.`clientConfig`
ADD COLUMN `packagesOptimum` INT UNSIGNED NOT NULL DEFAULT 20 COMMENT 'Numero de bultos por cliente/dia para conseguir el precio optimo',
ADD COLUMN `monthsToCalcOptimumPrice` TINYINT UNSIGNED NOT NULL DEFAULT 3 COMMENT 'Número de meses a usar para el cálculo de client.packagesDiscountFactor';

View File

@ -0,0 +1,3 @@
ALTER TABLE `vn`.`entry`
ADD COLUMN `initialTemperature` decimal(10,2) DEFAULT NULL COMMENT 'Temperatura de como lo recibimos del proveedor ej. en colombia',
ADD COLUMN `finalTemperature` decimal(10,2) DEFAULT NULL COMMENT 'Temperatura final de como llega a nuestras instalaciones';

View File

@ -0,0 +1,2 @@
ALTER TABLE `vn`.`currency`
ADD COLUMN `hasToDownloadRate` TINYINT(1) NOT NULL DEFAULT 0 comment 'Si se guarda el tipo de cambio diariamente en referenceRate';

View File

@ -0,0 +1,3 @@
UPDATE `vn`.`currency`
SET `hasToDownloadRate` = TRUE
WHERE `code` IN ('USD', 'CNY', 'GBP');

View File

@ -0,0 +1,2 @@
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
VALUES ('VnUser','adminUser','WRITE','ALLOW','ROLE','sysadmin');

View File

@ -0,0 +1,2 @@
RENAME TABLE bi.f_tvc TO bi.f_tvc__;
ALTER TABLE bi.f_tvc__ COMMENT='@deprecated 2025-01-15';

View File

@ -0,0 +1,13 @@
use `vn`;
DELETE ai from
`vn`.`agencyIncoming` ai
LEFT JOIN `vn`.`agencyMode` am ON
am.id = ai.agencyModeFk
WHERE am.id IS null;
ALTER TABLE `vn`.`agencyIncoming`
ADD CONSTRAINT `fk_agencyIncoming_agencyMode`
FOREIGN KEY (`agencyModeFk`)
REFERENCES `agencyMode`(`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;

View File

@ -0,0 +1,7 @@
ALTER TABLE `vn`.`travelThermograph`
ADD COLUMN `agencyModeFk` INT(11) NULL AFTER `editorFk`,
ADD CONSTRAINT `travelThermograph_agencyIncoming_fk`
FOREIGN KEY (`agencyModeFk`)
REFERENCES `agencyIncoming`(`agencyModeFk`)
ON DELETE RESTRICT
ON UPDATE CASCADE;

View File

@ -0,0 +1 @@
CREATE INDEX ticket_landed_IDX USING BTREE ON vn.ticket (landed);

View File

@ -0,0 +1,130 @@
-- Place your SQL code here
CREATE TABLE IF NOT EXISTS `vn`.`itemSoldOutTag` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT
CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
INSERT IGNORE INTO `vn`.`itemSoldOutTag` (`name`) VALUES ('Ultimas unidades');
INSERT IGNORE INTO `vn`.`itemSoldOutTag` (`name`) VALUES ('Temporalmente');
INSERT IGNORE INTO `vn`.`itemSoldOutTag` (`name`) VALUES ('Descatalogado');
INSERT IGNORE INTO `vn`.`itemSoldOutTag` (`name`) VALUES ('Hasta mayo');
INSERT IGNORE INTO `vn`.`itemSoldOutTag` (`name`) VALUES ('Hasta febrero');
INSERT IGNORE INTO `vn`.`itemSoldOutTag` (`name`) VALUES ('Hasta diciembre');
INSERT IGNORE INTO `vn`.`itemSoldOutTag` (`name`) VALUES ('Hasta enero');
INSERT IGNORE INTO `vn`.`itemSoldOutTag` (`name`) VALUES ('Hasta marzo');
INSERT IGNORE INTO `vn`.`itemSoldOutTag` (`name`) VALUES ('Hasta nueva temporada');
INSERT IGNORE INTO `vn`.`itemSoldOutTag` (`name`) VALUES ('Hasta septiembre');
UPDATE vn.tag
SET isFree=FALSE,
sourceTable='itemSoldOutTag'
WHERE name= 'Agotado';
CREATE TABLE IF NOT EXISTS `vn`.`itemDurationTag` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT
CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('10 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('11 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('12 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('13 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('14 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('15 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('17 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('7 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('9 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('16-20 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('17-21 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('19-23 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('3-4 semanas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('13-17 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('14-16 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('15-19 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('18-25 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('20 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('6 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('9 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('10-13 días');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('6 meses');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('5 años');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('10 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('20 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('35 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('6 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('11 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('12 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('14 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('15 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('18 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('19 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('24 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('25 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('30 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('32 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('4 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('40 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('45 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('50 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('55 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('70 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('8 horas');
INSERT IGNORE INTO `vn`.`itemDurationTag` (`name`) VALUES ('9 horas');
UPDATE vn.tag
SET isFree=FALSE,
sourceTable='itemDurationTag'
WHERE name= 'Duracion';
CREATE TABLE IF NOT EXISTS `vn`.`itemGrowingTag` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT
CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('01-05');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('01-06');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('01-12');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('02-06');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('03-05');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('03-07');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('03-08');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('03-11');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('04-06');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('04-09');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('04-11');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('05-07');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('05-08');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('05-10');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('05-11');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('06-09');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('06-10');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('06-11');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('07-09');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('07-10');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('07-11');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('07-12');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('09-12');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('01-04 / 10-12');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('01-04 / 9-12');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('01-05 / 10-12');
INSERT IGNORE INTO `vn`.`itemGrowingTag` (`name`) VALUES ('01-05 / 11-12');
UPDATE vn.tag
SET isFree=FALSE,
sourceTable='itemGrowingTag'
WHERE name= 'Recolecta';
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE vn.itemSoldOutTag TO logisticAssist;
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE vn.itemDurationTag TO logisticAssist;
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE vn.itemGrowingTag TO logisticAssist;

View File

@ -0,0 +1,2 @@
ALTER TABLE `vn`.`tag`
ADD COLUMN IF NOT EXISTS `validationRegex` varchar(50) DEFAULT NULL;

View File

@ -0,0 +1,5 @@
RENAME TABLE vn.sorter TO vn.sorter__;
ALTER TABLE vn.sorter__ COMMENT='@deprecated 2025-01-22';
RENAME TABLE vn.splitLine TO vn.splitLine__;
ALTER TABLE vn.splitLine__ COMMENT='@deprecated 2025-01-22';

View File

@ -0,0 +1 @@
ALTER TABLE vn.address MODIFY COLUMN isEqualizated tinyint(1) NULL;

View File

@ -0,0 +1,3 @@
-- Place your SQL code here
ALTER TABLE vn.travel ADD IF NOT EXISTS availabled DATETIME NULL
COMMENT 'Indicates the moment in time when the goods become available for picking';

View File

@ -0,0 +1,2 @@
INSERT IGNORE INTO salix.ACL (model, property, accessType, permission, principalType, principalId)
VALUES('Entry', 'transfer', 'WRITE', 'ALLOW', 'ROLE', 'coolerBoss');

View File

@ -0,0 +1,2 @@
ALTER TABLE vn.packaging
ADD COLUMN flippingCost decimal(10, 2) NOT NULL DEFAULT 0.00

View File

@ -0,0 +1 @@
ALTER TABLE vn.travel CHANGE appointment appointment__ datetime DEFAULT NULL COMMENT '@deprecated 2025-01-28';

View File

@ -0,0 +1,2 @@
ALTER TABLE `vn`.`awb`
ADD COLUMN `costPerKg` DECIMAL(10, 2) UNSIGNED DEFAULT NULL COMMENT 'Tarifa que indica a cuanto cuesta el kilo en ese vuelo';

View File

@ -1,65 +0,0 @@
import selectors from '../../helpers/selectors.js';
import getBrowser from '../../helpers/puppeteer';
describe('Client defaulter path', () => {
let browser;
let page;
beforeAll(async() => {
browser = await getBrowser();
page = browser.page;
await page.loginAndModule('insurance', 'client');
await page.accessToSection('client.defaulter');
});
afterAll(async() => {
await browser.close();
});
it('should count the amount of clients in the turns section', async() => {
const result = await page.countElement(selectors.clientDefaulter.anyClient);
expect(result).toEqual(6);
});
it('should check contain expected client', async() => {
const clientName =
await page.waitToGetProperty(selectors.clientDefaulter.firstClientName, 'innerText');
const salesPersonName =
await page.waitToGetProperty(selectors.clientDefaulter.firstSalesPersonName, 'innerText');
expect(clientName).toEqual('Ororo Munroe');
expect(salesPersonName).toEqual('salesperson');
});
it('should first observation not changed', async() => {
const expectedObservation = 'Madness, as you know, is like gravity, all it takes is a little push';
const result = await page.waitToGetProperty(selectors.clientDefaulter.firstObservation, 'value');
expect(result).toContain(expectedObservation);
});
it('should not add empty observation', async() => {
await page.waitToClick(selectors.clientDefaulter.allDefaulterCheckbox);
await page.waitToClick(selectors.clientDefaulter.addObservationButton);
await page.write(selectors.clientDefaulter.observation, '');
await page.waitToClick(selectors.clientDefaulter.saveButton);
const message = await page.waitForSnackbar();
expect(message.text).toContain(`The message can't be empty`);
});
it('should checked all defaulters', async() => {
await page.loginAndModule('insurance', 'client');
await page.accessToSection('client.defaulter');
await page.waitToClick(selectors.clientDefaulter.allDefaulterCheckbox);
});
it('should add observation for all clients', async() => {
await page.waitToClick(selectors.clientDefaulter.addObservationButton);
await page.write(selectors.clientDefaulter.observation, 'My new observation');
await page.waitToClick(selectors.clientDefaulter.saveButton);
});
});

View File

@ -238,25 +238,11 @@ describe('Ticket Edit sale path', () => {
await page.waitToClick(selectors.globalItems.cancelButton); await page.waitToClick(selectors.globalItems.cancelButton);
}); });
it('should select the third sale and create a claim of it', async() => { it('should select the third sale and delete it', async() => {
await page.accessToSearchResult('16');
await page.accessToSection('ticket.card.sale');
await page.waitToClick(selectors.ticketSales.thirdSaleCheckbox);
await page.waitToClick(selectors.ticketSales.moreMenu);
await page.waitToClick(selectors.ticketSales.moreMenuCreateClaim);
await page.waitToClick(selectors.globalItems.acceptButton);
await page.waitForNavigation();
});
it('should search for a ticket then access to the sales section', async() => {
await page.goBack();
await page.goBack();
await page.loginAndModule('salesPerson', 'ticket'); await page.loginAndModule('salesPerson', 'ticket');
await page.accessToSearchResult('16'); await page.accessToSearchResult('16');
await page.accessToSection('ticket.card.sale'); await page.accessToSection('ticket.card.sale');
});
it('should select the third sale and delete it', async() => {
await page.waitToClick(selectors.ticketSales.thirdSaleCheckbox); await page.waitToClick(selectors.ticketSales.thirdSaleCheckbox);
await page.waitToClick(selectors.ticketSales.deleteSaleButton); await page.waitToClick(selectors.ticketSales.deleteSaleButton);
await page.waitToClick(selectors.globalItems.acceptButton); await page.waitToClick(selectors.globalItems.acceptButton);

View File

@ -75,7 +75,7 @@ describe('Ticket Edit basic data path', () => {
const result = await page const result = await page
.waitToGetProperty(selectors.ticketBasicData.stepTwoTotalPriceDif, 'innerText'); .waitToGetProperty(selectors.ticketBasicData.stepTwoTotalPriceDif, 'innerText');
expect(result).toContain('-€228.25'); expect(result).toContain('-€111.75');
}); });
it(`should select a new reason for the changes made then click on finalize`, async() => { it(`should select a new reason for the changes made then click on finalize`, async() => {

View File

@ -247,9 +247,11 @@
"ticketLostExpedition": "The ticket [{{ticketId}}]({{{ticketUrl}}}) has the following lost expedition:{{ expeditionId }}", "ticketLostExpedition": "The ticket [{{ticketId}}]({{{ticketUrl}}}) has the following lost expedition:{{ expeditionId }}",
"The raid information is not correct": "The raid information is not correct", "The raid information is not correct": "The raid information is not correct",
"Payment method is required": "Payment method is required", "Payment method is required": "Payment method is required",
"Sales already moved": "Sales already moved",
"Holidays to past days not available": "Holidays to past days not available",
"Price cannot be blank": "Price cannot be blank", "Price cannot be blank": "Price cannot be blank",
"There are tickets to be invoiced": "There are tickets to be invoiced", "There are tickets to be invoiced": "There are tickets to be invoiced",
"The address of the customer must have information about Incoterms and Customs Agent": "The address of the customer must have information about Incoterms and Customs Agent" "The address of the customer must have information about Incoterms and Customs Agent": "The address of the customer must have information about Incoterms and Customs Agent",
"Sales already moved": "Sales already moved",
"Holidays to past days not available": "Holidays to past days not available",
"Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}",
"Ticket has been delivered out of order": "The ticket {{ticket}} {{{fullUrl}}} has been delivered out of order."
} }

View File

@ -390,13 +390,11 @@
"The web user's email already exists": "El correo del usuario web ya existe", "The web user's email already exists": "El correo del usuario web ya existe",
"Sales already moved": "Ya han sido transferidas", "Sales already moved": "Ya han sido transferidas",
"The raid information is not correct": "La información de la redada no es correcta", "The raid information is not correct": "La información de la redada no es correcta",
"No trips found because input coordinates are not connected": "No se encontraron rutas porque las coordenadas de entrada no están conectadas",
"This request is not supported": "Esta solicitud no es compatible",
"Invalid options or too many coordinates": "Opciones invalidas o demasiadas coordenadas",
"No address has coordinates": "Ninguna dirección tiene coordenadas",
"An item type with the same code already exists": "Un tipo con el mismo código ya existe", "An item type with the same code already exists": "Un tipo con el mismo código ya existe",
"Holidays to past days not available": "Las vacaciones a días pasados no están disponibles", "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles",
"All tickets have a route order": "Todos los tickets tienen orden de ruta", "All tickets have a route order": "Todos los tickets tienen orden de ruta",
"Price cannot be blank": "Price cannot be blank", "There are tickets to be invoiced": "La zona tiene tickets por facturar",
"There are tickets to be invoiced": "La zona tiene tickets por facturar" "Incorrect delivery order alert on route": "Alerta de orden de entrega incorrecta en ruta: {{ route }} zona: {{ zone }}",
"Ticket has been delivered out of order": "El ticket {{ticket}} {{{fullUrl}}} no ha sigo entregado en su orden.",
"Price cannot be blank": "El precio no puede estar en blanco"
} }

View File

@ -366,5 +366,7 @@
"The quantity claimed cannot be greater than the quantity of the line": "Le montant réclamé ne peut pas être supérieur au montant de la ligne", "The quantity claimed cannot be greater than the quantity of the line": "Le montant réclamé ne peut pas être supérieur au montant de la ligne",
"You do not have permission to modify the booked field": "Vous n'avez pas la permission de modifier le champ comptabilisé", "You do not have permission to modify the booked field": "Vous n'avez pas la permission de modifier le champ comptabilisé",
"ticketLostExpedition": "Le ticket [{{ticketId}}]({{{ticketUrl}}}) a l'expédition perdue suivante : {{expeditionId}}", "ticketLostExpedition": "Le ticket [{{ticketId}}]({{{ticketUrl}}}) a l'expédition perdue suivante : {{expeditionId}}",
"The web user's email already exists": "L'email de l'internaute existe déjà" "The web user's email already exists": "L'email de l'internaute existe déjà",
"Incorrect delivery order alert on route": "Alerte de bon de livraison incorrect sur l'itinéraire: {{ route }} zone : {{ zone }}",
"Ticket has been delivered out of order": "Le ticket {{ticket}} {{{fullUrl}}} a été livré hors ordre."
} }

View File

@ -365,5 +365,7 @@
"Cannot send mail": "Não é possível enviar o email", "Cannot send mail": "Não é possível enviar o email",
"The quantity claimed cannot be greater than the quantity of the line": "O valor reclamado não pode ser superior ao valor da linha", "The quantity claimed cannot be greater than the quantity of the line": "O valor reclamado não pode ser superior ao valor da linha",
"ticketLostExpedition": "O ticket [{{ticketId}}]({{{ticketUrl}}}) tem a seguinte expedição perdida: {{expeditionId}}", "ticketLostExpedition": "O ticket [{{ticketId}}]({{{ticketUrl}}}) tem a seguinte expedição perdida: {{expeditionId}}",
"The web user's email already exists": "O e-mail do utilizador da web já existe." "The web user's email already exists": "O e-mail do utilizador da web já existe.",
"Incorrect delivery order alert on route": "Alerta de ordem de entrega incorreta na rota: {{ route }} zona: {{ zone }}",
"Ticket has been delivered out of order": "O ticket {{ticket}} {{{fullUrl}}} foi entregue fora de ordem."
} }

View File

@ -109,6 +109,7 @@ module.exports = Self => {
const args = ctx.args; const args = ctx.args;
const myOptions = {}; const myOptions = {};
let to; let to;
let myTeamIds = [];
if (typeof options == 'object') if (typeof options == 'object')
Object.assign(myOptions, options); Object.assign(myOptions, options);
@ -133,21 +134,8 @@ module.exports = Self => {
claimIdsByClaimResponsibleFk = claims.map(claim => claim.claimFk); claimIdsByClaimResponsibleFk = claims.map(claim => claim.claimFk);
} }
// Apply filter by team if (args.myTeam != null)
const teamMembersId = []; myTeamIds = await models.Worker.myTeam(userId);
if (args.myTeam != null) {
const worker = await models.Worker.findById(userId, {
include: {
relation: 'collegues'
}
}, myOptions);
const collegues = worker.collegues() || [];
for (let collegue of collegues)
teamMembersId.push(collegue.collegueFk);
if (teamMembersId.length == 0)
teamMembersId.push(userId);
}
const where = buildFilter(ctx.args, (param, value) => { const where = buildFilter(ctx.args, (param, value) => {
switch (param) { switch (param) {
@ -184,9 +172,9 @@ module.exports = Self => {
return {'t.zoneFk': value}; return {'t.zoneFk': value};
case 'myTeam': case 'myTeam':
if (value) if (value)
return {'cl.workerFk': {inq: teamMembersId}}; return {'cl.workerFk': {inq: myTeamIds}};
else else
return {'cl.workerFk': {nin: teamMembersId}}; return {'cl.workerFk': {nin: myTeamIds}};
} }
}); });

View File

@ -52,6 +52,14 @@ module.exports = function(Self) {
arg: 'customsAgentFk', arg: 'customsAgentFk',
type: 'number' type: 'number'
}, },
{
arg: 'longitude',
type: 'number'
},
{
arg: 'latitude',
type: 'number'
},
{ {
arg: 'isActive', arg: 'isActive',
type: 'boolean' type: 'boolean'

View File

@ -43,6 +43,14 @@ module.exports = Self => {
arg: 'postcode', arg: 'postcode',
type: 'string', type: 'string',
}, },
{
arg: 'sageTransactionTypeFk',
type: 'number',
},
{
arg: 'sageTaxTypeFk',
type: 'number',
},
{ {
arg: 'provinceFk', arg: 'provinceFk',
type: 'number', type: 'number',
@ -79,6 +87,10 @@ module.exports = Self => {
return /^\d+$/.test(value) return /^\d+$/.test(value)
? {'c.id': {inq: value}} ? {'c.id': {inq: value}}
: {'c.name': {like: `%${value}%`}}; : {'c.name': {like: `%${value}%`}};
case 'sageTaxTypeFk':
return {'sti.CodigoIva': value};
case 'sageTransactionTypeFk':
return {'stt.CodigoTransaccion': value};
case 'name': case 'name':
case 'salesPersonFk': case 'salesPersonFk':
case 'fi': case 'fi':

View File

@ -158,10 +158,12 @@ module.exports = Self => {
a.provinceFk AS provinceAddressFk, a.provinceFk AS provinceAddressFk,
p.name AS province, p.name AS province,
u.id AS salesPersonFk, u.id AS salesPersonFk,
u.name AS salesPerson u.name AS salesPerson,
co.name AS country
FROM client c FROM client c
LEFT JOIN account.user u ON u.id = c.salesPersonFk LEFT JOIN account.user u ON u.id = c.salesPersonFk
LEFT JOIN province p ON p.id = c.provinceFk LEFT JOIN province p ON p.id = c.provinceFk
LEFT JOIN country co ON co.id = c.countryFk
JOIN address a ON a.clientFk = c.id JOIN address a ON a.clientFk = c.id
` `
); );

View File

@ -157,4 +157,52 @@ describe('Address updateAddress', () => {
throw e; throw e;
} }
}); });
it('should update ticket observations when updateObservations is true', async() => {
const tx = await models.Client.beginTransaction({});
const client = 1103;
const address = 123;
const ticket = 31;
const observationType = 3;
const salesAssistantId = 21;
const addressObservation = 'nuevo texto';
const ticketObservation = 'texto a modificar';
try {
const options = {transaction: tx};
ctx.req.accessToken.userId = salesAssistantId;
ctx.args = {
updateObservations: true,
incotermsFk: incotermsId,
provinceFk: provinceId,
customsAgentFk: customAgentOneId
};
await models.AddressObservation.create({
addressFk: address,
observationTypeFk: observationType,
description: addressObservation
}, options);
await models.TicketObservation.create({
ticketFk: ticket,
observationTypeFk: observationType,
description: ticketObservation
}, options);
await models.Client.updateAddress(ctx, client, address, options);
const updatedObservation = await models.TicketObservation.findOne({
where: {ticketFk: ticket, observationTypeFk: observationType}
}, options);
expect(updatedObservation.description).toEqual(addressObservation);
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
}); });

View File

@ -80,6 +80,10 @@ module.exports = function(Self) {
{ {
arg: 'latitude', arg: 'latitude',
type: 'any', type: 'any',
},
{
arg: 'updateObservations',
type: 'boolean'
} }
], ],
returns: { returns: {
@ -135,6 +139,17 @@ module.exports = function(Self) {
delete args.ctx; // Remove unwanted properties delete args.ctx; // Remove unwanted properties
const updatedAddress = await address.updateAttributes(ctx.args, myOptions); const updatedAddress = await address.updateAttributes(ctx.args, myOptions);
if (args.updateObservations) {
const ticket = await Self.rawSql(`
UPDATE ticketObservation to2
JOIN ticket t ON t.id = to2.ticketFk
JOIN address a ON a.id = t.addressFk
JOIN addressObservation ao ON ao.addressFk = a.id
SET to2.description = ao.description
WHERE ao.observationTypeFk = to2.observationTypeFk
AND a.id = ?
AND t.shipped >= util.VN_CURDATE()`, [addressId], myOptions);
}
return updatedAddress; return updatedAddress;
}; };

View File

@ -21,7 +21,7 @@ module.exports = Self => {
} }
], ],
returns: { returns: {
type: ['object'], type: 'object',
root: true root: true
}, },
http: { http: {
@ -41,23 +41,28 @@ module.exports = Self => {
switch (param) { switch (param) {
case 'search': case 'search':
return {or: [ return {or: [
{'d.clientFk': value}, {'c.id': value},
{'d.clientName': {like: `%${value}%`}} {'c.name': {like: `%${value}%`}}
]}; ]};
} }
}); });
filter = mergeFilters(ctx.args.filter, {where}); const date = Date.vnNew();
date.setHours(0, 0, 0, 0);
filter = mergeFilters({where: {'d.created': date, 'd.amount': {gt: 0}}}, ctx.args.filter);
filter = mergeFilters(filter, {where});
const stmts = []; const stmts = [];
const date = Date.vnNew(); let stmt = new ParameterizedSQL(
date.setHours(0, 0, 0, 0); `CREATE OR REPLACE TEMPORARY TABLE tmp.defaulters
const stmt = new ParameterizedSQL( WITH clientObservations AS
`SELECT * (SELECT clientFk,text, created, workerFk
FROM ( FROM vn.clientObservation
SELECT GROUP BY clientFk
DISTINCT c.id clientFk, ORDER BY created DESC
)SELECT c.id clientFk,
c.name clientName, c.name clientName,
c.salesPersonFk, c.salesPersonFk,
c.businessTypeFk = 'worker' isWorker, c.businessTypeFk = 'worker' isWorker,
@ -80,36 +85,43 @@ module.exports = Self => {
JOIN client c ON c.id = d.clientFk JOIN client c ON c.id = d.clientFk
JOIN country cn ON cn.id = c.countryFk JOIN country cn ON cn.id = c.countryFk
JOIN payMethod pm ON pm.id = c.payMethodFk JOIN payMethod pm ON pm.id = c.payMethodFk
LEFT JOIN clientObservation co ON co.clientFk = c.id LEFT JOIN clientObservations co ON co.clientFk = c.id
LEFT JOIN account.user u ON u.id = c.salesPersonFk LEFT JOIN account.user u ON u.id = c.salesPersonFk
LEFT JOIN account.user uw ON uw.id = co.workerFk LEFT JOIN account.user uw ON uw.id = co.workerFk
LEFT JOIN ( LEFT JOIN (
SELECT r1.started, r1.clientFk, r1.finished SELECT r1.started, r1.clientFk, r1.finished
FROM recovery r1 FROM recovery r1
JOIN ( JOIN (
SELECT MAX(started) AS maxStarted, clientFk SELECT MAX(started) maxStarted, clientFk
FROM recovery FROM recovery
GROUP BY clientFk GROUP BY clientFk
) r2 ON r1.clientFk = r2.clientFk ) r2 ON r1.clientFk = r2.clientFk
AND r1.started = r2.maxStarted AND r1.started = r2.maxStarted
WHERE r1.finished
GROUP BY r1.clientFk
) r ON r.clientFk = c.id ) r ON r.clientFk = c.id
LEFT JOIN workerDepartment wd ON wd.workerFk = u.id LEFT JOIN workerDepartment wd ON wd.workerFk = u.id
JOIN department dp ON dp.id = wd.departmentFk LEFT JOIN department dp ON dp.id = wd.departmentFk`);
WHERE
d.created = ?
AND d.amount > 0
ORDER BY co.created DESC) d`
, [date]);
stmt.merge(conn.makeWhere(filter.where)); stmt.merge(conn.makeWhere(filter.where));
stmt.merge(`GROUP BY d.clientFk`); stmts.push(stmt);
stmt = new ParameterizedSQL(`
SELECT SUM(amount) amount
FROM tmp.defaulters
`);
stmts.push(stmt);
stmt = new ParameterizedSQL(`
SELECT *
FROM tmp.defaulters
`);
stmt.merge(conn.makeOrderBy(filter.order)); stmt.merge(conn.makeOrderBy(filter.order));
stmt.merge(conn.makeLimit(filter));
const itemsIndex = stmts.push(stmt) - 1; const itemsIndex = stmts.push(stmt) - 1;
const sql = ParameterizedSQL.join(stmts, ';'); const sql = ParameterizedSQL.join(stmts, ';');
const result = await conn.executeStmt(sql, myOptions); const result = await conn.executeStmt(sql, myOptions);
return itemsIndex === 0 ? result : result[itemsIndex]; return {defaulters: result[itemsIndex], amount: result[itemsIndex - 1][0].amount};
}; };
}; };

View File

@ -11,10 +11,10 @@ describe('defaulter filter()', () => {
const ctx = {req: {accessToken: {userId: authUserId}}, args: {filter: filter}}; const ctx = {req: {accessToken: {userId: authUserId}}, args: {filter: filter}};
const result = await models.Defaulter.filter(ctx, null, options); const result = await models.Defaulter.filter(ctx, null, options);
const firstRow = result[0]; const firstRow = result.defaulters[0];
expect(firstRow.clientFk).toEqual(1101); expect(firstRow.clientFk).toEqual(1101);
expect(result.length).toEqual(5); expect(result.defaulters.length).toEqual(5);
await tx.rollback(); await tx.rollback();
} catch (e) { } catch (e) {
@ -31,7 +31,7 @@ describe('defaulter filter()', () => {
const ctx = {req: {accessToken: {userId: authUserId}}, args: {search: 1101}}; const ctx = {req: {accessToken: {userId: authUserId}}, args: {search: 1101}};
const result = await models.Defaulter.filter(ctx, null, options); const result = await models.Defaulter.filter(ctx, null, options);
const firstRow = result[0]; const firstRow = result.defaulters[0];
expect(firstRow.clientFk).toEqual(1101); expect(firstRow.clientFk).toEqual(1101);
@ -50,7 +50,7 @@ describe('defaulter filter()', () => {
const ctx = {req: {accessToken: {userId: authUserId}}, args: {search: 'Petter Parker'}}; const ctx = {req: {accessToken: {userId: authUserId}}, args: {search: 'Petter Parker'}};
const result = await models.Defaulter.filter(ctx, null, options); const result = await models.Defaulter.filter(ctx, null, options);
const firstRow = result[0]; const firstRow = result.defaulters[0];
expect(firstRow.clientName).toEqual('Petter Parker'); expect(firstRow.clientName).toEqual('Petter Parker');
@ -60,4 +60,23 @@ describe('defaulter filter()', () => {
throw e; throw e;
} }
}); });
it('should return the defaulter the sum of every defaulters', async() => {
const tx = await models.Defaulter.beginTransaction({});
try {
const options = {transaction: tx};
const ctx = {req: {accessToken: {userId: authUserId}}, args: {search: 1101}};
const {defaulters, amount} = await models.Defaulter.filter(ctx, null, options);
const total = defaulters.reduce((total, row) => total + row.amount, 0);
expect(total).toEqual(amount);
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
}); });

View File

@ -139,5 +139,23 @@
}, },
"Xdiario": { "Xdiario": {
"dataSource": "vn" "dataSource": "vn"
},
"BusinessReasonEnd": {
"dataSource": "vn"
},
"OccupationCode": {
"dataSource": "vn"
},
"WorkerBusinessProfessionalCategory": {
"dataSource": "vn"
},
"CalendarType": {
"dataSource": "vn"
},
"WorkerBusinessType": {
"dataSource": "vn"
},
"PayrollCategory": {
"dataSource": "vn"
} }
} }

View File

@ -0,0 +1,17 @@
{
"name": "BusinessReasonEnd",
"base": "VnModel",
"options": {
"mysql": {
"table": "businessReasonEnd"
}
},
"properties": {
"id": {
"type": "number"
},
"reason": {
"type": "string"
}
}
}

View File

@ -13,6 +13,63 @@
}, },
"workcenterFk" : { "workcenterFk" : {
"type": "number" "type": "number"
},
"companyCodeFk" : {
"type": "string"
},
"started" : {
"type": "date"
},
"ended" : {
"type": "date"
},
"workerBusiness" : {
"type": "string"
},
"reasonEndFk" : {
"type": "number"
},
"payedHolidays" : {
"type": "number"
},
"occupationCodeFk" : {
"type": "string"
},
"workerFk" : {
"type": "number"
},
"notes" : {
"type": "string"
},
"departmentFk": {
"type": "string"
},
"workerBusinessProfessionalCategoryFk": {
"type": "number"
},
"calendarTypeFk": {
"type": "string"
},
"isHourlyLabor": {
"type": "boolean"
},
"rate": {
"type": "number"
},
"workerBusinessCategoryFk": {
"type": "number"
},
"workerBusinessTypeFk": {
"type": "number"
},
"amount": {
"type": "number"
},
"workerBusinessAgreementFk": {
"type": "number"
},
"basicSalary": {
"type": "number"
} }
}, },
"relations": { "relations": {
@ -25,6 +82,59 @@
"type": "belongsTo", "type": "belongsTo",
"model": "Department", "model": "Department",
"foreignKey": "departmentFk" "foreignKey": "departmentFk"
} },
"workCenter": {
"type": "belongsTo",
"model": "WorkCenter",
"foreignKey": "workcenterFk"
},
"companyCode": {
"type": "belongsTo",
"model": "Company",
"foreignKey": "companyCodeFk",
"primaryKey": "code"
},
"reasonEnd": {
"type": "belongsTo",
"model": "BusinessReasonEnd",
"foreignKey": "reasonEndFk"
},
"occupationCode": {
"type": "belongsTo",
"model": "OccupationCode",
"foreignKey":"occupationCodeFk",
"primaryKey": "code"
},
"payrollCategory": {
"type": "belongsTo",
"model": "PayrollCategory",
"foreignKey":"workerBusinessCategoryFk"
},
"workerBusinessProfessionalCategory": {
"type": "belongsTo",
"model": "WorkerBusinessProfessionalCategory",
"foreignKey": "workerBusinessProfessionalCategoryFk"
},
"calendarType": {
"type": "belongsTo",
"model": "CalendarType",
"foreignKey": "calendarTypeFk"
},
"workerBusinessCategory": {
"type": "belongsTo",
"model": "WorkerBusinessCategory",
"foreignKey": "workerBusinessCategoryFk"
},
"workerBusinessType": {
"type": "belongsTo",
"model": "WorkerBusinessType",
"foreignKey": "workerBusinessTypeFk"
},
"workerBusinessAgreement": {
"type": "belongsTo",
"model": "WorkerBusinessAgreement",
"foreignKey": "workerBusinessAgreementFk"
}
} }
} }

View File

@ -0,0 +1,21 @@
{
"name": "CalendarType",
"base": "VnModel",
"options": {
"mysql": {
"table": "calendarType"
}
},
"properties": {
"id": {
"type": "number"
},
"description": {
"type": "string"
},
"hoursWeek": {
"type": "number"
},
"isPartial": "number"
}
}

View File

@ -19,6 +19,9 @@
}, },
"created": { "created": {
"type": "date" "type": "date"
},
"workerFk": {
"type": "number"
} }
}, },
"relations": { "relations": {

View File

@ -0,0 +1,18 @@
{
"name": "OccupationCode",
"base": "VnModel",
"options": {
"mysql": {
"table": "occupationCode"
}
},
"properties": {
"code": {
"type": "string",
"id": true
},
"name": {
"type": "string"
}
}
}

View File

@ -0,0 +1,20 @@
{
"name": "PayrollCategory",
"base": "VnModel",
"options": {
"mysql": {
"table": "payrollCategories"
}
},
"properties": {
"id": {
"type": "number"
},
"description": {
"type": "string"
},
"rate": {
"type": "number"
}
}
}

View File

@ -0,0 +1,20 @@
{
"name": "WorkerBusinessProfessionalCategory",
"base": "VnModel",
"options": {
"mysql": {
"table": "professionalCategory"
}
},
"properties": {
"id": {
"type": "number"
},
"description": {
"type": "string"
},
"code": {
"type": "string"
}
}
}

View File

@ -0,0 +1,29 @@
{
"name": "WorkerBusinessAgreement",
"base": "VnModel",
"options": {
"mysql": {
"table": "workerBusinessAgreement"
}
},
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"monthHolidays": {
"type": "number"
},
"yearsHours": {
"type": "number"
},
"started": {
"type": "date"
},
"ended": {
"type": "date"
}
}
}

View File

@ -0,0 +1,27 @@
{
"name": "WorkerBusinessType",
"base": "VnModel",
"options": {
"mysql": {
"table": "workerBusinessType"
}
},
"properties": {
"id": {
"type": "number",
"id": true
},
"name": {
"type": "string"
},
"isFullTime": {
"type": "number"
},
"isPermanent": {
"type": "number"
},
"hasHolidayEntitlement": {
"type": "number"
}
}
}

View File

@ -1,200 +1,2 @@
<vn-crud-model
vn-id="model"
url="Defaulters/filter"
filter="::$ctrl.filter"
limit="20"
order="amount DESC"
data="$ctrl.defaulters"
on-data-change="$ctrl.reCheck()"
auto-load="true">
</vn-crud-model>
<vn-portal slot="topbar">
<vn-searchbar
vn-focus
placeholder="Search client"
info="Search client by id or name"
auto-state="false"
model="model">
</vn-searchbar>
</vn-portal>
<vn-card> <vn-card>
<smart-table
model="model"
options="$ctrl.smartTableOptions"
expr-builder="$ctrl.exprBuilder(param, value)">
<slot-actions>
<div>
<div class="totalBox" style="text-align: center;">
<h6 translate>Total</h6>
<vn-label-value
label="Balance due"
value="{{$ctrl.balanceDueTotal | currency: 'EUR': 2}}">
</vn-label-value>
</div>
</div>
<div class="vn-pa-md">
<vn-button
disabled="$ctrl.checked.length == 0"
ng-click="notesDialog.show()"
name="notesDialog"
vn-tooltip="Add observation"
icon="icon-notes">
</vn-button>
</div>
</slot-actions>
<slot-table>
<table>
<thead>
<tr>
<th shrink>
<vn-multi-check
model="model">
</vn-multi-check>
</th>
<th field="clientFk">
<span translate>Client</span>
</th>
<th field="isWorker">
<span translate>Es trabajador</span>
</th>
<th field="salesPersonFk">
<span translate>Comercial</span>
</th>
<th field="countryFk">
<span translate>Country</span>
</th>
<th field="payMethod"
vn-tooltip="Pay Method">
<span translate>P.Method</span>
</th>
<th
field="amount"
vn-tooltip="Balance due">
<span translate>Balance D.</span>
</th>
<th
field="workerFk"
vn-tooltip="Worker who made the last observation">
<span translate>Author</span>
</th>
<th field="observation" expand>
<span translate>Last observation</span>
</th>
<th
vn-tooltip="Last observation date"
field="created">
<span translate>L. O. Date</span>
</th>
<th
vn-tooltip="Credit insurance"
field="creditInsurance"
shrink>
<span translate>Credit I.</span>
</th>
<th field="defaulterSinced">
<span translate>From</span>
</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="defaulter in $ctrl.defaulters">
<td shrink>
<vn-check
ng-model="defaulter.checked"
on-change="$ctrl.saveChecked(defaulter.clientFk)"
vn-click-stop>
</vn-check>
</td>
<td title="{{::defaulter.clientName}}">
<span
vn-click-stop="clientDescriptor.show($event, defaulter.clientFk)"
title ="{{::defaulter.clientName}}"
class="link">
{{::defaulter.clientName}}
</span>
</td>
<td>
<vn-check
ng-model="defaulter.isWorker"
disabled="true">
</vn-check>
</td>
<td>
<span
title="{{::defaulter.salesPersonName}}"
vn-click-stop="workerDescriptor.show($event, defaulter.salesPersonFk)"
class="link">
{{::defaulter.salesPersonName | dashIfEmpty}}
</span>
</td>
<td>
{{::defaulter.country}}
</td>
<td>
{{::defaulter.payMethod}}
</td>
<td>{{::defaulter.amount | currency: 'EUR': 2}}</td>
<td>
<span
title="{{::defaulter.workerName}}"
vn-click-stop="workerDescriptor.show($event, defaulter.workerFk)"
class="link">
{{::defaulter.workerName | dashIfEmpty}}
</span>
</td>
<td expand>
<vn-textarea
vn-three
disabled="true"
ng-model="defaulter.observation">
</vn-textarea>
</td>
<td shrink-date>
<span class="chip {{::$ctrl.chipColor(defaulter.created)}}">
{{::defaulter.created | date: 'dd/MM/yyyy'}}
</span>
</td>
<td shrink>{{::defaulter.creditInsurance | currency: 'EUR': 2}}</td>
<td shrink-date>{{::defaulter.defaulterSinced | date: 'dd/MM/yyyy'}}</td>
</tr>
</tbody>
</table>
</slot-table>
</smart-table>
</vn-card> </vn-card>
<vn-client-descriptor-popover
vn-id="client-descriptor">
</vn-client-descriptor-popover>
<vn-worker-descriptor-popover
vn-id="worker-descriptor">
</vn-worker-descriptor-popover>
<vn-popup vn-id="dialog-summary-client">
<vn-client-summary
client="$ctrl.clientSelected">
</vn-client-summary>
</vn-popup>
<!-- Dialog of add notes button -->
<vn-dialog
vn-id="notesDialog"
on-accept="$ctrl.onResponse()">
<tpl-body>
<section class="SMSDialog">
<h5 class="vn-py-sm">{{$ctrl.$t('Add observation to all selected clients', {total: $ctrl.checked.length})}}</h5>
<vn-horizontal>
<vn-textarea vn-one
vn-id="message"
label="Message"
ng-model="$ctrl.defaulter.observation"
rows="3"
required="true"
rule>
</vn-textarea>
</vn-horizontal>
</section>
</tpl-body>
<tpl-buttons>
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
<button response="accept" translate>Save</button>
</tpl-buttons>
</vn-dialog>

View File

@ -1,199 +1,13 @@
import ngModule from '../module'; import ngModule from '../module';
import Section from 'salix/components/section'; import Section from 'salix/components/section';
import UserError from 'core/lib/user-error';
export default class Controller extends Section { export default class Controller extends Section {
constructor($element, $) { constructor($element, $) {
super($element, $); super($element, $);
this.defaulter = {};
this.defaulters = [];
this.checkedDefaulers = [];
this.smartTableOptions = {
activeButtons: {
search: true
},
columns: [
{
field: 'clientFk',
autocomplete: {
url: 'Clients',
showField: 'name',
valueField: 'id'
} }
}, { async $onInit() {
field: 'salesPersonFk', this.$state.go('customer.defaulter', {id: this.$params.id});
autocomplete: { window.location.href = await this.vnApp.getUrl(`customer/defaulter`);
url: 'Workers/activeWithInheritedRole',
where: `{role: 'salesPerson'}`,
searchFunction: '{firstName: $search}',
showField: 'name',
valueField: 'id',
}
}, {
field: 'countryFk',
autocomplete: {
url: 'Countries',
showField: 'country',
valueField: 'id'
}
}, {
field: 'payMethodFk',
autocomplete: {
showField: 'name',
valueField: 'id'
}
},
{
field: 'workerFk',
autocomplete: {
url: 'Workers/activeWithInheritedRole',
searchFunction: '{firstName: $search}',
showField: 'name',
valueField: 'id',
}
},
{
field: 'observation',
searchable: false
},
{
field: 'isWorker',
checkbox: true,
},
{
field: 'created',
datepicker: true
},
{
field: 'defaulterSinced',
datepicker: true
}
]
};
this.getBalanceDueTotal();
}
set defaulters(value) {
if (!value || !value.length) return;
this._defaulters = value;
}
get defaulters() {
return this._defaulters;
}
get checked() {
const clients = this.$.model.data || [];
const checkedLines = [];
for (let defaulter of clients) {
if (defaulter.checked)
checkedLines.push(defaulter);
}
return checkedLines;
}
saveChecked(clientId) {
this.checkedDefaulers = this.checkedDefaulers.includes(clientId) ?
this.checkedDefaulers.filter(id => id !== clientId) : [...this.checkedDefaulers, clientId];
}
reCheck() {
if (!this.$.model.data || !this.checkedDefaulers.length) return;
this.$.model.data.forEach(defaulter => {
defaulter.checked = this.checkedDefaulers.includes(defaulter.clientFk);
});
}
getBalanceDueTotal() {
this.$http.get('Defaulters/filter')
.then(res => {
if (!res.data) return 0;
this.balanceDueTotal = res.data.reduce(
(accumulator, currentValue) => {
return accumulator + (currentValue['amount'] || 0);
}, 0);
});
}
chipColor(date) {
const day = 24 * 60 * 60 * 1000;
const today = Date.vnNew();
today.setHours(0, 0, 0, 0);
const observationShipped = new Date(date);
observationShipped.setHours(0, 0, 0, 0);
const difference = today - observationShipped;
if (difference > (day * 20))
return 'alert';
if (difference > (day * 10))
return 'warning';
}
onResponse() {
if (!this.defaulter.observation)
throw new UserError(`The message can't be empty`);
const params = [];
for (let defaulter of this.checked) {
params.push({
text: this.defaulter.observation,
clientFk: defaulter.clientFk
});
}
this.$http.post(`ClientObservations`, params) .then(() => {
this.vnApp.showSuccess(this.$t('Observation saved!'));
this.sendMail();
this.$state.reload();
});
}
sendMail() {
const params = {
defaulters: this.checked,
observation: this.defaulter.observation,
};
this.$http.post(`Defaulters/observationEmail`, params);
}
exprBuilder(param, value) {
switch (param) {
case 'isWorker':
return {isWorker: value};
case 'creditInsurance':
case 'amount':
case 'clientFk':
case 'workerFk':
case 'countryFk':
case 'payMethod':
case 'salesPersonFk':
return {[`d.${param}`]: value};
case 'created':
return {'d.created': {
between: this.dateRange(value)}
};
case 'defaulterSinced':
return {'d.defaulterSinced': {
between: this.dateRange(value)}
};
}
}
dateRange(value) {
const minHour = new Date(value);
minHour.setHours(0, 0, 0, 0);
const maxHour = new Date(value);
maxHour.setHours(23, 59, 59, 59);
return [minHour, maxHour];
} }
} }

View File

@ -1,179 +0,0 @@
import './index';
import crudModel from 'core/mocks/crud-model';
describe('client defaulter', () => {
describe('Component vnClientDefaulter', () => {
let controller;
let $httpBackend;
beforeEach(ngModule('client'));
beforeEach(inject(($componentController, _$httpBackend_) => {
$httpBackend = _$httpBackend_;
const $element = angular.element('<vn-client-defaulter></vn-client-defaulter>');
controller = $componentController('vnClientDefaulter', {$element});
controller.$.model = crudModel;
controller.$.model.data = [
{clientFk: 1101, amount: 125},
{clientFk: 1102, amount: 500},
{clientFk: 1103, amount: 250}
];
}));
describe('checked() getter', () => {
it('should return the checked lines', () => {
const data = controller.$.model.data;
data[1].checked = true;
data[2].checked = true;
const checkedRows = controller.checked;
const firstCheckedRow = checkedRows[0];
const secondCheckedRow = checkedRows[1];
expect(firstCheckedRow.clientFk).toEqual(1102);
expect(secondCheckedRow.clientFk).toEqual(1103);
});
});
describe('chipColor()', () => {
it('should return undefined when the date is the present', () => {
let today = Date.vnNew();
let result = controller.chipColor(today);
expect(result).toEqual(undefined);
});
it('should return warning when the date is 10 days in the past', () => {
let pastDate = Date.vnNew();
pastDate = pastDate.setDate(pastDate.getDate() - 11);
let result = controller.chipColor(pastDate);
expect(result).toEqual('warning');
});
it('should return alert when the date is 20 days in the past', () => {
let pastDate = Date.vnNew();
pastDate = pastDate.setDate(pastDate.getDate() - 21);
let result = controller.chipColor(pastDate);
expect(result).toEqual('alert');
});
});
describe('onResponse()', () => {
it('should return error for empty message', () => {
let error;
try {
controller.onResponse();
} catch (e) {
error = e;
}
expect(error).toBeDefined();
expect(error.message).toBe(`The message can't be empty`);
});
it('should return saved message', () => {
const data = controller.$.model.data;
data[1].checked = true;
controller.defaulter = {observation: 'My new observation'};
const params = [{text: controller.defaulter.observation, clientFk: data[1].clientFk}];
jest.spyOn(controller.vnApp, 'showSuccess');
$httpBackend.expect('GET', `Defaulters/filter`).respond(200);
$httpBackend.expect('POST', `ClientObservations`, params).respond(200, params);
$httpBackend.expect('POST', `Defaulters/observationEmail`).respond(200);
controller.onResponse();
$httpBackend.flush();
expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Observation saved!');
});
});
describe('exprBuilder()', () => {
it('should search by sales person', () => {
const expr = controller.exprBuilder('salesPersonFk', '5');
expect(expr).toEqual({'d.salesPersonFk': '5'});
});
it('should search by client', () => {
const expr = controller.exprBuilder('clientFk', '5');
expect(expr).toEqual({'d.clientFk': '5'});
});
});
describe('getBalanceDueTotal()', () => {
it('should return balance due total', () => {
const defaulters = controller.$.model.data;
$httpBackend.when('GET', `Defaulters/filter`).respond(defaulters);
controller.getBalanceDueTotal();
$httpBackend.flush();
expect(controller.balanceDueTotal).toEqual(875);
});
});
describe('dateRange()', () => {
it('should return two dates with the hours at the start and end of the given date', () => {
const now = Date.vnNew();
const today = now.getDate();
const dateRange = controller.dateRange(now);
const start = dateRange[0].toString();
const end = dateRange[1].toString();
expect(start).toContain(today);
expect(start).toContain('00:00:00');
expect(end).toContain(today);
expect(end).toContain('23:59:59');
});
});
describe('reCheck()', () => {
it(`should recheck buys`, () => {
controller.$.model.data = [
{checked: false, clientFk: 1},
{checked: false, clientFk: 2},
{checked: false, clientFk: 3},
{checked: false, clientFk: 4},
];
controller.checkedDefaulers = [1, 2];
controller.reCheck();
expect(controller.$.model.data[0].checked).toEqual(true);
expect(controller.$.model.data[1].checked).toEqual(true);
expect(controller.$.model.data[2].checked).toEqual(false);
expect(controller.$.model.data[3].checked).toEqual(false);
});
});
describe('saveChecked()', () => {
it(`should check buy`, () => {
const buyCheck = 3;
controller.checkedDefaulers = [1, 2];
controller.saveChecked(buyCheck);
expect(controller.checkedDefaulers[2]).toEqual(buyCheck);
});
it(`should uncheck buy`, () => {
const buyUncheck = 3;
controller.checkedDefaulers = [1, 2, 3];
controller.saveChecked(buyUncheck);
expect(controller.checkedDefaulers[2]).toEqual(undefined);
});
});
});
});

View File

@ -1,14 +0,0 @@
Add observation: Añadir observación
Add observation to all selected clients: Añadir observación a {{total}} cliente(s) seleccionado(s)
Balance D.: Saldo V.
Credit I.: Crédito A.
Last observation: Última observación
L. O. Date: Fecha Ú. O.
Last observation date: Fecha última observación
Search client: Buscar clientes
Worker who made the last observation: Trabajador que ha realizado la última observación
Email sended!: Email enviado!
Observation saved!: Observación añadida!
P.Method: F.Pago
Pay Method: Forma de Pago
Country: Pais

View File

@ -119,6 +119,16 @@ module.exports = Self => {
arg: 'invoiceAmount', arg: 'invoiceAmount',
type: 'number', type: 'number',
description: `The invoice amount` description: `The invoice amount`
},
{
arg: 'initialTemperature',
type: 'number',
description: 'Initial temperature value'
},
{
arg: 'finalTemperature',
type: 'number',
description: 'Final temperature value'
} }
], ],
returns: { returns: {
@ -170,6 +180,10 @@ module.exports = Self => {
case 'invoiceInFk': case 'invoiceInFk':
param = `e.${param}`; param = `e.${param}`;
return {[param]: value}; return {[param]: value};
case 'initialTemperature':
return {'e.initialTemperature': {lte: value}};
case 'finalTemperature':
return {'e.finalTemperature': {gte: value}};
} }
}); });
filter = mergeFilters(ctx.args.filter, {where}); filter = mergeFilters(ctx.args.filter, {where});
@ -204,6 +218,8 @@ module.exports = Self => {
e.gestDocFk, e.gestDocFk,
e.invoiceInFk, e.invoiceInFk,
e.invoiceAmount, e.invoiceAmount,
e.initialTemperature,
e.finalTemperature,
t.landed, t.landed,
s.name supplierName, s.name supplierName,
s.nickname supplierAlias, s.nickname supplierAlias,

View File

@ -0,0 +1,43 @@
const models = require('vn-loopback/server/server').models;
describe('Transfer merchandise from one entry to the next day()', () => {
it('should Transfer buys not located', async() => {
const tx = await models.ItemShelving.beginTransaction({});
const options = {transaction: tx};
try {
const id = 3;
const item = 8;
const buy = 6;
const originalEntry = 4;
const ctx = {req: {accessToken: {userId: 48}}};
const currentItemShelving = await models.ItemShelving.findOne({where: {id}}, options);
await currentItemShelving.updateAttributes({itemFk: item, buyFk: buy}, options);
const {newEntryFk} = await models.Entry.transfer(ctx, originalEntry, options);
const originalEntrybuys = await models.Buy.find({where: {entryFk: originalEntry}}, options);
const newEntrybuys = await models.Buy.find({where: {entryFk: newEntryFk}}, options);
const itemShelvingsWithBuys = await models.Buy.find({
include: {
relation: 'itemShelving',
scope: {
fields: ['id'],
},
},
where: {entryFk: originalEntry},
}, options);
const hasItemShelving = await itemShelvingsWithBuys.filter(buy => buy.itemShelving().length);
expect(newEntrybuys.length).toEqual(originalEntrybuys.length - hasItemShelving.length);
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
});

View File

@ -0,0 +1,46 @@
module.exports = Self => {
Self.remoteMethodCtx('transfer', {
description: 'Transfer merchandise from one entry to the next day',
accessType: 'WRITE',
accepts: [
{
arg: 'id',
type: 'number',
required: true,
http: {source: 'path'}
}
],
http: {
path: '/:id/transfer',
verb: 'POST'
},
returns: {
arg: 'newEntryFk',
type: 'number'
}
});
Self.transfer = async(ctx, id, options) => {
const myOptions = {userId: ctx.req.accessToken.userId};
let tx;
if (typeof options == 'object')
Object.assign(myOptions, options);
if (!myOptions.transaction) {
tx = await Self.beginTransaction({});
myOptions.transaction = tx;
}
try {
await Self.rawSql('CALL vn.entry_transfer(?, @vNewEntry)', [id], myOptions);
const [newEntryFk] = await Self.rawSql('SELECT @vNewEntry newEntryFk', null, myOptions);
if (tx) await tx.commit();
return newEntryFk;
} catch (e) {
if (tx) await tx.rollback();
throw e;
}
};
};

View File

@ -114,6 +114,11 @@
"type": "belongsTo", "type": "belongsTo",
"model": "Delivery", "model": "Delivery",
"foreignKey": "deliveryFk" "foreignKey": "deliveryFk"
},
"itemShelving": {
"type": "hasMany",
"model": "ItemShelving",
"foreignKey": "buyFk"
} }
} }
} }

View File

@ -12,6 +12,7 @@ module.exports = Self => {
require('../methods/entry/addFromPackaging')(Self); require('../methods/entry/addFromPackaging')(Self);
require('../methods/entry/addFromBuy')(Self); require('../methods/entry/addFromBuy')(Self);
require('../methods/entry/buyLabel')(Self); require('../methods/entry/buyLabel')(Self);
require('../methods/entry/transfer')(Self);
require('../methods/entry/labelSupplier')(Self); require('../methods/entry/labelSupplier')(Self);
require('../methods/entry/buyLabelSupplier')(Self); require('../methods/entry/buyLabelSupplier')(Self);

View File

@ -68,6 +68,12 @@
}, },
"invoiceAmount": { "invoiceAmount": {
"type": "number" "type": "number"
},
"initialTemperature": {
"type": "number"
},
"finalTemperature": {
"type": "number"
} }
}, },
"relations": { "relations": {

View File

@ -13,66 +13,114 @@ module.exports = Self => {
} }
}); });
Self.exchangeRateUpdate = async() => { Self.exchangeRateUpdate = async(options = {}) => {
const models = Self.app.models;
const myOptions = {};
let tx;
if (typeof options == 'object')
Object.assign(myOptions, options);
if (!myOptions.transaction) {
tx = await Self.beginTransaction({});
myOptions.transaction = tx;
}
try {
const response = await axios.get('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml'); const response = await axios.get('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml');
const xmlData = response.data; const xmlData = response.data;
const doc = new DOMParser({errorHandler: {warning: () => {}}})?.parseFromString(xmlData, 'text/xml'); const doc = new DOMParser({errorHandler: {warning: () => {}}})
.parseFromString(xmlData, 'text/xml');
const cubes = doc?.getElementsByTagName('Cube'); const cubes = doc?.getElementsByTagName('Cube');
if (!cubes || cubes.length === 0) if (!cubes || cubes.length === 0)
throw new UserError('No cubes found. Exiting the method.'); throw new UserError('No cubes found. Exiting the method.');
const models = Self.app.models; const currencies = await models.Currency.find({where: {hasToDownloadRate: true}}, myOptions);
const maxDateRecord = await models.ReferenceRate.findOne({order: 'dated DESC'}, myOptions);
const maxDateRecord = await models.ReferenceRate.findOne({order: 'dated DESC'});
const maxDate = maxDateRecord?.dated ? new Date(maxDateRecord.dated) : null; const maxDate = maxDateRecord?.dated ? new Date(maxDateRecord.dated) : null;
let lastProcessedDate = maxDate;
for (const cube of Array.from(cubes)) { for (const cube of Array.from(cubes)) {
if (cube.nodeType === doc.ELEMENT_NODE && cube.attributes.getNamedItem('time')) { if (cube.nodeType === doc.ELEMENT_NODE && cube.attributes.getNamedItem('time')) {
const xmlDate = new Date(cube.getAttribute('time')); const xmlDate = new Date(cube.getAttribute('time'));
const xmlDateWithoutTime = new Date(xmlDate.getFullYear(), xmlDate.getMonth(), xmlDate.getDate()); const xmlDateWithoutTime = new Date(
if (!maxDate || maxDate < xmlDateWithoutTime) { xmlDate.getFullYear(),
for (const rateCube of Array.from(cube.childNodes)) { xmlDate.getMonth(),
if (rateCube.nodeType === doc.ELEMENT_NODE) { xmlDate.getDate()
const currencyCode = rateCube.getAttribute('currency'); );
const rate = rateCube.getAttribute('rate');
if (['USD', 'CNY', 'GBP'].includes(currencyCode)) {
const currency = await models.Currency.findOne({where: {code: currencyCode}});
if (!currency) throw new UserError(`Currency not found for code: ${currencyCode}`);
const existingRate = await models.ReferenceRate.findOne({
where: {currencyFk: currency.id, dated: xmlDate}
});
if (existingRate) { if (!maxDate || xmlDateWithoutTime > maxDate) {
if (existingRate.value !== rate) if (lastProcessedDate && xmlDateWithoutTime > lastProcessedDate) {
await existingRate.updateAttributes({value: rate}); for (const currency of currencies) {
} else { await fillMissingDates(
await models.ReferenceRate.create({ models, currency, lastProcessedDate, xmlDateWithoutTime, myOptions
currencyFk: currency.id,
dated: xmlDate,
value: rate
});
}
const monday = 1;
if (xmlDateWithoutTime.getDay() === monday) {
const saturday = new Date(xmlDateWithoutTime);
saturday.setDate(xmlDateWithoutTime.getDate() - 2);
const sunday = new Date(xmlDateWithoutTime);
sunday.setDate(xmlDateWithoutTime.getDate() - 1);
for (const date of [saturday, sunday]) {
await models.ReferenceRate.upsertWithWhere(
{currencyFk: currency.id, dated: date},
{currencyFk: currency.id, dated: date, value: rate}
); );
} }
} }
} }
for (const rateCube of Array.from(cube.childNodes)) {
if (rateCube.nodeType === doc.ELEMENT_NODE) {
const currencyCode = rateCube.getAttribute('currency');
const rate = rateCube.getAttribute('rate');
const currency = currencies.find(c => c.code === currencyCode);
if (currency) {
const existingRate = await models.ReferenceRate.findOne({
where: {currencyFk: currency.id, dated: xmlDateWithoutTime}
}, myOptions);
if (existingRate) {
if (existingRate.value !== rate)
await existingRate.updateAttributes({value: rate}, myOptions);
} else {
await models.ReferenceRate.create({
currencyFk: currency.id,
dated: xmlDateWithoutTime,
value: rate
}, myOptions);
} }
} }
} }
} }
lastProcessedDate = xmlDateWithoutTime;
}
}
if (tx) await tx.commit();
} catch (error) {
if (tx) await tx.rollback();
throw error;
}
};
async function getLastValidRate(models, currencyId, date, myOptions) {
return models.ReferenceRate.findOne({
where: {currencyFk: currencyId, dated: {lt: date}},
order: 'dated DESC'
}, myOptions);
}
async function fillMissingDates(models, currency, startDate, endDate, myOptions) {
const cursor = new Date(startDate);
cursor.setDate(cursor.getDate() + 1);
while (cursor < endDate) {
const existingRate = await models.ReferenceRate.findOne({
where: {currencyFk: currency.id, dated: cursor}
}, myOptions);
if (!existingRate) {
const lastValid = await getLastValidRate(models, currency.id, cursor, myOptions);
if (lastValid) {
await models.ReferenceRate.create({
currencyFk: currency.id,
dated: new Date(cursor),
value: lastValid.value
}, myOptions);
}
}
cursor.setDate(cursor.getDate() + 1);
}
} }
}; };
};

View File

@ -1,52 +1,190 @@
describe('exchangeRateUpdate functionality', function() { describe('exchangeRateUpdate functionality', function() {
const axios = require('axios'); const axios = require('axios');
const models = require('vn-loopback/server/server').models; const models = require('vn-loopback/server/server').models;
let tx; let options;
beforeEach(function() { function formatYmd(d) {
spyOn(axios, 'get').and.returnValue(Promise.resolve({ const mm = (d.getMonth() + 1).toString().padStart(2, '0');
data: `<Cube> const dd = d.getDate().toString().padStart(2, '0');
<Cube time='2024-04-12'> return `${d.getFullYear()}-${mm}-${dd}`;
}
afterEach(async() => {
await tx.rollback();
});
beforeEach(async() => {
tx = await models.Sale.beginTransaction({});
options = {transaction: tx};
spyOn(axios, 'get').and.returnValue(Promise.resolve({data: ''}));
});
it('should process XML data and create rates', async function() {
const d1 = Date.vnNew();
const d4 = Date.vnNew();
d4.setDate(d4.getDate() + 1);
const xml = `<Cube>
<Cube time='${formatYmd(d1)}'>
<Cube currency='USD' rate='1.1'/> <Cube currency='USD' rate='1.1'/>
<Cube currency='CNY' rate='1.2'/> <Cube currency='CNY' rate='1.2'/>
</Cube> </Cube>
</Cube>` <Cube time='${formatYmd(d4)}'>
})); <Cube currency='USD' rate='1.3'/>
}); </Cube>
</Cube>`;
it('should process XML data and update or create rates in the database', async function() { axios.get.and.returnValue(Promise.resolve({data: xml}));
spyOn(models.ReferenceRate, 'findOne').and.returnValue(Promise.resolve(null)); spyOn(models.ReferenceRate, 'findOne').and.returnValue(Promise.resolve(null));
spyOn(models.ReferenceRate, 'create').and.returnValue(Promise.resolve()); spyOn(models.ReferenceRate, 'create').and.returnValue(Promise.resolve());
await models.InvoiceIn.exchangeRateUpdate(options);
await models.InvoiceIn.exchangeRateUpdate(); expect(models.ReferenceRate.create).toHaveBeenCalledTimes(3);
expect(models.ReferenceRate.create).toHaveBeenCalledTimes(2);
}); });
it('should not create or update rates when no XML data is available', async function() { it('should handle no data', async function() {
axios.get.and.returnValue(Promise.resolve({})); axios.get.and.returnValue(Promise.resolve({}));
spyOn(models.ReferenceRate, 'create'); spyOn(models.ReferenceRate, 'create');
let e;
let thrownError = null;
try { try {
await models.InvoiceIn.exchangeRateUpdate(); await models.InvoiceIn.exchangeRateUpdate(options);
} catch (error) { } catch (err) {
thrownError = error; e = err;
} }
expect(thrownError.message).toBe('No cubes found. Exiting the method.'); expect(e.message).toBe('No cubes found. Exiting the method.');
expect(models.ReferenceRate.create).not.toHaveBeenCalled();
}); });
it('should handle errors gracefully', async function() { it('should handle errors', async function() {
axios.get.and.returnValue(Promise.reject(new Error('Network error'))); axios.get.and.returnValue(Promise.reject(new Error('Network error')));
let error; let e;
try { try {
await models.InvoiceIn.exchangeRateUpdate(); await models.InvoiceIn.exchangeRateUpdate(options);
} catch (e) { } catch (err) {
error = e; e = err;
} }
expect(error).toBeDefined(); expect(e).toBeDefined();
expect(error.message).toBe('Network error'); expect(e.message).toBe('Network error');
});
it('should update existing rate', async function() {
const existingRate = await models.ReferenceRate.findOne({
order: 'id DESC'
}, options);
if (!existingRate) return fail('No ReferenceRate records in DB');
const currency = await models.Currency.findById(existingRate.currencyFk, null, options);
const xml = `<Cube>
<Cube time='${formatYmd(existingRate.dated)}'>
<Cube currency='${currency.code}' rate='2.22'/>
</Cube>
</Cube>`;
axios.get.and.returnValue(Promise.resolve({data: xml}));
await models.InvoiceIn.exchangeRateUpdate(options);
const updatedRate = await models.ReferenceRate.findById(existingRate.id, null, options);
expect(updatedRate.value).toBeCloseTo('2.22');
});
it('should not update if same rate', async function() {
const existingRate = await models.ReferenceRate.findOne({order: 'id DESC'}, options);
if (!existingRate) return fail('No existing ReferenceRate in DB');
const currency = await models.Currency.findById(existingRate.currencyFk, null, options);
const oldValue = existingRate.value;
const xml = `<Cube>
<Cube time='${formatYmd(existingRate.dated)}'>
<Cube currency='${currency.code}' rate='${oldValue}'/>
</Cube>
</Cube>`;
axios.get.and.returnValue(Promise.resolve({data: xml}));
await models.InvoiceIn.exchangeRateUpdate(options);
const updatedRate = await models.ReferenceRate.findById(existingRate.id, null, options);
expect(updatedRate.value).toBe(oldValue);
});
it('should backfill missing dates', async function() {
const lastRate = await models.ReferenceRate.findOne({order: 'dated DESC'}, options);
if (!lastRate) return fail('No existing ReferenceRate data in DB');
const currency = await models.Currency.findById(lastRate.currencyFk, null, options);
const d1 = new Date(lastRate.dated);
d1.setDate(d1.getDate() + 1);
const d4 = new Date(lastRate.dated);
d4.setDate(d4.getDate() + 4);
const xml = `<Cube>
<Cube time='${formatYmd(d1)}'>
<Cube currency='${currency.code}' rate='1.0'/>
</Cube>
<Cube time='${formatYmd(d4)}'>
<Cube currency='${currency.code}' rate='2.0'/>
</Cube>
</Cube>`;
axios.get.and.returnValue(Promise.resolve({data: xml}));
const beforeCount = await models.ReferenceRate.count({}, options);
await models.InvoiceIn.exchangeRateUpdate(options);
const afterCount = await models.ReferenceRate.count({}, options);
expect(afterCount - beforeCount).toBe(4);
});
it('should create entries for day1 and day2 from the feed, and not backfill day3', async function() {
const lastRate = await models.ReferenceRate.findOne({order: 'dated DESC'}, options);
if (!lastRate) return fail('No existing ReferenceRate data in DB');
const currency = await models.Currency.findById(lastRate.currencyFk, null, options);
if (!currency) return fail(`No currency for ID ${lastRate.currencyFk}`);
const day1 = new Date(lastRate.dated);
day1.setDate(day1.getDate() + 1);
const day2 = new Date(lastRate.dated);
day2.setDate(day2.getDate() + 2);
const day3 = new Date(lastRate.dated);
day3.setDate(day3.getDate() + 3);
const xml = `<Cube>
<Cube time='${formatYmd(day1)}'>
<Cube currency='${currency.code}' rate='1.1'/>
</Cube>
<Cube time='${formatYmd(day2)}'>
<Cube currency='${currency.code}' rate='2.2'/>
</Cube>
</Cube>`;
axios.get.and.returnValue(Promise.resolve({data: xml}));
await models.InvoiceIn.exchangeRateUpdate(options);
const day3Record = await models.ReferenceRate.findOne({
where: {currencyFk: currency.id, dated: day3}
}, options);
expect(day3Record).toBeNull();
const day1Record = await models.ReferenceRate.findOne({
where: {currencyFk: currency.id, dated: day1}
}, options);
const day2Record = await models.ReferenceRate.findOne({
where: {currencyFk: currency.id, dated: day2}
}, options);
expect(day1Record.value).toBeCloseTo('1.1');
expect(day2Record.value).toBeCloseTo('2.2');
}); });
}); });

View File

@ -74,7 +74,8 @@ module.exports = Self => {
AND t.companyFk = ? AND t.companyFk = ?
AND NOT t.isDeleted AND NOT t.isDeleted
GROUP BY IF(c.hasToInvoiceByAddress, a.id, c.id) GROUP BY IF(c.hasToInvoiceByAddress, a.id, c.id)
HAVING SUM(t.totalWithVat) > 0;`; HAVING SUM(t.totalWithVat) > 0
ORDER BY c.id`;
const addresses = await Self.rawSql(query, [ const addresses = await Self.rawSql(query, [
minShipped, minShipped,

View File

@ -0,0 +1,70 @@
module.exports = Self => {
Self.remoteMethod('getListItemNewer', {
description:
'Get boolean if any or specific item of the shelving has older created in another shelving or parking',
accessType: 'READ',
accepts: [{
arg: 'shelvingFk',
type: 'string',
required: true,
description: 'Shelving code'
},
{
arg: 'parking',
type: 'string',
required: true,
description: 'Parking code'
},
],
returns: {
type: 'Array',
root: true
},
http: {
path: `/getListItemNewer`,
verb: 'GET'
}
});
Self.getListItemNewer = async(shelvingFk, parking, options) => {
const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
const [isParkingToReview] = await Self.rawSql(`
SELECT COUNT(p.id) parkingToReview
FROM vn.parking p
JOIN vn.sector s ON s.id = p.sectorFk
JOIN vn.productionConfig pc
WHERE p.code = ? AND s.code = pc.sectorToCode;`,
[parking], myOptions);
if (isParkingToReview['parkingToReview'] < 1) return [];
const result = await Self.rawSql(`
WITH tItemShelving AS(
SELECT is2.itemFk, is2.created, p.sectorFK, is2.id
FROM vn.itemShelving is2
JOIN vn.shelving sh ON sh.id = is2.shelvingFk
JOIN vn.parking p ON p.id = sh.parkingFk
JOIN vn.sector s ON s.id = p.sectorFk
JOIN vn.productionConfig pc
WHERE sh.code = ? AND s.code = pc.sectorFromCode
), tItemInSector AS (
SELECT is2.itemFk, is2.created, sh.code
FROM vn.itemShelving is2
JOIN vn.shelving sh ON sh.id = is2.shelvingFk
JOIN vn.parking p ON p.id = sh.parkingFk
JOIN vn.sector s ON s.id = p.sectorFk
JOIN vn.productionConfig pc
WHERE sh.code <> ?
AND s.code = pc.sectorFromCode)
SELECT ti.itemFK, tis.code shelvingFk
FROM tItemShelving ti
JOIN tItemInSector tis ON tis.itemFk = ti.itemFk
JOIN vn.productionConfig pc
WHERE ti.created + INTERVAL pc.itemOlderReviewHours HOUR < tis.created;`,
[shelvingFk, shelvingFk], myOptions);
return result;
};
};

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