Crearea unui istoric de costuri pentru articole

In acest exemplu vom arata cum se poate crea un istoric al costurilor articolelor cumparate si, in acest fel, pentru fiecare articol va putea fi analizata evolutia.

Grup ScriptEveniment
FisaSalvare ulterioara

Acest script poate fi introdus in evenimentul post-salvare al articolului. De retinut: trebuie modificate sau create campurile care se diferentiaza de baza dumneavoastra de date si creat tabelul Costarticole!

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

Mai intai, va fi creat un obiect cost_table, preluand toate liniile din cost_items si se va verifica daca valoarea campului gguidp corespunde valorii GGUID a articolului curent.

De asemenea, este posibila cautarea tuturor randurilor cu aceleasi coduri de articol ca si cel actual, depinde de modul in care au fost construite tabelele. Cu toate acestea, in cazul in care se decide schimbarea codului, link-ul catre costuri se va pierde automat. Dimpotriva, folosirea GGUID-ului garanteaza ca, schimband toate datele articolului, istoricul costurilor nu se pierde.

Trebuie mentionat faptul ca sirul SQL sorteaza randurile de costuri in ordine descrescatoare, in acest fel putem fi siguri ca primul rand corespunde ultimului cost salvat.

vote    = false
nr = cost_table.countrows()
rows = cost_table.getrows()

Cream o variabila Vote pe care o vom folosi pentru a controla daca trebuie salvat costul articolului sau nu apoi, extragem si numarul liniilor si liniile insele din Tabelcosturi.

if nr == 0 then
        vote = true
else
        -- proceed to check the current values
        cost = rows[1].getvalue("cost")
        if cost ~= dataview.getvalue("cost") then
               vote = true
        end
end

Daca numarul de linii este egal cu zero si, prin urmare, costurile nu au fost niciodata salvate, atunci setam variabila vote pe true.

Daca exista linii, costul trebuie extras din prima linie, care va contine ultima valoare salvata, deoarece acestea sunt sortate descendent.

In cazul in care costul este diferit de cel actual al articolului, vom seta variabila votepe true.

if vote == true then
        gridcost = dataview.getatable("cost_items")
        row = gridcost.adddatarow()
        row.setvalue("gguidp",dataview.getvalue("gguid"))
        row.setvalue("data",utility.getnow())
        row.setvalue("ind",database.getind("cost_items"))
        row.setvalue("cost",dataview.getvalue("cost"))
        row.save()
end

Daca voteeste egal cu true, atunci vom continua sa salvam valorile. In primul rand, adaugam un nou rand la Grilacosturi, adica tabelul suplimentar din cadrul fisei articolului. Apoi setam gguidp pe GGUID-ul articolului pentru a-l gasi la urmatoarea cautare, selectam data curenta, indexul randului si valoarea costului. La final salvam randul.

Deoarece a fost utilizat gguidp-ul pentru a mentine relatia, va fi posibila utilizarea tabelului Costarticole ca si tabel suplimentar pentru a avea la dispozitie in fisa articolului, tot istoricul sau.