<?php
class AsociarClienteAction extends wtActions
{
    public function execute()
    {
        LayoutTemplate::getInstance()->setUseBootstrap();

        $this->s_IdHabitacion = $this->getRequestParameter( 'idhabitacion' );

        $this->s_MensajeError = "";

        try
        {
            $o_MST_UbicacionFN = new MST_UbicacionFN();
            $this->o_MST_UbicacionBN = $o_MST_UbicacionFN->selectByPK( $this->s_IdHabitacion );
            //pr( $this->o_MST_UbicacionBN );
            $this->a_ALM_ItemMast = ALM_ItemMastFN::buscarItemPorParamUbicacion( $this->o_MST_UbicacionBN->getIdCategoria(), $this->o_MST_UbicacionBN->getIdTipoUbicacion() );
            if( !$this->a_ALM_ItemMast )
            {
                $this->s_MensajeError = "No se encontro una Tarifa asociada.";
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //ahora se realiza validaciones por asignacion de calendario y feriados
            $a_LstObjItem = $this->a_ALM_ItemMast;
            $this->a_ALM_ItemMast = array();

            foreach ( $a_LstObjItem as $key => $o_ALM_ItemMastBN ) 
            {
                $b_Control = iRecepcionUbicacion::validarItemEsDiaSemanaFeriado( $o_ALM_ItemMastBN );

                if( $b_Control )
                {
                    //pr( $o_ALM_ItemMastBN->getIdItem() );
                    $this->a_ALM_ItemMast[] = $o_ALM_ItemMastBN;
                }
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            if( myUser::getUser()->getUserId() )
            {
                $o_GSS_UsuarioSucuDocumentoFN = new GSS_UsuarioSucuDocumentoFN();
                $o_GSS_UsuarioSucuDocumentoFN->setIdusuario( myUser::getUser()->getUserId() );
                $o_GSS_UsuarioSucuDocumentoFN->setIdCompania( myUser::getUser()->getIdBusiness() );
                $a_GSS_UsuarioSucuDocumento = $o_GSS_UsuarioSucuDocumentoFN->select();
                foreach ( $a_GSS_UsuarioSucuDocumento as $key => $o_GSS_UsuarioSucuDocumentoBN ) 
                {
                    $o_GSS_SucursalDocumentoFN = new GSS_SucursalDocumentoFN();
                    $o_GSS_SucursalDocumentoBN = $o_GSS_SucursalDocumentoFN->selectByPK( $o_GSS_UsuarioSucuDocumentoBN->getIdSucursalDocumento() );
                    if( $o_GSS_SucursalDocumentoBN->getEstado() != "A" )
                    {
                        continue;
                    }
                    $o_VTA_TipoDocumentoFN = new VTA_TipoDocumentoFN();
                    $o_VTA_TipoDocumentoBN = $o_VTA_TipoDocumentoFN->selectByPK( $o_GSS_SucursalDocumentoBN->getIdTipoDocumento() );

                    $this->a_VTA_TipoDocumento[] = $o_VTA_TipoDocumentoBN;
                }
            }
            else
            {
                $this->a_VTA_TipoDocumento = array();
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //SE CAMBIA EL PROCEDIMIENTO PARA CAJA, AHORA EXITE LA APERTURA DE CAJA ASOCIANDO AL CIERRE EN ESTADO ABIERTO - 2020-02-02
            $o_FCO_CierreFN = new FCO_CierreFN();
            $o_FCO_CierreFN->setEstado( FCO_CierreBN::ESTADO_ABIERTO );
            $o_FCO_CierreFN->setCodVendedor( myUser::getUser()->getUserId() );
            $a_FCO_Cierre = $o_FCO_CierreFN->select();
            $this->b_ControlCaja = false;
            if( count( $a_FCO_Cierre ) == 1 )
            {
                $o_FCO_CierreBN = $a_FCO_Cierre[0];
                $this->b_ControlCaja   = true;
                $this->IdCajaSelect    = $a_FCO_Cierre[0]->getIdCaja();
                $this->DesCajaSelect   = $a_FCO_Cierre[0]->getObjectCaja()->getDescripcion();
                $this->IdTurnoSelect   = $a_FCO_Cierre[0]->getIdTurno();
                $this->DescTurnoSelect = $a_FCO_Cierre[0]->getObjectTurno()->getDescripcion();
            }
            /*//PROCEDIMIENTO PARA CAJA - 2019-11-12
            $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 );
            $a_FCO_Caja = $o_FCO_CajaFN->select();
            $this->lst_caja = $a_FCO_Caja;
            //ahora validamos si ya esta en uso la caja
            $o_FCO_CajaUsuarioFN = new FCO_CajaUsuarioFN();
            $o_FCO_CajaUsuarioFN->setIdUsuario( myUser::getUser()->getUserId() );
            $o_FCO_CajaUsuarioFN->setEnUsoFlag( 1 );
            $a_FCO_CajaUsuario = $o_FCO_CajaUsuarioFN->select();
            $this->b_ControlCaja = true;
            if( $a_FCO_CajaUsuario )
            {
                $this->b_ControlCaja  = false;
                $this->IdCajaSelect   = $a_FCO_CajaUsuario[0]->getIdCaja();
                $this->DesCajaSelect  = $a_FCO_CajaUsuario[0]->getObjectCaja()->getDescripcion();
            }
            //pr( $a_FCO_CajaUsuario );
            */
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            myUser::getUser()->validar_session();
        }
        catch ( Exception $o_Exception )
        {
            $this->s_MensajeError = $o_Exception->getMessage();
        }
    }
}