private void LimpiarFormulario()
        {
            _listaDetalles.Clear();

            CurrencyManager cm = (CurrencyManager)this.dgvGrilla.BindingContext[_listaDetalles];

            if (cm != null)
            {
                cm.Refresh();
            }

            _comprobanteKioskoDto = new ComprobanteKioskoDto();

            txtCodigo.Enabled = true;
            txtCodigo.Clear();
            txtDescripcion.Enabled = false;
            txtDescripcion.Clear();
            nudPrecioUnitario.Value = 0m;
            nudUnidades.Value       = 1;
            txtCodigo.Focus();
            txtClienteDni.Clear();
            txtClienteNombre.Clear();
            txtClienteApellido.Clear();
            nudSubTotal.Value  = 0.00m;
            nudDescuento.Value = 0m;
            nudTotal.Value     = 0.00m;
            btnCobrar.Enabled  = false;
            var clienteId = _clienteServicio.ObtenerPorDni("99999999").Id;

            txtClienteDni.Text      = _clienteServicio.ObtenerPorId(clienteId).Dni;
            txtClienteNombre.Text   = _clienteServicio.ObtenerPorId(clienteId).Nombre;
            txtClienteApellido.Text = _clienteServicio.ObtenerPorId(clienteId).Apellido;
        }
        public void AgregarItem(DetalleComprobanteKioscoDto dto, ComprobanteKioskoDto comprobanteDto)
        {
            if (comprobanteDto.Items != null)
            {
                var item = comprobanteDto.Items
                           .FirstOrDefault(x => x.CodigoProducto == dto.CodigoProducto);

                if (item == null)
                {
                    comprobanteDto.Items.Add(dto);
                }
                else
                {
                    item.Cantidad += dto.Cantidad;
                }
            }
            else
            {
                comprobanteDto.Items.Add(dto);
            }
        }
        public void GenerarComprobante(ComprobanteKioskoDto dto, long cajaId)
        {
            using (var context = new ModeloXCommerceContainer())
            {
                var nuevoComprobante = new ComprobanteFactura
                {
                    Numero          = Convert.ToInt32(UltimoComprobanteId()),
                    Fecha           = DateTime.Now,
                    SubTotal        = dto.SubTotal,
                    Descuento       = dto.Descuento,
                    Total           = dto.Total,
                    UsuarioId       = dto.UsuarioId,
                    ClienteId       = dto.ClienteId,
                    TipoComprobante = dto.TipoComprobante
                };

                context.Comprobantes.Add(nuevoComprobante);

                context.SaveChanges();

                var comprobante = context.Comprobantes.FirstOrDefault(x => x.Numero == dto.Numero);

                foreach (var items in dto.Items)
                {
                    comprobante.DetalleComprobantes.Add(new AccesoDatos.DetalleComprobante
                    {
                        ComprobanteId  = comprobante.Id,
                        Codigo         = items.CodigoProducto,
                        Descripcion    = items.DescripcionProducto,
                        PrecioUnitario = items.PrecioUnitario,
                        Cantidad       = items.Cantidad,
                        SubTotal       = items.SubTotalLinea,
                        ArticuloId     = items.ArticuloId
                    });
                }

                context.SaveChanges();
            }
        }
        public _00049_Kiosko()
        {
            InitializeComponent();

            _articuloServicio          = new ArticuloServicio();
            _usuarioServicio           = new UsuarioServicio();
            _clienteServicio           = new ClienteServicio();
            _empleadoServicio          = new EmpleadoServicio();
            _formaPagoServicio         = new FormaPagoServicio();
            _comprobanteKioskoServicio = new ComprobanteKioskoServicio();
            _cajaServicio         = new CajaServicio();
            _movimientoServicio   = new MovimientoServicio();
            _productoServicio     = new ProductoServicio();
            _comprobanteKioskoDto = new ComprobanteKioskoDto();
            _listaDetalles        = new List <DetalleComprobanteKioscoDto>();
            _listaPrecioServicio  = new ListaPrecioServicio();

            Inicializador();

            dgvGrilla.DataSource = _listaDetalles;

            FormatearGrilla(dgvGrilla);
        }
        private void BtnCobrar_Click(object sender, EventArgs e)
        {
            if (dgvGrilla.DataSource == null)
            {
                MessageBox.Show(@"No hay Productos Cargados.",
                                @"Atención",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                return;
            }

            if ((TipoFormaPago)cmbFormaPago.SelectedItem == TipoFormaPago.Efectivo)
            {
                var ultimoComprobante = _comprobanteKioskoServicio.UltimoComprobanteId();

                var caja = _cajaServicio.Obtener(CajaAbiertaId).Id;

                var ClienteId = _clienteServicio.ObtenerPorDni(txtClienteDni.Text).Id;

                var fecha = dtpFecha.Value;

                var comprobante = new ComprobanteKioskoDto
                {
                    Numero          = (int)ultimoComprobante,
                    Fecha           = fecha,
                    SubTotal        = nudSubTotal.Value,
                    Descuento       = nudDescuento.Value,
                    Total           = nudTotal.Value,
                    UsuarioId       = (long)UsuarioLogueadoId,
                    ClienteId       = ClienteId,
                    TipoComprobante = (TipoComprobante)cmbTipoComprobante.SelectedItem,
                    Items           = _listaDetalles
                };

                _comprobanteKioskoServicio.GenerarComprobante(comprobante, caja);


                var traerComprobante = _comprobanteKioskoServicio.traerComprobantePorNumero(comprobante.Numero);


                var nuevoMovimiento = new MovimientoDto
                {
                    CajaId         = caja,
                    ComprobanteId  = traerComprobante.Id,
                    TipoMovimiento = TipoMovimiento.Ingreso,
                    UsuarioId      = UsuarioLogueadoId,
                    Monto          = nudTotal.Value,
                    Fecha          = dtpFecha.Value,
                    Descripcion    = "FAC_" + cmbTipoComprobante.Text + "_" +
                                     $"{_comprobanteKioskoServicio.UltimoComprobanteId()}" + "_" +
                                     DateTime.Now.ToShortDateString().Replace("/", string.Empty) + "_KIOSCO"
                };

                _movimientoServicio.Insertar(nuevoMovimiento);

                _cajaServicio.RealizarMovimiento(nuevoMovimiento);

                foreach (var items in _comprobanteKioskoDto.Items)
                {
                    //descontar stock
                    _articuloServicio.DescontarStock(items.ProductoId, items.Cantidad);
                }

                MessageBox.Show("Facturacion Realizada Correctamente",
                                "Informacion",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);

                LimpiarFormulario();
            }
        }