<?php
trait ContentAperturaCaja
{
    public function executeTrait()
    {
        LayoutTemplate::getInstance()->setUseBootstrap();

        $b_Control        = $this->getRequestParameter( 'Control' );
        $this->s_IdCierre = $this->getRequestParameter( 'id_cierre' );

        $this->s_MensajeError = "";
        $this->s_DisabledFiel = "";
        $this->s_DisabledInp  = "";
        $this->s_Titulo       = "Aperturar Caja";
        $this->b_Result       = null;

        $o_FCO_CajaFN = new FCO_CajaFN();
        $o_FCO_CajaFN->setIdCompania( myUser::getUser()->getIdBusiness() );
        $o_FCO_CajaFN->setIdSucursal( myUser::getUser()->getIdSucursal() );
        $o_FCO_CajaFN->addCondition( "( SELECT COUNT(*) FROM FCO_CajaUsuario where IdUsuario='".myUser::getUser()->getUserId()."' and IdCaja=FCO_Caja.IdCaja )", ">=", 1 );
        $this->a_FCO_Caja = $o_FCO_CajaFN->select();

        $this->o_FCO_CierreBN = new FCO_CierreBN();
        $o_FCO_CierreFN = new FCO_CierreFN();
        if( $this->s_IdCierre )
        {
            $this->o_FCO_CierreBN = $o_FCO_CierreFN->selectByPK( $this->s_IdCierre );
            if( !$this->o_FCO_CierreBN )
            {
                $this->o_FCO_CierreBN = new FCO_CierreBN();
                $this->s_MensajeError = "No se encontro el Registro.";
                $this->s_DisabledFiel = "disabled";
            }
            else
            {
                if( $this->o_FCO_CierreBN->getEstado() != FCO_CierreBN::ESTADO_ABIERTO )
                {
                    $this->s_MensajeError = "Actualmente ya se encuentra aperturado la Caja.";
                    $this->s_DisabledFiel = "disabled";
                }
                if( $this->o_FCO_CierreBN->getCodVendedor() != myUser::getUser()->getUserId() )
                {
                    $this->s_MensajeError = "No coicide el usuario Logueado.";
                    $this->s_DisabledFiel = "disabled";
                }
            }
            $this->s_DisabledInp  = "disabled";
        }
        else
        {
            $o_FCO_CierreFN->setEstado( FCO_CierreBN::ESTADO_ABIERTO );
            $o_FCO_CierreFN->setCodVendedor( myUser::getUser()->getUserId() );
            $a_FCO_Cierre = $o_FCO_CierreFN->select();
            if( $a_FCO_Cierre )
            {
                if( !$this->b_Result )
                {
                    $this->s_MensajeError = "Actualmente ya se encuentra aperturado la Caja.";
                    $this->s_DisabledFiel = "disabled";
                }
            }
        }

        $this->o_MST_TurnoBN = new MST_TurnoBN();

        $o_DateTime = new DateTime();
        $s_HoraActual = $o_DateTime->format('H').":00";
        foreach ( MST_TurnoFN::selectActivos() as $o_MST_TurnoBN )
        {
            $s_HoraInicial = $o_MST_TurnoBN->getHoraInicio();
            $s_HoraBucle   = $s_HoraInicial;
            $s_HoraFinal   = $o_MST_TurnoBN->getHoraFinal();
            do
            {
                if( $s_HoraActual == $s_HoraBucle )
                {
                    $this->o_MST_TurnoBN = $o_MST_TurnoBN;
                    break;
                }
                $o_DateTime = new DateTime( $s_HoraBucle );
                $o_DateTime->modify( '+1 hours' );
                $s_HoraBucle = $o_DateTime->format('H:i');

            }
            while( $s_HoraBucle != $s_HoraFinal );
        }
    }
}