diff --git a/.env.development b/.env.development index 9e8602bc..46e21617 100755 --- a/.env.development +++ b/.env.development @@ -1,17 +1,18 @@ APP_VERSION="1.1.22" SERVICE_WORKER_FILE="service-worker.js" -APP_ID="13" +APP_ID="17" DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_SERVER="freeplanet_serverside" SERVERDIR_WEBSITE="" SERVERPW_WEBSITE="" APP_URL="https://localhost" URL_FACEBOOK="https://www.facebook.com/freeplanetapp" +PROVA_PAOLO="PROVA ENV FUNZIONA!" LANG_DEFAULT="it" PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T" MONGODB_HOST="https://localhost:3000" -LOGO_REG='riso-logo-full.png' +LOGO_REG='piuchebuono-logo-full.png' TEST_NAME="Paolo" TEST_SURNAME="Arena" TEST_EMAIL="" @@ -24,5 +25,5 @@ DEBUG="1" TELEGRAM_SUPPORT="" PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a" TEST_CELL="" -VUE_APP_ISTEST="1" -VUE_APP_INLOCALE="1" +VUE_APP_ISTEST=1 +VUE_APP_INLOCALE=1 diff --git a/now.txt b/now.txt index 63f31c52..e5f5d4ff 100644 --- a/now.txt +++ b/now.txt @@ -1 +1 @@ -TERMINA DI LAVORARE SU gruppomacro.app: (Sovrascrivo !) +TERMINA DI LAVORARE SU riso.app: (Sovrascrivo !) diff --git a/package.json b/package.json index 1b3f9ab1..7ee4ed75 100755 --- a/package.json +++ b/package.json @@ -1,15 +1,15 @@ { - "name": "riso", + "name": "piuchebuono", "version": "1.1.22", - "description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.", - "productName": "Riso", + "description": "PiuCheBuono", + "productName": "PiuCheBuono", "author": "Surya", "private": true, "keywords": [], "license": "MIT", "scripts": { "dev": "quasar dev", - "build": "NODE_ENV=production quasar build", + "build": "quasar build", "buildpwa": "NODE_ENV=production quasar build -m pwa", "buildpwatest": "NODE_ENV=test quasar build -m pwa", "buildspa": "NODE_ENV=production quasar build -m spa", @@ -127,7 +127,6 @@ "jest": "^29.7.0", "json-loader": "^0.5.7", "node-sass": "^9.0.0", - "nodemon": "^3.1.7", "npm-check-updates": "^17.1.3", "optimize-css-assets-webpack-plugin": "^6.0.1", "parcel": "^2.12.0", @@ -165,4 +164,4 @@ "npm": ">= 6.14.8", "yarn": ">= 1.21.1" } -} +} \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico index d283c964..765302c2 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/images/android-chrome-192x192.png b/public/images/android-chrome-192x192.png index 95b960e9..0c81abf2 100644 Binary files a/public/images/android-chrome-192x192.png and b/public/images/android-chrome-192x192.png differ diff --git a/public/images/arcadei/borgovivo.png b/public/images/arcadei/borgovivo.png new file mode 100644 index 00000000..de6d475f Binary files /dev/null and b/public/images/arcadei/borgovivo.png differ diff --git a/public/images/arcadei/boscovivo.png b/public/images/arcadei/boscovivo.png new file mode 100644 index 00000000..0af031a9 Binary files /dev/null and b/public/images/arcadei/boscovivo.png differ diff --git a/public/images/arcadei/img1.png b/public/images/arcadei/img1.png new file mode 100644 index 00000000..8f25fe63 Binary files /dev/null and b/public/images/arcadei/img1.png differ diff --git a/public/images/arcadei/ortovivo-gsa.png b/public/images/arcadei/ortovivo-gsa.png new file mode 100644 index 00000000..4cb7eea8 Binary files /dev/null and b/public/images/arcadei/ortovivo-gsa.png differ diff --git a/public/images/arcadei/pandeldia.png b/public/images/arcadei/pandeldia.png new file mode 100644 index 00000000..9ff66ff1 Binary files /dev/null and b/public/images/arcadei/pandeldia.png differ diff --git a/public/images/arcadei/prospera.png b/public/images/arcadei/prospera.png new file mode 100644 index 00000000..1f3712f9 Binary files /dev/null and b/public/images/arcadei/prospera.png differ diff --git a/public/images/arcadei/saluteviva.png b/public/images/arcadei/saluteviva.png new file mode 100644 index 00000000..f8da1f0b Binary files /dev/null and b/public/images/arcadei/saluteviva.png differ diff --git a/public/images/arcadei/scuolaviva.png b/public/images/arcadei/scuolaviva.png new file mode 100644 index 00000000..b6e0c1a2 Binary files /dev/null and b/public/images/arcadei/scuolaviva.png differ diff --git a/public/images/badge-96x96.png b/public/images/badge-96x96.png index d1a5cddf..95f8f921 100644 Binary files a/public/images/badge-96x96.png and b/public/images/badge-96x96.png differ diff --git a/public/images/favicon-16x16.png b/public/images/favicon-16x16.png index c28cef9f..d5a67f48 100644 Binary files a/public/images/favicon-16x16.png and b/public/images/favicon-16x16.png differ diff --git a/public/images/favicon-32x32.png b/public/images/favicon-32x32.png index a02e38b0..f2149cac 100644 Binary files a/public/images/favicon-32x32.png and b/public/images/favicon-32x32.png differ diff --git a/public/images/favicon-96x96.png b/public/images/favicon-96x96.png deleted file mode 100644 index f741b210..00000000 Binary files a/public/images/favicon-96x96.png and /dev/null differ diff --git a/public/images/favicon.ico b/public/images/favicon.ico index d283c964..765302c2 100644 Binary files a/public/images/favicon.ico and b/public/images/favicon.ico differ diff --git a/public/images/ferrara.jpg b/public/images/ferrara.jpg deleted file mode 100644 index b4615a3a..00000000 Binary files a/public/images/ferrara.jpg and /dev/null differ diff --git a/public/images/freeplanet-logo-full.odg b/public/images/freeplanet-logo-full.odg deleted file mode 100755 index 854da650..00000000 Binary files a/public/images/freeplanet-logo-full.odg and /dev/null differ diff --git a/public/images/freeplanet-logo-full.svg b/public/images/freeplanet-logo-full.svg deleted file mode 100755 index b9c10df3..00000000 --- a/public/images/freeplanet-logo-full.svg +++ /dev/null @@ -1,1186 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/images/imglogonotif.png b/public/images/imglogonotif.png index 95b960e9..785535fc 100644 Binary files a/public/images/imglogonotif.png and b/public/images/imglogonotif.png differ diff --git a/public/images/install_app_on_android_1.jpg b/public/images/install_app_on_android_1.jpg deleted file mode 100644 index ec5a0899..00000000 Binary files a/public/images/install_app_on_android_1.jpg and /dev/null differ diff --git a/public/images/install_app_on_android_2.jpg b/public/images/install_app_on_android_2.jpg deleted file mode 100644 index 97df25c1..00000000 Binary files a/public/images/install_app_on_android_2.jpg and /dev/null differ diff --git a/public/images/install_app_on_android_3.jpg b/public/images/install_app_on_android_3.jpg deleted file mode 100644 index 88c316cb..00000000 Binary files a/public/images/install_app_on_android_3.jpg and /dev/null differ diff --git a/public/images/install_app_on_ios_1.png b/public/images/install_app_on_ios_1.png deleted file mode 100644 index bfe9f9de..00000000 Binary files a/public/images/install_app_on_ios_1.png and /dev/null differ diff --git a/public/images/install_app_on_ios_1b.jpg b/public/images/install_app_on_ios_1b.jpg deleted file mode 100644 index a9ff9893..00000000 Binary files a/public/images/install_app_on_ios_1b.jpg and /dev/null differ diff --git a/public/images/install_app_on_ios_2.jpg b/public/images/install_app_on_ios_2.jpg deleted file mode 100644 index f05f86d8..00000000 Binary files a/public/images/install_app_on_ios_2.jpg and /dev/null differ diff --git a/public/images/pcb-android-icon-144x144.png b/public/images/pcb-android-icon-144x144.png new file mode 100644 index 00000000..fdea5eb1 Binary files /dev/null and b/public/images/pcb-android-icon-144x144.png differ diff --git a/public/images/pcb-android-icon-192x192.png b/public/images/pcb-android-icon-192x192.png new file mode 100644 index 00000000..93bb5fb7 Binary files /dev/null and b/public/images/pcb-android-icon-192x192.png differ diff --git a/public/images/pcb-android-icon-36x36.png b/public/images/pcb-android-icon-36x36.png new file mode 100644 index 00000000..f700c0d2 Binary files /dev/null and b/public/images/pcb-android-icon-36x36.png differ diff --git a/public/images/pcb-android-icon-48x48.png b/public/images/pcb-android-icon-48x48.png new file mode 100644 index 00000000..4018b080 Binary files /dev/null and b/public/images/pcb-android-icon-48x48.png differ diff --git a/public/images/pcb-android-icon-72x72.png b/public/images/pcb-android-icon-72x72.png new file mode 100644 index 00000000..fdaff445 Binary files /dev/null and b/public/images/pcb-android-icon-72x72.png differ diff --git a/public/images/pcb-android-icon-96x96.png b/public/images/pcb-android-icon-96x96.png new file mode 100644 index 00000000..74ae0a32 Binary files /dev/null and b/public/images/pcb-android-icon-96x96.png differ diff --git a/public/images/pcb-apple-icon-114x114.png b/public/images/pcb-apple-icon-114x114.png new file mode 100644 index 00000000..de67dfff Binary files /dev/null and b/public/images/pcb-apple-icon-114x114.png differ diff --git a/public/images/pcb-apple-icon-120x120.png b/public/images/pcb-apple-icon-120x120.png new file mode 100644 index 00000000..5864c9c8 Binary files /dev/null and b/public/images/pcb-apple-icon-120x120.png differ diff --git a/public/images/pcb-apple-icon-144x144.png b/public/images/pcb-apple-icon-144x144.png new file mode 100644 index 00000000..fdea5eb1 Binary files /dev/null and b/public/images/pcb-apple-icon-144x144.png differ diff --git a/public/images/pcb-apple-icon-152x152.png b/public/images/pcb-apple-icon-152x152.png new file mode 100644 index 00000000..6e92509a Binary files /dev/null and b/public/images/pcb-apple-icon-152x152.png differ diff --git a/public/images/pcb-apple-icon-180x180.png b/public/images/pcb-apple-icon-180x180.png new file mode 100644 index 00000000..4d59cedc Binary files /dev/null and b/public/images/pcb-apple-icon-180x180.png differ diff --git a/public/images/pcb-apple-icon-57x57.png b/public/images/pcb-apple-icon-57x57.png new file mode 100644 index 00000000..fb201a9d Binary files /dev/null and b/public/images/pcb-apple-icon-57x57.png differ diff --git a/public/images/pcb-apple-icon-60x60.png b/public/images/pcb-apple-icon-60x60.png new file mode 100644 index 00000000..3b5f1c33 Binary files /dev/null and b/public/images/pcb-apple-icon-60x60.png differ diff --git a/public/images/pcb-apple-icon-72x72.png b/public/images/pcb-apple-icon-72x72.png new file mode 100644 index 00000000..fdaff445 Binary files /dev/null and b/public/images/pcb-apple-icon-72x72.png differ diff --git a/public/images/pcb-apple-icon-76x76.png b/public/images/pcb-apple-icon-76x76.png new file mode 100644 index 00000000..2882992b Binary files /dev/null and b/public/images/pcb-apple-icon-76x76.png differ diff --git a/public/images/pcb-apple-icon.png b/public/images/pcb-apple-icon.png new file mode 100644 index 00000000..422a8dca Binary files /dev/null and b/public/images/pcb-apple-icon.png differ diff --git a/public/images/piuchebuono-logo-full.png b/public/images/piuchebuono-logo-full.png new file mode 100644 index 00000000..5465d80c Binary files /dev/null and b/public/images/piuchebuono-logo-full.png differ diff --git a/public/images/piuchebuono.jpg b/public/images/piuchebuono.jpg new file mode 100644 index 00000000..88e9bab0 Binary files /dev/null and b/public/images/piuchebuono.jpg differ diff --git a/public/images/riso-android-icon-144x144.png b/public/images/riso-android-icon-144x144.png deleted file mode 100644 index 37dcd661..00000000 Binary files a/public/images/riso-android-icon-144x144.png and /dev/null differ diff --git a/public/images/riso-android-icon-192x192.png b/public/images/riso-android-icon-192x192.png deleted file mode 100644 index 95b960e9..00000000 Binary files a/public/images/riso-android-icon-192x192.png and /dev/null differ diff --git a/public/images/riso-android-icon-36x36.png b/public/images/riso-android-icon-36x36.png deleted file mode 100644 index c78a13a3..00000000 Binary files a/public/images/riso-android-icon-36x36.png and /dev/null differ diff --git a/public/images/riso-android-icon-384x384.png b/public/images/riso-android-icon-384x384.png deleted file mode 100644 index ce1ffc47..00000000 Binary files a/public/images/riso-android-icon-384x384.png and /dev/null differ diff --git a/public/images/riso-android-icon-48x48.png b/public/images/riso-android-icon-48x48.png deleted file mode 100644 index 499e8674..00000000 Binary files a/public/images/riso-android-icon-48x48.png and /dev/null differ diff --git a/public/images/riso-android-icon-512x512.png b/public/images/riso-android-icon-512x512.png deleted file mode 100644 index e1c31acd..00000000 Binary files a/public/images/riso-android-icon-512x512.png and /dev/null differ diff --git a/public/images/riso-android-icon-72x72.png b/public/images/riso-android-icon-72x72.png deleted file mode 100644 index f95f7320..00000000 Binary files a/public/images/riso-android-icon-72x72.png and /dev/null differ diff --git a/public/images/riso-android-icon-96x96.png b/public/images/riso-android-icon-96x96.png deleted file mode 100644 index 98dbf9d9..00000000 Binary files a/public/images/riso-android-icon-96x96.png and /dev/null differ diff --git a/public/images/riso-apple-icon-114x114.png b/public/images/riso-apple-icon-114x114.png deleted file mode 100644 index 882dd21c..00000000 Binary files a/public/images/riso-apple-icon-114x114.png and /dev/null differ diff --git a/public/images/riso-apple-icon-120x120.png b/public/images/riso-apple-icon-120x120.png deleted file mode 100644 index 734b0503..00000000 Binary files a/public/images/riso-apple-icon-120x120.png and /dev/null differ diff --git a/public/images/riso-apple-icon-144x144.png b/public/images/riso-apple-icon-144x144.png deleted file mode 100644 index 923da7be..00000000 Binary files a/public/images/riso-apple-icon-144x144.png and /dev/null differ diff --git a/public/images/riso-apple-icon-152x152.png b/public/images/riso-apple-icon-152x152.png deleted file mode 100644 index 84fd455d..00000000 Binary files a/public/images/riso-apple-icon-152x152.png and /dev/null differ diff --git a/public/images/riso-apple-icon-180x180.png b/public/images/riso-apple-icon-180x180.png deleted file mode 100644 index e457d906..00000000 Binary files a/public/images/riso-apple-icon-180x180.png and /dev/null differ diff --git a/public/images/riso-apple-icon-57x57.png b/public/images/riso-apple-icon-57x57.png deleted file mode 100644 index f5f538db..00000000 Binary files a/public/images/riso-apple-icon-57x57.png and /dev/null differ diff --git a/public/images/riso-apple-icon-60x60.png b/public/images/riso-apple-icon-60x60.png deleted file mode 100644 index 4121f834..00000000 Binary files a/public/images/riso-apple-icon-60x60.png and /dev/null differ diff --git a/public/images/riso-apple-icon-72x72.png b/public/images/riso-apple-icon-72x72.png deleted file mode 100644 index 5efd872d..00000000 Binary files a/public/images/riso-apple-icon-72x72.png and /dev/null differ diff --git a/public/images/riso-apple-icon-76x76.png b/public/images/riso-apple-icon-76x76.png deleted file mode 100644 index 6db4b76f..00000000 Binary files a/public/images/riso-apple-icon-76x76.png and /dev/null differ diff --git a/public/images/riso-apple-icon.png b/public/images/riso-apple-icon.png deleted file mode 100644 index cfaeb3c0..00000000 Binary files a/public/images/riso-apple-icon.png and /dev/null differ diff --git a/public/images/riso-logo-full.png b/public/images/riso-logo-full.png deleted file mode 100644 index 51a29654..00000000 Binary files a/public/images/riso-logo-full.png and /dev/null differ diff --git a/public/images/riso_home.png b/public/images/riso_home.png deleted file mode 100644 index 3d065405..00000000 Binary files a/public/images/riso_home.png and /dev/null differ diff --git a/public/images/riso_services.png b/public/images/riso_services.png deleted file mode 100644 index 85a940bc..00000000 Binary files a/public/images/riso_services.png and /dev/null differ diff --git a/public/images/sito_in_manutenzione.jpg b/public/images/sito_in_manutenzione.jpg new file mode 100644 index 00000000..d257d138 Binary files /dev/null and b/public/images/sito_in_manutenzione.jpg differ diff --git a/quasar.conf.js b/quasar.conf.js index 2d89d6d2..964ee14f 100755 --- a/quasar.conf.js +++ b/quasar.conf.js @@ -152,9 +152,9 @@ module.exports = configure((ctx) => ({ }, devServer: { https: false, - port: 8084, + port: 8088, open: false, // opens browser window automatically - hot: false, // Disable hot module replacement + hot: true, // Disable hot module replacement headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': '*', @@ -313,9 +313,9 @@ module.exports = configure((ctx) => ({ }, manifest: { - name: 'Riso', - short_name: 'Riso', - description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.', + name: 'Più che Buono', + short_name: 'PiuCheBuono', + description: 'PiuCheBuono è un GAS e Bottega', display: 'standalone', orientation: 'portrait', background_color: '#fff', @@ -325,54 +325,54 @@ module.exports = configure((ctx) => ({ start_url: "/?homescreen=1", icons: [ { - src: 'images/riso-android-icon-512x512.png', + src: 'images/pcb-android-icon-512x512.png', sizes: '512x512', type: 'image/png', }, { - src: 'images/riso-android-icon-384x384.png', + src: 'images/pcb-android-icon-384x384.png', sizes: '384x384', type: 'image/png', }, { - src: 'images/riso-android-icon-192x192.png', + src: 'images/pcb-android-icon-192x192.png', sizes: '192x192', type: 'image/png', }, { - src: 'images/riso-android-icon-144x144.png', + src: 'images/pcb-android-icon-144x144.png', sizes: '144x144', type: 'image/png', }, { - src: 'images/riso-android-icon-96x96.png', + src: 'images/pcb-android-icon-96x96.png', sizes: '96x96', type: 'image/png', }, { - src: 'images/riso-apple-icon-120x120.png', + src: 'images/pcb-apple-icon-120x120.png', sizes: '120x120', type: 'image/png', }, { - src: 'images/riso-apple-icon-144x144.png', + src: 'images/pcb-apple-icon-144x144.png', sizes: '144x144', type: 'image/png', }, { - src: 'images/riso-apple-icon-152x152.png', + src: 'images/pcb-apple-icon-152x152.png', sizes: '152x152', type: 'image/png', }, { - src: 'images/riso-apple-icon-180x180.png', + src: 'images/pcb-apple-icon-180x180.png', sizes: '180x180', type: 'image/png', }, ], related_applications: [{ "platform": "webapp", - "url": "https://www.riso.app/manifest.json" + "url": "https://www.piuchebuono.app/manifest.json" }] }, }, @@ -407,7 +407,7 @@ module.exports = configure((ctx) => ({ builder: { // https://www.electron.build/configuration/configuration - appId: 'Riso', + appId: 'PiuCheBuono', }, // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain diff --git a/src/common/shared_vuejs.ts b/src/common/shared_vuejs.ts index 8d433096..a57a9bb9 100755 --- a/src/common/shared_vuejs.ts +++ b/src/common/shared_vuejs.ts @@ -343,7 +343,7 @@ export const shared_consts = { }, { label: 'Dentro ad un Circuito RIS', - value: 134217728, //FILTER_USER_CON_CIRCUITO: + value: 134217728, //FILTER_USER_CON_CIRCUITO: }, { label: 'Senza Circuito RIS', @@ -351,7 +351,7 @@ export const shared_consts = { }, { label: 'Con Provincia inserita', - value: 16777216, //FILTER_USER_PROVINCE: + value: 16777216, //FILTER_USER_PROVINCE: }, ], @@ -359,7 +359,7 @@ export const shared_consts = { RECFILTRI_UTENTE_FACIL: [ { label: 'Facilitatore RISO', - value: 4294967296, //FILTER_FACILITATORE: ,: + value: 4294967296, //FILTER_FACILITATORE: ,: }, { label: 'Non ancora approvati dall\'invitante', @@ -1246,6 +1246,12 @@ export const shared_consts = { }, ], + ShowCode: { + ALL: 1, + CODE: 2, + INTERNAL_CODE: 3, + }, + OrderStatus: { NONE: 0, IN_CART: 1, @@ -1261,6 +1267,11 @@ export const shared_consts = { DELETE_REALLY: 20, }, + OrderPages: { + LISTA_TOTALI: { label: 'Lista Totali', value: 1, icon: 'fas fa-chart-bar', color: 'text-green' }, + ORDINI: { label: 'Ordini', value: 2, icon: 'fas fa-tasks', color: 'text-blue' }, + }, + OrderStat: { // IN_CART: { label: 'In Carrello', value: 1 }, //IN_CART IN_CORSO: { label: 'In Corso', value: 2, icon: 'fas fa-tasks', color: 'text-black' }, //CHECKOUT_SENT @@ -2360,7 +2371,7 @@ export const shared_consts = { AUDIOLIBRO: 22, VIDEO: 23, CARTE: 25, - // ----------- + // ----------- NUOVO: 101, USATO: 102, DOWNLOAD: 103, diff --git a/src/components/CMyDialog/CMyDialog.scss b/src/components/CMyDialog/CMyDialog.scss new file mode 100755 index 00000000..e69de29b diff --git a/src/components/CMyDialog/CMyDialog.ts b/src/components/CMyDialog/CMyDialog.ts new file mode 100755 index 00000000..385a443f --- /dev/null +++ b/src/components/CMyDialog/CMyDialog.ts @@ -0,0 +1,59 @@ +import { defineComponent, onMounted, ref, computed, watch } from 'vue' +import { tools } from '@store/Modules/tools' +import { useUserStore } from '@store/UserStore' +import { useI18n } from '@/boot/i18n' +import { toolsext } from '@store/Modules/toolsext' +import { costanti } from '@costanti' + +import { shared_consts } from '@src/common/shared_vuejs' + +export default defineComponent({ + name: 'CMyDialog', + emits: ['update:modelValue'], + props: { + modelValue: { + type: Boolean, + required: true, + }, + title: { + type: String, + required: false, + default: '', + }, + }, + setup(props, { emit }) { + const userStore = useUserStore() + const { t } = useI18n(); + + const internalModel = ref(props.modelValue) + + watch( + () => props.modelValue, + (newVal) => { + internalModel.value = newVal + } + ) + + watch(internalModel, (newVal) => { + emit('update:modelValue', newVal) + }) + + function mounted() { + + // ... + } + + + onMounted(mounted) + + return { + userStore, + costanti, + tools, + toolsext, + shared_consts, + t, + internalModel, + } + } +}) diff --git a/src/components/CMyDialog/CMyDialog.vue b/src/components/CMyDialog/CMyDialog.vue new file mode 100755 index 00000000..ed981785 --- /dev/null +++ b/src/components/CMyDialog/CMyDialog.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/src/components/CMyDialog/index.ts b/src/components/CMyDialog/index.ts new file mode 100755 index 00000000..7eedae25 --- /dev/null +++ b/src/components/CMyDialog/index.ts @@ -0,0 +1 @@ +export {default as CMyDialog} from './CMyDialog.vue' diff --git a/src/db/lang/ws_enUs.js b/src/db/lang/ws_enUs.js index 4b20853c..25b51103 100755 --- a/src/db/lang/ws_enUs.js +++ b/src/db/lang/ws_enUs.js @@ -8,6 +8,8 @@ const msg_website_enUs = { products: { quantity: 'Quantità', quantityAvailable: 'Disponibili', + stockQty: 'In Magazzino', + stockBloccatiQty: 'Bloccati In Magazzino', weight: 'Peso', stars: 'Voto', color: 'Colore', @@ -36,6 +38,7 @@ const msg_website_enUs = { productslist: 'Lista Prodotti', collabora: 'Collabora', storehouses: 'Magazzino', + providers: 'Fornitori', departments: 'Uffici', orders: 'Ordini Ricevuti', orders2: 'Ordini Ricevuti', diff --git a/src/db/lang/ws_es.js b/src/db/lang/ws_es.js index 66a384d3..f143f859 100755 --- a/src/db/lang/ws_es.js +++ b/src/db/lang/ws_es.js @@ -8,6 +8,7 @@ const msg_website_es = { products: { quantity: 'Quantità', quantityAvailable: 'Disponibili', + stockQty: 'In Magazzino', weight: 'Peso', stars: 'Voto', color: 'Colore', diff --git a/src/db/lang/ws_it.js b/src/db/lang/ws_it.js index 9cd59a3d..4eff69bf 100755 --- a/src/db/lang/ws_it.js +++ b/src/db/lang/ws_it.js @@ -1,9 +1,9 @@ const msg_website_it = { ws: { - sitename: 'Riso', - siteshortname: 'RISO', - description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.', - keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS', + sitename: 'Più che Buono', + siteshortname: 'Più che Buono', + description: '', + keywords: '', }, hours: { descr: 'Descrizione', @@ -16,23 +16,35 @@ const msg_website_it = { pages: { home: 'Home', profile: 'Profilo', + install_site: 'Installa Sito', profile2: 'ProfiloU', mypage2: 'mypage2', myservice2: 'myservice2', myhosps2: 'myhosps2', mygood2: 'mygood2', + catalogo: 'Catalogo', fundraising: 'Sostieni il Progetto', notifs: 'Configura le Notifiche', unsubscribe: 'Disiscriviti', + unsubscribe_user: 'Disiscriviti User', test: 'Test', projects: 'Progetti', report: 'Report Ore', producer: 'Produttore', orderinfo: 'Ordini Effettuati', products: 'Prodotti', + cash: 'Cassa', + productInfos: 'Info Prodotti', + listinoprodotti: 'Listino Prodotti', productslist: 'Lista Prodotti', collabora: 'Collabora', + categories: 'Categorie', storehouses: 'Magazzino', + providers: 'Fornitori', + catprods: 'Categorie', + subcatprods: 'Sotto-Categorie', + gasordine: 'Gas Ordine', + scontisticas: 'Scontistica', departments: 'Uffici', orders: 'Ordini Ricevuti', orders2: 'Ordini Ricevuti', @@ -121,15 +133,11 @@ const msg_website_it = { only_residenti: 'Solo Residenti', only_consiglio: 'Solo Consiglieri', color: 'Colore', - mainMenu: 'Menu Principale', - subtitle: 'Sottotitolo', - lang: 'Lingua', - keywords: 'Parole Chiave', - desctiption: 'Descrizione', - heightimg: 'Altezza Immagine', + gasordini: 'Gas Ordini', + gestoreordini: 'Gestore Ordini', }, msg: { - myAppName: 'Riso', + myAppName: 'Più che Buono', myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito', underconstruction: 'App in costruzione...', myDescriz: '', diff --git a/src/db/static_data.ts b/src/db/static_data.ts index a5950655..089ac325 100755 --- a/src/db/static_data.ts +++ b/src/db/static_data.ts @@ -7,30 +7,6 @@ import { import { func } from '@store/Modules/fieldsTable' -// const SHOW_PROJINTHEMENU = false -// -// let arrlistafavourite = [] -// let arrlistaprojtutti = [] -// let arrlistaprojmiei = [] -// if (SHOW_PROJINTHEMENU) { -// arrlistaprojtutti = Projects.getters.listaprojects(RouteNames.projectsall) -// arrlistaprojmiei = Projects.getters.listaprojects(RouteNames.myprojects) -// arrlistafavourite = Projects.getters.listaprojects(RouteNames.favouriteprojects) -// } -// PROGETTI -> FAVORITI : - -// if (arrlistafavourite.length > 0) { -// arrMenu.push({ -// icon: 'favorite_border', -// nametranslate: 'pages.' + RouteNames.favouriteprojects, -// urlroute: RouteNames.favouriteprojects, -// level_parent: 0.0, -// level_child: 0.5, -// routes2: arrlistafavourite, -// idelem: '' -// }) -// } - const firstPage = { active: true, order: 5, @@ -64,76 +40,12 @@ function getDynamicPages(site: ISites): IListRoutes[] { materialIcon: 'fas fa-test', name: 'mypages.test', component: () => import('@/views/testServer/testServer.vue'), - inmenu: false, - infooter: false, - }, - { - active: true, - order: 12, - path: '/goods', - materialIcon: 'fas fa-tshirt', - name: 'mypages.goods', - component: () => import('@/root/goods/goods.vue'), - meta: { requiresAuth: true }, - inmenu: true, - infooter: true, - }, - { - active: true, - order: 15, - path: '/services', - materialIcon: 'fas fa-house-user', - name: 'mypages.services', - component: () => import('@/root/services/services.vue'), - meta: { requiresAuth: true }, - inmenu: true, - infooter: true, - }, - { - active: true, - order: 15, - path: '/activities', - materialIcon: 'fas fa-house-user', - name: 'mypages.activities', - component: () => import('@/root/activities/activities.vue'), meta: { requiresAuth: true }, inmenu: false, infooter: false, }, - { - active: true, - order: 15, - path: '/provapao', - materialIcon: 'fas fa-house-user', - name: 'mypages.provapao', - component: () => import('@/root/provapao/provapao.vue'), - meta: { requiresAuth: true }, - inmenu: false, - infooter: false, - }, - { - active: true, - order: 15, - path: '/hosps', - materialIcon: 'fas fa-bed', - name: 'mypages.hosp', - component: () => import('@/root/hosp/hosp.vue'), - meta: { requiresAuth: true }, - inmenu: true, - infooter: true, - }, - { - active: site.confpages && site.confpages.enableCircuits, - order: 16, - path: '/circuits', - materialIcon: 'fas fa-coins', - name: 'mypages.circuits', - component: () => import('@/views/user/mycircuits/mycircuits.vue'), - meta: { requiresAuth: true }, - inmenu: true, - infooter: true, - }, - { + + /*{ active: true, order: 20, path: '/events', @@ -143,6 +55,17 @@ function getDynamicPages(site: ISites): IListRoutes[] { meta: { requiresAuth: true }, inmenu: true, infooter: true, + },*/ + { + active: site.confpages && site.confpages.showProfile, + order: 120, + path: '/myprofile', + materialIcon: 'fas fa-user', + name: 'pages.profile', + component: () => import('@/views/user/myprofile/myprofile.vue'), + meta: { requiresAuth: true }, + inmenu: true, + infooter: true, }, { active: true, @@ -155,17 +78,6 @@ function getDynamicPages(site: ISites): IListRoutes[] { inmenu: false, infooter: false, }, - { - active: true, - order: 120, - path: '/myprofile', - materialIcon: 'fas fa-user', - name: 'pages.profile', - component: () => import('@/views/user/myprofile/myprofile.vue'), - meta: { requiresAuth: true }, - inmenu: true, - infooter: true, - }, { active: true, order: 120, @@ -178,7 +90,7 @@ function getDynamicPages(site: ISites): IListRoutes[] { infooter: false, }, { - active: true, + active: site.confpages && site.confpages.showiscrittiMenu, order: 130, path: '/friends', materialIcon: 'fas fa-user-friends', @@ -188,6 +100,19 @@ function getDynamicPages(site: ISites): IListRoutes[] { inmenu: true, infooter: true, }, + { + active: site.confpages && site.confpages.enableCircuits, + order: 16, + path: '/circuits', + materialIcon: 'fas fa-coins', + name: 'mypages.circuits', + component: () => import('@/views/user/mycircuits/mycircuits.vue'), + meta: { requiresAuth: true }, + inmenu: true, + infooter: true, + onlyAdmin: true, + onlyManager: true, + }, { active: site.confpages && site.confpages.enableGroups, order: 132, @@ -198,6 +123,8 @@ function getDynamicPages(site: ISites): IListRoutes[] { meta: { requiresAuth: true }, inmenu: true, infooter: false, + onlyAdmin: true, + onlyManager: true, }, { active: true, @@ -276,7 +203,7 @@ function getDynamicPages(site: ISites): IListRoutes[] { { active: true, order: 150, - path: '/sostieniilprogetto', + path: '/fundraising', materialIcon: 'fas fa-hand-holding-heart', name: 'pages.fundraising', component: () => import('@src/root/fundraising/fundraising.vue'), diff --git a/src/model/Products.ts b/src/model/Products.ts index 1a3dc005..3f459174 100755 --- a/src/model/Products.ts +++ b/src/model/Products.ts @@ -4,6 +4,7 @@ import { IUserFields, IUserShort } from './UserStore' export interface IProductInfo { _id?: any code?: string + codice?: string id_wp?: string sku?: string name?: string @@ -41,11 +42,11 @@ export interface IProductInfo { ListaArgomenti?: string publisher?: IPublisher date_pub?: Date - date_pub_ts: number + date_pub_ts?: number pagine?: number productTypes?: number[] versioneGM?: string - short_descr: string + short_descr?: string totVen?: number, totFat?: number, @@ -69,7 +70,7 @@ export interface IVariazione { _id?: string active?: boolean versione?: number - status?: string, + status?: string, price?: number sale_price?: number quantita?: number @@ -122,7 +123,7 @@ export interface IProduct { QuantitaPrenotateInAttesa?: number, note?: string arrvariazioni?: IVariazione[] - + stockQty: number, // UPDATING stockBloccatiQty: number, // UPDATING bookedQtyOrdered: number // UPDATING @@ -342,6 +343,20 @@ export interface ICart { modify_at?: Date } +export interface ISingleProductOrdered { + index: number + code: string + codice_interno: string + idProduct: string + productName: string + subCat: string + strSubCatProds: string + qty: number + singlePrice: number + subtotalPrice: number +} + + export interface IOrderCart { _id?: any idapp?: string diff --git a/src/statics/lang/it.js b/src/statics/lang/it.js index a24a1a75..774951ab 100755 --- a/src/statics/lang/it.js +++ b/src/statics/lang/it.js @@ -1871,7 +1871,7 @@ const msg_it = { btn_ordini: 'I tuoi Ordini', available: 'Disponib.', preorders: 'Quantità Massima Pre-Ordinabili', - preord: 'Pre-Ordinate', + preord: 'Ordinate', di_cui_x_in_carrello: '(nel tuo carrello: {qty})', confermato: 'Ordine Confermato', consegnato: 'Ordine Consegnato', @@ -1929,6 +1929,7 @@ const msg_it = { tutti: 'Tutti', }, orderscart: { + show_which_code: 'Mostra Codice', numorder: 'Ordine', totalQty: 'totalQty', totalQtyPreordered: 'totalQty PreOrd', @@ -1943,6 +1944,9 @@ const msg_it = { TotalPriceProduct: 'Prezzo Totale', order_confirm: 'Conferma Ordini (aggiorna Qta magazzino)', check_invia_email: 'Abilita l\'Invio delle email (📩)', + mostra_codice: 'Mostra Codice', + mostra_cat: 'Mostra Categoria', + mostra_solo_ordini_produttore: 'Filtra Ordini del Produttore', }, cash: { creatorUserId: 'Creatore', diff --git a/src/store/Modules/tools.ts b/src/store/Modules/tools.ts index ae600761..2f120324 100644 --- a/src/store/Modules/tools.ts +++ b/src/store/Modules/tools.ts @@ -59,6 +59,8 @@ import { PayloadMessageTypes } from '@/common' import { useNotifStore } from '@store/NotifStore' import { isDimensionToken } from 'html2canvas/dist/types/css/syntax/parser' +const { t } = useI18n() + export interface INotify { color?: string textColor?: string @@ -80,6 +82,12 @@ export const tools = { COOK_SEARCH: 'SEARCH_', COOK_SELCART: 'SELCART_', COOK_SELGAS: 'SELGAS', + COOK_TABORD: 'TABORD', + COOK_TABPAGES: 'TABPAGES', + COOK_SHOWCODICE: 'SHOWCOD', + COOK_SHOWCAT: 'SHOWCAT', + COOK_SHOWCODE: 'SHOW_WC', + COOK_SHOWORDPROD: 'SHOWORDPROD', COOK_TAB_CIRCUIT: 'TAB_CIRC', COOK_COSA_PRODOTTI: 'PROD_N', COOK_MAP_CENTER_LAT: 'MAP_LAT', diff --git a/src/store/Products.ts b/src/store/Products.ts index 163c9425..54fadb5f 100755 --- a/src/store/Products.ts +++ b/src/store/Products.ts @@ -1,4 +1,4 @@ -import { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd, IText, IOptCatalogo, ICatalog, ICatPrTotali } from 'model' +import { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd, IText, IOptCatalogo, ICatalog, ICatPrTotali, ISingleProductOrdered } from 'model' import { Api } from '@api' import { serv_constants } from '@src/store/Modules/serv_constants' @@ -162,6 +162,42 @@ export const useProducts = defineStore('Products', { return mystr }, + getSubCatProdsStrBySubCatProds: (state: IProductsState) => (idSubCatProds: string[]): string => { + let mystr = ''; + if (Array.isArray(idSubCatProds) && idSubCatProds.length > 0) { + const names = idSubCatProds.map(id => { + const subCatProd = state.subcatprods.find((rec: ISubCatProd) => rec._id === id); + return subCatProd ? subCatProd.name : ''; + }).filter(name => name !== ''); + + mystr = names.join(' - '); + } + return mystr; + }, + + getTotaleOrdineByOrdId: (state: IProductsState) => (idOrdine: string, idGasordine: string, mostra_solo_ordini_produttore: boolean): number => { + + const arrprod = state.orders.filter((rec: IOrderCart) => { + if (idGasordine && !rec.items?.some(item => item.order && item.order.idGasordine === idGasordine) || (rec._id !== idOrdine)) { + return false; // Skip records not matching gasordine condition + } + return true; + }); + + let subtotalPrice = 0 + + arrprod.forEach((rec: IOrderCart) => { + rec.items?.forEach(item => { + if (item.order && ((mostra_solo_ordini_produttore && (item.order.idGasordine === idGasordine)) || !mostra_solo_ordini_produttore)) { + const qtyparz = item.order.quantity + item.order.quantitypreordered + subtotalPrice += item.order.price * qtyparz + } + }); + }); + + return subtotalPrice; + }, + getCatProdDescrStrByIdCatProd: (state: IProductsState) => (idCatProd: string): string => { const myfirstcat = state.catprods.find((rec: ICatProd) => rec._id === idCatProd) @@ -179,6 +215,7 @@ export const useProducts = defineStore('Products', { return 0 }, + getSubCatProdsByGas: (state: IProductsState) => (idGasOrdine: string, idCatProd: string): ISubCatProd[] => { let arrcat = state.subcatprods @@ -473,7 +510,7 @@ export const useProducts = defineStore('Products', { TotalPriceProduct: 0, TotalPriceProductCalc: 0, idProduct: product._id, - product, // Copia tutto l'oggetto Product ! + product, // Copia tutto l'oggetto Product ! // Ordine: price: product.price, @@ -820,7 +857,7 @@ export const useProducts = defineStore('Products', { try { order.idStorehouse = globalStore.storehouses?.length ? globalStore.storehouses[0]._id : '' } catch (e) { - + } } } @@ -1048,7 +1085,7 @@ export const useProducts = defineStore('Products', { mystr += ' + ' } if (order.quantitypreordered > 0) { - mystr += ' ' + order.quantitypreordered + ' ' + $t('ecomm.preord'); + mystr += ' ' + order.quantitypreordered + ' '; } return mystr }, @@ -1248,6 +1285,14 @@ export const useProducts = defineStore('Products', { return mystr }, + getGasordineNameById(idGasordine: string) { + + const globalStore = useGlobalStore() + const rec = globalStore.gasordines.find((gasordine: IGasordine) => gasordine._id === idGasordine) + return rec ? rec.name : '' + + }, + getGasordines() { const globalStore = useGlobalStore() @@ -1257,16 +1302,22 @@ export const useProducts = defineStore('Products', { value: '' }] let ind = 1 - globalStore.gasordines.forEach((gasordine: IGasordine) => { - myarr.push( - { - id: ind, - label: gasordine.name, - value: gasordine._id - }) - - ind++ - }) + if (globalStore.gasordines) { + globalStore.gasordines.forEach((gasordine: IGasordine) => { + if (gasordine) { + myarr.push( + { + id: ind, + label: gasordine.name + + (gasordine.dataora_chiusura_ordini ? (' - chiusura: ' + tools.getstrDateShort(gasordine.dataora_chiusura_ordini)) : '') + + (gasordine.dataora_ritiro ? (' - consegna ' + tools.getstrDateShort(gasordine.dataora_ritiro)) : '') + , + value: gasordine._id + }) + ind++ + } + }) + } return myarr }, @@ -1378,7 +1429,7 @@ export const useProducts = defineStore('Products', { const descr_categoria = myproduct.productInfo.catprods && myproduct.productInfo.catprods.length > 0 ? this.getCatProdDescrStrByIdCatProd(myproduct.productInfo.catprods![0].name) : '' const misure = myproduct.arrvariazioni![0].misure || '' const formato = myproduct.arrvariazioni![0].formato || '' - const pagine = myproduct.arrvariazioni![0].pagine || '' + const pagine = myproduct.arrvariazioni![0].pagine || '' const scale = optcatalogo.printable ? optcatalogo.areadistampa?.scale : 1 // Crea una mappa di sostituzioni @@ -1418,6 +1469,54 @@ export const useProducts = defineStore('Products', { return result.trim() }, + getSubCatStrByProduct(myproductInfo: IProductInfo): string { + return this.getSubCatProdsStrBySubCatProds(myproductInfo.idSubCatProds || []) + }, + + getListProductBySumQuantity (idGasordine: string): ISingleProductOrdered[] { + + const arrprod = this.orders.filter((rec: IOrderCart) => { + if (idGasordine && !rec.items?.some(item => item.order && item.order.idGasordine === idGasordine)) { + return false; // Skip records not matching gasordine condition + } + return true; + }); + + const productMap = new Map(); + + arrprod.forEach((rec: IOrderCart) => { + rec.items?.forEach(item => { + if (item.order && item.order.idGasordine === idGasordine) { + const productId: string = item.order.idProduct!; + const qtyparz = item.order.quantity + item.order.quantitypreordered + if (productMap.has(productId)) { + const existingProduct: ISingleProductOrdered = productMap.get(productId)! + existingProduct.qty += qtyparz + existingProduct.subtotalPrice += item.order.price * qtyparz + existingProduct.subtotalPrice = Number((existingProduct.subtotalPrice).toFixed(2)) + } else { + + const sottocategoria = item.order.product?.productInfo.subcatprods && item.order.product?.productInfo.subcatprods.length > 0 ? item.order.product?.productInfo.subcatprods[0].name! : '' + productMap.set(productId, { + subCat: sottocategoria, + strSubCatProds: this.getSubCatProdsStrBySubCatProds(item.order.product?.productInfo.idSubCatProds!), + index: productMap.size + 1, + idProduct: productId, + code: item.order.product?.productInfo.code!, + codice_interno: item.order.product?.productInfo.codice!, + qty: qtyparz, + singlePrice: item.order.price, + subtotalPrice: Number((item.order.price * qtyparz).toFixed(2)), + productName: item.order.product?.productInfo.name!, + }); + } + } + }); + }); + + return Array.from(productMap.values()); + + } }, diff --git a/src/views/ecommerce/orderInfo/orderInfo.ts b/src/views/ecommerce/orderInfo/orderInfo.ts index 20c0c21f..8956acd8 100755 --- a/src/views/ecommerce/orderInfo/orderInfo.ts +++ b/src/views/ecommerce/orderInfo/orderInfo.ts @@ -6,7 +6,7 @@ import { useGlobalStore } from '@store/globalStore' import { useProducts } from '@store/Products' import { useI18n } from '@/boot/i18n' import { toolsext } from '@store/Modules/toolsext' -import { useQuasar } from 'quasar' +import { useQuasar, exportFile } from 'quasar' import { costanti } from '@costanti' import { shared_consts } from '@src/common/shared_vuejs' // import MixinBase from '@src/mixins/mixin-base' @@ -14,12 +14,14 @@ import { serv_constants } from '@store/Modules/serv_constants' import { fieldsTable } from '@store/Modules/fieldsTable' import { CSingleCart } from '../../../components/CSingleCart' +import { CMyDialog } from '../../../components/CMyDialog' +import { COrdersCart } from '../../../components/COrdersCart' import { CTitleBanner, CMyFieldDb } from '@components' -import { ICart, IOrder, IOrderCart } from '@src/model' +import { ICart, IOrder, IOrderCart, ISingleProductOrdered } from '@src/model' export default defineComponent({ name: 'OrderInfo', - components: { CSingleCart, CTitleBanner, CMyFieldDb }, + components: { CSingleCart, CTitleBanner, CMyFieldDb, COrdersCart, CMyDialog }, props: {}, setup() { const userStore = useUserStore() @@ -35,18 +37,48 @@ export default defineComponent({ const templemail = ref('') const cosa = ref(0) + const showOrdersCart = ref(false) + const idOrdersCartToShow = ref('') const arrout = ref([]) + const listatotali = ref([]) + + const showWhichCode = ref(0) + + const showWhichCodeOptions = ref([ + { + label: 'Tutti i codici', + value: shared_consts.ShowCode.ALL + }, + { + label: 'Codice Interno', + value: shared_consts.ShowCode.CODE + }, + { + label: 'Codice Produttore', + value: shared_consts.ShowCode.INTERNAL_CODE + } + ]) const check_send_email = ref(false) + const mostra_codice = ref(false) + const mostra_cat = ref(false) + const mostra_solo_ordini_produttore = ref(false) const initialPagination = ref({ - sortBy: 'desc', + sortBy: 'ind', descending: false, rowsPerPage: 10, // rowsNumber: xx if getting data from a server }) + const totalPagination = ref({ + sortBy: 'codice_interno', + descending: false, + rowsPerPage: 1000, + // rowsNumber: xx if getting data from a server + }) + const conferma_carrello = ref(false) const conferma_ordine = ref(false) const endload = ref(false) @@ -54,8 +86,81 @@ export default defineComponent({ const storeGasordine = ref('') const taborders = ref(shared_consts.OrderStat.IN_CORSO.value) + const tabpages = ref(shared_consts.OrderPages.LISTA_TOTALI.value) const statusnow = ref(0) const arrnumstatus = ref([]) + + const columns_listafiltrati = ref([]) + + //index, code, productName, qty, singlePrice, subtotalPrice + const columns_listaTotali = ref([ + { + name: 'index', + required: true, + align: 'left', + label: 'Indice', + field: 'index', + sortable: true + }, + { + name: 'code', + required: true, + align: 'left', + label: 'Codice', + field: 'code', + sortable: true + }, + { + name: 'codice_interno', + required: false, + align: 'left', + label: 'Codice Produttore', + field: 'codice_interno', + sortable: true, + }, + { + name: 'productName', + required: true, + align: 'left', + label: 'Prodotto', + field: 'productName', + sortable: true + }, + { + name: 'strSubCatProds', + required: true, + align: 'left', + label: 'Categoria', + field: 'strSubCatProds', + sortable: true + }, + { + name: 'qty', + required: true, + align: 'center', + label: 'Qta', + field: 'qty', + sortable: true + }, + { + name: 'singlePrice', + required: true, + align: 'center', + label: 'Prezzo', + field: 'singlePrice', + sortable: true, + }, + { + name: 'subtotalPrice', + required: true, + align: 'center', + label: 'Totale', + field: 'subtotalPrice', + sortable: true + } + + ]) + const columns = ref([ { name: 'ind', @@ -191,6 +296,11 @@ export default defineComponent({ }) watch(() => taborders.value, (newval, oldval) => { + tools.setCookie(tools.COOK_TABORD, taborders.value.toString()) + updateorders(false) + }) + watch(() => tabpages.value, (newval, oldval) => { + tools.setCookie(tools.COOK_TABPAGES, tabpages.value.toString()) updateorders(false) }) @@ -199,6 +309,24 @@ export default defineComponent({ updateorders(true) }) + watch(() => mostra_codice.value, (newval, oldval) => { + tools.setCookie(tools.COOK_SHOWCODICE, mostra_codice.value ? '1' : '0') + updateorders(true) + }) + watch(() => mostra_cat.value, (newval, oldval) => { + tools.setCookie(tools.COOK_SHOWCAT, mostra_cat.value ? '1' : '0') + updateorders(true) + }) + watch(() => showWhichCode.value, (newval, oldval) => { + tools.setCookie(tools.COOK_SHOWCODE, showWhichCode.value.toString()) + updateorders(true) + }) + + watch(() => mostra_solo_ordini_produttore.value, (newval, oldval) => { + tools.setCookie(tools.COOK_SHOWORDPROD, mostra_solo_ordini_produttore.value ? '1' : '0') + updateorders(true) + }) + // const { setValDb, getValDb } = MixinBase() function getCols(props: any) { @@ -212,6 +340,47 @@ export default defineComponent({ return ris } + // Creami una lista di tutti i prodotti, con i totali delle quantità e il prezzo totale + function getListProductBySumQuantity(): ISingleProductOrdered[] { + const listproductstotal = productStore.getListProductBySumQuantity(storeGasordine.value) + + if (listproductstotal) { + // Calculate totals + const totals: ISingleProductOrdered = { + index: -1, + code: '', + codice_interno: '', + idProduct: '', + subCat: '', + strSubCatProds: '', + productName: 'TOTALI', + qty: listproductstotal.reduce((total: number, rec: any) => total + rec.qty, 0), + singlePrice: 0, + subtotalPrice: listproductstotal.reduce((total: number, rec: any) => total + rec.subtotalPrice, 0), + }; + + let rowsWithTotals: any = [...listproductstotal]; + + if (tools.isManager()) { + // Combine orders and totals + rowsWithTotals.push(totals); + } + + // Supponendo che rowsWithTotals sia il tuo array di record + rowsWithTotals.forEach((record: any, index: number) => { + record.ind = index; + }); + + return rowsWithTotals; + } + + return listproductstotal + } + + function getTotaleOrdineByOrdId(id: string, idGasordine: string): string { + return productStore.getTotaleOrdineByOrdId(id, idGasordine, mostra_solo_ordini_produttore.value).toFixed(2) + } + function getOrdersCartWithTotals(): any[] { const orderscart = getOrdersCart(); @@ -256,26 +425,44 @@ export default defineComponent({ } function updateorders(updatetab: boolean) { - arrout.value = [] - myorderscart.value = getOrdersCart() - if (myorderscart.value) { - for (const orderscart of myorderscart.value) { - myarrrec.value[orderscart._id] = Object.keys(orderscart) - } - } + // Rimuovi dalla lista columns_listaTotali il record "codice_interno" se mostra_codice.value = false + columns_listafiltrati.value = columns_listaTotali.value.filter((column: any) => { + let show = false + if (showWhichCode.value === shared_consts.ShowCode.ALL) { + show = true + } else if (showWhichCode.value === shared_consts.ShowCode.CODE) { + show = (column.name !== 'codice_interno') + } else if (showWhichCode.value === shared_consts.ShowCode.INTERNAL_CODE) { + show = (column.name !== 'code') + } + return show + }) - if (updatetab) { - const allorders = getAllOrdersCart() - for (const status of [15, 2, 3, 4, 5, 6, 7, 8, 10]) { - arrnumstatus.value[status] = allorders.filter((rec) => (rec.status === status)).reduce((sum, item) => sum + 1, 0) + + if (tabpages.value === shared_consts.OrderPages.ORDINI.value) { + arrout.value = [] + + myorderscart.value = getOrdersCart() + if (myorderscart.value) { + for (const orderscart of myorderscart.value) { + myarrrec.value[orderscart._id] = Object.keys(orderscart) + } } - selectfirstavailable() + if (updatetab) { + const allorders = getAllOrdersCart() + for (const status of [15, 2, 3, 4, 5, 6, 7, 8, 10]) { + arrnumstatus.value[status] = allorders.filter((rec) => (rec.status === status)).reduce((sum, item) => sum + 1, 0) + } + + selectfirstavailable() + } + + arrout.value = getOrdersCartWithTotals() + } else if (tabpages.value === shared_consts.OrderPages.LISTA_TOTALI.value) { + listatotali.value = getListProductBySumQuantity() } - - arrout.value = getOrdersCartWithTotals() - } function selectfirstavailable() { @@ -291,18 +478,26 @@ export default defineComponent({ async function mounted() { - taborders.value = -1 + taborders.value = tools.getCookie(tools.COOK_TABORD, shared_consts.OrderStat.IN_CORSO.value, true) + tabpages.value = tools.getCookie(tools.COOK_TABPAGES, shared_consts.OrderPages.LISTA_TOTALI.value, true) storeGasordine.value = tools.getCookie(tools.COOK_SELGAS, '') + mostra_codice.value = tools.getCookie(tools.COOK_SHOWCODICE, '1') === '1' + mostra_cat.value = tools.getCookie(tools.COOK_SHOWCAT, '1') === '1' + mostra_solo_ordini_produttore.value = tools.getCookie(tools.COOK_SHOWORDPROD, '1') === '1' + showWhichCode.value = tools.getCookie(tools.COOK_SHOWCODE, shared_consts.ShowCode.ALL, true) + await userStore.newsletterload(false) await productStore.loadProducts() - updateorders(true) if (taborders.value === -1) taborders.value = shared_consts.OrderStat.IN_CORSO.value + if (tabpages.value === -1) + tabpages.value = shared_consts.OrderPages.LISTA_TOTALI.value + if (tools.isManager()) { columns.value = [...columns_Admin.value] @@ -466,6 +661,31 @@ export default defineComponent({ }) } + function exportListaTotali() { + // console.log('row', serverData.value) + // console.log('mycolumns.value', mycolumns.value) + // naive encoding to csv format + const content = [columns_listafiltrati.value.map((col: any) => (col.label))].concat( + listatotali.value.map((row: any) => columns_listafiltrati.value.map((col: any) => ( + row[col.field] + )).join(',')) + ).join('\r\n') + + const status = exportFile( + 'lista-totali-' + productStore.getGasordineNameById(storeGasordine.value) + '_' + tools.getstrYYMMDDDate(tools.getDateNow()) + '.csv', + content, + 'text/csv' + ) + + if (status !== true) { + $q.notify({ + message: 'Il Browser ha negato il download del file.', + color: 'negative', + icon: 'warning' + }) + } + } + onMounted(mounted) return { @@ -477,6 +697,7 @@ export default defineComponent({ globalStore, columns, taborders, + tabpages, arrnumstatus, clickFunz, getOrdersCart, @@ -497,6 +718,18 @@ export default defineComponent({ arrout, check_send_email, ConfermaOrdini, + mostra_codice, + mostra_cat, + mostra_solo_ordini_produttore, + listatotali, + columns_listafiltrati, + showWhichCode, + showWhichCodeOptions, + getTotaleOrdineByOrdId, + showOrdersCart, + idOrdersCartToShow, + exportListaTotali, + totalPagination, } } }) diff --git a/src/views/ecommerce/orderInfo/orderInfo.vue b/src/views/ecommerce/orderInfo/orderInfo.vue index 01e65102..e0468164 100755 --- a/src/views/ecommerce/orderInfo/orderInfo.vue +++ b/src/views/ecommerce/orderInfo/orderInfo.vue @@ -38,7 +38,7 @@ -
+
+ + + +
- - - - - - -
- - + +
- -
- -
+ +
+ +
- +
+ + + -
- - - + +
- -
- - + -->
+
+
+ + + + + +
+
+ +
+ + + @@ -448,5 +635,5 @@