U0
16/04/2008 17:44
Campo libero:
|
U0
Sulle varianti degli articoli, poiche' i prezzi base potrebbero non essere uguali, vengono copiati direttamente i prezzi netti. Se vuoi gestire gli sconti dovresti impostare lo sconto manualmente per ogni variante. In automatico altrimenti non e' attualmente possibile
|
|
Dragonfire
17/04/2008 07:57
|
Dragonfire
Avevo pensato in alternativa di usare una formula che prendesse dati già noti: 100-(100*(prezzo scontato/prezzo listino)) che mi dà appunto lo sconto. Ho trovato dove inserire "script/formula" nel report editor ma non sembra funzionare (nemmeno mettendo come formula un singolo dato). Va bene qua? (vedi screen)
Poi mi basta inserirla in una colonna di fianco e dirgli di mostrare il risultato solo quando il valore nella colonna (sconto) è = 0
|
U0
17/04/2008 08:29
Campo libero:
|
U0
Si, e' un sistema che puo' funzionare Qual'e' lo script che hai scritto? Uno script deve essere qualcosa tipo questo http://www.readypro.it/scriptingreference/calcolo_del_margine_partendo_d.htm
|
|
Dragonfire
17/04/2008 09:23
|
Dragonfire
Questo funziona:
prezzoListino = RowItem.CustomField(90) prezzoScontato=RowItem.CustomField(49) scontoVarianti=100-(100*(prezzoScontato/prezzoListino))
cella=scontoVarianti Rdy.ResponseWrite(cella)
Ha solo due problemi: 1)quando lo lancio ready mi dice: Errore nell'esecuzione dello script Riga : 3 Colonna : 0 Source : Errore di run-time di Microsoft VBScript Dettaglio errore : Tipo non corrispondente: 'prezzoScontato' Però poi lo calcola giusto  2)Il risultato è con parecchi decimali (quale è il comando che restituisce l'intero più vicino?)
|
U0
17/04/2008 10:48
Campo libero:
|
U0
Prova cosi'
prezzoListino = Rdy.ToDouble(RowItem.CustomField(90)) prezzoScontato = Rdy.ToDouble(RowItem.CustomField(49)) scontoVarianti = 100 - (100*(prezzoScontato/prezzoListino)) Rdy.ResponseWrite(Rdy.FormatCurrency(scontoVarianti, "0.0") & "%")
|
|
Dragonfire
17/04/2008 13:58
|
Dragonfire
Mi dà questo errore:
Errore nell'esecuzione dello script Riga : 3 Colonna : 0 Source : Errore di run-time di Microsoft VBScript Dettaglio errore : Overflow Per il resto i conteggi vanno bene, ci sono ancora una marea di decimali
EDIT: ho tolto le cifre decimali modificando l'ultima stringa:
Rdy.ResponseWrite(Rdy.FormatCurrency(scontoVarianti, "0.2") & "%") in teoria da manuale dovrebbe essere 0 (ovvero zero cifre decimali) proprio come avevi messo tu, ma chissà perchè funziona col 2..
|
|
Dragonfire
17/04/2008 14:29
|
Dragonfire
Lavorando un pò sugli allineamenti, sulla non visualizzazione degli Zeri e sulla dimensione delle colonne sono arrivato a questo (vedi screen):
Per ora mi accontento, intanto ci studio su e appena riesco a fare finire tutto dentro la stessa colonna posto il codice.
|
|
Dragonfire
17/04/2008 15:41
|
Dragonfire
Come promesso posto il codice fatto e finito per essere la prima volta che uso VBScript non c'è male...
Cella=""
prezzoListino=Rdy.toDouble(RowItem.CustomField(90)) prezzoScontato=Rdy.toDouble(RowItem.CustomField(49)) scontoArticolo=RowItem.CustomField(45)
scontoVarianti=100-(100*(prezzoScontato/prezzoListino))
If scontoArticolo>0 Then ' se esiste lo sconto per l'articolo uso quello Cella=scontoArticolo
Else Cella=(Rdy.FormatCurrency(scontoVarianti,2))
End If
Rdy.ResponseWrite(Cella)
Rimane il problema di overflow: Errore nell'esecuzione dello script Riga : 7 Colonna : 0 Source : Errore di run-time di Microsoft VBScript Dettaglio errore : Overflow ma non so proprio da cosa derivi quindi pazienza...
|
U0
17/04/2008 20:17
Campo libero:
|
U0
Citazione: Rimane il problema di overflow: Prima di eseguire scontoVarianti=100-(100*(prezzoScontato/prezzoListino))
dovresti controllare che prezzoListino sia maggiore di 0 Perche' se prezzoListino = 0 viene eseguita una divisione per 0 e questa non e' una operazione ammessa.
|
|
Dragonfire
18/04/2008 08:38
|
Dragonfire
Citazione: dovresti controllare che prezzoListino sia maggiore di 0
Grazie mille, era proprio quello, non volendo inserire un altro IF di controllo dello zero, ho risolto con una soluzione "lamer";) :
scontoVarianti=100-(100*(prezzoScontato/(prezzoListino+0,001))) In questo modo non può essere mai zero (a meno di non aver prezzo di listino -0,001  ATTENZIONE: 0,001 per i nostri articoli va bene, ma se usate articoli con parecchi decimali aumentate il numero di zeri dopo la virgola!!!
|
|
Dragonfire
21/05/2008 13:18
|
Dragonfire
Fatto questo script per lo sconto rimane il problema che sulle varianti il prezzo che dovrebbe essere semplicemente DEIVATO è in realtà già il prezzo scontato, e quindi compaiono righe dove il prezzo prima e dopo lo sconto è il medesimo. Questo l'ho risolto con questo script: 
Cella=""
prezzoListino=Rdy.toDouble(RowItem.CustomField(90)) prezzoScontato=Rdy.toDouble(RowItem.CustomField(49)) prezzoDeivatoVar=Rdy.toDouble(RowItem.CustomField(52)) Colore=RowItem.CustomField(305)
If prezzoListino=prezzoScontato Then Cella=prezzoDeivatoVar
Else Cella=(Rdy.FormatCurrency(prezzoListino,-2))
End If Rdy.ResponseWrite(Cella) Spero di essere stato utile BYE Edit del 27-mag-2008: corretto numero di decimali dopo la virgola
|
U0
21/05/2008 21:16
Campo libero:
|
U0
Grazie x il contributo 
|