<?php
class tipoordencompraActions extends wtActions
{
    public function executeIndex()
    {
    }
    
    public function executeList()
    {
    	$this->block = $this->getRequestParameter( 'block' );
    	
    	$o_GSS_CompaniaFN = new GSS_CompaniaFN();
    	$o_GSS_CompaniaFN->addOrderBy(GSS_CompaniaFN::DescripcionCorta );
    	$o_GSS_CompaniaFN->setEstado('A');
    	
        $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 COM_OrdenItemClasificacionFN() );
        
        $o_GridAction->addMethodDefault("IdCompania", myUser::getUser()->getIdBusiness());

        $o_GridAction->addAssignFilter( "IdCompania" );
        $o_GridAction->addOrder( "Descripcion", COM_OrdenItemClasificacionFN::Descripcion);
        $o_GridAction->addOrder( "Estado", COM_OrdenItemClasificacionFN::Estado );
        
        $o_GridAction->addConditionFilter( "Descripcion", COM_OrdenItemClasificacionFN::Descripcion, "LIKE", "%%s%" );
        $o_GridAction->addOrderDefault( COM_OrdenItemClasificacionFN::IdOrdenClasificacion , true );
        
        $o_GridAction->setControlArray( false );
        $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 );
        $a_ResultSelect    = $o_GridAction->getResultSelect();
        $a_Rs = array();

        foreach ( $a_ResultSelect as $iKey => $o_ObjClassBN )
        {
            $o_GSS_CompaniaFN = new GSS_CompaniaFN();
            $o_GSS_CompaniaBN = $o_GSS_CompaniaFN->selectByPK( $o_ObjClassBN->getIdCompania() );
        
           
            if(!is_object($o_GSS_CompaniaBN)) $o_GSS_CompaniaBN = new GSS_CompaniaBN();
            
            $a_Rs[] = array(  
                                "IdOrdenClasificacion" => utf8_encode( $o_ObjClassBN->getIdOrdenClasificacion()),
                                "IdCompania"           => utf8_encode( $o_GSS_CompaniaBN->getDescripcionCorta() ),
                                "Descripcion"          => utf8_encode( $o_ObjClassBN->getDescripcion() ),
                                "CodigoSunat"          => $o_ObjClassBN->getCodigoSunat(),
                                "Estado"               => $o_ObjClassBN->getEstado()
                           );
        }
        $a_ResultJson['rows'] = $a_Rs;
        
        echo json_encode( $a_ResultJson );

        return ViewResponse::NONE;   
    }
    
    public function executeRequest()
    {
        set_header_utf8();
        $block                  = $this->getRequestParameter( 'block' );
        $IdTransaccionOperacion = $this->getRequestParameter( 'IdTransaccionOperacion' );
        $IdCompania             = $this->getRequestParameter( 'IdCompania' );
        $TipoProc               = $this->getRequestParameter( 'TipoProc' );
        
        switch ( $TipoProc )
        {
            case "IdAlmacen":
                $o_ALM_AlmacenMastFN = new ALM_AlmacenMastFN();
                $o_ALM_AlmacenMastFN->setIdCompania( $IdCompania );
                $o_ALM_AlmacenMastFN->addOrderBy( ALM_AlmacenMastFN::DescripcionLocal);
                $a_Result = $o_ALM_AlmacenMastFN->select();
                $s_NameId  = "getIdAlmacen";
                $s_NameDes = "getDescripcionLocal";
            break;
        }
        
        $a_lst = array();
        if( $a_Result )
        {
            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;
    }
    
   
    /**
     * Enter description here...
     *
     */
    public function executeAddedit()
    {
        $this->block      = $this->getRequestParameter( 'block' );
        $this->i_Id       = $this->getRequestParameter( 'i_Id' );
        $this->s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        
        $o_GSS_CompaniaFN = new GSS_CompaniaFN();
        $o_GSS_CompaniaFN->addOrderBy(GSS_CompaniaFN::DescripcionCorta );
        $o_GSS_CompaniaFN->setEstado('A');
		
        $this->a_GSS_Compania= $o_GSS_CompaniaFN->select();
        
        $ALM_ItemTipoFN = new ALM_ItemTipoFN();
        $ALM_ItemTipoFN->addCondition(ALM_ItemTipoFN::Estado ,"<>","I");
        $ALM_ItemTipoFN->addOrderBy(ALM_ItemTipoFN::DescripcionLocal);
        $this->a_ALM_ItemTipo = $ALM_ItemTipoFN->select();
                
        $this->s_Titulo = "Nuevo Tipo de Orden de Compra";
        
		$o_COM_OrdenItemClasificacionBN = new COM_OrdenItemClasificacionBN();
        $o_COM_OrdenItemClasificacionBN->setEstado('A');
        $this->o_COM_OrdenItemClasificacionBN = $o_COM_OrdenItemClasificacionBN;
        
        $this->a_ALM_AlmacenMast = new ALM_AlmacenMastBN();
        
        if( $this->s_TipoProc == "upd" )
        {
            $this->s_Titulo = "Editar Tipo de Orden Compra";
            $o_COM_OrdenItemClasificacionFN = new COM_OrdenItemClasificacionFN();
            $this->o_COM_OrdenItemClasificacionBN = $o_COM_OrdenItemClasificacionFN->selectByPK( $this->i_Id );
        }
    }
   
    public function executeSaveAddEdit()
    {
        $block      = $this->getRequestParameter( 'block' );
        $i_Id       = $this->getRequestParameter( 'i_Id' );
        $s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        $TypeSub    = $this->getRequestParameter( 'TypeSub' );
        
        
        $IdOrdenClasificacion   = $this->getRequestParameter( 'IdOrdenClasificacion' );
        $Descripcion = $this->getRequestParameter( 'Descripcion' );
        $IdItemTipo = $this->getRequestParameter( 'IdItemTipo' );
        $IdAlmacen = $this->getRequestParameter( 'IdAlmacen' );
        $Estado      = $this->getRequestParameter( 'Estado' );
        $CodigoSunat      = $this->getRequestParameter( 'CodigoSunat' );
                
        try         
        
        {            
        	$o_COM_OrdenItemClasificacionDP = new COM_OrdenItemClasificacionDP();            
            $o_COM_OrdenItemClasificacionDP->setDescripcion( $Descripcion );
            $o_COM_OrdenItemClasificacionDP->setCodigoSunat( $CodigoSunat );
            $o_COM_OrdenItemClasificacionDP->setIdItemTipo( $IdItemTipo );
            $o_COM_OrdenItemClasificacionDP->setIdAlmacen( $IdAlmacen );
            $o_COM_OrdenItemClasificacionDP->setEstado( $Estado );
            $o_COM_OrdenItemClasificacionDP->setIdCompania( myUser::getUser()->getIdBusiness() );
                        
            if( $s_TipoProc == "nvo" )
            {
                //NUEVO
                //$IdMarca = ALM_MarcaFN::recuperarId();
                $o_COM_OrdenItemClasificacionDP->setIdOrdenClasificacion($IdOrdenClasificacion);
                $o_COM_OrdenItemClasificacionDP->setFechaCreacion( date( "Y-m-d H:i:s" ) );
                $o_COM_OrdenItemClasificacionDP->setUsuarioCreacion( myUser::getUser()->getUserId() );
              
                $b_Result = $o_COM_OrdenItemClasificacionDP->save();
                $i_Id = $IdOrdenClasificacion;
            }
            else 
            {
                //UPDATE
                
                
                //$i_Id = ( int ) $this->getRequestParameter( 'i_Id' );
                $o_COM_OrdenItemClasificacionDP->setIdOrdenClasificacion($i_Id );
                $o_COM_OrdenItemClasificacionDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                $o_COM_OrdenItemClasificacionDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
                $b_Result = $o_COM_OrdenItemClasificacionDP->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()
    {
        $block          = $this->getRequestParameter( 'block' );
        $i_Id           = $this->getRequestParameter( 'i_Id' );
        
        $o_GSS_CompaniaFN = new GSS_CompaniaFN();
        $o_GSS_CompaniaFN->addOrderBy(GSS_CompaniaFN::DescripcionCorta );
        $o_GSS_CompaniaFN->setEstado('A');
		
        $this->a_GSS_Compania= $o_GSS_CompaniaFN->select();
        
        $ALM_ItemTipoFN = new ALM_ItemTipoFN();
        $ALM_ItemTipoFN->addCondition(ALM_ItemTipoFN::Estado ,"<>","I");
        $ALM_ItemTipoFN->addOrderBy(ALM_ItemTipoFN::DescripcionLocal);
        $this->a_ALM_ItemTipo = $ALM_ItemTipoFN->select();
        
        $this->s_Topico = "Tipo Orden Compra";
        $o_COM_OrdenItemClasificacionFN = new COM_OrdenItemClasificacionFN();
        $this->o_ObjectBN = $o_COM_OrdenItemClasificacionFN->selectByPK( $i_Id );
    }
    
    public function executeViewdel()
    {
        $this->block      = $this->getRequestParameter( 'block' );
        $this->i_Id       = $this->getRequestParameter( 'i_Id' );
        $this->s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
       
        $o_GSS_CompaniaFN = new GSS_CompaniaFN();
        $this->a_GSS_Compania= $o_GSS_CompaniaFN->select();
		
		$ALM_ItemTipoFN = new ALM_ItemTipoFN();
        $ALM_ItemTipoFN->addCondition(ALM_ItemTipoFN::Estado ,"<>","I");
        $ALM_ItemTipoFN->addOrderBy(ALM_ItemTipoFN::DescripcionLocal);
        $this->a_ALM_ItemTipo = $ALM_ItemTipoFN->select();
        
        $o_COM_OrdenItemClasificacionFN = new COM_OrdenItemClasificacionFN();
        $this->o_COM_OrdenItemClasificacionBN = $o_COM_OrdenItemClasificacionFN->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_MST_UnidadMastDP = new MST_UnidadMastDP();
            $o_MST_UnidadMastDP->setIdUnidad( $i_Id );
            $o_MST_UnidadMastDP->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;
    }*/
    
    
    public function executeDeleteRow()
    {
        $block      = $this->getRequestParameter( 'block' );
        $i_Id       = $this->getRequestParameter( 'i_Id' );
        $s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        
        try 
        {
        	
            $o_COM_OrdenItemClasificacionDP = new COM_OrdenItemClasificacionDP();
           // $o_MST_UnidadMastDP->setIdUnidad( $i_Id );
            $o_COM_OrdenItemClasificacionDP->setIdOrdenClasificacion($i_Id );
            $o_COM_OrdenItemClasificacionDP->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;
    }
}