Newsgroup: it.comp.appl.access
Titolo: Progettare listino vendita dinamico partendo da listino acq dinamico

Ciao a tutti,
so che è una domanda che non vuol dire niente. Mi spiego meglio. Ho un
db. Il db mi calcola il costo di un prodotto.
Il prodotto è formato da:
1) articoli (dei quali ho il costo ricavato dalle materie prime, x le
quali c'è un listino giornaliero)
2) lavorazioni (costi fissi)
3) costi vari   (costi fissi)
Come vedrete sotto, in una maschera io faccio i calcoli per calcolare
il prezzo di vendita del prodotto. Dovrei però creare un report che
in  automatico che:
a)filtri tutti i prodotti in base al cliente
b) mi permetta di assegnare un listino acquisti costi materie prime
c) ricalcoli tutti i prezzi di vendita, dandomi la possibilità di
preservare il margine iniziale oppure gestire il valore + alto.
Il punto A e B lo faccio tramite una maschera che filtri prima il
cliente, e poi si prende il valore del listino scelto, ma come faccio
a ricalcolare tutti i prezzi di vendita?
La domanda è: mi conviene fare una query di creazione tabella? Dove
ogni volta creo una tabella nuova per ogni listino?
Questa è la query che mi calcola il costo degli articoli:
SELECT TBL_DART.dart_distid, TBL_DART.dart_id, TBL_ARTUM.artum_desc,
TBL_ART.art_desc, TBL_MP.mp_desc, TBL_DIST.dist_data,
TBL_CSTMP.cstmp_data AS DataCosti, TBL_DART.dart_qta,
(([cstmp_costo]*[cstmp_perc])+[cstmp_costo]) AS cstmpbase,
([cstmpbase]+[art_costo€]) AS cstartbase,
(([cstartbase]*[art_coeff])) AS cstartmm,
([cstartmm]*[dart_qta]) AS cstarticolo
FROM TBL_MP INNER JOIN ((TBL_CSTMP INNER JOIN TBL_DIST ON
TBL_CSTMP.cstmp_data=TBL_DIST.cstmp_data) INNER JOIN (TBL_ARTUM INNER
JOIN (TBL_ART INNER JOIN TBL_DART ON
TBL_ART.art_id=TBL_DART.dart_artid) ON
TBL_ARTUM.artum_id=TBL_ART.art_artumid) ON
TBL_DIST.dist_id=TBL_DART.dart_distid) ON
(TBL_MP.mp_id=TBL_CSTMP.cstmp_mpid) AND
(TBL_MP.mp_id=TBL_ART.art_mpid);
Una volta ricavato il costo degli articoli,ho una maschera dove ho il
calcolo completo del prezzo di vendita del prodotto
CALCOLI X CALCOLARE IL PREZZO DI UNA DISTINTA
TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " & Me!dist_id)
Costi generali su acquisti %:	TBL_DIST.dist_cstgenacq
dist_valcstgenacq =([TOT_MATPRIME]*[dist_cstgenacq])
dist_tot2 =([TOT_MATPRIME]+[dist_valcstgenacq])
dist_cstlavo  (Fanno riferimento alla somma automatica della
sottomaschera)
dist_cstvari   (Fanno riferimento alla somma automatica della
sottomaschera)
dist_tot3	=([dist_tot2]+[dist_cstlavo]+[dist_cstvari])
Scarto %:		TBL_DIST.dist_scarto
dist_valscarto	=([dist_tot3]*[dist_scarto])
Trasporto €:		TBL_DIST.dist_trasp
dist_tot4	=([dist_tot3]+[dist_valscarto]+[dist_trasp])
Margine di ricarico: 	TBL_DIST.dist_marg
dist_valmarg	=([dist_tot4]*[dist_marg])
margine
If Me!margfly > Me!dist_tot1 Or Me!margfly = Me!dist_tot1 Then
  If Me!margfly > Me!dist_tot1 Then
      Me!margine = Me!dist_valmarg
      MsgBox "Il costo delle materie prime è aumentato, da " & euro(Me!
dist_tot1) & " è diventato " & euro(Me!margfly)
    Else
      Me!margine = Me!dist_valmarg
      MsgBox " Il costo delle materie prime è rimasto invariato"
   End If
 Else
 Me!margine = Me!dist_valmargfissato
 MsgBox "Il costo delle materie prime è diminuito, da " & euro(Me!
dist_tot1) & " è diventato " & euro(Me!margfly)
End If
Totale Prezzo di vendita:  dist_tot5 =([dist_tot4]+[margine])
Provvigioni: TBL_DIST.dist_prov
dist_valprov =([dist_tot5]*[dist_prov])
Totale Scorporato da provvigioni: dist_tot6 =([dist_tot5]-
[dist_valprov])
-----------------------------------------------------------------------------------------------------------
E' la mia prima prova e e non so bene come organizzare il discorso...
Grazie in anticipo,
Samantha


Ecco, x precisare il casino di cui sopra
il listino acquisti è dinamico, perchè io associo il listino acquisti
al calcolo del costo articolo in base alla data.
Listino acquisti = TBL_CSTMP
Campo data     = TBL_CSTMP.cstmp_data
La testata del prodotto è la tabella TBL_DIST, che contiene il campo
TBL_DIST.cstmp_data che mi filtra il listino acquisti e mi permette di
prendere il costo corretto delle materie prime
...

 ha scritto nel messaggio
news:1171466567....@k78g2000cwa.googlegroups.com...
La testata del prodotto è la tabella TBL_DIST, che contiene il campo
TBL_DIST.cstmp_data che mi filtra il listino acquisti e mi permette di
prendere il costo corretto delle materie prime
...
Io non c'ho capito una mazza, cmq, un po' a naso, tu devi crearti una
tabella transazioni dove salvi i dati dinamici della particolare vendita e
che puoi recuperare in caso di ricerca
Antonio

 Antonio
