<?php
class formapagoActions extends wtActions
{
    public function executeIndex()
    {
    }
    
    public function executeRequest()
    {
        set_header_utf8();
        $block        	= $this->getRequestParameter( 'block' );
        $TipoProc     	= $this->getRequestParameter( 'TipoProc' );
        
        $IdCompania 	= $this->getRequestParameter( 'IdCompania' );
        $IdSucursal    	= $this->getRequestParameter( 'IdSucursal' );
        $IdLinea       	= $this->getRequestParameter( 'IdLinea' );
         
        switch ( $TipoProc )
        {
            case "GetSucursal":
                $o_GSS_SucursalFN = new GSS_SucursalFN();
                $o_GSS_SucursalFN->setIdCompania( $IdCompania );
                $a_Result = $o_GSS_SucursalFN->select();
                
                $s_NameId  = "getIdSucursal";
                $s_NameDes = "getDescripcion";
            break;
            case "GetAlmacen":
                $o_ALM_AlmacenMastFN = new ALM_AlmacenMastFN();
                $o_ALM_AlmacenMastFN->setIdCompania( $IdCompania );
                $o_ALM_AlmacenMastFN->setIdSucursal( $IdSucursal );
                $a_Result = $o_ALM_AlmacenMastFN->select();
                
                $s_NameId  = "getIdAlmacen";
                $s_NameDes = "getDescripcionLocal";
            break;
            case "GetFamilia":
                $o_MST_ClaseFamiliaFN = new MST_ClaseFamiliaFN();
                $o_MST_ClaseFamiliaFN->setIdLinea( $IdLinea );
                $o_MST_ClaseFamiliaFN->addOrderBy( MST_ClaseFamiliaFN::Descripcion );
                $a_Result = $o_MST_ClaseFamiliaFN->select();
                
                $s_NameId  = "getIdFamilia";
                $s_NameDes = "getDescripcion";
            break;
        }
        foreach ( $a_Result as $i_Key => $o_ObjectBN )
        {
            $a_lst[$o_ObjectBN->$s_NameId()] = utf8_encode( $o_ObjectBN->$s_NameDes() );
        }
        echo json_encode( $a_lst );
        return ViewResponse::NONE;
    }    
    
    public function executeList()
    {
        LayoutTemplate::getInstance()->setUseBootstrap();
    	$this->block = $this->getRequestParameter( 'block' );
    	
    	$o_GSS_SucursalFN = new GSS_SucursalFN();
    	$o_GSS_SucursalFN->setIdCompania( myUser::getUser()->getIdBusiness() );
    	$this->a_GSS_Sucursal = $o_GSS_SucursalFN->select();
    	
    	$o_GSS_CompaniaFN = new GSS_CompaniaFN();
    	$o_GSS_CompaniaFN->addOrderBy( GSS_CompaniaFN::DescripcionCorta );
    	$this->a_GSS_Compania = $o_GSS_CompaniaFN->select();
    }
    
    public function executeGrid()
    {
        $block = $this->getRequestParameter( 'block' );
        $page  = $this->getRequestParameter( 'page' );
        
        //*set_header_utf8();
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        $o_GridAction = new GridAction();
        $o_GridAction->setClassFind( new FCO_TipoPagoFN() );

        //$o_GridAction->addAssignFilter( "IdCompania" );
        //$o_GridAction->addAssignFilter( "IdPersona" );
        $o_GridAction->addAssignFilter( "IdCompania" );
        $o_GridAction->addAssignFilter( "Nombre" );
        $o_GridAction->addAssignFilter( "Codigo" );
        $o_GridAction->addAssignFilter( "ClaseNombre" );
        $o_GridAction->addAssignFilter( "Estado" );
        //$o_GridAction->addConditionFilter( "Descripcion", GSS_ImpuestoFN::Descripcion, "LIKE", "%%s%" );
        
        //$o_GridAction->addOrder( "Descripcion", GSS_ImpuestoFN::Descripcion );
        //$o_GridAction->addOrder( "Codigo",      GSS_ImpuestoFN::Codigo );
        
        $o_GridAction->addOrderDefault( FCO_TipoPagoFN::FechaCreacion, true );
        
        $o_GridAction->addRowsToShow( "IdTipoPago", "Nombre", "Codigo", "ClaseNombre",  "Estado", "EstadoDesc" );
              
        $o_GridAction->setNumberRecordsShow( 15 );
        
        $o_GridAction->initialize();
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        $a_ResultJson['page']    = $o_GridAction->getPage();
        $a_ResultJson['total']   = $o_GridAction->getTotalPage();
        $a_ResultJson['records'] = $o_GridAction->getTotalRecords();
        $a_ResultJson['rows']    = $o_GridAction->getResultArray();
        //pr( $a_ResultJson );
        echo json_encode( $a_ResultJson );

        return ViewResponse::NONE;   
    }
    
