/// <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(); } }