Seur
====

Python API Seur carrier, Spain.

Features
--------

- Services
- Test connection
- Get cities by zip
- Create/Send shipments to Seur
- Get info delivery (shipment)
- Get list deliveries (shipments) from date

Usage Examples
--------------

Example API in test.py file

Services
--------

.. code-block:: python

    from seur.utils import services
    services()

Test connection
---------------

.. code-block:: python

    with API(username, password, vat, franchise, seurid, ci, ccc, context) as seur_api:
        print seur_api.test_connection()

Create/send shipment to Seur
----------------------------

.. code-block:: python

    context['printer'] = 'ZEBRA'
    context['printer_model'] = 'LP2844-Z'
    context['ecb_code'] = '2C'
    with Picking(username, password, vat, franchise, seurid, ci, ccc, context) as picking_api:
        reference, label, error = picking_api.create(data)
        
To get PDF label file pass pdf value in context:

.. code-block:: python

    context['pdf'] = True
    with Picking(username, password, vat, franchise, seurid, ci, ccc, context) as picking_api:
        reference, label, error = picking_api.create(data)

Get Picking Info
----------------

.. code-block:: python

    with Picking(username_expedicion, password_expedicion, vat, franchise, seurid, ci, ccc, context) as picking_api:
        data = {}
        data['expedicion'] = 'S'
        data['public'] = 'N'
        data['reference'] = 'SEURREFERENCE'
        info = picking_api.info(data)

Get Picking List
----------------

.. code-block:: python

    with Picking(username_expedicion, password_expedicion, vat, franchise, seurid, ci, ccc, context) as picking_api:
        data = {}
        data['expedicion'] = 'S'
        data['public'] = 'N'
        data['from'] = '19-03-2014'
        data['to'] = '19-03-2014'
        shipments = picking_api.list(data)

If don't pass from or to values, get today date.

Get Label
---------

.. code-block:: python

    context['pdf'] = True
    with Picking(username, password, vat, franchise, seurid, ci, ccc, context) as picking_api:
        print "Get Label PDF"

        data = {}
        data['servicio'] = '1'
        data['product'] = '2'
        data['total_bultos'] = '1'
        #~ data['total_kilos'] = 
        data['observaciones'] = 'Testing Seur API - Get Label'
        data['referencia_expedicion'] = 'S/OUT/0001'
        data['ref_bulto'] = 'S/OUT/0001'
        #~ data['clave_portes'] = '' # Add F to invoice
        #~ data['clave_reembolso'] = '' # Add F to invoice
        #~ data['valor_reembolso'] = ''
        data['cliente_nombre'] = 'Zikzakmedia SL'
        data['cliente_direccion'] = 'Sant Jaume, 9. Baixos 2'
        #~ data['cliente_tipovia'] = 'CL'
        #~ data['cliente_tnumvia'] = 'N'
        #~ data['cliente_numvia'] = '93'
        #~ data['cliente_escalera'] = 'A'
        #~ data['cliente_piso'] = '3'
        #~ data['cliente_puerta'] = '2'
        data['cliente_poblacion'] = 'Vilafranca del Penedes' # Important city exist in Seur. Get Seur values from zip method
        data['cliente_cpostal'] = '08720'
        data['cliente_pais'] = 'ES'
        data['cliente_email'] = 'zikzak@zikzakmedia.com'
        data['cliente_telefono'] = '938902108'
        data['cliente_atencion'] = 'Raimon Esteve'
        label = picking_api.label(data)

        with open("/tmp/seur-label.pdf","wb") as f:
            f.write(decodestring(label))
        print "Generated PDF label in /tmp/seur-label.pdf"

Get Manifiesto
--------------

.. code-block:: python

    with Picking(username, password, vat, franchise, seurid, ci, ccc, context) as picking_api:
        print "Get Manifiesto"

        data = {}
        manifiesto = picking_api.manifiesto(data)

        with open("/tmp/seur-manifiesto.pdf","wb") as f:
            f.write(decodestring(manifiesto))
        print "Generated PDF label in /tmp/seur-manifiesto.pdf"

Get city or zip exist from Seur API
-----------------------------------

.. code-block:: python

    with Picking(username, password, vat, franchise, seurid, ci, ccc, context) as picking_api:

        city = 'Granollers' # or upper
        options = picking_api.city(city)

        zip = '08720'
        options =  picking_api.zip(zip)

Return dict values from seur.
These methods are important to call when create a new/send picking because Seur
validate city value and  requires city exist in their system.
