コード例 #1
0
        public void AdicionaItem(Itens_movimento item)
        {
            if (!ValidItem(item))
            {
                return;
            }

            int id = (Movimento.Itens_movimento.OrderByDescending(e => e.Id).FirstOrDefault() == null
                ? 1
                : Movimento.Itens_movimento.OrderByDescending(e => e.Id).FirstOrDefault().Id + 1);

            item.Id = id;

            Itens_movimento itemExistente = Movimento.Itens_movimento.FirstOrDefault(e =>
                                                                                     e.Produto_id == item.Produto_id &&
                                                                                     (e.Lote == item.Lote && e.Sublote == item.Sublote) &&
                                                                                     e.Grade_id == item.Grade_id);

            if (itemExistente != null)
            {
                decimal valor_item = (itemExistente.Valor_final / itemExistente.Quant);
                itemExistente.Quant       += item.Quant;
                itemExistente.Valor_final += (valor_item * item.Quant);
            }
            else
            {
                Movimento.Itens_movimento.Add(item);
            }
        }
コード例 #2
0
        public void AplicarDescontoPerc(int item_id, decimal percent)
        {
            Itens_movimento item = Movimento.Itens_movimento.Where(e => e.Id == item_id).FirstOrDefault();

            if (item == null)
            {
                return;
            }

            item.Valor_final = (item.Valor_final - (item.Valor_final / 100 * percent));
        }
コード例 #3
0
        public void AplicarDescontoReais(int item_id, decimal valor)
        {
            Itens_movimento item = Movimento.Itens_movimento.Where(e => e.Id == item_id).FirstOrDefault();

            if (item == null)
            {
                return;
            }

            item.Valor_final -= valor;
        }
コード例 #4
0
 public bool Save(Itens_movimento item)
 {
     try
     {
         db.Save(item);
         db.Commit();
         return(true);
     }
     catch (Exception ex)
     {
     }
     return(false);
 }
コード例 #5
0
        public void IncrementaItem(int item_id)
        {
            Itens_movimento item = Movimento.Itens_movimento.FirstOrDefault(e => e.Id == item_id);

            if (item == null)
            {
                return;
            }

            decimal valor_item = (item.Valor_final / item.Quant);

            item.Quant       += 1;
            item.Valor_final += valor_item;
        }
コード例 #6
0
        public void RemoveItem(int item_id)
        {
            Itens_movimento imv = Movimento.Itens_movimento.Where(e => e.Id == item_id).FirstOrDefault();

            if (imv == null)
            {
                return;
            }

            Movimento.Itens_movimento.Remove(imv);

            int id = 0;

            foreach (Itens_movimento item in Itens_movimento)
            {
                item.Id = (id += 1);
            }
        }
コード例 #7
0
        public void DecrementaItem(Estoque estoque)
        {
            Itens_movimento item = null;

            if (estoque.Produtos.Controla_lote)
            {
                item = Itens_movimento.FirstOrDefault(e => e.Lote.Equals(estoque.Lote) && e.Sublote.Equals(estoque.Sublote));
            }
            else
            {
                item = Itens_movimento.FirstOrDefault(e => e.Produto_id == estoque.Produto_id);
            }

            if (item != null)
            {
                DecrementaItem(item.Id);
            }
        }
コード例 #8
0
        private void dataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (dataGrid.Items.Count == 0)
            {
                return;
            }

            if (e.Key == Key.F3)
            {
                return;
            }

            Itens_movimento item = (Itens_movimento)dataGrid.SelectedItem;

            if (item == null)
            {
                return;
            }

            if (e.Key == Key.Insert)
            {
                Movimento_Controller.IncrementaItem(item.Id);
            }

            if ((e.Key == Key.Delete) && Keyboard.Modifiers == ModifierKeys.Control)
            {
                Movimento_Controller.RemoveItem(item.Id);
            }
            else if (e.Key == Key.Delete)
            {
                if (Movimento_Controller.Itens_movimento.First(i => i.Id == item.Id).Quant - 1 == 0)
                {
                    Movimento_Controller.RemoveItem(item.Id);
                }
                else
                {
                    Movimento_Controller.DecrementaItem(item.Id);
                }
            }

            dataGrid.ItemsSource = Movimento_Controller.Itens_movimento;
            dataGrid.Focus();
            RecalculaTotais();
        }
コード例 #9
0
        internal string GetLastLote(bool cod_loja)
        {
            string          lote = "";
            Itens_movimento est  = db.Where(e => e.Lote != "" && e.Movimentos.Loja_id == UsuariosController.LojaAtual.Id).OrderByDescending(e => e.Lote).FirstOrDefault();

            lote = (est == null
                ? "A00000"
                : est.Lote);

            if (!cod_loja)
            {
                if (lote.StartsWith(UsuariosController.LojaAtual.Id.ToString()))
                {
                    lote = lote.Substring(1);
                }
            }

            return(lote);
        }
