<?php
/* Mantenimiento de los registros de la tabla ALM_InventarioFisicoDetalle redefinidos por el usaurio */
class ALM_InventarioFisicoDetalleDP extends BaseALM_InventarioFisicoDetalleDP
{
    public function deleteWarehouse()
    {
        $s_SQLQuery = "DELETE 
                       FROM ALM_InventarioFisicoDetalle 
                       WHERE  1=1
                          AND IdCompania = ".$this->getIdCompania()." 
                          AND IdNumeroInventario = '".$this->getIdNumeroInventario()."' 
                          AND IdAlmacen = '".$this->getIdAlmacen()."'
                       ;";
        Conexion::getConexion()->createStatement()->executeQuery( $s_SQLQuery );
        return true;
    }
    
    public static function updateStockByWeighing( $IdCompania, $IdNumeroInventario, $IdSecuencia, $StockFisico ) 
    {
        $s_Sql = "UPDATE ALM_InventarioFisicoDetalle SET StockFisico=(StockFisico+($StockFisico)) WHERE IdCompania='$IdCompania' AND IdNumeroInventario='$IdNumeroInventario' AND IdSecuencia='$IdSecuencia';";
        Conexion::getConexion()->createStatement()->executeQuery( $s_Sql );
        
        $s_Sql = "UPDATE ALM_InventarioFisicoDetalle SET StockDiferencia=if(StockFisico<>0,(StockFisico-StockActual),0) WHERE IdCompania='$IdCompania' AND IdNumeroInventario='$IdNumeroInventario' AND IdSecuencia='$IdSecuencia';";
        Conexion::getConexion()->createStatement()->executeQuery( $s_Sql );
        
        $s_Sql = "SELECT StockActual, StockFisico, StockDiferencia, TipoOperacion FROM ALM_InventarioFisicoDetalle I WHERE I.IdCompania='$IdCompania' AND IdNumeroInventario='$IdNumeroInventario' AND IdSecuencia='$IdSecuencia';";
        $o_ResultSet = Conexion::getConexion()->prepareStatement( $s_Sql )->executeQuery();
        if( $o_ResultSet->getRecordCount() > 0 )
        {
            $o_ResultSet->next();
            $a_Row = $o_ResultSet->getRow();
            $f_StockDiferencia = floatval( $a_Row['StockDiferencia'] );
            $s_TipoOpe =  "";
            if( $f_StockDiferencia > 0 )
            {
                $s_TipoOpe = ALM_TransaccionCabeceraBN::TIPO_INGRESO;
            }
            if( $f_StockDiferencia < 0 )
            {
                $s_TipoOpe = ALM_TransaccionCabeceraBN::TIPO_SALIDA;
            }
            if( $f_StockDiferencia == 0 )
            {
                $s_TipoOpe = ALM_InventarioFisicoBN::TIPO_NORMAL_SIN_MOV;
            }
            $s_Sql = "UPDATE ALM_InventarioFisicoDetalle SET TipoOperacion='$s_TipoOpe' WHERE IdCompania='$IdCompania' AND IdNumeroInventario='$IdNumeroInventario' AND IdSecuencia='$IdSecuencia';";
            Conexion::getConexion()->createStatement()->executeQuery( $s_Sql );
        }
        return true;
    }
}
?>