<?php
class loteActions extends wtActions
{
    public function executeIndex()
    {
    }

    public function executeList()
    {
        LayoutTemplate::getInstance()->setUseBootstrap();
    }

    public function executeGrid()
    {
        $block = $this->getRequestParameter( 'block' );
        $page  = $this->getRequestParameter( 'page' );

        //*set_header_utf8();
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        $o_GridAction = new GridAction();
        $o_GridAction->setClassFind( new ALM_LoteFN() );

        //$o_GridAction->addAssignFilter( "IdCompania" );
        //$o_GridAction->addAssignFilter( "IdCompania" );
        //$o_GridAction->addAssignFilter( "DescripcionLocal" );
        //$o_GridAction->addAssignFilter( "Codigo" );
        //$o_GridAction->addAssignFilter( "ClaseNombre" );
        $o_GridAction->addAssignFilter( "Estado" );
        $o_GridAction->addConditionFilter( "IdItem", ALM_LoteFN::IdItem, "LIKE", "%%s%" );
        $o_GridAction->addConditionFilter( "LoteNumero", ALM_LoteFN::LoteNumero, "LIKE", "%%s%" );

        //$o_GridAction->addOrder( "Descripcion", GSS_ImpuestoFN::Descripcion );
        //$o_GridAction->addOrder( "Codigo",      GSS_ImpuestoFN::Codigo );

        //$o_GridAction->addOrderDefault( VTA_FormaPagoFN::IdFormaPago, true );

        $o_GridAction->addRowsToShow( "IdLote", "IdItem", "LoteNumero", "FechaVencimiento", "FechaOrigen", "Descripcion", "Estado", "Anio", "ProductoDescripcion", "EstadoDesc", "StockFisico" );

        $o_GridAction->setNumberRecordsShow( 100 );

        $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 = "Nueva Lote";

        $this->o_DefaultBN = new ALM_LoteBN();

        if( $this->s_TipoProc == "upd" )
        {
            $this->s_Titulo = "Editar Lote";

            $o_DefaultFN = new ALM_LoteFN();
            $this->o_DefaultBN = $o_DefaultFN->selectByPK( $this->i_Id );
        }
    }

