django-99minutos 1.0.0
Django 99minutos Integration
License: MIT
Requires Python: >=3.7

# django-99MINUTOS

## Starting
_These instructions will allow you to install the library in your python project._

### Current features

-   Get default payload.
-   Create shipping.

### Pre-requisitos

-   Python >= 3.7
-   Django >= 3
-   requests >= 2
***
## Installation

1. To get the latest stable release from PyPi:
```
pip install django-99minutos
```
or

2. From a build
```
git clone https://gitlab.com/linets/ecommerce/oms/integrations/django-99minutos
```

```
cd {{project}}
```

```
python setup.py sdist
```
and, install in your project django
```
pip install {{path}}/django-99MINUTOS/dist/{{tar.gz file}}
```

3. Settings in django project

```
DJANGO_99MINUTOS = {
    'XCIXMINUTOS': {
        'BASE_URL': '<99MINUTOS_BASE_URL>',
        'TOKEN': '<99MINUTOS_TOKEN>',
        'SERVICE': '<99MINUTOS_SERVICE>',
        'START_TIME': '<99MINUTOS_START_TIME>',
        'END_TIME': '<99MINUTOS_END_TIME>',
    },
    'SENDER': {
        'CD_NAME': '<99MINUTOS_CD_NAME>',
        'CD_ADDRESS': '<99MINUTOS_CD_ADDRESS>',
        'CD_COMMUNE': '<99MINUTOS_CD_COMMUNE>',
        'CD_LOCATION_ID': '<99MINUTOS_CD_LOCATION_ID>',
    }
}
```

## Usage

1. Create instance to be sent
    ```
    import json
    from types import SimpleNamespace

    dict_ = {
        'shipments': [
            {
                'internalKey': '',
                'deliveryType': 'NXD',
                'sender': {
                    'firstName': 'Esteban',
                    'lastName': 'Ramirez',
                    'phone': '+52999999999',
                    'email': 'esteban@gmail.com'
                },
                'recipient': {
                    'firstName': 'Carlos',
                    'lastName': 'Gonzalez',
                    'phone': '+52999999999',
                    'email': 'esteban@gmail.com'
                },
                'origin': {
                    'address': 'Av. del Taller 451, Jardín Balbuena, Álvaro Obregón, 15900 Ciudad de México, CDMX, México',
                    'country': 'MEX',
                    'reference':'Primer Piso',
                    'zipcode': '15900'
                },
                'destination': {
                    'address': 'Av 9 Pte 308, Centro histórico de Puebla, Puebla, Pue., México',
                    'reference':'Torre 3 Apartamente 905',
                    'country': 'MEX',
                    'zipcode': '72000'
                },
                'payments': {
                    'paymentMethod': 'monthly'
                },
                'options': {
                    'pickUpAfter':'2022-02-01T08:00:00.000Z',
                    'deliveryBetween': {
                       'start':'2022-02-02T12:00:00.000Z',
                       'end':'2022-02-02T20:00:00.000Z'
                    },
                    'requiresIdentification': False,
                    'requiresSignature': False,
                    'twoFactorAuth': False,
                    'notes':'**Information to be printed on the label**'
                },
                'items': [
                    {
                        'size': 's',
                        'description': 'lorem ipsum',
                        'weight': 1000,
                        'length': 50,
                        'width': 30,
                        'height': 20
                    }
                ]
            }
        ],
        'draft': False
    }

    instance = json.loads(json.dumps(dict_), object_hook=lambda attr: SimpleNamespace(**attr))
    ```

2. Get default payload:
```
from XCIXminutos.handler import XCIXMinutosHandler

handler = XCIXMinutosHandler()
default_data = handler.get_default_payload(<instance>)
```

3. Create shipping:
```
from XCIXminutos.handler import XCIXMinutosHandler

handler = XCIXMinutosHandler()
default_data = handler.create_shipping(<default_data>)
```

