Exemple #1
0
        public ActionResult GuardarModificarCliente(cliente oCliente, string saldo = "")
        {
            try
            {
                usuario oSession = (usuario)Session["Usuario"];

                if (oSession == null)
                {
                    Session.Clear();
                    return(RedirectToAction("Index", "Home"));
                }
                srvCliente sCliente = new srvCliente();
                if (oSession.idTipoUsuario == 2)
                {
                    if (saldo != "0" && saldo != "")
                    {
                        saldo = saldo.Replace(".", ",");
                        decimal dSaldo = Math.Round(Convert.ToDecimal(saldo), 0);
                        oCliente.saldo = dSaldo;
                    }
                }
                else
                {
                    oCliente.saldo = Math.Round(Convert.ToDecimal(saldo), 0);
                }


                sCliente.GuardarModificarCliente(oCliente);
                return(RedirectToAction("ListarClientes"));
            }
            catch (Exception)
            {
                return(RedirectToAction("Error", "Error", new { stError = "Se produjo un error al intentar guardar o modificar el usuario." }));
            }
        }
        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));
            }
        }