Il miglior approccio per visualizzare un prezzo da un prodotto in base alla "configurazione"? [Progettare la tabella DB e le relazioni]

2

Fondamentalmente sto costruendo un sito web per rivenditori, nel quale le persone possono acquistare (utenti) da un elenco di prodotti predefinito e venderli a un prezzo più alto (clienti).

Ti mostrerò alcune immagini per spiegarmi meglio. L'immagine seguente rappresenta una tabella con diversi campi, in cui ho incluso solo 2 colonne.
Ilpuntodiquestatabellaèconsentireall'utentedipersonalizzarecompletamenteilprezzovisualizzatoperisuoiclienti.

Lasciatemispiegare:voglioconsentireall'utentediignorareilprezzopredefinitoinbaseall'impostazionecombinata.

Adesempio:seunutenteha"Globale" in ambito e "Percentuale" in modalità. Ciò significa che OGNI prodotto apparirà con un aumento del prezzo percentuale.

Se un utente ha il "Cliente" in ambito e "Percentuale" in modalità. Ciò significa che ogni prodotto apparirà con un aumento del prezzo percentuale SOLO per il cliente specificato.

Ma dov'è il trucco? In override. Poiché lo stesso utente può avere più impostazioni, molte di esse corrisponderanno ai criteri intermedi.

Vedi la seguente immagine:


Ilnumero4èilpiùspecifico,daquicoluichepesadipiùesovrascriveràglialtri3(seicritericoincidono).

Esempio:Immaginadiavereilseguentescenario:
Immaginachecisianofertilizzanticomeprodotti.Unutentedesideravenderea"Axel", il cliente.

Per tutti i fertilizzanti venduti, l'utente fatturerà il 15% del prezzo originale. Ma, il cliente "Axel", invece di fatturare il 15% del prezzo originale, gli verrà addebitato il 10%.

Quando guardo nella tabella del database, vedo che l'utente ha impostato "Globale" come ambito e "Percentuale" come modalità. Tuttavia, questo stesso criterio è soddisfatto perché l'utente ha anche impostato "Client" come ambito e "Percentuale" come modalità in un'altra riga.

Mi piacerebbe "sovrascrivere" quell'impostazione globale per "Axel" e visualizzare il 10% addebitato

Questo è l'approccio che ho pensato per ora:

Quindi questo è quello che farò.

Quando ricevo una richiesta per aggiungere un prodotto al client, farei quanto segue:

SELECT * FROM 'table' WHERE scope = 4 && Product_ID = 12 && CLient_ID = 1

If match is not found or value has not been returned, then find this
SELECT * FROM 'table' WHERE scope = 3 && Product_ID = 12 

If match is not found or value has not been returned, then find this:
SELECT * FROM 'table' WHERE scope = 2 &&  && CLient_ID = 1


If match is not found or value has not been returned, then find this
SELECT * FROM 'table' WHERE scope = 1

Qual è il modo migliore per gestire questa situazione? Se è di qualche interesse userò ASP.NET MVC 5 con questo.

Grazie mille e scusa per la lunga domanda.

    
posta Jose A 08.10.2014 - 23:07
fonte

0 risposte

Leggi altre domande sui tag