private NotaFiscal MontarNotaFiscal(Pedido pedido) { var notaFiscal = new NotaFiscal { Id = _notaFiscalRepository.GetNextIdNotaFiscal(), NumeroNotaFiscal = _notaFiscalRepository.GetNextNumeroNotaFiscal(), Serie = new Random().Next(int.MaxValue), NomeCliente = pedido.NomeCliente, EstadoDestino = pedido.EstadoDestino, EstadoOrigem = pedido.EstadoOrigem, }; var idNotaFiscalItem = _notaFiscalRepository.GetLastIdNotaFiscalItem(); var desconto = UF.IsSudeste(notaFiscal.EstadoDestino) ? 0.10 : 0.00; var cfop = DefinirCfop(notaFiscal.EstadoOrigem, notaFiscal.EstadoDestino); foreach (var itemPedido in pedido.ItensDoPedido) { var notaFiscalItem = new NotaFiscalItem() { Id = idNotaFiscalItem++, IdNotaFiscal = notaFiscal.Id, Cfop = cfop }; 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; } else { notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido; } notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms; notaFiscalItem.AliquotaIpi = 0.10; if (itemPedido.Brinde) { notaFiscalItem.TipoIcms = "60"; notaFiscalItem.AliquotaIcms = 0.18; notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms; notaFiscalItem.AliquotaIpi = 0.00; } notaFiscalItem.BaseIpi = itemPedido.ValorItemPedido; notaFiscalItem.ValorIpi = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi; notaFiscalItem.NomeProduto = itemPedido.NomeProduto; notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto; notaFiscalItem.Desconto = desconto; notaFiscal.ItensDaNotaFiscal.Add(notaFiscalItem); } return(notaFiscal); }