public detallePago GuardarDetallePago(detallePago oPago) { try { using (BDSoftComputacionEntities bd = new BDSoftComputacionEntities()) { bd.Entry(oPago).State = System.Data.Entity.EntityState.Added; bd.SaveChanges(); return(oPago); } } catch (Exception ex) { throw ex; } }
public bool CancelarVenta(int idVenta) { try { using (BDSoftComputacionEntities bd = new BDSoftComputacionEntities()) { // cambio el estado a la venta y le pongo el 0 el monto entregado venta oVenta = bd.venta.Where(x => x.idVenta == idVenta).FirstOrDefault(); decimal dMontoEntregado = Convert.ToDecimal(oVenta.entregado); oVenta.idEstado = 12; oVenta.entregado = 0; bd.Entry(oVenta).State = System.Data.Entity.EntityState.Modified; // si la venta tiene entregado y no es consumidor final if (dMontoEntregado >= 0 && oVenta.idCliente != null && oVenta.idCliente != 0) { // le agrego lo entregado como saldo al cliente cliente oCliente = bd.cliente.Where(x => x.idCliente == oVenta.idCliente).FirstOrDefault(); oCliente.saldo = oCliente.saldo + dMontoEntregado; bd.Entry(oCliente).State = System.Data.Entity.EntityState.Modified; // creo un detalle en DetallePago para guardar que se le cargó el saldo al cliente detallePago oDetallePago = new detallePago(); oDetallePago.entrega = dMontoEntregado; oDetallePago.fechaPago = DateTime.Now; oDetallePago.idVenta = oVenta.idVenta; oDetallePago.tipoPago = "VENTA CANCELADA"; oDetallePago.idMetodoPago = 1; bd.Entry(oDetallePago).State = System.Data.Entity.EntityState.Added; } bd.SaveChanges(); return(true); } } catch (Exception) { return(false); } }
public JsonResult GuardarPago(string entrega, int idMetodoPago, int idVenta, int idCliente, bool usoSaldo, bool guardarSaldo) { try { srvVenta sVenta = new srvVenta(); srvCliente sCliente = new srvCliente(); cliente oCliente = new cliente(); venta oVenta = sVenta.ObtenerVenta(idVenta); decimal EntregaMasSaldo = 0; // total de $ entregado (saldo + dinero entregado) decimal entregoSaldo = 0; // saldo entregado decimal entregoDinero = 0; // dinero entregado decimal saldoAgregadoDinero = 0; // saldo que sobra del dinero entregado decimal faltante = oVenta.costoTotal - Convert.ToDecimal(oVenta.entregado); entrega = entrega.Replace('.', ','); if (idCliente != 0) { oCliente = sCliente.ObtenerCliente(idCliente); if (usoSaldo) { //entrega todo el saldo cuando el saldo es menor al faltante de la venta EntregaMasSaldo = Convert.ToDecimal(oCliente.saldo); faltante = faltante - Convert.ToDecimal(oCliente.saldo); if (faltante < 0) { //pago todo con el saldo EntregaMasSaldo = oVenta.costoTotal - Convert.ToDecimal(oVenta.entregado); faltante = 0; } oCliente.saldo = oCliente.saldo - (oVenta.costoTotal - Convert.ToDecimal(oVenta.entregado)); if (oCliente.saldo < 0) { oCliente.saldo = 0; } entregoSaldo = EntregaMasSaldo; } } if (faltante > 0) { //pagó o no algo con el saldo pero aún queda por pagar //500 faltante // 400 entrega if (Convert.ToDecimal(entrega) > faltante) { EntregaMasSaldo = EntregaMasSaldo + faltante; } else { EntregaMasSaldo = EntregaMasSaldo + (Convert.ToDecimal(entrega)); } } if (oCliente.idCliente != 0) { // lo guardo aca porque falta ver si queda resto en la entrega // guardar siempre el saldo? o dejarlo así? if (guardarSaldo) { saldoAgregadoDinero = (Convert.ToDecimal(entrega) - faltante); oCliente.saldo = oCliente.saldo + (Convert.ToDecimal(entrega) - faltante); if (oCliente.saldo < 0) { saldoAgregadoDinero = 0; oCliente.saldo = 0; } } sCliente.GuardarModificarCliente(oCliente); } entregoDinero = EntregaMasSaldo - entregoSaldo; //EntregaMasSaldo //entregoSaldo //entregoDinero //saldoAgregadoDinero detallePago oDetalleP = new detallePago(); // guardo el detalle del saldo consumido (-) if (entregoSaldo > 0) { oDetalleP.fechaPago = DateTime.Now; oDetalleP.idMetodoPago = idMetodoPago; oDetalleP.idVenta = idVenta; oDetalleP.entrega = Math.Round(entregoSaldo * -1, 0); oDetalleP.tipoPago = "SALDO"; sVenta.GuardarDetallePago(oDetalleP); } // guardo el detalle del dinero entregado (-) if (entregoDinero > 0) { oDetalleP.fechaPago = DateTime.Now; oDetalleP.idMetodoPago = idMetodoPago; oDetalleP.idVenta = idVenta; oDetalleP.entrega = Math.Round(entregoDinero * -1, 0); oDetalleP.tipoPago = "DINERO"; sVenta.GuardarDetallePago(oDetalleP); } // guardo el detalle del saldo agregado (-) if (saldoAgregadoDinero > 0) { oDetalleP.fechaPago = DateTime.Now; oDetalleP.idMetodoPago = idMetodoPago; oDetalleP.idVenta = idVenta; oDetalleP.entrega = Math.Round(saldoAgregadoDinero, 0); oDetalleP.tipoPago = "SALDO"; sVenta.GuardarDetallePago(oDetalleP); } oVenta.entregado = Math.Round(Convert.ToDecimal(oVenta.entregado) + EntregaMasSaldo, 0); sVenta.ModificarVenta(oVenta); return(Json(true)); } catch (Exception) { return(Json(false)); } }