コード例 #10
0
        public ItemVendaPdv(Itens_movimento item)
        {
            InitializeComponent();

            lbItem.Content       = item.Id.ToString();
            lbDescricao.Content  = item.Produtos.Descricao;
            lbCod_prod.Content   = item.Produto_id.ToString();
            lbValor_unit.Content = $"{item.Quant.ToString("N2")} {item.Produtos.Unidades.Sigla} x R${item.Valor_unit.ToString("N2")}";
            lbTotal_item.Content = $"R$ {item.Valor_final.ToString("N2")}";

            if (item.Grade_id != null)
            {
                Grades_produtos grade = new Grades_produtosController().Find(item.Grade_id);
                lbDescricao.Content += " " + grade.Cores.Descricao + " " + grade.Tamanhos.Descricao;
            }
            if (item.Desconto > 0)
            {
                lbValor_unit.Content += " - " + "R$ " + item.Desconto.ToString("N2");
            }
        }
コード例 #11
0
        public void DecrementaItem(int item_id)
        {
            Itens_movimento item = Movimento.Itens_movimento.FirstOrDefault(e => e.Id == item_id);

            if (item == null)
            {
                return;
            }

            if ((item.Quant - 1) == 0)
            {
                RemoveItem(item_id);
                return;
            }

            decimal valor_item = (item.Valor_final / item.Quant);

            item.Quant       -= 1;
            item.Valor_final -= valor_item;
        }
コード例 #12
0
        public Itens_pedido ConvertToItemPedido(Itens_movimento item_movimento)
        {
            Itens_pedido itemPedido = new Itens_pedido();

            itemPedido.Produto_id     = item_movimento.Produto_id;
            itemPedido.Lote           = item_movimento.Lote;
            itemPedido.Sublote        = item_movimento.Sublote;
            itemPedido.Quant          = item_movimento.Quant;
            itemPedido.Valor_unit     = item_movimento.Valor_unit;
            itemPedido.Aliquota       = item_movimento.Aliquota;
            itemPedido.Desconto       = item_movimento.Desconto;
            itemPedido.Acrescimo      = item_movimento.Acrescimo;
            itemPedido.Frete          = item_movimento.Frete;
            itemPedido.Outros_valores = item_movimento.Outros_valores;
            itemPedido.Valor_final    = item_movimento.Valor_final;
            itemPedido.Unidade_id     = item_movimento.Unidade_id;
            itemPedido.Grade_id       = item_movimento.Grade_id;
            itemPedido.Cfop           = item_movimento.Cfop;

            return(itemPedido);
        }
コード例 #13
0
        private bool ValidItem(Itens_movimento item)
        {
            if (item.Produto_id == 0)
            {
                BStatus.Alert("Informe o produto antes de adicionar um item");
                return(false);
            }

            if (item.Valor_unit == 0)
            {
                BStatus.Alert("O preço unitário do item deve ser superior a 0");
                return(false);
            }

            if (item.Cfop == 0)
            {
                BStatus.Alert("O item informado não possui CFOP. Verifique o Tipo de Movimento tente novamente");
                return(false);
            }

            return(true);
        }
