WebSite X5Help Center

 
Abramo B.
Abramo B.
User

Integrazione software di fatturazione con website ecommerce  it

Autore: Abramo B.
Visite 4487, Followers 1, Condiviso 0  

Salve, volevo chiedere ad un esperto se posso sfruttare la funzionalità che offre il mio programma di fatturazione "Danea Easyfatt" con website 5 dell'ecommerce sviluppato da website, clienti,fornitori, acquisti online, magazzino ecc, che il mio danea ha già come funzione di import ed export di cio' ma non so come farlo comunicare con il modulo che sviluppa website5..

Postato il
8 RISPOSTE - 1 CORRETTO
Abramo B.
Abramo B.
User
Autore

Per essere di aiuto posso inserire con un copia e incolla le specifiche che il danea richiede per la sua compatibilità:

Note preliminari per il formato XML

  • Tutti i campi, se non specificato diversamente, sono opzionali.
  • I campi di tipo [Valuta] e [Numerico] utilizzano il "." come separatore decimale. Non va utilizzato il separatore delle migliaia.
  • I campi di tipo [Data] sono in formato ISO "aaaa-mm-gg" (es: "2007-02-28").
  • In esportazione da Easyfatt, se un campo ha un valore nullo (stringa vuota, oppure numero uguale a zero), il relativo tag viene omesso dal tracciato.
  • In importazione, se Easyfatt riscontra un tag con contenuto nullo (stringa vuota, oppure numero uguale a zero), imposterà tale valore nel relativo campo; se, invece, il tag viene omesso del tutto, Easyfatt imposterà il valore di default per quel contesto (ad esempio, se in un tracciato è assente il tag <Date>, il documento importato avrà la data del giorno e non la data nulla).

Il file XML deve essere codificato in UNICODE UTF-8 che prevede importanti regole nella codifica delle stringhe racchiuse tra tag:

  • Caratteri riservati
    I caratteri "&", "<", ">" sono riservati: se un testo contiene questi caratteri, bisogna sostituirli rispettivamente con "&amp;", "&lt;", "&gt;".

    In PHP è sufficiente utilizzare il comando seguente: 
    $string= htmlspecialchars("prova con caratteri riservati & < >", ENT_NOQUOTES, 'Windows-1252');
  • Simboli e lettere accentate
    La maggioranza dei file di testo creati su sistemi Windows segue la codifica "Windows-1252"; questa codifica differisce dalla codifica UTF-8 per i caratteri con codice ASCII > 127, ad esempio il simbolo di € e le lettere accentate òàùéèìù.

    In PHP per convertire una stringa da "Windows-1252" a "UTF-8" è sufficiente utilizzare il comando seguente:
    $string= mb_convert_encoding("prova con caratteri €òàùéè", 'UTF-8', 'Windows-1252');  

Quindi nella preparazione di un file da far importare ad Easyfatt, ogni campo inserito tra TAG deve essere prima codificato con: 
$string= mb_convert_encoding(htmlspecialchars($string, ENT_NOQUOTES, 'Windows-1252'), 'UTF-8', 'Windows-1252');

...mentre per l'interpretazione di un file ricevuto da Easyfatt, è necessario eseguire l'operazione opposta: 
$string= html_entity_decode(mb_convert_encoding($string, 'Windows-1252', 'UTF-8'), ENT_NOQUOTES, 'Windows-1252');

Versioni del tracciato

