Newsgroup: it.comp.www.php
Titolo: MySQL+Php: Gestire i prezzi di un prodotto

Salve,
 
mi è venuto un dubbio definiamolo logico su come gestire il prezzo di un 
prodotto tipo in un e-commerce.
 
Ipotizziamo che il prodotto A costi x, ipotizziamo che tale prodotto 
potrebbe a volte avere uno sconto del 20% quindi x-20, poi a quel 
prodotto dovremmo aggiungere le spese si spedizione e l'iva, morale 
della favola a livello di database come e dove mettereste il tutto?
 
Ipoteticamente il field prezzo della tabella "prodotto" potrebbe 
relazionarsi con le tabelle esterne "sconti", "consegna" ed "iva".
 
Nelle tabelle esterne chiamate sconti potrei gestire varie percentuali 
di sconti come nella tabella consegna varie tipologie/costi di consegna 
e nella tabella iva quando cambia l'iva editerei il valore e lo cambierei.
 
Morale della favola nel back panel in corrispondenza del prodotto "A" 
avrei il relativo prezzo sotto la scelta dell'eventuale sconto, sotto il 
tipo di spedizione ed infine il calcolo del prezzo totale con l'iva.
 
Però con che logica riesco a far la somma del prezzo 
scontato+consegna+iva e non del prezzo+prezzo scontato+consegna+iva?
 
Saluti!
GabrieleMax


partendo dal fato che la domanda con PHP non c'entra nulla e neanche con 
Mysql.
 
il primo problema che incontri nel tuo ragionamento è l'IVA, tu indichi 
di cambiarla a mano e relazionare con il resto, in questo caso ti perdi 
lo storico sia delle varie IVA, e potresti sballare il tutto nel momento 
in cui fai un interrogazione di un prodotto venduto x tempo fa quando 
era applicata un altra iva (questo sempre se relazioni e non scrivi 
l'iva applicata di conseguenza).
 
poi come ottenere il tutto dipende da come preferisci, se avere x 
tabelle e relazionarle tutte oppure averne poche.
 
nel tuo caso farei circa 7 tabelle.
 
le [] sono informazioni non necessarie, solo per dare ulteriori esempi
 
- prodotto (con tutte le caratteristiche tecniche + id_prodotto)
- prezzo_vendida (id_prezzo_vendita, id_prodotto, data_inizio, 
data_fine, id_iva, ecc..) perche il prezzo di vendita cambia nel tempo
- IVA (id_iva, percentuale, ecc..)
- sconto (id_sconto, percentuale, [desc, oppure id_sconto, 
importo_sconto, volume_sconto, tipo_sconto], ec...)
- trasporto (id_trasporto, sconto, [km, distanza, maggiorazione, tabella 
aci ecc..])
- fattura (id_fattura, tot_imponibile_fattura(somma dei singoli 
imponibili), iva_totale (somma dell'iva dei singoli item),  tot_fattura, 
[id_trasporto se il costo è sul totale e non sul singolo oggetto]), 
tot_da_pagare (totale_fattura+trasporto+varie ed eventuali)
- dett_fattura (id_fattura, id_prodotto, id_prezzo_vendita, id_sconto, 
[id_trasporto se fatto sul singolo item], [imponibile(prezzo_vendita - 
prezzo_sconto)], [iva(il valore non la percentuale) ] , 
prezzo_ante_imposte (imponibile+[trasporto sempre se sul singolo 
item]+....], prezzo_tot_vendita(prezzo_ante_imposte + iva)], ecc...
 
ma ci sono diversi modi per gestire il tutto, poi molto dipende se hai 
necessita di gestire le code, categorie di sconto(per volumi di vendita, 
per periodi, coupon, promozioni, ecc.), gruppi di vendita(singoli, 
colli, frammentati, ecc..),semilavorati, lavorati , le rimanenze, la 
gestione LIFO, FIFO ecc..
non esiste una soluzione universale, tutto dipende dall'obbietivo, se un 
classico e semplice e-commerce, scaricatene uno, e studia come è fatto.
 
 
 
Ciao
 


Errata corrige,
 
- prezzo_ante_imposte (imponibile+[trasporto sempre se sul singolo 
item]+....] è sbagliato, togli il trasporto, le imposte si calcolano 
sull'oggetto non sul complessivo (rischi sanzioni).
il trasporto se non sbaglio ha la sua iva.
al più potresti includere il costo del trasporto sulla maggiorazione dei 
costi, prezzo_ante_imposte (imponibile + ulteriori_costi)
- sulla fattura la data.
 
il caso in cui il trasporto sia per singolo item rispetto ad un costo di 
trasporto generale di solito lo si applica quando il bene ha di SUO un 
costo di trasporto singolo (che ne so un mobile, un televisore, una 
poltrona, un armadio, ecc..), mentre per piccoli oggetti (libri, dvd, 
t-shirt ecc..) si tende a inserire un costo di trasporto sull'intera 
fattura (di solito si fa un unico pacco).
 
Ciao

 Ciao
 
Saluti!
GabrieleMax
 


stesso discorso di cui sopra perdi la tracciabilità di cosa hai venduto 
e a quanto.

chiedo da profano, se vendi un mobile ad un certo prezzo, e 
successivamente a quell'articolo gli cambi prezzo di vendita e magari ti 
cambia pure l'IVA, se te lo rimandano indietro (i15 gg di legge) come 
gestisci il tutto??
 
Ciao

L'e-commerce di Drupal gestisce molto bene la cosa: parte dal prezzo base, poi aggiunge (o sottrae) gli altri importi come forma di 'optional': tasse varie (iva), sconti, etc..
 
Fondamentale è che, a fini contabili, ti salvi gli oggetti acquistati da un'altra parte, in una tabella dove i prezzi non li aggiorni mai, così se cambia il prezzo del listino non ti va a variare la tabella con i dati "contabili",
 
Fondamentalmente ci vedo 4 tabelle:
1. Listino con prezzi base 
2. Variazioni: tasse, sconti, etc..
 
Al momento dell'acquisto prendi il prezzo base e, in base alle logiche del caso, aggiungi le variazioni che ti servono, e salvi nelle tabelle
3. Vendite, dove avrai una colonna per il prezzo base (a scopo di storico) e il prezzo finale (con applicate le variazioni), possibilmente con i 3 valori (imponibile, iva, totale) in modo da fregartene degli arrotondamenti.
4. Variazioni applicate all'oggetto venduto
 
La tabella 4 è un optional, ma a scopo di storico può essere molto utile quindi la terrei, vale lo stesso discorso tra tabella 1 e 2, se l'iva cambia tu dovresti sapere che l'oggetto venduto oggi aveva l'iva al 21 e domani al 22, per esempio.

 La tabella 4 č un optional, ma a scopo di storico puň essere molto utile quindi la terrei, vale lo stesso discorso tra tabella 1 e 2, se l'iva cambia tu dovresti sapere che l'oggetto venduto oggi aveva l'iva al 21 e domani al 22, per esempio.
 
Grazie ancora per tutte queste dritte che rigirerň a chi di dovere!
 
GabrieleMax
 

 Ciao
 
Grazie ancora per le risposte!
Saluti!
GabrieleMax