Regla salarial de ausencia

1,097 views
Skip to first unread message
Assigned to ckas...@gmail.com by me

Christian Kasimis

unread,
Jun 5, 2015, 9:57:33 AM6/5/15
to odoo-ar...@googlegroups.com

Estoy intentando hacer liquidacion de sueldos por medio de odoo 8 con el modulo hr_payroll y al momento de crear una regla salarial que descuente las ausencias tira error de calculo.

La formula que vi en los foros de odoo es la siguiente:

result=-(contract.wage/30)*worked_days.Unpaid.number_of_days

Y probe con y sin la condicion:

result=worked_days.Unpaid and worked_days.Unpaid.number_of_days or False


El tipo de ausencia Unpaid existe en la base de datos y tengo cargada una para probar dentro del periodo del calculo de la nomina. Por algun motivo no la toma. Tambien probe reemplazar sacando la parte de .number_of_days y en ese caso devuelve el valor cero.

Alguien sabe a que se debe?

Gustavo Orrillo

unread,
Jun 5, 2015, 9:58:45 AM6/5/15
to odoo-ar...@googlegroups.com
que error te da?

--
Recuerda siempre poner la mayor cantidad de datos para que se entienda bien que necesitas y que respondes. Algunos errores comunes:
 
- Siempre mencionar en que versión de odoo trabajas.
- Siempre mencionar si el servidor esta en LINUX o en windows y en que versión.
- No alcanza con colocar el debug del error, debes indicar que necesitas que haga el código.
- Comparte tu código en un servidor abierto como Launchpad u otro.
- Si haces un manual, tutorial o algo de interés comunal, trata de usar google docs.
 
Tu tiempo es tan valioso como el de cualquiera de la comunidad. Aquí se valora el aporte que hagas.
 
Nuestras normas mínimas de convivencia puede leerlas en https://groups.google.com/d/forum/odoo-argentina?hl=es-ES
---
Has recibido este mensaje porque estás suscrito al grupo "odoo-Argentina - Preguntas y respuestas para personalizadores" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a odoo-argentin...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a odoo-ar...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Christian Kasimis

unread,
Jun 5, 2015, 10:14:52 AM6/5/15
to odoo-ar...@googlegroups.com
Si le dejo la condicion no calcula nada, si le saco la condicion dice:

¡Error!

Código python erróneo en la regla de salario Faltas sin Aviso

Y el log:

2015-06-05 11:04:21,263 22244 INFO nuevabase2 werkzeug: 192.168.1.120 - - [05/Jun/2015 11:04:21] "POST /web/dataset/call_kw/hr.payslip/create HTTP/1.1" 200 -
2015-06-05 11:04:21,344 22244 INFO nuevabase2 werkzeug: 192.168.1.120 - - [05/Jun/2015 11:04:21] "POST /web/dataset/search_read HTTP/1.1" 200 -
2015-06-05 11:04:21,415 22244 INFO nuevabase2 werkzeug: 192.168.1.120 - - [05/Jun/2015 11:04:21] "POST /web/dataset/call_kw/hr.payslip/search_read HTTP/1.1" 200 -
2015-06-05 11:04:21,738 22244 ERROR nuevabase2 openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
  File "/opt/odoo/server/openerp/http.py", line 536, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/server/openerp/http.py", line 573, in dispatch
    result = self._call_function(**self.params)
  File "/opt/odoo/server/openerp/http.py", line 309, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/odoo/server/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/server/openerp/http.py", line 306, in checked_call
    return self.endpoint(*a, **kw)
  File "/opt/odoo/server/openerp/http.py", line 802, in __call__
    return self.method(*args, **kw)
  File "/opt/odoo/server/openerp/http.py", line 402, in response_wrap
    response = f(*args, **kw)
  File "/opt/odoo/server/addons/web/controllers/main.py", line 941, in call_button
    action = self._call_kw(model, method, args, {})
  File "/opt/odoo/server/addons/web/controllers/main.py", line 929, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/opt/odoo/server/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/server/addons/hr_payroll/hr_payroll.py", line 391, in compute_sheet
    lines = [(0,0,line) for line in self.pool.get('hr.payslip').get_payslip_lines(cr, uid, contract_ids, payslip.id, context=context)]
  File "/opt/odoo/server/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/server/addons/hr_payroll/hr_payroll.py", line 581, in get_payslip_lines
    amount, qty, rate = obj_rule.compute_rule(cr, uid, rule.id, localdict, context=context)
  File "/opt/odoo/server/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/server/addons/hr_payroll/hr_payroll.py", line 863, in compute_rule
    raise osv.except_osv(_('Error!'), _('Wrong python code defined for salary rule %s (%s).')% (rule.name, rule.code))
