コード例 #1
0
        private void ActualizarCliente(Cliente cliente)
        {
            if (!cliente.Activo ?? true)
            {
                _messageBoxDisplayService.Show(this, string.Format(Resources.MensajeClienteInactivo, cliente.Denominacion, cliente.Cuit), Resources.LabelVentas);
                return;
            }

            _cliente = cliente;

            var deudaTotal   = _clienteNegocio.DeudaTotal(_cliente.Id, this.Context.SucursalActual.Id);
            var deudaVencida = _clienteNegocio.DeudaVencida(_cliente.Id, this.Context.SucursalActual.Id);

            UcClienteDetalle.ActualizarCliente(_cliente, deudaTotal, deudaVencida);
            UcCuentaCorrienteInfo.ActualizarInfoCuentaCorriente(_cliente);

            UcTotalesVenta.SenasDisp = _ventaNegocio.SenaAFavorCliente(_cliente.Id, Context.SucursalActual.Id);
            UcTotalesVenta.CreditosDevolucionDisp = _ventaNegocio.CreditosPorDevolucion(_cliente.Id, Context.SucursalActual.Id);

            UcTotalesVenta.ActualizarMontosAFavor(UcTotalesVenta.SenasDisp, UcTotalesVenta.CreditosDevolucionDisp);
            UcTotalesVenta.Senas = 0;
            UcTotalesVenta.CreditosDevolucion = 0;

            UcBuscadorCliente.ActualizarFormaPago(_cliente);
        }
コード例 #2
0
        private void ActualizarTotal()
        {
            var subTotal = UcTitulosVenta.CalcularSubTotal();

            UcTotalesVenta.SubTotal = subTotal;

            UcTotalesVenta.TotalPagar = UcTotalesVenta.SubTotal.GetValueOrDefault() - UcTotalesVenta.Senas.GetValueOrDefault() -
                                        UcTotalesVenta.CreditosDevolucion.GetValueOrDefault();
            // UcTotalesVenta.TotalPagar -= UcTotalesVenta.TotalPagar * UcTotalesVenta.Descuento.GetValueOrDefault() / 100;

            UcTotalesVenta.FaltaPagar = UcTotalesVenta.TotalPagar - UcTotalesVenta.TotalPagos();

            if (UcTotalesVenta.TotalPagar > 0)
            {
                if (UcBuscadorCliente.CondicionVentaSeleccionada == CondicionVentaEnum.CuentaCorriente)
                {
                    UcTotalesVenta.GenerarPagoAutoNuevo(UcTotalesVenta.TotalPagar - UcCuentaCorrienteInfo.Anticipo, FormaPago.CuentaCorriente);
                }
                else
                {
                    UcTotalesVenta.GenerarPagoAutoNuevo(UcTotalesVenta.TotalPagar, FormaPago.Efectivo);
                }
            }
            else
            {
                UcTotalesVenta.Pagos.Clear();
            }
        }
コード例 #3
0
 private void UcTotalesVentaOnFaltaPagarChanged(object sender, decimal?e)
 {
     if (UcTotalesVenta.FaltaPagar != 0)
     {
         UcTotalesVenta.EliminarPagoEfectivo();
         if (UcTotalesVenta.FaltaPagar > 0)
         {
             UcTotalesVenta.GenerarPagoAnticipoNuevo(UcTotalesVenta.FaltaPagar, FormaPago.Efectivo);
         }
     }
 }
コード例 #4
0
 private void UcTitulosVentaOnVentaTitulosChanged(object sender, IList <VentaTitulo> ventaTitulos)
 {
     if (UcTitulosVenta.Titulos.Count == 0)
     {
         UcTotalesVenta.LimpiarPagos();
         UcTotalesVenta.SubTotal = 0;
         ActualizarTotal();
     }
     else
     {
         ActualizarTotal();
     }
 }