4. Get events:
```
from XCIXminutos.handler import XCIXMinutosHandler

handler = XCIXMinutosHandler()

raw_data = {
    '_id': {
        '$oid': '636142b3ba74ddfba5152d3e'
    },
    'request': {
        'url': 'https://api.bendo.app/api/wh/99minutosv3/',
        'headers': {
            'Authorization': 'Basic KEY',
            'Content-Type': 'application/json',
            'User-Agent': '99notifications'
        },
        'body': {
            'statusname': 'onRoadToDelivery',
            'trackingid': '7250229709',
            'internalkey': '786-A1D-D33',
            'events': [
                {
                    'statuscode': '1002',
                    'statusname': 'confirmed',
                    'data': {
                        'comment': 'NEW_ORDER_CONFIRMED',
                        'evidence': []
                    },
                    'createdat': '2022-10-31 15:16:09'
                },
                {
                    'statuscode': '2003',
                    'statusname': 'collected',
                    'data': {
                        'comment': 'Recolectada por el veloz Don Veloz 99m B 3ed6433',
                        'evidence': []
                    },
                    'createdat': '2022-10-31 19:17:58'
                },
                {
                    'statuscode': '3001',
                    'statusname': 'stored',
                    'data': {
                        'comment': 'En estación MX0 por módulo de inducción',
                        'evidence': []
                    },
                    'createdat': '2022-11-01 06:02:25'
                },
                {
                    'statuscode': '3002',
                    'statusname': 'onContainer',
                    'data': {
                        'comment': 'Contenerizado en la estación MX0 en el contenedor VIH-131 en el finger F4',
                        'evidence': []
                    },
                    'createdat': '2022-11-01 06:35:31'
                },
                {
                    'statuscode': '3003',
                    'statusname': 'chargedToVehicle',
                    'data': {
                        'comment': 'Subida al line haul del veloz Juan Carlos, Enciso Ahuatzi con las placas LE17833 en la estacion MX0 dentro del contenedor VIH-131',
                        'evidence': []
                    },
                    'createdat': '2022-11-01 09:54:15'
                },
                {
                    'statuscode': '3004',
                    'statusname': 'onLinehaul',
                    'data': {
                        'comment': 'Despachado de la estación MX0 hacia la estación MX3, en el line haul del veloz Juan Carlos, Enciso Ahuatzi con las placas LE17833 en el contenedor VIH-131',
                        'evidence': []
                    },
                    'createdat': '2022-11-01 10:22:47'
                },
                {
                    'statuscode': '3001',
                    'statusname': 'stored',
                    'data': {
                        'evidence': [],
                        'comment': 'En estación final MX3 por módulo de inducción'
                    },
                    'createdat': '2022-11-01 11:40:19'
                },
                {
                    'statuscode': '4001',
                    'statusname': 'onRoadToDelivery',
                    'data': {
                        'comment': 'Asignación masiva al veloz: Felipe Ramirez Zepeda por: nancy.concepcion en la estación: Alvaro Obregón el número de orden 7250229709',
                        'evidence': []
                    },
                    'createdat': '2022-11-01 16:00:50'
                }
            ]
        }
    }

response = handler.get_events(raw_data)

Output:
[{
    'city': 'Santiago'
    'state': 'RM',
    'description': 'Llego al almacén',
    'date': '12/12/2021'
}]
```

5. Get status and if "is_delivered":
```
from XCIXminutos.handler import XCIXMinutosHandler

handler = XCIXMinutosHandler()

raw_data = {
    '_id': {
        '$oid': '636142b3ba74ddfba5152d3e'
    },
    'request': {
        'url': 'https://api.bendo.app/api/wh/99minutosv3/',
        'headers': {
            'Authorization': 'Basic KEY',
            'Content-Type': 'application/json',
            'User-Agent': '99notifications'
        },
        'body': {
            'statusname': 'onRoadToDelivery',
            'trackingid': '7250229709',
            'internalkey': '786-A1D-D33',
            'events': [
                {
                    'statuscode': '1002',
                    'statusname': 'confirmed',
                    'data': {
                        'comment': 'NEW_ORDER_CONFIRMED',
                        'evidence': []
                    },
                    'createdat': '2022-10-31 15:16:09'
                },
                {
                    'statuscode': '2003',
                    'statusname': 'collected',
                    'data': {
                        'comment': 'Recolectada por el veloz Don Veloz 99m B 3ed6433',
                        'evidence': []
                    },
                    'createdat': '2022-10-31 19:17:58'
                },
                {
                    'statuscode': '3001',
                    'statusname': 'stored',
                    'data': {
                        'comment': 'En estación MX0 por módulo de inducción',
                        'evidence': []
                    },
                    'createdat': '2022-11-01 06:02:25'
                },
                {
                    'statuscode': '3002',
                    'statusname': 'onContainer',
                    'data': {
                        'comment': 'Contenerizado en la estación MX0 en el contenedor VIH-131 en el finger F4',
                        'evidence': []
                    },
                    'createdat': '2022-11-01 06:35:31'
                },
                {
                    'statuscode': '3003',
                    'statusname': 'chargedToVehicle',
                    'data': {
                        'comment': 'Subida al line haul del veloz Juan Carlos, Enciso Ahuatzi con las placas LE17833 en la estacion MX0 dentro del contenedor VIH-131',
                        'evidence': []
                    },
                    'createdat': '2022-11-01 09:54:15'
                },
                {
                    'statuscode': '3004',
                    'statusname': 'onLinehaul',
                    'data': {
                        'comment': 'Despachado de la estación MX0 hacia la estación MX3, en el line haul del veloz Juan Carlos, Enciso Ahuatzi con las placas LE17833 en el contenedor VIH-131',
                        'evidence': []
                    },
                    'createdat': '2022-11-01 10:22:47'
                },
                {
                    'statuscode': '3001',
                    'statusname': 'stored',
                    'data': {
                        'evidence': [],
                        'comment': 'En estación final MX3 por módulo de inducción'
                    },
                    'createdat': '2022-11-01 11:40:19'
                },
                {
                    'statuscode': '4001',
                    'statusname': 'onRoadToDelivery',
                    'data': {
                        'comment': 'Asignación masiva al veloz: Felipe Ramirez Zepeda por: nancy.concepcion en la estación: Alvaro Obregón el número de orden 7250229709',
                        'evidence': []
                    },
                    'createdat': '2022-11-01 16:00:50'
                }
            ]
        }
    }

response = handler.get_status(raw_data)

Output:
('Entregado', True)
```