Configuracion: seccion Comisiones con % global default y % editable por doctor
This commit is contained in:
@@ -1944,6 +1944,30 @@ class SkeenFrontendController(http.Controller):
|
||||
except Exception as e:
|
||||
return json_response({'status': 'error', 'message': str(e)}, 500)
|
||||
|
||||
@http.route('/skeen/frontend/v1/doctors/<int:doctor_id>/commission', type='http', auth='none', methods=['POST', 'OPTIONS'], csrf=False)
|
||||
@require_role('admin')
|
||||
def set_doctor_commission(self, doctor_id, **kw):
|
||||
"""Designa el % de comisión de un doctor (0-100). 0 = usa el % global."""
|
||||
try:
|
||||
doctor = request.env['hr.employee'].sudo().browse(doctor_id)
|
||||
if not doctor.exists():
|
||||
return json_response({'status': 'error', 'message': 'Médico no encontrado'}, 404)
|
||||
data = _parse_json_body()
|
||||
try:
|
||||
pct = float(data.get('commission_pct'))
|
||||
except (TypeError, ValueError):
|
||||
return json_response({'status': 'error', 'message': 'commission_pct debe ser numérico'}, 400)
|
||||
if not 0 <= pct <= 100:
|
||||
return json_response({'status': 'error', 'message': 'El porcentaje debe estar entre 0 y 100'}, 400)
|
||||
doctor.write({'commission_pct': pct})
|
||||
return json_response({
|
||||
'status': 'success',
|
||||
'doctor': {'id': doctor.id, 'name': doctor.name, 'commission_pct': doctor.commission_pct},
|
||||
})
|
||||
except Exception as e:
|
||||
request.env.cr.rollback()
|
||||
return json_response({'status': 'error', 'message': str(e)}, 500)
|
||||
|
||||
@http.route('/skeen/frontend/v1/doctors/<int:doctor_id>/history', type='http', auth='none', methods=['GET', 'OPTIONS'], csrf=False)
|
||||
@require_role('lectura')
|
||||
def doctor_history(self, doctor_id, **kw):
|
||||
@@ -3693,6 +3717,33 @@ class SkeenFrontendController(http.Controller):
|
||||
except Exception as e:
|
||||
return json_response({'status': 'error', 'message': str(e)}, 500)
|
||||
|
||||
@http.route('/skeen/frontend/v1/config/commission_default', type='http', auth='none', methods=['GET', 'OPTIONS'], csrf=False)
|
||||
@require_role('admin')
|
||||
def get_commission_default(self, **kw):
|
||||
"""% de comisión global por defecto (se aplica a médicos sin % propio)."""
|
||||
try:
|
||||
ICP = request.env['ir.config_parameter'].sudo()
|
||||
pct = float(ICP.get_param('skeen.commission_pct', 0) or 0)
|
||||
return json_response({'status': 'success', 'commission_pct': pct})
|
||||
except Exception as e:
|
||||
return json_response({'status': 'error', 'message': str(e)}, 500)
|
||||
|
||||
@http.route('/skeen/frontend/v1/config/commission_default', type='http', auth='none', methods=['POST', 'OPTIONS'], csrf=False)
|
||||
@require_role('admin')
|
||||
def set_commission_default(self, **kw):
|
||||
try:
|
||||
data = _parse_json_body()
|
||||
try:
|
||||
pct = float(data.get('commission_pct'))
|
||||
except (TypeError, ValueError):
|
||||
return json_response({'status': 'error', 'message': 'commission_pct debe ser numérico'}, 400)
|
||||
if not 0 <= pct <= 100:
|
||||
return json_response({'status': 'error', 'message': 'El porcentaje debe estar entre 0 y 100'}, 400)
|
||||
request.env['ir.config_parameter'].sudo().set_param('skeen.commission_pct', pct)
|
||||
return json_response({'status': 'success', 'commission_pct': pct})
|
||||
except Exception as e:
|
||||
return json_response({'status': 'error', 'message': str(e)}, 500)
|
||||
|
||||
# ============================================================
|
||||
# Reporte de cumpleañeros
|
||||
# ============================================================
|
||||
|
||||
Reference in New Issue
Block a user