Prodotti Refactor: differenze tra le versioni
| (8 versioni intermedie di 2 utenti non mostrate) | |||
| Riga 135: | Riga 135: | ||
|style="font-family: monospace;"|ShopPointID | |style="font-family: monospace;"|ShopPointID | ||
|int | |int | ||
|id della sede del rivenditore ( | |id della sede del rivenditore (se associato a fittizio è da sistemare in una sede vera) | ||
|- | |- | ||
|style="font-family: monospace;"|ListPrice | |style="font-family: monospace;"|ListPrice | ||
| Riga 259: | Riga 259: | ||
* <code>n</code> sta per normale | * <code>n</code> sta per normale | ||
* <code>m</code> sta per master | * <code>m</code> sta per master | ||
* <code>a</code> sta per alternativa | * <code>a</code> sta per alternativa<br/><br/> | ||
ALTERNATIVA FORSE PIU' FURBA:<br/> | |||
Tutto uguale, ma la convenzione dei nomi come la seguente: | |||
<syntaxhighlight> | |||
product-<ProductID>-<Sort>.jpg | |||
bargain-<ProductID>-<Sort>.jpg | |||
</syntaxhighlight> | |||
Questa soluzione è meno leggibile dall'umano ma molto più elastica nel caso in cui ci siano diversi cambiamenti di ordine, master/alternative (evita di dover rinominare l'immagine su disco). | |||
SISTEMAZIONE VALORI di SORT | |||
<syntaxhighlight lang="sql"> | |||
SELECT ProductID, Sort, | |||
CAST(ROW_NUMBER() OVER(PARTITION BY ProductID ORDER BY ProductID, Sort) AS INT) *10 AS Riga | |||
FROM Picture | |||
ORDER BY ProductID, Sort | |||
</syntaxhighlight> | |||
== Tabelle obsolete == | == Tabelle obsolete == | ||
| Riga 273: | Riga 289: | ||
* <code>L_ProductMeasureVariant_Measure</code> che è?? | * <code>L_ProductMeasureVariant_Measure</code> che è?? | ||
* <code>Window</code> vuota | * <code>Window</code> vuota | ||
<br/> | |||
Nel database del Trovaprodotti | |||
* <code>Occasioni.LastUpdate</code> -> aggiunto un trigger sull'update dell'occasione che aggiorna il campo LastUpdate | |||
Versione attuale delle 10:07, 14 mar 2022
Il progetto prevede di cambiare il dataset della tabella Product in modo da diventare simile a quello delle Occasioni
Tabella Product
[modifica]Di seguito i campi di una situazione ottimale
| WM_Product | ||
|---|---|---|
| IDP | int | id del prodotto |
| ManufacturerID | int | id del suo manufacturer |
| ManufacturerCustomName | nvarchar(100) (nullable) | Manufacturer personalizzato (deriva da old outlet) |
| StyleID | int | id dello Style |
| AmbientID | int | id dell'Ambient (forse non necessario qua) |
| TypeID | int | id del Type |
| DesignerID | int (nullable) | id del Designer |
| ReviewRating | tinyint | Sono le stelline presenti nel prodotto trovato in SERP (valori possibili: 4 ; 4.5 ;5 ) |
| Visible | bit | Indica se il prodotto è visibile |
| InsertDate | datetime | Data di inserimento del prodotto nel database |
| LastUpdate | datetime (nullable) | Data dell'ultima modifica effettuata |
| Campi per uso interno | ||
| BackofficeNotes | nvarchar(2000) (nullable) | Note dalla redazione |
| DataAggiornamentoListino | datetime (nullable) | Data dell'ultimo aggiornamento del listino |
Problema
[modifica]Importando le occasioni in questa tabella ci troviamo i casi in cui il manufacturer è custom (scritto a mano dal rivenditore in un campo di testo).
Per poterli importare abbiamo fatto il seguente barbatrucco:
- Creazione di un nuovo manufacturer chiamato Xtra Catalogo (con SEOName =
custom_manufacturer) - Popolamento del campo
WM_Product.ManufacturerIDcon l'ID di questo nuovo manu - Popolamento del campo
WM_Product.ManufacturerCustomNamecon il nome testuale
L'applicativo dovrà implementare un caso particolare quando un prodotto avrà il manufacturer custom.
(pseudo codice)
IF ManufacturerID == ManuCustom.ID
Manufacturer = WM_Product.ManufacturerCustomNameTabella ProductCulture
[modifica]| WM_ProductCulture | ||
|---|---|---|
| IDP | int | ID autoincrementale del record |
| ProductIDU | int | ID del prodotto |
| CultureU | varchar(5) | Cultura del record |
| Name | nvarchar(500) | Nome del prodotto |
| Description | nvarchar(4000) | Descrizione del prodotto |
| Material | nvarchar(4000) (nullable) | Materiali del prodotto |
| Measures | nvarchar(4000) (nullable) | Misure del prodotto |
| NewProduct | bit | Indica se il prodotto è novità nella cultura selezionata |
| ShowInSearch | bit | Indica se il prodotto dev'essere visibile nelle ricerche per ambiente/tipologia |
| Visible | bit | Indica se il prodotto è visibile nella cultura selezionata |
Tabella ProductBargain
[modifica]Tabella che estende i prodotti con i campi necessari ai soli prodotti che sono occasioni (nell'outlet e nel Trovaprodotti)
| WM_ProductBargain | ||
|---|---|---|
| BargainIDP | int | Vecchio OccasioneID, lo teniamo ancora per mantenere i vecchi url con l'altra numerazione |
| ProductIDU | int | id prodotto corrispondente nella tabella Product |
| ShopPointID | int | id della sede del rivenditore (se associato a fittizio è da sistemare in una sede vera) |
| ListPrice | decimal(18, 2) | Prezzo di listino |
| DiscountPrice | decimal(18, 2) | Prezzo scontato |
| InStock | bit | Indica se il prodotto è già imballato per la pronta consegna oppure se si trova in esposizione (0) |
| OutletApproved | bit | Indica se è abilitata per l'outlet |
| CommerceApproved | bit | Indica se è abilitata per il Commerce |
| ToModerate | datetime (nullable) | Se valorizzato indica il momento dal quale è in fase di moderazione per la pubblicazione su Commerce |
| Pieces | int | Numero di pezzi a disposizione |
| Sort | int | L'ordinamento rispetto alle altre occasioni dello stesso rivenditore |
Tabella ProductBargainCulture
[modifica]| WM_ProductBargainCulture | ||
|---|---|---|
| BargainIDP | int | ID nella tabella WM_ProductBargain |
| CultureP | varchar(5) | Cultura del record |
| TransportAssembly | nvarchar(300) (nullable) | Trasporto e montaggio |
| IsFreeShipping | bit | Indica se la spedizione è gratuita |
| AdditionalShippingCharge | decimal(18,2) | Costi di spedizione |
| DeliveryDateId | int (nullable) | Indica su commerce il delivery date id (???) |
| ShippingCostIncluded | bit (nullable) | Indica se il costo di spedizione è incluso. Se null significa che non è CommerceApproved. |
| ShippingQuotation | bit | Indica se la spedizione è a preventivo |
| InHouseDelivery | bit (nullable) | Indica se consegna in-house |
| AllInclusiveDelivery | bit (nullable) | Indica se consegna all-inclusive |
Tabella ProductPicture
[modifica]| WM_ProductPicture | ||
|---|---|---|
| IDP | int | ID della picture |
| ProductID | int | ID del prodotto |
| Master | bit | Picture master |
| SquarePicture | nvarchar(255) | Nome dell'immagine quadrata che potrebbe essere product-<ProductID>-q-<m/a>-<Sort>.jpg
|
| Picture | nvarchar(255) | Nome dell'immagine normale che potrebbe essere product-<ProductID>-n-<m/a>-<Sort>.jpg
|
| Sort | int | Ordinamento |
POSSIBILE SVILUPPO:
Solo 2 immagini per prodotto: quadrata e normale. Basterà uploadare le più grandi possedute. Ai ridimensionamenti ci penserà ImageKit.io.
Creare un unico folder di immagini con la seguente convenzione di nomi:
product-<ProductID>-<q|n>-<m|a>-<Sort>.jpg
es.
product-86234-q-m-0.jpg // prima master quadrata
product-86234-n-m-0.jpg // prima master normale
product-86234-n-a-3.jpg // quarta alternativa normaledove
qsta per quadratansta per normalemsta per masterasta per alternativa
ALTERNATIVA FORSE PIU' FURBA:
Tutto uguale, ma la convenzione dei nomi come la seguente:
product-<ProductID>-<Sort>.jpg
bargain-<ProductID>-<Sort>.jpgQuesta soluzione è meno leggibile dall'umano ma molto più elastica nel caso in cui ci siano diversi cambiamenti di ordine, master/alternative (evita di dover rinominare l'immagine su disco).
SISTEMAZIONE VALORI di SORT
SELECT ProductID, Sort,
CAST(ROW_NUMBER() OVER(PARTITION BY ProductID ORDER BY ProductID, Sort) AS INT) *10 AS Riga
FROM Picture
ORDER BY ProductID, Sort
Tabelle obsolete
[modifica]Elenco di tabelle che non usiamo/useremo più
L_Advertising_Productroba vecchia inutileL_Product_MeasureRangevuotaL_Product_ProductPartvuotaL_Product_Selectionnon utilizzata nel progettoL_Product_VariantvuotaL_Product_VariantCulturevuotaProductMeasureVariantche è??ProductMeasureVariantCultureche è??L_ProductMeasureVariant_Measureche è??Windowvuota
Nel database del Trovaprodotti
Occasioni.LastUpdate-> aggiunto un trigger sull'update dell'occasione che aggiorna il campo LastUpdate