/// <summary>
        /// Metodo que permite obtener el listado de todos los objetos Compra
        /// </summary>
        /// <returns></returns>
        public ComprasProveedorCollection getComprasProveedor()
        {
            SqlCommand cmd = new SqlCommand("PACK_COMPRAS_PROVEEDOR.PR_COMPRAS_PROVEEDOR_C", getConexion());

            cmd.CommandType = CommandType.StoredProcedure;

            try
            {
                SqlDataReader dr = cmd.ExecuteReader();

                ComprasProveedorCollection lsComprasProveedor = new ComprasProveedorCollection();
                CompraProveedor            objCompraProveedor = null;

                while (dr.Read())
                {
                    //Apartamos el valor de idCompra de la Compra actual, para luego utilizarla como referencia
                    int idCompra = dr.GetInt16(0);

                    //Creamos un objeto Compra sin DetalleCompra
                    objCompraProveedor = new CompraProveedor(
                        idCompra,
                        DBHelper.getProveedorPorID(dr.GetInt16(1)),
                        dr.GetDateTime(2));

                    //Seteamos el DetalleCompra
                    objCompraProveedor.LsDetalles = DBHelper.getDetallesCompraProveedor(idCompra);
                }

                cmd.Connection.Close();

                return(lsComprasProveedor);
            }
            catch (Exception e)
            {
                cmd.Connection.Close();
                throw e;
            }
        }
        /// <summary>
        /// Metodo que permite obtener el objeto CompraProveedor especificado en el parametro de entrada
        /// </summary>
        /// <param name="idCompra"></param>
        /// <returns></returns>
        public CompraProveedor getCompraProveedorPorID(int idCompra)
        {
            SqlCommand cmd = new SqlCommand("PACK_COMPRAS_PROVEEDOR.PR_COMPRAS_PROVEEDOR_POR_ID", getConexion());

            cmd.CommandType = CommandType.StoredProcedure;

            try
            {
                cmd.Parameters.AddWithValue("@p_id_compra", idCompra);

                SqlDataReader dr = cmd.ExecuteReader();

                CompraProveedor objCompraProveedor = null;

                if (dr.Read())
                {
                    //Creamos CompraProveedor sin Detalle
                    objCompraProveedor = new CompraProveedor(
                        dr.GetInt16(0),
                        DBHelper.getProveedorPorID(dr.GetInt16(1)),
                        dr.GetDateTime(2));

                    //Obtenemos el DetalleCompra
                    objCompraProveedor.LsDetalles = DBHelper.getDetallesCompraProveedor(idCompra);
                }

                cmd.Connection.Close();

                return(objCompraProveedor);
            }
            catch (Exception e)
            {
                cmd.Connection.Close();
                throw e;
            }
        }
        /// <summary>
        /// Metodo que permite insertar el objeto CompraProveedor especificado, con su coleccion de objetos DetalleCompraProveedor
        /// </summary>
        /// <param name="compraProveedor"></param>
        /// <returns></returns>
        public int insertarCompraProveedor(CompraProveedor compraProveedor)
        {
            SqlCommand cmd = new SqlCommand("PACK_COMPRAS_PROVEEDOR.PR_COMPRAS_PROVEEDOR_A", getConexion());

            cmd.CommandType = CommandType.StoredProcedure;

            try
            {
                SqlParameter paramId = new SqlParameter("@p_id_compra_proveedor", SqlDbType.Int, 4);
                paramId.Direction = ParameterDirection.Output;

                cmd.Parameters.AddWithValue("@p_id_proveedor", compraProveedor.Proveedor.IdProveedor);
                cmd.Parameters.AddWithValue("@p_fecha", compraProveedor.Fecha);

                //Abrimos una transaccion para almacenar tanto el objeto CompraProveedor como sus DetallesCompraProveedor
                cmd.Connection.BeginTransaction();

                //Almacenamos el objeto CompraProveedor sin Detalle
                cmd.ExecuteNonQuery();

                //Almacenamos los objetos DetalleCompraProveedor
                DetalleCompraProveedorDAL detalleCompraProveedorDAL = new DetalleCompraProveedorDAL();
                detalleCompraProveedorDAL.insertarDetallesCompraProveedor(compraProveedor);

                cmd.Transaction.Commit();
                cmd.Connection.Close();

                return(Convert.ToInt16(paramId));
            }
            catch (Exception e)
            {
                cmd.Transaction.Rollback();
                cmd.Connection.Close();
                throw e;
            }
        }
예제 #4
0
        /// <summary>
        /// Metodo que permite insertar una coleccion de objetos DetalleCompraProveedor de una CompraProveedor especificada en el parametro de entrada
        /// </summary>
        /// <param name="compraProveedor"></param>
        /// <returns>Valor Int con la cantidad de objetos DetalleCompraProveedor insertados en la Base de Datos</returns>
        public int insertarDetallesCompraProveedor(CompraProveedor compraProveedor)
        {
            SqlCommand cmd = new SqlCommand("PACK_DETALLES_COMPRA_PROVEEDOR.PR_DETALLES_COMPRA_PROVEEDOR_A", getConexion());

            cmd.CommandType = CommandType.StoredProcedure;

            int cantidadDetallesInsertados = 0;

            try
            {
                cmd.Connection.BeginTransaction();

                foreach (DetalleCompraProveedor itemDetalle in compraProveedor.LsDetalles)
                {
                    cmd.Parameters.AddWithValue("@p_id_compra", compraProveedor.IdCompra);
                    cmd.Parameters.AddWithValue("@p_id_insumo", itemDetalle.Insumo.IdInsumo);
                    cmd.Parameters.AddWithValue("@p_cantidad", itemDetalle.Cantidad);
                    cmd.Parameters.AddWithValue("@p_precio_unitario", itemDetalle.PrecioUnitario);

                    cmd.ExecuteNonQuery();
                    cantidadDetallesInsertados++;
                    cmd.Parameters.Clear();
                }

                cmd.Transaction.Commit();
                cmd.Connection.Close();

                return(cantidadDetallesInsertados);
            }
            catch (Exception e)
            {
                cmd.Transaction.Rollback();
                cmd.Connection.Close();
                throw e;
            }
        }