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 Script | Eveniment |
Fisa | Actiune |
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.