Ejemplo n.º 1
0
        private const string NfeIdExterno = "xxxxxxxx";                                         //Informe o ID externo da sua NFE

        static void Main(string[] args)
        {
            Console.WriteLine("eNotasGW");
            Console.WriteLine("Informe sua Api Key:");

            var apiKey = ApiKey;

            if (string.IsNullOrEmpty(apiKey))
            {
                Console.WriteLine("Chave da api não informada, não é possível continuar!\n\nPressione qualquer tecla pra continuar...");
                Console.ReadKey();
                return;
            }

            if (!string.IsNullOrEmpty(apiKey))
            {
                Config.Configure(apiKey);
            }

            EmpresaService    empService  = new EmpresaService();
            NFeService        nfeService  = new NFeService();
            PrefeituraService prefService = new PrefeituraService();

            Console.WriteLine("");
            Console.WriteLine("Selecione uma opção:");
            Console.WriteLine("");
            Console.WriteLine("[0] - Consultar empresas");
            Console.WriteLine("");
            Console.WriteLine("[1] - Consultar empresa pelo Id");
            Console.WriteLine("");
            Console.WriteLine("[2] - Inserir/alterar empresa");
            Console.WriteLine("");
            Console.WriteLine("[3] - Emitir nota fiscal");
            Console.WriteLine("");
            Console.WriteLine("[4] - Cancelar nota fiscal");
            Console.WriteLine("");
            Console.WriteLine("[5] - Vincula um logotipo a empresa");
            Console.WriteLine("");
            Console.WriteLine("[6] - Configurar Api Key (somente a chave da Api)");
            Console.WriteLine("");
            Console.WriteLine("[7] - Configurar Api (dados padrão: Api Key, Versao, BaseEndPoint, DefaultContentType)");
            Console.WriteLine("");
            Console.WriteLine("[8] - Download do XML da nota fiscal");
            Console.WriteLine("");
            Console.WriteLine("[9] - Consultar nota fiscal");
            Console.WriteLine("");
            Console.WriteLine("[10] - Download PDF da nota fiscal");
            Console.WriteLine("");
            Console.WriteLine("[11] - Consulta serviços municipais");
            Console.WriteLine("");
            Console.WriteLine("[12] - Consulta serviços municipais unificados");
            Console.WriteLine("");
            Console.WriteLine("[13] - Consultar notas fiscais");
            Console.WriteLine("");
            Console.WriteLine("[14] - Consultar NF por Id Externo");
            Console.WriteLine("");
            Console.WriteLine("[15] - Download do XML por Id Externo");
            Console.WriteLine("");
            Console.WriteLine("[16] - Download do PDF por Id Externo");
            Console.WriteLine("");
            Console.WriteLine("[17] - Cancelar NF por Id Externo");
            Console.WriteLine();

            var opcao = Console.ReadLine();

            Console.WriteLine("");

            switch (opcao)
            {
            case "0":
                Console.WriteLine("Consultando empresas...\n");

                try
                {
                    var dataEmpresas = empService.ConsultarEmpresasAsync(1, 5, "nome_fantasia", "", "nome_fantasia", "ASC").Result;

                    if (dataEmpresas != null)
                    {
                        Console.WriteLine("Empresas encontradas: " + dataEmpresas.totalRecords.ToString() + "\n\nPressione alguma tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "1":
                Console.WriteLine("Consultando empresa...\n");

                try
                {
                    var dataEmpresa = empService.ConsultarEmpresaAsync(Guid.Parse(EmpresaId)).Result;

                    if (dataEmpresa != null)
                    {
                        Console.WriteLine("Empresa Id: " + dataEmpresa.id + "\n\nPressione alguma tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "2":

                Console.WriteLine("Incluindo/Alterando empresa...\n");

                try
                {
                    var empresa = new Empresa()
                    {
                        id   = Guid.Parse(EmpresaId),   //informar apenas se quiser atualizar uma empresa existente, se for omitido cria uma nova empresa.
                        cnpj = "99999999999999",        //sem formatação
                        inscricaoMunicipal     = "999999999",
                        inscricaoEstadual      = null,
                        razaoSocial            = "Razao Social",
                        nomeFantasia           = "Nome Fantasia",
                        optanteSimplesNacional = true,
                        email             = "*****@*****.**",
                        telefoneComercial = "99999999",
                        endereco          = new eNotasGW.Client.Lib.Models.Empresa.Endereco()
                        {
                            pais             = "Brasil",
                            uf               = "MG",
                            codigoIbgeUf     = 31,
                            cidade           = "Belo Horizonte",
                            codigoIbgeCidade = 3106200,
                            logradouro       = "R Teste",
                            numero           = "999",
                            complemento      = null,
                            bairro           = "Bairro Teste",
                            cep              = "85100000"
                        },
                        incentivadorCultural     = false,
                        regimeEspecialTributacao = "6",                                                                                                                            //A lista de valores possíveis deve ser obtida pela api de caraterísticas da prefeitura
                        codigoServicoMunicipal   = "010700188",                                                                                                                    //código do serviço municipal padrão para emissão de NFS-e
                        descricaoServico         = "SUPORTE TECNICO EM INFORMATICA, INCLUSIVE INSTALACAO, CONFIGURACAO E MANUTENCAO DE PROGRAMAS DE COMPUTACAO E BANCOS DE DADOS", //Descrição do serviço municipal padrão para emissão de NFS-e (utilizado apenas na impressão da NFS-e)
                        aliquotaIss = 2,
                        configuracoesNFSeProducao = new ConfiguracoesNFSeProducao()
                        {
                            sequencialNFe         = 1,
                            serieNFe              = "1",
                            sequencialLoteNFe     = 1,
                            tokenAcessoProvedor   = null,
                            usuarioAcessoProvedor = null
                        },
                        configuracoesNFSeHomologacao = new ConfiguracoesNFSeHomologacao()
                        {
                            sequencialNFe         = 1,
                            serieNFe              = "1",
                            sequencialLoteNFe     = 1,
                            tokenAcessoProvedor   = null,
                            usuarioAcessoProvedor = null
                        },
                    };

                    //-----------------------------
                    //CARACTERÍSTICAS DA PREFEITURA
                    //-----------------------------
                    var caracteristicaPrefeitura = prefService.ConsultaCaracteristicasAsync(empresa.endereco.codigoIbgeCidade).Result;

                    if (caracteristicaPrefeitura.usaCNAE)
                    {
                        empresa.cnae = "123456";
                    }

                    if (caracteristicaPrefeitura.usaItemListaServico)
                    {
                        empresa.itemListaServicoLC116 = "1.07";
                    }

                    var configProd     = empresa.configuracoesNFSeProducao;
                    var configHomologa = empresa.configuracoesNFSeHomologacao;

                    if (caracteristicaPrefeitura.tipoAutenticacao == (int)CaracteristicaPrefeitura.TipoAutenticacao.UsuarioESenha)
                    {
                        empresa.configuracoesNFSeProducao.usuarioAcessoProvedor = "Usuario";
                        empresa.configuracoesNFSeProducao.senhaAcessoProvedor   = "Senha";

                        //opcional, preencher apenas se for emitir em ambiente de homologação
                        empresa.configuracoesNFSeHomologacao.usuarioAcessoProvedor = "Usuario";
                        empresa.configuracoesNFSeHomologacao.senhaAcessoProvedor   = "Senha";
                    }
                    else if (caracteristicaPrefeitura.tipoAutenticacao == (int)CaracteristicaPrefeitura.TipoAutenticacao.Token)
                    {
                        empresa.configuracoesNFSeProducao.tokenAcessoProvedor    = "token";
                        empresa.configuracoesNFSeHomologacao.tokenAcessoProvedor = "token";
                    }

                    //-----------------------------
                    //INCLUSÃO/ALTERAÇÃO DA EMPRESA
                    //-----------------------------
                    var dataEmpresaId = empService.InserirAtualizarEmpresaAsync(empresa).Result;

                    if (dataEmpresaId != null)
                    {
                        //-----------------------------------------
                        //ATUALIZAÇÃO/UPLOAD DO CERTIFICADO DIGITAL
                        //-----------------------------------------
                        if (caracteristicaPrefeitura.assinaturaDigital == (int)CaracteristicaPrefeitura.TipoAssinaturaDigital.Obrigatorio ||
                            caracteristicaPrefeitura.tipoAutenticacao == (int)CaracteristicaPrefeitura.TipoAutenticacao.Certificado)
                        {
                            var pathCertificado = @"C:\ENOTAS\MeuCertificado.pfx";

                            if (!System.IO.File.Exists(pathCertificado))
                            {
                                Console.WriteLine("Certificado digital não encontrado!\nVerifique se o caminho do arquivo foi informado corretamente!\n\nPressione alguma tecla pra continuar...");
                                Console.ReadKey();
                                return;
                            }

                            var byCertificado     = File.ReadAllBytes(pathCertificado);
                            var uploadCertificado = empService.UploadCertificado(Guid.Parse(dataEmpresaId.empresaId), byCertificado, "123").Result;

                            if (uploadCertificado)
                            {
                                Console.WriteLine("Empresa incluída/alterada: " + dataEmpresaId.empresaId + "\n\nCertificado atualizado com sucesso!\n\nPressione alguma tecla pra continuar...");
                                Console.ReadKey();
                            }
                        }

                        Console.WriteLine("Empresa incluída/alterada: " + dataEmpresaId.empresaId + "\n\nPressione alguma tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "3":

                try
                {
                    var nfe = new NFe()
                    {
                        idExterno       = null, //opcional - "id de mapeamento com seu sistema"
                        ambienteEmissao = NFe.AmbienteEmissao.Homologacao,
                        numeroRps       = 1,
                        serieRps        = "RPS",
                        cliente         = new Cliente()
                        {
                            nome     = "Cliente teste",
                            email    = "*****@*****.**",
                            cpfCnpj  = "11111111111",
                            endereco = new eNotasGW.Client.Lib.Models.NFe.Endereco()
                            {
                                logradouro  = "Rua 01",
                                numero      = "112",
                                complemento = "AP 402",
                                bairro      = "Savassi",
                                cep         = "85100000",
                                uf          = "MG",
                                cidade      = "Belo Horizonte"
                            }
                        },
                        servico = new eNotasGW.Client.Lib.Models.NFe.Servico()
                        {
                            descricao   = "Discriminação do Serviço prestado",
                            valorPis    = 0,
                            valorCofins = 0,
                            valorCsll   = 0,
                            valorInss   = 0,
                            valorIr     = 0
                        },
                        valorTotal = 10
                    };

                    var dataNfeId = nfeService.EmitirNFAsync(Guid.Parse(EmpresaId), nfe).Result;

                    if (dataNfeId != null)
                    {
                        Console.WriteLine("NFS-e incluída: " + dataNfeId.nfeId + "\n\nPressione alguma tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "4":

                try
                {
                    var dataNfeId = nfeService.CancelarNFAsync(Guid.Parse(EmpresaId), Guid.Parse(NfeId)).Result;

                    if (dataNfeId != null)
                    {
                        Console.WriteLine("NFS-e cancelada com suceso: " + dataNfeId.nfeId + "\n\nPressione alguma tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "5":

                try
                {
                    var pathLogo = @"C:\ENOTAS\logo.png";

                    if (!System.IO.File.Exists(pathLogo))
                    {
                        Console.WriteLine("Arquivo não encontrado!\nVerifique se o caminho do arquivo foi informado corretamente!\n\nPressione alguma tecla pra continuar...");
                        Console.ReadKey();
                        return;
                    }

                    var byLogo   = File.ReadAllBytes(pathLogo);
                    var dataLogo = empService.UploadLogo(Guid.Parse(EmpresaId), byLogo).Result;

                    if (dataLogo)
                    {
                        Console.WriteLine("Logotipo vinculada a empresa com sucesso!\n\nPressione alguma tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "6":

                try
                {
                    Config.Configure(ApiKey);

                    Console.WriteLine("Chave da Api configurada com sucesso!\n\nPressione alguma tecla pra continuar...");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "7":

                try
                {
                    var config = new ConfiguracaoApi()
                    {
                        ApiKey             = ApiKey,
                        Versao             = "1",
                        BaseEndPoint       = "https://api.enotasgw.com.br/v",
                        DefaultContentType = "application/json"
                    };

                    Config.Configure(config);

                    Console.WriteLine("Configuração efetuada com sucesso!\n\nPressione alguma tecla pra continuar...");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "8":

                try
                {
                    var xml = nfeService.DownloadXMLAsync(Guid.Parse(EmpresaId), Guid.Parse(NfeId)).Result;

                    if (!string.IsNullOrEmpty(xml))
                    {
                        Console.WriteLine("XML: \n" + xml + "\n\nPressione qualquer tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "9":

                try
                {
                    var dataNFe = nfeService.ConsultarNFAsync(Guid.Parse(EmpresaId), Guid.Parse(NfeId)).Result;

                    if (dataNFe != null)
                    {
                        Console.WriteLine("NF Id: \n" + dataNFe.id + "\n\nPressione qualquer tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "10":

                try
                {
                    var pathPDF = @"C:\ENOTAS\";

                    if (!System.IO.Directory.Exists(pathPDF))
                    {
                        Console.WriteLine("Diretório não encontrado: " + pathPDF + "\n\nPressione alguma tecla pra continuar...");
                        Console.ReadKey();
                        return;
                    }

                    pathPDF = Path.Combine(@"C:\ENOTAS\", string.Concat(NfeId, ".pdf"));
                    var dataPDF = nfeService.DownloadPDFAsync(Guid.Parse(EmpresaId), Guid.Parse(NfeId)).Result;

                    if (dataPDF != null)
                    {
                        File.WriteAllBytes(pathPDF, dataPDF);
                        Console.WriteLine("PDF salvo em: \n" + pathPDF + "\n\nPressione qualquer tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "11":

                try
                {
                    var dataServicos = prefService.ConsultaServicoMunicipalAsync("sp", "são paulo", 1, 5, "cons").Result;

                    if (dataServicos != null)
                    {
                        Console.WriteLine("Total de registros: " + dataServicos.totalRecords.ToString() + "\n\nPressione qualquer tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "12":

                try
                {
                    var dataServicos = prefService.ConsultaCidadesServicoMunicipalUnificadoAsync(1, 5).Result;

                    if (dataServicos != null)
                    {
                        Console.WriteLine("Total de registros: " + dataServicos.totalRecords.ToString() + "\n\nPressione qualquer tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "13":

                try
                {
                    //Exemplo de como criar o parâmetro filter
                    //eq = Equals (Igual)
                    var filter     = "status eq 'Autorizada'";
                    var listaNotas = nfeService.ConsultarNFsAsync(Guid.Parse(EmpresaId), 0, 5, filter).Result;

                    if (listaNotas != null)
                    {
                        Console.WriteLine("Total de registros: " + listaNotas.totalRecords.ToString() + "\n\nPressione qualquer tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "14":

                try
                {
                    var dataNFe = nfeService.ConsultarNFporIdExternoAsync(Guid.Parse(EmpresaId), NfeIdExterno).Result;

                    if (dataNFe != null)
                    {
                        Console.WriteLine("NF Id Externo: " + dataNFe.idExterno + "\n\nPressione qualquer tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "15":

                try
                {
                    var dataXml = nfeService.DownloadXMLporIdExternoAsync(Guid.Parse(EmpresaId), NfeIdExterno).Result;

                    if (dataXml != null)
                    {
                        Console.WriteLine("XML: " + dataXml + "\n\nPressione qualquer tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "16":

                try
                {
                    var pathPDF = @"C:\ENOTAS\";

                    if (!System.IO.Directory.Exists(pathPDF))
                    {
                        Console.WriteLine("Diretório não encontrado: " + pathPDF + "\n\nPressione alguma tecla pra continuar...");
                        Console.ReadKey();
                        return;
                    }

                    pathPDF = Path.Combine(@"C:\ENOTAS\", string.Concat(NfeIdExterno, ".pdf"));
                    var dataPDF = nfeService.DownloadPDFporIdExternoAsync(Guid.Parse(EmpresaId), NfeIdExterno).Result;

                    if (dataPDF != null)
                    {
                        File.WriteAllBytes(pathPDF, dataPDF);
                        Console.WriteLine("PDF salvo em: \n" + pathPDF + "\n\nPressione qualquer tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;

            case "17":

                try
                {
                    var dataNfeId = nfeService.CancelarNFporIdExternoAsync(Guid.Parse(EmpresaId), NfeIdExterno).Result;

                    if (dataNfeId != null)
                    {
                        Console.WriteLine("NFS-e cancelada com suceso: " + dataNfeId.nfeId + "\n\nPressione alguma tecla pra continuar...");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                break;
            }

            Console.ReadKey();
        }