diff --git a/src/components/CProductCard/CProductCard.ts b/src/components/CProductCard/CProductCard.ts index c5443f62..0fa0b6d0 100755 --- a/src/components/CProductCard/CProductCard.ts +++ b/src/components/CProductCard/CProductCard.ts @@ -43,6 +43,8 @@ export default defineComponent({ const globalStore = useGlobalStore() const products = useProducts() + const site = ref(globalStore.site) + const myorder = reactive({ idapp: process.env.APP_ID, quantity: 0, @@ -214,7 +216,12 @@ export default defineComponent({ } function enableAddQty() { - return getQtyAvailable() > 0 + if (site.value.ecomm!.enablePreOrders) { + return true + } else { + return getQtyAvailable() > 0 + } + } onMounted(load) @@ -244,6 +251,7 @@ export default defineComponent({ arrordersCart, endload, shared_consts, + site, } } }) diff --git a/src/components/CProductCard/CProductCard.vue b/src/components/CProductCard/CProductCard.vue index 015be9ad..2d7663ed 100755 --- a/src/components/CProductCard/CProductCard.vue +++ b/src/components/CProductCard/CProductCard.vue @@ -97,18 +97,31 @@ @click="tools.isManager() ? (openlistorders = true) : null" > - + - {{ t('ecomm.available') }} + + {{ t('ecomm.preorders') }} + + + {{ t('ecomm.available') }} + - {{ getQtyAvailable() }} + + {{ -getQtyAvailable() }} + + + {{ getQtyAvailable() }} + - +
{{ getQtyWarn() }}
0 " > - Quantita Ordinate In Attesa : - {{ myproduct.QuantitaOrdinateInAttesa }} + {{ $t('ecomm.qta_in_attesa', {qty: myproduct.QuantitaOrdinateInAttesa }) }} +
- +
@@ -245,9 +258,9 @@ > - {{ shared_consts.getStatusStr(ordcart.status) }} + {{ + shared_consts.getStatusStr(ordcart.status) + }}
diff --git a/src/model/GlobalStore.ts b/src/model/GlobalStore.ts index 200195b8..066c7a58 100755 --- a/src/model/GlobalStore.ts +++ b/src/model/GlobalStore.ts @@ -284,6 +284,10 @@ export interface IPolicy { country: string } +export interface IECommSettings { + enablePreOrders: boolean +} + export interface ISites { _id?: string attiva?: boolean @@ -310,6 +314,7 @@ export interface ISites { keywords?: string contacts?: IContacts confpages: IConfPages + ecomm?: IECommSettings } export interface INewsToSent { diff --git a/src/model/Products.ts b/src/model/Products.ts index bfa6345c..a3a5053b 100755 --- a/src/model/Products.ts +++ b/src/model/Products.ts @@ -137,6 +137,7 @@ export interface IOrderCart { _id?: any idapp?: string numorder: number + numord_pers: number userId: string user: IUserFields, totalQty: number diff --git a/src/rootgen/admin/settings/settings.scss b/src/rootgen/admin/settings/settings.scss new file mode 100755 index 00000000..e69de29b diff --git a/src/rootgen/admin/settings/settings.ts b/src/rootgen/admin/settings/settings.ts new file mode 100755 index 00000000..a6ece71b --- /dev/null +++ b/src/rootgen/admin/settings/settings.ts @@ -0,0 +1,51 @@ +import { defineComponent, ref, onMounted } from 'vue' + +import { CImgText } from '../../../components/CImgText/index' +import { CCard } from '@/components/CCard' +import { CMyPage } from '@/components/CMyPage' +import { CTitleBanner } from '@/components/CTitleBanner' +import { CGridTableRec } from '@/components/CGridTableRec' +import { CMyFieldRec } from '@/components/CMyFieldRec' +import { CMyFieldDb } from '@/components/CMyFieldDb' + +import { useGlobalStore } from '@store/globalStore' +import { costanti } from '@costanti' +import { tools } from '@src/store/Modules/tools' + +import { colTableProducer } from '@src/store/Modules/fieldsTable' +import MixinMetaTags from '@/mixins/mixin-metatags' + +export default defineComponent({ + name: 'settings', + components: { CImgText, CCard, CMyPage, CTitleBanner, CGridTableRec, CMyFieldRec, CMyFieldDb}, + setup() { + + const mysite = ref(null) + const tab = ref('server') + + const globalStore = useGlobalStore() + + const { setmeta } = MixinMetaTags() + + async function mounted() { + mysite.value = await globalStore.caricaTabella('sites', process.env.APP_ID!) + } + + function save(newval: any) { + console.log('ConfSite save') + tools.updateFonts(newval) + } + + onMounted(mounted) + + return { + setmeta, + mysite, + costanti, + tab, + tools, + save, + globalStore, + } + } +}) diff --git a/src/rootgen/admin/settings/settings.vue b/src/rootgen/admin/settings/settings.vue new file mode 100755 index 00000000..78cb5147 --- /dev/null +++ b/src/rootgen/admin/settings/settings.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/router/routesECommerce.ts b/src/router/routesECommerce.ts index 2118c7c2..9ba0f294 100644 --- a/src/router/routesECommerce.ts +++ b/src/router/routesECommerce.ts @@ -55,11 +55,25 @@ function getRoutesEcomm(site: ISites) { ] const routes_admin_ecommerce: IListRoutes[] = [ + { + active: true, + order: 30, + path: '/admin/ecommerce/settings', + materialIcon: 'fas fa-cogs', + name: 'ecomm.settings', + component: () => import('@/rootgen/admin/settings/settings.vue'), + inmenu: true, + submenu: true, + level_parent: 0, + level_child: 0.5, + onlyManager: true, + onlyEditor: true + }, { active: true, order: 30, path: '/admin/ecommerce/products', - materialIcon: 'fas fa-file-alt', + materialIcon: 'fas fa-lemon', name: 'pages.products', component: () => import('@/rootgen/admin/products/products.vue'), inmenu: true, @@ -73,7 +87,7 @@ function getRoutesEcomm(site: ISites) { active: true, order: 30, path: '/admin/ecommerce/producers', - materialIcon: 'fas fa-file-alt', + materialIcon: 'fas fa-tractor', name: 'pages.producer', component: () => import('@/rootgen/admin/producer/producer.vue'), inmenu: true, diff --git a/src/statics/lang/it.js b/src/statics/lang/it.js index 11407f67..9ae429b6 100755 --- a/src/statics/lang/it.js +++ b/src/statics/lang/it.js @@ -1637,7 +1637,8 @@ const msg_it = { ord_not_confirmed: 'E\' avvenuto un errore. Ordine non Confermato. Ricaricare la pagina e riprovare.', btn_cassa: 'Vai alla Cassa', available: 'Disponibili', - di_cui_x_in_carrello: '({qty} nel tuo carrello)', + preorders: 'In Prenotazione', + di_cui_x_in_carrello: '(nel tuo carrello: {qty})', evaso: 'Ordine Evaso', consegnato: 'Ordine Consegnato', pagato: 'Ordine Pagato', @@ -1649,6 +1650,8 @@ const msg_it = { note:'Scrivi qui per eventuali note o chiarimenti:', totale: 'Totale', carrello: 'Carrello', + settings: 'Impostazioni', + qta_in_attesa: '(Ordinati In attesa {qty})', }, }, diff --git a/src/store/Modules/fieldsTable.ts b/src/store/Modules/fieldsTable.ts index 00652ec5..07592077 100755 --- a/src/store/Modules/fieldsTable.ts +++ b/src/store/Modules/fieldsTable.ts @@ -346,6 +346,7 @@ export const colTableProducer = [ export const getcolorderscart = [ AddCol({ name: 'numorder', label_trans: 'order.numorder' }), + AddCol({ name: 'numord_pers', label_trans: 'order.numord_pers' }), AddCol({ name: 'created_at', label_trans: 'order.created_at', fieldtype: costanti.FieldType.date }), AddCol({ name: 'status', label_trans: 'order.status' }), AddCol({ name: 'items', label_trans: 'order.items' }), diff --git a/src/views/ecommerce/orderInfo/orderInfo.scss b/src/views/ecommerce/orderInfo/orderInfo.scss index cc270c99..bf220ffa 100755 --- a/src/views/ecommerce/orderInfo/orderInfo.scss +++ b/src/views/ecommerce/orderInfo/orderInfo.scss @@ -28,4 +28,7 @@ $heightBtn: 100%; .note { font-style: italic; color:blue; -} \ No newline at end of file +} +.totali { + font-weight: bold; +} diff --git a/src/views/ecommerce/orderInfo/orderInfo.ts b/src/views/ecommerce/orderInfo/orderInfo.ts index a1771741..82049b99 100755 --- a/src/views/ecommerce/orderInfo/orderInfo.ts +++ b/src/views/ecommerce/orderInfo/orderInfo.ts @@ -13,7 +13,7 @@ import { shared_consts } from '@src/common/shared_vuejs' import { CSingleCart } from '../../../components/CSingleCart' import { CTitleBanner } from '@components' -import { ICart, IOrderCart } from '@src/model' +import { ICart, IOrder, IOrderCart } from '@src/model' export default defineComponent({ name: 'OrderInfo', @@ -43,7 +43,7 @@ export default defineComponent({ name: 'numorder', required: true, align: 'left', - label: 'Numero Ordine', + label: 'Ordine N.', field: 'numorder', sortable: true }, @@ -84,7 +84,7 @@ export default defineComponent({ name: 'numorder', required: true, align: 'left', - label: 'Numero Ordine', + label: 'Ordine N.', field: 'numorder', sortable: true }, @@ -148,6 +148,34 @@ export default defineComponent({ return ris } + function getOrdersCartWithTotals(): any[] { + const orderscart = getOrdersCart(); + + if (orderscart) { + // Calculate totals + const totals = { + created_at: new Date(), + items: null, + user:{ + name: 'TOTALI', + surname: '', + }, + status: 0, + // Add other properties as needed + totalPrice: orderscart.reduce((total: number, rec: any) => total + rec.totalPrice, 0), + }; + + // Combine orders and totals + const rowsWithTotals = [...orderscart, totals]; + + return rowsWithTotals; + } else { + return [] + } + + + } + function getAllOrdersCart() { return productStore.getOrdersAllCart() } @@ -283,6 +311,7 @@ export default defineComponent({ updateorders, getCols, endload, + getOrdersCartWithTotals, } } }) diff --git a/src/views/ecommerce/orderInfo/orderInfo.vue b/src/views/ecommerce/orderInfo/orderInfo.vue index 3667d53b..01433185 100755 --- a/src/views/ecommerce/orderInfo/orderInfo.vue +++ b/src/views/ecommerce/orderInfo/orderInfo.vue @@ -21,7 +21,7 @@ :hide-header="$q.screen.lt.sm" :columns="columns" row-key="numorder" - :rows="getOrdersCart()" + :rows="getOrdersCartWithTotals()" >