none
Como puedo calcular la suma de los impuestos pues son 2 = 19% y 7% diferentes y tengo 2 tablas Insumos y mi tabla de detalle RRS feed

  • Pregunta

  • saludos amigos del foro, les traigo un inconveniente, tengo que sumar en mi función el impuesto que puede ser 19% o 7 %, hasta ahí todo claro, ahora no se como puedo combinar entre mi tabla de insumos y mi tabla de detalle donde guardo el id y valor de impuesto y quiero que cuando haga el select de Insumos jale de la tabla detalle el id y el valor de impuesto no se si me deje entender, me podran ayudar por favor, gracias.

            public static decimal Calcula_Impuesto(string Moneda)
            {

                //Calculamos la cantidad de resgistros
                int cantreg = 0;

                try
                {
                    using (SqlConnection con = new SqlConnection(conexion.CadenaConexion()))
                    {

                        var cmd = new SqlCommand("SELECT COUNT(*) As cantreg FROM temp_cfacturasd_" + Program.Sys_Nombre_Tabla_cfacturas, con);

                        con.Open();

                        SqlDataReader dr = cmd.ExecuteReader();

                        if (dr.HasRows)
                        {
                            while (dr.Read())
                            {
                                if (Convert.IsDBNull(dr["cantreg"]))
                                    cantreg = 0;
                                else
                                    cantreg = Convert.ToInt32(dr["cantreg"]);
                            }
                        }
                        dr.Close();
                    }
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message, "Compras / Facturas / GetFacura", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }

                decimal suma = 0;

                string[,] registros;
                registros = new string[cantreg, 2];

                //Cargamos el array con los registros
                try
                {
                    using (SqlConnection con = new SqlConnection(conexion.CadenaConexion()))
                    {

                        var cmd = new SqlCommand("SELECT * FROM insumos WHERE id = @id", con);

                        cmd.Parameters.Add("@id", SqlDbType.BigInt).Value = Convert.ToInt32(id);

                        con.Open();

                        SqlDataReader dr = cmd.ExecuteReader();

                        if (dr.HasRows)
                        {
                            while (dr.Read())
                            {
                                registros[cantreg, 0] = dr["id"].ToString();
                                registros[cantreg, 1] = dr["valorimpuesto"].ToString();
                            }
                        }

                        dr.Close();

                        if (Moneda == "MN")
                        {
                            cmd = new SqlCommand("SELECT SUM((preciomonedanacional*cantidad)*(@valorimpuesto/100+1)) AS suma FROM temp_cfacturasd_" +
                                Program.Sys_Nombre_Tabla_cfacturas + " WHERE eliminado = 0", con);
                        }
                        else
                        {
                            cmd = new SqlCommand("SELECT SUM((preciodolares*cantidad)*(@valorimpuesto/100+1)) AS suma FROM temp_cfacturasd_" + 
                                Program.Sys_Nombre_Tabla_cfacturas + " WHERE eliminado = 0", con);
                        }

                        cmd.Parameters.Add("@valorimpuesto", SqlDbType.Decimal).Value = registros[cantreg, 1];

                        con.Open();

                        dr = cmd.ExecuteReader();

                        if (dr.HasRows)
                        {
                            while (dr.Read())
                            {
                                if (Convert.IsDBNull(dr["suma"]))
                                    suma = 0;
                                else
                                    suma = suma + Convert.ToDecimal(dr["suma"]);
                            }
                        }

                        dr.Close();
                    }
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message, "Compras / Facturas / Calcula Impuesto", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }

                return suma;
            }

    jueves, 24 de enero de 2019 21:34

Respuestas

  • Saludos amigos ya me funciona el procedimiento quedaria así para personas que lo necesitan:

    cmd = new SqlCommand("SELECT SUM(ROUND((f.cantidad*f.preciodolares)*(i.valorimpuesto/100),4)) AS suma FROM" +
    " (SELECT i.id, i.valorimpuesto FROM insumos i) AS i," +
    " (SELECT f.id, f.idins, f.cantidad, f.preciodolares FROM temp_cfacturasd_" +
    Program.Sys_Nombre_Tabla_cfacturas + " f) AS f WHERE i.id = f.idins AND f.id = @id", con);

    Saludos.

    • Marcado como respuesta Rudolf Heiner sábado, 26 de enero de 2019 15:24
    sábado, 26 de enero de 2019 15:24

Todas las respuestas

  • Hola  Rudolf Heiner

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comento que estaremos realizando una revisión a profundidad acerca del inconveniente que se te está presentando.

    Proporcionaremos una respuesta lo más pronto posible.

    Gracias por usar los foros de MSDN.

    Pedro Alfaro
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
    jueves, 24 de enero de 2019 23:18
    Moderador
  • Tanto Código por gusto, lo he resumido así pero necesito que alguien me ayude pues no me funciona bien:

    "SELECT SUM(ROUND((f.preciomonedanacional*f.cantidad)*(i.valorimpuesto/100+1),4)) AS suma FROM" +
    " (SELECT i.id, i.valorimpuesto FROM insumos i) AS i," +
    " (SELECT f.idins, f.preciomonedanacional, f.cantidad FROM temp_cfacturasd_" +
    Program.Sys_Nombre_Tabla_cfacturas + " f) AS f WHERE f.idins = i.id GROUP BY f.idins, i.id"

    viernes, 25 de enero de 2019 6:08
  • Saludos amigos ya me funciona el procedimiento quedaria así para personas que lo necesitan:

    cmd = new SqlCommand("SELECT SUM(ROUND((f.cantidad*f.preciodolares)*(i.valorimpuesto/100),4)) AS suma FROM" +
    " (SELECT i.id, i.valorimpuesto FROM insumos i) AS i," +
    " (SELECT f.id, f.idins, f.cantidad, f.preciodolares FROM temp_cfacturasd_" +
    Program.Sys_Nombre_Tabla_cfacturas + " f) AS f WHERE i.id = f.idins AND f.id = @id", con);

    Saludos.

    • Marcado como respuesta Rudolf Heiner sábado, 26 de enero de 2019 15:24
    sábado, 26 de enero de 2019 15:24