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

    public static function buscarCantidadxUnidadConversion( $IdUnidad, $CantidadPedida )
    {
        $f_CanidadConv = $CantidadPedida;
        $o_MST_UnidadConversionMastFN = new MST_UnidadConversionMastFN();
        $o_MST_UnidadConversionMastBN = $o_MST_UnidadConversionMastFN->selectByPK( $IdUnidad, 'UNI' );
        if( $o_MST_UnidadConversionMastBN )
        {
            $f_CanidadConv = ( $CantidadPedida * $o_MST_UnidadConversionMastBN->getCantidadEquivalente() );
        }
        return $f_CanidadConv;
    }

    public static function buscaDetallesAprobados( $s_IdItem )
    {
        $o_COM_OrdenCompraDetalleFN = new COM_OrdenCompraDetalleFN();
        $o_COM_OrdenCompraDetalleFN->setIdItem( $s_IdItem );
        $o_COM_OrdenCompraDetalleFN->setEstado( COM_OrdenCompraCabeceraBN::ORDEN_COMPRA_APROBADO );
        $a_COM_OrdenCompraDetalle = $o_COM_OrdenCompraDetalleFN->select();
        $a_Data = array( "Cantidad" => 0, "PrecUnidad" => 0 );
        if( $a_COM_OrdenCompraDetalle )
        {
            foreach ( $a_COM_OrdenCompraDetalle as $o_COM_OrdenCompraDetalleBN ) 
            {
                    $a_Data['Cantidad']   = $a_Data['Cantidad']   + ( $o_COM_OrdenCompraDetalleBN->getCantidadPedida() - $o_COM_OrdenCompraDetalleBN->getCantidadRecibida() );
                    $a_Data['PrecUnidad'] = $o_COM_OrdenCompraDetalleBN->getPrecioUnitarioIGV();
            }
        }
        return $a_Data;
    }
}
?>