public static bool EnviarOrdenVentaCredito(int pOrdenVentaId) { var orden = Obtener(pOrdenVentaId); var glosa = string.Empty; decimal inicial = orden.TotalNeto * (decimal)0.15; decimal montocredito = orden.TotalNeto - inicial; int productoId = 1; var gastosadm = GastosAdmBL.CalcularGastosAdm(montocredito); var lstdes = OrdenVentaDetBL.Listar(x => x.Estado && x.OrdenVentaId == orden.OrdenVentaId).Select(x => x.Descripcion) .ToList(); for (int i = 0; i < lstdes.Count; i++) { glosa += lstdes[i]; if (i != lstdes.Count - 1) { glosa += ", " + Environment.NewLine; } } var oCredito = new Credito { OficinaId = VendixGlobal.GetOficinaId(), PersonaId = orden.PersonaId, Descripcion = glosa, MontoProducto = orden.TotalNeto, MontoInicial = inicial, MontoCredito = montocredito, ProductoId = productoId, MontoGastosAdm = gastosadm, Estado = "CRE", FormaPago = "D", NumeroCuotas = 26, InteresMensual = 7, FechaPrimerPago = DateTime.Now, FechaVencimiento = DateTime.Now, FechaReg = DateTime.Now, UsuarioRegId = VendixGlobal.GetUsuarioId(), OrdenVentaId = pOrdenVentaId }; using (var scope = new TransactionScope()) { try { CreditoBL.Crear(oCredito); orden.Estado = "ENV"; orden.TipoVenta = "CRE"; Actualizar(orden); scope.Complete(); } catch (Exception ex) { scope.Dispose(); throw new Exception(ex.InnerException.Message); } } return(true); }
public static int RealizarPedido(int pClienteId, List <Pedido> pPedidos) { using (var scope = new TransactionScope()) { try { var cabecera = new OrdenVenta { OficinaId = VendixGlobal.GetOficinaId(), Subtotal = 0, TotalNeto = 0, TotalImpuesto = 0, TotalDescuento = 0, Estado = "ENV", UsuarioRegId = VendixGlobal.GetUsuarioId(), FechaReg = VendixGlobal.GetFecha(), PersonaId = pClienteId, TipoVenta = "CON" }; Guardar(cabecera); var detalle = new List <OrdenVentaDet>(); OrdenVentaDet item; decimal tNeto = 0; decimal tDescuento = 0; foreach (var i in pPedidos) { item = new OrdenVentaDet(); var art = ArticuloBL.Obtener(x => x.ArticuloId == i.ArticuloId, "ListaPrecio"); var precio = art.ListaPrecio.First().Monto.Value; item.OrdenVentaId = cabecera.OrdenVentaId; item.ArticuloId = art.ArticuloId; item.Cantidad = i.Cantidad; item.Descripcion = art.Denominacion; item.ValorVenta = precio; item.Descuento = i.Descuento; item.Subtotal = i.Cantidad * (precio - i.Descuento); item.Estado = true; var lstSerie = SerieArticuloBL .Listar(x => x.ArticuloId == i.ArticuloId && x.EstadoId == Constante.SerieArticulo.EN_ALMACEN, x => x.OrderBy(y => y.SerieArticuloId)) .Take(i.Cantidad); foreach (var l in lstSerie) { item.OrdenVentaDetSerie.Add(new OrdenVentaDetSerie { SerieArticuloId = l.SerieArticuloId }); //SerieArticuloBL.ActualizarParcial( // new SerieArticulo { SerieArticuloId = l.SerieArticuloId, EstadoId = Constante.SerieArticulo.PREVENTA }, // x => x.EstadoId); } detalle.Add(item); tNeto += item.Subtotal; tDescuento += item.Descuento; } OrdenVentaDetBL.Guardar(detalle); cabecera.TotalNeto = tNeto; cabecera.TotalDescuento = tDescuento; cabecera.Subtotal = Math.Round(tNeto / (1 + Constante.IGV), 2); cabecera.TotalImpuesto = Math.Round(tNeto - cabecera.Subtotal, 2); ActualizarParcial(cabecera, x => x.TotalNeto, x => x.TotalDescuento, x => x.Subtotal, x => x.TotalImpuesto); int?retid; using (var db = new VENDIXEntities()) { retid = db.usp_PagarCuentaxCobrar(cabecera.OrdenVentaId, 0, VendixGlobal.GetCajaDiarioId(), VendixGlobal.GetUsuarioId()).ToList()[0]; } scope.Complete(); return(cabecera.OrdenVentaId); } catch (Exception ex) { scope.Dispose(); throw new Exception(ex.InnerException.Message); } } }