In questo esempio creeremo un piccolo raggruppatore di ordini all’interno della fattura. In questo modo con un singolo script possiamo recuperare quello che ci deve il nostro cliente e creare un singolo documento.
Gruppo Script | Evento |
Scheda | Azione |
if dataview.getvalue("gguid_cliente") == "" then dataview.showerror("Selezionare il cliente!") do return end end
Per prima cosa controlliamo di aver selezionato il cliente nella nuova fattura. Ovviamente se non è stata eseguita la scelta non possiamo continuare.
tabellafattura = dataview.getatable("fattura_rows") tabella= database.getsql("SELECT * FROM ordini WHERE gguid_cliente='" .. dataview.getvalue("gguid_cliente") .. "' AND eli=0 AND fatturato=0") righe = tabella.getrows() for i=1,tabella.countrows() do data = righe[i].getvalue("data") numero = righe[i].getvalue("numero) descrizione = "Ordine N." .. numero .. " del " .. data --INSERISCO LA RIGA DESCRITTIVA DELL'ORDINE rigafattura = tabellafattura.adddatarow() rigafattura.setvalue("descrizione",descrizione) tabellarighe= database.getsql("SELECT * FROM ordini_rows WHERE gguidp='" .. righe[i].getvalue("gguid") .. "' AND eli=0") righeordini = tabellarighe.getrows() for i=1,tabellarighe.countrows() do --INSERISCO TUTTE LE RIGHE DELL'ORDINE rigafattura2 = tabellafattura.adddatarow() rigafattura2.setvalue("codice", righeordini[i].getvalue("codice")) rigafattura2.setvalue("descrizione", righeordini[i].getvalue("descrizione")) rigafattura2.setvalue("qta",righeordini[i].getvalue("qta")) rigafattura2.setvalue("prezzo", righeordini[i].getvalue("prezzo")) rigafattura2.setvalue("prezzototale",righeordini[i].getvalue("prezzototale")) end --INSERISCO UNA RIGA VUOTA PER STACCARE GLI ORDINI rigafattura = tabellafattura.adddatarow() rigafattura.setvalue("descrizione","") --CAMBIO LO STATO ALL'ORDINE PER EVITARE DI FATTURARLO DUE VOLTE database.setsql("UPDATE ordini SET tid=" .. tostring(utility.tid()) .. ",fatturato=1 WHERE gguid='" .. righe[i].getvalue("gguid") .. "'") database.addsyncbox("ordini",righe[i].getvalue("gguid")) end --FORZO L'AGGIORNAMENTO DELLA FATTURA dataview.update()
La procedura è composta da due cicli. Il primo estrae gli ordini selezionandoli in base al cliente e in base al valore fatturato=0. Questo viene utilizzato per impedire di creare due fatture che riportino lo stesso ordine.
Una volta recuperati gli ordini, inseriamo una prima riga nella fattura dove riporteremo il numero dell’ordine e la sua data.
Successivamente estrarremo le righe dell’ordine attuale e inizieremo il secondo ciclo per inserire tutte le righe che lo compongono in fattura.
Inseriremo poi una riga vuota tra un ordine e l’altro per visualizzarli meglio all’interno del corpo della fattura. Nel frattempo cambieremo lo stato dell’ordine impostando il valore di Fatturato a 1, in modo tale che l’ordine non venga richiamato da un’altra fattura. Finiti i due cicli forzeremo l’aggiornamento dei calcoli della fattura.