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); }
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); } }
public void GerarNotaFiscal(Domain.Pedido pedido) { //NotaFiscal notaFiscal = new NotaFiscal(); NotaFiscalBusiness NFBusiness = new NotaFiscalBusiness(); NFBusiness.EmitirNotaFiscal(pedido); }
public void GerarNotaFiscal(Domain.Pedido pedido) { NotaFiscal notaFiscal = new NotaFiscal(); notaFiscal.EmitirNotaFiscal(pedido); SaveDB(notaFiscal); SaveXML(notaFiscal); }
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); }
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(""); }
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; } }
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); } }
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); } }
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); } } }
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); } } } }
/// <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); } }
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)); } }
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); }
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); } }
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; }
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); }
public int GerarNotaFiscal(Domain.Pedido pedido) { NotaFiscal notaFiscal = new NotaFiscal(); return(notaFiscal.EmitirNotaFiscal(pedido)); }