Exemple #1
0
 public ActionResult ListaVentasCliente(int idCliente)
 {
     try
     {
         usuario oUsuario = (usuario)Session["Usuario"];
         if (oUsuario == null)
         {
             Session.Clear();
             return(RedirectToAction("Index", "Home"));
         }
         srvCliente sCliente = new srvCliente();
         cliente    oCliente = sCliente.ObtenerCliente(idCliente);
         if (oCliente == null || oCliente.idCliente == 0)
         {
             throw new Exception();
         }
         ViewBag.oCliente = oCliente;
         List <venta> lstVentas = sCliente.ObtenerVentas(idCliente);
         return(View(lstVentas));
     }
     catch (Exception)
     {
         return(RedirectToAction("Error", "Error", new { stError = "Se produjo un error al intentar obtener los datos del servidor." }));
     }
 }
        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));
            }
        }