Table of Contents
GDXP
<?xml version="1.0" encoding="UTF-8"?> <!-- Gas Data eXchange Protocol --> <!-- Tag: gdxp Descrizione: root Attributi: - protocolVersion: versione del protocollo - creationDate: timestamp di creazione del file con precisione fino al secondo con formato YYYYMMDDHHmmss - applicationSignature: firma dell'applicazione che ha creato il file Figli: supplier --> <!ELEMENT gdxp supplier*> <!ATTLIST gdxp protocolVersion CDATA #REQUIRED> <!ATTLIST gdxp creationDate CDATA #REQUIRED> <!ATTLIST gdxp applicationSignature CDATA #REQUIRED> <!-- Tag: supplier Descrizione: contiene i dati di anagrafica, prodotti/listini e ordini aperti per il singolo fornitore Figli: taxCode, vatNumber, name, address, contacts, note, products, orders, extraFields --> <!ELEMENT supplier (taxCode, vatNumber, name, address, contacts, note, products, orders, extraFields?)> <!-- Tag: taxCode Descrizione: Codice fiscale --> <!ELEMENT taxCode (#CDATA)> <!-- Tag: vatNumber Descrizione: Partita IVA --> <!ELEMENT vatNumber (#CDATA)> <!-- Tag: name Descrizione: Nome/Ragione sociale del fornitore --> <!ELEMENT name (#CDATA)> <!-- Tag: address Descrizione: indirizzo del fornitore Figli: street, locality, zipCode, country --> <!ELEMENT address (street, locality, zipCode, country)> <!-- Tag: street Descrizione: via e numero civico --> <!ELEMENT street (#CDATA)> <!-- Tag: locality Descrizione: località/paese/città --> <!ELEMENT locality (#CDATA)> <!-- Tag: zipCode Descrizione: codice postale --> <!ELEMENT zipCode (#CDATA)> <!-- Tag: country Descrizione: nazione --> <!ELEMENT country (#CDATA)> <!-- Tag: contacts Descrizione: contiene la lista dei contatti per quel fornitore Figli: contact --> <!ELEMENT contacts (contact*)> <!-- Tag: contact Descrizione: contatto/riferimento del fornitore Figli: primary, extraContact --> <!ELEMENT contact (primary, extraContact*)> <!-- Tag: primary Descrizione: contatto principale direttamente legato alla ragione sociale del fornitore Figli: phoneNumber, faxNumber, emailAddress, webSite --> <!ELEMENT primary (phoneNumber, faxNumber?, emailAddress, webSite?)> <!-- Tag: phoneNumber Descrizione: numero telefonico --> <!ELEMENT phoneNumber (#CDATA)> <!-- Tag: faxNumber Descrizione: numero di fax --> <!ELEMENT faxNumber (#CDATA)> <!-- Tag: emailAddress Descrizione: indirizzo di posta elettronica --> <!ELEMENT emailAddress (#CDATA)> <!-- Tag: webSite Descrizione: indirizzo del sito web --> <!ELEMENT webSite (#CDATA)> <!-- Tag: extraContact Descrizione: contatto per un riferimento del fornitore Figli: firstName, lastName, phoneNumber, mobileNumber, faxNumber, emailAddress --> <!ELEMENT extraContact (firstName, lastName, phoneNumber, mobileNumber, faxNumber?, emailAddress)> <!-- Tag: firstName Descrizione: nome --> <!ELEMENT firstName (#CDATA)> <!-- Tag: lastName Descrizione: cognome --> <!ELEMENT lastName (#CDATA)> <!-- Tag: phoneNumber Descrizione: numero del telefono fisso --> <!ELEMENT phoneNumber (#CDATA)> <!-- Tag: mobileNumber Descrizione: numero del telefono cellulare --> <!ELEMENT mobileNumber (#CDATA)> <!-- Tag: faxNumber Descrizione: numero di fax --> <!ELEMENT faxNumber (#CDATA)> <!-- Tag: emailAddress Descrizione: indirizzo di posta elettronica --> <!ELEMENT emailAddress (#CDATA)> <!-- Tag: note Descrizione: Commenti e note (testo libero) relative al fornitore --> <!ELEMENT note (#CDATA)> <!-- Tag: products Descrizione: lista dei prodotti/listino del fornitore Figli: product --> <!ELEMENT products (product*)> <!-- Tag: product Descrizione: singolo prodotto Figli: sku, name, category, um, description, orderInfo, variants, extraFields --> <!ELEMENT product (sku?, name, category, um, description, orderInfo, variants?, extraFields?)> <!-- Tag: sku Descrizione: codice prodotto del fornitore --> <!ELEMENT sku (#CDATA)> <!-- Tag: name Descrizione: descrizione del prodotto --> <!ELEMENT name (#CDATA)> <!-- Tag: category Descrizione: categoria di cui fa parte il prodotto --> <!ELEMENT category (#CDATA)> <!-- Tag: um Descrizione: unità di misura --> <!ELEMENT um (#CDATA)> <!-- Tag: description Descrizione: descrizione estesa del prodotto --> <!ELEMENT description (#CDATA)> <!-- Tag: orderInfo Descrizione: informazioni relative al prodotto relative agli ordini Figli: packageQty, minQty, mulQty, maxQty, umPrice, shippingCost --> <!ELEMENT orderInfo (packageQty?, minQty?, mulQty?, maxQty?, umPrice, shippingCost?)> <!-- Tag: packageQty Descrizione: quantità per confezione --> <!ELEMENT packageQty (#CDATA)> <!-- Tag: minQty Descrizione: quantità minima ordinabile --> <!ELEMENT minQty (#CDATA)> <!-- Tag: mulQty Descrizione: quantità multipla di ordine --> <!ELEMENT mulQty (#CDATA)> <!-- Tag: maxQty Descrizione: quantità massima totale ordinabile --> <!ELEMENT maxQty (#CDATA)> <!-- Tag: umPrice Descrizione: prezzo per unità di misura --> <!ELEMENT umPrice (#CDATA)> <!-- Tag: shippingCost Descrizione: costo di trasporto per unità di misura --> <!ELEMENT shippingCost (#CDATA)> <!-- Tag: variants Descrizione: lista delle varianti Figli: variant --> <!ELEMENT variants (variant)> <!-- Tag: variant Descrizione: rapprensenta la singola variante per il prodorro Attributi: - name: nome della variante Figli: value --> <!ELEMENT variant (value+)> <!ATTLIST variant name CDATA #REQUIRED> <!-- Tag: value Descrizione: singolo valore che può assumere la variante --> <!ELEMENT value (#CDATA)> <!-- Tag: extraFields Descrizione: lista dei campi non direttamente previsti dal protocollo Figli: extraField --> <!ELEMENT extraFields (extraField)> <!-- Tag: extraField Descrizione: campo non previsto dal protocollo Attributi: - name: il nome del campo --> <!ELEMENT extraField (#CDATA)> <!ATTLIST extraField name CDATA #REQUIRED> <!-- Tag: orders Descrizione: lista degli ordini Figli: order --> <!ELEMENT orders (order*)> <!-- Tag: order Descrizione: dati relativi al singolo ordine Figli: openDate, closeDate, deliveryDate, extraFields --> <!ELEMENT order (openDate, closeDate, deliveryDate?, extraFields?)> <!-- Tag: openDate Descrizione: data di apertura dell'ordine --> <!ELEMENT openDate (#CDATA)> <!-- Tag: closeDate Descrizione: data di chiusura dell'ordine --> <!ELEMENT closeDate (#CDATA)> <!-- Tag: deliveryDate Descrizione: data prevista di consegna --> <!ELEMENT deliveryDate (#CDATA)> <!-- Tag: extraFields Descrizione: lista dei campi non direttamente previsti dal protocollo Figli: extraField --> <!ELEMENT extraFields (extraField)> <!-- Tag: extraField Descrizione: campo non previsto dal protocollo Attributi: - name: il nome del campo --> <!ELEMENT extraField (#CDATA)> <!ATTLIST extraField name CDATA #REQUIRED> <!-- Tag: extraFields Descrizione: lista dei campi non direttamente previsti dal protocollo Figli: extraField --> <!ELEMENT extraFields (extraField)> <!-- Tag: extraField Descrizione: campo non previsto dal protocollo Attributi: - name: il nome del campo --> <!ELEMENT extraField (#CDATA)> <!ATTLIST extraField name CDATA #REQUIRED>
Il gdxp rappresenta un ordine o un listino, a seconda che sia presente (almeno) un elemento ordine.
Struttura
In questa sezione viene esaminato il formato per verificarne l'applicabilità a Gasista Felice. In particolare, si vuole verificare quali e quante modifiche al formato si renderebbero necessarie per esportare / importare listini e ordini dal / nel software.
Sono state esaminate le parti di Gasista Felice che sarebbero interessate dal processo di importazione / esportazione dei dati.
Supplier
- id
- name [name]
- seat_id [address]
- vat_number [EXTRAFIELD]
- ssn [taxCode]
- website [EXTRAFIELD]
- frontman_id [EXTRAFIELD]
- flavour [EXTRAFIELD]
- n_employers [EXTRAFIELD]
- logo [EXTRAFIELD]
- iban [EXTRAFIELD]
- description [note]
base place –> [ADDRESS]
SERVIRANNO DEGLI [EXTRAFIELDS]
- id
- name ???
- description ???
- address [street]
- zipcode [zipcode]
- city ???
- province ???
- lon ???
- lat ???
contact –> [PRIMARY] [EXTRAFIELDS]
- id
- flavour –> tipo, da usare per decidere se inserire il value in [phone],[fax] ecc
- value
- is_preferred
- description
Qui andrebbe cambiata la struttura. Piuttosto che:
* contacts
* primary [phone,fax,email,web]
* extra* [first_name, last_name, phone, mobile, fax, email]
Sarebbe meglio:
* contacts
* primary*(flvour, value, description) –> quello preferito per il flavour
* extra* (first_name, last_name, phone, mobile, fax, email) –> per mantenere la compatibilità
supplier_product –> anagrafica prodotto [PRODUCTS]* –> [PRODUCT]
- id
- code [EXTRAFIELD]
- producer_id
- category_id [category]
- mu_id [um]
- pu_id [EXTRAFIELD]
- muppu [EXTRAFIELD]
- muppu_is_variable [EXTRAFIELD]
- vat_percent [EXTRAFIELD]
- name [name]
- description [description]
- deleted [EXTRAFIELD]
supplier_stock –> prodotto ordinabile
- id
- supplier_id –> supplier
- product_id –> anagrafica del prodotto
- supplier_category_id [VARIANT]
- image [VARIANT]
- price [ORDERINFO][umprice]
- code [PRODUCT][sku]
- amount_available [ORDERINFO][max quantity]
- units_minimum_amount [VARIANT]
- units_per_box [VARIANT]
- detail_minimum_amount [VARIANT]
- detail_step [VARIANT]
- delivery_notes [VARIANT]
- deleted [VARIANT]
)
gas_supplier_stock –> prodotto ordinabile all'interno di un patto supplier - gas
- id
- pact_id
- stock_id
- enabled [VARIANT]
- minimum_amount [ORDERINFO][minimum quantity]
- step
gas_supplier_order_product –> ordine di un prodotto all'interno di un patto
- id
- order_id
- gasstock_id
- maximum_amount [ORDERINFO][max quantity]
- initial_price [VARIANT]
- order_price [VARIANT]
- delivered_price [VARIANT]
- delivered_amount[ORDERINFO][PackageQuantity]
gas_supplier_order –> ordine dei gasisti su un patto supplier - gas [ORDERS]* –> [ORDER]
- id
- pact_id
- datetime_start [opendate]
- datetime_end [closedate]
- order_minimum_amount [EXTRAFIELD]
- delivery_id
- withdrawal_id
- delivery_cost [EXTRAFIELD]
- referrer_person_id
- delivery_referrer_person_id
- withdrawal_referrer_person_id
- group_id
- invoice_amount [EXTRAFIELD]
- invoice_note [EXTRAFIELD]
- root_plan_id
delivery
- id
- place_id
- date [ORDER][deliveryDate]
Incontro GDL sull'interoperabilità del 15/11/2014
Conteunti presi da: http://piratepad.net/ANbI4uJ8VG
Durante il tavolo tecnico per lo standard il formato GDXP è stato esaminato al fine di verificarne l'espressività riguardo le entità e le relazioni coinvolte nell'attività di acquisto dei GAS. Il formato è visionabile al link https://github.com/madbob/GASdotto/wiki/GDXPTodo . Il tavolo ha prodotto le seguenti proposte di modifica / integrazione:
NOTA: a livello di formato, inserire un numero limite di caratteri per il contenuto di alcuni campi.
TODO: in una versione successiva, abdrebbero inserite informazioni anche su accreditmento e rating del produttore/fornitore, anche tramite link a risorse esterne, come siti o social network
- elemento supplier:
- almeno un elemento tra taxCode e vatNumber deve essere presente. Se l'azienda è in realtà una singola persona fisica, questa potrà inserire il proprio codice fiscale.
- l'elemento name non dovrebbe contenere piu di 200 caratteri.
- l'elemento note dovrebbe essere opzionale
- aggiungere un campo obbligatorio description. Questo campo sarà utilizzato per inserire un descrizione verbosa del produttore/fornitore e non dovrebbe contenere piu di (un numero ancora da definire di) caratteri.
- aggiungere un elemento di nome generator che contenga l'informazione sull'esporatore che ha prodotto l'xml
- aggiungere un elemento di nome source che contenga l'informazione sulla fonte da cui viene esportato il produttore/fornitore (gestionale, …)
- inserire un elemento obbligatorio subject che indichi a quale soggetto (GAS, ..) si riferisce l'ordine o il listino rappresentati. Questo elemento conterrà due attributi:
- id
- type
- inserire un elemento id che, nel caso si rappresenti un ordine, indichi l'id dell'ordine stesso nel gestionale di provenienza
- inserire un elemento tipology che indichi il tipo di azienda (coperativa, ditta individuale, azienda agricola, …. )
- elemento address:
- inserire un elemento facoltativo extraFields per dare la possibilità di specificare altre informazioni geografiche e logistiche
- elemento primary:
- elementi faxNumber e webSite opzionali
- elemento extraContact:
- almeno un campo tra phoneNumber, mobileNumber ed emailAddress deve necessariamente essere obbligatorio
- elemento product:
- nell'elemnto um discutere a proposito della lista di unità di misura possibili. La proposta è di avere una lista ben definita di queste unità di misura, da adottare fra tutti i gestionali
- nell'elemento category definire in maniera univoca le categorie che è possibile inserire. Queste categorie dovrebbero essere condivise tra tutti i gestionali
- per ora l'elemento description non dovrebbe avere limitazioni nel numero di caratteri; eventualmente il soggetto importatore (es. un gestionale) ne troncherà il contenuto se eccessivamente lungo
- inserire un elemento vat che indichi il valore dell'iva relativa al prodotto; questo valore puo essere 0 se il produttore è una persona fisica che non applica l'iva ai prodotti.
- NOTA: inserire un attributo all'elemento vat [nome da definire: toApply come boolean?] che indichi se l'iva è da applicare al prezzo del prodotto (umPrice di orderInfo ), oppure se questo lo include già e quindi è da scorporare