Le specifiche tecniche di interfacciamento tra Easyfatt ed il sito di e-commerce possono variare nel tempo per consentire l'aggiunta di nuove funzionalità. Versioni differenti delle specifiche vengono denominate "protocolli":

  • Protocollo 1 (identificato dall'attributo AppVersion="DaneaEasyfatt.2006.17.00")
    Questo è il primo protocollo realizzato (Giugno 2007).
    Viene usato negli applicativi Easyfatt 2006 (a partire dalla rev. 17), fino a Easyfatt 2009 rev. 07 (compreso).
  • Protocollo 2 (identificato dall'attributo AppVersion="2")
    Questo è il secondo protocollo realizzato (Giugno 2009).
    Viene usato a partire da Easyfatt 2009 rev. 08

Differenze

Il protocollo 2 introduce la possibilità di trasmettere il catalogo prodotti in modo incrementale e con la possibilità di inviare in upload le relative immagini. Se l'utente Easyfatt non sceglie l'opzione di invio incrementale, il tracciato Xml trasmesso sarà analogo a quello del protocollo 1 (con la sola differenza dell'attributo AppVersion="2").

Rispetto al protocollo 1, nel protocollo 2 la trasmissione di prodotti o clienti invierà esclusivamente record il cui campo <code> (codice) è valorizzato.

Nell'invio dell'elenco clienti e nella ricezione degli ordini non vi sono differenze (ad esclusione dell'attributo AppVersion="2").

Retrocompatibilità

Consigliamo di verificare che le procedure del sito siano in grado di gestire entrambi i protocolli, in questo modo sarà garantita la compatibilità anche con gli utilizzatori del precedente Easyfatt 2006. Sono pochi gli aspetti da controllare:

  1. Accertarsi che non esistano blocchi che impediscono di processare le richieste con AppVersion="2" o con AppVersion="DaneaEasyfatt.2006.17.00".
  2. La procedura che riceve l'invio prodotti con AppVersion="DaneaEasyfatt.2006.17.00" dovrà rispondere sempre e solo con "OK" (nel caso in cui non ci siano problemi), senza aggiungere i parametri per l'invio delle immagini.

Autenticazione

Le credenziali di autenticazione (login e password) impostabili in Easyfatt per le operazioni di aggiornamento listini e di scarico ordini possono utilizzare l'autenticazione standard del web server (BasicNtlm o Digest).

Se questo tipo di autenticazione non viene gestito, l'applicazione del sito può comunque acquisire i dati di login e password trasmessi da Easyfatt nell'header delle richieste HTTP: a questo scopo viene inviato un header apposito, denominato HTTP_X_AUTHORIZATION, contenente login e password concatenati e separati da due punti (:), quindi codificati Base64.

Ad esempio con utente 'pippo' e password 'microcomputer', si avrebbe prima la concatenzione: 'pippo:microcomputer' e poi verrebbe calcolato il Base64: 'cGlwcG86bWljcm9jb21wdXRlcg=='.

E pertanto l'header sarebbe:
X-Authorization: cGlwcG86bWljcm9jb21wdXRlcg==

Scarica esempi per gestire l'autenticazione codificata Base64:

  • Codice ASP VBScript
  • Codice PHP

Trasmissione catalogo prodotti

La trasmissione avviene tramite l'invio al sito di e-commerce di un file XML contenente l'elenco dei prodotti con relative descrizioni.

Suggerimento: per verificare i tracciati prodotti, tramite Easyfatt (anche in versione dimostrativa), è possibile esportare gli articoli nel formato XML di seguito descritto. Per farlo è sufficiente accedere al menu Strumenti->E-Commerce->Aggiorna articoli e premere Salva su file.

Struttura del file invio catalogo prodotti XML

Il file XML e' una sequenza di oggetti Product all'interno delle liste Products oppure UpdateProducts e DeletedProducts, descritti nel dettaglio in seguito. L'attributo AppVersion indica la versione del protocollo usato. L'attributo Warehouse è presente solo se l'utente sta gestendo più magazzini ed in tal caso è specificato il magazzino che si sta aggiornando.

Quando l'invio è completo (ovvero vengono trasmessi tutti i prodotti), verrà usata esclusivamente la lista Products e l'attributo Mode dovrà essere valorizzato a full. Trasmissioni complete vengono fatte anche da versioni di Easyfatt che non supportano il protocollo 2, in questo caso l'attributo Mode sarà assente. Esempio:

<?xml version="1.0" encoding="UTF-8"?>
<EasyfattProducts AppVersion="2" Mode="full" Warehouse="Negozio">
  <Products>
    <Product>
      [...]
    </Product>
    <Product>
      [...]
    </Product>
    [...] 
  </Products>
</EasyfattProducts>

Quando viene ricevuto un flusso in modalità full, è importante provvedere ad eliminare tutti i prodotti presenti nel database del sito ed assenti nella trasmissione. E' altresì importante che rimanga sempre possibile eseguire un invio COMPLETO dei prodotti senza rischiare di perdere eventuali informazioni aggiuntive inserite nel catalogo prodotti on-line: se su alcuni prodotti sono stata compilate delle informazioni direttamente dal sito e-commerce perche' non disponibili in Easyfatt (ad esempio promozioni, foto delle categorie, garanzia, o altro...), è fondamentale che queste informazioni aggiuntive non vengano perse anche in caso di un invio completo di tutti i prodotti.

Quando l'invio è incrementale (vengono trasmessi solo i nuovi prodotti e quelli modificati o cancellati dall'ultima trasmissione), verranno usate le listeUpdateProducts (per i prodotti da aggiungere o aggiornare) e DeletedProducts (per quelli da eliminare). In questa modalità, l'attributo Mode è impostato suincremental. Esempio:

<?xml version="1.0" encoding="UTF-8"?>
<EasyfattProducts AppVersion="2" Mode="incremental">
  <UpdatedProducts>
    <Product>
      [...]
    </Product>
    <Product>
      [...]
    </Product>
    [...] 
  </UpdatedProducts>
  <DeletedProducts>
    <Product>
      [...]
    </Product>
    <Product>
      [...]
    </Product>
    [...] 
  </DeletedProducts>
</EasyfattProducts>

Esempio

<Product>
<InternalID>16</InternalID>
<Code>0016</Code>
<Description>Armadio Alto funzionalità a giorno</Description>
<Category>Complementi d'arredo</Category>
<Subcategory>Mobile</Subcategory>
<Vat Perc="21" class="Imponibile" Description="Aliquota 21%">21</Vat>
<Um>pz</Um>
<NetPrice1>105</NetPrice1>
<NetPrice2>85</NetPrice2>
<GrossPrice1>126</GrossPrice1>
<GrossPrice2>102</GrossPrice2>
<Barcode>AR</Barcode>
<SupplierCode>0054</SupplierCode>
<SupplierName>Il Mio Ufficio</SupplierName>
<SupplierProductCode>52-715-7845</SupplierProductCode>
<SupplierNetPrice>63</SupplierNetPrice>
<SupplierGrossPrice>75.6</SupplierGrossPrice>
<ProducerName>WoodThings</ProducerName>
<WarehouseLocation>Magazzino1</WarehouseLocation>
<Link>http://www.arredamenti.it/catalog?cod=52-715-7845
<SizeUm>cm</SizeUm>
<NetSizeX>90</NetSizeX>
<NetSizeY>133</NetSizeY>
<NetSizeZ>45</NetSizeZ>
<PackingSizeX>112.5</PackingSizeX>
<PackingSizeY>145</PackingSizeY>
<PackingSizeZ>50.7</PackingSizeZ>
<WeightUm>kg</WeightUm>
<NetWeight>4.5</NetWeight>
<GrossWeight>6</GrossWeight>
<ManageWarehouse>true</ManageWarehouse>
<MinStock>2</MinStock>
<AvailableQty>1</AvailableQty>
<OrderedQty>2</OrderedQty>
<CustomField2>5 Anni</CustomField2>
<CustomField3>Media</CustomField3>
<Notes>Versione di colore: Grigio, Acero, Struttura acero e profili in PVC color Grigio.</Notes>
<ImageFileName>15447.jpg</ImageFileName>
</Product>

Campi della sezione <Product>

InternalID

ID interno dell'applicazione.

Code

Codice prodotto (campo obbligatorio).

Barcode

Codice a barre (se diverso dal codice articolo).

Description

Descrizione prodotto in testo semplice.

DescriptionHTML

Descrizione prodotto in formato HTML
- Sono supportati i seguenti tag: p, br, a, b, i, u, ul, li, span
-
 Sono supportati gli attributi di colore e allineamento del testo
Sono disponibili 4 classi di stile denominate: ef-titolo1, ef-titolo2, ef-titolo3, ef-titolo4

Per ciascun prodotto viene sempre compilato il tag <Description>, mentre il tag <DescriptionHTML> è opzionale (l'utente può scegliere se compilarlo o meno). Se il sito di e-commerce supporta il testo descrittivo in formato HTML, si dovrà quindi tenere conto di questo fattore.

Category

Categoria.

Subcategory

Sottocategoria.

Subcategory2...9

Ulteriori sotto-livelli di categoria (in Easyfatt vanno inseriti nel campo della sottocategoria, specificando i nuovi livelli con ">>", ad esempio: "Auto Italiane >> A gasolio >> Trazione integrale").

Vat

Codice IVA. Il codice è accompagnato dalle seguenti proprietà, il cui uso è facoltativo:
- Perc (percentuale di tassazione applicata)
- Class (classe: imponibile, non imponibile, intra-ue, extra-ue, esente, escluso, fuori campo, iva non esposta, rev. charge)
- Description: descrizione libera del codice Iva

Um

Unità di misura.

ProducerName

Nome del produttore .

Link

Link a file o pagina web con informazioni relative al prodotto.

CustomField1

Campo libero 1.

CustomField2

Campo libero 2.

CustomField3

Campo libero 3.

Notes

Note.

ImageFileName

Nome dell'immagine associata al prodotto. Questo tag potrebbe essere ripetuto, in presenza di più immagini sullo stesso prodotto (funzione non ancora presente in Easyfatt). L'intero percorso locale della cartella delle immagini è ricavabile dalla proprietà ImageFolder associata all'oggetto EasyfattProducts.

Prezzi:

NetPrice1 ... 9

Prezzo netto listino 1...9 [Valuta]. Usare questi campi quando il sito web mostra prezzi al netto d'Iva.

GrossPrice1 ... 9

Prezzo ivato listino 1...9 [Valuta]. Usare questi campi quando il sito web mostra prezzi comprensivi di Iva.

NetEcoFee

Importo netto Iva dell'eco-contributo [Valuta].

GrossEcoFee

Importo ivato dell'eco-contributo [Valuta].

Fornitore:

SupplierCode

Codice del fornitore.

SupplierName

Nome del fornitore.

SupplierProductCode

Codice articolo per il fornitore.

SupplierNetPrice

Prezzo netto d'acquisto [Valuta].

SupplierGrossPrice

Prezzo ivato d'acquisto [Valuta].

Magazzino:

ManageWarehouse

Gestione magazzino abilitata [true|false].

WarehouseLocation

Ubicazione.

MinStock

Scorta minima [Numerico].

AvailableQty

Quantità disponibile [Numerico].

OrderedQty

Quantità ordinata ed in arrivo [Numerico].

Dimensioni:

SizeUm

Unità di misura delle dimensioni.

NetSizeX

Larghezza prodotto [Numerico].

NetSizeY

Altezza prodotto [Numerico].

NetSizeZ

Profondità prodotto [Numerico].

PackingSizeX

Larghezza imballo [Numerico].

PackingSizeY

Altezza imballo [Numerico].

PackingSizeZ

Profondità imballo [Numerico].

WeightUm

Unità di misura peso [Numerico].

NetWeight

Peso del prodotto [Numerico].

GrossWeight

Peso del prodotto imballato [Numerico].

Nota: nelle liste DeletedProducts, l'oggetto Product conterrà esclusivamente il campo <Code>, necessario per identificare ed eliminare il prodotto dal database.

Taglie e colori

Per i prodotti gestiti con taglie e colori (tipico del settore dell'abbigliamento o delle calzature), all'interno di ciascun <Product> vengono specificate le informazioni sulle singole varianti (<Variant>):

<Product>
[...]
   <Variant>
      <Size>M</Size>
      <Color>Blu</Color>
      <AvailableQty>23</AvailableQty>
   </Variant>
   <Variant>
      <Size>M</Size>
      <Color>Rosso</Color>
      <AvailableQty>14</AvailableQty>
   </Variant>
   <Variant>
      [...]
   </Variant>
[...]
</Product>

Campi della sezione <Variant>:

Size

Taglia.

Color

Colore.

AvailableQty

Quantità disponibile (viene omesso quando quantità=0).

Protocollo trasmissione file catalogo prodotti XML

Il file XML viene trasmesso con un POST HTTP alla URL indicata nella linguetta Impostazioni della funzione di aggiornamento articoli del programma. Se lo script che riceve il file è posizionato in una cartella del webserver ad accesso limitato (ad esempio la cartella "admin" di os-commerce), è possibile specificare, sempre nelle Impostazioni, la Login e la Password di accesso.

Il file viene trasmesso con Content-type "multipart/form-data", come se venisse inviato un parametro "file" da un form HTML.

Di seguito un esempio minimale di script PHP per ricevere il file:

admin/uploadarticoli.php:

  1. <?php
  2. if (move_uploaded_file ($HTTP_POST_FILES['file']['tmp_name'], "articoli.xml")){
  3. echo "OK";
  4. } else {
  5. echo "Error";
  6. }
  7. ?>

Se al termine della trasmissione Easyfatt riceve una risposta diversa da "OK", la mostra all'utente come messaggio di errore.

Essendo decisamente più complessa la procedura in ASP VBScript, è stato creato un apposito esempio da scaricare.

Trasmissione immagini

Nel caso in cui il sito di e-commerce, al termine della ricezione dell'elenco prodotti, desideri ricevere anche le relative immagini, gli sarà necessario aggiungere, successivamente all'OK di risposta, i seguenti parametri:

  • ImageSendURL=URL
    • URL può essere un indirizzo HTTP (es.: http://www.miosito.it/uploadImmagini.php)
    • oppure URL può essere un indirizzo FTP (es.: ftp://ftp.miosito.it/folder/immagini ); l'autenticazione FTP sarà eseguita con le stesse login/password usate negli altri contesti, tuttavia l'URL può contenere una diversa login/password, che verrà usata in modo prioritario (es.:ftp://login:***/folder/immagini ) ... in questo caso attenzione al fatto che la login e la password specificate nella URL dovranno essere codificate opportunamente in presenza di caratteri non consentiti, se ad esempio la login è un indirizzo e-mail, il carattere @ andrà codificato con @ (maggiori informazioni: escape url characters).
  • ImageSendFinishURL=URL
    questo è un parametro opzionale. Se presente, al termine della trasmissione di tutte le immagini, Easyfatt effettuerà una chiamata alla URL specificata. LaURL può essere esclusivamente un indirizzo http (es.: http://www.miosito.it/uploadTerminato.php), la pagina chiamata dovrà restituire la stringa "OK" per confermare l'avvenuta elaborazione, oppure una stringa di errore da mostrare all'utente.

Importante: questi parametri vanno richiesti solo se il protocollo in uso (AppVersion) è uguale o maggiore a 2. Nel caso in cui vengano specificati sul protocollo precedente, Easyfatt gestirà questa stringa come se si trattasse di un errore nella trasmissione del catalogo prodotti.

Esempio di risposta con richiesta di immagini, senza segnalazione di trasmissione terminata:

OK
ImageSendURL=http://www.miosito.it/immagini/upload.asp

Esempio di risposta con richiesta di immagini, con segnalazione di trasmissione terminata:

OK
ImageSendURL=ftp://ftp.miosito.it/immagini
ImageSendFinishURL=http://www.miosito.it/invio_terminato.asp

E' importante che le diverse righe contenenti OKImageSendURL e ImageSendFinishURL siano separate da un carattere di INVIO ("new line").

L'invio delle immagini in modalità HTTP avverrà con un post per ciascun file trasmesso in modalità Content-type "multipart/form-data" contenente due parametri: "file" (il file trasmesso) e "fileName" (il nome del file).

Ricezione ordini

La ricezione viene effettuata ricevendo dal sito un file XML con l'elenco dei documenti (tipicamente conferme d'ordine).

Suggerimento: per effettuare delle verifiche sui tracciati, tramite Easyfatt (anche in versione dimostrativa), è possibile esportare documenti nel formato XML di seguito descritto. Per farlo è sufficiente accedere alla sezione DOCUMENTI, selezionare i documenti desiderati e premere il pulsante Utilità > Trasferisci documenti (formato Easyfatt-Xml).

Risorse utili

  • Scarica schema Easyfatt-Xml.xsd
  • Scarica tracciato Xml d'esempio

Struttura del file

<?xml version="1.0" encoding="UTF-8"?>
<EasyfattDocuments AppVersion="2" Creator="Danea Soft" CreatorUrl="www.danea.it">
  <Company>
      [...]
  </Company>
  <Documents>
    <Document>
      [...]
      <Rows>
        <Row>
          [...]
        </Row>
        <Row>
          [...]
        </Row>
      </Rows>
      <Payments>
        <Payment>
          [...]
        </Payment>
        <Payment>
          [...]
        </Payment>
      </Payments>
    </Document>
    <Document>
      [...]
      <Rows>
        <Row>
          [...]
        </Row>
        <Row>
          [...]
        </Row>
      </Rows>
      <Payments>
        <Payment>
          [...]
        </Payment>
        <Payment>
          [...]
        </Payment>
      </Payments>
    </Document>
  </Documents>
</EasyfattDocuments>

Annotazioni sugli elementi

EasyfattDocuments

  • L'attributo AppVersion è opzionale, va usato nell'integrazione e-commerce e rappresenta la versione del protocollo usato.
  • L'attributo Creator è opzionale e riporta informazioni sul software o sul servizio che ha originato il file (nome della software house e/o del programma). L'attributo CreatorUrl, anch'esso ozionale, contiene un eventuale indirizzo web di approfondimento.

EasyfattDocuments.Company

  • Questo elemento è opzionale e non rilevante per le operazioni di e-commerce.
  • Contiene i dati identificativi del mittente del file (nome azienda, indirizzo, partita iva, email, etc), da non confondersi con gli intestatari indicati nei successivi documenti.

EasyfattDocuments.Documents

  • Contiene i sottoelementi Document, ciascuno corrispondente ad un singolo documento (ordine, fattura, ddt, rapporto d'intervento, ...).

EasyfattDocuments.Documents.Document

  • Ciascun Document contiene i dati di testata del documento

EasyfattDocuments.Documents.Document.Rows

  • Contiene i sottoelementi Row, ciascuno corrispondente ad una riga del documento.

EasyfattDocuments.Documents.Document.Rows.Row

  • Ciascun Row contiene i dati di una riga del documento.

EasyfattDocuments.Documents.Document.Payments

  • Contiene i sottoelementi Payment, ciascuno corrispondente ad una scadenza di pagamento del documento.

EasyfattDocuments.Documents.Document.Payments.Payment

  • Ciascun Payment rappresenta i singoli pagamenti del documento.

Esempio

<?xml version="1.0" encoding="UTF-8"?>
<EasyfattDocuments AppVersion="2" Creator="Danea Soft" CreatorUrl="www.danea.it">
  <Company>
    <Name>Arredufficio Srl</Name>
    <Address>Via Crissolo, 12</Address>
    <Postcode>10138</Postcode>
    <City>Torino</City>
    <Province>TO</Province>
    <Country>Italia</Country>
    <FiscalCode>01303760282</FiscalCode>
    <VatCode>01303760282</VatCode>
    <Tel>011-2568745</Tel>
    <Fax>011-2548793</Fax>
    <Email>***</Email>
    <HomePage>www.arredufficiosrl.it</HomePage>
  </Company>
  <Documents>
    <Document>
      <DocumentType>C</DocumentType>
      <CustomerCode>0018</CustomerCode>
      <CustomerName>Ceramiche Italiane</CustomerName>
      <CustomerAddress>Via Flaminia, 963</CustomerAddress>
      <CustomerPostcode>06061</CustomerPostcode>
      <CustomerCity>Castiglione Del Lago</CustomerCity>
      <CustomerProvince>PG</CustomerProvince>
      <CustomerCountry>Italia</CustomerCountry>
      <CustomerVatCode>03322350178</CustomerVatCode>
      <CustomerTel>075-26589</CustomerTel>
      <CustomerEmail>***</CustomerEmail>
      <Date>2010-03-23</Date>
      <Number>2</Number>
      <Total>239.4</Total>
      <PaymentName>Bonifico bancario</PaymentName>
      <PaymentBank>Banca Antoniana Popolare Veneta ag. Torino 5 - abi 5040 cab 42970 c/c 16243/x</PaymentBank>
      <InternalComment>Nessun Acconto</InternalComment>
      <CustomField2>08/04/2010</CustomField2>
      <SalesAgent>Arturo Lupini</SalesAgent>
      <Rows>
        <Row>
          <Code>0043</Code>
          <Description>Appendiabiti su ruote. In robusto metallo verniciato dotato di griglia portascarpe in filo metallico.</Description>
          <Qty>1</Qty>
          <Um>pz</Um>
          <Price>162</Price>
          <Discounts>5%</Discounts>
          <VatCode Perc="20" class="Imponibile" Description="Aliquota 20%">20</VatCode>
          <Notes>vedi preventivo</Notes>
        </Row>
        <Row>
          <Code>0039</Code>
          <Description>Cestini Gettacarta - Pareti in acciaio laminato nero o acciaio</Description>
          <Qty>3</Qty>
          <Um>pz</Um>
          <Price>16</Price>
          <Discounts>5%</Discounts>
          <VatCode Perc="20" class="Imponibile" Description="Aliquota 20%">20</VatCode>
          <Notes></Notes>
        </Row>
      </Rows>
      <Payments>
        <Payment>
          <Advance>false</Advance>
          <Date>2010-01-31</Date>
          <Amount>100</Amount>
          <Paid>true</Paid>
        </Payment>
        <Payment>
          <Advance>false</Advance>
          <Date>2010-02-28</Date>
          <Amount>139.4</Amount>
          <Paid>false</Paid>
        </Payment>
      </Payments>
    </Document>
  </Documents>
</EasyfattDocuments>

Campi dell'elemento <Document>

DocumentType

è il codice corrispondente al tipo di documento; se questo tag viene omesso, il documento sarà considerato un ordine cliente. Elenco dei tipi ammessi:
A: Avviso di parcella
B: Vendita al banco
C: Ordine cliente (tipo predefinito)
D: Documento di trasporto
E: Ordine fornitore
F: Fattura accompagnatoria
G: Rapporto d'intervento
I: Fattura
L: Fattura pro-forma
M: Autofattura
N: Nota d'accredito
O: Nota d'addebito
P: Parcella
Q: Preventivo
R: Ricevuta fiscale
S: Preventivo fornitore
H: Arrivi merce fornitore

Date

Data del documento [Data]

Number

Numero documento [Numerico]

Numbering

Numerazione documento ( /a, /b, etc.). Se omesso, l'importazione userà la numerazione scelta nelle relative impostazioni.

Seguono i campi del'intestatario del documento. Va notato che i campi "Customer" (ovvero ... "Cliente") conterranno invece i dati del fornitore per i documenti di fornitura (ordine cliente, arrivo merce, etc.):

CustomerCode

Codice anagrafica; serve per associare l'ordine all'eventuale cliente già inserito in anagrafica. Durante l'importazione, i presenza di <CustomerCode> e in assenza altri codici <Customer...>, i relativi campi anagrafica del documento saranno riempiti con i dati dell'anagrafica corrispondente a <CustomerCode> e già codificata nell'archivio.

CustomerWebLogin

Login web del cliente (usato nell'integrazione e-commerce); nella fase di identificazione dell'anagrafica, questo campo viene preso in considerazione solo in mancanza di CustomerCode.

CustomerName

Cognome e nome o denominazione sociale.

CustomerAddress

Indirizzo.

CustomerPostcode

CAP.

CustomerCity

Città.

CustomerProvince

Provincia (2 caratteri).

CustomerCountry

Nazione.

CustomerFiscalCode

Codice fiscale.

CustomerVatCode

Partita Iva.

CustomerTel

Numero di telefono.

CustomerCellPhone

Numero di cellulare.

CustomerFax

Numero di fax.

CustomerEmail

Indirizzo e-mail.

CustomerReference

Persona di riferimento.

I campi "Delivery", si riferiscono all'indirizzo di consegna o spedizione e vanno specificati se tale indirizzo differisce da quello nei precedenti campi "Customer":

DeliveryName

Nome e cognome o denominazione.

DeliveryAddress

Indirizzo.

DeliveryPostcode

CAP.

DeliveryCity

Città.

DeliveryProvince

Provincia (2 caratteri).

DeliveryCountry

Nazione.

Informazioni sul trasporto:

Carrier

Denominazione vettore.

TransportReason

Causale trasporto.

GoodsAppearance

Aspetto delle merci.

NumOfPieces

Numero colli.

ShipmentTerms

Porto (franco, assegnato...).

TransportedWeight

Peso trasportato.

Note e commenti:

InternalComment

Commento (nell'e-commerce, usare questo campo per indicare note libere dell'acquirente durante la fase dell'ordine).

CustomField1

Campo note 1.

CustomField2

Campo note 2.

CustomField3

Campo note 3.

CustomField4

Campo note 4.

FootNotes

Note a fine pagina.

Altri campi della testata del documento:

CostDescription

Descrizione spese aggiuntive (ad esempio per spese di trasporto).

CostVatCode

Codice IVA spese aggiuntive (deve essere già presente nella tabella "Categorie Iva" dell'applicazione). Il codice è accompagnato dalle seguenti proprietà, il cui uso è facoltativo:
- Perc (percentuale di tassazione applicata)
- Class (classe: imponibile, non imponibile, intra-ue, extra-ue, esente, escluso, fuori campo, iva non esposta, rev. charge)
- Description: descrizione libera del codice Iva

CostAmount

Importo spese aggiuntive [Valuta].

TotalWithoutTax

Totale documento al netto dell'imposta IVA [Valuta]. Ignorato in fase di importazione.

VatAmount

Totale Iva calcolata [Valuta]. Ignorato in importazione.

Total

Totale documento [Valuta]. Ignorato in importazione.

PaymentAdvanceAmount

Importo acconto già versato (va usato solo nei documenti che non prevedono l'indicazione dei singoli Payment).

PricesIncludeVat

Se "true" i campi CostAmount e Row.Price vengono considerati importi ivati, altrimenti netti [true|false].

WithholdingTaxPerc

Percentuale ritenuta d'acconto applicata [Numerico].

WithholdingTaxPerc2

Seconda percentuale della ritenuta d'acconto (es.: 20% del 50%) [Numerico].

WithholdingTaxAmount

Totale ritenuta d'acconto calcolata nel documento [Valuta]. Ignorato in importazione.

Warehouse

Denominazione del magazzino usato.

PriceList

Denominazione del listino usato.

PaymentName

Nome pagamento (deve essere già presente nella tabella "Tipi pagamento" di Easyfatt).

PaymentBank

Banca pagamento.

SalesAgent

Nome dell'agente venditore (deve corrispondere ad un nominativo già presente nella tabella degli agenti).

ExpectedConclusionDate

Data prevista conclusione ordine [Data].

DocReference

Causale del documento.

Righe documento e scadenze di pagamento:

Rows

Contiene una sequenza di elementi Row.

Payments

Contiene una sequenza di elementi Payment.

Campi nelle righe del documento (elementi <Row>):

Code

Codice prodotto.

SupplierCode

Codice prodotto del fornitore.

Description

Descrizione prodotto o nota.

Qty

Quantità prodotti [Numerico].

Um

Unità di misura della quantità.

Size

Taglia (usato nel settore dell'abbigliamento).

Color

Colore (usato nel settore dell'abbigliamento).

Lot

Lotto.

ExpiryDate

Data scadenza lotto [Data].

Serial

Codice seriale

Price

Prezzo unitario [Valuta].

Discounts

Sconti (es: "20+5.5%").

EcoFee

Importo dell'eco-contributo unitario associato all'articolo.

VatCode

Codice IVA (deve essere già presente nella tabella "Categorie Iva" dell'applicazione). Il codice è accompagnato dalle seguenti proprietà, il cui uso è facoltativo:
- Perc (percentuale di tassazione applicata)
- Class (classe: imponibile, non imponibile, intra-ue, extra-ue, esente, escluso, fuori campo, iva non esposta, rev. charge)
- Description: descrizione libera del codice Iva

Total

Importo complessivo della riga [Valuta]. Ignorato in importazione.

WithholdingTax

Ritenuta d'acconto applicata [true|false].

Stock

Movimentazione magazzino [true|false].

Notes

Note della riga.

CommissionPerc

Percentuale provvigione agente [Numerico].

Campi nei pagamenti del documento (elementi <Payment>):

Advance

Se "true", segnala che il pagamento è riferito ad un acconto [true|false].

Date

Data [Data].

Amount

Importo [Valuta].

Paid

Se "true", significa che il pagamento è stato eseguito [true|false].

Campi dell'elemento <Company>

Name

Nome del mittente (l'azienda che ha originato il file).

Address

Indirizzo.

Postcode

CAP.

City

Città.

Province

Provincia (2 caratteri).

Country

Nazione.

FiscalCode

Codice fiscale.

VatCode

Partita Iva.

Tel

Numero di telefono.

Fax

Numero di fax.

Email

Indirizzo e-mail.

HomePage

Indirizzo sito web.

La gestione dell'anagrafica nell'importazione del documento

Quando Easyfatt importa un documento deve verificare se il nominativo Customer è già presente in archivio o se è un nuovo soggetto; nel primo caso, deve inoltre verificare se i dati anagrafici (indirizzo, telefono...) presenti in archivio sono allineati con quelli dell'ordine scaricato. Questa operazione viene svolta secondo il seguente schema:

  • se nel documento il campo CustomerCode o CustomerWebLogin è compilato (nota: il campo CustomerWebLogin viene preso in considerazione solo se il campo CustomerCode NON è compilato), allora verifica se esiste già in archivio un nominativo con stesso CustomerCode/CustomerWebLogin:
    • se esiste, viene associato al nominativo trovato;
    • se esiste, ma indirizzo o altre informazioni del nominativo non corrispondono con quelle presenti in archivio, propone all'operatore di aggiornarle;
    • se non esiste, allora verifica se esiste già in archivio un nominativo con stesso Cod. fiscale, Partita Iva o e-mail:
      • se uno di questi dati coincide, l'ordine viene associato al nominativo trovato;
      • se uno di questi dati coincide, ma indirizzo o altre informazioni del nominativo non corrispondono con quelle presenti in archivio, viene proposto all'operatore di aggiornare queste informazioni;
      • se nessuno di questi dati coincide, viene creato automaticamente un nuovo nominativo (anche nei precedenti due casi è data possibilità all'utente di forzare la creazione di un nuovo nominativo).
  • se né CustomerCode né CustomerWebLogin sono compilati, allora verifica se esiste già in archivio un nominativo con stesso Cod. fiscale, Partita Iva o e-mail:
    • se esiste, viene associato al nominativo trovato;
    • se non esiste viene creato automaticamente un nuovo nominativo.

Nota: nella procedura di importazione di un file Easyfatt-Xml viene data la possibilità di ignorare completamente la presenza del CustomerCode. Tale possibilità può essere utile quando il trasferimento dei documenti avviene tra soggetti diversi, che preferiscono adottare ognuno un proprio e distinto codice per ciascuna anagrafica.

Modalità di ricezione file ordini XML

Il file XML viene ricevuto con un GET HTTP alla URL indicata nella linguetta Impostazioni della funzione di scaricamento ordini del programma. Se lo script che riceve il file è posizionato in una cartella del webserver ad accesso limitato (ad esempio la cartella "admin" di os-commerce), è possibile specificare, sempre nelle Impostazioni, la Login e la Password di accesso.

Vengono, se necessario, accodati alla URL specificata nelle impostazioni i seguenti parametri per limitare il numero di ordini da scaricare:

  • appver: versione dell'applicazione (es: "2")
  • firstdate: data minima degli ordini da scaricare, in formato ISO (es: "2009-01-01") [Opzionale]
  • lastdate: data massima degli ordini da scaricare, in formato ISO (es: "2009-12-31") [Opzionale]
  • firstnum: primo nr. ordine da scaricare (es: "1") [Opzionale]
  • lastnum: ultimo nr. ordine da scaricare (es: "45") [Opzionale]

Esempio di URL richiamata:
http://www.mioserver.it/admin/ordini.php?appver=2&firstdate=2009-01-01&lastdate=2009-12-31&firstnum=1&lastnum=45

Di seguito un esempio minimale di script PHP che invia un file XML precedentemente salvato nel server:

admin/ordini.php:

  1. <?php
  2. $filestring = file_get_contents("ordini.xml");
  3. echo $filestring;
  4. ?>

Di seguito un esempio minimale di script ASP VBScript che invia un file XML precedentemente salvato nel server:

admin/ordini.asp:

  1. <%
  2. Set fs = CreateObject("Scripting.FileSystemObject")
  3. Set textstream = fs.OpenTextFile("ordini.xml", 1)
  4. response.write textstream.ReadAll
  5. textstream.Close
  6. %>

Importazione prodotti dal sito webL'utilizzo dell'integrazione e-commerce prevede che sia sempre Easyfatt ad esportare i dati dei prodotti sul sito web. Tuttavia, in alcuni casi può essere necessario effettuare l'operazione contraria, ad esempio quando s'inizia ad usare Easyfatt in presenza di un sito web già pronto e con centinaia o migliaia di prodotti faticosamente inseriti (e che si preferirebbe non dover reintrodurre in Easyfatt!).

Per importare questi dati consigliamo di effettuare un'esportazione dal sito in un formato testo (ad esempio in formato CSV). Questo tracciato dovrà poi essere aperto con Excel (o con OpenOffice), quindi salvato come normale foglio Excel (oppure OpenOffice). Il file così ottenuto sarà importabile da Easyfatt, tramite l'apposita funzione presente nel menu File > Importa. Affinché l'importazione abbia successo è necessario che le colonne del file Excel corrispondano con quelle che Easyfatt s'aspetta di trovare... maggiori informazioni in tal senso sono presenti nella guida in linea del programma (capitolo "Importazioni ed esportazioni").

Chiedo scusa per l'invasione ma credo che questi dati siano importanti affinchè possiate darmi una risposta valida, se non e possibile comunicare con website e-commerce suggerisco una collaborazione per fortificare website5 in futuro visto che danea e sempre più usato dai commercianti...


Leggi di più
Postato il da Abramo B.
Roberto M.
Roberto M.
User

Dopo i primi 3 righi ho smesso di leggere. Fammi capire se ho intuito quello che ti serve, vuoi esportare il carrello di website x5 e importarlo in questo programma oppure il contrario???

Leggi di più
Postato il da Roberto M.
Incomedia
Riccardo P.
Incomedia

Ciao Abramo,

intendi il file .csv che spedisce website assieme alle emil dell'ordine?

Se il tuo programma legge i file .csv e in particolare il nostro non vi sono problemi se no puoi usare excell per effettuare una conversione.

Leggi di più
Postato il da Riccardo P.
Abramo B.
Abramo B.
User
Autore

Ciao Riccardo e Roberto,

Intendo che il sito sviluppato da website e nell'interno anche l'ecommerce comunichi con il programma di fattura che nel mio caso e il Danea Easyfatt che offre l'opportunità di essere sempre aggiornato di magazzino, ordini clienti e quant'altro semplicemente mettendolo in comunicazione con l'ecommerce trasmesso e creato con website!!! Non so ancora bene come funziona il meccanismo, ma mi pare di capire che serva un modulo già preimpostato e completo per l'ecommerce che trasferito nel server comunichi con il danea easyfatt e che abbia la compatibilità dei file trasmessi nelle modalità elencate al primo post, ho visto qualche esempio e mi pare di capire che i prodotti i prezzi ecc, vengono gestiti direttamente dal danea semplicemente esportandoli in questo modulo... vorrei realizzare qualcosa del genere per automatizzare il tutto e rendere la vita del commerciante che intende pubblicare i suoi prodotti senza avere la pesantezza di gestirsi da solo le vendite i clienti ecc....

Leggi di più
Postato il da Abramo B.
Incomedia
Riccardo P.
Incomedia

Ciao Abramo,

ti posso suggerire di dare un'occhiata a questa faq che spiega come deve essere strutturato il file .csv.

http://answers.websitex5.com/post/30582

Se questo altro programma genera un file .csv diverso anche solo in minima parte dal nostro non potrà essere poi letto da website.

Se invece il processo che ti serve è solo da website a Danea Easyfatt allora ti basta che il file generato da WebsiteX5 venga letto correttamente.

Leggi di più
Postato il da Riccardo P.
Abramo B.
Abramo B.
User
Autore

Si sono informato di questo, in teoria ci vorrebbe integrato un modulo da installare o trasmettere al server ogni volta che website crea un nuovo sito che interaggisca con i programmi di fatturazione usati attualmente i piu comuni e commerciali, esempio il file csv strutturato in un certo modo da website che si trova nella cartella che so "files" e da questo dipenda tutto l'ecommerce online magazzino, ordini, clienti ecc. questo modulo in java o altre modalità converta automaticamente il modulo spedito dal danea nel formato di website e lo inserisca nella cartella "files" aggiornandolo sovrascrivendolo e cosi mantenere sempre aggiornati magazzini, clienti e ordini, fantascienza?

Leggi di più
Postato il da Abramo B.
Abramo B.
Abramo B.
User
Autore

Come server intendo sql inserendo le impostazione del database esistente, dare a website la possibilità di intereggire con lo stesso.

Leggi di più
Postato il da Abramo B.
Incomedia
Riccardo P.
Incomedia

Ciao Abramo,

se vuoi puoi tentare di creare tu lo script che serve per collegare le due cose e che converta il .csv, essendo Danea Easyfatt un programma esterno non posso però garantirti che WebstieX5 riconosca correttamente il file generato e convertito.

Leggi di più
Postato il da Riccardo P.