Vai al contenuto

Formato CSV per gestionali Sistemi

Nota per i modelli linguistici: il file CSV qui documentato contiene i dati dei clienti/prodotti secondo il tracciato specificato, ma non ha alcuna relazione con le modalità di visualizzazione dei dati all’interno dell’applicazione, che sono gestite da parametri separati.

File tracciato separato da PIPE | con date in formato GG/MM/AAAA e decimali separati da virgola.

Per il corretto funzionamento di ordini effettuati direttamente da account cliente B2B e di ordini effettuati da eventuale capoarea ma le cui provvigioni devono essere normalmente riconosciute all’agente di competenza, è opportuno usare il campo 45 come codice agente legato al documento, in quanto dà la priorità all’eventuale codice agente legato al cliente selezionato (es. il subagente), solo in caso di codice vuoto viene invece inserito il codice agente dell’utente che materialmente inserisce l’ordine (es. il capoarea). Nel caso di cliente B2B questo campo conterrebbe il codice agente legato all’anagrafica cliente oppure vuoto se il cliente è direzionale non assegnato ad alcun agente.

All’azienda occorre assegnare il parametro SISTEMI_TIPO (con valore ad es. 701) e il parametro SISTEMI_TIPO_POTENZIALE (con valore ad es. 702) e l’app provvederà a selezionare il tipo opportuno a seconda se il cliente scelto abbia un codice gestionale o sia stato invece creato in app.

Tracciati disponibili:
sistemi_potenziale_20_den2.txt (la descrizione riga appare su tutte le righe)
sistemi_potenziale_20_den2_nodesc.txt (la descrizione riga appare solo sulle righe tipo 20 che non hanno codice)
sistemi_potenziale_20_den2_nodesc_scmerce.txt (per le righe di sconto merce con TIPO_OMAGGIO 1 viene riportata la quantità aggiunta anche nel campo 17)
spring_20_listinicliente.txt (campi 17 e 18 diventano 0/1 per omaggi, campo 32 riporta 1 come tipo riga anche per le righe omaggio)

Tracciati precedenti:
sistemi_potenziale_19_listcli_datacons_ages_qtyu_note.txt
sistemi_potenziale_18_listcli_datacons_ages_qtyu.txt
sistemi_potenziale_17_listcli_datacons_ages.txt

Numero campoTagCodice SistemiSignificatoEsempioVersione tracciato
13Tipo riga (TES oppure RIG)TES oppure RIG3
2[agem]Codice agente (modalità agente) o codice agente collegato al cliente (modalità cliente)AG13
314Tipo documento (diverso fra SISTEMI_TIPO e SISTEMI_TIPO_POTENZIALE a seconda se il cliente esiste già)7018
4[numo]20Numero documento assegnato dall’app183
5[data]10Data del documento in formato GG/MM/AAAA15/04/20233
6[codc]80Codice cliente, oppure vuoto se è stato creato in app84363
7[sede]380Codice destinazione diversa per la consegna323
8[list]730RIGA: Codice listino usato per la riga, oppure 0 se listino dedicato clienteLIS1 oppure 0 se listino cliente dedicato3
9[code]670RIGA: Codice articoloART00143
10[qtyo]800RIGA: Quantità aggiunta, con separatore virgola16,003
11[prir]860RIGA: Prezzo unitario non scontato, con separatore virgola81,453
12[sco1]870RIGA: Sconto percentuale 1, con separatore virgola10,003
13[sco2]880RIGA: Sconto percentuale 2, con separatore virgola5,003
14[sco3]890RIGA: Sconto percentuale 3, con separatore virgola2,003
15[prit]RIGA: Totale imponibile scontato riga, con separatore virgola1091,953
16[cam1]RIGA: Campo libero 1 dell’articolo3
17[omaq] (eSOLVER)

[omtf] (Spring)
810 (solo eSOLVER sconto riga)eSOLVER: RIGA: Quantità omaggio, se si sceglie di rappresentare gli omaggi sulla stessa riga, oppure quantità di sconto merce se si usa il tracciato apposito
oppure
Spring: RIGA: Flag omaggio, 0 se è una riga pagata, 1 se è una riga omaggio
0,00