コード例 #14
0
        private void AdicionaItem()
        {
            Itens_movimento item = new Itens_movimento();
            Estoque         est  = new ProdutosController().Get(txProduto.Text);
            Produtos        prod = est.Produtos;

            if (Tipo_movimento.Movimentacao_itens == (int)Tipo_movimentacao.SAIDA)
            {
                if (est.Quant <= 0)
                {
                    if (ParametrosController.FindParametro("EST_SAIZERO").Valor.Equals("N"))
                    {
                        MessageBox.Show($"Não é possível retirar o produto '{est.Produtos.Descricao}' do estoque porque o sistema está atualmente configurado para não permitir retiradas de estoque cujo o saldo atual é igual ou inferior a 0.", "EST_SAIZERO", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                        return;
                    }
                }
            }

            if (prod == null)
            {
                return;
            }

            item.Produto_id = prod.Id;
            item.Produtos   = prod;
            item.Lote       = est.Lote;
            item.Sublote    = est.Sublote;
            item.Aliquota   = prod.Aliquota;
            item.Valor_unit = (Tipo_movimento.Utiliza_fornecedor
                 ? prod.Produtos_fornecedores.First(pf => pf.Fornecedor_id == int.Parse(txCod_cliente_fornecedor.Text)).Preco_custo
                 : prod.Valor_unit);
            item.Desconto    = this.Desconto;
            item.Acrescimo   = this.Acrescimo;
            item.Quant       = decimal.Parse(txQuant.Text);
            item.Valor_final = decimal.Parse(txValor_final.Text);
            item.Cfop        = Tipo_movimento.Cfop;
            item.Vendedor_id = int.Parse(txCod_vendedor.Text);

            if (Tipo_movimento.Utiliza_fornecedor && Tipo_movimento.Movimentacao_itens == (int)Tipo_movimentacao.ENTRADA)
            {
                item.Unidades = prod.Produtos_fornecedores.First(pf => pf.Fornecedor_id == int.Parse(txCod_cliente_fornecedor.Text)).Unidades;
            }
            else
            {
                item.Unidades = prod.Unidades;
            }

            item.Unidade_id = item.Unidades.Id;

            Movimento_Controller.AdicionaItem(item);
            dataGrid.ItemsSource = Movimento_Controller.Itens_movimento;

            txProduto.Text              = "0";
            txValor_unit.Text           = "0,00";
            txQuant.Text                = "0,00";
            txTotal_prod.Text           = "0,00";
            txDesconto.Text             = "0,00";
            txAcrescimo.Text            = "0,00";
            txValor_final.Text          = "0,00";
            lbDescricao_produto.Content = string.Empty;
            lbFatorConversao.Visibility = Visibility.Hidden;
            txProduto.Focus();
            txProduto.Text        = string.Empty;
            Desconto              = 0;
            Acrescimo             = 0;
            txDesconto.IsEnabled  = true;
            txAcrescimo.IsEnabled = true;

            RecalculaTotais();
        }
コード例 #15
0
 public void VendeItem(Itens_movimento item)
 {
     MovimentosController.AdicionaItem(item);
     RefreshItens();
 }
コード例 #16
0
        public void VendeItem(Estoque estoqueParam = null)
        {
            Estoque estoque = estoqueParam;

            if (estoque == null)
            {
                estoque = new ProdutosController().Get(txProduto.Text);
            }
            if (estoque == null)
            {
                return;
            }
            if (string.IsNullOrEmpty(txQuant.Text))
            {
                txQuant.Text = "1";
            }

            if (estoqueParam == null)
            {
                if (estoque.Produtos.Controla_grade && estoque.Grade_id != txProduto.Text)
                {
                    SelecionarGrade sg = new SelecionarGrade(estoque.Produtos);
                    sg.ShowDialog();

                    if (sg.Selecionado.Id == 0)
                    {
                        return;
                    }

                    estoque = sg.Selecionado;
                }
            }

            if (!VendaAberta)
            {
                PainelVenda = new PainelItensVenda();
                VendaAberta = true;
                PainelVenda = new PainelItensVenda();
                PainelVenda.AbreVenda(Tipo_movimento_id_venda.Id);
                GridContainer.Children.Clear();
                GridContainer.Children.Add(PainelVenda.CurrentUserControl);
                btPagamento.IsEnabled    = true;
                btCliente.IsEnabled      = true;
                btSalvarPedido.IsEnabled = true;
            }

            decimal quant = decimal.Parse(txQuant.Text);

            Itens_movimento itemMov = new Itens_movimento();

            itemMov.Produtos    = estoque.Produtos;
            itemMov.Produto_id  = itemMov.Produtos.Id;
            itemMov.Valor_unit  = estoque.Produtos.Valor_unit;
            itemMov.Unidades    = estoque.Produtos.Unidades;
            itemMov.Unidade_id  = estoque.Produtos.Unidade_id;
            itemMov.Quant       = quant;
            itemMov.Valor_final = (estoque.Produtos.Valor_unit * quant);
            itemMov.Cfop        = (Operacao_atual == Tipo_operacao_atual.VENDA
                ? Tipo_movimento_id_venda.Cfop
                : Tipo_movimento_id_devolucao.Cfop);
            itemMov.Lote     = estoque.Lote;
            itemMov.Sublote  = estoque.Sublote;
            itemMov.Grade_id = estoque.Grade_id;

            PainelVenda.VendeItem(itemMov);
            txProduto.Text = string.Empty;
            txQuant.Text   = "1";
            txProduto.Focus();
            txQuant.IsEnabled = false;
            lbQuant.Content   = "Quantidade";
        }
コード例 #17
0
 public decimal GetTotalParcial()
 {
     return(Itens_movimento.Sum(e => e.Valor_final));
 }
コード例 #18
0
 public decimal GetTotalDesconto()
 {
     return(Itens_movimento.Sum(e => e.Desconto));
 }