aggiornamento Ordini GAS filtri

This commit is contained in:
Surya Paolo
2024-02-13 18:13:36 +01:00
parent 6a01379b67
commit c6e0caa3f4
71 changed files with 1105 additions and 281 deletions

View File

@@ -642,6 +642,14 @@
></q-btn>
<br />
</div>
<div class="row">
<q-btn
label="Genera CSV Ordine Prodotti"
color="primary"
@click="EseguiFunz('GeneraCSVOrdineProdotti')"
></q-btn>
<br />
</div>
</template>
<script lang="ts" src="./dbop.ts">
</script>

View File

@@ -0,0 +1,41 @@
$heightBtn: 100%;
.card .product-image {
height: 300px;
}
.mycol{
color:gray;
}
.q-item__label--caption{
color: blue;
}
.ordstat{
text-align: center;
border: 1px solid #8778cb;
border-radius: 10px;
padding: 5px;
}
.confermato {
font-weight: bold;
color: green;
}
.note {
font-style: italic;
color:blue;
}
.totali {
font-weight: bold;
color: blue;
font-size: 1rem;
}
.totaliacq {
font-weight: bold;
color: red;
font-size: 1rem;
}

View File

@@ -0,0 +1,236 @@
import { defineComponent, onMounted, ref, watch } from 'vue'
import { tools } from '@store/Modules/tools'
import { useUserStore } from '@store/UserStore'
import { useRouter } from 'vue-router'
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 { costanti } from '@costanti'
import { shared_consts } from '@src/common/shared_vuejs'
// import MixinBase from '@src/mixins/mixin-base'
import { serv_constants } from '@store/Modules/serv_constants'
import { fieldsTable } from '@store/Modules/fieldsTable'
import { CSingleCart } from '../../../components/CSingleCart'
import { CTitleBanner, CMyFieldDb } from '@components'
import { ICart, IOrder, IOrderCart } from '@src/model'
export default defineComponent({
name: 'gestoreordini',
components: { CSingleCart, CTitleBanner, CMyFieldDb },
props: {},
setup() {
const userStore = useUserStore()
const globalStore = useGlobalStore()
const productStore = useProducts()
const $router = useRouter()
const $q = useQuasar()
const { t } = useI18n()
const mygestord = ref(<any[] | undefined>[])
const myarrrec = ref(<any>{})
const myoldrec = ref(<any>{})
const templemail = ref('')
const storeGasordine = ref(<any>'')
const cosa = ref(0)
const arrout = ref(<any[]>[])
const initialPagination = ref({
sortBy: 'desc',
descending: false,
rowsPerPage: 10,
// rowsNumber: xx if getting data from a server
})
const conferma_carrello = ref(false)
const conferma_ordine = ref(false)
const endload = ref(false)
const taborders = ref(shared_consts.OrderStat.IN_CORSO.value)
const columns = ref(<any>[
{
name: 'name',
required: true,
align: 'left',
label: 'Nome Prodotto',
field: 'nameSurname',
sortable: true
},
{
name: 'weight',
required: true,
label: 'Peso',
field: 'weight',
sortable: true
},
{
name: 'price_acquistato',
required: true,
label: 'Prezzo (P)',
field: 'price_acquistato',
sortable: true
},
{
name: 'totalQuantity',
required: true,
label: 'Qty',
field: 'totalQuantity',
sortable: true
},
{
name: 'totalPrice_acquistato',
required: true,
label: 'Totale (P)',
field: 'totalPrice_acquistato',
sortable: true
},
{
name: 'totalPrice',
required: true,
label: 'Totale (C)',
field: 'totalPrice',
sortable: true
},
])
watch(() => cosa.value, (newval, oldval) => {
})
watch(() => storeGasordine.value, (newval, oldval) => {
tools.setCookie(tools.COOK_SELGAS, storeGasordine.value)
updateorders()
})
function getCols(props: any) {
return props.cols.filter((col: any) => col.name !== 'desc')
}
async function getGestoreOrd() {
const hasGasordine: any = (cosa.value === shared_consts.PROD.TUTTI) ? undefined : (cosa.value === shared_consts.PROD.GAS)
const ris = await productStore.getGestoreOrdini({ idGasordine: storeGasordine.value })
return ris
}
async function getGestoreOrdWithTotals() {
const orderscart = await getGestoreOrd();
if (orderscart) {
// Calculate totals
const totals = {
name: 'TOTALI',
weight: '',
totalQuantity: orderscart.reduce((total: number, rec: any) => total + rec.totalQuantity, 0),
totalPrice_acquistato: orderscart.reduce((total: number, rec: any) => total + rec.totalPrice_acquistato, 0),
totalPrice: orderscart.reduce((total: number, rec: any) => total + rec.totalPrice, 0),
};
let rowsWithTotals: any = [...orderscart];
if (tools.isManager()) {
// Combine orders and totals
rowsWithTotals.push(totals);
}
return rowsWithTotals;
} else {
return []
}
}
async function updateorders() {
mygestord.value = await getGestoreOrd()
if (mygestord.value) {
for (const gestord of mygestord.value) {
myarrrec.value[gestord._id] = Object.keys(gestord)
}
}
arrout.value = await getGestoreOrdWithTotals()
}
async function mounted() {
storeGasordine.value = tools.getCookie(tools.COOK_SELGAS, '')
await userStore.newsletterload(false)
await productStore.loadProducts()
taborders.value = -1
await updateorders()
if (taborders.value === -1)
taborders.value = shared_consts.OrderStat.IN_CORSO.value
endload.value = true
}
function CanBeShipped() {
return productStore.cart.items!.filter((rec) => rec.order.product!.canBeShipped).length
}
function CanBeBuyOnline() {
return productStore.cart.items!.filter((rec) => rec.order.product!.canBeBuyOnline).length
}
function getnumsteps() {
let numsteps = 1
if (CanBeShipped())
numsteps++
if (CanBeBuyOnline())
numsteps++
return numsteps
}
function docheckout() {
// Può essere spedito?
if (CanBeShipped()) {
// mostra form di spedizione
}
if (CanBeBuyOnline()) {
// mostra form di acquisto Online
}
}
onMounted(mounted)
return {
userStore,
costanti,
tools,
toolsext,
shared_consts,
globalStore,
columns,
taborders,
getGestoreOrd,
updateorders,
getCols,
endload,
getGestoreOrdWithTotals,
productStore,
t,
initialPagination,
cosa,
templemail,
fieldsTable,
arrout,
storeGasordine,
}
}
})