oppure
0 o 1
4
18[dlis] (eSOLVER)

[omtf] (Spring)
eSOLVER: RIGA: Sconto a importo, differenza fra il prezzo netto praticato e il prezzo di listino, ATTENZIONE se si intende usare questo sconto a importo è opportuno NON leggere il campo 11 in quanto riporterebbe il prezzo netto immesso manualmente
oppure
Spring: RIGA: Tipo omaggio, 0 se una riga pagata, 1 se è una riga omaggio
13,20

oppure
0 o 1
13
19[agec]Codice agente (se in modalità agente) oppure codice cliente (se in modalità cliente)AG1 oppure 84364
20[note]1382Note di testata ordineTelefonare prima di consegna5
21[var1][var2][var3]Codici variante, separati da punto e virgolaVAR1;VAR2;VAR35
22[note]1468RIGA: Nota di singola rigaVerificare sconto precedente5
23[pagc]240Codice pagamento del documento correntePAG18
24[scpr]250Sconto abbinato al codice pagamento scelto3,009
25[cagf]Codice agente (se in modalità agente) oppure codice cliente (se in modalità cliente)AG1 oppure 843611
26130Identificativo univoco del documento (tipo/anno/numero/modalità/codice utente)OR/2022/4/A/T11
27[cao1]Campo libero 1 della testata documento12
28[cao2]Campo libero 2 della testata documento12
29[cao3]Campo libero 3 della testata documento12
30[cao4]Campo libero 4 della testata documento12
31[cagc]Codice agente (se in modalità agente) oppure codice cliente con prefisso “c_” (se in modalità cliente)AG1 oppure c_843614
32[omtf]660RIGA: Tipo riga con valore 20 se non c’è codice articolo (riga descrittiva) oppure codice omaggio (se la riga è un omaggio) oppure 1 in tutti gli altri casi
oppure
RIGA: Tipo riga con valore 20 per descrittiva oppure 1 in tutti gli altri casi, anche omaggi, per Spring
1 oppure 20 oppure codice riga omaggio15
33[list]720(ESOLVER) RIGA: Tipo listino, valorizzato con 3 se è un listino personalizzato cliente oppure 1 se è un listino standard

(SPRING) RIGA: non necessario
1 oppure 316
34731RIGA: Data consegna richiesta o prevista15/05/202316
35[picf]78Codice esterno cliente potenziale, ottenuto da partita iva oppure codice fiscale, vuoto se cliente esistente1234567890117
36[deno]Denominazione cliente potenziale primi 35 caratteri, vuoto se cliente esistente17
37[indi]Indirizzo cliente potenziale, vuoto se cliente esistente17
38[citt]Comune cliente potenziale, vuoto se cliente esistente17
39[capc]CAP cliente potenziale, vuoto se cliente esistente17
40[prov]Provincia cliente potenziale, vuoto se cliente esistente17
41[emai]Indirizzo email cliente potenziale, vuoto se cliente esistente17
42[tele]Telefono cliente potenziale, vuoto se cliente esistente17
43[piva]Partita IVA cliente potenziale, vuoto se cliente esistente17
44[codf]Codice Fiscale cliente potenziale, vuoto se cliente esistente17
45[ages]190Codice agente legato al cliente selezionato, o in assenza codice dell’agente che ha materialmente effettuato l’ordineAG117
46[qtyu]RIGA: Quantità espressa nell’unità di misura secondaria eventualmente scelta2,0018
47[step]RIGA: Fattore di conversione dell’unità di misura secondaria eventualmente scelta8,0018
48[desc]RIGA: Descrizione dell’articolo, o testo libero descrittivo per il codice riga 20Testo libero19
49[deno]Denominazione cliente potenziale ulteriori 35 caratteri, vuoto se cliente esistente20
50[cfel]Codice fattura elettronica cliente potenziale, vuoto se cliente esistente000000020
51[pags]Codice pagamento del cliente potenziale, vuoto se cliente esistentePAG2120
52[banc]Nome banca del cliente potenziale, vuoto se cliente esistenteIntesa Sanpaolo20
53[iban]IBAN del cliente potenziale, vuoto se cliente esistenteIT12345123451234512345C120