non c'iai capito nulla x colpa mia, nemmeno io ho tanto le idee chiare
una tabella transazioni... per tutti i prodotti che sono stati creati
per quel particolare cliente....
ok ora vedo di sbattere la testa contro il muro per il tempo
necessario, e poi ti fo sapè,
Samantha

 Antonio
-- 
-- 
Massimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access

 Antonio
non c'iai capito nulla x colpa mia, nemmeno io ho tanto le idee chiare
una tabella transazioni... per tutti i prodotti che sono stati creati
per quel particolare cliente....
No, per la singola vendita
Antonio

Dopo la lauta cena di ieri sera, e i fiumi di vino bianco ... è
bastato un bicchiere, stamattina alle ore 05:00 ero sveglia con un
caldo atroce, e molto tempo e pensare al mio problema (perlomeno ho
salvato il muro)
Nel mio DB non gestisco le vendite.
Devo solo calcolare il costo di prodotti. I prodotti sono composti da
materie prime, quali il rame, che variano di giorno in giorno. Di qui
la necessità di avere un listino costi basato su data, cambio la data
e ho il costo del, ad. es., tubo di rame, il cui peso incide lo 0,005
al mm, per la lunghezza che sono 30 cm.
perciò il costo del rame del 01/01/07  al Kg. è di 6,15
6,15 * coefficiente 0,005 =  0,03075€ al mm.
0,03075x30mm. = 0,9225€
Questo è il costo di oggi del mio tubo di rame = articolo composto da
materie prime
Lavorazioni = A  questo tubo lo lavo 0,10€, lo curvo 0,005, lo saldo
0,048 = €0,153
Costi vari  = imballaggio 0,00258€ + levigatura 0,589€ = totale
0,59158
Totale (dist_tot3) = 0,9225 + 0,153+ 0,59158 = 1,66658
A questo poi devo aggiungere la % di scarto (3%)  e il costo di
trasporto (0,45) = €2,16657 [dist_tot4]
Il margine/utile 2%  =2.16657+(*2%)=   €0,043314
Prezzo di vendita = 2,16657+0,043314=    2.20990€
Logico che, se il rame diminuisce di prezzo, il cliente chiederà una
diminuzione di prezzo. Se il rame oggi vale 6.05, costo di materia
prima è sceso da 0,9225 a 0,9075  (il nuovo dist_tot4 è €2,1516424)
che in termini di margine vale €0,0430328,
il nuovo prezzo vendita sarebbe 2,1946752.
Il furbone quindi cosa fa? Mi chiede di calcolare il nuovo costo delle
materie prime, ma il margine non verrà + calcolato, ma mi tengo il
valore precedente, perciò  2,1516424 + €0,043314 = Prezzo di vendita
€2,1949564
Perciò ho preservato il margine, ma ho diminuito il prezzo in base al
calo dei costi del rame.
Ora, non ha produzione standard, fa tutto su misura, perciò mille
codice diversi per tanti clienti.
Cosa devo fare io?
Devo permettergli di aggiornare il costo dei prezzi delle materie
prime.
Fargli decidere se tenere il margine precedente, o ricalcolarlo
Ma se ha 1000 prodotti per cliente, non deve entrare in ogni prodotto.
L'idea era quella di fargli selezionare per cliente, l'elenco
prodotti.
Da casella combinata sceglie la data di listino che + gli aggrada.
Gli presento i prezzi vecchi, quelli nuovi, gli dico se è aumentato o
diminuito, e gli faccio decidere se mantenere il margine o meno.
A questo punto, lui pigia un tasto, stampa il report che contiene il
listino prezzi di vendita aggiornato.
Spero sia + chairo ora
Grazie,
Samantha


Per iniziare,
Il calcolo del costo dell'articolo ((=rame x coefficiente)xlungh.) lo
faccio tramite query
Q_Smcosti
SELECT TBL_DART.dart_distid, TBL_DART.dart_id, TBL_ARTUM.artum_desc,
TBL_ART.art_desc, TBL_MP.mp_desc, TBL_DIST.dist_data,
TBL_CSTMP.cstmp_data AS DataCosti, TBL_DART.dart_qta,
(([cstmp_costo]*[cstmp_perc])+[cstmp_costo]) AS cstmpbase,
([cstmpbase]+[art_costo€]) AS cstartbase,
(([cstartbase]*[art_coeff])) AS cstartmm,
([cstartmm]*[dart_qta]) AS cstarticolo
FROM TBL_MP INNER JOIN
((TBL_CSTMP INNER JOIN TBL_DIST ON
TBL_CSTMP.cstmp_data=TBL_DIST.cstmp_data)
 INNER JOIN
   (TBL_ARTUM INNER JOIN
    (TBL_ART INNER JOIN TBL_DART ON
TBL_ART.art_id=TBL_DART.dart_artid)
   ON TBL_ARTUM.artum_id=TBL_ART.art_artumid)
 ON TBL_DIST.dist_id=TBL_DART.dart_distid) ON
(TBL_MP.mp_id=TBL_CSTMP.cstmp_mpid) AND
(TBL_MP.mp_id=TBL_ART.art_mpid);
Come vedi, la maggior parte sono campi calcolati.
Il primo passo è quello di ricavare questo costo articolo
(cstarticolo) tramite macro, per tutti i prodotti di quel cliente.
Perciò dovrei fare una macro dentro un ciclo for per nr. record...
solo che non l'ho mai fatto.
Ora faccio una ricerca su google
Samantha