Author: |
Trey (www.trey.es) |
License: |
AGPL-3 |
Branch: |
8.0 |
Repository: |
acysos/trey-addons |
Dependencies: |
account,
account_payment_partner,
base,
booking,
booking_base,
booking_webservice,
purchase,
and
sale |
Languages: |
HTML (946, 0.0%),
JSON (3080500, 99.9%),
Markdown (112, 0.0%),
PO File (299, 0.0%),
Python (1741, 0.1%),
and
XML (378, 0.0%) |
Other repositories: |
RL-OtherApps/trey-addons,
TheCloneMaster/trey-addons,
kit9/trey-addons,
and
treytux/trey-addons |
<h1>Booking Webservice Methabook</h1>
<h1>WebService:</h1>
<p>Son 4 funciones a implementar que iran asociados a un cron:</p>
<ol>
<li>Procesar JSON de con todas las reservas tras GET a la api</li>
<li>PUT a la api con de las reservas, customer y suppliers procesados.</li>
<li>PUT para marcar reservas como pagadas.</li>
<li><p>PUT para indicar si el cliente tiene credito o no. (Controlar segun las fechas del ultimo barrido realizado y filtrar por todos los clientes con cambios en el campo credit).</p>
<ol>
<li><strong><em>Procesado de JSON:</em></strong></li>
<li>endpoint: erpapi.iboosy.com/export
Recorremos el json de forma unidireccional para procesar los bookings que a priori tengan estos dos campos.
Cada "booking del json" corresponde al objeto booking
~~~
Crear/actualizar ==> Crear/actualizar ==> Crear/Actualizar solo reservas
customer suplier con Customer y supplier
| | no incluidos en listas de
| | no validos
* *
Generar lista Generar lista
de no validos de no validos
~~~</li>
<li><strong><em>Put a la api con las reservas, customer y suppliers procesados.</em></strong></li>
<li>endpoint: erpapi.iboosy.com/export/confirm</li>
</ol></li>
</ol>
<p>~~~
{
"exportId": "f4922009-51ba-4ea3-b71f-dc6c5a627079",
"exportedAt": "2017/06/01 15:32",
"customers": [
{
"account": "4300000058"
}
],
"suppliers": [
{
"account": "4300000058"
}
],
"bookings": [
{
"locator": "4300000058"
},
{
"locator": "LOCXXXXX"
}
]
}
~~~</p>
<ol>
<li><strong><em>Marcar Reserva como pagada</em></strong></li>
<li><p>endpoint: erpapi.iboosy.com/booking/paid
~~~
{
"bookings": [
{
"locator": "LOC00012"
},
{
"locator": "LOC00013"
}
]
}
~~~</p></li>
<li><p><strong><em>Actualizar Credito del cliente:</em></strong></p></li>
<li><p>endpoint: erpapi.iboosy.com/customer/changecredit
~~~
{
"Account":”4300000058”,
“WithCredit”: true
}
~~~
Casuisticas:</p></li>
<li><p>No tiene saldo, limite_research = True (ya se se ha detectado, vuelve a no tener saldo)</p>
<ul>
<li>si han pasado los dias indicados en la compañia, <em>days</em>to<em>notify</em>customer_: notifica de nuevo</li>
</ul></li>
</ol>
<ul>
<li><p>No tiene saldo, <em>credit</em>limit<em>reached = False</em> (Nuevo con sin saldo)</p>
<ul>
<li><em>credit</em>limit<em>reached = True</em></li>
<li>anotamos fecha</li>
<li>notificamos api</li>
</ul></li>
<li><p>Tiene saldo, <em>credit</em>limit<em>reached = True</em> (viene de estar sin saldo, NUEVAmente con saldo)</p>
<ul>
<li>notificamos tiene saldo:</li>
<li>notificamos api</li>
</ul></li>
<li><p>Tiene saldo, <em>credit</em>limit<em>reached = False</em> (situacion normal)</p>
<ul>
<li>tiene un 80% ?</li>
<li>notificariamos</li>
</ul></li>
</ul>
<h1>Vistas Webservice:</h1>
<p>Menu Reservas/ Configuración / Webservice:
Existe un webservice para cada acción:
- Solole booking: Proceso principal de importación de reservas.
- Solole Confirm Booking: Tras el procesamiento de las reservas se indican las reservas, los clientes y los proveedores importados en Odoo.
- Solole Paid: Webservice para indicar a la plataforma de iboosy que queda pagada esa reserva.
- Solole Change credit: Websevice para indicar si tiene saldo o no el cliente.</p>
<h1>Tests:</h1>
<p>En el directorio test hay tres ficheros:
+ El servidor: levanta el "servicio" de la api.</p>
<ul>
<li>api.py: para las pruebas de la estructura del JSON.</li>
<li>test<em>webservice</em>methabook.py : para lanzar el procesado de las reservas</li>
</ul>
<p>Para realizar las pruebas de <strong>conexión</strong>:
+ Podemos lanzar el servidor Fake en el propio directorio de tests y nos proporciona la "api" con dos rutas para realizar los GET de exportación de reservas:
<code>
$ python web-server_api.py
</code></p>
<ul>
<li>http://localhost:8080/
nos da un json con los datos que nos proporciono iboosy al principio.
contienen datos insuficiones en campos de customer,booking,suppliers.</li>
<li><p>http://localhost:8080/content2
nos da un json con datos reales, pero faltan Zones, para componer el lugar de la reserva.</p></li>
<li><p>Siempre tener en cuenta la convivencia de los dos webservice: type=juniper y type=methabook</p></li>
</ul>
<p><strong>Para realizar las pruebas de carga de datos</strong>:
+ Descomentamos el boton:
+ 'First Load Bookings Json' situado en <em>booking<em>webservice</em>methabook/views/webservice_view.xml</em>.
+ Desde Odoo, en apartado Reservas, apartado Webservice Log, vamos a copiar el json que produce el error:
* Filtramos por Tipo: reserva, Estado: bookings
* Seleccionamos la ultima importación. Pestaña Datos importados y copiamos el contenido entre corchetes para pegarlo en un fichero ubicado en tests para realizar su carga manual.
+ En la función <strong>first<em>load</em>bookings_json</strong> (<em>trey-addons/booking<em>webservice</em>methabook/models/webservice.py</em>) indicamos el fichero test a cargar y podemos empezar a importar reservas desde el fichero.</p>