コード例 #1
0
        public string GerarNotaFiscal(Domain.Pedido pedido)
        {
            try
            {
                NotaFiscal notaFiscal = new NotaFiscal();
                var        result     = EmitirNotaFiscal(notaFiscal, pedido);

                if (!string.IsNullOrWhiteSpace(result))
                {
                    return(result);
                }

                var provider             = new SQLServerProvider();
                var notaFiscalRepository = new NotaFiscalRepository(provider);

                if (!notaFiscalRepository.InserirNotaFiscal(notaFiscal))
                {
                    return("Erro ao inserir Nota Fiscal");
                }

                GerarXml(provider, notaFiscal);
            }
            catch (Exception e)
            {
                throw e;
            }

            return(string.Empty);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        public void GerarNotaFiscal(Domain.Pedido pedido)
        {
            //NotaFiscal notaFiscal = new NotaFiscal();
            NotaFiscalBusiness NFBusiness = new NotaFiscalBusiness();

            NFBusiness.EmitirNotaFiscal(pedido);
        }
コード例 #4
0
        public void GerarNotaFiscal(Domain.Pedido pedido)
        {
            NotaFiscal notaFiscal = new NotaFiscal();

            notaFiscal.EmitirNotaFiscal(pedido);

            SaveDB(notaFiscal);

            SaveXML(notaFiscal);
        }
コード例 #5
0
        public void GerarNotaFiscal(Domain.Pedido pedido)
        {
            PedidoService pedidoService = new PedidoService();

            NotaFiscal notaFiscal = pedidoService.TratarPedido(pedido);

            XmlService.SalvarXml <NotaFiscal>(notaFiscal, ConfigurationManager.AppSettings["arquivo"]);

            NotaFiscalRepository respositorio = new NotaFiscalRepository();

            respositorio.Salvar(notaFiscal);
        }
コード例 #6
0
        public string GerarNotaFiscal(Domain.Pedido pedido)
        {
            NotaFiscal notaFiscal = new NotaFiscal();

            notaFiscal.EmitirNotaFiscal(pedido);
            if (!GerarXML(notaFiscal))
            {
                return("ATENÇÃO! Ocorreu um erro ao gerar o arquivo XML. A Nota fiscal não foi salva.");
            }
            notaFiscal.Id = Repository.GravarNotaFiscal(notaFiscal);
            notaFiscal.ItensDaNotaFiscal.ForEach(i => i.IdNotaFiscal = notaFiscal.Id);
            notaFiscal.ItensDaNotaFiscal.ForEach(i => Repository.GravarNotaFiscalItem(i));
            return("");
        }
コード例 #7
0
        public void GerarNotaFiscal(Domain.Pedido pedido)
        {
            try
            {
                NotaFiscal notaFiscal = new NotaFiscal()
                                        .EmitirNotaFiscal(pedido)
                                        .GerarNotaFiscalXML();

                notaFiscal = new NotaFiscalRepository().P_Nota_Fiscal(notaFiscal);

                notaFiscal.ItensDaNotaFiscal
                .ForEach(t => new NotaFiscalItemRepository().P_Nota_Fiscal_Item(t, notaFiscal.Id));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #8
0
ファイル: NotaFiscalService.cs プロジェクト: wra1984/net-lab
        public void GerarNotaFiscal(Domain.Pedido pedido, string diretorio)
        {
            NotaFiscal notaFiscal = new NotaFiscal();

            notaFiscal.EmitirNotaFiscal(pedido);

            foreach (NotaFiscalItem item in notaFiscal.ItensDaNotaFiscal)
            {
                if (String.IsNullOrEmpty(item.Cfop))
                {
                    throw new Exception("CFOP não foi atribuído ao item: " + item.CodigoProduto);
                }
            }

            if (GerarXMLNota(diretorio, notaFiscal))
            {
                Data.NotaFiscalRepository repositorio = new Data.NotaFiscalRepository();
                repositorio.SalvarNota(notaFiscal);
            }
        }
コード例 #9
0
        public void Gravar(Domain.Pedido pedido)
        {
            try
            {
                // Gerar Nota Fiscal
                EmitirNotaFiscal(pedido);

                //Desconto
                notaFiscal.AplicarDesconto();

                // Gerar XML da Nota Fiscal
                GerarXML();

                // Persistir na base de dados a Nota Fiscal
                Incluir();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
コード例 #10
0
        public void GerarNotaFiscal(Domain.Pedido pedido)
        {
            NotaFiscal notaFiscal = new NotaFiscal();

            notaFiscal.EmitirNotaFiscal(pedido);

            string path     = ConfigurationManager.AppSettings["SavePath"];
            string filePath = $"{path}\\NF_{notaFiscal.NumeroNotaFiscal}.xml";
            string file     = GerarArquivoXml(filePath, notaFiscal, new string[] { "NotaFiscal" }, new string[] { "ItensDaNotaFiscal" }, new string[] { "Item" });

            if (File.Exists(file))
            {
                var repository = new NotaFiscalRepository();
                notaFiscal.Id = repository.P_NOTA_FISCAL(notaFiscal);

                foreach (var item in notaFiscal.ItensDaNotaFiscal)
                {
                    item.IdNotaFiscal = notaFiscal.Id;
                    repository.P_NOTA_FISCAL_ITEM(item);
                }
            }
        }
コード例 #11
0
        public void GerarNotaFiscal(Domain.Pedido pedido)
        {
            NotaFiscal notaFiscal = new NotaFiscal();

            notaFiscal.EmitirNotaFiscal(pedido);

            var gerouXML = _notaFiscalRepository.GerarArquivoXML(notaFiscal);

            if (gerouXML)
            {
                var notaFiscalId = _notaFiscalRepository.Salvar(notaFiscal);

                if (notaFiscalId > 0)
                {
                    foreach (var item in notaFiscal.ItensDaNotaFiscal)
                    {
                        item.IdNotaFiscal = notaFiscalId;
                        _notaFiscalItemRepository.Salvar(item);
                    }
                }
            }
        }
コード例 #12
0
        /// <summary>
        /// Gera Nota Fiscal de novos pedidos.
        /// </summary>
        /// <param name="pedido">Pedido que será gerado a nota fiscal.</param>
        /// <returns>Retorna se a nota fiscal foi gerada com sucesso.</returns>
        public bool GerarNotaFiscal(Domain.Pedido pedido)
        {
            try
            {
                NotaFiscal notaFiscal = notaFiscalBusiness.EmitirNotaFiscal(pedido);

                if (impostoUtil.GerarNotaFiscalEmXml(notaFiscal))
                {
                    notaFiscalRepository.AdicionarNotaFiscalEItens(notaFiscal);
                }
                else
                {
                    return(false);
                }

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
コード例 #13
0
        public IActionResult Gerar(Domain.Pedido pedido)
        {
            try
            {
                #region [ Fila ]

                var factory = new ConnectionFactory()
                {
                    HostName = "localhost"
                };
                using (var connection = factory.CreateConnection())
                    using (var channel = connection.CreateModel())
                    {
                        channel.QueueDeclare(queue: "filaPedidos",
                                             durable: false,
                                             exclusive: false,
                                             autoDelete: false,
                                             arguments: null);

                        string objetoSerializado = JsonConvert.SerializeObject(pedido);
                        var    body = Encoding.UTF8.GetBytes(objetoSerializado);

                        channel.BasicPublish(exchange: "",
                                             routingKey: "filaPedidos",
                                             basicProperties: null,
                                             body: body);
                        //Console.WriteLine(" [x] Sent {0}", message);
                    }

                #endregion

                return(Accepted(pedido));
            }
            catch (Exception ex)
            {
                _log.LogError(ex.Message, ex);
                return(BadRequest(ex.Message));
            }
        }
コード例 #14
0
        public bool GerarNotaFiscal(Domain.Pedido pedido)
        {
            NotaFiscal notaFiscal
                = new NotaFiscal(new Random().Next(99999), 1, pedido.NomeCliente, pedido.EstadoDestino, pedido.EstadoOrigem);

            Cfop cfop = _cfopService.ObterCfop(pedido);

            if (string.IsNullOrEmpty(cfop.Valor))
            {
                return(false);
            }

            foreach (PedidoItem itemPedido in pedido.Itens)
            {
                Produto       produto = new Produto(itemPedido.NomeProduto, itemPedido.CodigoProduto, itemPedido.ValorItemPedido);
                Icms          icms    = _icmsService.CalcularIcms(pedido, itemPedido, cfop);
                Ipi           ipi     = _ipiService.CalcularIpi(itemPedido);
                EstadoService estado  = new EstadoService(pedido.EstadoDestino);

                NotaFiscalItem notaFiscalItem = new NotaFiscalItem(0, notaFiscal.NumeroNotaFiscal, cfop, icms, produto, ipi);

                if (estado.EhEstadoSudeste())
                {
                    notaFiscalItem.AplicarDesconto(0.10M);
                }

                notaFiscal.AdicionarItem(notaFiscalItem);
            }

            bool notaFiscalCriada = CriarXml(notaFiscal);

            if (notaFiscalCriada)
            {
                this._notaFiscalRepositorio.AdicionarNotaFiscal(notaFiscal);
            }

            return(notaFiscalCriada);
        }
コード例 #15
0
        public void GerarNotaFiscal(Domain.Pedido pedido)
        {
            NotaFiscal notaFiscal = new NotaFiscal();

            notaFiscal.EmitirNotaFiscal(pedido);

            NotaFiscalItemService notaFiscalItemService = new NotaFiscalItemService();

            notaFiscalItemService.PreencherItensNF(pedido, notaFiscal);

            //Método responsável pela geração da classe em XML utilizando Serializer
            if (GerarXMLNotaFiscal(notaFiscal))
            {
                NotaFiscalRepository repo = new NotaFiscalRepository();
                notaFiscal.Id = repo.SalvarNotaFiscal(notaFiscal);

                //Atualizando os itens da NF com o ID salvo no BD
                notaFiscal.ItensDaNotaFiscal.ForEach(q => q.IdNotaFiscal = notaFiscal.Id);

                NotaFiscalItemRepository repoItem = new NotaFiscalItemRepository();
                repoItem.SalvarItensNF(notaFiscal.ItensDaNotaFiscal);
            }
        }
コード例 #16
0
ファイル: Login.asmx.cs プロジェクト: sam9araujo/ASP.NET
        public InterfaceStatus FinalizeOrder3(string Login, string Token, int OrderId, int Status, int Parceiro, string XmlTroca)
        {
            /*
                <TROCA>
                <DATA>22/11/2010</DATA>
                <CPF>17263404818</CPF>
                <PONTOS>1</PONTOS>
                <PEDIDO>999</PEDIDO>
                <IDPARCEIRO>3</IDPARCEIRO>
                <PRODUTO>
                <NOME>BOLA QUADRADA</NOME>
                <CODIGO>X</CODIGO>
                <VALOR>30</VALOR>
                <QUANTIDADE>1</QUANTIDADE>
                <CODIGOCATEGORIA>0</CODIGOCATEGORIA>
                <DESCRICAOCATEGORIA>ESPORTIVOS;FUTEBOL;INFANTIL</DESCRICAOCATEGORIA>
                <FRETE>0</FRETE>
                </PRODUTO>
                <PRODUTO>
                <NOME>BOLA TRIANGULAR</NOME>
                <CODIGO>X</CODIGO>
                <VALOR>30</VALOR>
                <QUANTIDADE>1</QUANTIDADE>
                <CODIGOCATEGORIA>0</CODIGOCATEGORIA>
                <DESCRICAOCATEGORIA>ESPORTIVOS;FUTEBOL;INFANTIL</DESCRICAOCATEGORIA>
                <FRETE>0</FRETE>
                </PRODUTO>
                </TROCA>             
             */
            InterfaceStatus InterfaceStatus = null;

            try
            {
                Sam9araujo.NameProject.Service.Omnion.Login omnionLogin = OmnionLoginEngine.Instance.Get(Login, Token);

                if (omnionLogin != null)
                {
                    OrderPointsTemp orderPointsTemp = OrderPointsTempRepository.Instance.Obter(OrderId, Parceiro);

                    Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "Parceiro: " + Parceiro, true, false);
                    Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "OrderID: " + OrderId, false, false);
                    Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "Status Parceiro: " + Status, false, false);
                    Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "CPF: " + omnionLogin.CPF, false, false);
                    Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "Pontos antes da transação: " + omnionLogin.Saldo, false, false);


                    if (orderPointsTemp != null)
                    {
                        Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "Pedido: " + OrderId + " na tabela 'orderPointsTemp' recuperado.", false, false);
                        Omnion.Pedido omnionPedido = Omnion.OmnionPedidoEngine.Instance.Get(orderPointsTemp.IdOrder, orderPointsTemp.Points.ToString(), "0", omnionLogin.CPF, Parceiro, Server.UrlDecode(XmlTroca));



                        Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "omnionPedido.CodigoErro: " + omnionPedido.CodigoErro, false, false);
                        if (omnionPedido.CodigoErro == 0)
                        {
                            Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "Pontos antes da transação: " + omnionLogin.Saldo, false, false);

                            if (XmlTroca != null && XmlTroca != string.Empty)
                            {
                                Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), XmlTroca, false, false);

                                Domain.Pedido pedido = new Domain.Pedido();
                                {
                                    //Dados do pedido
                                    pedido.Data = DateTime.Now;
                                    pedido.Nome = omnionLogin.Nome;
                                    pedido.FormaPagamento = "-";

                                    //Dados de Entrega do pedido
                                    pedido.Bairro = "-";
                                    pedido.Cidade = "-";
                                    pedido.UF = "-";
                                    pedido.CPFCNPJ = "-";
                                    pedido.CEP = "-";
                                    pedido.Endereco = "-";

                                    pedido.Frete = 0;
                                    pedido.Status = "OK";
                                    pedido.IdParceiro = Parceiro;

                                    ItemPedido itemPedido = new ItemPedido();
                                    {
                                        itemPedido.IdItem = OrderId;
                                        itemPedido.Quantidade = 1;
                                        itemPedido.ValorRebate = 0;
                                        itemPedido.PrecoUnitario = 0;
                                        itemPedido.Nivel = 0;
                                        //itemPedido.IdProduto = null;
                                        //itemPedido.NomeProduto = null;
                                    }
                                }
                                PedidoRepository.Instance.Insert(pedido);
                            }

                            InterfaceStatus = new InterfaceStatus(FinalizeOrderEnum.TRANSACAO_AUTORIZADA);
                            Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "TRANSACAO_AUTORIZADA", false, false);
                        }
                        else
                        {
                            InterfaceStatus = new InterfaceStatus(FinalizeOrderEnum.FALHA_GERAL);
                        }

                        Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "Pontos depois da transação: " + omnionLogin.Saldo, false, false);
                    }
                    else
                    {
                        InterfaceStatus = new InterfaceStatus(FinalizeOrderEnum.FALHA_GERAL);
                        Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "Erro ao recuperar o pedido: " + OrderId + " na tabela 'orderPointsTemp'", false, false);
                    }

                    Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "CodErro Omnion: " + omnionLogin.CodigoErro, false, false);
                    Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "Status Omnion: " + omnionLogin.Status, false, true);
                }
                else
                {
                    Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "Erro ao tentar logar na Omnion:", false, true);
                }
            }
            catch (Exception ex)
            {
                InterfaceStatus = new InterfaceStatus(FinalizeOrderEnum.FALHA_GERAL);
                Logger.Log(Server.MapPath("~/WS_FinalizeOrder.log"), "Excessão, consultar LOG: " + DateTime.Now, false, true);
                Logger.WriteLogError("ValidateOrder", ex);
            }

            return InterfaceStatus;
        }
