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.