lista ordini aggiornata

This commit is contained in:
Surya Paolo
2023-12-15 23:36:48 +01:00
parent 8399df8663
commit 176ca7fe20
13 changed files with 201 additions and 24 deletions

View File

@@ -43,6 +43,8 @@ export default defineComponent({
const globalStore = useGlobalStore()
const products = useProducts()
const site = ref(globalStore.site)
const myorder = reactive(<IOrder>{
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,
}
}
})

View File

@@ -97,18 +97,31 @@
@click="tools.isManager() ? (openlistorders = true) : null"
>
<q-item-section avatar>
<q-icon color="green" name="fas fa-store" />
<q-icon
:color="getQtyAvailable() >= 0 ? 'green' : 'blue'"
:name="getQtyAvailable() >= 0 ? 'fas fa-store' : 'fas fa-edit'"
/>
</q-item-section>
<q-item-section>
<q-item-label>
{{ t('ecomm.available') }}
<span v-if="getQtyAvailable() < 0">
{{ t('ecomm.preorders') }}
</span>
<span v-else>
{{ t('ecomm.available') }}
</span>
</q-item-label>
<q-item-label>
<span class="prod_disp">
{{ getQtyAvailable() }}
<span v-if="getQtyAvailable() < 0">
{{ -getQtyAvailable() }}
</span>
<span v-else>
{{ getQtyAvailable() }}
</span>
</span>
<span class="prod_qtywarn">
<div class="prod_qtywarn">
{{ getQtyWarn() }}
<div
@@ -116,10 +129,10 @@
tools.isManager() && myproduct.QuantitaOrdinateInAttesa > 0
"
>
Quantita Ordinate In Attesa :
{{ myproduct.QuantitaOrdinateInAttesa }}
{{ $t('ecomm.qta_in_attesa', {qty: myproduct.QuantitaOrdinateInAttesa }) }}
</div>
</span>
</div>
</q-item-label>
<q-item-label> </q-item-label>
</q-item-section>
@@ -245,9 +258,9 @@
>
</td>
<td class="text-center">
<strong
>{{ shared_consts.getStatusStr(ordcart.status) }}</strong
>
<strong>{{
shared_consts.getStatusStr(ordcart.status)
}}</strong>
</td>
<td class="text-center">
<div v-for="(singleord, index) in ordcart.items" :key="index">

View File

@@ -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 {

View File

@@ -137,6 +137,7 @@ export interface IOrderCart {
_id?: any
idapp?: string
numorder: number
numord_pers: number
userId: string
user: IUserFields,
totalQty: number

View File

View File

@@ -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(<any>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,
}
}
})

View File

@@ -0,0 +1,34 @@
<template>
<span
>{{
setmeta({
title: 'Impostazioni',
description: '',
keywords: '',
})
}}
</span>
<div>
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<div v-if="mysite">
<CTitleBanner title="Impostazioni"></CTitleBanner>
<CMyFieldDb
title="Attiva PreOrdini"
table="sites"
mykey="ecomm"
mysubkey="enablePreOrders"
:id="mysite._id"
:rec="mysite"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
</div>
</div>
</div>
</template>
<script lang="ts" src="./settings.ts">
</script>
<style lang="scss" scoped>
@import 'settings.scss';
</style>

View File

@@ -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,

View File

@@ -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})',
},
},

View File

@@ -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' }),

View File

@@ -28,4 +28,7 @@ $heightBtn: 100%;
.note {
font-style: italic;
color:blue;
}
}
.totali {
font-weight: bold;
}

View File

@@ -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,
}
}
})

View File

@@ -21,7 +21,7 @@
:hide-header="$q.screen.lt.sm"
:columns="columns"
row-key="numorder"
:rows="getOrdersCart()"
:rows="getOrdersCartWithTotals()"
>
<template v-if="$q.screen.lt.sm" v-slot:item="props">
<div class="q-pa-xs col-xs-12 col-sm-6 col-md-4">
@@ -40,7 +40,9 @@
v-for="(item, index) of props.row.items"
:key="index"
>
<div v-if="!!item.order && item.order.product">
<div
v-if="!!item && item.order && item.order.product"
>
{{ item.order.product.name }} ({{
item.order.quantity
}})<br />
@@ -68,10 +70,18 @@
<template v-else v-slot:body="props">
<q-tr :props="props">
<q-td key="numorder" :props="props">
&nbsp; n. {{ props.row.numorder }}
<span v-if="props.row.numorder">
&nbsp; n. {{ props.row.numorder }}</span
>
</q-td>
<q-td key="nameSurname" :props="props">
{{ props.row.userId.name }} {{ props.row.userId.surname }}
<span v-if="props.row.user">
<span
:class="props.row.user.name !== 'TOTALI' ? '' : 'totali'"
>{{ tools.getNomeUtenteByRecUser(props.row.user) }}
</span
></span
>
</q-td>
<q-td key="created_at" :props="props">
{{ tools.getstrDateTime(props.row.created_at) }}
@@ -94,7 +104,9 @@
</div>
</q-td>
<q-td key="totalPrice" :props="props">
{{ props.row.totalPrice }}
<span :class="props.row.user.name !== 'TOTALI' ? '' : 'totali'"
>{{ props.row.totalPrice }} </span
>
</q-td>
<q-td key="status" :props="props">
<span :class="props.row.status">{{
@@ -127,7 +139,10 @@
</div>
</q-td>
<q-td key="comandi" :props="props">
<div v-if="tools.isManager()" class="q-pa-sm">
<div
v-if="tools.isManager() && props.row.user.name !== 'TOTALI'"
class="q-pa-sm"
>
<q-btn-dropdown rounded dense label="Azioni">
<q-list class="text-primary">
<q-item