<?php
class ValidacionxItemBL
{
    public function iniciarValidacionAlmacen( $o_ALM_ItemMastBN )
    {
        //SE RECUPERA EL ALMACEN
        //$i_IdAlmacen = GSS_SucursalFN::recuperarIdAlmacen( '123' );
        
        //$o_ALM_ItemMastBN->setIdAlmacen( $i_IdAlmacen );
        
        $this->guardarItemAlmacen( $o_ALM_ItemMastBN );
        
        return true;
    }
    
    public function iniciarValidacionAlmacenStock( ALM_ItemMastBN $o_ALM_ItemMastBN )
    {
        //SE RECUPERA EL ALMACEN
        //$i_IdAlmacen = GSS_SucursalFN::recuperarIdAlmacen( '123' );
        
        //$o_ALM_ItemMastBN->setIdAlmacen( $i_IdAlmacen );
        
        $o_ALM_AlmacenMastFN = new ALM_AlmacenMastFN();
        $o_ALM_AlmacenMastBN = $o_ALM_AlmacenMastFN->selectByPK( $o_ALM_ItemMastBN->getIdAlmacen() );
        
        $o_ALM_ItemMastBN->setIdCompania( $o_ALM_AlmacenMastBN->getIdCompania() );
        $o_ALM_ItemMastBN->setIdSucursal( $o_ALM_AlmacenMastBN->getIdSucursal() );
        
        $o_ALM_ItemAlmacenStockFN = new ALM_ItemAlmacenStockFN();
        $o_ALM_ItemAlmacenStockFN->setIdCompania( $o_ALM_AlmacenMastBN->getIdCompania() );
        $o_ALM_ItemAlmacenStockFN->setIdSucursal( $o_ALM_AlmacenMastBN->getIdSucursal() );
        $o_ALM_ItemAlmacenStockFN->setIdItem( $o_ALM_ItemMastBN->getIdItem() );
        $o_ALM_ItemAlmacenStockFN->setIdAlmacen( $o_ALM_ItemMastBN->getIdAlmacen() );
        $o_ALM_ItemAlmacenStockFN->setIdCondicion( ALM_TransaccionDetalleBN::CONDICION_POR_DEFECTO );
        if( !$o_ALM_ItemMastBN->getIdLote() )
        {
            $o_ALM_ItemAlmacenStockFN->setIdLote( ALM_TransaccionDetalleBN::LOTE_POR_DEFECTO );
        }
        else
        {
            $o_ALM_ItemAlmacenStockFN->setIdLote( $o_ALM_ItemMastBN->getIdLote() );
        }
        
        $a_ALM_ItemAlmacenStock = $o_ALM_ItemAlmacenStockFN->select();
        if( !$a_ALM_ItemAlmacenStock )
        {
            $this->guardarItemAlmacenStock( $o_ALM_ItemMastBN );
        }
        return true;
    }
    
    public function iniciarCambioPrecio( ALM_ItemMastBN $o_ALM_ItemMastBN )
    {
        $o_GSS_SucursalFN = new GSS_SucursalFN();
        $o_GSS_SucursalFN->setEstado( "A" );
        if( $o_ALM_ItemMastBN->getIdSucursal() )
        {
            $o_GSS_SucursalFN->setIdSucursal( $o_ALM_ItemMastBN->getIdSucursal() );
        }
        $a_GSS_Sucursal = $o_GSS_SucursalFN->select();
        foreach ( $a_GSS_Sucursal as $i_Key => $a_GSS_SucursalBN )
        {
            $o_MST_ListaPrecioCabeceraFN = new MST_ListaPrecioCabeceraFN();
            $o_MST_ListaPrecioCabeceraBN = $o_MST_ListaPrecioCabeceraFN->selectByPK( $o_ALM_ItemMastBN->getIdCompania(), $a_GSS_SucursalBN->getIdSucursal() );
            if( $o_MST_ListaPrecioCabeceraBN )
            {
                $o_MST_ListaPrecioDetalleFN = new MST_ListaPrecioDetalleFN();
                $o_MST_ListaPrecioDetalleBN = $o_MST_ListaPrecioDetalleFN->selectByPK( $o_ALM_ItemMastBN->getIdCompania(), $a_GSS_SucursalBN->getIdSucursal(), $o_ALM_ItemMastBN->getIdItem(), 1 );
                
                $b_Result = $this->guardarListaPrecioDetalle( $o_MST_ListaPrecioDetalleBN, $a_GSS_SucursalBN, $o_ALM_ItemMastBN );
            }
            else 
            {
                //se inserta
                $o_MST_ListaPrecioCabeceraDP = new MST_ListaPrecioCabeceraDP();
                $o_MST_ListaPrecioCabeceraDP->setIdCompania( $o_ALM_ItemMastBN->getIdCompania() );
                $o_MST_ListaPrecioCabeceraDP->setIdSucursal( $a_GSS_SucursalBN->getIdSucursal() );
                $o_MST_ListaPrecioCabeceraDP->setEstado( "A" );
                $o_MST_ListaPrecioCabeceraDP->setUsuarioCreacion( myUser::getUser()->getUserId() );
                $o_MST_ListaPrecioCabeceraDP->setFechaCreacion( date( "Y-m-d H:i:s" ) );
                $o_MST_ListaPrecioCabeceraDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
                $o_MST_ListaPrecioCabeceraDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                $b_Result = $o_MST_ListaPrecioCabeceraDP->save();
                
                $b_Result = $this->guardarListaPrecioDetalle( null, $a_GSS_SucursalBN, $o_ALM_ItemMastBN );
            }
        }
        return $b_Result;
    }
    
