public void ProcessaArquivo(Empresa empresa, string arquivoXmlEnvio, string localSalvarXmlRetorno, Servicos servico) { if (servico == Servicos.Nulo) throw new Exception("Não pode identificar o tipo de serviço baseado no arquivo " + arquivoXmlEnvio); NFSE.Net.Core.ConfiguracaoApp.ValidarConfig(empresa); NFSE.Net.Core.ConfiguracaoApp.CarregarDados(); if (Propriedade.TipoAplicativo == TipoAplicativo.Nfse) { #region Executar o serviço da NFS-e switch (servico) { case Servicos.ConsultarLoteRps: CertVencido(empresa); IsConnectedToInternet(); this.DirecionarArquivo(empresa, arquivoXmlEnvio, localSalvarXmlRetorno, new TaskConsultarLoteRps()); break; case Servicos.CancelarNfse: CertVencido(empresa); IsConnectedToInternet(); this.DirecionarArquivo(empresa, arquivoXmlEnvio, localSalvarXmlRetorno, new TaskCancelarNfse()); break; case Servicos.ConsultarSituacaoLoteRps: CertVencido(empresa); IsConnectedToInternet(); this.DirecionarArquivo(empresa, arquivoXmlEnvio, localSalvarXmlRetorno, new TaskConsultaSituacaoLoteRps()); break; case Servicos.ConsultarNfse: CertVencido(empresa); IsConnectedToInternet(); this.DirecionarArquivo(empresa, arquivoXmlEnvio, localSalvarXmlRetorno, new TaskConsultarNfse()); break; case Servicos.ConsultarNfsePorRps: CertVencido(empresa); IsConnectedToInternet(); this.DirecionarArquivo(empresa, arquivoXmlEnvio, localSalvarXmlRetorno, new TaskConsultarNfsePorRps()); break; case Servicos.RecepcionarLoteRps: CertVencido(empresa); IsConnectedToInternet(); this.DirecionarArquivo(empresa, arquivoXmlEnvio, localSalvarXmlRetorno, new TaskRecepcionarLoteRps()); break; case Servicos.ConsultarURLNfse: CertVencido(empresa); IsConnectedToInternet(); this.DirecionarArquivo(empresa, arquivoXmlEnvio, localSalvarXmlRetorno, new TaskConsultarURLNfse()); break; } #endregion } }
public void ProcessaArquivo(int emp, string arquivoXmlEnvio, string localSalvarXmlRetorno, Servicos servico) { if (Empresa.Configuracoes.Count == 0) Empresa.CarregarEmpresasConfiguradas(); if (Empresa.Configuracoes.Count > emp) ProcessaArquivo(Empresa.Configuracoes[emp], arquivoXmlEnvio, localSalvarXmlRetorno, servico); else throw new Exception("Você não configurou nenhuma empresa."); }
public void saveServico(Servicos servico) { if (servico.IDServico == 0) { servico = MarteUpdatesContext.Servicos.Add(servico); MarteUpdatesContext.SaveChanges(); } else { MarteUpdatesContext.Servicos.Attach(servico); MarteUpdatesContext.Entry(servico).State = EntityState.Modified; MarteUpdatesContext.SaveChanges(); } }
public bool deleteServico(Servicos servico) { try { MarteUpdatesContext.Servicos.Remove(servico); MarteUpdatesContext.SaveChanges(); } catch { //TODO: Vamos implementar o Log return false; } return true; }
public ActionResult Delete(string Id) { Servicos servicosToDelete = context.Find(Id); if (servicosToDelete == null) { return(HttpNotFound()); } else { return(View(servicosToDelete)); } }
public Boolean editar(Ticket ticket, Carro carro, Cliente cliente, Servicos servico) { Connection con = new Connection(); con.openConnection(); SqlCommand command = new SqlCommand(); String sql = "UPDATE Tickets SET Id_cliente = " + cliente.id_cliente + ", id_Carro = " + carro.id_carro + ", Id_Servico = " + servico.id_servico + ", DataEntrada = '" + ticket.data_entrada + "', DataSaida = '" + ticket.data_saida + "', ValorTotal = " + ticket.valorTotal + ", Placa = '" + ticket.placa + "', UF = '" + ticket.uf + "', Cidade = '" + ticket.cidade + "'"; command.CommandText = sql; command.CommandType = CommandType.Text; command.Connection = con.getConnection(); command.ExecuteNonQuery(); con.closeConnection(); return true; }
public void Update(Servicos servico) { Servicos servicoToUpdate = servicos.Find(s => s.Id == servico.Id); if (servicoToUpdate != null) { servicoToUpdate = servico; } else { throw new Exception("Servicos nao encontrado"); } }
/// <summary> /// Retorna o nome da classe do serviço passado por parâmetro do WebService do SEFAZ - CTe /// </summary> /// <param name="servico">Servico</param> /// <param name="cUF">Código da UF</param> /// <returns>Nome da classe</returns> protected string NomeClasseWS(Servicos servico, int cUF) { string retorna = string.Empty; switch (Propriedade.TipoAplicativo) { case TipoAplicativo.Nfse: retorna = NomeClasseWSNFSe(servico, cUF); break; } return retorna; }
// GET: Servicos/Delete/5 public async Task <ActionResult> Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Servicos servicos = await db.Servicos.FindAsync(id); if (servicos == null) { return(HttpNotFound()); } return(View(servicos)); }
public ActionResult Create(Servicos servicos) { if (!ModelState.IsValid) { return(View(servicos)); } else { context.Insert(servicos); context.Commit(); return(RedirectToAction("Index")); } }
public ActionResult Edit(int id) { Servicos servico = ServicoService.getServico(id); if (servico == null) { this.addMensagemErro("Serviço não encontrado"); return(RedirectToAction("Index", "Servico")); } else { return(View(getViewModel(servico))); } }
// GET: Servicos/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Servicos servicos = db.Servicos.Find(id); if (servicos == null) { return(HttpNotFound()); } return(View(servicos)); }
private async void AsyncServicos(string _origem) { var t = Task.Factory.StartNew(() => new mData().Servicos(_origem)); await t; if (t.IsCompleted) { foreach (mTiposGenericos s in t.Result) { Servicos.Add(s.Nome); } } }
public ActionResult ConfirmDelete(string Id) { Servicos servicosToDelete = context.Find(Id); if (servicosToDelete == null) { return(HttpNotFound()); } else { context.Delete(Id); context.Commit(); return(RedirectToAction("Index")); } }
public bool add(Modelo prEntity) { try { Servico Entity = (Servico)prEntity; Servicos.Add(Entity); return(SaveChanges() > 0); } catch (Exception e) { return(false); } }
public void Dispose(bool primaryService) { Setup.RemoverSessaoDeRequisicao(this.IdentificadorDaSessao); ObjetosDaTransacao?.Dispose(); foreach (var service in this.Servicos.Values) { service.Dispose(false); } if (primaryService) { Servicos.Clear(); } }
public ActionResult EditarServico(int id, Servicos servicoObj) { try { _repositorio = new ServicoRepositorio(); _repositorio.AtualizarServico(servicoObj); return(RedirectToAction("ObterServicos", _repositorio.ObterServicos())); } catch (Exception e) { var ja = e.Message; return(View("ObterServicos", _repositorio.ObterServicos())); } }
public List <Servicos> ObterTodos() { List <Servicos> servicos = new List <Servicos>(); string[] linhas = File.ReadAllLines(PATH); foreach (var linha in linhas) { Servicos s = new Servicos(); string[] dados = linha.Split(";"); s.Nome = dados[0]; s.Preco = double.Parse(dados[1]); servicos.Add(s); } return(servicos); }
private object SelecionaServico() { Servico = null; if (gvServico.CurrentRow != null) { var proRow = gvServico.CurrentRow.DataBoundItem as DataRowView; Servicos Serv = CtrlServico.BuscarPorID(proRow["codigo"]) as Servicos; return(Servico = Serv); } else { MessageBox.Show("Nenhum serviço foi selecionado"); return(null); } }
private void REL_SERVICOS_Load(object sender, EventArgs e) { gridControlServicos.DataSource = Servicos.Get(); repositoryItemGridLookUpEditClientes.DataSource = Clientes.Get(); repositoryItemGridLookUpEditClientes.ValueMember = "CLI_ID"; repositoryItemGridLookUpEditClientes.DisplayMember = "CLI_RAZAO"; repositoryItemGridLookUpEditTipoSer.DataSource = TipoServico.Get(); repositoryItemGridLookUpEditTipoSer.ValueMember = "TIPO_SER_ID"; repositoryItemGridLookUpEditTipoSer.DisplayMember = "TIPO_SER_NOME"; repositoryItemGridLookUpEditPets.DataSource = Pets.Get(); repositoryItemGridLookUpEditPets.ValueMember = "PET_ID"; repositoryItemGridLookUpEditPets.DisplayMember = "PET_NOME"; }
public JsonResult JsCreate(Servicos model) { var daoServicos = new DAOServicos(); daoServicos.Insert(model); var result = new { type = "success", field = "", message = "Registro adicionado com sucesso!", model = model }; return(Json(result, JsonRequestBehavior.AllowGet)); }
public IActionResult Registrar(IFormCollection form) { ViewData["Action"] = "Servicos"; Servicos pedido = new Servicos(); Shake shake = new Shake(); var nomeShake = form["shake"]; shake.Nome = nomeShake; shake.Preco = shakeRepository.ObterPrecoDe(nomeShake); pedido.Shake = shake; var nomeHamburguer = form["hamburguer"]; Hamburguer hamburguer = new Hamburguer( nomeHamburguer, hamburguerRepository.ObterPrecoDe(nomeHamburguer)); pedido.Hamburguer = hamburguer; Cliente cliente = new Cliente() { Nome = form["nome"], Endereco = form["endereco"], Telefone = form["telefone"], Email = form["email"] }; pedido.Cliente = cliente; pedido.DataDoPedido = DateTime.Now; pedido.PrecoTotal = hamburguer.Preco + shake.Preco; if (pedidoRepository.Inserir(pedido)) { return(View("Sucesso", new RespostaViewModel() { NomeView = "Servicos", UsuarioEmail = ObterUsuarioSession(), UsuarioNome = ObterUsuarioNomeSession() })); } else { return(View("Erro", new RespostaViewModel("Mensagem"))); } }
public void ListarTarefas(int ID_Item) { ServicosDAL sDal = new ServicosDAL(); Servicos ser = sDal.PesquisarPorCodigo(ID_Item); if (ser != null) { Descricao.Text = ser.Descricao; cbxUsuarios.SelectedIndex = (ser.ID_Usuario - 1); StatusTarefa.SelectedValue = ser.Status; } else { lblMensagem.Text = "Tarefa não encontrada"; } }
public ActionResult Edit(string Id) { Servicos servicos = context.Find(Id); if (servicos == null) { return(HttpNotFound()); } else { ServicosManagerViewModel viewModel = new ServicosManagerViewModel(); viewModel.Servicos = servicos; viewModel.Servicoscategories = servicoscategories.Collection(); return(View(viewModel)); } }
public ContentResult deletarOrcamento(int codorcamento) { var content = new ContentResult(); Servicos servicos_banco = (from S in _context.Servicos where S.CodCliente == codorcamento select S).FirstOrDefault(); if (servicos_banco != null) { _context.Servicos.Remove(servicos_banco); _context.SaveChanges(); } return(content); }
public JsonResult JsUpdate(Servicos model) { var daoServicos = new DAOServicos(); daoServicos.Update(model); //model.idMarca = bean.idMarca; var result = new { type = "success", field = "", message = "Registro alterado com sucesso!", model = model }; return(Json(result, JsonRequestBehavior.AllowGet)); }
public void Atualizar(Servicos servico) { using (PluftContext ctx = new PluftContext()) { Servicos atualizaServico = new Servicos(); atualizaServico.Id = servico.Id; atualizaServico.NomeServico = servico.NomeServico; atualizaServico.Descricao = servico.Descricao; atualizaServico.IdCapacidades = servico.IdCapacidades; atualizaServico.IdValores = servico.IdValores; ctx.Servicos.Update(servico); ctx.SaveChanges(); } }
private void botaoPDF_Click(object sender, RoutedEventArgs e) { if (listaOrc.SelectedIndex != -1) { List <ClasseProduto> produtos = new List <ClasseProduto>(); List <Servicos> servicos = new List <Servicos>(); int index = listaOrc.SelectedIndex; DataRowView row = (DataRowView)listaOrc.Items[index]; string login = row[1].ToString(); string cd = row[0].ToString(); string cliente = row[9].ToString(); DateTime data = DateTime.Parse(row[3].ToString()); DateTime dataV = DateTime.Parse(row[5].ToString()); string obs = row[8].ToString(); for (int i = 0; i < viewOrcP.Items.Count; i++) { row = (DataRowView)viewOrcP.Items[i]; ClasseProduto p = new ClasseProduto(); p.Nome = row[0].ToString(); p.Descricao = row[1].ToString(); p.Tipo = row[2].ToString(); p.Imagem = row[3].ToString(); p.Dimensao = row[4].ToString() + "m x " + row[5].ToString() + "m"; p.Quantidade = Convert.ToInt32(row[6]); p.PrecoU = Convert.ToDouble(row[8]); p.PrecoT = p.Quantidade * p.PrecoU; produtos.Add(p); } for (int i = 0; i < viewOrcS.Items.Count; i++) { row = (DataRowView)viewOrcS.Items[i]; Servicos s = new Servicos(); s.Nome = row[0].ToString(); s.Descricao = row[1].ToString(); s.PrecoT = Convert.ToDouble(row[3]); servicos.Add(s); } ClasseOrcamento o = new ClasseOrcamento(cdUsuario); o.ExportarRelatorio(produtos, servicos, data, dataV, cd, cliente, obs, login, viewOrcP.Items.Count + viewOrcS.Items.Count); } else { Xceed.Wpf.Toolkit.MessageBox.Show("Você não selecionou"); } }
public ConfirmaAgendamentoPage(Servicos servico, DateTime dateTime, string hora) { InitializeComponent(); BindingContext = new ConfirmaAgendamentoViewModel(); this.DateTime = dateTime; this.Hora = hora; this.Profissional = Convert.ToInt32(servico.id_profissional); this.IdProf_serv = servico.id_servico; this.Data = dateTime.ToString("dd/MM/yyyy"); this.Servicos = servico; lDescricao.Text = Servicos.descricao; //lData.Text = String.Format("Data {0} hora {1}", Data, this.Hora.Substring(0,5)); lData.Text = Data; lHora.Text = this.Hora.Substring(0, 5); lDuracao.Text = String.Format("{0} minutos", servico.duracao); lValor.Text = String.Format("{0:C}", servico.valor); }
protected void btnExcluirServico(object sender, EventArgs e) { try { int ID_Item = Convert.ToInt32((sender as LinkButton).CommandArgument); Servicos s = new Servicos(); ServicosDAL sd = new ServicosDAL(); sd.Excluir(ID_Item); lblMensagem.Text = "Tarefa excluída com sucesso!"; ListarGrid(); } catch (Exception ex) { lblMensagem.Text = ex.Message; } }
public void Carregar(object codigo) { Servico = CtrlServico.BuscarPorID(codigo) as Servicos; txtCodFornecedor.Text = Convert.ToString(Servico.Funcionario.codigo); txtFuncionario.Text = Convert.ToString(Servico.Funcionario.funcionario); txtCodigo.Text = Convert.ToString(Servico.codigo); txtServico.Text = Servico.servico; txtComissao.Text = Convert.ToString(Servico.comissao); txtPrecoVenda.Text = Convert.ToString(Servico.precoVenda); txtObservacao.Text = Servico.observacoes; txtDtCadastro.Text = Convert.ToString(Servico.dtCadastro); txtDtAlteracao.Text = Convert.ToString(Servico.dtAlteracao); txtUsuario.Text = Servico.usuario; btnSalvar.Text = "ALTERAR"; }
public IActionResult Post([FromBody] Servicos servicos) { try { if (ModelState.IsValid) { _servicosRepository.AddServicos(servicos); return(Ok(servicos)); } else { return(BadRequest()); } } catch (Exception ex) { return(StatusCode(500, ex.Message)); } }
public void Editar(Servicos servicoPassado) { using (WebsiteDaSaudeContext ctx = new WebsiteDaSaudeContext()) { var servicoBuscado = ctx.Servicos.FirstOrDefault(x => x.IdServico == servicoPassado.IdServico); if (servicoBuscado == null) { throw new Exception("Serviço não encontrado."); } else { servicoBuscado.IdCategoria = servicoPassado.IdCategoria; servicoBuscado.NomeServico = servicoPassado.NomeServico; ctx.Update(servicoBuscado); ctx.SaveChanges(); } } }
public void AddServicos(Servicos servicos) { using IDbConnection dbConnection = Connection; try { string sQuery = @"INSERT INTO SERVICOS (Protocolo,Descricao,TipoServico,Preco,DataServico) VALUES (@Protocolo,@Descricao,@TipoServico,@Preco,@DataServico)"; dbConnection.Open(); dbConnection.Execute(sQuery, servicos); } catch (Exception ex) { throw ex; } finally { dbConnection.Close(); } }
private void botaoSalvar_Click(object sender, RoutedEventArgs e) { Servicos s = new Servicos(cdUsuario); bool v = false; if (op == 0) { v = s.CadastrarServicos(campoNome.Text, campoDesc.Text); } else if (op == 1) { v = s.AlterarServicos(id, campoNome.Text, campoDesc.Text); } else if (op == 2) { Dictionary <string, string> pesquisa = new Dictionary <string, string>(); if (campoNome.Text != "") { pesquisa.Add("nmServico", campoNome.Text); } if (campoDesc.Text != "") { pesquisa.Add("dsServico", campoDesc.Text); } if (pesquisa.Count > 0) { string cmdText = "select cdServico 'Código', nmServico 'Serviço', dsServico 'Descrição' from tbServico where "; foreach (var filtro in pesquisa) { cmdText += filtro.Key + " like '" + filtro.Value + "%' and "; } cmdText = cmdText.Substring(0, cmdText.Length - 5); listaSer.DataContext = Connect.LiteConnection(cmdText); AtivarCampos(false); } } if (v) { Atualizar(); AtivarCampos(false); } }
/// <summary> /// Retorna o nome do método da classe de serviço - NFe /// </summary> /// <param name="servico">Servico</param> /// <param name="cUF">Código da UF</param> /// <param name="versao">Versão do XML</param> /// <returns>nome do método da classe de serviço</returns> private string NomeMetodoWSNFe(Servicos servico, int cUF, string versao) { string retorna = string.Empty; string cUFeVersao = cUF.ToString().Trim() + "|" + versao; switch (servico) { #region NF-e case Servicos.NFeInutilizarNumeros: retorna = "nfeInutilizacaoNF2"; break; case Servicos.NFePedidoConsultaSituacao: retorna = "nfeConsultaNF2"; break; case Servicos.NFeConsultaStatusServico: switch (cUFeVersao) { case "29|3.10": //Bahia - XML versão 3.10 retorna = "NfeStatusServicoNF"; break; default: retorna = "nfeStatusServicoNF2"; break; } break; case Servicos.NFePedidoSituacaoLote: retorna = "nfeRetRecepcao2"; break; case Servicos.NFePedidoSituacaoLote2: switch (cUFeVersao) { case "29|3.10": //Bahia - XML versão 3.10 retorna = "NfeRetAutorizacaoLote"; break; default: retorna = "nfeRetAutorizacaoLote"; break; } break; case Servicos.ConsultaCadastroContribuinte: retorna = "consultaCadastro2"; break; case Servicos.NFeEnviarLote2: switch (cUFeVersao) { case "29|3.10": //Bahia - XML versão 3.10 retorna = "NfeAutorizacaoLote"; break; default: retorna = "nfeAutorizacaoLote"; break; } break; case Servicos.NFeEnviarLoteZip2: switch (cUFeVersao) { case "29|3.10": //Bahia - XML versão 3.10 retorna = "NfeAutorizacaoLoteZip"; break; default: retorna = "nfeAutorizacaoLoteZip"; break; } break; case Servicos.NFeEnviarLote: retorna = "nfeRecepcaoLote2"; break; case Servicos.EventoCCe: case Servicos.EventoCancelamento: case Servicos.EventoManifestacaoDest: case Servicos.EventoRecepcao: retorna = "nfeRecepcaoEvento"; break; #endregion #region MDF-e case Servicos.MDFeConsultaStatusServico: retorna = "mdfeStatusServicoMDF"; break; case Servicos.MDFeEnviarLote: retorna = "mdfeRecepcaoLote"; break; case Servicos.MDFePedidoSituacaoLote: retorna = "mdfeRetRecepcao"; break; case Servicos.MDFePedidoConsultaSituacao: retorna = "mdfeConsultaMDF"; break; case Servicos.MDFeRecepcaoEvento: retorna = "mdfeRecepcaoEvento"; break; #endregion #region CT-e case Servicos.CTeConsultaStatusServico: retorna = "cteStatusServicoCT"; break; case Servicos.CTeEnviarLote: retorna = "cteRecepcaoLote"; break; case Servicos.CTePedidoSituacaoLote: retorna = "cteRetRecepcao"; break; case Servicos.CTePedidoConsultaSituacao: retorna = "cteConsultaCT"; break; case Servicos.CTeInutilizarNumeros: retorna = "cteInutilizacaoCT"; break; case Servicos.CTeRecepcaoEvento: retorna = "cteRecepcaoEvento"; break; #endregion default: break; } return retorna; }
protected string NomeMetodoWS(Servicos servico, int cUF) { return NomeMetodoWS(servico, cUF, ""); }
/// <summary> /// Envia o XML de consulta do registro do DPEC para o SCE (Sistema de Contingência Eletronica) /// </summary> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 19/10/2010 /// </remarks> /// #if notused public override void ConsultaDPEC() { // throw new NotImplementedException(); int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.ConsultarDPEC; try { //Ler o XML para pegar parâmetros de envio LerXML oLer = new LerXML(); oLer.ConsDPEC(emp, NomeArquivoXML); if (vXmlNfeDadosMsgEhXML) //danasa 12-9-2009 { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.ConsultarDPEC, emp, 0, oLer.dadosConsDPEC.tpAmb, oLer.dadosConsDPEC.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oRecepcaoDPEC = wsProxy.CriarObjeto("SCEConsultaRFB"); object oCabecMsg = wsProxy.CriarObjeto("sceCabecMsg"); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLConsDPEC); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oRecepcaoDPEC, "sceConsultaDPEC", oCabecMsg, this); //Ler o retorno LerRetConsDPEC(emp); //Gravar o XML retornado pelo WebService do SEFAZ na pasta de retorno para o ERP //Tem que ser feito neste ponto, pois somente aqui terminamos todo o processo oGerarXML.XmlRetorno(Propriedade.ExtEnvio.ConsDPEC_XML, Propriedade.ExtRetorno.retConsDPEC_XML, vStrXmlRetorno); } else { // Gerar o XML de solicitacao de situacao do servico a partir do TXT gerado pelo ERP oGerarXML.ConsultaDPEC(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml", oLer.dadosConsDPEC); } } catch (Exception ex) { var ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.ExtEnvio.ConsDPEC_XML : Propriedade.ExtEnvio.ConsDPEC_TXT; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.retConsDPEC_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 09/03/2010 } } }
/// <summary> /// Metodo responsável por invocar o serviço do WebService do SEFAZ /// </summary> /// <param name="wsProxy">Objeto da classe construida do WSDL</param> /// <param name="servicoWS">Objeto da classe de envio do XML</param> /// <param name="metodo">Método da classe de envio do XML que faz o envio</param> /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param> /// <param name="servicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param> /// <param name="finalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param> /// <param name="finalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 17/03/2010 /// </remarks> public void InvocarNFSe(WebServiceProxy wsProxy, object servicoWS, string metodo, string cabecMsg, object servicoNFe, string finalArqEnvio, string finalArqRetorno, PadroesNFSe padraoNFSe, Servicos servicoNFSe) { int emp = Empresas.FindEmpresaByThread(); XmlDocument docXML = new XmlDocument(); // Definir o tipo de serviço da NFe Type typeServicoNFe = servicoNFe.GetType(); // Resgatar o nome do arquivo XML a ser enviado para o webservice string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, servicoNFe, null)); // Exclui o Arquivo de Erro Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(XmlNfeDadosMsg, finalArqEnvio + ".xml") + finalArqRetorno + ".err"); // Validar o Arquivo XML ValidarXML validar = new ValidarXML(XmlNfeDadosMsg, Empresas.Configuracoes[emp].UnidadeFederativaCodigo); string cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg); if (cResultadoValidacao != "") { switch (padraoNFSe) { case PadroesNFSe.ISSONLINE4R: break; case PadroesNFSe.SMARAPD: break; default: throw new Exception(cResultadoValidacao); } } // Montar o XML de Lote de envio de Notas fiscais docXML.Load(XmlNfeDadosMsg); // Definir Proxy if (ConfiguracaoApp.Proxy) if (padraoNFSe != PadroesNFSe.BETHA) { wsProxy.SetProp(servicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto)); } else { wsProxy.Betha.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto); } // Limpa a variável de retorno string strRetorno = string.Empty; //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009 //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento. if (padraoNFSe != PadroesNFSe.BETHA) wsProxy.SetProp(servicoWS, "Timeout", 120000); //Verificar antes se tem conexão com a internet, se não tiver já gera uma exceção no padrão já esperado pelo ERP if (ConfiguracaoApp.ChecarConexaoInternet) //danasa: 12/2013 if (!Functions.IsConnectedToInternet()) { //Registrar o erro da validação para o sistema ERP throw new ExceptionSemInternet(ErroPadrao.FalhaInternet, "\r\nArquivo: " + XmlNfeDadosMsg); } //Invocar o membro switch (padraoNFSe) { #region Padrão BETHA case PadroesNFSe.BETHA: switch (metodo) { case "ConsultarSituacaoLoteRps": strRetorno = wsProxy.Betha.ConsultarSituacaoLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarLoteRps": strRetorno = wsProxy.Betha.ConsultarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "CancelarNfse": strRetorno = wsProxy.Betha.CancelarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarNfse": strRetorno = wsProxy.Betha.ConsultarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarNfsePorRps": strRetorno = wsProxy.Betha.ConsultarNfsePorRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "RecepcionarLoteRps": strRetorno = wsProxy.Betha.RecepcionarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; } break; #endregion #region Padrão ISSONLINE case PadroesNFSe.ISSONLINE: int operacao; string senhaWs = Functions.GetMD5Hash(Empresas.Configuracoes[emp].SenhaWS); switch (servicoNFSe) { case Servicos.NFSeRecepcionarLoteRps: operacao = 1; break; case Servicos.NFSeCancelar: operacao = 2; break; default: operacao = 3; break; } strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Convert.ToSByte(operacao), Empresas.Configuracoes[emp].UsuarioWS, senhaWs, docXML.OuterXml }); break; #endregion #region Padrão Blumenau-SC case PadroesNFSe.BLUMENAU_SC: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { 1, docXML.OuterXml }); break; #endregion #region Padrão Paulistana case PadroesNFSe.PAULISTANA: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { 1, docXML.OuterXml }); break; #endregion #region Demais padrões case PadroesNFSe.TECNOSISTEMAS: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml, cabecMsg.ToString() }); break; case PadroesNFSe.SMARAPD: if (metodo == "nfdEntradaCancelar") strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), docXML.OuterXml }); else strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), Empresas.Configuracoes[emp].UnidadeFederativaCodigo, docXML.OuterXml }); break; case PadroesNFSe.ISSWEB: string versao = docXML.DocumentElement.GetElementsByTagName("Versao")[0].InnerText; string cnpj = docXML.DocumentElement.GetElementsByTagName("CNPJCPFPrestador")[0].InnerText; strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { cnpj, docXML.OuterXml, versao }); break; case PadroesNFSe.GINFES: case PadroesNFSe.THEMA: case PadroesNFSe.SALVADOR_BA: case PadroesNFSe.CANOAS_RS: case PadroesNFSe.ISSNET: default: if (string.IsNullOrEmpty(cabecMsg)) strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml }); else strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { cabecMsg.ToString(), docXML.OuterXml }); break; #endregion } #region gerar arquivos assinados(somente debug) #if DEBUG string path = Application.StartupPath + "\\teste_assintura\\"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } StreamWriter sw = new StreamWriter(path + "nfseMsg_assinado.xml", true); sw.Write(docXML.OuterXml); sw.Close(); StreamWriter sw2 = new StreamWriter(path + "cabecMsg_assinado.xml", true); sw2.Write(cabecMsg.ToString()); sw2.Close(); #endif #endregion //Atualizar o atributo do serviço da Nfe com o conteúdo retornado do webservice do sefaz typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, servicoNFe, new object[] { strRetorno }); // Registra o retorno de acordo com o status obtido if (finalArqEnvio != string.Empty && finalArqRetorno != string.Empty) { typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, servicoNFe, new Object[] { finalArqEnvio + ".xml", finalArqRetorno + ".xml" }); } }
public static WebServiceProxy DefinirWS(Servicos servico, Core.Empresa emp, int cUF, int tpAmb, int tpEmis, PadroesNFSe padraoNFSe) { WebServiceProxy wsProxy = null; string key = servico + " " + cUF + " " + tpAmb + " " + tpEmis; while (true) { if (emp.WSProxy.ContainsKey(key)) { wsProxy = emp.WSProxy[key]; } else { //Definir a URI para conexão com o Webservice string Url = ConfiguracaoApp.DefLocalWSDL(cUF, tpAmb, tpEmis, servico); wsProxy = new WebServiceProxy(Url, emp.X509Certificado, padraoNFSe); emp.WSProxy.Add(key, wsProxy); } break; } return wsProxy; }
/// <summary> /// Construtor /// </summary> /// <param name="service">nome do servico que esta indisponivel para o ambiente</param> public ServicoInexistenteHomologacaoException(Servicos service) { _Service = EnumHelper.GetDescription(service); }
protected bool IsUtilizaCompilacaoWs(PadroesNFSe padrao, Servicos servico = Servicos.Nulo) { bool retorno = true; switch (padrao) { case PadroesNFSe.MGM: case PadroesNFSe.ELOTECH: case PadroesNFSe.GOVDIGITAL: case PadroesNFSe.EL: case PadroesNFSe.EGOVERNE: case PadroesNFSe.IPM: case PadroesNFSe.SYSTEMPRO: case PadroesNFSe.SIGCORP_SIGISS: case PadroesNFSe.FIORILLI: case PadroesNFSe.CONAM: case PadroesNFSe.SIMPLISS: case PadroesNFSe.RLZ_INFORMATICA: retorno = false; break; case PadroesNFSe.FISSLEX: switch (servico) { case Servicos.NFSeConsultarPorRps: case Servicos.NFSeConsultar: case Servicos.NFSeConsultarSituacaoLoteRps: case Servicos.NFSeConsultarLoteRps: retorno = false; break; default: retorno = true; break; } break; } return retorno; }
/// <summary> /// Retorna o nome da classe do serviço passado por parâmetro do WebService do SEFAZ - NFe /// </summary> /// <param name="servico">Servico</param> /// <param name="cUF">Código da UF</param> /// <param name="versao">Versão do XML</param> /// <returns>Nome da classe</returns> private string NomeClasseWSNFe(Servicos servico, int cUF, string versao) { string retorna = string.Empty; string cUFeVersao = cUF.ToString().Trim() + "|" + versao.Trim(); switch (servico) { #region NF-e case Servicos.NFeInutilizarNumeros: retorna = "NfeInutilizacao2"; break; case Servicos.NFePedidoConsultaSituacao: retorna = "NfeConsulta2"; break; case Servicos.NFeConsultaStatusServico: switch (cUFeVersao) { case "29|3.10": //Bahia - XML versão 3.10 retorna = "NfeStatusServico"; break; default: retorna = "NfeStatusServico2"; break; } break; case Servicos.NFePedidoSituacaoLote: retorna = "NfeRetRecepcao2"; break; case Servicos.NFePedidoSituacaoLote2: retorna = "NfeRetAutorizacao"; break; case Servicos.ConsultaCadastroContribuinte: retorna = "CadConsultaCadastro2"; break; case Servicos.NFeEnviarLote: retorna = "NfeRecepcao2"; break; case Servicos.NFeEnviarLote2: retorna = "NfeAutorizacao"; break; case Servicos.NFeEnviarLoteZip2: retorna = "NfeAutorizacao"; break; case Servicos.EventoRecepcao: case Servicos.EventoCancelamento: case Servicos.EventoManifestacaoDest: case Servicos.EventoCCe: //danasa 2/7/2011 case Servicos.EventoEPEC: retorna = "RecepcaoEvento"; break; case Servicos.NFeConsultaNFDest: retorna = "NFeConsultaDest"; break; case Servicos.NFeDownload: retorna = "NfeDownloadNF"; break; #endregion #region MDF-e case Servicos.MDFeConsultaStatusServico: retorna = "MDFeStatusServico"; break; case Servicos.MDFeEnviarLote: retorna = "MDFeRecepcao"; break; case Servicos.MDFePedidoSituacaoLote: retorna = "MDFeRetRecepcao"; break; case Servicos.MDFePedidoConsultaSituacao: retorna = "MDFeConsulta"; break; case Servicos.MDFeRecepcaoEvento: retorna = "MDFeRecepcaoEvento"; break; #endregion #region CT-e case Servicos.CTeConsultaStatusServico: retorna = "CteStatusServico"; break; case Servicos.CTeEnviarLote: retorna = "CteRecepcao"; break; case Servicos.CTePedidoSituacaoLote: retorna = "CteRetRecepcao"; break; case Servicos.CTePedidoConsultaSituacao: retorna = "CteConsulta"; break; case Servicos.CTeInutilizarNumeros: retorna = "CteInutilizacao"; break; case Servicos.CTeRecepcaoEvento: if (cUF == 31) //Minas Gerais (MG) retorna = "RecepcaoEvento"; else retorna = "CteRecepcaoEvento"; break; #endregion } return retorna; }
protected string NomeClasseWS(Servicos servico, int cUF) { return xNomeClasseWS(servico, cUF, ""); }
/// <summary> /// Busca no WebService da NFe a situação da nota fiscal enviada /// </summary> /// <remarks> /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo /// XML com o retorno que foi dado do serviço do WebService. /// No caso do RetRecepcao se tudo estiver correto retorna um XML /// dizendo que o lote foi processado ou não e se as notas foram /// autorizadas ou não. /// Se der algum erro ele grava um arquivo txt com o erro em questão. /// </remarks> /// <example> /// oUniNfe.vXmlNfeDadosMsg = "c:\teste-ped-rec.xml"; /// oUniNfe.RetRecepcao(); /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno; /// // /// // /// //O conteúdo de retorno vai ser algo mais ou menos assim: /// // /// //<?xml version="1.0" encoding="UTF-8"?> /// // <retEnviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10"> /// // <tpAmb>2</tpAmb> /// // <verAplic>1.10</verAplic> /// // <cStat>103</cStat> /// // <xMotivo>Lote recebido com sucesso</xMotivo> /// // <cUF>51</cUF> /// // <infRec> /// // <nRec>510000000106704</nRec> /// // <dhRecbto>2008-06-12T10:49:30</dhRecbto> /// // <tMed>2</tMed> /// // </infRec> /// // </retEnviNFe> /// </example> /// <by>Wandrey Mundin Ferreira</by> /// <date>04/06/2008</date> /// #if notused public override void RetRecepcao() { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.PedidoSituacaoLoteNFe; try { #region Parte do código que envia o XML de pedido de consulta do recibo var oLer = new LerXML(); oLer.PedRec(NomeArquivoXML); //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.PedidoSituacaoLoteNFe, emp, oLer.oDadosPedRec.cUF, oLer.oDadosPedRec.tpAmb, oLer.oDadosPedRec.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ var oCancelamento = wsProxy.CriarObjeto(NomeClasseWS(Servico, oLer.oDadosPedRec.cUF)); var oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS()); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedRec.cUF.ToString()); wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLPedRec); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oCancelamento, NomeMetodoWS(Servico, oLer.oDadosPedRec.cUF), oCabecMsg, this); #endregion #region Parte do código que trata o XML de retorno da consulta do recibo //Efetuar a leituras das notas do lote para ver se foi autorizada ou não switch (Propriedade.TipoAplicativo) { case TipoAplicativo.Cte: LerRetornoLoteCTe(); break; case TipoAplicativo.Nfe: LerRetornoLoteNFe(); break; default: break; } //Gravar o XML retornado pelo WebService do SEFAZ na pasta de retorno para o ERP //Tem que ser feito neste ponto, pois somente aqui terminamos todo o processo //Wandrey 18/06/2009 oGerarXML.XmlRetorno(Propriedade.ExtEnvio.PedRec_XML, Propriedade.ExtRetorno.ProRec_XML, vStrXmlRetorno); #endregion } catch (Exception ex) { try { GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedRec_XML, Propriedade.ExtRetorno.ProRec_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Pois ocorreu algum erro de rede, hd, permissão das pastas, etc. Wandrey 22/03/2010 } } finally { //Deletar o arquivo de solicitação do serviço Functions.DeletarArquivo(NomeArquivoXML); } }
/// <summary> /// Envia o XML de inutilização de numeração de notas fiscais /// </summary> /// <remarks> /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo /// XML com o retorno que foi dado do serviço do WebService. /// No caso da Inutilização se tudo estiver correto retorna um XML /// dizendo se foi inutilizado corretamente ou não. /// Se der algum erro ele grava um arquivo txt com o erro em questão. /// </remarks> /// <example> /// oUniNfe.vXmlNfeDadosMsg = "c:\teste-ped-sit.xml"; /// oUniNfe.Inutilizacao(); /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno; /// // /// // /// //O conteúdo de retorno vai ser algo mais ou menos assim: /// // /// //<?xml version="1.0" encoding="UTF-8" ?> /// //<retInutNFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe retInutNFe_v1.07.xsd" versao="1.07"> /// // <infInut> /// // <tpAmb>2</tpAmb> /// // <verAplic>1.10</verAplic> /// // <cStat>102</cStat> /// // <xMotivo>Inutilizacao de numero homologado</xMotivo> /// // <cUF>51</cUF> /// // <ano>08</ano> /// // <CNPJ>12345678901234</CNPJ> /// // <mod>55</mod> /// // <serie>1</serie> /// // <nNFIni>101</nNFIni> /// // <nNFFin>101</nNFFin> /// // <dhRecbto>2008-07-01T16:47:11</dhRecbto> /// // <nProt>151080000197712</nProt> /// // </infInut> /// //</retInutNFe> /// </example> /// <by>Wandrey Mundin Ferreira</by> /// <date>03/04/2009</date> #if notused public override void Inutilizacao() { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.InutilizarNumerosNFe; try { //Ler o XML para pegar parâmetros de envio LerXML oLer = new LerXML(); oLer.PedInut(NomeArquivoXML); if (this.vXmlNfeDadosMsgEhXML) //danasa 12-9-2009 { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.InutilizarNumerosNFe, emp, oLer.oDadosPedInut.cUF, oLer.oDadosPedInut.tpAmb, oLer.oDadosPedInut.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oInutilizacao = wsProxy.CriarObjeto(NomeClasseWS(Servico, oLer.oDadosPedInut.cUF)); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS()); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedInut.cUF.ToString()); wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLInut); //Criar objeto da classe de assinatura digita AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, emp, Convert.ToInt32(oLer.oDadosPedInut.cUF)); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oInutilizacao, NomeMetodoWS(Servico, oLer.oDadosPedInut.cUF), oCabecMsg, this, "-ped-inu", "-inu"); //Ler o retorno do webservice this.LerRetornoInut(); } else { oGerarXML.Inutilizacao(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml", oLer.oDadosPedInut.tpAmb, oLer.oDadosPedInut.tpEmis, oLer.oDadosPedInut.cUF, oLer.oDadosPedInut.ano, oLer.oDadosPedInut.CNPJ, oLer.oDadosPedInut.mod, oLer.oDadosPedInut.serie, oLer.oDadosPedInut.nNFIni, oLer.oDadosPedInut.nNFFin, oLer.oDadosPedInut.xJust); } } catch (Exception ex) { string ExtRet = string.Empty; if (this.vXmlNfeDadosMsgEhXML) //Se for XML ExtRet = Propriedade.ExtEnvio.PedInu_XML; else //Se for TXT ExtRet = Propriedade.ExtEnvio.PedInu_TXT; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.Inu_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { if (!this.vXmlNfeDadosMsgEhXML) //Se for o TXT para ser transformado em XML, vamos excluir o TXT depois de gerado o XML Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de inutilização, infelizmente não posso //fazer mais nada. Com certeza o uninfe sendo restabelecido novamente vai tentar enviar o mesmo //xml de inutilização para o SEFAZ. Este erro pode ocorrer por falha no HD, rede, Permissão de pastas, etc. Wandrey 23/03/2010 } } }
/// <summary> /// Envia o XML de consulta do cadastro do contribuinte para o web-service do sefaz /// </summary> /// <remark> /// Como retorno, o método atualiza a propriedade this.vNfeRetorno da classe /// com o conteúdo do retorno do WebService. /// No caso do consultaCadastro se tudo estiver correto retorna um XML /// com o resultado da consulta /// Se der algum erro ele grava um arquivo txt com a extensão .ERR com o conteúdo do erro /// </remark> /// <example> /// oUniNfe.vUF = 51; //Setar o Estado que é para efetuar a consulta /// oUniNfe.vXmlNfeDadosMsg = "c:\00000000000000-cons-cad.xml"; /// oUniNfe.ConsultaCadastro(); /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno; /// // /// //O conteúdo de retorno vai ser algo mais ou menos assim: /// // /// //<retConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01"> /// // <infCons> /// // <verAplic>SP_NFE_PL_005c</verAplic> /// // <cStat>111</cStat> /// // <xMotivo>Consulta cadastro com uma ocorrência</xMotivo> /// // <UF>SP</UF> /// // <CNPJ>00000000000000</CNPJ> /// // <dhCons>2009-01-29T10:36:33</dhCons> /// // <cUF>35</cUF> /// // <infCad> /// // <IE>000000000000</IE> /// // <CPF /> /// // <CNPJ>00000000000000</CNPJ> /// // <UF>SP</UF> /// // <cSit>1</cSit> /// // <xNome>EMPRESA DE TESTE PARA AVALIACAO DO SERVICO</xNome> /// // </infCad> /// // </infCons> /// //</retConsCad> /// </example> /// <by> /// Wandrey Mundin Ferreira /// </by> /// <date> /// 15/01/2009 /// </date> /// #if notused public override void ConsultaCadastro() { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.ConsultaCadastroContribuinte; try { //Ler o XML para pegar parâmetros de envio LerXML oLer = new LerXML(); oLer.ConsCad(NomeArquivoXML); if (this.vXmlNfeDadosMsgEhXML) //danasa 12-9-2009 { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.ConsultaCadastroContribuinte, emp, oLer.oDadosConsCad.cUF, oLer.oDadosConsCad.tpAmb, Propriedade.TipoEmissao.teNormal); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oConsCad = wsProxy.CriarObjeto(NomeClasseWS(Servico, oLer.oDadosConsCad.cUF)); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS()); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosConsCad.cUF.ToString()); wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLConsCad); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oConsCad, NomeMetodoWS(Servico, oLer.oDadosConsCad.cUF), oCabecMsg, this, "-cons-cad", "-ret-cons-cad"); } else { //Gerar o XML da consulta cadastro do contribuinte a partir do TXT gerado pelo ERP oGerarXML.ConsultaCadastro(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml", oLer.oDadosConsCad.UF, oLer.oDadosConsCad.CNPJ, oLer.oDadosConsCad.IE, oLer.oDadosConsCad.CPF); } } catch (Exception ex) { string ExtRet = string.Empty; if (this.vXmlNfeDadosMsgEhXML) //Se for XML ExtRet = Propriedade.ExtEnvio.ConsCad_XML; else //Se for TXT ExtRet = Propriedade.ExtEnvio.ConsCad_TXT; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.ConsCad_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { //Deletar o arquivo de solicitação do serviço Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de solicitação do serviço, //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar //o arquivo novamente para o webservice //Wandrey 09/03/2010 } } }
/// <summary> /// RecepcaoEvento /// </summary> public override void RecepcaoEvento() //<<<danasa 6-2011 { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe if (NomeArquivoXML.ToLower().EndsWith(Propriedade.ExtEnvio.EnvCCe_XML) || NomeArquivoXML.ToLower().EndsWith(Propriedade.ExtEnvio.EnvCCe_TXT)) Servico = Servicos.EnviarCCe; else if (NomeArquivoXML.ToLower().EndsWith(Propriedade.ExtEnvio.EnvManifestacao_XML) || NomeArquivoXML.ToLower().EndsWith(Propriedade.ExtEnvio.EnvManifestacao_TXT)) Servico = Servicos.EnviarManifestacao; else if (NomeArquivoXML.ToLower().EndsWith(Propriedade.ExtEnvio.EnvCancelamento_XML) || NomeArquivoXML.ToLower().EndsWith(Propriedade.ExtEnvio.EnvCancelamento_TXT)) Servico = Servicos.EnviarEventoCancelamento; try { //Ler o XML para pegar parâmetros de envio LerXML oLer = new LerXML(); oLer.EnvEvento(emp, NomeArquivoXML); if (vXmlNfeDadosMsgEhXML) { int currentEvento = Convert.ToInt32(oLer.oDadosEnvEvento.eventos[0].tpEvento); foreach (Evento item in oLer.oDadosEnvEvento.eventos) if (currentEvento != Convert.ToInt32(item.tpEvento)) throw new Exception(string.Format("Não é possivel mesclar tipos de eventos dentro de um mesmo xml de eventos. O tipo de evento neste xml é {0}", currentEvento)); int cOrgao = oLer.oDadosEnvEvento.eventos[0].cOrgao; if (cOrgao == 90 || cOrgao == 91) //Amb.Nacional cOrgao = Convert.ToInt32(oLer.oDadosEnvEvento.eventos[0].chNFe.Substring(0, 2));//<<< 7/2012 //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS( Servico, emp, cOrgao, oLer.oDadosEnvEvento.eventos[0].tpAmb, 1); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oRecepcaoEvento; if (oLer.oDadosEnvEvento.eventos[0].cOrgao == 52) { oRecepcaoEvento = wsProxy.CriarObjeto("NfeRecepcaoEvento"); } else { oRecepcaoEvento = wsProxy.CriarObjeto("RecepcaoEvento"); } object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS()); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "cUF", cOrgao.ToString()); switch (Servico) { case Servicos.EnviarCCe: wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLEnvCCe); break; case Servicos.EnviarEventoCancelamento: wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLEnvCancelamento); break; default: wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLEnvManifestacao); break; } //Criar objeto da classe de assinatura digital AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, emp, cOrgao);//Convert.ToInt32(oLer.oDadosEnvEvento.eventos[0].cOrgao)); //Invocar o método que envia o XML para o SEFAZ string xmlExtEnvio = string.Empty; string xmlExtRetorno = string.Empty; switch (Servico) { case Servicos.EnviarCCe: xmlExtEnvio = Propriedade.ExtEnvio.EnvCCe_XML.Replace(".xml", ""); xmlExtRetorno = Propriedade.ExtRetorno.retEnvCCe_XML.Replace(".xml", ""); break; case Servicos.EnviarEventoCancelamento: xmlExtEnvio = Propriedade.ExtEnvio.EnvCancelamento_XML.Replace(".xml", ""); xmlExtRetorno = Propriedade.ExtRetorno.retCancelamento_XML.Replace(".xml", ""); break; default: xmlExtEnvio = Propriedade.ExtEnvio.EnvManifestacao_XML.Replace(".xml", ""); xmlExtRetorno = Propriedade.ExtRetorno.retManifestacao_XML.Replace(".xml", ""); break; } oInvocarObj.Invocar(wsProxy, oRecepcaoEvento, "nfeRecepcaoEvento", oCabecMsg, this, xmlExtEnvio, xmlExtRetorno); //Ler o retorno if (Servico == Servicos.EnviarManifestacao) LerRetornoManifestacao(emp); else LerRetornoEvento(emp); } else { // Gerar o XML de eventos a partir do TXT gerado pelo ERP string xmlFileExt = string.Empty; string xmlFileExtTXT = string.Empty; switch (Servico) { case Servicos.EnviarCCe: xmlFileExt = Propriedade.ExtEnvio.EnvCCe_XML; xmlFileExtTXT = Propriedade.ExtEnvio.EnvCCe_TXT; break; case Servicos.EnviarEventoCancelamento: xmlFileExt = Propriedade.ExtEnvio.EnvCancelamento_XML; xmlFileExtTXT = Propriedade.ExtEnvio.EnvCancelamento_TXT; break; default: xmlFileExt = Propriedade.ExtEnvio.EnvManifestacao_XML; xmlFileExtTXT = Propriedade.ExtEnvio.EnvManifestacao_TXT; break; } oGerarXML.EnvioEvento(Functions.ExtrairNomeArq(NomeArquivoXML, xmlFileExtTXT) + xmlFileExt, oLer.oDadosEnvEvento); } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra string ExtRet = string.Empty; string ExtRetorno = string.Empty; switch (Servico) { case Servicos.EnviarCCe: ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.ExtEnvio.EnvCCe_XML : Propriedade.ExtEnvio.EnvCCe_TXT; ExtRetorno = Propriedade.ExtRetorno.retEnvCCe_ERR; break; case Servicos.EnviarEventoCancelamento: ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.ExtEnvio.EnvCancelamento_XML : Propriedade.ExtEnvio.EnvCancelamento_TXT; ExtRetorno = Propriedade.ExtRetorno.retCancelamento_ERR; break; default: ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.ExtEnvio.EnvManifestacao_XML : Propriedade.ExtEnvio.EnvManifestacao_TXT; ExtRetorno = Propriedade.ExtRetorno.retManifestacao_ERR; break; } if (ExtRetorno != string.Empty) GravarArqErroServico(NomeArquivoXML, ExtRet, ExtRetorno, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de evento, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 09/03/2010 } } }
/// <summary> /// Retorna o nome da classe do serviço passado por parâmetro do WebService do SEFAZ - CTe /// </summary> /// <param name="servico">Servico</param> /// <param name="cMunicipio">Código do Municipio UF</param> /// <returns>Nome da classe</returns> private string NomeMetodoWSNFSe(Servicos servico, int cMunicipio) { string retorna = string.Empty; bool taHomologacao = (Empresas.Configuracoes[Empresas.FindEmpresaByThread()].AmbienteCodigo == (int)NFe.Components.TipoAmbiente.taHomologacao); switch (Functions.PadraoNFSe(cMunicipio)) { #region ISSWEB case PadroesNFSe.ISSWEB: switch (servico) { case Servicos.NFSeConsultar: retorna = "ConsultarNotaFiscal"; break; case Servicos.NFSeCancelar: retorna = "CancelarNotaFiscalEletronica"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = taHomologacao ? "EnviarLoteNotaFiscalDeTeste" : "EnviarLoteNotaFiscal"; break; } break; #endregion #region GINFES case PadroesNFSe.GINFES: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRpsV3"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfseV3"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRpsV3"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRpsV3"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRpsV3"; break; } break; #endregion #region THEMA case PadroesNFSe.THEMA: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "consultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "consultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "consultarNfsePorRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "consultarSituacaoLoteRps"; break; case Servicos.NFSeCancelar: retorna = "cancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "recepcionarLoteRpsLimitado"; //"recepcionarLoteRps"; break; } break; #endregion #region BETHA case PadroesNFSe.BETHA: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRps"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; } break; #endregion #region CANOAS - RS (ABACO) case PadroesNFSe.CANOAS_RS: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "Execute"; break; case Servicos.NFSeConsultar: retorna = "Execute"; break; case Servicos.NFSeConsultarPorRps: retorna = "Execute"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "Execute"; break; case Servicos.NFSeCancelar: retorna = "Execute"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "Execute"; break; } break; #endregion #region ISSNET case PadroesNFSe.ISSNET: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultaNFSePorRPS"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultaSituacaoLoteRPS"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; case Servicos.NFSeConsultarURL: retorna = "ConsultarUrlVisualizacaoNfse"; break; case Servicos.NFSeConsultarURLSerie: retorna = "ConsultarUrlVisualizacaoNfseSerie"; break; } break; #endregion #region ISSONLINE case PadroesNFSe.ISSONLINE: retorna = "Execute"; break; #endregion #region Blumenau-SC case PadroesNFSe.BLUMENAU_SC: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultaLote"; break; case Servicos.NFSeConsultar: retorna = "ConsultaNFeEmitidas"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultaNFe"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultaInformacoesLote"; break; case Servicos.NFSeCancelar: retorna = "CancelamentoNFe"; break; case Servicos.NFSeRecepcionarLoteRps: if (Empresas.Configuracoes[Empresas.FindEmpresaByThread()].AmbienteCodigo == (int)NFe.Components.TipoAmbiente.taHomologacao) retorna = "TesteEnvioLoteRPS"; else retorna = "EnvioLoteRPS"; break; } break; #endregion #region BHISS case PadroesNFSe.BHISS: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRps"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRpsSincrono: retorna = "GerarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; } break; #endregion #region GIF case PadroesNFSe.GIF: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = ""; break; case Servicos.NFSeConsultar: retorna = ""; break; case Servicos.NFSeConsultarPorRps: retorna = "consultarNotaFiscal"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "obterCriticaLote"; break; case Servicos.NFSeCancelar: if (cMunicipio == 4305108) //Caxias do Sul-RS { retorna = "cancelarNotaFiscal"; } else { retorna = "anularNotaFiscal"; } break; case Servicos.NFSeRecepcionarLoteRps: retorna = "enviarLoteNotas"; break; case Servicos.NFSeConsultarNFSePNG: retorna = "obterNotasEmPNG"; break; case Servicos.NFSeInutilizarNFSe: retorna = "inutilizacao"; break; case Servicos.NFSeConsultarNFSePDF: retorna = "obterNotasEmPDF"; break; } break; #endregion #region DUETO case PadroesNFSe.DUETO: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRps"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; case Servicos.NFSeConsultarURL: retorna = ""; break; } break; #endregion #region WEBISS case PadroesNFSe.WEBISS: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRps"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; } break; #endregion #region PAULISTANA case PadroesNFSe.PAULISTANA: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultaLote"; break; case Servicos.NFSeConsultar: retorna = "ConsultaNFeEmitidas"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultaNFe"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultaInformacoesLote"; break; case Servicos.NFSeCancelar: retorna = "CancelamentoNFe"; break; case Servicos.NFSeRecepcionarLoteRps: if (Empresas.Configuracoes[Empresas.FindEmpresaByThread()].AmbienteCodigo == (int)NFe.Components.TipoAmbiente.taHomologacao) retorna = "TesteEnvioLoteRPS"; else retorna = "EnvioLoteRPS"; break; } break; #endregion #region SALVADOR_BA case PadroesNFSe.SALVADOR_BA: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRPS"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfseRPS"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRPS"; break; case Servicos.NFSeCancelar: retorna = ""; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "EnviarLoteRPS"; break; } break; #endregion #region PORTOVELHENSE case PadroesNFSe.PORTOVELHENSE: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfsePorFaixa"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = ""; break; case Servicos.NFSeCancelar: retorna = ""; //Ainda não implmentado pelo municipio somenete pelo Site - Renan break; case Servicos.NFSeRecepcionarLoteRps: retorna = "GerarNfse"; break; } break; #endregion #region PRONIN case PadroesNFSe.PRONIN: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRps"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; } break; #endregion #region ISSONLINE4R (4R Sistemas) case PadroesNFSe.ISSONLINE4R: retorna = "Execute"; break; #endregion #region DSF case PadroesNFSe.DSF: switch (servico) { case Servicos.NFSeConsultarLoteRps: if (taHomologacao) throw new NFe.Components.Exceptions.ServicoInexistenteHomologacaoException(servico); else retorna = "consultarLote"; break; case Servicos.NFSeConsultar: if (taHomologacao) throw new NFe.Components.Exceptions.ServicoInexistenteHomologacaoException(servico); else retorna = "consultarNota"; break; case Servicos.NFSeConsultarPorRps: if (taHomologacao) throw new NFe.Components.Exceptions.ServicoInexistenteHomologacaoException(servico); else retorna = "consultarNFSeRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: if (taHomologacao) throw new NFe.Components.Exceptions.ServicoInexistenteHomologacaoException(servico); else retorna = "consultarSequencialRps"; break; case Servicos.NFSeCancelar: if (taHomologacao) throw new NFe.Components.Exceptions.ServicoInexistenteHomologacaoException(servico); else retorna = "cancelar"; break; case Servicos.NFSeRecepcionarLoteRps: if (taHomologacao) if (cMunicipio.ToString().Equals("5002704")) // Campo grande - MS não tem web service de teste throw new NFe.Components.Exceptions.ServicoInexistenteHomologacaoException(servico); else retorna = "testeEnviar"; else retorna = "enviar"; break; default: throw new NFe.Components.Exceptions.ServicoInexistenteException(); } break; #endregion #region TECNOSISTEMAS case PadroesNFSe.TECNOSISTEMAS: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "mConsultaLoteRPS"; break; case Servicos.NFSeConsultar: retorna = "mConsultaNFSeServicosPrestados"; break; case Servicos.NFSeConsultarPorRps: retorna = "mConsultaNFSePorRPS"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "mConsultaNFSePorFaixa"; break; case Servicos.NFSeCancelar: retorna = "mCancelamentoNFSe"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "mEnvioLoteRPSSincrono"; break; } break; #endregion #region TIPLAN case PadroesNFSe.TIPLAN: switch (servico) { case Servicos.NFSeConsultarLoteRps: if (cMunicipio.Equals(3304201)) retorna = "ConsultarLoteRps"; else retorna = "ConsultarLoteRPS"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: if (cMunicipio.Equals(3304201)) retorna = "ConsultarNfsePorRps"; else retorna = "ConsultarNfseRPS"; break; case Servicos.NFSeConsultarSituacaoLoteRps: if (cMunicipio.Equals(3304201)) retorna = "ConsultarSituacaoLoteRps"; else retorna = "ConsultarSituacaoLoteRPS"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; } break; #endregion #region CARIOCA case PadroesNFSe.CARIOCA: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRps"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; } break; #endregion #region SIGCORP_SIGISS case PadroesNFSe.SIGCORP_SIGISS: switch (servico) { case Servicos.NFSeRecepcionarLoteRps: retorna = "GerarNota"; break; case Servicos.NFSeCancelar: retorna = "CancelarNota"; break; } break; #endregion #region SMARAPD case PadroesNFSe.SMARAPD: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = ""; break; case Servicos.NFSeConsultar: retorna = "nfdSaida"; break; case Servicos.NFSeConsultarPorRps: retorna = ""; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = ""; break; case Servicos.NFSeCancelar: retorna = "nfdEntradaCancelar"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "nfdEntrada"; break; case Servicos.NFSeConsultarURL: retorna = "urlNfd"; break; case Servicos.NFSeConsultarURLSerie: retorna = ""; break; } break; #endregion #region FINTEL case PadroesNFSe.FINTEL: switch (servico) { case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; case Servicos.NFSeRecepcionarLoteRpsSincrono: retorna = "RecepcionarLoteRpsSincrono"; break; case Servicos.NFSeGerarNfse: retorna = "GerarNfse"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfseFaixa"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarLoteNotasFiscais"; break; case Servicos.NFSeConsultarURL: retorna = ""; break; case Servicos.NFSeConsultarURLSerie: retorna = ""; break; } break; #endregion #region EQUIPLANO case PadroesNFSe.EQUIPLANO: switch (servico) { case Servicos.NFSeRecepcionarLoteRps: retorna = "esRecepcionarLoteRps"; break; case Servicos.NFSeCancelar: retorna = "esCancelarNfse"; break; case Servicos.NFSeConsultarLoteRps: retorna = "esConsultarLoteRps"; break; case Servicos.NFSeConsultarPorRps: retorna = "esConsultarNfsePorRps"; break; case Servicos.NFSeConsultar: retorna = "esConsultarNfse"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "esConsultarSituacaoLoteRps"; break; case Servicos.NFSeConsultarURL: retorna = ""; break; case Servicos.NFSeConsultarURLSerie: retorna = ""; break; } break; #endregion #region PRODATA case PadroesNFSe.PRODATA: switch (servico) { case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfsePorFaixa"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = ""; break; case Servicos.NFSeConsultarURL: retorna = ""; break; case Servicos.NFSeConsultarURLSerie: retorna = ""; break; } break; #endregion #region VVISS case PadroesNFSe.VVISS: switch (servico) { case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; case Servicos.NFSeRecepcionarLoteRpsSincrono: retorna = "RecepcionarLoteRpsSincrono"; break; case Servicos.NFSeGerarNfse: retorna = "GerarNfse"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfseFaixa"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarLoteNotasFiscais"; break; case Servicos.NFSeConsultarURL: retorna = ""; break; case Servicos.NFSeConsultarURLSerie: retorna = ""; break; } break; #endregion #region VVISS case PadroesNFSe.FISSLEX: retorna = "Execute"; break; #endregion #region NATALENSE case PadroesNFSe.NATALENSE: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRps"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; } break; #endregion } return retorna; }
/// <summary> /// Envia o XML de consulta da situação da nota fiscal /// </summary> /// <remarks> /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo /// XML com o retorno que foi dado do serviço do WebService. /// No caso da Consulta se tudo estiver correto retorna um XML /// com a situação da nota fiscal (Se autorizada ou não). /// Se der algum erro ele grava um arquivo txt com o erro em questão. /// </remarks> /// <example> /// oUniNfe.vXmlNfeDadosMsg = "c:\teste-ped-sit.xml"; /// oUniNfe.Consulta(); /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno; /// // /// // /// //O conteúdo de retorno vai ser algo mais ou menos assim: /// // /// //<?xml version="1.0" encoding="UTF-8" ?> /// // <retConsSitNFe versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe"> /// // <infProt> /// // <tpAmb>2</tpAmb> /// // <verAplic>1.10</verAplic> /// // <cStat>100</cStat> /// // <xMotivo>Autorizado o uso da NF-e</xMotivo> /// // <cUF>51</cUF> /// // <chNFe>51080612345678901234550010000001041671821888</chNFe> /// // <dhRecbto>2008-06-27T15:01:48</dhRecbto> /// // <nProt>151080000194296</nProt> /// // <digVal>WHM/TzTvF+LrdUwtwvk26qgsko0=</digVal> /// // </infProt> /// // </retConsSitNFe> /// </example> /// <by>Wandrey Mundin Ferreira</by> /// <date>04/06/2008</date> public override void Consulta() { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.PedidoConsultaSituacaoNFe; try { //Ler o XML para pegar parâmetros de envio LerXML oLer = new LerXML(); oLer.PedSit(NomeArquivoXML); if (vXmlNfeDadosMsgEhXML) { //Definir o objeto do WebService WebServiceProxy wsProxy = null; switch (Propriedade.TipoAplicativo) { case TipoAplicativo.Cte: wsProxy = ConfiguracaoApp.DefinirWS(Servicos.PedidoConsultaSituacaoNFe, emp, oLer.oDadosPedSit.cUF, oLer.oDadosPedSit.tpAmb, oLer.oDadosPedSit.tpEmis); break; case TipoAplicativo.Nfe: wsProxy = ConfiguracaoApp.DefinirWS(Servicos.PedidoConsultaSituacaoNFe, emp, oLer.oDadosPedSit.cUF, oLer.oDadosPedSit.tpAmb, oLer.oDadosPedSit.tpEmis, oLer.oDadosPedSit.versaoNFe); break; default: break; } //Criar objetos das classes dos serviços dos webservices do SEFAZ if (oLer.oDadosPedSit.versaoNFe == 1 && Propriedade.TipoAplicativo == TipoAplicativo.Nfe) { object oConsulta = null; if (oLer.oDadosPedSit.cUF == 41) oConsulta = wsProxy.CriarObjeto("NfeConsultaService"); else oConsulta = wsProxy.CriarObjeto("NfeConsulta"); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oConsulta, "nfeConsultaNF", this); } else { object oConsulta = wsProxy.CriarObjeto(NomeClasseWS(Servico, oLer.oDadosPedSit.cUF)); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS()); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedSit.cUF.ToString()); switch (Propriedade.TipoAplicativo) { case TipoAplicativo.Cte: wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLPedSit); break; case TipoAplicativo.Nfe: wsProxy.SetProp(oCabecMsg, "versaoDados", oLer.oDadosPedSit.versaoNFe == 201 ? "2.01" : ConfiguracaoApp.VersaoXMLPedSit); break; default: break; } //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oConsulta, NomeMetodoWS(Servico, oLer.oDadosPedSit.cUF), oCabecMsg, this); } //Efetuar a leitura do retorno da situação para ver se foi autorizada ou não //Na versão 1 não posso gerar o -procNfe, ou vou ter que tratar a estrutura do XML de acordo com a versão, a consulta na versão 1 é somente para obter o resultado mesmo. switch (Propriedade.TipoAplicativo) { case TipoAplicativo.Cte: LerRetornoSitCTe(oLer.oDadosPedSit.chNFe); break; case TipoAplicativo.Nfe: if (oLer.oDadosPedSit.versaoNFe != 1) LerRetornoSitNFe(oLer.oDadosPedSit.chNFe); break; default: break; } //Gerar o retorno para o ERP oGerarXML.XmlRetorno(Propriedade.ExtEnvio.PedSit_XML, Propriedade.ExtRetorno.Sit_XML, this.vStrXmlRetorno); } else { oGerarXML.Consulta(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml", oLer.oDadosPedSit.tpAmb, oLer.oDadosPedSit.tpEmis, oLer.oDadosPedSit.chNFe); } } catch (Exception ex) { string ExtRet = string.Empty; if (this.vXmlNfeDadosMsgEhXML) //Se for XML ExtRet = Propriedade.ExtEnvio.PedSit_XML; else //Se for TXT ExtRet = Propriedade.ExtEnvio.PedSit_TXT; try { GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.Sit_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de pedido da consulta da situação da NFe, infelizmente //não posso fazser mais nada, o UniNFe vai tentar mantar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 22/03/2010 } } }
protected Servicos GetTipoServicoSincrono(Servicos servico, string file, PadroesNFSe padrao) { Servicos result = servico; XmlDocument doc = new XmlDocument(); doc.Load(file); switch (padrao) { case PadroesNFSe.NaoIdentificado: break; case PadroesNFSe.GINFES: break; case PadroesNFSe.BETHA: break; case PadroesNFSe.THEMA: break; case PadroesNFSe.SALVADOR_BA: break; case PadroesNFSe.CANOAS_RS: break; case PadroesNFSe.ISSNET: break; case PadroesNFSe.ISSONLINE: break; case PadroesNFSe.BLUMENAU_SC: break; case PadroesNFSe.FINTEL: if (servico == Servicos.NFSeRecepcionarLoteRps) { switch (doc.DocumentElement.Name) { case "EnviarLoteRpsSincronoEnvio": result = Servicos.NFSeRecepcionarLoteRpsSincrono; break; case "GerarNfseEnvio": result = Servicos.NFSeGerarNfse; break; default: break; } } break; case PadroesNFSe.BHISS: if (doc.DocumentElement.Name.Equals("GerarNfseEnvio") && servico == Servicos.NFSeRecepcionarLoteRps) { result = Servicos.NFSeRecepcionarLoteRpsSincrono; } break; case PadroesNFSe.GIF: break; case PadroesNFSe.IPM: break; case PadroesNFSe.DUETO: break; case PadroesNFSe.WEBISS: break; case PadroesNFSe.PAULISTANA: break; case PadroesNFSe.PORTOVELHENSE: break; case PadroesNFSe.PRONIN: break; case PadroesNFSe.ISSONLINE4R: break; case PadroesNFSe.DSF: break; case PadroesNFSe.TECNOSISTEMAS: break; case PadroesNFSe.SYSTEMPRO: break; case PadroesNFSe.TIPLAN: break; case PadroesNFSe.CARIOCA: break; case PadroesNFSe.SIGCORP_SIGISS: break; case PadroesNFSe.SMARAPD: break; case PadroesNFSe.FIORILLI: break; case PadroesNFSe.ISSWEB: break; case PadroesNFSe.SIMPLISS: break; case PadroesNFSe.CONAM: break; case PadroesNFSe.VVISS: if (servico == Servicos.NFSeRecepcionarLoteRps) { switch (doc.DocumentElement.Name) { case "EnviarLoteRpsSincronoEnvio": result = Servicos.NFSeRecepcionarLoteRpsSincrono; break; case "GerarNfseEnvio": result = Servicos.NFSeGerarNfse; break; default: break; } } break; default: break; } return result; }
/// <summary> /// Definir o webservice que será utilizado para o envio do XML /// </summary> /// <param name="servico">Serviço que será executado</param> /// <param name="emp">Index da empresa que será executado o serviço</param> /// <param name="cUF">Código da UF</param> /// <param name="tpAmb">Código do ambiente que será acessado</param> /// <param name="tpEmis">Tipo de emissão do XML</param> /// <param name="versaoNFe">Versão da NFe (1 ou 2)</param> /// <returns>Retorna o objeto do serviço</returns> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 04/04/2011 /// </remarks> public static WebServiceProxy DefinirWS(Servicos servico, Core.Empresa emp, int cUF, int tpAmb, int tpEmis) { return DefinirWS(servico, emp, cUF, tpAmb, tpEmis, PadroesNFSe.NaoIdentificado); }
/// <summary> /// Retorna o nome da classe do serviço passado por parâmetro do WebService do SEFAZ - CTe /// </summary> /// <param name="servico">Servico</param> /// <param name="cMunicipio">Código do Municipio UF</param> /// <returns>Nome da classe</returns> private string NomeClasseWSNFSe(Servicos servico, int cMunicipio) { string retorna = string.Empty; bool taHomologacao = (Empresas.Configuracoes[Empresas.FindEmpresaByThread()].AmbienteCodigo == (int)NFe.Components.TipoAmbiente.taHomologacao); switch (Functions.PadraoNFSe(cMunicipio)) { #region GINFES case PadroesNFSe.GINFES: retorna = "ServiceGinfesImplService"; break; #endregion #region THEMA case PadroesNFSe.THEMA: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "NFSEconsulta"; break; case Servicos.NFSeConsultar: retorna = "NFSEconsulta"; break; case Servicos.NFSeConsultarPorRps: retorna = "NFSEconsulta"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "NFSEconsulta"; break; case Servicos.NFSeCancelar: retorna = "NFSEcancelamento"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "NFSEremessa"; break; } break; #endregion #region BETHA case PadroesNFSe.BETHA: switch (servico) { case Servicos.NFSeConsultar: retorna = ""; break; case Servicos.NFSeConsultarPorRps: retorna = ""; break; case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRps"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRps"; break; } break; #endregion #region CANOAS-RS (ABACO) case PadroesNFSe.CANOAS_RS: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultarLoteRps"; break; case Servicos.NFSeConsultar: retorna = "ConsultarNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultarSituacaoLoteRps"; break; case Servicos.NFSeCancelar: retorna = "CancelarNfse"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "RecepcionarLoteRPS"; break; } break; #endregion #region ISSNet case PadroesNFSe.ISSNET: retorna = "Servicos"; break; #endregion #region ISSNet case PadroesNFSe.ISSONLINE: retorna = "Nfse"; break; #endregion #region Blumenau-SC case PadroesNFSe.BLUMENAU_SC: retorna = "LoteNFe"; break; #endregion #region BHISS case PadroesNFSe.BHISS: retorna = "NfseWSService"; break; #endregion #region GIF case PadroesNFSe.GIF: retorna = "ServicosService"; break; #endregion #region DUETO case PadroesNFSe.DUETO: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "basic_INFSEConsultas"; break; case Servicos.NFSeConsultar: retorna = "basic_INFSEConsultas"; break; case Servicos.NFSeConsultarPorRps: retorna = "basic_INFSEConsultas"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "basic_INFSEConsultas"; break; case Servicos.NFSeCancelar: retorna = "basic_INFSEGeracao"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "basic_INFSEGeracao"; break; } break; #endregion #region WEBISS case PadroesNFSe.WEBISS: retorna = "NfseServices"; break; #endregion #region PAULISTANA case PadroesNFSe.PAULISTANA: retorna = "LoteNFe"; break; #endregion #region SALVADOR_BA case PadroesNFSe.SALVADOR_BA: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultaLoteRPS"; break; case Servicos.NFSeConsultar: retorna = "ConsultaNfse"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultaNfseRPS"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultaSituacaoLoteRPS"; break; case Servicos.NFSeCancelar: retorna = ""; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "EnvioLoteRPS"; break; } break; #endregion #region PORTOVELHENSE case PadroesNFSe.PORTOVELHENSE: retorna = "NfseWSService"; break; #endregion #region PRONIN case PadroesNFSe.PRONIN: switch (servico) { case Servicos.NFSeCancelar: retorna = "basic_INFSEGeracao"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "basic_INFSEGeracao"; break; default: retorna = "basic_INFSEConsultas"; break; } break; #endregion #region ISSONLINE4R (4R Sistemas) case PadroesNFSe.ISSONLINE4R: switch (servico) { case Servicos.NFSeConsultarPorRps: if (taHomologacao) retorna = "hConsultarNfsePorRps"; else retorna = "ConsultarNfsePorRps"; break; case Servicos.NFSeCancelar: if (taHomologacao) retorna = "hCancelarNfse"; else retorna = NFe.Components.Servicos.NFSeCancelar.ToString(); break; case Servicos.NFSeRecepcionarLoteRps: if (taHomologacao) retorna = "hRecepcionarLoteRpsSincrono"; else retorna = "RecepcionarLoteRpsSincrono"; break; } break; #endregion #region DSF case PadroesNFSe.DSF: retorna = "LoteRpsService"; break; #endregion #region TECNOSISTEMAS case PadroesNFSe.TECNOSISTEMAS: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultaLoteRPS"; break; case Servicos.NFSeConsultar: retorna = "ConsultaNFSeServicosPrestados"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultaNFSePorRPS"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultaNFSePorFaixa"; break; case Servicos.NFSeCancelar: retorna = "CancelamentoNFSe"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "EnvioLoteRPSSincrono"; break; } break; #endregion #region TIPLAN case PadroesNFSe.TIPLAN: retorna = "Nfse"; break; #endregion #region CARIOCA case PadroesNFSe.CARIOCA: retorna = "Nfse"; break; #endregion #region SMARAPD case PadroesNFSe.SMARAPD: switch (servico) { case Servicos.NFSeConsultarLoteRps: retorna = "ConsultaLoteRPS"; break; case Servicos.NFSeConsultar: retorna = "ConsultaNFSeServicosPrestados"; break; case Servicos.NFSeConsultarPorRps: retorna = "ConsultaNFSePorRPS"; break; case Servicos.NFSeConsultarSituacaoLoteRps: retorna = "ConsultaNFSePorFaixa"; break; case Servicos.NFSeCancelar: retorna = "CancelamentoNFSe"; break; case Servicos.NFSeRecepcionarLoteRps: retorna = "nfdEntrada"; break; } break; #endregion #region E-GOVERNE case PadroesNFSe.EGOVERNE: retorna = "WSNFSeV1001"; break; #endregion } return retorna; }
/// <summary> /// Definir o local do WSDL do webservice /// </summary> /// <param name="CodigoUF">Código da UF que é para pesquisar a URL do WSDL</param> /// <param name="tipoAmbiente">Tipo de ambiente da NFe</param> /// <param name="tipoEmissao">Tipo de Emissao da NFe</param> /// <param name="servico">Serviço da NFe que está sendo executado</param> /// <returns>Retorna a URL</returns> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 22/03/2011 /// </remarks> private static string DefLocalWSDL(int CodigoUF, int tipoAmbiente, int tipoEmissao, Servicos servico) { string WSDL = string.Empty; switch (tipoEmissao) { case Propriedade.TipoEmissao.teSVCRS: CodigoUF = 902; break; case Propriedade.TipoEmissao.teSVCSP: CodigoUF = 903; break; case Propriedade.TipoEmissao.teSCAN: CodigoUF = 900; break; default: break; } string ufNome = CodigoUF.ToString(); //danasa 20-9-2010 #region --varre a lista de webservices baseado no codigo da UF if (WebServiceProxy.webServicesList.Count == 0) throw new Exception("Lista de webservices não foi processada verifique se o arquivo 'WebService.xml' existe na pasta WSDL do UniNFe"); foreach (webServices list in WebServiceProxy.webServicesList) { if (list.ID == CodigoUF) { switch (servico) { #region NFS-e case Servicos.RecepcionarLoteRps: WSDL = (tipoAmbiente == Propriedade.TipoAmbiente.taHomologacao ? list.LocalHomologacao.RecepcionarLoteRps : list.LocalProducao.RecepcionarLoteRps); break; case Servicos.ConsultarSituacaoLoteRps: WSDL = (tipoAmbiente == Propriedade.TipoAmbiente.taHomologacao ? list.LocalHomologacao.ConsultarSituacaoLoteRps : list.LocalProducao.ConsultarSituacaoLoteRps); break; case Servicos.ConsultarNfsePorRps: WSDL = (tipoAmbiente == Propriedade.TipoAmbiente.taHomologacao ? list.LocalHomologacao.ConsultarNfsePorRps : list.LocalProducao.ConsultarNfsePorRps); break; case Servicos.ConsultarNfse: WSDL = (tipoAmbiente == Propriedade.TipoAmbiente.taHomologacao ? list.LocalHomologacao.ConsultarNfse : list.LocalProducao.ConsultarNfse); break; case Servicos.ConsultarLoteRps: WSDL = (tipoAmbiente == Propriedade.TipoAmbiente.taHomologacao ? list.LocalHomologacao.ConsultarLoteRps : list.LocalProducao.ConsultarLoteRps); break; case Servicos.CancelarNfse: WSDL = (tipoAmbiente == Propriedade.TipoAmbiente.taHomologacao ? list.LocalHomologacao.CancelarNfse : list.LocalProducao.CancelarNfse); break; case Servicos.ConsultarURLNfse: WSDL = (tipoAmbiente == Propriedade.TipoAmbiente.taHomologacao ? list.LocalHomologacao.ConsultarURLNfse : list.LocalProducao.ConsultarURLNfse); break; #endregion } if (tipoEmissao == Propriedade.TipoEmissao.teDPEC) ufNome = "DPEC"; else ufNome = "de " + list.Nome; break; } } #endregion if (string.IsNullOrEmpty(WSDL) || !File.Exists(WSDL)) { if (!File.Exists(WSDL) && !string.IsNullOrEmpty(WSDL)) switch (Propriedade.TipoAplicativo) { case TipoAplicativo.Nfse: throw new Exception("O arquivo \"" + WSDL + "\" não existe. Aconselhamos a reinstalação do UniNFSe."); } string Ambiente = string.Empty; switch (tipoAmbiente) { case Propriedade.TipoAmbiente.taProducao: Ambiente = "produção"; break; case Propriedade.TipoAmbiente.taHomologacao: Ambiente = "homologação"; break; } string errorStr = "O Estado " + ufNome + " ainda não dispõe do serviço {0} para o ambiente de " + Ambiente + "."; switch (servico) { case Servicos.CancelarNfse: case Servicos.ConsultarURLNfse: case Servicos.ConsultarLoteRps: case Servicos.ConsultarNfse: case Servicos.ConsultarNfsePorRps: case Servicos.ConsultarSituacaoLoteRps: case Servicos.RecepcionarLoteRps: throw new Exception(string.Format(errorStr, "da NFS-e")); } throw new Exception(string.Format(errorStr, "da NF-e")); } return WSDL; }
/// <summary> /// Retorna o nome da classe de cabecalho do serviço /// </summary> /// <param name="cUF">Código da UF</param> /// <param name="servico">Serviço que está sendo executado</param> /// <returns>Nome da classe de cabecalho</returns> protected string NomeClasseCabecWS(int cUF, Servicos servico) { return NomeClasseCabecWS(cUF, servico, (int)TipoEmissao.teNormal); }
/// <summary> /// Retorna o nome da classe de cabecalho do serviço de NFe /// </summary> /// <param name="cUF">Código da UF</param> /// <param name="servico">Serviço que está sendo executado</param> /// <param name="tpEmis">Tipo de emissão</param> /// <returns>nome da classe de cabecalho do serviço de NFe</returns> protected string NomeClasseCabecWS(int cUF, Servicos servico, int tpEmis) { string retorna = string.Empty; switch (servico) { #region MDFe case Servicos.MDFePedidoConsultaSituacao: case Servicos.MDFePedidoSituacaoLote: case Servicos.MDFeEnviarLote: case Servicos.MDFeConsultaStatusServico: case Servicos.MDFeRecepcaoEvento: case Servicos.MDFeConsultaNaoEncerrado: retorna = "mdfeCabecMsg"; break; #endregion #region CTe case Servicos.CTeInutilizarNumeros: case Servicos.CTePedidoConsultaSituacao: case Servicos.CTePedidoSituacaoLote: case Servicos.CTeEnviarLote: case Servicos.CTeConsultaStatusServico: case Servicos.CTeRecepcaoEvento: retorna = "cteCabecMsg"; if (cUF == 50 && tpEmis == (int)TipoEmissao.teNormal) retorna = "CTeCabecMsg"; break; #endregion #region NFe default: retorna = "nfeCabecMsg"; break; #endregion } return retorna; }
/// <summary> /// Retorna o nome do método da classe de serviço /// </summary> /// <param name="servico">Servico</param> /// <param name="cUF">Código da UF</param> /// <param name="versao">Versão do XML</param> /// <returns>nome do método da classe de serviço</returns> protected string NomeMetodoWS(Servicos servico, int cUF, string versao) { string retorna = string.Empty; retorna = NomeMetodoWSNFSe(servico, cUF); if (retorna == string.Empty) //nem seria necessário, porque estamos obtendo do wsdl retorna = NomeMetodoWSNFe(servico, cUF, versao); return retorna; }
/// <summary> /// Envia o XML de cancelamento de nota fiscal /// </summary> /// <remarks> /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo /// XML com o retorno que foi dado do serviço do WebService. /// No caso do Cancelamento se tudo estiver correto retorna um XML /// dizendo se foi cancelado corretamente ou não. /// Se der algum erro ele grava um arquivo txt com o erro em questão. /// </remarks> /// <example> /// oUniNfe.vXmlNfeDadosMsg = "c:\teste-ped-sit.xml"; /// oUniNfe.Consulta();// /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno; /// // /// //O conteúdo de retorno vai ser algo mais ou menos assim: /// // /// //<?xml version="1.0" encoding="UTF-8" ?> /// //<retCancNFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe retCancNFe_v1.07.xsd" versao="1.07"> /// // <infCanc> /// // <tpAmb>2</tpAmb> /// // <verAplic>1.10</verAplic> /// // <cStat>101</cStat> /// // <xMotivo>Cancelamento de NF-e homologado</xMotivo> /// // <cUF>51</cUF> /// // <chNFe>51080612345678901234550010000001041671821888</chNFe> /// // <dhRecbto>2008-07-01T16:37:22</dhRecbto> /// // <nProt>151080000197648</nProt> /// // </infCanc> /// //</retCancNFe> /// </example> /// <by>Wandrey Mundin Ferreira</by> /// <date>01/07/2008</date> public override void Cancelamento() { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.CancelarNFe; try { //Ler o XML para pegar parâmetros de envio LerXML oLer = new LerXML(); oLer.PedCanc(NomeArquivoXML); if (this.vXmlNfeDadosMsgEhXML) { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.CancelarNFe, emp, oLer.oDadosPedCanc.cUF, oLer.oDadosPedCanc.tpAmb, oLer.oDadosPedCanc.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oCancelamento = wsProxy.CriarObjeto(NomeClasseWS(Servico, oLer.oDadosPedCanc.cUF)); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS()); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedCanc.cUF.ToString()); wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLCanc); //Criar objeto da classe de assinatura digita AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, emp, Convert.ToInt32(oLer.oDadosPedCanc.cUF)); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oCancelamento, NomeMetodoWS(Servico, oLer.oDadosPedCanc.cUF), oCabecMsg, this, "-ped-can", "-can"); //Ler o retorno do webservice LerRetornoCanc(NomeArquivoXML); } else { //Gerar o XML de solicitação de cancelamento de uma NFe a partir do TXT Gerado pelo ERP oGerarXML.Cancelamento(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml", oLer.oDadosPedCanc.tpAmb, oLer.oDadosPedCanc.tpEmis, oLer.oDadosPedCanc.chNFe, oLer.oDadosPedCanc.nProt, oLer.oDadosPedCanc.xJust); } } catch (Exception ex) { string ExtRet = string.Empty; if (this.vXmlNfeDadosMsgEhXML) //Se for XML ExtRet = Propriedade.ExtEnvio.PedCan_XML; else //Se for TXT ExtRet = Propriedade.ExtEnvio.PedCan_TXT; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.Can_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { if (!this.vXmlNfeDadosMsgEhXML) //Se for o TXT para ser transformado em XML, vamos excluir o TXT depois de gerado o XML Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 09/03/2010 } } }
/// <summary> /// Verificar o status do Serviço da NFe do SEFAZ em questão /// </summary> /// <remark> /// Como retorno, o método atualiza a propriedade this.vNfeRetorno da classe /// com o conteúdo do retorno do WebService. /// No caso do StatusServico se tudo estiver correto retorna um XML /// dizendo que o serviço está em operação /// Se der algum erro ele grava um arquivo txt com a extensão .ERR com o conteúdo do erro /// </remark> /// <example> /// oUniNfe.vUF = 51; //Setar o Estado que é para ser verificado o status do serviço /// oUniNfe.vXmlNfeDadosMsg = "c:\pedstatus.xml"; /// oUniNfe.StatusServico(); /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno; /// // /// //O conteúdo de retorno vai ser algo mais ou menos assim: /// // /// // <?xml version="1.0" encoding="UTF-8"?> /// // <retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.07"> /// // <tpAmb>2</tpAmb> /// // <verAplic>1.10</verAplic> /// // <cStat>107</cStat> /// // <xMotivo>Servico em Operacao</xMotivo> /// // <cUF>51</cUF> /// // <dhRecbto>2008-06-12T11:16:55</dhRecbto> /// // <tMed>2</tMed> /// // </retConsStatServ> /// </example> /// <by> /// Wandrey Mundin Ferreira /// </by> /// <date> /// 01/04/2008 /// </date> #if unsed public override void StatusServico() { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.PedidoConsultaStatusServicoNFe; try { //Ler o XML para pegar parâmetros de envio var oLer = new LerXML(); oLer.PedSta(NomeArquivoXML); if (vXmlNfeDadosMsgEhXML) //danasa 12-9-2009 { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.PedidoConsultaStatusServicoNFe, emp, oLer.oDadosPedSta.cUF, oLer.oDadosPedSta.tpAmb, oLer.oDadosPedSta.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ var oStatusServico = wsProxy.CriarObjeto(NomeClasseWS(Servico, oLer.oDadosPedSta.cUF)); var oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS()); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedSta.cUF.ToString()); wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLStatusServico); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oStatusServico, NomeMetodoWS(Servico, oLer.oDadosPedSta.cUF), oCabecMsg, this, "-ped-sta", "-sta"); } else { // Gerar o XML de solicitacao de situacao do servico a partir do TXT gerado pelo ERP oGerarXML.StatusServico(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml", oLer.oDadosPedSta.tpAmb, oLer.oDadosPedSta.tpEmis, oLer.oDadosPedSta.cUF); } } catch (Exception ex) { var extRet = vXmlNfeDadosMsgEhXML ? Propriedade.ExtEnvio.PedSta_XML : Propriedade.ExtEnvio.PedSta_TXT; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra GravarArqErroServico(NomeArquivoXML, extRet, Propriedade.ExtRetorno.Sta_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { //Deletar o arquivo de solicitação do serviço Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de solicitação do serviço, //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar //o arquivo novamente para o webservice //Wandrey 09/03/2010 } } }