aggiornamento ordini

This commit is contained in:
Surya Paolo
2023-12-14 15:20:27 +01:00
parent ba7fffdc23
commit 4ec5b12d64
11 changed files with 97 additions and 42 deletions

View File

@@ -308,6 +308,7 @@ export const shared_consts = {
CAT_SKILL_TXT: 4, CAT_SKILL_TXT: 4,
CAT_NO_SPAZI: 5, CAT_NO_SPAZI: 5,
CAT_GOODS_TXT: 10, CAT_GOODS_TXT: 10,
PRODUCTS: 20,
}, },
BotType: [ BotType: [

View File

@@ -154,8 +154,8 @@ export default defineComponent({
if (myorder.value.quantity > 0) { if (myorder.value.quantity > 0) {
myproduct.value.quantityAvailable -= myorder.value.quantity myproduct.value.quantityAvailable -= myorder.value.quantity
} }
if (myproduct.value.tempTotalQty > 0) { if (myproduct.value.QuantitaOrdinateInAttesa > 0) {
myproduct.value.quantityAvailable -= myproduct.value.tempTotalQty myproduct.value.quantityAvailable -= myproduct.value.QuantitaOrdinateInAttesa
} }
} }

View File

@@ -1,8 +1,7 @@
<template> <template>
<div class="q-pa-md row items-start q-gutter-md"> <div class="q-pa-md row items-start q-gutter-md">
<q-card :class="getmycardcl()" v-if="!!myproduct" bordered> <q-card :class="getmycardcl()" v-if="!!myproduct" bordered>
<!--<q-img :src="`` + myproduct.img" :alt="myproduct.name" :class="getclimg()"></q-img>--> <q-img :src="`` + myproduct.img" :alt="myproduct.name" :class="getclimg()"></q-img>
<img src="https://cdn.quasar.dev/img/parallax2.jpg" />
<q-list> <q-list>
<q-item> <q-item>
@@ -46,7 +45,6 @@
myproduct.after_price myproduct.after_price
}}</span> }}</span>
tempTotalQty : {{ myproduct.tempTotalQty }}
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
@@ -104,6 +102,9 @@
</span> </span>
<span class="prod_qtywarn"> <span class="prod_qtywarn">
{{ getQtyWarn() }} {{ getQtyWarn() }}
<div v-if="tools.isManager() && myproduct.QuantitaOrdinateInAttesa > 0">Quantita Ordinate In Attesa : {{ myproduct.QuantitaOrdinateInAttesa }}</div>
</span> </span>
</q-item-label> </q-item-label>
<q-item-label> </q-item-label> <q-item-label> </q-item-label>

View File

@@ -1,10 +1,12 @@
<template> <template>
<div class="q-pa-xs q-gutter-xs"> <div class="q-pa-xs q-gutter-xs">
order.product.img: {{ order.product.img }}
<div v-if="order.product" class="row items-center justify-evenly no-wrap"> <div v-if="order.product" class="row items-center justify-evenly no-wrap">
<div class="col-2 text-h6 ellipsis"> <div class="col-2 text-h6 ellipsis">
<img <q-img v-if="order.product && order.product.img" :src="`` + order.product.img" :alt="order.product.name"
v-if="order.product && order.product.img" :src="`` + order.product.img" :alt="order.product.name" :class="myimgclass"> :class="myimgclass">
</q-img>
</div> </div>
<div class="col-4 q-ml-xs"> <div class="col-4 q-ml-xs">
{{ order.product.name }} {{ order.product.name }}
@@ -14,8 +16,7 @@
</div> </div>
<div class="col-3"> <div class="col-3">
<div class="row q-mb-xs no-wrap items-center centeritems"> <div class="row q-mb-xs no-wrap items-center centeritems">
<q-btn <q-btn v-if="showall && !nomodif" round size="xs" text-color="grey" icon="fas fa-minus"
v-if="showall && !nomodif" round size="xs" text-color="grey" icon="fas fa-minus"
@click="addsubqty(false, true)"></q-btn> @click="addsubqty(false, true)"></q-btn>
<!--<q-field outlined dense style="width: 25px; height: 20px; " class="q-mx-xs text-subtitle4"> <!--<q-field outlined dense style="width: 25px; height: 20px; " class="q-mx-xs text-subtitle4">
<template v-slot:control> <template v-slot:control>
@@ -23,8 +24,7 @@
</template> </template>
</q-field>--> </q-field>-->
<div :class="`q-mx-sm text-blue-14`">{{ order.quantity }}</div> <div :class="`q-mx-sm text-blue-14`">{{ order.quantity }}</div>
<q-btn <q-btn v-if="showall && !nomodif" round size="xs" text-color="grey" icon="fas fa-plus"
v-if="showall && !nomodif" round size="xs" text-color="grey" icon="fas fa-plus"
@click="addsubqty(true, false)"></q-btn> @click="addsubqty(true, false)"></q-btn>
</div> </div>
</div> </div>