コード例 #17
0
        public Domain.NotaFiscal GerarNotaFiscal(Domain.Pedido pedido)
        {
            // Geração da Nota Fiscal com base no pedido
            // Alteração do local do código por interpretação da responsabilidade das classes
            // A nova codificação exige uma consulta no banco e forçaria uma depencia
            if (pedido.NomeCliente.Trim().Length == 0)
            {
                throw new ServiceException("Nome do cliente não informado");
            }
            if (pedido.ItensDoPedido.Count == 0)
            {
                throw new ServiceException("Nenhum item adicionado ao pedido");
            }

            Domain.NotaFiscal notaFiscal = new NotaFiscal();

            notaFiscal.NumeroNotaFiscal = notaFiscalRepository.MaxNumeroNotaFiscal() + 1;
            notaFiscal.Serie            = new Random().Next(Int32.MaxValue);
            notaFiscal.NomeCliente      = pedido.NomeCliente;

            notaFiscal.EstadoOrigem  = pedido.EstadoOrigem.Sigla;
            notaFiscal.EstadoDestino = pedido.EstadoDestino.Sigla;

            Data.EstadoCFOPRepository estadoCFOPRepository = new Data.EstadoCFOPRepository();
            Domain.EstadoCFOP         estadoCfop           = estadoCFOPRepository.CarregarEstadoCFOP(notaFiscal.EstadoOrigem, notaFiscal.EstadoDestino);

            if (estadoCfop == null)
            {
                throw new ServiceException("Os estados de origem e destino selecionados não são permitidos");
            }

            foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
            {
                NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
                notaFiscalItem.Cfop = estadoCfop.CFOP.Codigo;

                if (notaFiscal.EstadoDestino == notaFiscal.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms     = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }

                notaFiscalItem.BaseIcms    = itemPedido.ValorItemPedido * estadoCfop.CFOP.FatorBase;
                notaFiscalItem.BaseIpi     = itemPedido.ValorItemPedido;
                notaFiscalItem.AliquotaIpi = 0.1;

                if (itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.AliquotaIpi  = 0;
                }


                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                notaFiscalItem.ValorIpi  = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi;

                notaFiscalItem.Desconto = itemPedido.Desconto;

                notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                notaFiscal.ItensDaNotaFiscal.Add(notaFiscalItem);
            }


            // Geração do arquivo XML
            try
            {
                if (!Directory.Exists(DirXMLNotaFiscal))
                {
                    Directory.CreateDirectory(DirXMLNotaFiscal);
                }

                string        fileName             = String.Format("{0}{1}.xml", DirXMLNotaFiscal, notaFiscal.NumeroNotaFiscal);
                FileStream    notaFiscalStream     = File.Open(fileName, FileMode.Create);
                XmlSerializer notaFiscalSerializer = new XmlSerializer(notaFiscal.GetType());
                notaFiscalSerializer.Serialize(notaFiscalStream, notaFiscal);
                notaFiscalStream.Close();
            }
            catch (Exception e)
            {
                throw new ServiceException("Falha ao gerar arquivo XML", e);
            }

            // Gravar Nota Fiscal no banco de dados
            try
            {
                notaFiscalRepository.Salvar(notaFiscal);
            }
            catch (Exception e)
            {
                throw new ServiceException("Falha ao gravar no banco de dados", e);
            }

            return(notaFiscal);
        }
コード例 #18
0
        public int GerarNotaFiscal(Domain.Pedido pedido)
        {
            NotaFiscal notaFiscal = new NotaFiscal();

            return(notaFiscal.EmitirNotaFiscal(pedido));
        }