<h1 style="text-align: center;">IITA - Odoo</h1>

## Estado actual
El estado actual de cada módulo (en education management) es el siguiente:
* **Estudiantes**
* *Lista de estudiantes*.
* *Registro de asistencias*. Esta sección es para crear la plantilla de asistencia de un batch en particular
* *Hoja de asistencia*. Este sección es para crear la hoja de asistencia de una plantilla existente de un batch. (Cada vez que se desee cargar la asistencia de un curso en un día, se debe crear una nueva hoja)
* *Línea de Asistencia*. Muestra la asistencia POR estudiante, permitiendo dar seguimiento de cada alumno
* **Tutor**
* Visualización de los datos de los tutores registrados
* **Empleados**
* Lista de empleados.
* Habilidades de profesores.
* Asistencia de los profesores.
* **Admisión**
* *Admisión Batch*. Permite crear la plantilla de admisión por batch
* *Datos de registración.* Permite inscribir cada alumno en la correspondiente plantilla de admisión creada.
> || El botón "enroll" genera la deuda de todas las cuotas para ese estudiante del batch al cual se está inscribiendo
> || El botón "dismiss" elimina las deudas de ese estudiante, exceptuando las que debe y la correspondiente al mes en el que se encuentra
* **Pagos**
* *Pagos de estudiantes.* Indica las deudas de los estudiantes.
* *Línea de pagos.* Indica los pagos generados por días.
* *Registro de caja.* Muestra la apertura, cierre y detalle del estado de la caja. Si no se abre la caja, no se puede registrar ningún pago de ningún estudiante.
* Salidas de caja. Muestra las salidas de caja, estos repercuten en el registro.
* **Batch/Cursos**
* *Batch.* Batchs existentes
* *Categoría.* Categorías existentes
* *Cursos.* Cursos existentes, engloban distintos batchs
## Líneas a seguir
- [ ] Integración del moodle con odoo
- [ ] Integración de zoom a odoo (clases virtuales)
- [ ] Integración con Google Maps (normalización de domicilios)
- [ ] Vinculación con CRM
- [ ] Analítica de datos basado en reportes de asistencias
- [ ] Analítica de datos basado en reportes de pagos
- [ ] Configuración de módulo de facturación para AFIP
## Estructura
El proyecto tiene actualmente 5 ramas:
* **main:** contiene el código del proyecto original (todo el trabajo que nos había dejado alejandro). Esta rama no tiene participación en el proyecto actual.
* **master:** contiene el código que se lanza a producción. Esta rama se utiliza únicamente para manipular el código que ya está en condicciones para enviar a la VM.
El comando:
`git pull origin master `
Se debe realizar en la siguiente carpeta de la VM:
`/bitnami/odoo/addons/`
Luego, se debe actualizar el módulo modificado.
* **dev:** contiene el código que se va testeando en local-host.
* Se agrega además el archivo odoo-links.html, con info de links importantes para el desarrollo
* **backup:** rama huerfana. Contiene sólo los scripts (SIN contraseñas) para hacer el back-up de la base de datos y su correspondiente restore.
* **(moodle-backups):** La idea de esta rama es tener los backups de los cursos de moodle, pero el total del .zip pesa 2.1Gb, lo cual excede el tamaño máximo de archivo que se puede subir a github. Este archivo se envío via mail a Gustavo, y en Github subí un pdf con documentación para trabajar con Moodle.
## Información complementaria
#### Reportes
Los reportes disponibles actualmente son:
* Reporte de asistencias:
En "Attendance Sheets", seleccionar las hojas que queremos utilizar para armar el reporte y se genera una planilla idéntica a la física actualmente utilizada
* Resumen de Estudiante:
En el detalle de cada estudiante, el botón "print" permite generar un resumen con la información relacionada con el estudiante
* Línea de pago de estudiante:
Seleccionando las líneas de pago que se deseen, el botón "print" genera el RECIBO que se puede imprimir y entregar al cliente que acaba de realizar el pago
* Registro de caja:
Seleccionando las cajas que se deseen, el botón "print" genera la constancia de todos los movimientos realizados en esa caja, horarios y balance final
#### Moodle
Para integrar Odoo con el Moodle se pueden utilizar los webservices que provee moodle. Se necesita un token, que se genera desde moodle, y en la plataforma se deben habilitar las funciones y sólo las funciones que se van a utilizar.
```
Ruta en el moodle:
Administración del sitio > Extensiones > Servicios web > Servicios externos > Servicios personalizados > Funciones
```
Y allí "agregar funciones".
El código de los webservices ya habilitados están en el modelo "category.py", simplemente se deberían integrar a la operatoria normal del sistema.
#### Scripts de back-ups
Ubicación de los scripts:
```
/home/nicolashussein14/odoo-backups/
```
##### odoo-backup.sh
En la línea ADMIN_PASSWORD=... , se debe agregar la contraseña de la base de datos, no lo subo a github por seguridad<br />
También se configuro el demonio de linux cron, de la siguiente manera:
> Ejecutar el comando:
````
crontab -e
````
> Agregar la línea: (en caso de que se desee realizar el back up todos los dias a las 3:30am)
```
30 3 * * * /home/nicolashussein14/odoo-backups/./backup_odoo.sh
```
##### restore-backup.sh
En la línea BACKUP_FILE=... , se debe agregar el archivo .zip que se desea restaurar<br />
En la línea ADMIN_PASSWORD=... , se debe agregar la contraseña de la base de datos, no lo subo a github por seguridad
#### Multi-companias
Los modelos de education_managment tienen ya el atributo: "company_id" para permitir la visualización de cada compañía según corresponda.
Se deben agregar los usuarios en la pestaña:
```
Ajustes > Usuarios y compañías > Usuarios > Crear
```
Al completar los datos (principalmente seleccionar la compañía predeterminada), se debe **TILDAR "education managment"** ANTES de GUARDAR.
**`Una vez que se guardan los datos, EDITAR y especificar la compañía/s permitida/s para ese usuario y también la predeterminada.`**
## Sugerencias a tener en cuenta
---
A veces odoo se queda "pegado" o tildado, muchas veces me pasó que en producción el código funcionaba correctamente pero en localhost no (teniendo exactamente el mismo código). Ahí es importante considerar lo siguiente:
* Borrar porciones de código comentado en archivos tipo xml, por más que existan comentarios del tipo:
```
<!-- some code -->
```
Igual se generan problemas para cargar las vistas
* Usar git para volver a versiones anteriores del código
* Tratar de tocar lo menos posible el core de Odoo, por ejemplo: si agregamos modificadores a atributos de entidades propias de core del Odoo, se abre la posibilidad de que odoo se tilde en ciertos momentos
---
Si despues de hacer un pull en la VM y actualizar el modulo aparece algun error, intentar primero reiniciar el servicio con:
`sudo /opt/bitnami/ctlscript.sh restart odoo`
---
Para acceder a la bdd de producción en remoto, se deben modificar los archivos pg_hba y postgresql de la vm para poder permitir conexiones remotas.