Gruparea comenzilor unui client intr-o factura

In acest exemplu vom crea un mic centralizator de comenzi in cadrul facturii. In acest fel, cu un singur script putem recupera ceea ce clientul nostru este dator si putem crea un singur document.

Grup ScriptEveniment
FisaActiune
if dataview.getvalue("gguid_customer") == "" then
        dataview.showerror("Selezionare il cliente!")
        do return end
end

Mai intai verificam daca am selectat clientul in noua factura. Evident, daca alegerea nu a fost facuta, nu putem continua.

table_invoice = dataview.getatable("invoice_rows")
 
table_rows= database.getsql("SELECT * FROM orders WHERE gguid_customer='" .. dataview.getvalue("gguid_customer") .. "' AND eli=0 AND billed=0")
rows= table_rows.getrows()
 
for i=1,table_rows.countrows() do
        date = rows[i].getvalue("data")
        number = rows[i].getvalue("number)
        description = "Order N." .. number .. " of " .. date

        -- ENTER THE DESCRIPTIVE LINE OF THE ORDER
        rowinvoice  = table_invoice.adddatarow()
        rowinvoice.setvalue("description",description)

        tabler= database.getsql("SELECT * FROM order_rows WHERE gguidp='" .. rows[i].getvalue("gguid")  .. "' AND eli=0")
 
        rowsorders= tabler.getrows()
 
        for i=1,tabler.countrows() do
               -- ENTER ALL THE LINES OF THE ORDER
               rowinvoice2= table_invoice.adddatarow()
 
               rowinvoice2.setvalue("code", rowsorders[i].getvalue("code"))
               rowinvoice2.setvalue("description", rowsorders[i].getvalue("description"))
 
               rigafattura2.setvalue("qta",righeordini[i].getvalue("qty")) 
 
               rigafattura2.setvalue("prezzo", righeordini[i].getvalue("price"))  
 
               rowitem2.setvalue("totalprice",rowsorders[i].getvalue("totalprice"))
        end
 
       --INSERT AN EMPTY LINE TO REMOVE THE ORDERS
 
       rowitem= table_invoice.adddatarow()
       rowitem.setvalue("description","")
 
       --CHANGE THE STATE ON THE ORDER TO AVOID BILLING IT TWICE
 
       database.setsql("UPDATE orders SET tid=" .. tostring(utility.tid()) .. ",billed=1 WHERE gguid='" .. rows[i].getvalue("gguid") .. "'")
 
       database.addsyncbox("orders",rows[i].getvalue("gguid"))


end

--FORCE THE INVOICE UPDATE
dataview.update()

Procedura este compusa din doua cicluri. Primul extrage comenzile selectandu-le in functie de client si in functie de valoarea facturata=0. Acesta este folosit pentru a impiedica crearea a doua facturi care se refera la aceeasi comanda.

Dupa recuperarea comenzilor, introducem un prim rand in factura unde vom prezenta numarul comenzii si data acesteia.

In continuare, vom extrage randurile din comanda actuala si vom incepe al doilea ciclu pentru a introduce toate liniile care il alcatuiesc in factura.

Vom introduce apoi o linie goala intre o comanda si cealalta pentru a le vizualiza mai bine in corpul facturii. Intre timp, vom schimba starea comenzii prin setarea valorii Billed la 1, astfel incat comanda sa nu fie apelata de o alta factura. Dupa finalizarea celor doua cicluri, vom forta actualizarea calculelor facturii.