コード例 #1
0
        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);
        }
コード例 #2
0
        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
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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();
        }
コード例 #5
0
 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();
 }
コード例 #6
0
        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();
            }
        }
コード例 #7
0
 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
     });
 }
コード例 #8
0
        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);
        }
コード例 #9
0
        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;
            }
        }
コード例 #10
0
        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));
                }
            }
        }
コード例 #11
0
        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;
        }
コード例 #12
0
        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();
        }