コード例 #5
0
        private void FrmCrearVenta_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Insert)
            {
                UcTitulosVenta.BtnAgregarTitulo_Click(null, null);
            }

            if (e.KeyCode == Keys.F9)
            {
                UcTotalesVenta.BtnAgregarPago_Click(null, null);
            }

            if (e.KeyCode == Keys.F3)
            {
                UcBuscadorCliente.Foco();
            }
        }
コード例 #6
0
        private void UcBuscadorClienteOnFormaPagoChanged(object sender, FormaPago e)
        {
            if (_cliente == null)
            {
                return;
            }

            UcTotalesVenta.Pagos.Clear();

            UcTotalesVenta.RefrescarPagos();

            if (UcBuscadorCliente.CondicionVentaSeleccionada == CondicionVentaEnum.CuentaCorriente)
            {
                RPCtaccte.Visible = true;
                UcCuentaCorrienteInfo.Anticipo = 0;
            }
            else
            {
                RPCtaccte.Visible = false;
            }

            ActualizarTotal();
        }
コード例 #7
0
        private void BtnFacturar_Click(object sender, EventArgs e)
        {
            if (_cliente == null)
            {
                _messageBoxDisplayService.ShowError(Resources.ErrorMessageSeleccionarCliente);
                return;
            }

            if (!UcTitulosVenta.Titulos.Any())
            {
                _messageBoxDisplayService.ShowError(Resources.ErrorMessageVentaSinLibros);
                return;
            }

            if (!UcTotalesVenta.Validar())
            {
                return;
            }

            if (UcBuscadorCliente.CondicionVentaSeleccionada == CondicionVentaEnum.CuentaCorriente &&
                UcTotalesVenta.SubTotal.Value <= UcTotalesVenta.Descuento.GetValueOrDefault())
            {
                _messageBoxDisplayService.ShowError("El descuento no puede superar al importe total de la venta");
                return;
            }

            if (UcBuscadorCliente.CondicionVentaSeleccionada == CondicionVentaEnum.CuentaCorriente &&
                UcCuentaCorrienteInfo.Cuotas == null)
            {
                _messageBoxDisplayService.ShowError("Debe indicar la cantidad de cuotas del plan");
                return;
            }

            if (UcTitulosVenta.Titulos.Count > Context.SucursalActual.MaximoNroLineasPorVenta)
            {
                _messageBoxDisplayService.ShowError("Se ha superado el límite máximo de líneas por venta.");
                return;
            }

            //Ahora calculo el porcentaje de descuento para ver si no supera el maximo permitido
            //var porcentaje = (UcTotalesVenta.Descuento.GetValueOrDefault() * 100) / UcTotalesVenta.SubTotal.Value;
            var porcentaje             = UcTotalesVenta.Descuento.GetValueOrDefault();
            var porcentajeNoAutorizado = porcentaje > Context.SucursalActual.MaximoPorcentajeDescuento;

            var importeNoAutorizado = UcTotalesVenta.SubTotal.Value >= Context.SucursalActual.MaximoImporteVenta;

            if (UcBuscadorCliente.CondicionVentaSeleccionada == CondicionVentaEnum.Contado)
            {
                importeNoAutorizado = false;
            }


            if (porcentajeNoAutorizado || importeNoAutorizado)
            {
                var operador = this.ObtenerOperadorAdministrador();
                if (operador == null)
                {
                    return;
                }
            }

            //Vuelto
            if (ChkVuelto.IsChecked && UcTotalesVenta.HayPagoEnEfectivo)
            {
                using (var frmVuelto = new FrmVuelto())
                {
                    frmVuelto.APagar = UcTotalesVenta.TotalEnEfectivo;
                    frmVuelto.Paga   = UcTotalesVenta.TotalEnEfectivo;
                    frmVuelto.ShowDialog();
                }
            }

            RealizarVenta();
        }
コード例 #8
0
 private void UcCuentaCorrienteInfoOnAnticipoChanged(object sender, decimal?e)
 {
     UcTotalesVenta.GenerarPagoAutoNuevo(UcCuentaCorrienteInfo.Adeuda, FormaPago.CuentaCorriente);
 }