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