private void LoadData() { _modelItem = _modelItem.FindById(idSelecionado).FirstOrDefault <Model.Item>(); if (_modelItem == null) { return; } nome.Text = _modelItem?.Nome ?? ""; referencia.Text = _modelItem?.Referencia ?? ""; valorcompra.Text = Validation.Price(_modelItem.ValorCompra); valorvenda.Text = Validation.Price(_modelItem.ValorVenda); Ativo.Toggled = _modelItem.ativo != 1; }
private async Task SetContentTableAsync(DataGridView table) { table.Rows.Clear(); foreach (var item in ListProducts) { var items = _modelItem.FindById(item).Get(); foreach (var data in items) { table.Rows.Add( data.ID, data.CATEGORIA, data.REFERENCIA, data.NOME, Validation.FormatPrice(Validation.ConvertToDouble(data.VALORCOMPRA), false), Validation.FormatPrice(Validation.ConvertToDouble(data.VALORVENDA), true) ); } } table.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; }
/// <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(); } }
public void SetImposto(int idPedidoItem, int idImposto = 0, string tipo = "", string NCM = "") { _modelpedidoItem = _modelpedidoItem.FindById(idPedidoItem).FirstOrDefault <Model.PedidoItem>(); _modelItem = _modelItem.FindById(_modelpedidoItem.Item).FirstOrDefault <Model.Item>(); #region IMPOSTO if (idImposto == 0) { if (_modelItem.Count() != 0) { switch (tipo) { case "CFe": if (_modelItem.Impostoidcfe == 0) { break; } _modelImposto = _modelImposto.FindById(_modelItem.Impostoidcfe) .FirstOrDefault <Model.Imposto>(); break; default: if (_modelItem.Impostoid == 0) { break; } _modelImposto = _modelImposto.FindById(_modelItem.Impostoid) .FirstOrDefault <Model.Imposto>(); break; } } } else { _modelImposto = _modelImposto.FindById(idImposto).FirstOrDefault <Model.Imposto>(); } #endregion IMPOSTO #region NCM | CEST | ORIGEM _modelpedidoItem.Ncm = string.IsNullOrEmpty(NCM) ? _modelItem.Ncm : NCM; _modelpedidoItem.Cest = _modelItem.Cest; _modelpedidoItem.Origem = _modelItem.Origem; #endregion NCM | CEST | ORIGEM #region CFOP _modelpedidoItem.Cfop = _modelImposto.Cfop; #endregion CFOP #region ICMS _modelpedidoItem.Icms = _modelImposto.Icms; switch (_modelImposto.Icms) { #region REGIME NORMAL //00 = Tributada integralmente. //10 = Tributada e com cobrança do ICMS por substituição tributária //20 = Com redução de base de cálculo //30 = Isenta ou não tributada e com cobrança do ICMS por substituição tributária //40 = Isenta //41 = Não tributada //50 = Suspensão //51 = Diferimento //60 = ICMS cobrado anteriormente por substituição tributária //70 = Com redução de base de cálculo e cobrança do ICMS por substituição tributária //90 = Outros case "00": case "90": _modelpedidoItem.IcmsBase = _modelpedidoItem.Total; _modelpedidoItem.IcmsAliq = Validation.RoundAliquotas(_modelImposto.IcmsAliq / 100); _modelpedidoItem.IcmsVlr = Validation.Round(_modelpedidoItem.IcmsBase * _modelpedidoItem.IcmsAliq); break; #endregion REGIME NORMAL #region SIMPLES NACIONAL //101 = Tributada pelo Simples Nacional com permissão de crédito //102 = Tributada pelo Simples Nacional sem permissão de crédito //103 = Isenção do ICMS no Simples Nacional para faixa de receita bruta //201 = Tributada pelo Simples Nacional com permissão de crédito e com cobrança do ICMS por Substituição Tributária202 = Tributada pelo Simples Nacional sem permissão de crédito e com cobrança do ICMS por Substituição Tributária //202 //203 = Isenção do ICMS nos Simples Nacional para faixa de receita bruta e com cobrança do ICMS por Substituição Tributária //300 = Imune //400 = Não tributada pelo Simples Nacional //500 = ICMS cobrado anteriormente por substituição tributária (substituído) ou por antecipação //900 = Outros case "101": _modelpedidoItem.Icms101Aliq = Validation.RoundAliquotas(_modelImposto.IcmsAliq / 100); _modelpedidoItem.Icms101Vlr = Validation.Round(_modelpedidoItem.Total * _modelpedidoItem.Icms101Aliq); break; case "201": case "202": //---------------ICMS _modelpedidoItem.IcmsBase = _modelpedidoItem.Total; _modelpedidoItem.IcmsAliq = Validation.RoundAliquotas(_modelImposto.IcmsAliq / 100); _modelpedidoItem.IcmsVlr = Validation.Round(_modelpedidoItem.IcmsBase * _modelpedidoItem.IcmsAliq); //---------------ICMS ST _modelpedidoItem.IcmsStBase = Validation.Round(_modelpedidoItem.IcmsBase + _modelpedidoItem.IcmsBase * (_modelImposto.IcmsStIva / 100)); _modelpedidoItem.IcmsStAliq = Validation.RoundAliquotas(_modelImposto.IcmsStAliq / 100); if (_modelImposto.IcmsStReducaoAliq > 0) { _modelpedidoItem.IcmsStBase = Validation.Round( _modelpedidoItem.IcmsStBase - _modelpedidoItem.IcmsStBase * (_modelImposto.IcmsStReducaoAliq / 100)); } _modelpedidoItem.Icmsstvlr = Validation.Round(_modelpedidoItem.IcmsStBase * _modelpedidoItem.IcmsStAliq); //---------------ICMS ST - ICMS _modelpedidoItem.Icmsstvlr = Validation.Round(_modelpedidoItem.Icmsstvlr - _modelpedidoItem.IcmsVlr); _modelpedidoItem.IcmsBase = 0; _modelpedidoItem.IcmsAliq = 0; _modelpedidoItem.IcmsVlr = 0; break; case "900": break; #endregion SIMPLES NACIONAL default: _modelpedidoItem.IcmsBase = 0; _modelpedidoItem.IcmsAliq = 0; _modelpedidoItem.IcmsVlr = 0; _modelpedidoItem.IcmsStAliq = 0; _modelpedidoItem.IcmsStBase = 0; _modelpedidoItem.IcmsStBaseComReducao = 0; _modelpedidoItem.IcmsStReducaoAliq = 0; break; } if (_modelpedidoItem.IcmsAliq > 0) { _modelpedidoItem.IcmsAliq = _modelpedidoItem.IcmsAliq * 100; } if (_modelpedidoItem.IcmsStAliq > 0) { _modelpedidoItem.IcmsStAliq = _modelpedidoItem.IcmsStAliq * 100; } #endregion ICMS #region IPI _modelpedidoItem.Ipi = _modelImposto.Ipi; switch (_modelImposto.Ipi) { case "50": case "99": if (_modelImposto.IpiAliq > 0) { _modelpedidoItem.IpiAliq = Validation.RoundAliquotas(_modelImposto.IpiAliq / 100); _modelpedidoItem.IpiVlr = Validation.Round(_modelpedidoItem.Total * _modelpedidoItem.IpiAliq); } break; default: _modelpedidoItem.Ipi = "0"; _modelpedidoItem.IpiAliq = 0; _modelpedidoItem.IpiVlr = 0; break; } #endregion IPI #region PIS _modelpedidoItem.Pis = _modelImposto.Pis; switch (_modelImposto.Pis) { case "01": case "99": if (_modelImposto.PisAliq > 0) { _modelpedidoItem.PisAliq = Validation.RoundAliquotas(_modelImposto.PisAliq / 100); _modelpedidoItem.PisVlr = Validation.Round(_modelpedidoItem.Total * _modelpedidoItem.PisAliq); } break; default: _modelpedidoItem.PisAliq = 0; _modelpedidoItem.PisVlr = 0; break; } if (_modelpedidoItem.PisAliq > 0) { _modelpedidoItem.PisAliq = _modelpedidoItem.PisAliq * 100; } if (string.IsNullOrEmpty(_modelpedidoItem.Pis)) { _modelpedidoItem.Pis = "0"; } #endregion PIS #region COFINS _modelpedidoItem.Cofins = _modelImposto.Cofins; switch (_modelImposto.Cofins) { case "01": case "99": if (_modelImposto.CofinsAliq > 0) { _modelpedidoItem.CofinsAliq = Validation.RoundAliquotas(_modelImposto.CofinsAliq / 100); _modelpedidoItem.CofinsVlr = Validation.Round(_modelpedidoItem.Total * _modelpedidoItem.CofinsAliq); } break; default: _modelpedidoItem.CofinsAliq = 0; _modelpedidoItem.CofinsVlr = 0; break; } if (_modelpedidoItem.CofinsAliq > 0) { _modelpedidoItem.CofinsAliq = _modelpedidoItem.CofinsAliq * 100; } if (string.IsNullOrEmpty(_modelpedidoItem.Cofins)) { _modelpedidoItem.Cofins = "0"; } #endregion COFINS #region vTotTrib _modelpedidoItem.Federal = Validation.Round(_modelpedidoItem.Total * Validation.Round(_modelItem.AliqFederal / 100)); _modelpedidoItem.Estadual = Validation.Round(_modelpedidoItem.Total * Validation.Round(_modelItem.AliqEstadual / 100)); _modelpedidoItem.Municipal = Validation.Round(_modelpedidoItem.Total * Validation.Round(_modelItem.AliqMunicipal / 100)); #endregion vTotTrib _modelpedidoItem.Save(_modelpedidoItem); }