Example #1
0
        /// <summary>
        /// Adiciona item ao pedido, controla o estoque e atualiza os totais.
        /// </summary>
        private void AddItem()
        {
            if (collection.Lookup(nomeProduto()[0]) > 0 && String.IsNullOrEmpty(PedidoModalItens.NomeProduto))
            {
                var        itemId = collection.Lookup(nomeProduto()[0]);
                Model.Item item   = _mItem.FindById(itemId).WhereFalse("excluir").Where("tipo", "Produtos").FirstOrDefault <Model.Item>();

                if (ModoRapAva == 0)
                {
                    Medidas.SelectedItem = item.Medida;
                }

                double QuantidadeTxt          = Validation.ConvertToDouble(Quantidade.Text);
                double DescontoReaisTxt       = Validation.ConvertToDouble(DescontoReais.Text);
                double DescontoPorcentagemTxt = Validation.ConvertToDouble(DescontoPorcentagem.Text);
                string MedidaTxt = Medidas.Text;
                double PriceTxt  = Validation.ConvertToDouble(Preco.Text);

                #region Controle de estoque
                var controlarEstoque = IniFile.Read("ControlarEstoque", "Comercial");
                if (!string.IsNullOrEmpty(controlarEstoque) && controlarEstoque == "True")
                {
                    if (item.EstoqueAtual <= 0)
                    {
                        Alert.Message("Opps", "Você está sem estoque desse produto.", Alert.AlertType.warning);
                        return;
                    }
                }

                if (PriceTxt == 0)
                {
                    if (DescontoReaisTxt > item.ValorVenda || DescontoReaisTxt > item.Limite_Desconto || DescontoPorcentagemTxt > 101)
                    {
                        Alert.Message("Opps", "Não é permitido dar um desconto maior que o valor do item.", Alert.AlertType.warning);
                        return;
                    }
                }

                if (PriceTxt > 0)
                {
                    if (DescontoReaisTxt > PriceTxt || DescontoPorcentagemTxt >= 101)
                    {
                        Alert.Message("Opps", "Não é permitido dar um desconto maior que o valor do item.", Alert.AlertType.warning);
                        return;
                    }
                }

                double LimiteDescontoIni = 0;
                if (!String.IsNullOrEmpty(IniFile.Read("LimiteDesconto", "Comercial")))
                {
                    LimiteDescontoIni = Validation.ConvertToDouble(IniFile.Read("LimiteDesconto", "Comercial"));
                }

                if (item.Limite_Desconto != 0)
                {
                    if (DescontoReaisTxt > item.Limite_Desconto)
                    {
                        Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                        return;
                    }

                    if (PriceTxt > 0)
                    {
                        var porcentagemValor = (PriceTxt / 100 * DescontoPorcentagemTxt);
                        if (porcentagemValor > item.Limite_Desconto)
                        {
                            Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                            return;
                        }
                    }

                    if (PriceTxt == 0)
                    {
                        var porcentagemValor = (item.ValorVenda / 100 * DescontoPorcentagemTxt);
                        if (porcentagemValor > item.Limite_Desconto)
                        {
                            Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                            return;
                        }
                    }
                }
                else
                {
                    if (LimiteDescontoIni != 0)
                    {
                        if (DescontoReaisTxt > LimiteDescontoIni)
                        {
                            Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                            return;
                        }

                        if (PriceTxt == 0)
                        {
                            var porcentagemValor = (item.ValorVenda / 100 * DescontoPorcentagemTxt);
                            if (porcentagemValor > LimiteDescontoIni)
                            {
                                Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                                return;
                            }
                        }

                        if (PriceTxt > 0)
                        {
                            var porcentagemValor = (PriceTxt / 100 * DescontoPorcentagemTxt);
                            if (porcentagemValor > LimiteDescontoIni)
                            {
                                Alert.Message("Opps", "Não é permitido dar um desconto maior que o permitido.", Alert.AlertType.warning);
                                return;
                            }
                        }
                    }
                }
                #endregion

                var pedidoItem = new Model.PedidoItem();
                pedidoItem.SetId(0)
                .SetTipo("Produtos")
                .SetPedidoId(_mNota.id_pedido)
                .SetAdicionalNomePdt(nomeProduto()[1])
                .SetItem(item)
                .SetQuantidade(QuantidadeTxt)
                .SetMedida(MedidaTxt)
                .SetDescontoReal(DescontoReaisTxt);

                if (!pedidoItem.SetValorVenda(PriceTxt))
                {
                    if (ModoRapAva == 0)
                    {
                        AlterarModo();
                        ModoRapAvaConfig = 1;
                    }

                    Preco.Select();
                    Preco.Focus();
                    return;
                }

                pedidoItem.SetDescontoPorcentagens(DescontoPorcentagemTxt);
                pedidoItem.SomarTotal();
                pedidoItem.Save(pedidoItem);

                if (item.Tipo == "Produtos")
                {
                    new Controller.Imposto().SetImposto(pedidoItem.GetLastId());

                    // Class Estoque -> Se for igual 'Compras', adiciona a quantidade no estoque do Item, se não Remove a quantidade do estoque do Item
                    if (Home.pedidoPage == "Compras" || Home.pedidoPage == "Devoluções")
                    {
                        new Controller.Estoque(pedidoItem.GetLastId(), Home.pedidoPage, "Adicionar Produto").Add().Item();
                    }
                    else
                    {
                        new Controller.Estoque(pedidoItem.GetLastId(), Home.pedidoPage, "Adicionar Produto").Remove().Item();
                    }
                }

                new Controller.Imposto().SetImposto(pedidoItem.GetLastId());

                // Carrega a Grid com o Item adicionado acima.
                GetDataTableItens(GridListaProdutos, _mNota.id_pedido);

                // Atualiza o total do pedido, e os totais da tela
                LoadTotais();

                // Limpa os campos
                ClearForms();

                // Verifica se modo é avançado e altera para modo simples, apenas se modo simples for padrão
                if (ModoRapAva == 1 && ModoRapAvaConfig == 1)
                {
                    AlterarModo();
                    ModoRapAvaConfig = 0;
                }

                BuscarProduto.Select();
            }
        }