Esempio n. 1
0
        public static void InsertarFactura(Factura f, List<DetalleFactura> listaDetalles)
        {
            SqlConnection con = new SqlConnection(cadena);

                con.Open();
                SqlTransaction tran = con.BeginTransaction();
                //Insertamos la factura primero
                string sql = "INSERT INTO Facturas (numeroFactura, fechaFactura, idReparacion, total) VALUES (@numeroFactura, @fechaFactura, @idReparacion, @total); SELECT @@Identity";

                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = sql;
                cmd.Connection = con;
                cmd.Transaction = tran;

                cmd.Parameters.AddWithValue("@numeroFactura", f.numeroFactura);
                cmd.Parameters.AddWithValue("@fechaFactura", f.fechaFactura);
                cmd.Parameters.AddWithValue("@idReparacion", f.reparacion.idReparacion);
                cmd.Parameters.AddWithValue("@total", f.total);

            try
            {
                int idFactura = Convert.ToInt32(cmd.ExecuteScalar());
                f.idFactura = idFactura;

                //Insertamos los detalles luego
                foreach (var df in listaDetalles)
                {
                    df.factura = f;
                    DetalleFacturaDAO.InsertarDetalleFactura(df, tran, con);
                }

                //Marcar como facturada la reparacion
                ReparacionDAO.Facturar(f.reparacion.idReparacion, con, tran);

                    tran.Commit();
                }
                catch (Exception e)
                {
                    tran.Rollback();
                throw new ApplicationException("Error al insertar factura: " + e.Message);
            }

            finally
            {
                con.Close();
            }
        }
Esempio n. 2
0
        public static List<Factura> Obtener(DateTime? fechaDesde, DateTime? fechaHasta, int idCliente, decimal totalDesde, decimal totalHasta)
        {
            List<Factura> listaFacturas = new List<Factura>();

            SqlConnection con = new SqlConnection(cadena);
            try
            {
                con.Open();
                SqlCommand cmd = new SqlCommand();
                string sql = "SELECT Facturas.numeroFactura, Facturas.fechaFactura, Vehiculos.dominio, Clientes.apellido, Clientes.nombre, Clientes.numeroDocumento, Reparaciones.totalMO, Facturas.total";
                sql += " FROM Reparaciones JOIN Facturas ON Reparaciones.idReparacion = Facturas.idReparacion JOIN Vehiculos ON Reparaciones.idVehiculo = Vehiculos.idVehiculo JOIN Clientes ON Vehiculos.idCliente = Clientes.idCliente";

                string where = "";

                if (fechaDesde != null && fechaHasta != null)
                {
                    where += " AND (Facturas.fechaFactura BETWEEN @fechaDesde AND @fechaHasta)";
                    cmd.Parameters.AddWithValue("@fechaDesde", fechaDesde);
                    cmd.Parameters.AddWithValue("@fechaHasta", fechaHasta);
                }
                else
                {
                    if (fechaDesde != null)
                    {
                        where += " AND (Facturas.fechaFactura > @fechaDesde)";
                        cmd.Parameters.AddWithValue("@fechaDesde", fechaDesde);
                    }
                    else
                    {
                        if (fechaHasta != null)
                        {
                            where += " AND (Facturas.fechaFactura < @fechaHasta)";
                            cmd.Parameters.AddWithValue("@fechaHasta", fechaHasta);
                        }
                    }
                }

                if (idCliente != 0)
                {
                    where += " AND (Clientes.idCliente = @idCliente)";
                    cmd.Parameters.AddWithValue("@idCliente", idCliente);
                }

                if (totalDesde > -1 && totalHasta > -1)
                {
                    where += " AND (Facturas.total BETWEEN @totalDesde AND @totalHasta)";
                    cmd.Parameters.AddWithValue("@totalDesde", totalDesde);
                    cmd.Parameters.AddWithValue("@totalHasta", totalHasta);
                }
                else
                {
                    if (totalDesde > -1)
                    {
                        where += " AND (Facturas.total > @totalDesde)";
                        cmd.Parameters.AddWithValue("@totalDesde", totalDesde);
                    }
                    else
                    {
                        if (totalHasta > -1)
                        {
                            where += " AND (Facturas.total < @totalHasta)";
                            cmd.Parameters.AddWithValue("@totalHasta", totalHasta);
                        }
                    }
                }

                if (where != "")
                {
                    sql += " WHERE ";
                    sql += where.Substring(5);
                }

                cmd.CommandText = sql;
                cmd.Connection = con;
                SqlDataReader dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    Factura f = new Factura();
                    Reparacion r = new Reparacion();
                    Vehiculo v = new Vehiculo();
                    Cliente c = new Cliente();

                    f.numeroFactura = (int)dr["numeroFactura"];
                    f.fechaFactura = DateTime.Parse(dr["fechaFactura"].ToString());
                    v.dominio = dr["dominio"].ToString();
                    c.apellido = dr["apellido"].ToString();
                    c.nombre = dr["nombre"].ToString();
                    c.numeroDocumento = (int)dr["numeroDocumento"];
                    c.completarNombre();
                    r.totalMO = (decimal)dr["totalMO"];
                    f.total = (decimal)dr["total"];

                    v.cliente = c;
                    r.vehiculo = v;
                    f.reparacion = r;

                    listaFacturas.Add(f);
                }
            }
            catch (SqlException e)
            {
                throw new ApplicationException("Surgió un porblema al obtener facturas");
            }
            finally
            {
                con.Close();
            }
            return listaFacturas;
        }
Esempio n. 3
0
 //public static Factura ObtenerPorId(int id)
 //{
 //    //return FacturaDAO.ObtenerPorId(id);
 //}
 public static void InsertarFactura(Factura f, List<DetalleFactura> listaDetalles)
 {
     FacturaDAO.InsertarFactura(f, listaDetalles);
 }