private bool AsignarArticuloAlternativo(string codigo) { _articuloConPrecioAlternativo = true; var codigoArticulo = codigo.Substring(0, codigo.IndexOf('*')); if (!string.IsNullOrEmpty(codigoArticulo)) { _articuloSeleccionado = _articuloServicio.ObtenerPorCodigo(codigoArticulo, (long)cmbListaPrecio.SelectedValue, _configuracion.DepositoVentaId); if (_articuloSeleccionado != null) { var precioAlternativo = codigo.Substring(codigo.IndexOf('*') + 1); if (!string.IsNullOrEmpty(precioAlternativo)) { if (decimal.TryParse(precioAlternativo, out decimal _precio)) { _articuloSeleccionado.Precio = _precio; return(true); } else { return(false); } } } } return(false); }
public _00050_Venta( IClienteServicio clienteServicio, IPuestoTrabajoServicio puestoTrabajoServicio, IListaPrecioServicio listaPrecioServicio, IConfiguracionServicio configuracionServicio, IEmpleadoServicio empleadoServicio, IContadorServicio contadorServicio, IArticuloServicio articuloServicio, IFacturaServicio facturaServicio) { InitializeComponent(); this.DoubleBuffered = true; // -------------------------------------------- Servicios _clienteServicio = clienteServicio; _puestoTrabajoServicio = puestoTrabajoServicio; _listaPrecioServicio = listaPrecioServicio; _configuracionServicio = configuracionServicio; _empleadoServicio = empleadoServicio; _contadorServicio = contadorServicio; _articuloServicio = articuloServicio; _facturaServicio = facturaServicio; //---------------------------------------------- dgvGrilla.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None; dgvGrilla.AllowUserToResizeRows = false; txtCodigo.KeyPress += delegate(object sender, KeyPressEventArgs args) { NoInyeccion(sender, args); NoLetras(sender, args); }; // ----------------------------- Asignacion de Variables Privadas _clienteSeleccionado = null; _vendedorSeleccionado = null; _articuloSeleccionado = null; _itemSeleccionado = null; _permiteAgregarPorCantidad = false; _articuloConPrecioAlternativo = false; _autorizaPermisoListaPrecio = false; _ingresoPorCodigoBascula = false; _cambiarCantidadConErrorPorValidacion = false; _factura = new FacturaView(); _configuracion = _configuracionServicio.Obtener(); if (_configuracion == null) { MessageBox.Show("Antes de comenzar por favor cargue la configuracion del Sistema"); Close(); } // ----------------------------- Eventos }
private bool VerificarStock(ArticuloVentaDto articulo, decimal cantidad) { var totalArticulosItems = _factura.Items .Where(x => x.ArticuloId == articulo.Id) .Sum(x => x.Cantidad); return(totalArticulosItems + cantidad <= articulo.Stock); }
private void dgvGrilla_DoubleClick(object sender, EventArgs e) { if (dgvGrilla.RowCount <= 0) { return; } var respaldoItem = _itemSeleccionado; var cantidadRespaldo = _itemSeleccionado.Cantidad; var articuloSelecionado = _articuloServicio.Obtener(respaldoItem.ArticuloId); if (respaldoItem.IngresoPorBascula || respaldoItem.EsArticuloAlternativo) { MessageBox.Show("No se permite cambiar la cantidad"); return; } var cambiarCantidadItem = new CambiarCantidad(_itemSeleccionado, (ArticuloDto)articuloSelecionado); cambiarCantidadItem.ShowDialog(); if (cambiarCantidadItem.Item != null) { var item = _factura.Items.FirstOrDefault(x => x.Id == cambiarCantidadItem.Item.Id); _factura.Items.Remove(item); if (cambiarCantidadItem.Item.Cantidad > 0) { _articuloSeleccionado = _articuloServicio .ObtenerPorCodigo(_itemSeleccionado.CodigoBarra, _itemSeleccionado.ListaPrecioId, _configuracion.DepositoVentaId); nudCantidad.Value = cambiarCantidadItem.Item.Cantidad; //item.Cantidad btnAgregar.PerformClick(); if (_cambiarCantidadConErrorPorValidacion) { respaldoItem.Cantidad = cantidadRespaldo; _factura.Items.Add(_itemSeleccionado); _cambiarCantidadConErrorPorValidacion = false; } } } LimpiarParaNuevoItem(); CargarCuerpo(); CargarPie(); }
private void LimpiarParaNuevoItem() { txtCodigo.Clear(); txtDescripcion.Clear(); txtPrecioUnitario.Clear(); nudCantidad.Value = 1; nudCantidad.Enabled = false; _permiteAgregarPorCantidad = false; _articuloConPrecioAlternativo = false; _ingresoPorCodigoBascula = false; _articuloSeleccionado = null; txtCodigo.Focus(); }
public _00050_Venta(IClienteServicio clienteServicio, IPuestoTrabajoServicio puestoTrabajoServicio, IListaPrecioServicio listaPrecioServicio, IConfiguracionServicio configuracionServicio, IEmpleadoServicio empleadoServicio, IContadorServicio contadorServicio, IArticuloServicio articuloServicio) { InitializeComponent(); this.DoubleBuffered = true; // ================================ Servicios ================================= // _clienteServicio = clienteServicio; _puestoTrabajoServicio = puestoTrabajoServicio; _listaPrecioServicio = listaPrecioServicio; _configuracionServicio = configuracionServicio; _empleadoServicio = empleadoServicio; _contadorServicio = contadorServicio; _articuloServicio = articuloServicio; // =============================================================================== // dgvGrilla.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None; dgvGrilla.AllowUserToResizeRows = false; // ================= Asignacion de Variables Privadas ========================= // _clienteSeleccionado = null; _vendedorSeleccionado = null; _articuloSeleccionado = null; _itemseleccionado = null; _permiteAgregarPorCantidad = false; _articuloConPrecioAlternativo = false; _autorizaPermisoListaPrecio = false; _ingresoPorCodigoBascula = false; _factura = new FacturaView(); _configuracion = _configuracionServicio.Obtener(); if (_configuracion == null) { MessageBox.Show("Antes de comenzar por favor cargue la configuracion del Sistema"); Close(); } }
private ItemView AsignarDatosItem(ArticuloVentaDto articulo, long listaPrecioId, decimal cantidad) { _factura.ContadorItem++; return(new ItemView { Id = _factura.ContadorItem, Descripcion = articulo.Descripcion, Iva = articulo.Iva, Precio = articulo.Precio, CodigoBarra = articulo.CodigoBarra, Cantidad = cantidad, ListaPrecioId = listaPrecioId, ArticuloId = articulo.Id, EsArticuloAlternativo = _articuloConPrecioAlternativo, IngresoPorBascula = _ingresoPorCodigoBascula }); }
private bool AsignarArticuloPorBascula(string codigoBascula) { decimal _precioBascula = 0; decimal _pesoBascula = 0; _ingresoPorCodigoBascula = true; int.TryParse(codigoBascula.Substring(4, 3), out int codigoArticulo); var precioPesoArticulo = codigoBascula.Substring(7, 5); if (_configuracion.EsImpresionPorPrecio) { if (!decimal.TryParse(precioPesoArticulo.Insert(3, ","), NumberStyles.Number, new CultureInfo("es-Ar"), out _precioBascula)) { return(false); } } else { if (!decimal.TryParse(precioPesoArticulo.Insert(2, ","), NumberStyles.Number, new CultureInfo("es-Ar"), out _pesoBascula)) { return(false); } } _articuloSeleccionado = _articuloServicio.ObtenerPorCodigo(codigoArticulo.ToString(), (long)cmbListaPrecio.SelectedValue, _configuracion.DepositoVentaId); if (_articuloSeleccionado != null) { if (_configuracion.EsImpresionPorPrecio) { _articuloSeleccionado.Precio = _precioBascula; } else { nudCantidad.Value = _pesoBascula; } } return(false); }
private void txtCodigo_KeyUp(object sender, KeyEventArgs e) { switch (e.KeyValue) { // F5 case 116: _permiteAgregarPorCantidad = !_permiteAgregarPorCantidad; nudCantidad.Enabled = _permiteAgregarPorCantidad; break; // F8 case 119: var lookUpArticulo = new ArticuloLookUp((long)cmbListaPrecio.SelectedValue); lookUpArticulo.ShowDialog(); if (lookUpArticulo.EntidadSeleccionada != null) { _articuloSeleccionado = (ArticuloVentaDto)lookUpArticulo.EntidadSeleccionada; if (_permiteAgregarPorCantidad) { txtCodigo.Text = _articuloSeleccionado.CodigoBarra; txtDescripcion.Text = _articuloSeleccionado.Descripcion; txtPrecioUnitario.Text = _articuloSeleccionado.PrecioStr; nudCantidad.Focus(); nudCantidad.Select(0, nudCantidad.Text.Length); return; } else { btn_Agregar.PerformClick(); LimpiarParaNuevoItem(); } } else { LimpiarParaNuevoItem(); } break; } }
private void AgregarItem(ArticuloVentaDto articulo, long listaPrecioId, decimal cantidad) { // Limite de Venta por cantidad if (articulo.TieneRestriccionPorCantidad) { var totalArticulosItems = _factura.Items .Where(x => x.ArticuloId == articulo.Id) .Sum(x => x.Cantidad); if (cantidad + totalArticulosItems > articulo.Limite) { var mensajeLimiteVenta = $"El articulo {articulo.Descripcion.ToUpper()} tiene una restricción" + Environment.NewLine + $"de Venta por una Cantidad Maxima de {articulo.Limite}."; MessageBox.Show(mensajeLimiteVenta, "Atención", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } } if (articulo.TieneRestriccionHorario) { if (VerificarLimiteHorarioVenta(articulo.HoraDesde, articulo.HoraHasta)) { var mensajeLimiteHorario = $"El articulo {articulo.Descripcion.ToUpper()} tiene una restricción" + Environment.NewLine + $"de Venta por horario entre {articulo.HoraDesde.ToShortTimeString()} hasta {articulo.HoraHasta.ToShortTimeString()}."; MessageBox.Show(mensajeLimiteHorario, "Atención", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } } if (!articulo.PermiteStockNegativo) { if (!VerificarStock(articulo, nudCantidad.Value)) { var mensajeStock = $"No hay Stock suficiente para el articulo {articulo.Descripcion.ToUpper()}" + Environment.NewLine + $"Stock Actual disponible: {articulo.Stock}."; MessageBox.Show(mensajeStock, "Atención", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } } if (_articuloConPrecioAlternativo || _ingresoPorCodigoBascula) { _factura.Items.Add(AsignarDatosItem(articulo, listaPrecioId, cantidad)); } else { if (_configuracion.UnificarRenglonesIngresarMismoProducto) { var item = _factura.Items.FirstOrDefault(x => x.ArticuloId == articulo.Id && x.ListaPrecioId == listaPrecioId); if (item == null) // Primera vez por ingresar { _factura.Items.Add(AsignarDatosItem(articulo, listaPrecioId, cantidad)); } else { item.Cantidad += cantidad; } } else { _factura.Items.Add(AsignarDatosItem(articulo, listaPrecioId, cantidad)); } } }
private void txtCodigo_KeyPress(object sender, KeyPressEventArgs e) { if (!string.IsNullOrEmpty(txtCodigo.Text)) { if (e.KeyChar == (char)Keys.Enter) { if (txtCodigo.Text.Contains("*")) { if (AsignarArticuloAlternativo(txtCodigo.Text)) { btn_Agregar.PerformClick(); return; } } if (txtCodigo.Text.Length == 13) { if (_configuracion.ActivarBascula && _configuracion.CodigoBascula == txtCodigo.Text.Substring(0, 4)) { if (AsignarArticuloPorBascula(txtCodigo.Text)) { btn_Agregar.PerformClick(); return; } } else { _articuloSeleccionado = _articuloServicio.ObtenerPorCodigo(txtCodigo.Text, (long)cmbListaPrecio.SelectedValue, _configuracion.DepositoVentaId); } } else { _articuloSeleccionado = _articuloServicio.ObtenerPorCodigo(txtCodigo.Text, (long)cmbListaPrecio.SelectedValue, _configuracion.DepositoVentaId); } if (_articuloSeleccionado != null) { if (_permiteAgregarPorCantidad) { txtCodigo.Text = _articuloSeleccionado.CodigoBarra; txtDescripcion.Text = _articuloSeleccionado.Descripcion; txtPrecioUnitario.Text = _articuloSeleccionado.PrecioStr; nudCantidad.Focus(); nudCantidad.Select(0, nudCantidad.Text.Length); return; } else { btn_Agregar.PerformClick(); } } else { LimpiarParaNuevoItem(); } } } e.Handled = false; }
private void btnAgregar_Click(object sender, System.EventArgs e) { if (_articuloSeleccionado != null) { var listaPrecioSeleccionada = (ListaPrecioDto)cmbListaPrecio.SelectedItem; if (listaPrecioSeleccionada.NecesitaAutorizacion) { if (!_autorizaPermisoListaPrecio) { var fAutorizacion = ObjectFactory.GetInstance <AutorizacionListaPrecio>(); fAutorizacion.ShowDialog(); if (!fAutorizacion.PermisoAutorizado) { return; } _autorizaPermisoListaPrecio = fAutorizacion.PermisoAutorizado; AgregarItem(_articuloSeleccionado, (long)cmbListaPrecio.SelectedValue, nudCantidad.Value); } else { AgregarItem(_articuloSeleccionado, (long)cmbListaPrecio.SelectedValue, nudCantidad.Value); } } else { AgregarItem(_articuloSeleccionado, (long)cmbListaPrecio.SelectedValue, nudCantidad.Value); } } else //TODO PRE PARCIAL { if (txtCodigo.Text.Contains("*")) { if (AsignarArticuloAlternativo(txtCodigo.Text)) { btnAgregar.PerformClick(); return; } } if (txtCodigo.Text.Length == 13) { if (_configuracion.ActivarBascula && _configuracion.CodigoBascula == txtCodigo.Text.Substring(0, 4)) { if (AsignarArticuloPorBascula(txtCodigo.Text)) { btnAgregar.PerformClick(); return; } } else { _articuloSeleccionado = _articuloServicio.ObtenerPorCodigo(txtCodigo.Text, (long)cmbListaPrecio.SelectedValue, _configuracion.DepositoVentaId); } } else { _articuloSeleccionado = _articuloServicio.ObtenerPorCodigo(txtCodigo.Text, (long)cmbListaPrecio.SelectedValue, _configuracion.DepositoVentaId); } if (_articuloSeleccionado != null) { if (_permiteAgregarPorCantidad) { txtCodigo.Text = _articuloSeleccionado.CodigoBarra; txtDescripcion.Text = _articuloSeleccionado.Descripcion; txtPrecioUnitario.Text = _articuloSeleccionado.PrecioStr; nudCantidad.Focus(); nudCantidad.Select(0, nudCantidad.Text.Length); return; } else { if (_articuloSeleccionado != null) { var listaPrecioSeleccionada = (ListaPrecioDto)cmbListaPrecio.SelectedItem; if (listaPrecioSeleccionada.NecesitaAutorizacion) { if (!_autorizaPermisoListaPrecio) { var fAutorizacion = ObjectFactory.GetInstance <AutorizacionListaPrecio>(); fAutorizacion.ShowDialog(); if (!fAutorizacion.PermisoAutorizado) { return; } _autorizaPermisoListaPrecio = fAutorizacion.PermisoAutorizado; AgregarItem(_articuloSeleccionado, (long)cmbListaPrecio.SelectedValue, nudCantidad.Value); } else { AgregarItem(_articuloSeleccionado, (long)cmbListaPrecio.SelectedValue, nudCantidad.Value); } } else { AgregarItem(_articuloSeleccionado, (long)cmbListaPrecio.SelectedValue, nudCantidad.Value); } } } } else { LimpiarParaNuevoItem(); } } LimpiarParaNuevoItem(); CargarCuerpo(); CargarPie(); }