This functionality is only available by default for versions greater than 2.6
For 2.4.13 the Customers and Vendors importer is an optional module and needs to enabled by editing
the file $HOME/.gnucash/config.user
, adding the line:
(gnc:module-load "gnucash/plugins/bi_import" 0)
Su sistemi Linux
questo file è $HOME/.gnucash/config.user
e su macOS
~/Library/Application Support/GnuCash/config.user
. Se il file non
esiste già, lo si dovrà creare. Dopo aver riavviato GnuCash
l’elemento comparirà
alla fine del menu .
Perchè l’importatore funzioni correttamente, i dati devono essere in formato a lunghezza
fissa di campo, o separati da virgole. Uno script di Python
è
fornito di seguito come esempio.
import sys import csv VENDOR_ID="000013" INFILE=sys.argv[1] INV_ID=sys.argv[2] try: ACCOUNT=sys.argv[3] except: ACCOUNT="Expenses:Materials General" Reader = csv.reader(open(INFILE), delimiter=',') # Need to ignore 1st and last rows for row in Reader: if row[0].isdigit(): # We only use numbered lines outline=(INV_ID + ",," + VENDOR_ID + ",,,," + row[1] + " > " + row[4] + ",ea," + ACCOUNT + "," + row[2] + "," + row[5].replace("GBP", "") + ",,,,no,,,,,,,") print outline
Esempio di un file d’ordine del fornitore scaricato da Rapid Electronics (UK).
line number,product code,quantity,availability,product description,unit price,discounts,line total,delivery,sub total,vat,grand total 1,47-3524,100,100 Available,BC848C SOT-23 NPN TRANSISTOR (INF) (RC),GBP0.03,GBP0.00,GBP0.03 2,47-3278,30,30 Available,L78L05ACZ 0.1A +5V VOLTAGE REG (ST) (RC),GBP0.18,GBP0.00,GBP0.18 3,22-0120,1,1 Available,Tube 34 14pin DIL socket, narrow7.62mm, without central support,GBP1.05,GBP0.00,GBP1.05 4,22-0127,1,0 Available<br />1 on Back Order,Tube 17 28pin DIL socket, wide15.24mm, without central support,GBP1.22,GBP0.00,GBP1.22 5,62-0368,1,1 Available,820R CR25 0.25W CF Resistor Pk 100,GBP0.50,GBP0.00,GBP0.50 6,47-3130,100,100 Available,1N4001 1A 50V SILICON RECTIFIER DIODE RC,GBP0.01,GBP0.00,GBP0.01 7,17-0310,1,1 Available,PROFESSIONAL MINATURE PROBE HOOK RED RC,GBP0.90,GBP0.00,GBP0.90 8,17-0312,1,1 Available,PROFESSIONAL MINATURE PROBE HOOK BLACKRC,GBP0.90,GBP0.00,GBP0.90 9,34-0655,1,1 Available,PROTOBLOC 2 BREADBOARD,GBP4.39,GBP0.00,GBP4.39 10,18-0200,1,1 Available,PP3 9V ALKALINE BATTERY "Not For Retail Sale",GBP1.37,GBP0.00,GBP1.37 ,,,,,,,,GBP4.95,GBP24.93,GBP4.35,GBP29.28
Un file simile dopo essere stato processato con lo script di Python
.
MEC-0071,,000013,,,,34-0655 > PROTOBLOC 2 BREADBOARD,ea,Expenses:Materials General,1,4.39,,,,no,,,,,,, MEC-0071,,000013,,,,18-0105 > PP3 / PP6 BATTERY CLIP 150MM (RC),ea,Expenses:Materials General,10,0.06,,,,no,,,,,,, MEC-0071,,000013,,,,62-0370 > 1k CR25 0.25W CF Resistor Pk 100,ea,Expenses:Materials General,1,0.50,,,,no,,,,,,, MEC-0071,,000013,,,,62-0354 > 220R CR25 0.25W CF Resistor Pk 100,ea,Expenses:Materials General,1,0.50,,,,no,,,,,,, MEC-0071,,000013,,,,34-5548 > PLAIN DOCUMENT WALLET ASSORTED PK 50 RE,ea,Expenses:Materials General,1,6.95,,,,no,,,,,,, MEC-0071,,000013,,,,62-0386 > 4k7 CR25 0.25W CF Resistor Pk 100,ea,Expenses:Materials General,1,0.50,,,,no,,,,,,, MEC-0071,,000013,,,,34-0860 > COPPER CLAD SRBP SS 100 X 160 (RC),ea,Expenses:Materials General,5,0.50,,,,no,,,,,,, MEC-0071,,000013,,,,18-0163 > PP3 BATTERY HOLDER WITH FLYING LEADS RC,ea,Expenses:Materials General,5,0.23,,,,no,,,,,,, MEC-0071,,000013,,,,73-4290 > ATMEGA8-16PU 8-BIT MICRO 8K DIL-28 (RC),ea,Expenses:Materials General,3,1.99,,,,no,,,,,,, MEC-0071,,000013,,,,81-0014 > BC108 NPN GP TRANSISTOR RC,ea,Expenses:Materials General,20,0.16,,,,no,,,,,,, MEC-0071,,000013,,,,DELIVERY,ea,Expenses:Postage,1,4.95,,,,no,,,,,,, MEC-0071,,000013,,,,VAT,tax,Expenses:VAT,1,4.35,,,,no,,,,,,,
Come si può vedere mancano alcuni campi mentre altri non sono necessari per l’importazione.
La prima riga e l’ultima sono superflue dato che GnuCash
si prenderà cura di
calcolare il totale. Tutto ciò che serve è di prelevare ciò che è necessario e
produrre un file di output con il formato corretto per essere importato in GnuCash
. In
questo caso i campi del numero dell’elemento (part number) e della descrizione
(description) verranno uniti per comporre la descrizione della fattura (o ricevuta) in
GnuCash
. Sono necessari il campo della quantità (quantity) e del prezzo (price).
Contrariamente alla dicitura dell’intestazione, la VAT non è
riportata per ogni riga dato che è sempre 0, ma è calcolata nell’ultima riga sul
totale dell’ordine.
Nota | |
---|---|
Questo causerà problemi in seguito. |
Lo script è invocato con il seguente comando:
python importer.py file_da_importare
,
invoice_id
>
file_in_cui_salvare.csv
Questo breve script può facilmente essere modificato per adattarlo a qualsiasi formato scaricato. L’unica restrizione riguarda il numero di campi che deve essere fisso, almeno al momento. L’importatore ignorerà le righe con un numero errato di campi (questo potrebbe essere corretto nelle versioni future). L’ID venditore è semplicemente il numero identificativo assegnato a quello specifico venditore. Gli elementi row[N] si riferiscono alla posizione dove sono presenti i dati. È importante notare come il primo campo sia row[0] e non row[1].
Una volta che il file è stato convertito, selezionare fattura o ricevuta e il formato separato da virgole. Controllare che i dati dei campi siano nelle colonne corrette prima di selezionare . Una volta importata la fattura può essere aperta per modificarla o per emetterla nel modo usuale.
→ per aprire una nuova finestra di importazione. Selezionare il file appena creato, selezionare poiUna nota sulla VAT o qualsiasi altra imposta sugli acquisti. Come già detto,
Rapid Electronics calcola la VAT sul totale della
ricevuta e non per ogni riga. GnuCash
calcola la VAT per ogni riga e ne
fai poi il totale. Questa differenza può comportare delle inaccuratezze
nell’importo della VAT di alcuni centesimi che sono sufficienti a
causare problemi in fase di riconciliazione del conto usato per l’acquisto. Al
momento il superamento del problema dipende solamente dal proprio modo preferito; ad
esempio la VAT può essere aggiunta manualmente in una riga separata
come i costi di spedizione. QUindi parte del lavoro è lasciata all’utente ma la
parte più noiosa di inserimento di ogni elemento è eliminata.
Per il fututro: attualmente il formato di importazione è ristertto e diversi utenti potrebbero
andare incontro a dei problemi durante il processo di conversione. Aggiungere un modello
per ogni possibile formato CSV dei fornitori sarebbe un lavoro enorme e
probabilmente infruttuoso dato che molti fornitori spesso cambiano formato senza avvertire
gli sviluppatori di GnuCash
. I miglioramenti futuri del processo di importazione saranno
basati sui consigli degli utenti e probabilemente verrà reso più semplice o flessibile
(spesso «semplice» non è compatibile con «flessibile»).
Nota | |
---|---|
Se non si ha dimestichezza con |
Per poter completare con successo il processo di importazione, il numero di campi deve essere rispettato, quindi le virgole sono importanti.
Di seguito è riportato un elenco completo dei campi necessari:
id, date_opened, owner_id, billingid, notes, date, desc, action, account, quantity, price, disc_type, disc_how, discount, taxable, taxincluded, tax_table, date_posted, due_date, account_posted, memo_posted, accu_splits,
Nota | |
---|---|
Si noti la virgola finale |
id - il numero della fattura. Tutte le righe devono contenerlo o la riga verrà rifiutata.
date_opened - Use the same date format as setup in Preferences. Today's date is inserted if this is blank.
owner_id - numero ID del venditore o del cliente. Tutte le righe devono contenere questo valore altrimenti verranno rifiutate.
billingid — ID ricevuta.
notes — note della fattura.
date - la dta dell’elemento sulla riga. Può essere lasciata vuota per considerarla in data odierna.
desc - descrizione della fattura o della ricevuta
action - per le ricevute normalmente è «ea».
account - il conto a cui è attribuito l’elemento.
quantity - quantità di ogni elemento. Deve contenere un valore o la riga verrà rifiutata.
price - prezzo di ogni elemento. Deve contenere un valore o la riga verrà rifiutata.
disc_type - tipo di sconto; può essere «%» o «TODO». Si applica solo alle fatture. È necessario fare qualche prova in questo caso dato che può essere funzione della valuta.
disc_how - si applica solamente alle fatture.
discount - importo dello sconto applicato. Si applica solamente alle fatture.
taxable - Will tax be applied to the item? «yes» or blank.
taxincluded - Is tax included in the item price? «yes» or blank.
tax_table — tabella delle imposte da applicare all’elemento.
date_posted - If posted, what date. Normally left blank for manual posting after editing the invoice. Use the same date format as setup in Preferences.
due_date - Date payment is due. Use the same date format as setup in Preferences.
account_posted — conto di emissione.
memo_posted - If posted insert memo here.
accu_splits - Accumulate splits? «yes» or blank.