    public function executeSaveAddEdit()
    {
        $i_Id          = $this->getRequestParameter( 'i_Id' );
        $s_TipoProc    = $this->getRequestParameter( 's_TipoProc' );
        $TypeSub       = $this->getRequestParameter( 'TypeSub' );

        $Estado             = $this->getRequestParameter( 'Estado' );
        $LoteNumero         = $this->getRequestParameter( 'LoteNumero' );
        $FechaOrigen        = $this->getRequestParameter( 'FechaOrigen' );
        $FechaVencimiento   = $this->getRequestParameter( 'FechaVencimiento' );

        //$IdCompania = ( int ) $this->getRequestParameter( 'IdCompania' );
        $IdCompania  = myUser::getUser()->getIdCompania();
        //$IdSucursal = ( int ) $this->getRequestParameter( 'IdSucursal' );
        $IdSucursal  = myUser::getUser()->getIdSucursal();

        try
        {
            $o_DefaultDP = new ALM_LoteDP();

            $o_DefaultDP->setEstado( $Estado );
            $o_DefaultDP->setLoteNumero( $LoteNumero );
            $o_DefaultDP->setFechaOrigen( $FechaOrigen );
            $o_DefaultDP->setFechaVencimiento( $FechaVencimiento );

            if( $s_TipoProc == "nvo" )
            {
                //NUEVO
                /*$i_Id = VTA_FormaPagoDP::recuperarId();
                $i_Id = str_pad( $i_Id, 3, "0", STR_PAD_LEFT );
                $o_DefaultDP->setIdFormaPago( $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_ALM_LoteFN = new ALM_LoteFN();
                $o_ALM_LoteBN = $o_ALM_LoteFN->selectByPK( $i_Id );

                $s_IdItem       = $o_ALM_LoteBN->getIdItem();
                $s_ItemDesc     = $o_ALM_LoteBN->getProductoDescripcion();
                $s_LoteAntiguo  = $o_ALM_LoteBN->getLoteNumero();
                $s_VenceAntiguo = $o_ALM_LoteBN->getFechaVencimiento();

                $o_DefaultDP->setIdLote( ( int ) $i_Id );
                $o_DefaultDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                $o_DefaultDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
                $o_DefaultDP->update();

                if( $s_LoteAntiguo != $LoteNumero )
                {
                    $o_ALM_ItemAlmacenStockDP = new ALM_ItemAlmacenStockDP();
                    $o_ALM_ItemAlmacenStockDP->setIdLote( $LoteNumero );
                    $o_ALM_ItemAlmacenStockDP->setNumeroLoteAntiguo( $s_LoteAntiguo );
                    //$o_ALM_ItemAlmacenStockDP->setFechaVencimiento( $FechaVencimiento );
                    $o_ALM_ItemAlmacenStockDP->setIdItem( $s_IdItem );
                    $o_ALM_ItemAlmacenStockDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
                    $o_ALM_ItemAlmacenStockDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                    $o_ALM_ItemAlmacenStockDP->update_varios_costo();

                    //AHORA SE REGISTRA HISTORIAL
                    RegistroHistorialDP::registrarHistorial
                    (
                        array
                        (
                            "Tabla"             => "ALM_Lote",                                                          //referencia de la tabla donde se hace el update o insert
                            "IdDocumento"       => $i_Id,                                                               //id del registro cabecera
                            "IdCampo"           => $s_IdItem,                                                           //puede ser el id de los detalles
                            "CampoValor"        => substr( $s_IdItem." - ".$s_ItemDesc, 0, 500 ),   //valor que se muestra al usuario
                            "Modulo"            => "LOTE",                                                              //modulo donde se realizo la accion
                            "CampoDescripcion"  => "NUMERO LOTE",                                                       //descripcion de la accion a realizar
                            "ValorAnterior"     => $s_LoteAntiguo,
                            "ValorNuevo"        => $LoteNumero,
                        )
                    );

                    $s_LoteAntiguo = $LoteNumero;
                }

                if( $s_VenceAntiguo != $FechaVencimiento )
                {
                    $o_ALM_ItemAlmacenStockDP = new ALM_ItemAlmacenStockDP();
                    $o_ALM_ItemAlmacenStockDP->setIdLote( $s_LoteAntiguo );
                    $o_ALM_ItemAlmacenStockDP->setNumeroLoteAntiguo( $s_LoteAntiguo );
                    $o_ALM_ItemAlmacenStockDP->setFechaVencimiento( $FechaVencimiento );
                    $o_ALM_ItemAlmacenStockDP->setIdItem( $s_IdItem );
                    $o_ALM_ItemAlmacenStockDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
                    $o_ALM_ItemAlmacenStockDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                    $o_ALM_ItemAlmacenStockDP->update_varios_costo();

                    //AHORA SE REGISTRA HISTORIAL
                    RegistroHistorialDP::registrarHistorial
                    (
                        array
                        (
                            "Tabla"             => "ALM_Lote",                                                          //referencia de la tabla donde se hace el update o insert
                            "IdDocumento"       => $i_Id,                                                               //id del registro cabecera
                            "IdCampo"           => $s_IdItem,                                                           //puede ser el id de los detalles
                            "CampoValor"        => substr( $s_IdItem." - ".$s_ItemDesc, 0, 500 ),   //valor que se muestra al usuario
                            "Modulo"            => "LOTE",                                                              //modulo donde se realizo la accion
                            "CampoDescripcion"  => "VENCIMIENTO LOTE",                                                  //descripcion de la accion a realizar
                            "ValorAnterior"     => $s_VenceAntiguo,
                            "ValorNuevo"        => $FechaVencimiento,
                        )
                    );
                }

            }

            $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 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 ALM_LoteFN();
        $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 ALM_LoteDP();
            $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;
    }
}