- aggiornato scheda e rigenera lista

- corretto filtro sulla Collana
This commit is contained in:
Surya Paolo
2025-04-29 02:30:00 +02:00
parent ec19bc3b87
commit 493ebf51f3
24 changed files with 1219 additions and 888 deletions

View File

@@ -533,6 +533,14 @@ export const costanti = {
SOLO_PROSSIMA_USCITA: '2',
PREVENDITA: '3',
NON_VENDIBILE: '4',
}
},
NO_CATEGORY: '__NOCATEGORY__',
VISUCAMPI: {
PER_TUTTI: 0,
PER_EDITORE: 1,
PER_ADMIN: 16,
},
}

View File

@@ -667,6 +667,7 @@ export const colTableTipologie = [
AddCol(DuplicateRec),
]
export const colTableCollane = [
AddCol({ name: '_id', label_trans: 'catalogo.id', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'idCollana', label_trans: 'collane.idCollana', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'title', label_trans: 'collane.title' }),
AddCol(DeleteRec),

View File

@@ -9145,6 +9145,8 @@ export const tools = {
},
arrotonda2Dec(number: any): string {
let num = ''
if (!number)
return ''
try {
if (number)
num = number.toFixed(2)
@@ -9881,7 +9883,7 @@ export const tools = {
.join(", ");
},
formatCollane(collane: number[] | number | undefined | null): string {
formatCollane(collane: string[] | string): string {
if (!collane) {
return "";
}
@@ -9891,13 +9893,13 @@ export const tools = {
// Estrai le collane e uniscile con ', '
return collane
.map((idcollana) => {
const reccoll: ICollana | undefined = products.collane!.find((coll: ICollana) => coll.idCollana === idcollana)
const reccoll: ICollana | undefined = products.collane!.find((coll: ICollana) => coll._id === idcollana)
return reccoll ? `${reccoll.title ?? ""}`.trim() : ""
})
.filter((name) => name.length > 0) // Filtra eventuali nomi vuoti
.join(", ");
} else {
const reccoll: ICollana | undefined = products.collane!.find((coll: ICollana) => coll.idCollana === collane)
const reccoll: ICollana | undefined = products.collane!.find((coll: ICollana) => coll._id === collane)
return reccoll ? `${reccoll.title}` : ''
}

View File

@@ -1,4 +1,4 @@
import type { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd, IText, IOptCatalogo, ICatalog, ICatPrTotali, ISingleProductOrdered, ISchedaSingola, IMyScheda, IElementiScheda, T_Web_StatiProdotto, T_Web_Tipologie, T_WEB_TipiFormato } from 'model'
import type { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd, IText, IOptCatalogo, ICatalog, ICatPrTotali, ISingleProductOrdered, ISchedaSingola, IMyScheda, IElementiScheda, T_Web_StatiProdotto, T_Web_Tipologie, T_WEB_TipiFormato, IPublisher } from 'model'
import { Api } from '@api'
import { serv_constants } from '@src/store/Modules/serv_constants'
@@ -198,11 +198,21 @@ export const useProducts = defineStore('Products', {
// 34 - In Prevendita
return (idStatoProdotto === 34)
},
isNovitaById: (state: IProductsState) => (date_pub: Date): boolean => {
const sixMonthsAgo = new Date();
sixMonthsAgo.setMonth(sixMonthsAgo.getMonth() - 6);
return new Date(date_pub).getTime() > sixMonthsAgo.getTime();
},
isPubblicato: (state: IProductsState) => (productInfo: IProductInfo): boolean => {
return state.isPubblicatoById(productInfo.idStatoProdotto)
},
isNovita: (state: IProductsState) => (productInfo: IProductInfo): boolean => {
return state.isNovitaById(productInfo.date_pub)
},
isNonVendibile: (state: IProductsState) => (productInfo: IProductInfo): boolean => {
return !state.isPubblicatoById(productInfo.idStatoProdotto) && !state.isProssimaUscitaById(productInfo.idStatoProdotto)
},
@@ -220,6 +230,11 @@ export const useProducts = defineStore('Products', {
return (ctrec) ? ctrec.Descrizione : ''
},
getCasaEditriceByIdPublisher: (state: IProductsState) => (idPublisher: string): string => {
const rectrovato: IPublisher = state.publishers.find((editore: IPublisher) => editore._id === idPublisher)
return (rectrovato) ? rectrovato.name : ''
},
getDescrByIdTipologia: (state: IProductsState) => (idTipologia: number): string => {
const ctrec = state.tipologie.find((mystatus: T_Web_Tipologie) => mystatus.IdTipologia === idTipologia)
@@ -1548,8 +1563,8 @@ export const useProducts = defineStore('Products', {
}
if (testo.contenuto.includes('{prezzo}') || testo.contenuto.includes('{prezzo_scontato}')) {
const prezzo = tools.arrotonda2Dec(myproduct.arrvariazioni![0].price) || '';
const prezzo_scontato = tools.arrotonda2Dec(myproduct.arrvariazioni![0].sale_price) || '';
const prezzo = tools.arrotonda2Dec(myproduct.arrvariazioni?.[0]?.price) || '';
const prezzo_scontato = tools.arrotonda2Dec(myproduct.arrvariazioni?.[0]?.sale_price) || '';
replacements['{prezzo}'] = prezzo;
replacements['{prezzo_scontato}'] = prezzo_scontato;
}
@@ -1557,9 +1572,9 @@ export const useProducts = defineStore('Products', {
// Additional replacements based on the content
const keysToCheck = [
'{titolo}', '{sottotitolo}', '{categoria}', '{sottocategoria}', '{descr_categoria}',
'{pagine}', '{isbn}', '{misure}', '{edizione', '{ristampa}', '{argomento}', '{date_pub}', '{date_updated_fromGM}', '{ranking_globale}',
'{pagine}', '{isbn}', '{misure}', '{edizione}', '{ristampa}', '{argomento}', '{date_pub}', '{date_updated_fromGM}', '{ranking_globale}',
'{venduti}', '{formato}', '{tipologia}', '{stato}', '{scale}', '{descr_trafiletto_catalogo}',
'{link_macro}', '{qta}', '{image_link}', '{imagefile}', '{debug}'
'{link_macro}', '{qta}', '{image_link}', '{imagefile}', '{casaeditrice}', '{debug}'
];
for (const key of keysToCheck) {
@@ -1578,19 +1593,22 @@ export const useProducts = defineStore('Products', {
replacements[key] = myproduct.productInfo.catprods && myproduct.productInfo.catprods.length > 0 ? this.getCatProdDescrStrByIdCatProd(myproduct.productInfo.catprods![0].name) : '';
break;
case '{pagine}':
replacements[key] = myproduct.arrvariazioni![0].pagine || '';
replacements[key] = myproduct.arrvariazioni?.[0]?.pagine || '';
break;
case '{isbn}':
replacements[key] = myproduct.productInfo.code || '';
break;
case '{misure}':
replacements[key] = myproduct.arrvariazioni![0].misure || '';
replacements[key] = myproduct.arrvariazioni?.[0]?.misure || '';
break;
case '{casaeditrice}':
replacements[key] = this.getCasaEditriceByIdPublisher(myproduct.productInfo.idPublisher)
break;
case '{edizione}':
replacements[key] = myproduct.arrvariazioni![0].edizione || '';
replacements[key] = myproduct.arrvariazioni?.[0]?.edizione || '';
break;
case '{ristampa}':
replacements[key] = myproduct.arrvariazioni![0].ristampa || '';
replacements[key] = myproduct.arrvariazioni?.[0]?.ristampa || '';
break;
case '{argomento}':
replacements[key] = this.getCatProdsStrByCatProds(myproduct.productInfo.catprods!) || '';
@@ -1608,10 +1626,10 @@ export const useProducts = defineStore('Products', {
replacements[key] = myproduct.productInfo.totVen! || '0';
break;
case '{formato}':
replacements[key] = this.getDescrByIdTipoFormato(myproduct.arrvariazioni[0].idTipoFormato || 0)
replacements[key] = this.getDescrByIdTipoFormato(myproduct.arrvariazioni?.[0]?.idTipoFormato || 0)
break;
case '{tipologia}':
replacements[key] = this.getDescrByIdTipologia(myproduct.arrvariazioni[0].idTipologia || 0);
replacements[key] = this.getDescrByIdTipologia(myproduct.arrvariazioni?.[0]?.idTipologia || 0);
break;
case '{stato}':
replacements[key] = this.getDescrStatiProdottoByIdStatoProdotto(myproduct.productInfo.idStatoProdotto || '');
@@ -1623,7 +1641,7 @@ export const useProducts = defineStore('Products', {
replacements[key] = myproduct.productInfo.link_macro || '';
break;
case '{qta}':
replacements[key] = myproduct.arrvariazioni![0].quantita || '';
replacements[key] = myproduct.arrvariazioni?.[0]?.quantita || '';
break;
case '{image_link}':
replacements[key] = myproduct.productInfo.image_link || '';

View File

@@ -440,6 +440,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
else if (table === 'departments') ris = state.departments
else if (table === 'categorys') ris = state.categories
else if (table === 'catprods') ris = Products.catprods
else if (table === 'collanas') ris = Products.collane
else if (table === 'subcatprods') ris = Products.subcatprods
else if (table === 'catprods_gas') ris = Products.catprods_gas
else if (table === 'authors') ris = Products.authors
@@ -494,8 +495,6 @@ export const useGlobalStore = defineStore('GlobalStore', {
return state.sectorgoods
else if (table === 'catgrps')
return state.catgrps
else if (table === 'collanas')
return Products.collane
else if (table === 'schedeopt')
return Products.getSchedeOpt(state.myschedas)
else if (table === 'provinces')