Esportare su file le fatture di acquisto e di vendita di AltaStagione

Il seguente script SQL permette di esportare su file di testo i dati di acquisto e di vendita di AltaStagione in un periodo.

Tali informazioni sono utili:

1) come statistiche (i file contenenti i dati esportati possono essere salvati/aperti con il blocco note di Windows/aperti con Excel)

2) per agganciarsi ad un programma di contabilità generale/fiscale (il quale dovrà avere una procedura di importazione dati da file di testo/csv)

3) come aiuto per compilare lo spesometro (AltaStagione non è un software di contabilità fiscale e non genera di per sè file utilizzabili fiscalmente, per cui eventuali regole specifiche di inclusione/esclusione di particolari documenti, stabilite dal fisco per il periodo in questione richiederanno una modifica manuale dei file generati dallo script)

-- INIZIO FILE


-- INIZIO PARAMETRI

/* 
definire di seguito i parametri, secondo la sintassi:
[nomeparametro]=valore
			
Esempi:
-------
esempio con date:                 [data]='2014-12-31'
esempio con stringhe:             [nomecliente]='rossi'
esempio con importi con decimali: [importomin]=1234.56
esempio con nomi di file:         [fileesportato]="c:\file.txt"
ATTENZIONE, quando si specificano dei nomi di file:
ASSICURARSI DI SPECIFICARE CARTELLE DOVE SI ABBIANO I PERMESSI IN SCRITTURA
(ad esempio la cartella C:\ non è accessibile in scrittura in Windows 8!)
*/

[data1]='2014-01-01'
[data2]='2014-12-31'
[file_dettaglio_acquisti]="c:\dettaglio_acquisti.txt"
[file_dettaglio_vendite]="c:\dettaglio_vendite.txt"
[file_riepilogo_fornitori]="c:\riepilogo_fornitori.txt"
[file_riepilogo_clienti]="c:\riepilogo_clienti.txt"

-- FINE PARAMETRI


-- INIZIO SCRIPT SQL

select codfor,nomefor,numfat,dataf,totimp as imponibile,totiva as iva,totfatt as totale,tipodoc 
 into "\memory\dettaglio_acquisti"
 from fatacq 
 where dataf>=[data1] and dataf<=[data2]
 order by dataf;

update "\memory\dettaglio_acquisti"
 set imponibile=-imponibile, iva=-iva, totale=-totale
	where tipodoc=2; -- 2=note di credito


select codfor,nomefor,
       cast(null as varchar(40)) as via, 
       cast(null as varchar(5)) as cap, 
       cast(null as varchar(30)) as citta,
       cast(null as varchar(2)) as provincia,
       cast(null as varchar(16)) as codfisc, 
       cast(null as varchar(11)) as piva,
       sum(imponibile) as totimp,sum(iva) as totiva, sum(totale) as totfatt,count(*) as quantidoc
 into "\memory\riepilogo_fornitori"
 from "\memory\dettaglio_acquisti"
 group by codfor 
 order by nomefor;

update "\memory\riepilogo_fornitori" rf
 set rf.via=f.via, rf.cap=f.cap, rf.citta=f.citta, rf.provincia=f.provincia, rf.codfisc=f.codfisc, rf.piva=f.piva
 from "\memory\riepilogo_fornitori" rf
 join forn f
 on rf.codfor=f.rifint;

select numero,data,cast(null as integer) as codcli,nomecli,codfisccli,pivacli,cast(0 as money) as imponibile,aliqiva,cast(0 as money) as iva,importo as totale
 into "\memory\dettaglio_vendite"
 from ricfatt 
 where tipodoc=3 and data>=[data1] and data<=[data2];

update "\memory\dettaglio_vendite" dv
 set dv.codcli=c.rifint
 from "\memory\dettaglio_vendite" dv
 join cli c
 on dv.pivacli=c.piva;

update "\memory\dettaglio_vendite" set iva=round(totale-totale/(1+aliqiva/100.0),2);
update "\memory\dettaglio_vendite" set imponibile=round(totale-iva,2);

select codcli,nomecli,
       cast(null as varchar(40)) as via, 
       cast(null as varchar(5)) as cap, 
       cast(null as varchar(30)) as citta,
       cast(null as varchar(2)) as provincia,
       codfisccli as codfisc,pivacli as piva,
       sum(imponibile) as totimp,sum(iva) as totiva,sum(totale) as totfatt,count(*) as quantidoc
 into "\memory\riepilogo_clienti"
 from "\memory\dettaglio_vendite"
 group by codcli
 order by nomecli;