    private function guardarListaPrecioDetalle( $o_MST_ListaPrecioDetalleBN, $a_GSS_SucursalBN, $o_ALM_ItemMastBN )
    {
        $o_MST_ListaPrecioDetalleDP = new MST_ListaPrecioDetalleDP();
        $o_MST_ListaPrecioDetalleDP->setIdCompania( $o_ALM_ItemMastBN->getIdCompania() );
        $o_MST_ListaPrecioDetalleDP->setIdSucursal( $a_GSS_SucursalBN->getIdSucursal() );
        $o_MST_ListaPrecioDetalleDP->setIdItem( $o_ALM_ItemMastBN->getIdItem() );
        $o_MST_ListaPrecioDetalleDP->setIdTipoPrecio( 1 );
        $o_MST_ListaPrecioDetalleDP->setPrecioCosto( $o_ALM_ItemMastBN->getPrecioCosto() );
        $o_MST_ListaPrecioDetalleDP->setPorcentajeUtilidad( $o_ALM_ItemMastBN->getUtilidadPorcentaje() );
        $o_MST_ListaPrecioDetalleDP->setPrecioVenta( $o_ALM_ItemMastBN->getPrecioVenta() );
        $o_MST_ListaPrecioDetalleDP->setEstado( "A" );
        $o_MST_ListaPrecioDetalleDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
        $o_MST_ListaPrecioDetalleDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
        
        if( $o_MST_ListaPrecioDetalleBN )
        {
            //se actualiza
            $o_MST_ListaPrecioDetalleDP->setDescuentoFlag( "N" );
            $b_Result = $o_MST_ListaPrecioDetalleDP->update();
        }
        else 
        {
            //se inserta
            $o_MST_ListaPrecioDetalleDP->setDescuentoFlag( "N" );
            $o_MST_ListaPrecioDetalleDP->setFechaInicio( date( "Y-m-d" ) );
            $o_MST_ListaPrecioDetalleDP->setFechaFin( date( "Y-m-d" ) );
            $o_MST_ListaPrecioDetalleDP->setUsuarioCreacion( myUser::getUser()->getUserId() );
            $o_MST_ListaPrecioDetalleDP->setFechaCreacion( date( "Y-m-d H:i:s" ) );
            $b_Result = $o_MST_ListaPrecioDetalleDP->save();
        }
        return $b_Result;
    }
    
    private function guardarItemAlmacen( $o_ALM_ItemMastBN )
    {
        $o_ALM_ItemAlmacenDP = new ALM_ItemAlmacenDP();
        $o_ALM_ItemAlmacenDP->setIdCompania( ( int ) $o_ALM_ItemMastBN->getIdCompania() );
        $o_ALM_ItemAlmacenDP->setIdItem( $o_ALM_ItemMastBN->getIdItem() );
        $o_ALM_ItemAlmacenDP->setIdAlmacen( $o_ALM_ItemMastBN->getIdAlmacen() );
        $o_ALM_ItemAlmacenDP->setIdCondicion( ALM_TransaccionDetalleBN::CONDICION_POR_DEFECTO );
        $o_ALM_ItemAlmacenDP->setUbicacionFisica( "" );
        $o_ALM_ItemAlmacenDP->setUbicacionFisica02( "" );
        $o_ALM_ItemAlmacenDP->setUbicacionFisica03( "" );
        $o_ALM_ItemAlmacenDP->setStockPedido( 0 );
        $o_ALM_ItemAlmacenDP->setStockMinimo( ( int ) $o_ALM_ItemMastBN->getStockMinimo() );
        $o_ALM_ItemAlmacenDP->setStockMaximo( ( int ) $o_ALM_ItemMastBN->getStockMaximo() );
        $o_ALM_ItemAlmacenDP->setStockPuntoReorden( 0 );
        $o_ALM_ItemAlmacenDP->setTiempoEspera( 0 );
                
        $o_ALM_ItemAlmacenFN = new ALM_ItemAlmacenFN();
        $o_ALM_ItemAlmacenFN->setIdCompania( ( int ) $o_ALM_ItemMastBN->getIdCompania() );
        $o_ALM_ItemAlmacenFN->setIdItem( $o_ALM_ItemMastBN->getIdItem() );
        $o_ALM_ItemAlmacenFN->setIdAlmacen( $o_ALM_ItemMastBN->getIdAlmacen() );
        $o_ALM_ItemAlmacenFN->setIdCondicion( ALM_TransaccionDetalleBN::CONDICION_POR_DEFECTO );
        $a_ALM_ItemAlmacen = $o_ALM_ItemAlmacenFN->select();
        if( !$a_ALM_ItemAlmacen )
        {
            //$o_ALM_ItemAlmacenDP->setValidacionPedidoComercialFlag( "" );
            $o_ALM_ItemAlmacenDP->setEstado( "A" );
            $o_ALM_ItemAlmacenDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
            $o_ALM_ItemAlmacenDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
            $o_ALM_ItemAlmacenDP->setUsuarioCreacion( myUser::getUser()->getUserId() );
            $o_ALM_ItemAlmacenDP->setFechaCreacion( date( "Y-m-d H:i:s" ) );
            $o_ALM_ItemAlmacenDP->save();
        }
        else 
        {
            $o_ALM_ItemAlmacenDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
            $o_ALM_ItemAlmacenDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
            $o_ALM_ItemAlmacenDP->update();
        }
        return true;
    }
    
