Beispiel #1
0
 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;
     }
 }
Beispiel #2
0
 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));
            }
        }