Beispiel #1
0
        private async void dgvDetalles_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 12 || e.ColumnIndex == 10)
            {
                int empeñoId = int.Parse(dgvDetalles.SelectedRows[0].Cells[0].Value.ToString());
                var temporal = empeños.Where(x => x.EmpenoId == empeñoId).SingleOrDefault();
                var empeño   = _context.Empenos.Where(x => x.EmpenoId == empeñoId).SingleOrDefault();
                temporal.EditorId = await funciones.GetEmpleadoIdByUser(Program.Usuario.Usuario);

                empeño.EditorId = await funciones.GetEmpleadoIdByUser(Program.Usuario.Usuario);

                temporal.FechaRetiroAdministrador = DateTime.Now;
                empeño.FechaRetiroAdministrador   = DateTime.Now;
                temporal.RetiradoAdministrador    = true;
                empeño.RetiradoAdministrador      = true;
                empeño.Estado = Estado.Retirado;
                _context.Entry(empeño).State = EntityState.Modified;
                await _context.SaveChangesAsync();
            }
            else if (e.ColumnIndex == 13 || e.ColumnIndex == 9)
            {
                int empeñoId = int.Parse(dgvDetalles.SelectedRows[0].Cells[0].Value.ToString());
                var temporal = empeños.Where(x => x.EmpenoId == empeñoId).SingleOrDefault();
                var empeño   = empeños.Where(x => x.EmpenoId == empeñoId).SingleOrDefault();
                temporal.EditorId = await funciones.GetEmpleadoIdByUser(Program.Usuario.Usuario);

                empeño.EditorId = await funciones.GetEmpleadoIdByUser(Program.Usuario.Usuario);

                frmOscuro oscuro = new frmOscuro();
                oscuro.Show();
                frmProroga frmProroga = new frmProroga(empeño.EmpenoId);
                frmProroga.ShowDialog();
                oscuro.Close();

                if (Program.Proroga)
                {
                    var proroga = _context.Prorrogas.Where(p => p.EmpenoId == empeñoId).FirstOrDefault();
                    temporal.Prorroga = true;
                    empeño.Prorroga   = true;
                    if (!string.IsNullOrEmpty(empeño.Cliente.Correo))
                    {
                        EmailFuncion emailFuncion = new EmailFuncion();
                        var          str          = "Se le a otorgado una <b>prórroga de " + proroga.DiasProrroga + " días</b>, para que pueda retirar su Empeño #" + empeño.EmpenoId +
                                                    " <b>vencido el " + empeño.FechaVencimiento.ToString("dd/MM/yyyy") + "</b> por : <br /><i>" + empeño.Descripcion + "</i><br /><br />";
                        await emailFuncion.SendMail(empeño.Cliente.Correo, "Proróga de Empeño #" + empeñoId + " en " + configuracion.Compañia, str, empeño);
                    }
                }

                _context.Entry(empeño).State = EntityState.Modified;
                await _context.SaveChangesAsync();
            }
            index = dgvDetalles.SelectedRows[0].Index;
            LoadDetalle();
            dgvDetalles.Rows[0].Selected                = false;
            dgvDetalles.Rows[index].Selected            = true;
            dgvDetalles.FirstDisplayedScrollingRowIndex = dgvDetalles.SelectedRows[0].Index;
        }
Beispiel #2
0
        private async void btnGuardar_Click(object sender, EventArgs e)
        {
            if (EmpeñoId > 0)
            {
                var empeño = await _context.Empenos.FindAsync(EmpeñoId);

                if (empeño != null)
                {
                    if (ProrogaId > 0)
                    {
                        var proroga = await _context.Prorrogas.FindAsync(ProrogaId);

                        proroga.Comentario   = txtComentario.Text;
                        proroga.DiasProrroga = int.Parse(txtTiempo.Text);
                        proroga.EmpleadoId   = await funciones.GetEmpleadoIdByUser(Program.Usuario.Usuario);

                        proroga.EmpenoId = empeño.EmpenoId;
                        proroga.Fecha    = DateTime.Today;

                        _context.Entry(proroga).State = EntityState.Modified;
                    }
                    else
                    {
                        var proroga = new Prorroga()
                        {
                            Comentario   = txtComentario.Text,
                            DiasProrroga = int.Parse(txtTiempo.Text),
                            EmpleadoId   = await funciones.GetEmpleadoIdByUser(Program.Usuario.Usuario),
                            EmpenoId     = empeño.EmpenoId,
                            Fecha        = DateTime.Today
                        };

                        _context.Prorrogas.Add(proroga);
                    }

                    await _context.SaveChangesAsync();

                    Program.Proroga  = true;
                    Program.EmpeñoId = EmpeñoId;
                    this.Close();
                }
            }
        }
