Buongiorno, Marika.
sapevamo che non era facile :). Dunque, io farei uno script del genere (le righe che iniziano con # sono commenti):
vai al formato[DDT_righe]
Esegui ricerca [//intervallo date E ddt_righe::campo_calcolo_non_fatturato>0]
# cerca solo le righe ddt non fatturate in un certo periodo (ad esempio data_ddt=*/3/2017 cerca tutte le righe ddt di maggio)
if[get(controtrovati)=0]
esci dallo script
end if
# se non ha trovato nulla, la procedura finisce qui.
ordina i record [ddt_righe::id_cliente, ddt_righe::ID_DDT]
# dovendo creare le fatture per tutti i clienti dobbiamo ordinare i ddt per cliente in primis e per numero/data subito dopo.
vai a record[primo]
loop
# se è un nuovo fornitore o il primo va creata la fattura e memorizzato l’id per popolare le righe.
if([evuoto($cliente) or ($cliente≠ ddt_righe::id_cliente)]
imposta variabile[$cliente; ddt_righe::id_cliente]
vai al formato[fatture]
nuovo record/richiesta
imposta campo[fatture::id_cliente; $cliente]
imposta variabile[$fattura; fatture::ID]
vai al formato[originale]
end if
# trasfetisco i dati .
imposta variabile[$id; ddt_righe::ID]
imposta variabile[$descr; ddt_righe::descrizione]
imposta variabile[$qta; ddt_righe::quantità]
imposta variabile[$prezzo; ddt_righe::prezzo]
vai al formato[fatture_righe]
nuovo record/richiesta
imposta campo[fatture_righe::ID_fattura; $fattura]
imposta campo[fatture_righe::ID_righe_DDT; $id]
imposta campo[fatture_righe::descrizione; $descr]
imposta campo[fatture_righe::quantità; $qta]
imposta campo[fatture_righe::prezzo; $prezzo]
vai al formato[originale]
vai a record[successivo, esci dopo l’ultimo]
End loop
vai al formato[fatture]
dettagli campi:
ddt_righe::id_cliente -> la chiave estenra del cliente a cui è intestato il DDT, che va “ereditato” dalla testata DDT
ddt_righe::id_ddt -> la chiave esterna della testata ddt
fatture_righe::id_fattura-> la chiave esterna della testata fatture
ddt_righe::ID – >chiave primaria della tabella ddt_righe
fatture::id_cliente -> la chiave esterna del cliente a cui è intestato la fattura
fatture::ID -> chiave primaria della tabella fatture
fatture_righe::ID_righe_DDT -> chiave esterna per la riga ddt che va usata per la relazione con le righe DDT, tipo righe_DDT::ID=fatture_righe::ID_righe_DDT e su cui si basa il successivo
ddt_righe::campo_calcolo_non_fatturato -> campo calcolato che “conta” se una riga è già stata fatturata o meno. se hai messo in relazione le righe ddt con le righe fattura, un calcolo potrebbe essere ddt_righe::quantità – somma(righefatturecorrelate::quantità)
facci sapere.
.g.