    private function guardarItemAlmacenStock( ALM_ItemMastBN $o_ALM_ItemMastBN )
    {
        $o_ALM_ItemAlmacenStockDP = new ALM_ItemAlmacenStockDP();
        $o_ALM_ItemAlmacenStockDP->setIdCompania( ( int ) $o_ALM_ItemMastBN->getIdCompania() );
        $o_ALM_ItemAlmacenStockDP->setIdSucursal( ( int ) $o_ALM_ItemMastBN->getIdSucursal() );
        $o_ALM_ItemAlmacenStockDP->setIdItem( $o_ALM_ItemMastBN->getIdItem() );
        $o_ALM_ItemAlmacenStockDP->setIdAlmacen( $o_ALM_ItemMastBN->getIdAlmacen() );
        $o_ALM_ItemAlmacenStockDP->setIdCondicion( ALM_TransaccionDetalleBN::CONDICION_POR_DEFECTO );
        if( !$o_ALM_ItemMastBN->getIdLote() )
        {
            $o_ALM_ItemAlmacenStockDP->setIdLote( ALM_TransaccionDetalleBN::LOTE_POR_DEFECTO );
            $o_ALM_ItemAlmacenStockDP->setFechaVencimiento( date( "Y-m-d H:i:s" ) );
        }
        else 
        {
            $o_ALM_ItemAlmacenStockDP->setIdLote( $o_ALM_ItemMastBN->getIdLote() );
            $o_ALM_ItemAlmacenStockDP->setFechaVencimiento( $o_ALM_ItemMastBN->getFechaVencimientoLote() );
        }
        $o_ALM_ItemAlmacenStockDP->setLoteEquivalente( "" );
        //$o_ALM_ItemAlmacenStockDP->setDonante( "" );
        $o_ALM_ItemAlmacenStockDP->setFechaIngreso( date( "Y-m-d H:i:s" ) );
        $o_ALM_ItemAlmacenStockDP->setStockIngreso( 0 );
        $o_ALM_ItemAlmacenStockDP->setStockActual( 0 );
        $o_ALM_ItemAlmacenStockDP->setStockComprometido( 0 );
        $o_ALM_ItemAlmacenStockDP->setStockActualDoble( 0 );
        $o_ALM_ItemAlmacenStockDP->setPrecioUnitario( 0.00 );
        $o_ALM_ItemAlmacenStockDP->setPrecioUnitarioDolares( 0.00 );
        //$o_ALM_ItemAlmacenStockDP->setPrioridad( "" );
        //$o_ALM_ItemAlmacenStockDP->setPrecioPromedioLocal( "" );
        //$o_ALM_ItemAlmacenStockDP->setPrecioPromedioDolares( "" );
        $o_ALM_ItemAlmacenStockDP->setDocumentoReferencia( "" );
        //$o_ALM_ItemAlmacenStockDP->setObservaciones( "" );
        //$o_ALM_ItemAlmacenStockDP->setObservacionesCorrectivas( "" );
        $o_ALM_ItemAlmacenStockDP->setFechaCreacion( date( "Y-m-d H:i:s" ) );
        $o_ALM_ItemAlmacenStockDP->setUsuarioCreacion( myUser::getUser()->getUserId() );
        $o_ALM_ItemAlmacenStockDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
        $o_ALM_ItemAlmacenStockDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
        $o_ALM_ItemAlmacenStockDP->save();
        return true;
    }
}