cierre_turno.py 2.52 KB
# -*- coding: utf-8 -*-
###############################################################################
#    License, author and contributors information in:                         #
#    __manifest__.py file at the root folder of this module.                  #
###############################################################################

from odoo import models, fields, api, _
from odoo.exceptions import UserError, ValidationError

class asw_cierre_turno(models.TransientModel):
    _name = 'asw.cierre_turno'
    _description = u'Cierre de Turno'

    monto = fields.Float(
        string = 'Monto'
    )

    turno = fields.Many2one(
        string = 'Turno',
        comodel_name = 'asw.turno.caja',
        on_delete = 'set null',
    )

    @api.model
    def default_get(self, values):
        result = super(asw_cierre_turno, self).default_get(values)
        result['turno'] = self.env.context.get('active_id')
        return result

    @api.multi
    def button_save(self):
        if not self.turno.display_name: # False cuando no se devolvio ningun registro
            raise UserError('''Sr. usuario, no tiene ningun turno registrado para
            este día. Por favor corrija su situación y vuelva a intentarlo.''') 
        
        if self.turno.turno_estado == 'cerrado':
            raise UserError('''El turno que intenta cerrar ya ha sido cerrado''')
        
        self.turno.turno_monto_final_real = self.monto
        self.turno.turno_diferencia = self.turno.turno_monto_final_real - self.turno.turno_monto_final
        self.turno.turno_estado = 'cerrado'
        self.transferir_gerencial()
        
        # obj = self.env.ref('asw_multiples_cajas.aeroo_turno_report_id').report_action(self)

        # return obj

    def transferir_gerencial(self):
        #hace la transferencia a la caja credencial e inactiva la caja del turno
        caja_turno = self.turno.turno_caja
        caja_turno_val_tot = caja_turno.total_valores 
        caja_gerencial = self.env.ref('hgt_turnos.asw_caja_gerencial')

        val_co = self.env['asw.valores'].crear_valor_salida(caja_turno_val_tot,caja_turno.id)
        val_de = self.env['asw.valores'].crear_valor_entrada(caja_turno_val_tot,caja_gerencial.id)

        val_co.write({'val_nro_pago': 'Cierre turno de Caja'})
        val_de.write({'val_nro_pago': 'Cierre turno de Caja'})

        caja_turno.write({
            'caja_valor_ids' : [(4,val_co.id)]
        })

        caja_gerencial.write({
            'caja_valor_ids' : [(4,val_de.id)]
        })

        caja_turno.caja_active = False