update "\memory\riepilogo_clienti" rc
 set rc.via=c.via, rc.cap=c.cap, rc.citta=c.citta, rc.provincia=c.provincia
 from "\memory\riepilogo_clienti" rc
 join cli c
 on rc.codcli=c.rifint;

export table "\memory\dettaglio_acquisti" to [file_dettaglio_acquisti]
 delimiter ';' 
 with headers 
 date 'dd/mm/yyyy'
 time 'hh:mm'
 decimal ',';

export table "\memory\dettaglio_vendite" to [file_dettaglio_vendite]
 delimiter ';' 
 with headers 
 date 'dd/mm/yyyy'
 time 'hh:mm'
 decimal ',';

export table "\memory\riepilogo_fornitori" to [file_riepilogo_fornitori]
 delimiter ';' 
 with headers 
 date 'dd/mm/yyyy'
 time 'hh:mm'
 decimal ',';

export table "\memory\riepilogo_clienti" to [file_riepilogo_clienti]
 delimiter ';' 
 with headers 
 date 'dd/mm/yyyy'
 time 'hh:mm'
 decimal ',';

drop table if exists "\memory\dettaglio_acquisti";
drop table if exists "\memory\dettaglio_vendite";
drop table if exists "\memory\riepilogo_fornitori";
drop table if exists "\memory\riepilogo_clienti";
-- FINE SCRIPT SQL


-- FINE FILE

(una volta selezionato, premere CTRL+C per copiare il testo negli appunti)

Come si utilizza lo script ?

Questi i passaggi da eseguire:

1) copiare lo script di sopra negli appunti di Windows (cliccare sul pulsante rosso, quindi premere CTRL+C)
2) aprire ExtraUtil dall'icona sul desktop

quindi, in ExtraUtil:

3) andare nella pagina SQL
4) premere il pulsante "Inserisci o modifica lo script SQL"
5) incollare lo script copiato (tasto destro > incolla, oppure CTRL+V)
6) impostare correttamente i parametri
7) premere il pulsante "Conferma"
8) premere il pulsante "Esegui lo script SQL"

Se tutto è stato fatto correttamente, verrà visualizzato un messaggio di conferma di "Script SQL eseguito".
Se invece dovessero esserci errori, verificare di che errori si tratta, premere il pulsante "Inserisci o modifica lo script SQL", correggere gli errori, quindi tornare al punto 7).

Come impostare i parametri dello script

Il significato dei parametri è intuitivo:

[data1]='2014-01-01'
[data2]='2014-12-31'

rappresentano il periodo da considerare. Le date devono essere rappresentate come aaaa-mm-gg (anno di 4 cifre, trattino, mese di due cifre, trattino, giorno di due cifre), e devono essere comprese tra apici semplici (NON virgolette).

Gli altri quattro parametri fanno riferimento ai file che risulteranno dall'esportazione:

[file_dettaglio_acquisti]="c:\dettaglio_acquisti.txt"
[file_dettaglio_vendite]="c:\dettaglio_vendite.txt"
[file_riepilogo_fornitori]="c:\riepilogo_fornitori.txt"
[file_riepilogo_clienti]="c:\riepilogo_clienti.txt"

i nomi dei file e relativi percorsi devono essere indicati per esteso, compresi tra virgolette (NON apici nè doppi apici, MA VIRGOLETTE!) ; assicurarsi di avere i permessi di scrittura per la cartella che si indica come destinazione (ad esempio la cartella C:\ è accessibile sotto XP, ma NON lo è sotto Windows 8).

Che tipo di risultati fornisce lo script ?

Lo script fornisce quattro file in uscita:

a) l'elenco dei documenti di acquisto, in ordine di data, con i dati completi di ciascun fornitore (in caso di note di credito, imponibile/iva/totale sono valori negativi)

b) l'elenco dei documenti di vendita, in ordine di data, con i dati completi di ciascun cliente

c) l'elenco, ordinato alfabeticamente, di tutti i fornitori con, per ciascuno, i totali imponibile/iva/totale/numero di documenti in archivio

d) l'elenco, ordinato alfabeticamente, di tutti i clienti con, per ciascuno, i totali imponibile/iva/totale/numero di documenti in archivio