<?php
/* Busqueda de registros de la tabla ALM_InventarioFisicoDetalle redefinidos por el usuario. */
class ALM_InventarioFisicoDetalleFN extends BaseALM_InventarioFisicoDetalleFN
{
    /**
     * Recupero el Id + 1
     *
     * @return int
     */
    public static function recuperarId( $IdCompania, $IdNumeroInventario )
    {
        $s_Sql = "SELECT IF( MAX( IdSecuencia ) IS NULL, 1, MAX( IdSecuencia ) + 1 ) i_Id  FROM ALM_InventarioFisicoDetalle WHERE IdCompania='$IdCompania' AND IdNumeroInventario='$IdNumeroInventario';";
        $o_ResultSet = Conexion::getConexion()->prepareStatement( $s_Sql )->executeQuery();
        $o_ResultSet->next();
        return $o_ResultSet->getInt( 'i_Id' );
    }

    public static function buscarAlmacenSeleccionados( $IdCompania, $IdNumeroInventario )
    {
        $s_Sql = "SELECT *
                FROM ALM_InventarioFisicoDetalle
                WHERE 1=1
                AND IdNumeroInventario='$IdNumeroInventario'
                AND IdCompania='$IdCompania'
                GROUP BY IdAlmacen;";
        $o_ResultSet = Conexion::getConexion()->prepareStatement( $s_Sql )->executeQuery();
        $a_ALM_InventarioFisicoDetalle = array();
        while( $o_ResultSet->next() ) 
        {
            $a_Row = $o_ResultSet->getRow();
            $a_ALM_InventarioFisicoDetalle[] =  ALM_InventarioFisicoDetalleBN::retrieveByRs( $a_Row );
        }
        
        return $a_ALM_InventarioFisicoDetalle;
    }

    public static function existeAlmacenSeleccionado( $IdCompania, $IdNumeroInventario, $IdAlmacen )
    {
        $s_Sql = "SELECT *
                FROM ALM_InventarioFisicoDetalle
                WHERE 1=1
                AND IdNumeroInventario='$IdNumeroInventario'
                AND IdCompania='$IdCompania'
                AND IdAlmacen='$IdAlmacen'
                GROUP BY IdAlmacen;";
        $o_ResultSet = Conexion::getConexion()->prepareStatement( $s_Sql )->executeQuery();
        if( $o_ResultSet->getRecordCount() > 0 )
        {
            return true;
        }
        return false;
    }

    public static function buscarIdUnidadProduccion( $IdCompania, $IdNumeroInventario, $IdSecuencia, $IdAlmacen )
    {

    }

    public static function buscarListaCabeceraTransaccion( $IdCompania, $IdNumeroInventario )
    {
        $s_Sql = "SELECT *
                FROM ALM_InventarioFisicoDetalle
                WHERE 1=1
                AND IdCompania = '$IdCompania'
                AND IdNumeroInventario = '$IdNumeroInventario'
                AND TipoOperacion <> ''
                AND ( StockFisico > 0 OR StockFisico < 0 )
                GROUP BY IdAlmacen, TipoOperacion;";
        $o_ResultSet = Conexion::getConexion()->prepareStatement( $s_Sql )->executeQuery();
        $a_ALM_InventarioFisicoDetalle = array();
        while( $o_ResultSet->next() ) 
        {
            $a_Row = $o_ResultSet->getRow();
            $a_ALM_InventarioFisicoDetalle[] =  ALM_InventarioFisicoDetalleBN::retrieveByRs( $a_Row );
        }
        return $a_ALM_InventarioFisicoDetalle;
    }

    public static function buscarCantidadUndidades( $IdCompania, $IdNumeroInventario, $IdSecuencia )
    {
        $s_Sql = "SELECT SUM( StockUnidades ) SumaUni FROM ALM_InventarioFisicoPesaje WHERE IdCompania='$IdCompania' AND IdNumeroInventario='$IdNumeroInventario' AND IdSecuencia='$IdSecuencia';";
        $o_ResultSet = Conexion::getConexion()->prepareStatement( $s_Sql )->executeQuery();
        if( $o_ResultSet->getRecordCount() > 0 )
        {
            $o_ResultSet->next();
            return utilMath::fnround( $o_ResultSet->getInt( 'SumaUni' ), 0 );
        }
        return 0;
    }
}
?>