Calcolo del guadagno approssimativo per ogni linea di un documento

Creato il: 05.05.2021
Questo script calcola il prezzo medio a magazzino (FIFO) per ogni articolo di un documento.
Poi calcola il guadagno come differenza tra il prezzo di vendita inserito sul documento ed il prezzo medio a magazzino.

Quantita = Rdy.toDouble(RowItem.CustomField(30))
PrezzoFIFO = Rdy.toDouble(RowItem.CustomField(400))
TotaleLinea = Rdy.toDouble(RowItem.CustomField(61))
 
Response.Write(Rdy.FormatCurrency(TotaleLinea-PrezzoFIFO*Quantita))

Questo invece calcola il prezzo ultimo acquisto per ogni articolo di un documento.
Poi calcola il guadagno come differenza tra il prezzo di vendita inserito sul documento ed il prezzo ultimo acquisto.

Quantita = Rdy.toDouble(RowItem.CustomField(30))
IdArticolo=Rdy.toLong(RowItem.CustomField(10))
PrezzoUltimo = Rdy.toDouble(Rdy.Product(IdArticolo).CustomField(820))
TotaleLinea = Rdy.toDouble(RowItem.CustomField(61))
 
Response.Write(Rdy.FormatCurrency(TotaleLinea-PrezzoUltimo*Quantita))

Questo invece il prezzo massimo di acquisto preso dal tab Fornitori per ogni articolo di un documento.

Quantita = Rdy.toDouble(RowItem.CustomField(30))
IdArticolo = Rdy.toLong(RowItem.CustomField(10))
PrezzoMaxAcq = Rdy.toDouble(Rdy.Product(IdArticolo).CustomField(800))
PrezzoMaxTot = PrezzoMaxAcq * Quantita
TotaleLinea = Rdy.toDouble(RowItem.CustomField(61))
 
Response.Write(Rdy.FormatCurrency( TotaleLinea - PrezzoMaxTot ))

Nel caso di documenti che contengono composizioni lo script sara' piu' complesso perche' dovra' tenere conto dei componenti presenti in ogni composizione.
Nell'esempio seguente sulle righe di testa delle composizioni viene effettuato un calcolo in base al prezzo medio a magazzino (FIFO) di ogni componente:

Option Explicit
 
Dim Quantita, PrezzoFIFO, TotaleLinea
Dim IdComposizione
Dim RigaComposizione
Dim TotCosto
IdComposizione=Rdy.toLong(DocRow.CustomField(190))
 
If IdComposizione>0 Then
   If Ucase(DocRow.CustomField(5))="TESTA COMPOSIZIONE" Then
       TotCosto = 0
       For Each RigaComposizione In DocRow.Doc.DocRows
           If Rdy.toLong(RigaComposizione.CustomField(190))=IdComposizione Then
               If Ucase(RigaComposizione.CustomField(5))<>"TESTA COMPOSIZIONE" Then
                   Quantita = RigaComposizione.Quantity
                   PrezzoFIFO = RigaComposizione.Product.InventoryValueFIFO
                   TotCosto = TotCosto+Quantita*PrezzoFIFO
               End If
           End If
       Next
       TotaleLinea = Rdy.toDouble(DocRow.CustomField(61))
       Response.Write(Rdy.FormatCurrency(TotaleLinea-TotCosto))
   End If
Else
   ' Riga standard
Quantita = DocRow.Quantity
   PrezzoFIFO = DocRow.Product.InventoryValueFIFO
   TotaleLinea = Rdy.toDouble(DocRow.CustomField(61))
   Response.Write(Rdy.FormatCurrency(TotaleLinea-PrezzoFIFO*Quantita))
End If

Login