Importazione di documenti
Importazione di documenti
In aggiunta alle funzioni JASCII di importazione
(ed esportazione), Jolly consente l'importazione specializzata di
documenti da sorgenti dati esterne.
Le sorgenti dati utilizzabili sono le seguenti:
NB: per importare documenti è necessario che siano contemporaneamente attivate le seguenti impostazioni:
- sul tipo di documento che si desidera importare
- sull'operatore che deve eseguire l'importazione
- sulla postazione di lavoro su cui l'importazione deve essere eseguita
XML
La lettura dei dati XML può avvenire o attraverso una procedura
personalizzata (tipicamente: interrogazione via DLL di una sorgente dati
esterna), o attraverso un file o attraverso la clipboard.
I dati XML devono contenere almeno due tipi di oggetti: DOCUMENTI e ARTICOLI,
e il secondo deve essere gerarchicamente dipendente dal primo. Tutti gli altri
oggetti saranno trascurati.
Il formato di importazione XML viene letto da un file di configurazione
(estensione predefinita: *.JXLM) contenente la mappatura dei campi XML sui campi
da importare. La sintassi del file di configurazione è la seguente (i campi in
grassetto sono obbligatorî):
| DOCUMENTI | ARTICOLI |
|---|---|
|
|
La doppia barra commenta il
resto della riga su cui si trova (in qualunque posizione).
I campi numerici devono contenere numeri, e i numeri devono essere privi
del separatore delle migliaia. Come separatore decimale è possibile utilizzare
indifferentemente la virgola o il punto.
Le date devono essere formattate come dd/mm/yy oppure dd/mm/yyyy.
Gli oggetti DOC_EXTERNAL_KEY e ART_EXTERNAL_KEY contengono le chiavi univoche di identificazione, riferite alla sorgente dati esterna, rispettivamente del documento e dell'articolo.
I campi SQLFIELD_CONTO e SQLFIELD_CODICE consentono - ove
necessario - di ricavare indirettamente il codice del conto e dell'articolo
attraverso un codice alternativo usato nella sorgente dati esterna.
Il loro valore rappresenta il nome del campo delle tabelle pconti e archivio_articoli
che contiene il valore rispettivamente indicato da CONTO e CODICE. Il valore
reale di CONTO e di CODICE vengono perciò determinati come:
select
PCO_str_codice FROM pconti WHERE [SQLFIELD_CONTO] = [CONTO]
select AA_str_codice FROM archivio_articoli WHERE [SQLFIELD_CODICE] = [CODICE]
Se i campi SQLFIELD_CONTO e SQLFIELD_CODICE non sono referenziati, il programma utilizza le primary keys delle tabelle pconti e archivio_articoli (PCO_str_codice e AA_str_codice).
I campi CONTO, PAGAMENTO_CODICE, LISTINO, CODICE, CODICE_IVA
e in generale tutti i codici, se specificati, deve contenere un valore valido ed esistente.
Se in Jolly il codice non esiste viene eseguita una ricerca sul codice
alternativo di importazione/exportazione (per i campi CONTO e CODICI i codici
alternativi sono SQLFIELD_CONTO e SQLFIELD_CODICE). Se non esiste neanche il
codice alternativo, l'importazione fallisce.
Fa eccezione il codice del tipo di pagamento: se il documento che si sta
importando non richiede necessariamente la presenza di un codice di pagamento
(ad esempio: gli ordini tipicamente non richiedono un codice, ma si accontentano
di una indicazione descrittiva), il tipo pagamento - anche se non esistente in
Jolly - sarà comunque accettato e considerato alla stregua di una mera
descrizione.
Il campo causale è un tipo di documento di jolly (table tipi_BDOC), e se presente deve avere un valore valido. Se non presente, viene desunto dal contesto in cui avviene l'importazione. Se non è possibile desumerlo, l'importazione fallisce.
BARCELLA ELETTROFORNITURE
E' possibile importare in Jolly documenti trasmessi dal fornitore Barcella Elettroforniture nel suo formato proprietario.
FILES DI TESTO (colonne fisse e CSV)
E' possibile importare in JOLLY documenti a partire da files di testo, sia a colonne fisse che in formato CSV (separato da virgole o tabulatori), creando un file di formato come descritto più sotto. Un esempio dei files di sintassi nei due casi (CSV/colonne fisse) è fornito nella seguente tabella.
| CSV (Comma Separated Values)
Seguendo il modello ideale di un file Excel, i dati da importare devono essere organizzati come segue: FILE DATI
FILE DI FORMATO
OPZIONI
|
COLONNE FISSE
I campi vengono identificati in base a colonne fisse. Vi sono i seguenti tipi di campo:
E' in generale possibile importare campi formati dall'unione di più
intervalli di dati e/o dati statici. Ad esempio: OPZIONI
|
|---|---|
OPZIONI COMUNI AD ENTRAMBI I
MODELLI DI IMPORTAZIONE
|
|
| // vedere esempio in BDOC-text-import.txt
TIPO-IMPORTAZIONE=CSV
// deve essere la prima istruzione valida |
TIPO-IMPORTAZIONE=COLONNE-FISSE La condizione (facoltativa) NUOVO-DOCUMENTO=condizione fa iniziare un nuovo documento su ogni riga per la quale la condizione è soddisfatta. Il comportamento default è che viene generato un unico documento per ogni file. La condizione (facoltativa) CONTIENE-ARTICOLO=condizione indica che la riga contiene (anche) un articolo. Il comportamento default è che ogni riga contiene un articolo. Le righe che non iniziano un documento e non contengono un articolo vengono ignorate. COLONNE
PREZZI E SCONTO |
FILES
DI TESTO (MRS/RHIAG)
E' prevista l'importazione di documenti i cui dati sono registrati su files di
testo formattati a colonne fisse.
Il file di testo deve contenere i dati degli articoli, mentre tutti i dati
relativi al documento sono indicati nel file di formato dell'importazione oppure
devono essere desunti dal contesto.
Ogni riga del file di testo rappresenta un articolo da inserire nel documento.
Il file di formato deve contenere una sezione per il DOCUMENTO ed una
sezione per gli ARTICOLI.
| SEZIONE DOCUMENTO | SEZIONE ARTICOLI |
|---|---|
| [DOCUMENTO] TIPODOC="ORD-CLI" // tipo documento; se assente viene desunto dal contesto CONTO="FIAT-SPA" VALUTA="EURO" LISTINO="FORNITORE" MAGAZZINO_1="SEDE" // magazzino principale MAGAZZINO_2="LAVORO" // magazzino secondario //MAGAZZINO_DB1= // primo magazzino d/base //MAGAZZINO_DB2= // secondo magazzino d/base IVA="0021" // voce IVA |
[ARTICOLI] =c(1,10) QTA=c(11,7,2) UM=c(23,2) CODICE_CLIFOR=c(101,10) // codice articolo secondo il cliente/fornitore DESCRIZIONE=c(100,20) PREZZO_UNITARIO=c(18,13,2) IMPORTO_RIGA=c(100,10,2) SCONTORIGA=c(31,5) // nel formato sconto accettato da JOLLY DATAMOV=c(50,8) // formato AAAAMMGG RIFERIMENTO_CLIFOR=c(100,10) // riferimento al documento originale |
Ogni campo può essere assegnato STATICAMENTE oppure letto dal file
di testo.
I campi della sezione documento sono tutti STATICI (non possono essere letti dal
file di testo), mentre i campi della sezione articoli possono essere assegnati
staticamente oppure essere assegnati in funzione di un range di colonne del file
di testo.
I campi obbligatori sono indicati in grassetto. Certi campi (ad esempio il campo
MAGAZZINO_1) possono essere resi obbligatori in funzione del tipo di documento
da importare.
Su ogni riga, tutto ciò che segue la sequenza "//" è considerata
commento ed ignorata.
Tutti i campi possono essere assegnati in base ad un
range di colonne oppure possono essere assegnati staticamente ad un valore
specificato.
Ove possibile i valori sono integrati con i valori caricati dagli archivi di
Jolly (ad esempio dall'archivio articoli).
| ASSEGNAZIONE DA FILE (range di colonne) | ASSEGNAZIONE STATICA |
|---|---|
dove START = colonna iniziale |
|
CLAUSOLE SPECIALI
E' possibile utilizzare le seguenti clausole speciali.
CODICE_SQL_FIELD=SQL_field
Viene usato per indicare che il codice articolo non fa riferimento alla primary
key della tabella archivio_articoli, ma ad un altro campo (tipicamente il codice
usato dal cliente / fornitore). Il valore del campo CODICE viene quindi
ricercato sul campo SQL_field anzichè sul campo AA_str_codice
FILTER=c(start,len)="valore"
*** vengono considerate le sole righe che rispettano la condizione specificata
FIXED_LEN=nnn // lunghezza obbligatoria
della stringa di dati
MIN_LEN=nnn // lunghezza minima della
stringa di dati
MAX_LEN=nnn // lunghezza massima della
stringa di dati
DISTANZA_MAX_DT_MOVIMENTAZIONE=nnn // la data di
movimentazione del documento importato non può risalire ad oltre DISTANZA_MAX_DT_MOVIMENTAZIONE
giorni