    public function executeAddedit()
    {
        LayoutTemplate::getInstance()->setUseBootstrap();
        $this->block      = $this->getRequestParameter( 'block' );
        $this->i_Id       = $this->getRequestParameter( 'i_Id' );
        $this->s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        
        $this->s_Titulo = "Nuevo Tipo de Pago";
        
        $o_DefaultBN = new MST_ListaPrecioCabeceraFN();
        $o_DefaultBN->setEstado( 'A' );
        $this->o_DefaultBN = $o_DefaultBN;
        
        $o_GSS_MonedaMastFN = new GSS_MonedaMastFN();
        $o_GSS_MonedaMastFN->setEstado( "A" );
        $o_GSS_MonedaMastFN->addOrderBy( GSS_MonedaMastFN::IdMoneda, false );
        $this->a_GSS_MonedaMast = $o_GSS_MonedaMastFN->select();
        
        $this->a_GSS_Sucursal = array();
        $this->o_DefaultBN = new FCO_TipoPagoBN();
        
        if( $this->s_TipoProc == "upd" )
        {
            $this->s_Titulo = "Editar Tipo de Pago";
            
            $o_DefaultFN = new FCO_TipoPagoFN();
            //$this->Default = $o_DefaultFN->selectByPK( $this->i_Id );
            //pr($this->Default);
            $this->o_DefaultBN = $o_DefaultFN->selectByPK( $this->i_Id );
        }
    }
    
    public function executeSaveAddEdit()
    {
        $this->block = $this->getRequestParameter( 'block' );
        $i_Id        = $this->getRequestParameter( 'i_Id' );
        $s_TipoProc  = $this->getRequestParameter( 's_TipoProc' );
        $TypeSub     = $this->getRequestParameter( 'TypeSub' );
        $Estado     = $this->getRequestParameter( 'Estado' );
        $s_Nombre     = $this->getRequestParameter( 'Nombre' );
        $s_Codigo     = $this->getRequestParameter( 'Codigo' );
        $s_ClaseNombre     = $this->getRequestParameter( 'ClaseNombre' );
        
        //$IdCompania = ( int ) $this->getRequestParameter( 'IdCompania' );
        $IdCompania  = myUser::getUser()->getIdCompania();
        //$IdSucursal = ( int ) $this->getRequestParameter( 'IdSucursal' );
        $IdSucursal  = myUser::getUser()->getIdSucursal();
        
        //pr($_REQUEST);
        
        try 
        
        {
            $o_DefaultDP = new FCO_TipoPagoDP();
            
            $o_DefaultDP->setEstado( $Estado );
            $o_DefaultDP->setNombre( $s_Nombre );
            $o_DefaultDP->setCodigo( $s_Codigo );
            $o_DefaultDP->setClaseNombre( $s_ClaseNombre );
            $o_DefaultDP->setMostrar( "Y" );
                
            if( $s_TipoProc == "nvo" )
            {
                //NUEVO
                $i_Id = FCO_TipoPagoDP::recuperarId();
                $o_DefaultDP->setIdTipoPago( ( int ) $i_Id );
                $o_DefaultDP->setFechaCreacion( date( "Y-m-d H:i:s" ) );
                $o_DefaultDP->setUsuarioCreacion( myUser::getUser()->getUserId() );
                $o_DefaultDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                $o_DefaultDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
                $o_DefaultDP->setIdCompania( $IdCompania );
                $o_DefaultDP->save();
            }
            else 
            {
                //UPDATE
                $o_DefaultDP->setIdTipoPago( ( int ) $i_Id );
                $o_DefaultDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                $o_DefaultDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
                $o_DefaultDP->update();
            }
            $a_Rs['type_sub'] = $TypeSub;
            $a_Rs['error']    = false;
            $a_Rs['id']       = $i_Id;
        }
        catch ( Exception $o_Exception )
        {
            $a_Rs['error']         = true;
            $a_Rs['mensaje_error'] = $o_Exception->getMessage();
        }
        
        echo json_encode( $a_Rs );
        
        return ViewResponse::NONE;
    }
    
    public function executeAudi()
    {
        $this->block    = $this->getRequestParameter( 'block' );
        $i_Id           = $this->getRequestParameter( 'i_Id' );
        $this->s_Topico = "Impuesto";
        $o_DefaultFN = new GSS_ImpuestoFN();
        $this->o_ObjectBN = $o_DefaultFN->selectByPK( $i_Id );
    }
    
    public function executeViewdel()
    {
        LayoutTemplate::getInstance()->setUseBootstrap();
        $this->block      = $this->getRequestParameter( 'block' );
        $this->i_Id       = $this->getRequestParameter( 'i_Id' );
        $this->s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        
        $o_DefaultFN = new FCO_TipoPagoFN();
        $this->o_DefaultBN = $o_DefaultFN->selectByPK( $this->i_Id );
    }
    
    public function executeDeleteRow()
    {
        $block      = $this->getRequestParameter( 'block' );
        $i_Id       = $this->getRequestParameter( 'i_Id' );
        $s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        try 
        {
            $o_DefaultDP = new GSS_ImpuestoDP();
            $o_DefaultDP->setIdImpuesto( ( int ) $i_Id );
            //$o_DefaultDP->delete();

            $a_Rs['error']   = false;
            $a_Rs['id']      = $i_Id;
        }
        catch ( Exception $o_Exception )
        {
            $a_Rs['error']   = true;
            $a_Rs['mensaje_error_ex'] = $o_Exception->getMessage();
            $a_Rs['mensaje_error'] = "No se pudo eliminar el registro.";
        }
        echo json_encode( $a_Rs );
        return ViewResponse::NONE;
    }
}