IdeaWellness
operazioni negli script.. problema dell'apice posto nelle cifre sopra i 999
Salve, con la presente siamo a richiedere assistenza per un problema su un semplice script.
di seguito descrivo la situazione:
Abbiamo creato un report FAC SIMILE di una fattura quale ritenuta di imposta alla fonte, quindi con delle formule ricaviamo dall'imponibile l'importo, scorporiamo la ritenuta irpef e l'imposta di bollo per poi ricavare il netto a pagare..
e fin qua nessun problema, tramite i seguenti script:
CALCOLO LA RITENUTA Ritenuta = 0 Ritenuta = (((RowItem.CustomField(60) / 100) * 23) / 100) * 78 Response.Write(Rdy.FormatCurrency(Ritenuta))
CALCOLO L'IMPOSTA DI BOLLO Ritenuta2 = 0 Ritenuta2 = RowItem.CustomField(60)/100*23/100*78 Bollo = 0 if (Ritenuta2)>77.47 Then Bollo = 2 Else Bollo = 0 End If Response.Write(Rdy.FormatCurrency(Bollo))
CALCOLO IL NETTO A PAGARE Imponibile = 0 Imponibile = RowItem.CustomField(60) Ritenuta3 = 0 Ritenuta3 = Imponibile/100*23/100*78 Bollo3 = 0 Netto = 0 if (Ritenuta3)>77.47 Then Bollo3 = 2 Else Bollo3 = 0 End If Netto = Imponibile-Ritenuta3-Bollo3 Response.Write(Rdy.FormatCurrency(Netto))
Il tutto funziona egregiamente finchè l'importo più alto (imponibile) non supera le 1000 euro.. se invece viene superato questo importo.. le formula non funzionano più!! mi viene dato messaggio di errore e non viene visualizzato nulla.. dall'errore capisco che è un problema di tipi di dati incompatibili..
approfondendo ho capito che il problema è l'apice che viene inserito da ready per definire le migliaia!!! quindi invece che avere un 1000,00 € abbiamo un 1'000,00 euro questo apice mi manda in palla tutti gli script..
pertanto vi chiediamo una soluzione a tale problema, probabilmente vi sarà una script, o qualche linea di codice per convertire questo numero con apice in un formato numerico.. cosi da poterlo usare nelle formule, per poi poterlo visualizzare in output di nuovo con l'apice..
sapendo bene che la le proprieta' CustomField(xx) restituiscono sempre delle stringhe e quindi non vanno utilizzate direttamente in calcoli matematici come negli script che abbiamo fatto e che invece andrebbe effettuata una conversione/casting esplicito in un numero utilizzando la funzione Rdy.toDouble(xx) quindi ad esempio, al posto di Ritenuta2 = RowItem.CustomField(60)/100*23/100*78 dovremmo utilizzare Ritenuta2 = Rdy.toDouble(RowItem.CustomField(60))/100*23/100*78
ma il problema rimane comunque.. in allegato lo script e l'errore
Quindi chiediamo vostro supporto per la soluzione definitiva a questo problema. Grazie Andrea
|