View File

@@ -341,9 +341,8 @@ h3 {
.myimgtitle { .myimgtitle {
max-width: 100%; max-width: 100%;
height: 300px; width: 100%;
@media (max-width: 718px) { @media (max-width: 718px) {
height: 200px;
} }
} }

View File

@@ -15,7 +15,7 @@ export interface IProduct {
color?: string, color?: string,
size?: string, size?: string,
quantityAvailable: number, quantityAvailable: number,
tempTotalQty: number, QuantitaOrdinateInAttesa: number,
stockQty: number, stockQty: number,
canBeShipped?: boolean, canBeShipped?: boolean,
canBeBuyOnline?: boolean, canBeBuyOnline?: boolean,
@@ -127,7 +127,6 @@ export interface IOrderCart {
status: number status: number
note?: string note?: string
modify_at?: Date modify_at?: Date
completed_at?: Date
evaso: boolean evaso: boolean
date_evaso?: Date date_evaso?: Date
consegnato: boolean consegnato: boolean
@@ -138,6 +137,8 @@ export interface IOrderCart {
date_spedito?: Date date_spedito?: Date
ricevuto: boolean ricevuto: boolean
date_ricevuto?: Date date_ricevuto?: Date
completato: boolean
date_completato?: Date
} }
export interface IShareWithUs { export interface IShareWithUs {

View File

@@ -25,10 +25,12 @@ export default defineComponent({
const arrSkill = ref(<any[]>[]) const arrSkill = ref(<any[]>[])
const arrGood = ref(<any[]>[]) const arrGood = ref(<any[]>[])
const importasulserver = ref(false)
const skipfirstrow = ref(true)
const incaricamento = ref(false) const incaricamento = ref(false)
const cosafare = ref(shared_consts.Cmd.PROVINCE) const cosafare = ref(shared_consts.Cmd.PRODUCTS)
const inputfile = ref('') const inputfile = ref('')
const risultato = ref('') const risultato = ref('')
@@ -38,6 +40,10 @@ export default defineComponent({
const ListaCmd = ref( const ListaCmd = ref(
[ [
{
label: 'Importa Prodotti',
value: shared_consts.Cmd.PRODUCTS
},
{ {
label: 'Importa Province', label: 'Importa Province',
value: shared_consts.Cmd.PROVINCE value: shared_consts.Cmd.PROVINCE
@@ -144,7 +150,7 @@ export default defineComponent({
} }
const myid = arr.length + 1 const myid = arr.length + 1
arr.push({_id: myid, descr: cat}) arr.push({ _id: myid, descr: cat })
return myid return myid
} }
@@ -185,7 +191,7 @@ export default defineComponent({
arr = arrSkill.value arr = arrSkill.value
} }
const myid = arr.length + 1 const myid = arr.length + 1
arr.push({_id: myid, descr: cat}) arr.push({ _id: myid, descr: cat })
return myid return myid
} }
@@ -247,7 +253,7 @@ export default defineComponent({
strskills += ' _id:' + idSkill + ',' strskills += ' _id:' + idSkill + ','
if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) { if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
strskills += ' idSectorGood: [' + idSector + '],' strskills += ' idSectorGood: [' + idSector + '],'
}else if (cmd === shared_consts.Cmd.CAT_SKILL_TXT) { } else if (cmd === shared_consts.Cmd.CAT_SKILL_TXT) {
strskills += ' idSector: [' + idSector + '],' strskills += ' idSector: [' + idSector + '],'
} }
@@ -303,7 +309,7 @@ export default defineComponent({
// debugger; // debugger;
for (let i = 0; i < myarr.length; i = i + righe) { for (let i = 0; i < myarr.length; i = i + righe) {
sotto_cat = myarr[i].replace('\'', '\\\'') sotto_cat = myarr[i].replace('\'', '\\\'')
sector = myarr[i+2] sector = myarr[i + 2]
txt += sotto_cat + ',' + sector + '<br>' txt += sotto_cat + ',' + sector + '<br>'
} }
@@ -334,9 +340,18 @@ export default defineComponent({
let strris = '' let strris = ''
let ind = 1 let ind = 1
let primo = true
for (const rec of myarr) { for (const rec of myarr) {
if (skipfirstrow.value) {
if (ind === 1) {
ind++;
continue;
}
}
let lab = tools.addslashes(rec[0]) let lab = tools.addslashes(rec[0])
let val = tools.addslashes(rec[1]) let val = tools.addslashes(rec[1])
if (cmd === shared_consts.Cmd.PROVINCE) { if (cmd === shared_consts.Cmd.PROVINCE) {
@@ -356,6 +371,22 @@ export default defineComponent({
strris += ' comune:\'' + tools.addslashes(rec[1]) + '\',' strris += ' comune:\'' + tools.addslashes(rec[1]) + '\','
strris += ' prov:\'' + tools.addslashes(rec[2]) + '\'' strris += ' prov:\'' + tools.addslashes(rec[2]) + '\''
} else if (cmd === shared_consts.Cmd.PRODUCTS) {
if (!primo){
strris += ', '
}
strris += '{ '
strris += ' "code":"' + tools.removeescape(tools.addslashes(rec[0])) + '",'
strris += ' "name":"' + tools.removeescape(tools.addslashes(rec[1])) + '",'
strris += ' "price":"' + tools.removeescape(tools.addslashes(tools.convertPriceEurToValue(rec[2]))) + '",'
strris += ' "stockQty":"' + tools.removeescape(tools.addslashes(rec[3])) + '",'
strris += ' "link":"' + tools.removeescape(tools.addslashes(rec[4])) + '",'
strris += ' "perc_iva":"' + tools.removeescape(tools.addslashes(rec[5])) + '",'
strris += ' "price_acquistato":"' + tools.removeescape(tools.addslashes(tools.convertPriceEurToValue(rec[6]))) + '",'
strris += ' "producer_name":"' + tools.removeescape(tools.addslashes(rec[7])) + '"'
strris += '} '
} else if (cmd === shared_consts.Cmd.CITIES_SERVER) { } else if (cmd === shared_consts.Cmd.CITIES_SERVER) {
strris += '{ \n' strris += '{ \n'
strris += ' _id :' + ind + ',\n' strris += ' _id :' + ind + ',\n'
@@ -370,14 +401,19 @@ export default defineComponent({
strris += '}, \n' strris += '}, \n'
} }
ind += 1 ind += 1
primo = false
} }
if (cmd === shared_consts.Cmd.CITIES_SERVER) { if (cmd === shared_consts.Cmd.CITIES_SERVER) {
userStore.importToServerCmd($q, t, cmd, null) userStore.importToServerCmd($q, t, cmd, null)
} else if (cmd === shared_consts.Cmd.PRODUCTS) {
if (importasulserver.value)
userStore.importToServerCmd($q, t, cmd, strris)
} }
risultato = strris risultato = strris
return risultato return risultato
} }
@@ -400,6 +436,9 @@ export default defineComponent({
risultato.value = '' risultato.value = ''
userStore.importToServerCmd($q, t, cosafare.value, null) userStore.importToServerCmd($q, t, cosafare.value, null)
} }
function eseguiCmdProduct() {
userStore.importToServerCmd($q, t, cosafare.value, risultato.value)
}
function createProvLink() { function createProvLink() {
let str = '' let str = ''
@@ -441,6 +480,9 @@ export default defineComponent({
caricadati, caricadati,
createProvLink, createProvLink,
risraw, risraw,
importasulserver,
skipfirstrow,
eseguiCmdProduct,
} }
} }
}) })

View File

@@ -2,29 +2,25 @@
<CMyPage img="" title="Import Data" keywords="" description=""> <CMyPage img="" title="Import Data" keywords="" description="">
<div class="q-ma-sm"> <div class="q-ma-sm">
<q-toggle v-model="caricaDatiToggle" @click="caricadati()" <q-toggle v-model="caricaDatiToggle" @click="caricadati()" label="Carica Dati"></q-toggle>
label="Carica Dati"></q-toggle>
<br> <br>
<q-select <q-toggle v-model="importasulserver" label="Importa sul Server"></q-toggle>
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" rounded outlined v-model="cosafare" <q-toggle v-model="skipfirstrow" label="Salta la prima riga"></q-toggle>
:options="ListaCmd" <q-select :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" rounded outlined v-model="cosafare"
label="Operazione" emit-value map-options> :options="ListaCmd" label="Operazione" emit-value map-options>
</q-select> </q-select>
<label class="text-reader"> <label class="text-reader">
<input type="file" <input type="file" @change="loadTextFromFile" />
@change="loadTextFromFile" />
</label> </label>
<br> <br>
<br> <br>
<q-btn <q-btn v-if="cosafare !== shared_consts.Cmd.PRODUCTS" label="Esegui" @click="eseguiCmd"></q-btn>
label="Esegui"
@click="eseguiCmd"></q-btn> <q-btn v-else label="Importa Prodotti" @click="eseguiCmdProduct"></q-btn>
<br> <br>
<q-btn <q-btn label="Genera HTML Province Territoriali" @click="createProvLink"></q-btn>
label="Genera HTML Province Territoriali"
@click="createProvLink"></q-btn>
<br><br> <br><br>

View File

@@ -5830,7 +5830,7 @@ export const tools = {
groupname: '', groupname: '',
circuitnameDest: circuitname, circuitnameDest: circuitname,
} }
userStore.setCircuitCmd($q, t, username, circuitname, shared_consts.CIRCUITCMD.SETFIDO, true, extrarec) userStore.setCircuitCmd($q, t, username, circuitname, shared_consts.CIRCUITCMD.SETFIDO, true, extrarec)
.then((res: any) => { .then((res: any) => {
if (res && res.result) { if (res && res.result) {
@@ -8259,6 +8259,16 @@ export const tools = {
return 0 return 0
}, },
convertPriceEurToValue(inputString: string): string {
// Rimuovi il simbolo della valuta (€) e sostituisci la virgola con un punto
return inputString.replace(/[^\d.,]/g, '').replace(',', '.');
},
removeescape(inputString: string): string {
return inputString.replace('\\', '').replace(/"/g, '')
},
// FINE ! // FINE !

View File

@@ -92,7 +92,7 @@ export const useProducts = defineStore('Products', {
quantityAvailable: 0, quantityAvailable: 0,
stockQty: 0, stockQty: 0,
canBeShipped: false, canBeShipped: false,
tempTotalQty: 0, QuantitaOrdinateInAttesa: 0,
canBeBuyOnline: false, canBeBuyOnline: false,
weight: 0, weight: 0,
unit: 0, unit: 0,
@@ -424,9 +424,10 @@ export const useProducts = defineStore('Products', {
if (res.data.status === shared_consts.OrderStatus.CHECKOUT_SENT) { if (res.data.status === shared_consts.OrderStatus.CHECKOUT_SENT) {
this.cart = {} this.cart = {}
if (res.data.orders)
this.orders = res.data.orders
} }
if (res.data.orders)
this.orders = res.data.orders
return res.data.status return res.data.status
}) })
.catch((error) => { .catch((error) => {
@@ -450,7 +451,11 @@ export const useProducts = defineStore('Products', {
ris = await Api.SendReq('/cart/' + userStore.my._id + '/ordercartstatus', 'POST', { order_id, status }) ris = await Api.SendReq('/cart/' + userStore.my._id + '/ordercartstatus', 'POST', { order_id, status })
.then((res) => { .then((res) => {
if (res.data.orders)
this.orders = res.data.orders
return res.data.status return res.data.status
}) })
.catch((error) => { .catch((error) => {
console.log('error UpdateOrderCartStatus', error) console.log('error UpdateOrderCartStatus', error)

View File

@@ -70,13 +70,13 @@
&nbsp; n. {{ props.row.numorder }} &nbsp; n. {{ props.row.numorder }}
</q-td> </q-td>
<q-td key="nameSurname" :props="props"> <q-td key="nameSurname" :props="props">
{{ props.row.nameSurname }} {{ props.row.userId.name }} {{ props.row.userId.surname }}
</q-td> </q-td>
<q-td key="created_at" :props="props"> <q-td key="created_at" :props="props">
{{ tools.getstrDateTime(props.row.created_at) }} {{ tools.getstrDateTime(props.row.created_at) }}
<span v-if="taborders === shared_consts.OrderStat.COMPLETATI"> <span v-if="taborders === shared_consts.OrderStat.COMPLETATI">
<br />Completato il:<br />{{ <br />Completato il:<br />{{
tools.getstrDateTime(props.row.completed_at) tools.getstrDateTime(props.row.date_completato)
}} }}
</span> </span>
</q-td> </q-td>
@@ -113,8 +113,8 @@
{{ tools.getstrDateTime(props.row.date_spedito) }}: {{ tools.getstrDateTime(props.row.date_spedito) }}:
<span class="ordstat">{{ $t('ecomm.spedito') }}</span> <span class="ordstat">{{ $t('ecomm.spedito') }}</span>
</div> </div>
<div v-if="props.row.completed"> <div v-if="props.row.completato">
{{ tools.getstrDateTime(props.row.date_completed) }}: {{ tools.getstrDateTime(props.row.date_completato) }}:
<span class="ordstat">{{ $t('ecomm.completed') }}</span> <span class="ordstat">{{ $t('ecomm.completed') }}</span>
</div> </div>
<div v-if="props.row.ricevuto"> <div v-if="props.row.ricevuto">