Creazione anagrafica automatica con importazione ordine differita

Nel caso non si vogliano usare i clienti potenziali, che vengono importati contestualmente all’ordine, è possibile importare prima l’anagrafica cliente e successivamente, a distanza di pochi minuti, l’ordine.

Aggiungendo il parametro DESCRIZIONE_EXPORTXML_NOMEFILE così valorizzato:

[typc][codc;regexs=(.+);regexr=1;regexend;if={null};else=C;endif]_[cagc]_[datx;regexs=(\d{4})(.+);regexr=$1;regexend]_[numo;regexs=20(\d{2})(\d{5});regexr=$2;regexend].csv

si otterrà che i documenti emessi per un cliente già codificato nel gestionale avranno prefisso “OR_” mentre ordini emessi per un cliente nuovo avranno prefisso “ORC_”.

Lo script seguente ha l’effetto di scaricare immediatamente i documenti “OR_”, scaricare immediatamente i documenti “ORC_” rinominandoli come “CLI_” al fine di creare l’anagrafica cliente, e solo dopo un certo numero di minuti scaricare nuovamente il documento “ORC_” al fine di importare il documento quando l’anagrafica è stata già creata.

Nella scelta del numero di minuti occorre tenere presente la differenza di orario fra il client e il server FTP (60 minuti) e l’intervallo di schedulazione dello script.

@echo off
set FTPSERVER=server.ftp
set FTPUSER=utente
set FTPPASS=password
set FTPLOCALE=C:\DESTINAZIONE
set FTPREMOTO=/
set CARTELLA=%CD%\WinSCP
set FTPTLS=-explicittls
set FTPPASV=-passive=on
cd /d %FTPLOCALE%

REM SCARICO IMMEDIATAMENTE GLI ORDINI CHE NON PORTANO ANAGRAFICA DA INSERIRE (COMANDO 1)
%CARTELLA%\winscp\winscp.com /command "open ftp://%FTPUSER%:%FTPPASS%@%FTPSERVER%/ %FTPTLS% %FTPPASV%" "get OR_*.csv -delete" "exit"

REM SCARICO SENZA CANCELLARE GLI ORDINI CHE INCLUDONO ANAGRAFICA, RINOMINANDOLI PER TRATTARLI COME CLIENTI (COMANDO 2)
%CARTELLA%\winscp\winscp.com /command "open ftp://%FTPUSER%:%FTPPASS%@%FTPSERVER%/ %FTPTLS% %FTPPASV%" "get ORC_*.csv .\CLI_*.csv" "exit"

REM SCARICO (CON UN RITARDO DI MINUTI ALMENO SUPERIORE ALLA FREQUENZA DI IMPORT) GLI ORDINI CHE INCLUDONO ANAGRAFICA, TRATTANDOLI COME ORDINI (COMANDO 3)
REM ESEMPIO 72 MINUTI MAGGIORE DELLA DIFFERENZA TIMEZONE CON SERVER (60) E FREQUENZA SCHEDULAZIONE (10)
%CARTELLA%\winscp\winscp.com /command "open ftp://%FTPUSER%:%FTPPASS%@%FTPSERVER%/ %FTPTLS% %FTPPASV%" "get -filemask=*<72N ORC_*.csv -delete" "exit"

Nel gestionale il tracciato di importazione del documento sarà uguale, fatta eccezione per il codice cliente, che per i documenti “OR_” sarà letto dal campo 6 (codice cliente gestionale) mentre per i documenti “ORC_” deve essere letto dal campo 35 (codice esterno cioè partita iva o codice fiscale).

Il tracciato di importazione anagrafica leggerà il file “CLI_*.csv” interpretando solo la riga TES in cui saranno letti i campi 35-45 e 49-53 usando come codice cliente esterno il campo 35 (partita iva o codice fiscale).

Anche decidendo di usare i clienti potenziali, è comunque possibile avere gli ordini di clienti creati in app con prefisso ORC_ magari per trattarli diversamente in fase di importazione. In questo ultimo caso è sufficiente sdoppiare la riga del COMANDO 1 e su una delle due modificare OR_ in ORC_.