Beispiel #3
0
        public async Task Guardar()
        {
            if (!funciones.ValidatePIN("Empeño"))
            {
                return;
            }

            double pagoIntereses  = double.Parse(txtPagaInteres.Text);
            double pagoMonto      = double.Parse(txtPagaMonto.Text);
            double montoPendiente = double.Parse(txtMontoAPagar.Text);

            if (pagoMonto < montoPendiente)
            {
                if ((pagoMonto > 0) && (empeño.Intereses.Sum(i => i.Monto) > (empeño.Intereses.Sum(i => i.Pagado) + pagoIntereses)))
                {
                    MessageBox.Show("Para abonar a la prenda debe pagar todos los intereses pendientes de " + montoMinimo.ToString("N2"), "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
            }
            var empleadoId = await funciones.GetEmpleadoIdByUser(Program.Usuario.Usuario);

            double montoIntereses = double.Parse(txtInteresAPagar.Text);



            if (pagoMonto > montoPendiente)
            {
                txtPagaMonto.Text = txtMontoAPagar.Text;
                pagoMonto         = double.Parse(txtPagaMonto.Text);
            }
            if (pagoIntereses > montoIntereses)
            {
                txtPagaInteres.Text = txtInteresAPagar.Text;
                pagoIntereses       = double.Parse(txtPagaInteres.Text);
            }

            empeño = null;
            var empeñoTemp = _context.Empenos.Find(empeñoId);

            if ((pagoMonto > 0 && pagoMonto < montoPendiente) && (pagoIntereses < montoMinimo - 1))
            {
                MessageBox.Show("Para abonar a la prenda debe pagar todos los intereses pendientes de " + montoMinimo.ToString("N2"), "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (pagoMonto > 0)
            {
                var pago = new Pago
                {
                    EmpenoId    = empeñoTemp.EmpenoId,
                    Consecutivo = GetConsecutivo(),
                    Comentario  = txtComentario.Text == "Comentario" ? string.Empty : txtComentario.Text,
                    EmpleadoId  = Program.EmpleadoId,
                    Fecha       = DateTime.Now,
                    Monto       = pagoMonto,
                    TipoPago    = TipoPago.Principal,
                };

                _context.Pago.Add(pago);
                await _context.SaveChangesAsync();

                await funciones.SaveBitacora(new ValorBitacora
                {
                    Valor  = JsonConvert.SerializeObject(pago),
                    Modulo = "Pagos",
                    Accion = "Crear"
                });

                empeñoTemp.MontoPendiente -= pago.Monto;

                if (empeñoTemp.MontoPendiente < 1)
                {
                    var pagoInteres = await SetPagaInteres(pagoIntereses, false);

                    empeñoTemp.Estado      = Estado.Cancelado;
                    empeñoTemp.Retirado    = true;
                    empeñoTemp.FechaRetiro = DateTime.Today;
                    _context.Intereses.RemoveRange(_context.Intereses.Where(i => i.EmpenoId == empleadoId && i.Pagado == 0));
                    _context.Entry(empeñoTemp).State = EntityState.Modified;
                    await _context.SaveChangesAsync();

                    if (pagoInteres == null)
                    {
                        await PrintRetiro(empeñoTemp, pago);
                    }
                    else
                    {
                        await PrintRetiro(empeñoTemp, pago, pagoInteres);
                    }
                }
                else
                {
                    empeñoTemp.Estado = Estado.Vigente;
                    _context.Entry(empeñoTemp).State = EntityState.Modified;
                    await _context.SaveChangesAsync();
                    await PagaInteres(pagoIntereses, true);
                    await PrintAbono(empeñoTemp, pago);
                }
            }
            else
            {
                await PagaInteres(pagoIntereses, true);
            }

            await _context.SaveChangesAsync();

            this.Close();
        }
Beispiel #4
0
        public async Task ProcessClose()
        {
            var fecha    = DateTime.ParseExact(txtFecha.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
            var tomorrow = fecha.AddDays(1);

            empleadoId = await funciones.GetEmpleadoIdByUser(Program.Usuario.Usuario);

            empleadoId = empleadoId == null ? 1 : empleadoId;
            var empleado = await _context.Empleados.FindAsync(empleadoId);

            txtEmpleado.Text    = empleado.Nombre;
            txtEmpleado.Enabled = false;
            textBox1.Text       = "0.00";

            var empeñosActivos = _context.Empenos.Where(x => !x.IsDelete &&
                                                        ((x.Estado == Estado.Vigente || x.Estado == Estado.Pendiente || x.Estado == Estado.Vencido) ||
                                                         (x.Estado == Estado.Cancelado && x.FechaRetiro > tomorrow)));

            var prueba2 = _context.Empenos.Sum(x => x.MontoPendiente);
            var prueba3 = _context.Empenos.Where(x => !x.IsDelete).Sum(x => x.MontoPendiente);
            var prueba4 = _context.Empenos.Where(x => !x.IsDelete &&
                                                 ((x.Estado == Estado.Vigente || x.Estado == Estado.Pendiente || x.Estado == Estado.Vencido))).Sum(x => x.MontoPendiente);
            var prueba5 = _context.Empenos.Where(x => !x.IsDelete &&
                                                 ((x.Estado == Estado.Vigente || x.Estado == Estado.Pendiente || x.Estado == Estado.Vencido) ||
                                                  (x.Estado == Estado.Cancelado && x.FechaRetiro > tomorrow))).Sum(x => x.MontoPendiente);


            double?vencidos = _context.Empenos.Where(x => !x.IsDelete && x.FechaRetiroAdministrador >= fecha && x.FechaRetiroAdministrador < tomorrow).ToList().Sum(x => x.MontoPendiente);

            double prueba = empeñosActivos.Sum(x => x.MontoPendiente);

            double c1 = empeñosActivos.Where(x => x.Fecha < fecha &&
                                             (!x.Retirado || (x.FechaRetiroAdministrador >= fecha && x.FechaRetiroAdministrador < tomorrow))).Sum(x => x.MontoPendiente);

            double c2c3 = _context.Pago.Where(p => p.Fecha >= fecha && p.Fecha < tomorrow && p.TipoPago == TipoPago.Principal).Any() ?
                          _context.Pago.Where(p => p.Fecha >= fecha && p.Fecha < tomorrow && p.TipoPago == TipoPago.Principal).Select(x => x.Monto).Sum()
                : 0;

            double acumuladoInicial = (c1 + (vencidos == null?0: vencidos.Value)) + c2c3;

            //double acumuladoInicial = c1 + c2c3;


            txtAcumuladoInicial.Text = acumuladoInicial.ToString("N2");


            double?montoEmpeñoDia = empeñosActivos.Where(x => !x.IsDelete && x.Fecha >= fecha && x.Fecha < tomorrow).ToList().Sum(x => x.Monto);

            txtMonto.Text = montoEmpeñoDia != null?montoEmpeñoDia.Value.ToString("N2") : "0.00";

            double?montoInteresDia = _context.Empenos.Where(x => !x.IsDelete && (x.Estado == Estado.Vigente ||
                                                                                 x.Estado == Estado.Pendiente || x.Estado == Estado.Vencido || x.Estado == Estado.Cancelado))
                                     .SelectMany(x => x.Pagos).Where(x => x.TipoPago == TipoPago.Interes && x.Fecha >= fecha && x.Fecha < tomorrow).ToList().Sum(x => x.Monto);

            double?montoInteresDia2 = _context.Intereses.Where(x => x.FechaPago >= fecha && x.FechaPago < tomorrow).ToList().Sum(x => x.MontoInteres);

            double?montoBodegaDia = _context.Intereses.Where(x => x.FechaPago >= fecha && x.FechaPago < tomorrow).ToList().Sum(x => x.MontoBodega);

            txtInteres.Text = montoInteresDia != null?montoInteresDia.Value.ToString("N2") : "0.00";

            txtBodega.Text = montoBodegaDia != null?montoBodegaDia.Value.ToString("N2") : "0.00";

            double?abonoDia = empeñosActivos
                              .SelectMany(x => x.Pagos).Where(x => x.TipoPago == TipoPago.Principal && x.Fecha >= fecha && x.Fecha < tomorrow).ToList().Sum(x => x.Monto);

            txtAbonos.Text = abonoDia != null?abonoDia.Value.ToString("N2") : "0.00";

            txtVencimientos.Text = vencidos != null?vencidos.Value.ToString("N2") : "0.00";

            double?cancelados = _context.Empenos.Where(x => !x.IsDelete && (x.Estado == Estado.Cancelado ||
                                                                            x.Retirado || x.FechaRetiro != null))
                                .SelectMany(x => x.Pagos).Where(x => x.TipoPago == TipoPago.Principal && x.Fecha >= fecha && x.Fecha < tomorrow).ToList().Sum(x => x.Monto);

            txtCancelados.Text = cancelados != null?cancelados.Value.ToString("N2") : "0.00";

            txtAcumulado.Text = ((acumuladoInicial + montoEmpeñoDia) - (abonoDia + vencidos + cancelados)).Value.ToString("N2");

            detalles.Clear();

            detalles.Add(
                new DetalleCierreCaja
            {
                Concepto = "Empeños",
                Valor    = montoEmpeñoDia != null ? montoEmpeñoDia.Value : 0
            });

            detalles.Add(
                new DetalleCierreCaja
            {
                Concepto = "Monto de Abonos",
                Valor    = abonoDia != null ? abonoDia.Value : 0
            });

            detalles.Add(
                new DetalleCierreCaja
            {
                Concepto = "Intereses",
                Valor    = montoInteresDia2 != null ? montoInteresDia2.Value : 0
            });

            detalles.Add(
                new DetalleCierreCaja
            {
                Concepto = "Bodega",
                Valor    = montoBodegaDia != null ? montoBodegaDia.Value : 0
            });

            detalles.Add(
                new DetalleCierreCaja
            {
                Concepto = "Retiros",
                Valor    = cancelados != null ? cancelados.Value : 0
            });

            detalles.Add(
                new DetalleCierreCaja
            {
                Concepto = "Vencidos",
                Valor    = vencidos != null ? vencidos.Value : 0
            });

            detalles.Add(
                new DetalleCierreCaja
            {
                Concepto = "Acumulado",
                Valor    = ((acumuladoInicial + montoEmpeñoDia) - (abonoDia + vencidos + cancelados)).Value
            });

            LoadList();
        }
Beispiel #5
0
        public async Task Aceptar()
        {
            var perfil = await _context.User.Where(u => u.Codigo == txtPIN.Text).FirstOrDefaultAsync();

            if (perfil == null)
            {
                MessageBox.Show("No tiene acceso al módulo " + Modulo, "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Program.Modulo = Modulo;
                Program.Acceso = false;
                return;
            }

            Program.PIN        = txtPIN.Text;
            Program.Modulo     = Modulo;
            Program.Acceso     = false;
            Program.EmpleadoId = await funciones.GetEmpleadoIdByUser(perfil.Usuario);

            Program.PerfilId = perfil.PerfilId;

            if (perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "SuperUsuario")
            {
                Program.Acceso = true;
            }

            switch (Modulo)
            {
            case "Configuración":
                if (perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "Supervisor")
                {
                    Program.Acceso = true;
                }
                break;

            case "Cierre Caja":
                if (perfil.Perfil.Nombre == "Empleado" || perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "Supervisor")
                {
                    Program.Acceso = true;
                }
                break;

            case "Arqueo":
                if (perfil.Perfil.Nombre == "Empleado" || perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "Supervisor")
                {
                    Program.Acceso = true;
                }
                break;

            case "Empeño":
                if (perfil.Perfil.Nombre == "Empleado" || perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "Supervisor")
                {
                    Program.Acceso = true;
                }
                break;

            case "Editar Empeño":
                if (perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "Supervisor")
                {
                    Program.Acceso = true;
                }
                break;

            case "Borrar Empeño":
                if (perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "Supervisor")
                {
                    Program.Acceso = true;
                }
                break;

            case "Borrar Pago":
                if (perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "Supervisor")
                {
                    Program.Acceso = true;
                }
                break;

            case "Editar Pago":
                if (perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "Supervisor")
                {
                    Program.Acceso = true;
                }
                break;

            case "Pago":
                if (perfil.Perfil.Nombre == "Empleado" || perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "Supervisor")
                {
                    Program.Acceso = true;
                }
                break;

            case "Empleado":
                if (perfil.Perfil.Nombre == "Administrador" || perfil.Perfil.Nombre == "Supervisor")
                {
                    Program.Acceso = true;
                }
                break;

            default:
                Program.Acceso = false;
                break;
            }
            if (!Program.Acceso)
            {
                MessageBox.Show("No tiene acceso al módulo " + Modulo, "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Program.Modulo = Modulo;
                Program.Acceso = false;
            }
            this.Close();
        }