User Tools

Site Tools


interoperabilita:gdxp

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
interoperabilita/gdxp.txt · Last modified: 2014/11/17 16:33 by letti