/// <summary> /// Persiste no banco de dados informações. /// </summary> /// <param name="notaFiscalItem"></param> public void GravarItemNotaFiscal(NotaFiscalItem notaFiscalItem) { string procedureName = "P_NOTA_FISCAL_ITEM"; using (var connection = new SqlConnection(ConnectionManager.GetConnectionString)) { connection.Open(); using (var command = new SqlCommand(procedureName, connection)) { command.CommandType = CommandType.StoredProcedure; command.CommandTimeout = 60; command.Parameters.Add(new SqlParameter("@pId", notaFiscalItem.Id)); command.Parameters.Add(new SqlParameter("@pIdNotaFiscal", notaFiscalItem.IdNotaFiscal)); command.Parameters.Add(new SqlParameter("@pCfop", notaFiscalItem.Cfop)); command.Parameters.Add(new SqlParameter("@pTipoIcms", notaFiscalItem.TipoIcms)); command.Parameters.Add(new SqlParameter("@pBaseIcms", notaFiscalItem.BaseIcms)); command.Parameters.Add(new SqlParameter("@pAliquotaIcms", notaFiscalItem.AliquotaIcms)); command.Parameters.Add(new SqlParameter("@pValorIcms", notaFiscalItem.ValorIcms)); command.Parameters.Add(new SqlParameter("@pBaseIpi", notaFiscalItem.BaseIpi)); command.Parameters.Add(new SqlParameter("@pAliquotaIpi", notaFiscalItem.AliquotaIpi)); command.Parameters.Add(new SqlParameter("@pValorIpi", notaFiscalItem.ValorIpi)); command.Parameters.Add(new SqlParameter("@pNomeProduto", notaFiscalItem.NomeProduto)); command.Parameters.Add(new SqlParameter("@pCodigoProduto", notaFiscalItem.CodigoProduto)); command.Parameters.Add(new SqlParameter("@pDesconto", notaFiscalItem.Desconto)); command.ExecuteNonQuery(); } } }
public void PreencherItensNF(Domain.Pedido pedido, NotaFiscal nf) { NotaFiscalService nfService = new NotaFiscalService(); foreach (PedidoItem itemPedido in pedido.ItensDoPedido) { NotaFiscalItem notaFiscalItem = new NotaFiscalItem(); notaFiscalItem.NomeProduto = itemPedido.NomeProduto; notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto; //Verificamos a região do destino e aplicamos o desconto se for Sudeste notaFiscalItem.Desconto = RegiaoSudeste(nf) ? 10 : 0; //Atualizando o valor do item com desconto se o mesmo for da região sudeste, senão apenas mantemos o valor notaFiscalItem.Valor = notaFiscalItem.Desconto > 0 ? itemPedido.ValorItemPedido - (itemPedido.ValorItemPedido * (notaFiscalItem.Desconto / 100)) : itemPedido.ValorItemPedido; //Método responsável por definir o CFOP baseado na Origem e Destino da NF DefinirCFOP(notaFiscalItem, nf); //Método responsável pela definição do TipoICMS, BaseICMS e AliquotaICMS DefinirICMS(notaFiscalItem, itemPedido, nf); //Método responsável pela definição da BaseIPI, ValorIPI e AliquotaIPI DefinirIPI(notaFiscalItem, itemPedido); //Adicionando os itens do pedido na NF nf.ItensDaNotaFiscal.Add(notaFiscalItem); } }
private void btRemover_Click(object sender, EventArgs e) { int linhaGrid = 0; if (gvItens.RowCount == 0) { return; } linhaGrid = gvItens.SelectedCells[0].RowIndex; NotaFiscalItem itemSelecionado = new NotaFiscalItem() { Quantidade = int.Parse(gvItens[0, linhaGrid].Value.ToString()), Unidade = gvItens[1, linhaGrid].Value.ToString(), Descricao = gvItens[2, linhaGrid].Value.ToString(), precoUnitario = decimal.Parse(gvItens[3, linhaGrid].Value.ToString()) }; lstNFSItens.RemoveAll(item => item.Quantidade == itemSelecionado.Quantidade && item.Unidade == itemSelecionado.Unidade && item.Descricao == itemSelecionado.Descricao && item.precoUnitario == itemSelecionado.precoUnitario); CarregarGridItens(); }
public bool InserirNotaFiscalItem(NotaFiscal notaFiscal, NotaFiscalItem notaFiscalItem) { var provider = new SQLServerProvider(); var command = new SqlCommand(); //inserir nota fiscal item provider.LimparParametros(command); string storedProcedure = "P_NOTA_FISCAL_ITEM"; // Adiciona os parâmetros da instrução SQL provider.AdicionarParametro(command, "@pId", SqlDbType.Int, 0, true); provider.AdicionarParametro(command, "@pIdNotaFiscal", SqlDbType.Int, notaFiscal.Id); provider.AdicionarParametro(command, "@pCfop", SqlDbType.VarChar, notaFiscalItem.Cfop); provider.AdicionarParametro(command, "@pTipoIcms", SqlDbType.VarChar, notaFiscalItem.TipoIcms); provider.AdicionarParametro(command, "@pBaseIcms", SqlDbType.Decimal, notaFiscalItem.BaseIcms); provider.AdicionarParametro(command, "@pAliquotaIcms", SqlDbType.Decimal, notaFiscalItem.AliquotaIcms); provider.AdicionarParametro(command, "@pValorIcms", SqlDbType.Decimal, notaFiscalItem.ValorIcms); provider.AdicionarParametro(command, "@pNomeProduto", SqlDbType.VarChar, notaFiscalItem.NomeProduto); provider.AdicionarParametro(command, "@pCodigoProduto", SqlDbType.VarChar, notaFiscalItem.CodigoProduto); provider.AdicionarParametro(command, "@pBaseIPI", SqlDbType.Decimal, notaFiscalItem.BaseIPI); provider.AdicionarParametro(command, "@pAliquotaIPI", SqlDbType.Decimal, notaFiscalItem.AliquotaIPI); provider.AdicionarParametro(command, "@pValorIPI", SqlDbType.Decimal, notaFiscalItem.ValorIPI); provider.AdicionarParametro(command, "@pDesconto", SqlDbType.Decimal, notaFiscalItem.Desconto); // Retorna a quantidade de linhas afetadas if (provider.ExecutaAtualizacao(command, storedProcedure) > 0) { notaFiscalItem.Id = Convert.ToInt32(command.Parameters["@pId"].Value.ToString().Trim()); return(true); } return(false); }
public void DefinirICMS(NotaFiscalItem notaFiscalItem, PedidoItem itemPedido, NotaFiscal notaFiscal) { if (notaFiscal.EstadoDestino == notaFiscal.EstadoOrigem) { notaFiscalItem.TipoIcms = "60"; notaFiscalItem.AliquotaIcms = 0.18; } else { notaFiscalItem.TipoIcms = "10"; notaFiscalItem.AliquotaIcms = 0.17; } if (notaFiscalItem.Cfop == "6.009") { notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base } else { notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido; } //Se o pedido ser do tipo Brinde, devemos alterar as aliquotas if (itemPedido.Brinde) { notaFiscalItem.TipoIcms = "60"; notaFiscalItem.AliquotaIcms = 0.18; notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms; } notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms; }
private void btAdicionar_Click(object sender, EventArgs e) { string Msg = string.Empty; Msg = VerificarCamposItens(); if (Msg == string.Empty) { NotaFiscalItem nfsItem = new NotaFiscalItem() { Quantidade = int.Parse(tbItem_Qtd.Text), Unidade = tbItem_Unidade.Text, Descricao = tbItem_Descricao.Text, precoUnitario = decimal.Parse(tbItem_PrecoUnitario.Text) }; lstNFSItens.Add(nfsItem); CarregarGridItens(); LimparCamposItens(); } else { MessageBox.Show(Msg, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
public NotaFiscal Convert(PedidoViewModel pedido, NotaFiscal notafiscal, ResolutionContext context) { notafiscal = new NotaFiscal { NumeroNotaFiscal = 99999, Serie = new Random().Next(Int32.MaxValue), NomeCliente = pedido.NomeCliente, EstadoDestino = pedido.EstadoDestino, EstadoOrigem = pedido.EstadoOrigem, }; foreach (PedidoItemViewModel itemPedido in pedido.ItensDoPedido) { NotaFiscalItem notaFiscalItem = new NotaFiscalItem { NomeProduto = itemPedido.NomeProduto, CodigoProduto = itemPedido.CodigoProduto, BaseIcms = itemPedido.ValorItemPedido, BaseCalculoIpi = itemPedido.ValorItemPedido, AliquotaIpi = (decimal)0.10 }; notafiscal.AdicionarItemDaNotaFiscal(notaFiscalItem, itemPedido.Brinde); } return(notafiscal); }
public void GerarXMLTest() { NotaFiscal notaFiscal = new NotaFiscal(); notaFiscal.Id = 99999; notaFiscal.NumeroNotaFiscal = 999999; notaFiscal.NomeCliente = "Teste Unitario"; notaFiscal.Serie = 999999; notaFiscal.EstadoOrigem = "SP"; notaFiscal.EstadoDestino = "RO"; NotaFiscalItem nfItem = new NotaFiscalItem(); nfItem.IdNotaFiscal = notaFiscal.NumeroNotaFiscal; nfItem.NomeProduto = "Produto Teste"; nfItem.CodigoProduto = "123"; nfItem.Cfop = "6.006"; nfItem.TipoIcms = "60"; nfItem.BaseIcms = 312; nfItem.AliquotaIcms = 0.18; nfItem.ValorIcms = 56.16; nfItem.BaseIpi = 312; nfItem.AliquotaIpi = 0.1; nfItem.ValorIpi = 31.2; notaFiscal.GerarXML(notaFiscal); }
public void P_NOTA_FISCAL_ITEM(NotaFiscalItem itemNf) { string query = $@"exec P_NOTA_FISCAL_ITEM '{itemNf.Id}' ,'{itemNf.IdNotaFiscal}' ,'{itemNf.Cfop}' ,'{itemNf.TipoIcms}' ,@baseIcms ,@aliqIcms ,@valIcms ,@baseIpi ,@aliqIpi ,@valIpi ,'{itemNf.NomeProduto}' ,'{itemNf.CodigoProduto}'"; using (cmd = new SqlCommand(query, conn)) { cmd.Parameters.AddRange(new[] { new SqlParameter("baseIcms", itemNf.BaseIcms), new SqlParameter("aliqIcms", itemNf.AliquotaIcms), new SqlParameter("valIcms", itemNf.ValorIcms), new SqlParameter("baseIpi", itemNf.BaseIpi), new SqlParameter("aliqIpi", itemNf.AliquotaIpi), new SqlParameter("valIpi", itemNf.ValorIpi) }); cmd.ExecuteNonQuery(); } }
public void CriarNotaFiscalItem_PedidoItemVazio_ExcecaoCamposObrigatorios() { // Arrange var pedidoItem = new PedidoItem { Brinde = true, CodigoProduto = "123", NomeProduto = "NomeProduto", ValorItemPedido = 100 }; var pedido = new Pedido { EstadoDestino = "MG", EstadoOrigem = "RJ", NomeCliente = "NomeCliente", ItensDoPedido = new List <PedidoItem> { pedidoItem } }; var notaFiscal = NotaFiscal.New(pedido); // Act var exception = Record.Exception(() => NotaFiscalItem.New(notaFiscal, new PedidoItem())); // Assert Assert.NotNull(exception); }
public bool Salvar(NotaFiscalItem notaFiscalItem) { // Create the connection. using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SQL"].ConnectionString)) { // Create a SqlCommand, and identify it as a stored procedure. using (SqlCommand sqlCommand = new SqlCommand("P_NOTA_FISCAL_ITEM", connection)) { sqlCommand.CommandType = CommandType.StoredProcedure; MapperNotaFiscalItem(notaFiscalItem, sqlCommand); try { connection.Open(); if (sqlCommand.ExecuteNonQuery() > 0) { return(true); } } catch (Exception) { } finally { connection.Close(); } } } return(false); }
public string ProcessarItemPedido(Pedido pedido, NotaFiscal notaFiscal, List <NotaFiscalItem> notaFiscalItemList) { foreach (PedidoItem itemPedido in pedido.ItensDoPedido) { var notaFiscalItem = new NotaFiscalItem(); if (!DefinirCfop(notaFiscal, notaFiscalItem)) { return("Erro ao definir CFOP da Nota Fiscal"); } DefinirTipoIcms(notaFiscal, notaFiscalItem); DefinirBaseIcms(notaFiscalItem, itemPedido); if (itemPedido.Brinde) { TratarItemDeBrinde(notaFiscalItem); } DefinirBaseIPI(notaFiscalItem, itemPedido.Brinde); ProcessarDesconto(notaFiscal, notaFiscalItem, itemPedido); notaFiscalItem.NomeProduto = itemPedido.NomeProduto; notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto; notaFiscalItemList.Add(notaFiscalItem); } return(string.Empty); }
public int IncluirItemNota(NotaFiscalItem notaFiscalItem) { var query = "P_NOTA_FISCAL_ITEM"; var command = new SqlCommand(query) { CommandType = CommandType.StoredProcedure }; command.Parameters.AddWithValue("@pId", notaFiscalItem.Id).Direction = ParameterDirection.InputOutput; command.Parameters.AddWithValue("@pIdNotaFiscal", notaFiscalItem.IdNotaFiscal); command.Parameters.AddWithValue("@pCfop", notaFiscalItem.Cfop); command.Parameters.AddWithValue("@pTipoIcms", notaFiscalItem.TipoIcms); command.Parameters.AddWithValue("@pBaseIcms", notaFiscalItem.BaseIcms); command.Parameters.AddWithValue("@pAliquotaIcms", notaFiscalItem.AliquotaIcms); command.Parameters.AddWithValue("@pValorIcms", notaFiscalItem.ValorIcms); command.Parameters.AddWithValue("@pBaseIpi", notaFiscalItem.BaseIpi); command.Parameters.AddWithValue("@pAliquotaIpi", notaFiscalItem.AliquotaIpi); command.Parameters.AddWithValue("@pValorIpi", notaFiscalItem.ValorIpi); command.Parameters.AddWithValue("@pDesconto", notaFiscalItem.Desconto); command.Parameters.AddWithValue("@pNomeProduto", notaFiscalItem.NomeProduto); command.Parameters.AddWithValue("@pCodigoProduto", notaFiscalItem.CodigoProduto); this.ExecuteNonQuery(command); notaFiscalItem.Id = (int)command.Parameters["@pId"].Value; return(notaFiscalItem.Id); }
public void CalcularCfopEstadoNuloTest() { notaFiscalItem = new NotaFiscalItem(); notaFiscalItem.CalcularCfopPorEstado(null); Assert.AreEqual(null, notaFiscalItem.Cfop, "Erro ao calcular CFOP com entrada nula."); }
public void CalcularCfopEstadoInvalidoTest() { notaFiscalItem = new NotaFiscalItem(); notaFiscalItem.CalcularCfopPorEstado("SP"); Assert.AreEqual(null, notaFiscalItem.Cfop, "Erro ao calcular CFOP com entrada inválida."); }
/// <summary> /// Aplica desconto para os Estados Destino da região Sudeste /// </summary> /// <param name="notaFiscal">Nota fiscal</param> /// <param name="notaFiscalItem">Item da Nota Fiscal</param> private static void VerificarDesconto(NotaFiscal notaFiscal, NotaFiscalItem notaFiscalItem) { if (notaFiscal.EstadoDestino == "SP" || notaFiscal.EstadoDestino == "RJ" || notaFiscal.EstadoDestino == "MG") { notaFiscalItem.Desconto = 0.1; } }
/// <summary> /// Aplicação de regra de brinde ICMS /// </summary> /// <param name="itemPedido">Item do Pedido</param> /// <param name="notaFiscalItem">Item da Nota Fiscal</param> private static void AplicarRegraBrindeIcms(PedidoItem itemPedido, NotaFiscalItem notaFiscalItem) { if (itemPedido.Brinde) { notaFiscalItem.TipoIcms = "60"; notaFiscalItem.AliquotaIcms = 0.18; notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms; } }
public void EmitirNotaFiscal(Pedido pedido) { notaFiscal.NumeroNotaFiscal = new Random().Next(Int32.MaxValue); notaFiscal.Serie = new Random().Next(Int32.MaxValue); notaFiscal.NomeCliente = pedido.NomeCliente; notaFiscal.EstadoOrigem = pedido.EstadoOrigem; notaFiscal.EstadoDestino = pedido.EstadoDestino; foreach (PedidoItem itemPedido in pedido.ItensDoPedido) { NotaFiscalItem notaFiscalItem = new NotaFiscalItem(); // IPI notaFiscalItem.BaseIpi = itemPedido.ValorItemPedido; if (!itemPedido.Brinde) { notaFiscalItem.AliquotaIpi = 10; notaFiscalItem.ValorIpi = itemPedido.ValorItemPedido * 0.1; } // Cfop notaFiscalItem.Cfop = notaFiscalRepository.Cfop(notaFiscal.EstadoOrigem, notaFiscal.EstadoDestino); if (notaFiscal.EstadoDestino == notaFiscal.EstadoOrigem) { notaFiscalItem.TipoIcms = "60"; notaFiscalItem.AliquotaIcms = 0.18; } else { notaFiscalItem.TipoIcms = "10"; notaFiscalItem.AliquotaIcms = 0.17; } if (notaFiscalItem.Cfop == "6.009") { notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base } else { notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido; } notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms; if (itemPedido.Brinde) { notaFiscalItem.TipoIcms = "60"; notaFiscalItem.AliquotaIcms = 0.18; notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms; } notaFiscalItem.NomeProduto = itemPedido.NomeProduto; notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto; notaFiscal.ItensDaNotaFiscal.Add(notaFiscalItem); } }
private void PopularNotaFiscalItem() { notaFiscalItem = new NotaFiscalItem { NomeProduto = Guid.NewGuid().ToString(), CodigoProduto = Guid.NewGuid().ToString("N").Substring(0, 12), BaseIcms = 100, BaseCalculoIpi = 100, AliquotaIpi = (decimal)0.10 }; }
public void ProcessarDesconto(NotaFiscal notaFiscal, NotaFiscalItem notaFiscalItem, PedidoItem pedidoItem) { if (_EstadosSudeste.Contains(notaFiscal.EstadoDestino)) { notaFiscalItem.Desconto = pedidoItem.ValorItemPedido * 0.1; } else { notaFiscalItem.Desconto = 0; } }
public void CalcularValorIcmsTest() { notaFiscalItem = new NotaFiscalItem(); notaFiscalItem.BaseIcms = 100; notaFiscalItem.AliquotaIcms = (decimal)0.18; notaFiscalItem.CalcularValorIcms(); Assert.AreEqual(18, notaFiscalItem.ValorIcms, "Erro ao calcular Valor ICMS."); }
public void CalcularValorIcmsAliquotaIcmsNuloTest() { notaFiscalItem = new NotaFiscalItem(); notaFiscalItem.BaseIcms = 100; notaFiscalItem.AliquotaIcms = null; notaFiscalItem.CalcularValorIcms(); Assert.AreEqual(null, notaFiscalItem.ValorIcms, "Erro ao calcular Aliquota ICMS quando Base ICMS nulo."); }
public void DefinirBaseIcms(NotaFiscalItem notaFiscalItem, PedidoItem itemPedido) { if (notaFiscalItem.Cfop == "6.009") { notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base } else { notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido; } }
public void CalcularValorIpiTest() { notaFiscalItem = new NotaFiscalItem(); notaFiscalItem.BaseCalculoIpi = 100; notaFiscalItem.AliquotaIpi = (decimal)0.10; notaFiscalItem.CalcularValorIpi(); Assert.AreEqual(10, notaFiscalItem.ValorIpi, "Confere se o ValorIpi foi calculado para 10."); }
public void CalcularTipoIcmsEstadoOrigemDestinoDiferentesTest() { notaFiscalItem = new NotaFiscalItem(); var estadoOrigem = "RJ"; var estadoDestino = "SP"; notaFiscalItem.CalcularTipoIcms(estadoOrigem, estadoDestino); Assert.AreEqual("10", notaFiscalItem.TipoIcms, "Erro ao calcular Tipo do ICMS quando estado de Origem e Destino são diferentes."); }
public void Calcula(PedidoItem pedidoItem, Pedido pedido, NotaFiscalItem notaFiscalItem) { EstadosSudeste getSudeste; bool chkDescontoSudeste = EstadosSudeste.TryParse(pedido.EstadoDestino, out getSudeste); if (chkDescontoSudeste) { notaFiscalItem.Desconto = pedidoItem.ValorItemPedido * 0.1; } }
public bool Salvar(NotaFiscalItem notaFiscalItem) { var retorno = _notaFiscalItemRepository.Salvar(notaFiscalItem); if (!retorno) { NotificarValidacao(errorMessage: "Erro ao Salvar um item da Nota Fiscal!"); } return(retorno); }
public void CalcularBaseIcmsEstadoIgualSergipeBaseIcmsNuloTest() { notaFiscalItem = new NotaFiscalItem(); notaFiscalItem.Cfop = "6.009"; notaFiscalItem.BaseIcms = null; notaFiscalItem.CalcularBaseIcms(); Assert.AreEqual(null, notaFiscalItem.BaseIcms, "Erro ao calcular Base do ICMS quando quando estado igual a Sergipe e Base ICMS nulo."); }
/// <summary> /// Seleciona cfop de acordo com Estado Origem e Estado Destino /// </summary> /// <param name="notaFiscal">Informações dos Estados</param> /// <param name="notaFiscalItem">Item que receberá a CFOP selecionada</param> private static void PreencherCfop(NotaFiscal notaFiscal, NotaFiscalItem notaFiscalItem) { if (notaFiscal.EstadoOrigem == "SP") { notaFiscalItem.Cfop = VerificarCfopsSP(notaFiscal.EstadoDestino); } else if (notaFiscal.EstadoOrigem == "MG") { notaFiscalItem.Cfop = VerificarCfopsMG(notaFiscal.EstadoDestino); } }
public void CalcularBaseIcmsCfopNuloTest() { notaFiscalItem = new NotaFiscalItem(); notaFiscalItem.Cfop = null; notaFiscalItem.BaseIcms = 100; notaFiscalItem.CalcularBaseIcms(); Assert.AreEqual(notaFiscalItem.BaseIcms, notaFiscalItem.BaseIcms, "Erro ao calcular Base do ICMS quando CFOP nulo."); }