except_orm: (u'\xa1Error!', u'C\xf3digo python err\xf3neo en la regla de salario Faltas sin Aviso (0105).')
2015-06-05 11:04:21,741 22244 INFO nuevabase2 werkzeug: 192.168.1.120 - - [05/Jun/2015 11:04:21] "POST /web/dataset/call_button HTTP/1.1" 200 -
2015-06-05 11:04:22,440 22244 INFO nuevabase2 werkzeug: 192.168.1.120 - - [05/Jun/2015 11:04:22] "POST /web/dataset/search_read HTTP/1.1" 200 -

Gustavo Orrillo

unread,
Jun 5, 2015, 10:16:07 AM6/5/15
to odoo-ar...@googlegroups.com
cual es el valor de worked_days.Unpaid.number_of_days? hay una variable que no existe, ese es el problema que hay

Christian Kasimis

unread,
Jun 5, 2015, 10:31:43 AM6/5/15
to odoo-ar...@googlegroups.com


La tabla figura vacia. Ahora probe cambiar "worked_days" por "hr_payslip_worked_days" y tampoco me funciono.


La realidad es que no sabria hacerlo desde cero, solo tome la idea del foro de odoo y al parecer funciona, pero quizas es con la version anterior.


Estas son las variables permitidas segun la ayuda de odoo


# Available variables:

#----------------------

#payslip: object containing the payslips

# employee: hr.employee object

# contract: hr.contract object

# rules: object containing the rules code (previously computed)

# categories: object containing the computed salary rule categories (sum of amount of all rules belonging to that category).

# worked_days: object containing the computed worked days.

# inputs: object containing the computed inputs

# Note: returned value have to be set in the variable 'result'


Gustavo Orrillo

unread,
Jun 5, 2015, 10:35:32 AM6/5/15
to odoo-ar...@googlegroups.com
el hecho que no hayan datos podria explicar porque el valor de la variable es nulo

Christian Kasimis

unread,
Jun 5, 2015, 10:50:30 AM6/5/15
to odoo-ar...@googlegroups.com


Donde si veo que figura el valor es en la tabla hr_holidays pero desconozco si se puede hacer la llamada desde alli

Gustavo Orrillo

unread,
Jun 5, 2015, 10:53:43 AM6/5/15
to odoo-ar...@googlegroups.com
me parece que vas a tener que definir en el modelo del payroll una columna que te permita referir ese valor y poder verlo cuando haces la liquidacion.

Christian Kasimis

unread,
Jun 5, 2015, 11:13:25 AM6/5/15
to odoo-ar...@googlegroups.com
Muchas gracias gustavo!

Por ahora eso supera por completo mis conocimientos, voy a ver si creo una base nueva y reviso todos los pasos para ver si logro llevar los datos a la planilla inicial o veo si la documentacion que encontre se referia a la version 8 o una anterior y los mantengo al tanto por si a alguno mas le interesa el tema

Gustavo Orrillo

unread,
Jun 5, 2015, 11:20:59 AM6/5/15
to odoo-ar...@googlegroups.com
mira... en su momento para liquidar sueldos en un cliente, fue un proceso que nos llevo desde 0 un mes. Ahora, pudimos hacerlo porque tambien conociamos de desarrollo en Odoo. Sino se te hace muy cuesta arriba porque hay conceptos que para calcularlos si o si necesitas hacer cambios al modelo. Cambios menores, pero cambios al fin

Saludos y espero no haberte asustado

Christian Kasimis

unread,
Jun 5, 2015, 11:51:41 AM6/5/15
to odoo-ar...@googlegroups.com

Para nada, todo aporte suma! Gracias por la orientacion y la pronta repuesta

Christian Kasimis

unread,
Jun 5, 2015, 12:27:35 PM6/5/15
to odoo-ar...@googlegroups.com
Finalmente di con el error.

En el contrato del empleado habia que agregarle los dias y horarios en los que asiste a la empresa para que tome las faltas como tales. Y en la formula tuve que poner Impagada en vez de Unpaid que era como lo traia el sistema a la tabla hr_payslip_worked_days. Resuelto eso hizo el calculo sin problemas
Reply all
Reply to author
Forward
0 new messages