/// <summary> /// Persiste una venta llamando al metodo PersistirVenta de DAL /// </summary> /// <param name="unaOrdendeVenta">Orden de venta</param> /// <returns>True si se persistio , caso contrario arroja una excepcion.</returns> public static bool GuardaOrdenVenta(OrdenDeVenta unaOrdenDeVenta) { Tarjeta unaTarjeta = new Tarjeta(); if (unaOrdenDeVenta.MetodoDePago.GetType() == unaTarjeta.GetType()) { unaTarjeta = (Tarjeta)unaOrdenDeVenta.MetodoDePago; if (TarjetaBLL.ValidarTarjeta(unaTarjeta)) { if (OrdenDeVentaDAL.PersistirVenta(unaOrdenDeVenta)) { return(true); } } } else { if (OrdenDeVentaDAL.PersistirVenta(unaOrdenDeVenta)) { return(true); } } throw new Excepcion_VentaNoGuardada(); }
//SqlTransaction transaction; /// <summary> /// Guarda una orden de venta en la base de datos. /// </summary> /// <param name="unaOrdenDeVenta">Objeto OrdenDeVenta</param> /// <returns>True si se persistio la venta. Si no lanza excepcion</returns> public static bool PersistirVenta(OrdenDeVenta unaOrdenDeVenta) { Conexion objConexion = new Conexion(); Tarjeta unaTarjeta = new Tarjeta(); List <SqlCommand> listaComandos = new List <SqlCommand>(); if (unaOrdenDeVenta.MetodoDePago.GetType() == unaTarjeta.GetType()) // verifico si el metodo de pago es tarjeta, para llamar al procedimiento almacenado de venta con tarjeta { //creo todos los parametros que necesita el procedimiento almacenado SqlParameter[] parametros = { new SqlParameter("@tipoMetodoDePago", SqlDbType.VarChar, 50), new SqlParameter("@idPersona", SqlDbType.Int), new SqlParameter("@idCliente", SqlDbType.Int), new SqlParameter("@cvc", SqlDbType.VarChar, 50), new SqlParameter("@fechaVencimiento", SqlDbType.VarChar, 50), new SqlParameter("@nombreTarjeta", SqlDbType.VarChar, 50), new SqlParameter("@nroTarjeta", SqlDbType.VarChar, 16), }; //Asigno los valores parametros[0].Value = "Tarjeta"; parametros[1].Value = unaOrdenDeVenta.UsuarioCreador.ID; parametros[2].Value = unaOrdenDeVenta.Cliente.ID; parametros[3].Value = ((Tarjeta)unaOrdenDeVenta.MetodoDePago).CVC; parametros[4].Value = ((Tarjeta)unaOrdenDeVenta.MetodoDePago).FechaVencimiento; parametros[5].Value = ((Tarjeta)unaOrdenDeVenta.MetodoDePago).NombreTarjeta; parametros[6].Value = ((Tarjeta)unaOrdenDeVenta.MetodoDePago).NumeroTarjeta; SqlCommand sqlCommand = new SqlCommand(); sqlCommand.CommandText = "EXEC sp_almacenar_venta_tarjeta @tipoMetodoDePago ,@idPersona ,@idCliente ,@cvc ,@fechaVencimiento ,@nombreTarjeta ,@nroTarjeta"; sqlCommand.Parameters.AddRange(parametros); listaComandos.Add(sqlCommand); } else // si el metodo de pago es efectivo, llama al procedimiento almacenado de venta con efectivo { //creo todos los parametros que necesita el procedimiento almacenado SqlParameter[] parametros = { new SqlParameter("@tipoMetodoDePago", SqlDbType.VarChar, 50), new SqlParameter("@idPersona", SqlDbType.Int), new SqlParameter("@idCliente", SqlDbType.Int), }; //Asigno los valores parametros[0].Value = "Efectivo"; parametros[1].Value = unaOrdenDeVenta.UsuarioCreador.ID; parametros[2].Value = unaOrdenDeVenta.Cliente.ID; SqlCommand sqlCommand = new SqlCommand(); sqlCommand.CommandText = "EXEC sp_almacenar_venta_efectivo @tipoMetodoDePago ,@idPersona ,@idCliente"; sqlCommand.Parameters.AddRange(parametros); listaComandos.Add(sqlCommand); } listaComandos.AddRange(DetalleOrdenDAL.GuardarDetalles(unaOrdenDeVenta.Detalles)); if (!(objConexion.EjecutarTransaccion(listaComandos))) { return(false); } return(true); }