private void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                if (nudVuelto.Value > 0)
                {
                    if (MessageBox.Show("El total que esta por abonar es superior al monto a pagar.Desea continuar ? ",
                                        "Atención", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
                        == DialogResult.Cancel)
                    {
                        return;
                    }
                }
                else if (nudVuelto.Value < 0)
                {
                    MessageBox.Show("El total que esta por abonar es inferior al monto a pagar",
                                    "Atención", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                var _facturaNueva = new FacturaDto();
                _facturaNueva.VieneVentas = _vieneDeVentas;

                if (_vieneDeVentas)
                {
                    _facturaNueva.EmpleadoId      = _factura.Vendedor.Id;
                    _facturaNueva.ClienteId       = _factura.Cliente.Id;
                    _facturaNueva.TipoComprobante = _factura.TipoComprobante;
                    _facturaNueva.Descuento       = _factura.Descuento;
                    _facturaNueva.SubTotal        = _factura.SubTotal;
                    _facturaNueva.Total           = _factura.Total;
                    _facturaNueva.Estado          = Estado.Pagada;
                    _facturaNueva.PuestoTrabajoId = _factura.PuntoVentaId;
                    _facturaNueva.Fecha           = DateTime.Now;
                    _facturaNueva.Iva105          = 0;
                    _facturaNueva.Iva21           = 0;
                    _facturaNueva.UsuarioId       = _factura.UsuarioId;
                    foreach (var item in _factura.Items)
                    {
                        _facturaNueva.Items.Add(new DetalleComprobanteDto
                        {
                            Cantidad    = item.Cantidad,
                            Iva         = item.Iva,
                            Descripcion = item.Descripcion,
                            Precio      = item.Precio,
                            ArticuloId  = item.ArticuloId,
                            Codigo      = item.CodigoBarra,
                            SubTotal    = item.SubTotal,
                            Eliminado   = false,
                        });
                    }
                }
                else
                {
                    _facturaNueva.Id              = _facturaPendiente.Id;
                    _facturaNueva.Estado          = Estado.Pendiente;
                    _facturaNueva.VieneVentas     = false;
                    _facturaNueva.TipoComprobante = _facturaPendiente.TipoComprobante;
                    _facturaNueva.UsuarioId       = Identidad.UsuarioId;
                    _facturaNueva.Fecha           = DateTime.Now;
                    _facturaNueva.Total           = _facturaPendiente.MontoPagar;
                }
                // Formas de Pago
                if (nudTotalEfectivo.Value > 0)
                {
                    _facturaNueva.FormasDePagos.Add(new FormaPagoDto
                    {
                        Monto     = nudTotalEfectivo.Value,
                        TipoPago  = TipoPago.Efectivo,
                        Eliminado = false
                    });
                }
                if (nudTotalTarjeta.Value > 0)
                {
                    _facturaNueva.FormasDePagos.Add(new FormaPagoTarjetaDto
                    {
                        TipoPago       = TipoPago.Tarjeta,
                        CantidadCuotas = (int)nudCantidadCuotas.Value,
                        CuponPago      = txtCuponPago.Text,
                        Monto          = nudTotalTarjeta.Value,
                        NumeroTarjeta  = txtNumeroTarjeta.Text,
                        TarjetaId      = (long)cmbTarjeta.SelectedValue,
                        Eliminado      = false
                    });
                }
                if (nudTotalCheque.Value > 0)
                {
                    _facturaNueva.FormasDePagos.Add(new FormaPagoChequeDto
                    {
                        BancoId          = (long)cmbBanco.SelectedValue,
                        ClienteId        = _factura.Cliente.Id,
                        FechaVencimiento = dtpFechaVencimientoCheque.Value,
                        Monto            = nudTotalCheque.Value,
                        Numero           = txtNumeroCheque.Text,
                        TipoPago         = TipoPago.Cheque,
                        Eliminado        = false
                    });
                }
                if (nudTotalCtaCte.Value > 0)
                {
                    var deuda = _cuentaCorrienteServicio.ObtenerDeudaCliente(_factura.Cliente.Id);

                    if (_vieneDeVentas)
                    {
                        if (_factura.Cliente.ActivarCtaCte)
                        {
                            if (_factura.Cliente.TieneLimiteCompra &&
                                _factura.Cliente.MontoMaximoCtaCte < deuda + nudTotalCtaCte.Value)
                            {
                                var menssajeCtaCte = $"El cliente {_factura.Cliente.ApyNom} esta por arriba del limite Permitido."
                                                     + Environment.NewLine
                                                     + $" El limite es { _factura.Cliente.MontoMaximoCtaCte.ToString("C")}";
                                MessageBox.Show(menssajeCtaCte, "Atención",
                                                MessageBoxButtons.OK, MessageBoxIcon.Stop);
                                return;
                            }
                            _facturaNueva.FormasDePagos.Add(new FormaPagoCtaCteDto
                            {
                                TipoPago  = TipoPago.CtaCte,
                                ClienteId = _factura.Cliente.Id,
                                Monto     = nudTotalCtaCte.Value,
                                Eliminado = false,
                            });
                        }
                    }
                    else // Si viene de Pendiente
                    {
                        if (_facturaPendiente.Cliente.ActivarCtaCte)
                        {
                            if (_facturaPendiente.Cliente.TieneLimiteCompra &&
                                _facturaPendiente.Cliente.MontoMaximoCtaCte < deuda + nudTotalCtaCte.Value)
                            {
                                var menssajeCtaCte =
                                    $"El cliente {_facturaPendiente.Cliente.ApyNom} esta por arriba del limite Permitido."
                                    + Environment.NewLine
                                    + $" El limite es { _facturaPendiente.Cliente.MontoMaximoCtaCte.ToString("C")}";
                                MessageBox.Show(menssajeCtaCte, "Atención",
                                                MessageBoxButtons.OK, MessageBoxIcon.Stop);
                                return;
                            }
                            _facturaNueva.FormasDePagos.Add(new FormaPagoCtaCteDto
                            {
                                TipoPago  = TipoPago.CtaCte,
                                ClienteId = _facturaPendiente.Cliente.Id,
                                Monto     = nudTotalCtaCte.Value,
                                Eliminado = false,
                            });
                        }
                    }//TODO PRE PARCIAL
                }
                if (!_vieneDeVentas)
                {
                    _facturaServicio.Modificar(_facturaNueva);
                    MessageBox.Show("Los datos se grabaron correctamente");
                    RealizoVenta = true;
                    Close();
                }
                else
                {
                    _facturaServicio.Insertar(_facturaNueva);
                    MessageBox.Show("Los datos se grabaron correctamente");
                    RealizoVenta = true;
                    Close();
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
                RealizoVenta = false;
            }
        }
        private void btnFacturar_Click(object sender, EventArgs e)
        {
            _factura.Cliente         = _clienteSeleccionado;
            _factura.Vendedor        = _vendedorSeleccionado;
            _factura.TipoComprobante = (TipoComprobante)cmbTipoComprobante.SelectedItem;
            _factura.PuntoVentaId    = (long)cmbPuestoVenta.SelectedValue;
            _factura.UsuarioId       = Identidad.UsuarioId;


            if (_configuracion.PuestoCajaSeparado)
            {
                try
                {
                    var nuevoComprobante = new FacturaDto()
                    {
                        EmpleadoId      = _factura.Vendedor.Id,
                        ClienteId       = _factura.Cliente.Id,
                        TipoComprobante = _factura.TipoComprobante,
                        Descuento       = _factura.Descuento,
                        SubTotal        = _factura.SubTotal,
                        Fecha           = DateTime.Now,
                        Estado          = Estado.Pendiente,
                        PuestoTrabajoId = _factura.PuntoVentaId,

                        Iva105      = 0,
                        Iva21       = 0,
                        Total       = _factura.Total,
                        UsuarioId   = _factura.UsuarioId,
                        VieneVentas = true,
                        Eliminado   = false
                    };

                    foreach (var item in _factura.Items)
                    {
                        nuevoComprobante.Items.Add(new DetalleComprobanteDto
                        {
                            Cantidad    = item.Cantidad,
                            Iva         = item.Iva,
                            Descripcion = item.Descripcion,
                            Precio      = item.Precio,
                            ArticuloId  = item.ArticuloId,
                            Codigo      = item.CodigoBarra,
                            SubTotal    = item.SubTotal,
                            Eliminado   = false,
                        });
                    }

                    _facturaServicio.Insertar(nuevoComprobante);

                    MessageBox.Show("Los datos se grabaron correctamente");
                    LimpiarParaNuevoFactura();
                }
                catch (DbEntityValidationException ex)
                {
                    var error = ex.EntityValidationErrors.SelectMany(v => v.ValidationErrors)
                                .Aggregate(string.Empty,
                                           (current, validationError) =>
                                           current +
                                           ($"Property: {validationError.PropertyName} Error: {validationError.ErrorMessage}. {Environment.NewLine}"
                                           ));


                    throw new Exception($"Ocurrio un error grave al grabar la Factura. Error: {error}");
                }
            }
            else
            {
                var fFormaDePago = new _00044_FormaPago(_factura);
                fFormaDePago.ShowDialog();

                if (fFormaDePago.RealizoVenta)
                {
                    LimpiarParaNuevoFactura();
                    txtCodigo.Focus();
                }
            }
        }
        private void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                if (nudTotal.Value > _factura.Total)
                {
                    if (MessageBox.Show("El total que esta por abonar es superior al monto a pagar.Desea continuar ? ", "Atención", MessageBoxButtons.OKCancel,
                                        MessageBoxIcon.Question) == DialogResult.Cancel)
                    {
                        return;
                    }
                }
                else if (nudTotal.Value < _factura.Total)
                {
                    MessageBox.Show("El total que esta por abonar es inferior al monto a pagar", "Atención", MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);
                    return;
                }

                var _facturaNueva = new FacturaDto();
                {
                    if (_vieneDeVentas)
                    {
                        _facturaNueva.EmpleadoId      = _factura.Vendedor.Id;
                        _facturaNueva.ClienteId       = _factura.Cliente.Id;
                        _facturaNueva.TipoComprobante = _factura.TipoComprobante;
                        _facturaNueva.Descuento       = _factura.Descuento;
                        _facturaNueva.SubTotal        = _factura.SubTotal;
                        _facturaNueva.Total           = _factura.Total;
                        _facturaNueva.Estado          = Estado.Pagada;
                        _facturaNueva.PuestoTrabajoId = _factura.PuntoVentaId;
                        _facturaNueva.Fecha           = DateTime.Now;
                        _facturaNueva.Iva105          = 0;
                        _facturaNueva.Iva21           = 0;
                        _facturaNueva.UsuarioId       = _factura.UsuarioId;

                        foreach (var item in _factura.Items)
                        {
                            _facturaNueva.Items.Add(new DetalleComprobanteDto
                            {
                                Cantidad    = item.Cantidad,
                                Iva         = item.Iva,
                                Descripcion = item.Descripcion,
                                Precio      = item.Precio,
                                ArticuloId  = item.ArticuloId,
                                Codigo      = item.CodigoBarra,
                                SubTotal    = item.SubTotal,
                                Eliminado   = false,
                            });
                        }
                    }
                    else
                    {
                        // TODO pendiente de Pago
                    }
                    if (nudTotalEfectivo.Value > 0)
                    {
                        _facturaNueva.FormasDePagos.Add(new FormaPagoDto
                        {
                            Monto     = nudTotalEfectivo.Value,
                            TipoPago  = TipoPago.Efectivo,
                            Eliminado = false
                        });
                    }
                    if (nudTotalCtaCte.Value > 0)
                    {
                        if (_vieneDeVentas)
                        {
                            // TODO: Falta ver deuda del Cliente
                            var deuda = 0;
                            if (_factura.Cliente.ActivarCtaCte)
                            {
                                if (_factura.Cliente.TieneLimiteCompra && _factura.Cliente.MontoMaximoCtaCte < deuda + nudTotalCtaCte.Value)
                                {
                                    var menssajeCtaCte = $"El cliente {_factura.Cliente.ApyNom} esta por arriba del limite Permitido." + Environment.NewLine +
                                                         $" El limite es {_factura.Cliente.MontoMaximoCtaCte.ToString("C")}";

                                    MessageBox.Show(menssajeCtaCte, "Atención", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                                    return;
                                }


                                _facturaNueva.FormasDePagos.Add(new FormaPagoCtaCteDto
                                {
                                    TipoPago  = TipoPago.CtaCte,
                                    ClienteId = _factura.Cliente.Id,
                                    Monto     = nudTotalCtaCte.Value,
                                    Eliminado = false,
                                });
                            }
                        }
                        else
                        {
                            // TODO: Facturas Pendientes de Pago
                        }
                    }
                    _facturaServicio.Insertar(_facturaNueva);
                    MessageBox.Show("Los datos se grabaron correctamente");

                    RealizoVenta = true;
                    Close();
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
                RealizoVenta = false;
            }
        }
Esempio n. 4
0
        private void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                if (nudTotal.Value > _factura.Total)
                {
                    if (MessageBox.Show("El total que esta por abonar es superior al monto a pagar. ¿Desea continuar?",
                                        "Atencion",
                                        MessageBoxButtons.OKCancel,
                                        MessageBoxIcon.Question)
                        == DialogResult.Cancel)
                    {
                        return;
                    }
                }
                else if (nudTotal.Value < _factura.Total)
                {
                    MessageBox.Show("El total que esta por abonar es inferior al monto a pagar.",
                                    "Atencion",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);

                    return;
                }

                var facturaNueva = new FacturaDto();

                if (_vieneDeVentas)
                {
                    facturaNueva.EmpleadoId      = _factura.Vendedor.Id;
                    facturaNueva.ClienteId       = _factura.Cliente.Id;
                    facturaNueva.TipoComprobante = _factura.TipoComprobante;

                    facturaNueva.Descuento = _factura.Descuento;
                    facturaNueva.SubTotal  = _factura.SubTotal;
                    facturaNueva.Total     = _factura.Total;

                    facturaNueva.Estado          = Estado.Pagada;
                    facturaNueva.PuestoTrabajoId = _factura.PuntoVentaId;
                    facturaNueva.Fecha           = DateTime.Now;
                    facturaNueva.Iva105          = 0;
                    facturaNueva.Iva21           = 0;
                    facturaNueva.UsuarioId       = _factura.UsuarioId;

                    foreach (var item in _factura.Items)
                    {
                        facturaNueva.Items.Add(new DetalleComprobanteDto()
                        {
                            Cantidad    = item.Cantidad,
                            Iva         = item.Iva,
                            Descripcion = item.Descripcion,
                            Precio      = item.Precio,
                            ArticuloId  = item.ArticuloId,
                            Codigo      = item.CodigoBarra,
                            SubTotal    = item.SubTotal,

                            Eliminado = false
                        });
                    }
                }
                else
                {
                    //Pendiente de pago
                }

                //FORMAS DE PAGO

                //EFECTIVO
                if (nudTotalEfectivo.Value > 0)
                {
                    facturaNueva.FormasDePagos.Add(new FormaPagoDto()
                    {
                        Monto     = nudTotalEfectivo.Value,
                        TipoPago  = TipoPago.Efectivo,
                        Eliminado = false
                    });
                }

                //TARJETA
                if (nudTotalTarjeta.Value > 0)
                {
                    facturaNueva.FormasDePagos.Add(new FormaPagoTarjetaDto()
                    {
                        NumeroTarjeta  = txtNumeroTarjeta.Text,
                        TipoPago       = TipoPago.Tarjeta,
                        CantidadCuotas = (int)nudCantidadCuotas.Value,
                        CuponPago      = txtCuponPago.Text,
                        Monto          = nudTotalTarjeta.Value,
                        TarjetaId      = (long)cmbTarjeta.SelectedValue,
                        Eliminado      = false
                    });
                }

                //CHEQUE
                if (nudTotalCheque.Value > 0)
                {
                    facturaNueva.FormasDePagos.Add(new FormaPagoChequeDto()
                    {
                        BancoId          = (long)cmbBanco.SelectedValue,
                        Monto            = nudTotalCheque.Value,
                        ClienteId        = _factura.Cliente.Id,
                        FechaVencimiento = dtpFechaVencimientoCheque.Value,
                        Numero           = txtNumeroCheque.Text,
                        TipoPago         = TipoPago.Cheque,
                        Eliminado        = false
                    });
                }

                //CTA CTE
                if (nudTotalCtaCte.Value > 0)
                {
                    if (_vieneDeVentas)
                    {
                        var deuda = 0;  //Corregir

                        if (_factura.Cliente.ActivarCtaCte)

                        {
                            if (_factura.Cliente.TieneLimiteCompra && _factura.Cliente.MontoMaximoCtaCte < deuda + nudTotalCtaCte.Value)
                            {
                                var mensajeCtaCte =
                                    $"El cliente {_factura.Cliente.ApyNom} esta exediendo el limite permitido."
                                    + Environment.NewLine
                                    + $"El limite es {_factura.Cliente.MontoMaximoCtaCte.ToString("C")}";

                                MessageBox.Show(mensajeCtaCte);
                            }

                            facturaNueva.FormasDePagos.Add(new FormaPagoCtaCteDto()
                            {
                                TipoPago  = TipoPago.CtaCte,
                                ClienteId = _factura.Cliente.Id,
                                Monto     = nudTotalCtaCte.Value,
                                Eliminado = false
                            });
                        }
                    }
                    else // Si viene de Pendiente
                    {
                    }
                }

                _facturaServicio.Insertar(facturaNueva);

                MessageBox.Show("Los datos se grabaron correctamente.");

                RealizoVenta = true;
                this.Close();
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
                RealizoVenta = false;
            }
        }