Importazione Listini Vendita
In questo documento verrà spiegato come Importare listini fornitori all'interno di Fluentis tramite l'utilizzo di un foglio elettronico.
Questa importazione è possibile, grazie all'utilizzo dei BizLink Parameters in quanto ogni qualvolta verrà processata una riga, essi saranno richiamati.
Come aprire l'importazione tramite foglio elettronico
Cliccare su Strumenti (di default è situata nel lato destro di Fluentis).
Cliccare sulla sezione BizLink
Cliccare su Importazione On Demand > Anagrafiche > Importazione Articoli e Listini di Vendita come in figura sotto.
Sezione Data
In questa sezione andremo a inserire i dati che verranno poi resi permanenti tramite salvataggio nella base di dati di Fluentis.
Ora a video viene visualizzato il foglio elettronico per l'importazione.
Da questo punto si possono prendere varie strade:
- Importare il foglio elettronico già compilato, File > Open.
- Aggiungere le varie colonne facendo copia e incolla dal listino salvato nel nostro pc.
- Salvare questo file (File > Salva) nel nostro pc, per poi andare ad aggiungerci i vari dati e reimportarlo successivamente in Fluentis (vedi punto 1). Questo potrebbe essere molto utile per passare il template, del foglio elettronico per l'importazione, da compilare per i futuri listini che ci invieranno i fornitori.
- Aggiungere manualmente i campi.
ATTENZIONE: se abbiamo un foglio elettronico salvato sul nostro pc, esso deve seguire lo schema del foglio in figura sopra. Ossia lo stesso ordine di colonne, tipo di dato ecc… Quest'ultimi sono spiegati nel dettaglio al paragrafo successivo.
Inserimento campi
Quando viene inserito un campo vanno tenute in considerazione molte cose tra cui tipo, lunghezza massima, richiesto ecc…
Indicazioni generali:
- Se il campo è scritto in rosso è un campo obbligatorio
- Se il nome della cella è evidenziato in verde è una sezione
- Se il nome della cella è evidenziato in giallo è un campo
- Campo: indica se è obbligatorio o meno l'inserimento
- Tipo: indica il tipo del campo
- Formattazione Excel: indica la formattazione Excel consigliata per evitare inserimenti sbagliati, vedi alla fine documento Consigli e avvertenze utili.
- Lunghezza: indica se il campo ha un limite di caratteri da rispettare
- Descrizione: breve descrizione del campo
Esempio: esempio reale di cosa poter scrivere in quel campo
- Mapping table/colonna: se presente indica del rispettivo campo la mappatura nel database, per approfondire vedi alla fine documento Consigli e avvertenze utili.
Dati articolo:
Classe:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: /
- Descrizione: codice riferito alla classe dell'articolo
Esempio: “1” corrisponde a semilavorati, “IMB” corrisponde a imballi
- Mapping table/colonna: select MBDC_Classe from MB_Classi
Codice:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: /
- Descrizione: codice di riferimento all'articolo
Esempio: 02030508
Descrizione:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: /
- Descrizione: descrizione articolo, potrebbe corrispondere anche al codice
Esempio: pallina da tennis sensibile alla rotazione, può corrispondere al codice articolo
Unità di misura:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: 3 caratteri
- Descrizione: codice riferito alla misura utilizzata per l'articolo in questione
Esempio: “cm” corrisponde a centimetri, “UDC” corrisponde a bancale
- Mapping table/colonna: select MBUM_Codice from MB_UnitaMisura
IVA:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: 3 caratteri
- Descrizione: codice riferito alla misura utilizzata per l'articolo in questione
Esempio: “22” corrisponde al 22% di iva, “944” Esente art. 40 c. 4 bis DL 331
- Mapping table/colonna: select MBIV_Code from MB_iva
Cat Merc:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: 3 caratteri
- Descrizione: codice riferito alla categoria merce dell'articolo in questione
Esempio: “206” corrisponde a collanti, “211” corrisponde a materie prime
- Mapping table/colonna: select MBCM_Codice from MB_CatMerceologica
Fatt acq:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: 10 caratteri
- Descrizione: codice riferito al tipo di fattura emessa dell'articolo in questione
Esempio: “4” corrisponde ad acquisto semilavorati, “1” corrisponde a materie prime
- Mapping table/colonna: select MBFA_TipoFatt from mb_TipoFattAcq
Fatt vend:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: 10 caratteri
- Descrizione: codice riferito al tipo di fattura emessa dell'articolo in questione
Esempio: “4” corrisponde ad acquisto semilavorati, “1” corrisponde a materie prime
- Mapping table/colonna: select MBFA_TipoFatt from mb_TipoFattVend
Nomenc. Intra:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: 50 caratteri
- Descrizione:
Esempio: “32049000” corrisponde a coloranti
- Mapping table/colonna: select INCN_CodNomencl from IN_CodNomenc
Barcode:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: /
- Descrizione: codice a barre dell'articolo in questione
Esempio: ABC-1234
Tipo lotto:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: 2 caratteri
- Descrizione: tipo lotto di cui fa parte l'articolo
Esempio: “4” corrisponde ad acquisto semilavorati, “1” corrisponde a materie prime
Dati listino:
Prezzo:
- Campo: obbligatorio
- Tipo: decimale
- Formattazione Excel: valuta, simbolo nessuno
- Lunghezza massima: /
- Descrizione: prezzo a listino dell'articolo
Esempio: “10.99”, “123.45”
Unità misura:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: /
- Descrizione: serve per definire il prezzo rispetto alla quantità (es. prezzo al kilo, prezzo al metro quadro)
Esempio: “kg” corrisponde a kilogrammi
- Mapping table/colonna: select MBUM_Codice from MB_UnitaMisura
Quantità:
- Campo: non obbligatorio
- Tipo: decimale
- Formattazione Excel: numero, posizione decimali = 2
- Lunghezza massima: /
- Descrizione: quantità dell'articolo a cui è riferito il prezzo precedente
Esempio: 500
Tipo scaglione Qty-Val-PxQ:
- Campo: non obbligatorio
- Tipo: string
- Formattazione Excel: testo
- Lunghezza massima: /
- Descrizione: Indica se i valori scaglioni applicati sono a quantità, valore o prezzo per quantità. Di solito è utilizzato quello a quantità ossia: data una tot. quantità, applica lo sconto del x%
Esempio: Qty, Val, PxQ
Sconti:
Sconto1:
- Campo: non obbligatorio
- Tipo: decimale
- Formattazione Excel: numero, posizione decimali = 2
- Lunghezza massima: /
- Descrizione: sconti possibili applicabili
Esempio: “50+10” sul totale della riga viene effettuato un primo sconto del 50% e sul nuovo totale un ulteriore sconto del 10%
Stessa identica cosa per gli altri due sconti, cambia solo il valore dello sconto.
Sconti a qta (Tipo Scaglione ‘Qty'):
Sconto1:
- Campo: non obbligatorio
- Tipo: decimale
- Formattazione Excel: numero, posizione decimali = 2
- Lunghezza massima: /
- Descrizione: sconto applicato se viene acquistata un data quantità dell'articolo in questione
Esempio: 10
Quantità1:
- Campo: non obbligatorio
- Tipo: decimale
- Formattazione Excel: numero, posizione decimali = 2
- Lunghezza massima: /
- Descrizione: quantità minima necessaria per avere il rispettivo sconto
Esempio: 550
Stessa identica cosa per gli altri due sconti e quantità, cambia solo il corrispettivo valore.
Sconti a valore (Tipo Scaglione ‘Val'):
Sconto1:
- Campo: non obbligatorio
- Tipo: decimale
- Formattazione Excel: numero, posizione decimali = 2
- Lunghezza massima: /
- Descrizione: sconto applicato se supera determinato imponibile di riga
Esempio: 20
Valore1:
- Campo: non obbligatorio
- Tipo: decimale
- Formattazione Excel: numero, posizione decimali = 2
- Lunghezza massima: /
- Descrizione: imponibile minimo necessario per avere il rispettivo sconto
Esempio: 950
Stessa identica cosa per gli altri due sconti e valori.
Prezzo per quantita (Tipo Scaglione ‘PxQ'):
Prezzo1:
- Campo: non obbligatorio
- Tipo: decimale
- Formattazione Excel: numero, posizione decimali = 2
- Lunghezza massima: /
- Descrizione: prezzo unitario applicato se superata una determinata quantità
Esempio: 3.99
Quantità1:
- Campo: non obbligatorio
- Tipo: decimale
- Formattazione Excel: numero, posizione decimali = 2
- Lunghezza massima: /
- Descrizione: quantità minima necessaria per avere il rispettivo prezzo unitario
Esempio: 250
Stessa identica cosa per gli altri due prezzi e relative quantità, cambia solo il rispettivo valore.
Altri dati:
Note:
- Campo: non obbligatorio
- Tipo: stringa
- Formattazione Excel: testo
- Lunghezza massima: /
- Descrizione: note aggiuntive
Esempio: non esporre ai raggi solari
- Mapping table/colonna: select MBNC_Codice from MB_NoteCodificat
BizLink Parameters
Questi parametri serviranno per processare le righe inserite nella sezione Data. Come si può notare dall'immagine, alcuni campi sono già precompilati ma nulla ci vieta di modificarli.
1 BizLink Spreadsheet:
- Campo: da non inserire/non toccare
2 Lingua:
- Campo: obbligatorio
- Tipo: string
- Descrizione: codice Iso code relativo alla lingua
Esempio: “it-IT” rappresenta la lingua italiana, “en-US” rappresenta la lingua inglese in America.
3 Società:
- Campo: obbligatorio
- Tipo: string
- Descrizione: è un campo precompilato in quanto prende i valori già all'interno di Fluentis, si possono vedere nell'angolo in alto a sinistra.
Esempio: “1” corrisponde alla società demo
- Mapping table/colonna: Select MBSC_Code from MB_Soc
4 Divisione:
- Campo: obbligatorio
- Tipo: string
- Descrizione: come per la società viene precompilato
Esempio: “1” corrisponde alla sede legale, “2” alla sede operativa di Milano
- Mapping table/colonna: select MBDP_Code from MB_Dep
5 Nazione:
- Campo: obbligatorio
- Tipo: string
- Descrizione: nazione in cui si trova la divisione per cui è stato importato il listino
Esempio: “GB” corrisponde a Gran Bretagna, “USA” corrisponde agli Stati Uniti
- Mapping table/colonna: select MBNZ_Codice from MB_Nazioni
6 Tipo Barcode:
- Campo: obbligatorio solo se nella sezione data si ha inserito il barcode di almeno un articolo
- Tipo: string
- Descrizione: serve per indicare il tipo di barcode utilizzato
Esempio: “39” corrisponde al COD39
- Mapping table/colonna: select MBBC_Codice from MB_BarCode
7 Natura listino (GEN-CUST):
- Campo: obbligatorio
- Tipo: string
- Descrizione: serve per indicare se il listino è standard o custom. GEN di solito viene indicato per i listini che possono essere passati da cliente a cliente tanto saranno uguali. Se invece è CUST corrisponde a un listino personalizzato per il cliente ossia appositamente creato per il cliente di cui viene inserito conto e sottoconto inseriti nei parametri.
Esempio: “GEN” corrisponde a generale, “CUST”
- Mapping table/colonna:
8 Tipo listino:
- Campo: obbligatorio
- Tipo: string
- Descrizione: serve per indicare il tipo di listino, da inserire se natura listino = ”GEN” altrimenti non va inserito
Esempio: “GEN” corrisponde a generale, “PRO” corrisponde a promozionale
- Mapping table/colonna: select MBLV_List from MB_LisVen
9 Conto:
- Campo: obbligatorio
- Tipo: string
- Descrizione: conto del cliente, mastro del cliente. Se il listino è custom, conto e sottoconto verranno creati come indicato nei rispettivi parametri. Se è generale non va inserito
Esempio: “1701” il quale ha 3 sottoconti (vedi sotto)
- Mapping table/colonna: select MBPC_Conto from MB_PiaCon
10 Sottoconto:
- Campo: obbligatorio
- Tipo: string
- Descrizione: sottoconto del cliente, mastrino del cliente. Se il listino è custom, conto e sottoconto verranno creati come indicato nei rispettivi parametri. Se è generale non va inserito
Esempio: per il conto 1701 visto in precedenza, ci sono 3 sottoconti: “001” che corrisponde a conti, “002” che corrisponde a valori DDTti e “” (nessun sottoconto specificato) che corrisponde a disponibilità liquide.
- Mapping table/colonna: select BPC_SottoConto from MB_PiaCon
11 Divisa:
- Campo: obbligatorio
- Tipo: string
- Descrizione: divisa con cui interpretare i valori inseriti nella sezione data
Esempio: “EUR” corrisponde a Euro, “USD” corrisponde a Dollaro
- Mapping table/colonna: select MBDI_Divisa from MB_Divise
12 Arrotondamento:
- Campo: obbligatorio
- Tipo: decimale
- Descrizione: Indica se arrotondare per eccesso o difetto
Esempio: 1 corrisponde a nessuno, 2 corrisponde ad eccesso, 3 corrisponde a difetto
- Mapping table/colonna: select MBRNT_Id from MB_RoundingType
13 Inizio validità:
- Campo: obbligatorio
- Tipo: datetime
- Descrizione: indica l'inizio di validità del listino inserito (gg/mm/aaaa)
Esempio: 1/10/2018
14 Fine validità:
- Campo: non obbligatorio
- Tipo: datetime
- Descrizione: se presente indica la fine di validità del listino inserito (gg/mm/aaaa)
Esempio: 31/12/2027
15 Tipo sconto listino1:
- Campo: non obbligatorio
- Tipo: string
- Descrizione: se presente indica il tipo di sconto effettuato relativo alla sezione Sconti
Esempio: “4” corrisponde a sconto finale su vendita
- Mapping table/colonna: select MBST_Code from MB_Sconti
16 Tipo sconto listino2:
- Campo: non obbligatorio
- Tipo: string
- Descrizione: se presente indica il tipo di sconto effettuato relativo alla sezione Sconti
Esempio: “4” corrisponde a sconto finale su vendita
- Mapping table/colonna: select MBST_Code from MB_Sconti
17 Tipo sconto listino3:
- Campo: non obbligatorio
- Tipo: string
- Descrizione: se presente indica il tipo di sconto effettuato relativo alla sezione Sconti
Esempio: “4” corrisponde a sconto finale su vendita
- Mapping table/colonna: select MBST_Code from MB_Sconti
18 Tipo sconto quantità:
- Campo: non obbligatorio
- Tipo: string
- Descrizione: se presente indica il tipo di sconto effettuato
Esempio: “4” corrisponde a sconto finale su vendita
- Mapping table/colonna: select MBST_Code from MB_Sconti
19 Tipo sconto valore:
- Campo: non obbligatorio
- Tipo: string
- Descrizione: se presente indica il tipo di sconto effettuato
Esempio: “4” corrisponde a sconto finale su vendita
- Mapping table/colonna: select MBST_Code from MB_Sconti
Avviare importazione
Una volta inseriti i dati, per avviare l'importazione, cliccare sul pulsante presente nel menu importazione, in alto a sinistra, chiamato anch'esso “Importazione” come in figura sotto.
### Conclusioni – Inserimento avvenuto
Se tutto va a buon fine non comparirà nessun messaggio di errore. Per un ulteriore verifica di buon riuscita, andare a controllare nell'anagrafica articoli (Home à Articoli) se sono presenti quelli importati tramite il listino di vendita. Altrimenti ci apparirà a video una schermata di errore la quale ci indicherà quali parametri e/o campi non sono corretti. Per interpretare l'errore vedi Consigli e avvertenze utili nell'ultimo paragrafo.
Consigli e avvertenze utili
Formattazione Excel consigliata:
- Per una corretta importazione, è vivamente consigliato di formattare le colonne secondo il tipo indicato alla voce “Formattazione Excel” di ogni campo. Per esempio se il tipo del campo è decimal e in quel campo andrà inserito una valuta, formattare il campo appunto come valuta. Questo perché per esempio se non viene formattata la cella, Excel elimina le cifre non significative. Per inserire la formattazione seguire i seguenti passaggi:
Per prima cosa selezionare la colonna desiderata come in figura sotto:
Poi, dopo essersi posizionati con il puntatore del mouse all'interno della colonna, premere il tasto destro del mouse.
Selezionare premendo il tasto sinistro** > Formato celle…**
In questa schermata si potrà quindi formattare la colonna selezionata. In base alle indicazioni fornite nell' Inserimento campi selezionare l'opportuna categoria, con le relative specifiche (es. valuta, simbolo nessuno). La stessa identica cosa è possibile farla dal foglio elettronico presente all'interno di Fluentis.
Attenzione:Il caso classico riguarda codici contenenti zeri, apparentemente, non significativi es. “001”. Se il campo è formattato generico o numero gli zeri sarebbero scartati, se formatta come stringa vengono invece mantenuti.
Mapping table/colonna:
- Se nell'Inserimento campi vi è presente la voce mapping table/colonna, significa che il valore inserito all'interno del campo per l'importazione, deve essere già presente nel database. Per visualizzare i relativi dati presenti nella base di dati basterà seguire i seguenti passaggi, in cui verrà utilizzato come esempio la classe articoli e il relativo mapping:
select MBDC_Classe from MB_Classi (ß questo è il mapping). Eseguiamo la query in “Microsoft SQL server management studio” e otteniamo il seguente risultato:
Visto così non comunica nulla, per capirne il significato sostituire dopo la clausola di select, il simbolo “*” al campo per comporre la nuova query. In questo caso avremmo quindi select * from MB_Class, che serve per selezionare l'intero contenuto della tabella, eseguiamo ora.
Questo è utile in quanto, come mostrato dalla figura, tramite la descrizione (MBDC_Descr) è possibile capire il campo cosa rappresenta e verificare se quello che si inserirà è presente o meno nella base di dati.
Questa procedura appena descritta è universale, ossia vale per ogni campo.
La stessa rappresentazione è possibile vederla in Fluentis:
Dalla home di Fluentis selezionare Articoli > Articoli (vedi fig. sotto).
Poi nella maschera di ricerca che appare cliccare con il pulsante sinistro del mouse sul triangolino affianco ad articoli, il quale apre una tendina dove è possibile visualizzare la classe degli articoli con relativa descrizione come in figura.
Questo per la classe articoli. Per gli altri campi si potrà eseguire la stessa procedura solamente in punti diversi.
Noi dovremmo quindi inserire uno dei valori presenti altrimenti l'importazione non andrà a buon fine e ci comunicherà un errore. Questo per ogni campo di cui è presente il mapping table/colonna.
Se vogliamo invece aggiungere un campo con mapping non presente nel database andrà inserito o tramite query o da Fluentis, in questo caso la query di inserimento è sconsigliata in quanto più complicata da comporre rispetto alla visualizzazione vista in precedenza. La procedura consigliata è quindi l'inserimento da Fluentis. Sempre nel caso della classe articoli, da articoli (figura sopra) premere tasto destro all'interno del filtro di ricerca della classe articolo e selezionare Apri form.
Nella form che si aprirà premere il pulsante Ricerca per visualizzare le classi articolo presenti.
Sotto l'ultima riga presente c'è una riga vuota. È quella usata per l'inserimento di nuovi valori.
Lì vanno scritti i nuovi valori da inserire e una volta fatto, basterà premere invio.
Questa procedura è analoga per gli altri campi, l'unica cosa che cambia è il dove si trovano i filtri di ricerca nei quali premere il tasto sinistro per aprire la form.
Errori:
- In caso di importazione fallita, come detto in precedenza, apparirà a video una schermata di errore.
Se l'errore è stato commesso nella parte Data è possibile risalire alla riga che contiene l'errore in quanto ci sarà per esempio scritto “System.ArgumentException: Error importing row 4”. In questo caso (vedi figura sotto), l'errore si troverà nella riga 4, la quale però non è l'effettiva riga contente l'errore. Per capire esattamente quale riga contenga l'errore, utilizzando i numeri nella colonna di sinistra, gli va sommato 1. Quindi:
Riga reale contente errore = Error importing rownum + 1
Per interpretare l'errore, nel messaggio dello stesso, seguire i seguenti passaggi: nella stessa riga contenente il numero di riga visto in precedenza, c'è scritto l'oggetto a cui è riferito, poi l'errore vero e proprio e infine la proprietà relativa ad esso in cui è stato riscontrato l'errore. Sempre nell'esempio sopra riportato “Failed to create, update or delete the object of type Fluentis.FluentisErp.Core.Scm.PurchasePriceLists.FSPurchasePriceListItem, Fluentis.FluentisErp.Core.Scm.PurchasePriceListsnot-null property references a null or transient value Fluentis.FluentisErp.Core.Scm.PurchasePriceLists.ReadWrite.FSWPurchasePriceListItem.MeasurementUnit”. In questo caso come si può notare dall'immagine sopra, l'unità di misura relativa al prezzo di acquisto listino ha generato l'errore in quanto essa è nulla. Infatti il suo inserimento è obbligatorio.
Se l'errore è stato commesso nella parte dei parametri il messaggio sarà analogo, il metodo di risoluzione rimane sempre il precedente quindi, in base alla proprietà verificare il corretto inserimento della stessa.
Attenzione: Se viene trovata una riga completamente vuota, non verrà comunicato nessuno errore ma l'importazione terminerà lì. Per esempio se la prima riga (riga n.4) è vuota per qualche motivo e sotto (da riga n.5 compresa) si trovano le righe popolate, non sarà importato nulla.
Attenzione: Se viene inserito un listino di 10 righe per esempio, e alla riga n. 7 si verifica un errore, le prime 6 righe non avendo causato problemi sono state inserite! Se non viene cambiato nessun valore nelle prime 6 righe (e se ovviamente l'errore è stato corretto), riavviando l'importazione non ci saranno problemi, neanche di duplicazione in quanto viene prima cercato se l'articolo è già presente. Se viene cambiato anche solo un valore, tale articolo verrà inserito in quanto visto come un nuovo articolo.
Infine un altro messaggio di errore che potrà capitare è il seguente.
Come si può notare dall'immagine sopra riportata, questa tipologia di messaggi sono più facili da interpretare in quanto viene messo il riferimento esatto della cella con relativo errore. In questo caso nella cella F:4 non è presente nessun valore.