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
Scheda
Evento
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.