Creare uno storico di costi per gli articoli

In questo esempio mostrerò come creare uno storico dei costi degli articoli acquistati e in questo modo per ogni articolo se ne potrà analizzare l’andamento.

Gruppo ScriptEvento
SchedaPost Salvataggio

Questo script può essere inserito sull’evento di post-salvataggio dell’articolo. È necessario ricordarsi di cambiare o realizzare i campi che si differenziano dal vostro database e di creare la tabella Costiarticoli.

tabellacosti = database.getsql("SELECT * FROM costiarticoli WHERE gguidp='" ..
dataview.getvalue("gguid") .. "' ORDER by data DESC")

Per prima cosa creiamo un oggetto Tabellacosti recuperando tutte le righe da Costiarticoli e controlliamo che il valore del campo gguidp corrisponda al valore del gguid dell’articolo attuale.

È possibile anche cercare tutte le righe con i codici articoli uguali a quello attuale, dipende da come sono state costruite le tabelle. Tuttavia nel caso in cui si decida di cambiare codice, il collegamento ai costi andrà automaticamente perso. Al contrario, usare il gguid garantisce che, cambiando tutti i dati dell’articolo, non venga perso lo storico costi.

È da notare che la stringa sql ordina in maniera discendente le righe dei costi, in questo modo potremo essere sicuri che la prima riga corrisponda all’ultimo costo salvato.

Voto    = false
nr      = tabellacosti.countrows()
righe   = tabellacosti.getrows()

Creiamo una variabile Voto che utilizzeremo per controllare se bisogna salvare il costo dell’articolo oppure no. Estraiamo poi anche il numero di righe e le righe stesse da Tabellacosti.

if nr == 0 then
        voto = true
else
        --procedo a controllare i valori attuali
        costo = righe[1].getvalue("costo")
        if costo ~= dataview.getvalue("costo") then
               voto = true
        end
end

Se il numero di righe è uguale a zero e quindi non sono mai stati salvati i costi, allora impostiamo la variabile Voto a Vero.

Se ci sono delle righe bisogna estrapolare il costo dalla prima riga che conterrà l’ultimo valore salvato, poiché questi vengono ordinati in modo discendente.

Se il costo è diverso da quello attuale dell’articolo, imposteremo la variabile Voto a Vero.

if voto == true then
        grigliacosti = dataview.getatable("costiarticoli")
        riga = grigliacosti.adddatarow()
        riga.setvalue("gguidp",dataview.getvalue("gguid"))
        riga.setvalue("data",utility.getnow())
        riga.setvalue("ind",database.getind("costiarticoli"))
        riga.setvalue("costo",dataview.getvalue("costo"))
        riga.save()
end

Se Voto è uguale a Vero, allora procediamo a salvare i valori. Per prima cosa aggiungiamo una nuova riga a Grigliacosti, ossia la tabella aggiuntiva all’interno della scheda articolo. Successivamente impostiamo il gguidp al gguid dell’articolo per trovarlo alla prossima ricerca, selezioniamo la data attuale, l’indice di riga e il valore del costo. Infine salviamo la riga.

Avendo usato il gguidp per mantenere la relazione, sarà possibile usare la tabella Costiarticoli come tabella aggiuntiva per avere a disposizione nella scheda dell’articolo tutto il suo storico.