View File

@@ -0,0 +1,117 @@
<template>
<q-page>
<CTitleBanner title="Ordini"></CTitleBanner>
<q-spinner v-if="!endload" color="primary" size="3em" :thickness="2" />
<div class="q-gutter-md text-center">
<q-btn-toggle
v-model="cosa"
push
rounded
glossy
toggle-color="purple"
:options="[
{ value: shared_consts.PROD.TUTTI, slot: 'tutti' },
{ value: shared_consts.PROD.BOTTEGA, slot: 'bottega' },
{ value: shared_consts.PROD.GAS, slot: 'gas' },
]"
>
<template v-slot:tutti>
<div class="row items-center no-wrap">
<div class="text-center">
{{ t('gas.tutti') }}
</div>
<q-icon right name="fas fa-user-friends" />
</div>
</template>
<template v-slot:gas>
<div class="row items-center no-wrap">
<div class="text-center">
{{ t('gas.ordina_sul_gas') }}
</div>
<q-icon right name="fas fa-user-friends" />
</div>
</template>
<template v-slot:bottega>
<div class="row items-center no-wrap">
<div class="text-center">
{{ t('gas.bottega') }}
</div>
<q-icon right name="fas fa-store" />
</div>
</template>
</q-btn-toggle>
</div>
<div v-if="endload" class="panel">
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined
v-model="storeGasordine"
:options="productStore.getGasordines()"
:label="t('products.gasordine') + `:`"
emit-value
map-options
>
</q-select>
<div class="q-pa-sm" v-if="arrout">
<q-table
:columns="columns"
row-key="numorder"
:pagination="initialPagination"
:rows="arrout"
>
<template v-slot:body="props">
<q-tr :props="props">
<q-td key="name" :props="props">
<span v-if="props.row.name"> &nbsp; {{ props.row.name }}</span>
</q-td>
<q-td key="weight" :props="props">
<span v-if="props.row.weight">
&nbsp; {{ props.row.weight }}
{{ tools.getUnitsMeasure(props.row.unit, true) }}</span
>
</q-td>
<q-td key="price_acquistato" :props="props">
<span v-if="props.row.price_acquistato">
&nbsp; {{ props.row.price_acquistato.toFixed(2) }}
</span>
</q-td>
<q-td key="totalQuantity" :props="props">
<span v-if="props.row.totalQuantity">
&nbsp;
{{ props.row.totalQuantity }}</span
>
</q-td>
<q-td key="totalPrice_acquistato" :props="props">
<span v-if="props.row.totalPrice_acquistato">
<span :class="props.row.name !== 'TOTALI' ? '' : 'totaliacq'">
&nbsp; {{ props.row.totalPrice_acquistato.toFixed(2) }}
&nbsp;</span
>
</span>
</q-td>
<q-td key="totalPrice" :props="props">
<span v-if="props.row.totalPrice">
<span :class="props.row.name !== 'TOTALI' ? '' : 'totali'">
&nbsp; {{ props.row.totalPrice.toFixed(2) }}
&nbsp;</span
>
</span>
</q-td>
</q-tr>
</template>
</q-table>
</div>
</div>
</q-page>
</template>
<script lang="ts" src="./gestoreordini.ts">
</script>
<style lang="scss" scoped>
@import './gestoreordini';
</style>

View File

@@ -0,0 +1 @@
export {default as gestoreordini} from './orderInfo.vue'