Пример #1
0
        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);
        }