예제 #1
0
        public void ConsultaPorProtocolo()
        {
            var porChave = MessageBoxConfirmTuche("Sim = Por chave\nNão = Por arquivo xml");
            var chave    = string.Empty;

            if (porChave == DialogResult.Yes)
            {
                chave = InputBoxTuche("Digite a chave de acesso da MDF-e");
            }

            if (porChave == DialogResult.No)
            {
                chave = BuscarChave();
            }

            if (string.IsNullOrEmpty(chave))
            {
                MessageBoxTuche("Ops.. Não a oque fazer sem uma chave de acesso");
                return;
            }


            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var servicoConsultaProtocolo = new ConsultaProtcoloServico();
            var retorno = servicoConsultaProtocolo.ConsultaProtocolo(chave);


            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #2
0
        public void SalvarConfiguracoesXml()
        {
            var configuracaoDao      = new ConfiguracaoDao();
            var configuracaoAppTeste = new Configuracao {
                Empresa =
                {
                    Cnpj   = Cnpj,
                    Bairro = Bairro,
                    Cep    = Cep,
                    CodigoIbgeMunicipio = CodigoIbgeMunicipio,
                    Complemento         = Complemento,
                    Email             = Email,
                    InscricaoEstadual = InscricaoEstadual,
                    Logradouro        = Logradouro,
                    Nome          = Nome,
                    NomeFantasia  = NomeFantasia,
                    NomeMunicipio = NomeMunicipio,
                    Numero        = Numero,
                    SiglaUf       = SiglaUf,
                    Telefone      = Telefone,
                    RNTRC         = Rntrc
                },
                CertificadoDigital =
                {
                    CaminhoArquivo = CaminhoArquivo,
                    NumeroDeSerie  = NumeroDeSerie,
                    Senha          = Senha,
                    ManterEmCache  = ManterCertificadoEmCache
                },
                ConfigWebService =
                {
                    UfEmitente               = UfDestino,
                    Numeracao                = Numeracao,
                    Serie                    = Serie,
                    VersaoMDFeConsNaoEnc     = VersaoServico.Versao100,
                    VersaoMDFeConsulta       = VersaoServico.Versao100,
                    VersaoMDFeRecepcao       = VersaoServico.Versao100,
                    VersaoMDFeRecepcaoEvento = VersaoServico.Versao100,
                    VersaoMDFeRetRecepcao    = VersaoServico.Versao100,
                    VersaoMDFeStatusServico  = VersaoServico.Versao100,
                    CaminhoSchemas           = DiretorioSchemas,
                    TimeOut                  = TimeOut
                },
                DiretorioSalvarXml = DiretorioSalvarXml,
                IsSalvarXml        = IsSalvarXml
            };

            if (AmbienteHomologacao)
            {
                configuracaoAppTeste.ConfigWebService.Ambiente = TipoAmbiente.Homologacao;
            }

            if (AmbienteProducao)
            {
                configuracaoAppTeste.ConfigWebService.Ambiente = TipoAmbiente.Producao;
            }


            configuracaoDao.SalvarConfiguracao(configuracaoAppTeste);
        }
예제 #3
0
        private static async Task InutilizacaoDeNumeracao()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();
            //CarregarConfiguracoes(config);
            var configuracaoServico = MontarConfiguracoes(config);

            var numeroInicial = int.Parse(RequisitarInput("Númeração Inicial"));
            var numeroFinal   = int.Parse(RequisitarInput("Númeração Final"));
            var ano           = int.Parse(RequisitarInput("Digite o ano, apenas os ultimos dois digitos"));
            var justificativa = RequisitarInput("Justificativa (15 digitos no minimo)");

            var configInutilizar = new ConfigInutiliza(
                config.Empresa.Cnpj,
                config.ConfigWebService.Serie,
                numeroInicial,
                numeroFinal,
                ano,
                justificativa
                );

            var statusServico = new InutilizacaoServico(configInutilizar);
            var retorno       = await statusServico.InutilizarAsync(configuracaoServico);

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #4
0
        public void InutilizacaoDeNumeracao()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var numeroInicial = int.Parse(InputBoxTuche("Númeração Inicial"));
            var numeroFinal   = int.Parse(InputBoxTuche("Númeração Final"));
            var ano           = int.Parse(InputBoxTuche("Digite o ano, apenas os ultimos dois digitos"));
            var justificativa = InputBoxTuche("Justificativa (15 digitos no minimo)");

            var configInutilizar = new ConfigInutiliza(
                config.Empresa.Cnpj,
                config.ConfigWebService.Serie,
                numeroInicial,
                numeroFinal,
                ano,
                justificativa
                );

            var statusServico = new InutilizacaoServico(configInutilizar);
            var retorno       = statusServico.Inutilizar();

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #5
0
        public void CarregarConfiguracoesMDFe()
        {
            var dao    = new ConfiguracaoDao();
            var config = dao.BuscarConfiguracao();

            if (config == null)
            {
                return;
            }

            Cnpj   = config.Empresa.Cnpj;
            Bairro = config.Empresa.Bairro;
            Cep    = config.Empresa.Cep;
            CodigoIbgeMunicipio = config.Empresa.CodigoIbgeMunicipio;
            Complemento         = config.Empresa.Complemento;
            Email             = config.Empresa.Email;
            InscricaoEstadual = config.Empresa.InscricaoEstadual;
            Logradouro        = config.Empresa.Logradouro;
            Nome          = config.Empresa.Nome;
            NomeFantasia  = config.Empresa.NomeFantasia;
            NomeMunicipio = config.Empresa.NomeMunicipio;
            Numero        = config.Empresa.Numero;
            SiglaUf       = config.Empresa.SiglaUf;
            Telefone      = config.Empresa.Telefone;
            Rntrc         = config.Empresa.RNTRC;

            Senha          = config.CertificadoDigital.Senha;
            CaminhoArquivo = config.CertificadoDigital.CaminhoArquivo;
            NumeroDeSerie  = config.CertificadoDigital.NumeroDeSerie;


            AmbienteProducao = true;

            if (config.ConfigWebService.Ambiente == TipoAmbiente.Homologacao)
            {
                AmbienteHomologacao = true;
            }

            Numeracao = config.ConfigWebService.Numeracao;
            Serie     = config.ConfigWebService.Serie;

            UfDestino = config.ConfigWebService.UfEmitente;

            VersaoMDFeConsNaoEnc     = config.ConfigWebService.VersaoMDFeConsNaoEnc;
            VersaoMDFeConsulta       = config.ConfigWebService.VersaoMDFeConsulta;
            VersaoMDFeRecepcao       = config.ConfigWebService.VersaoMDFeRecepcao;
            VersaoMDFeRecepcaoEvento = config.ConfigWebService.VersaoMDFeRecepcaoEvento;
            VersaoMDFeRetRecepcao    = config.ConfigWebService.VersaoMDFeRetRecepcao;
            VersaoMDFeStatusServico  = config.ConfigWebService.VersaoMDFeStatusServico;

            DiretorioSchemas   = config.ConfigWebService.CaminhoSchemas;
            DiretorioSalvarXml = config.DiretorioSalvarXml;
            IsSalvarXml        = config.IsSalvarXml;
            TimeOut            = 3000;

            if (config.ConfigWebService.TimeOut > 0)
            {
                TimeOut = config.ConfigWebService.TimeOut;
            }
        }
예제 #6
0
        public void EventoEncerramento1_0()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoesMDFe(config);

            MDFeEletronico mdfe;
            var            caminhoXml = BuscarArquivoXmlMDFe();

            if (caminhoXml.Contains("completo"))
            {
                var enviMDFe = MDFeEnviMDFe.LoadXmlArquivo(caminhoXml);

                mdfe = enviMDFe.MDFe;
            }
            else
            {
                mdfe = MDFeEletronico.LoadXmlArquivo(caminhoXml);
            }

            var evento = new ServicoMDFeEvento();

            var protocolo = InputBoxTuche("Digite um protocolo");

            if (string.IsNullOrEmpty(protocolo))
            {
                MessageBoxTuche("O protocolo não pode ser vazio ou nulo");
                return;
            }

            var retorno = evento.MDFeEventoEncerramentoMDFeEventoEncerramento(mdfe, 1, protocolo);

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #7
0
        public void ConsultarStatusServico2()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var statusServico = new StatusServico();
            var retorno       = statusServico.ConsultaStatus();

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #8
0
        public void ConsultaNaoEncerrados()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoesMDFe(config);

            var servicoConsultaNaoEncerrados = new ServicoMDFeConsultaNaoEncerrados();
            var retorno = servicoConsultaNaoEncerrados.MDFeConsultaNaoEncerrados(config.Empresa.Cnpj);

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #9
0
        public void ConsultaStatusServico()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoesMDFe(config);

            var servicoStatusServico = new ServicoMDFeStatusServico();
            var retorno = servicoStatusServico.MDFeStatusServico();

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #10
0
        private static async Task ConsultarStatusServico2()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var statusServico = new StatusServico();
            var retorno       = await statusServico.ConsultaStatus();

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #11
0
        public void ConsultaPorNumeroRecibo()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var numeroRecibo = InputBoxTuche("Número Recibo");

            var consultaReciboServico = new ConsultaReciboServico(numeroRecibo);
            var retorno = consultaReciboServico.Consultar();

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #12
0
        private static async Task ConsultaPorNumeroRecibo()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var numeroRecibo = RequisitarInput("Número Recibo");

            var consultaReciboServico = new ConsultaReciboServico(numeroRecibo);
            var retorno = await consultaReciboServico.Consultar();

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #13
0
        private static async Task DistribuicaoDFe()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            #region CTeDistribuicaoDFe

            var cnpj = RequisitarInput("CNPJ do destinatário do CTE:");
            if (string.IsNullOrEmpty(cnpj))
            {
                throw new Exception("O CNPJ deve ser informado!");
            }
            if (cnpj.Length != 14)
            {
                throw new Exception("O CNPJ deve conter 14 caracteres!");
            }


            var ultNSU = RequisitarInput("Ultimo NSU NSU ");
            if (string.IsNullOrEmpty(ultNSU))
            {
                ultNSU = "0";
            }

            if (int.Parse(ultNSU) < 0)
            {
                throw new Exception("ultNSU deve ser maior ou igual a 0");
            }


            var nsu = RequisitarInput("NSU faltante");
            if (string.IsNullOrEmpty(nsu))
            {
                nsu = "0";
            }

            if (int.Parse(nsu) < 0)
            {
                throw new Exception("NSU deve ser maior ou igual a 0");
            }


            var servicoCTe        = new ServicoCTeDistribuicaoDFe();
            var retornoCTeDistDFe =
                await servicoCTe.CTeDistDFeInteresse(config.Empresa.SiglaUf.ToString(), cnpj, ultNSU, nsu);

            OnSucessoSync(new RetornoEEnvio(retornoCTeDistDFe.EnvioStr, retornoCTeDistDFe.RetornoStr));

            #endregion
        }
예제 #14
0
        public void EventoCancelar()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoesMDFe(config);

            var evento = new ServicoMDFeEvento();

            MDFeEletronico mdfe;
            var            caminhoXml = BuscarArquivoXmlMDFe();

            try
            {
                var enviMDFe = MDFeEnviMDFe.LoadXmlArquivo(caminhoXml);

                mdfe = enviMDFe.MDFe;
            }
            catch
            {
                try
                {
                    mdfe = MDFeEletronico.LoadXmlArquivo(caminhoXml);
                }
                catch
                {
                    var proc = FuncoesXml.ArquivoXmlParaClasse <MDFeProcMDFe>(caminhoXml);
                    mdfe = proc.MDFe;
                }
            }

            var protocolo = InputBoxTuche("Digite um protocolo");

            if (string.IsNullOrEmpty(protocolo))
            {
                MessageBoxTuche("O protocolo não pode ser vazio ou nulo");
                return;
            }

            var justificativa = InputBoxTuche("Digite uma justificativa (minimo 15 digitos)");

            if (string.IsNullOrEmpty(justificativa))
            {
                MessageBoxTuche("A justificativa não pode ser vazio ou nulo");
                return;
            }

            var retorno = evento.MDFeEventoCancelar(mdfe, 1, protocolo, justificativa);

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #15
0
        public void EventoIncluirCondutor()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoesMDFe(config);


            var evento = new ServicoMDFeEvento();

            MDFeEletronico mdfe;
            var            caminhoXml = BuscarArquivoXmlMDFe();

            try
            {
                var enviMDFe = MDFeEnviMDFe.LoadXmlArquivo(caminhoXml);

                mdfe = enviMDFe.MDFe;
            }
            catch
            {
                try
                {
                    mdfe = MDFeEletronico.LoadXmlArquivo(caminhoXml);
                }
                catch
                {
                    var proc = FuncoesXml.ArquivoXmlParaClasse <MDFeProcMDFe>(caminhoXml);
                    mdfe = proc.MDFe;
                }
            }

            var nomeCondutor = InputBoxTuche("Nome condutor");
            var cpfCondutor  = InputBoxTuche("Cpf condutor");

            if (string.IsNullOrEmpty(nomeCondutor))
            {
                MessageBoxTuche("Nome do condutor não pode ser vazio ou nulo");
                return;
            }

            if (string.IsNullOrEmpty(cpfCondutor))
            {
                MessageBoxTuche("CPF do condutor não pode ser vazio ou nulo");
                return;
            }

            var retorno = evento.MDFeEventoIncluirCondutor(mdfe, 1, nomeCondutor, cpfCondutor);

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #16
0
        public void EventoPagamentoOperacaoTransporte()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoesMDFe(config);

            var            evento = new ServicoMDFeEvento();
            MDFeEletronico mdfe;
            var            caminhoXml = BuscarArquivoXmlMDFe();

            try
            {
                var enviMDFe = MDFeEnviMDFe.LoadXmlArquivo(caminhoXml);
                mdfe = enviMDFe.MDFe;
            }
            catch
            {
                try
                {
                    mdfe = MDFeEletronico.LoadXmlArquivo(caminhoXml);
                }
                catch
                {
                    var proc = FuncoesXml.ArquivoXmlParaClasse <MDFeProcMDFe>(caminhoXml);
                    mdfe = proc.MDFe;
                }
            }
            var protocolo  = InputBoxTuche("Protocolo");
            var qtdViagens = InputBoxTuche("Código do Município de Carregamento");
            var nroViagem  = InputBoxTuche("Nome do Município de Carregamento");

            if (string.IsNullOrEmpty(qtdViagens))
            {
                MessageBoxTuche("A quantidade de viagens não pode ser vazia ou nula");
                return;
            }
            if (string.IsNullOrEmpty(nroViagem))
            {
                MessageBoxTuche("Numero de referencia da viagem não pode ser vazio ou nulo");
                return;
            }

            var retorno = evento.MDFeEventoPagamentoOperacaoTransporte(mdfe, 1, protocolo, int.Parse(qtdViagens), int.Parse(nroViagem));

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #17
0
        public void EventoDesacordoCTe()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var cnpj            = (InputBoxTuche("CNPJ Tomador"));
            var chave           = (InputBoxTuche("Chave CTe"));
            var sequenciaEvento = int.Parse(InputBoxTuche("Sequencia Evento"));
            var indPres         = InputBoxTuche("Indicador da prestação (1)");
            var obs             = InputBoxTuche("Observação (mínimo 15 digitos)");

            var servico = new EventoDesacordo(sequenciaEvento, chave, cnpj, indPres, obs);
            var retorno = servico.Discordar();

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #18
0
        private static async Task EventoDesacordoCTe()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var cnpj            = RequisitarInput("CNPJ Tomador");
            var chave           = RequisitarInput("Chave CTe");
            var sequenciaEvento = int.Parse(RequisitarInput("Sequencia Evento"));
            var indPres         = RequisitarInput("Indicador da prestação (1)");
            var obs             = RequisitarInput("Observação (mínimo 15 digitos)");

            var servico = new EventoDesacordo(sequenciaEvento, chave, cnpj, indPres, obs);
            var retorno = await servico.Discordar();

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #19
0
        public void ConsultaPorRecibo()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoesMDFe(config);

            var recibo = InputBoxTuche("Digite o recibo");

            if (string.IsNullOrEmpty(recibo))
            {
                MessageBoxTuche("Recibo inválido");
                return;
            }

            var servicoRecibo = new ServicoMDFeRetRecepcao();
            var retorno       = servicoRecibo.MDFeRetRecepcao(recibo);

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #20
0
        private static async Task ConsultaPorProtocolo()
        {
            Console.WriteLine("1 - Por chave");
            Console.WriteLine("2 - Por arquivo xml");
            var    option = Console.ReadLine();
            string chave;

            switch (Convert.ToInt32(option))
            {
            case 1:
                Console.WriteLine("Digite a chave de acesso da CT-e:");
                chave = Console.ReadLine();
                break;

            case 2:
                chave = BuscarChave();
                break;

            default:
                Console.WriteLine("Opção inválida!");
                return;
            }


            if (string.IsNullOrEmpty(chave))
            {
                Console.WriteLine("Ops.. Não há o que fazer sem uma chave de acesso.");
                return;
            }


            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var servicoConsultaProtocolo = new ConsultaProtcoloServico();
            var retorno = await servicoConsultaProtocolo.ConsultaProtocolo(chave);


            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #21
0
        public void CartaCorrecao()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var caminho = BuscarArquivoXml();

            // aqui estou fazendo um load no lote de ct-e
            var cte = enviCTe.LoadXmlArquivo(caminho).CTe[0];

            // aqui estou fazendo um load no xml de envio de um ct-e
            //var cte = CteEletronico.LoadXmlArquivo(caminho);

            var sequenciaEvento = int.Parse(InputBoxTuche("Sequencia Evento"));


            // correções adicionadas.. não disponibilizei tela, mas serve como exemplo
            // como vemos a correção é bem diferente da nf-e
            var correcoes = new List <infCorrecao>
            {
                new infCorrecao
                {
                    campoAlterado = "nro",
                    grupoAlterado = "enderRem",
                    valorAlterado = "170"
                },
                new infCorrecao
                {
                    campoAlterado = "fone",
                    grupoAlterado = "rem",
                    valorAlterado = "14991001000"
                }
            };

            var servico = new EventoCartaCorrecao(cte, sequenciaEvento, correcoes);
            var retorno = servico.AdicionarCorrecoes();

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #22
0
        public void EventoCancelarCTe()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var caminho = BuscarArquivoXml();

            // aqui estou fazendo um load no lote de ct-e
            var cte = enviCTe.LoadXmlArquivo(caminho).CTe[0];

            // aqui estou fazendo um load no xml de envio de um ct-e
            //var cte = CteEletronico.LoadXmlArquivo(caminho);

            var sequenciaEvento = int.Parse(InputBoxTuche("Sequencia Evento"));
            var protocolo       = InputBoxTuche("Protocolo");
            var justificativa   = InputBoxTuche("Justificativa mínimo 15 digitos vlw");

            var servico = new EventoCancelamento(cte, sequenciaEvento, protocolo, justificativa);
            var retorno = servico.Cancelar();

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #23
0
        private static async Task EventoCancelarCTe()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();
            //CarregarConfiguracoes(config);
            var configuracaoServico = MontarConfiguracoes(config);

            var caminho = BuscarArquivoXml();

            // aqui estou fazendo um load no lote de ct-e
            var cte = enviCTe.LoadXmlArquivo(caminho).CTe[0];

            // aqui estou fazendo um load no xml de envio de um ct-e
            //var cte = CteEletronico.LoadXmlArquivo(caminho);

            var sequenciaEvento = int.Parse(RequisitarInput("Sequencia Evento"));
            var protocolo       = RequisitarInput("Protocolo");
            var justificativa   = RequisitarInput("Justificativa mínimo 15 digitos vlw");

            var servico = new EventoCancelamento(cte, sequenciaEvento, protocolo, justificativa);
            var retorno = await servico.CancelarAsync(configuracaoServico);

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #24
0
        public void CriarEnviarCTe2e3()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var cteEletronico = new CteEletronico();

            #region infCte

            cteEletronico.infCte        = new infCte();
            cteEletronico.infCte.versao = config.ConfigWebService.Versao;

            #endregion

            #region ide

            cteEletronico.infCte.ide       = new ide();
            cteEletronico.infCte.ide.cUF   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.cCT   = GetRandom();
            cteEletronico.infCte.ide.CFOP  = 5353;
            cteEletronico.infCte.ide.natOp = "PRESTAÇÃO DE SERVICO DE TRANSPORTE CT-E EXEMPLO";

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.ide.forPag = forPag.Pago;
            }
            cteEletronico.infCte.ide.mod     = ModeloDocumento.CTe;
            cteEletronico.infCte.ide.serie   = config.ConfigWebService.Serie;
            cteEletronico.infCte.ide.nCT     = config.ConfigWebService.Numeracao;
            cteEletronico.infCte.ide.dhEmi   = DateTimeOffset.Now;
            cteEletronico.infCte.ide.tpImp   = tpImp.Retrado;
            cteEletronico.infCte.ide.tpEmis  = tpEmis.teNormal;
            cteEletronico.infCte.ide.tpAmb   = config.ConfigWebService.Ambiente; // o serviço adicionara automaticamente isso para você
            cteEletronico.infCte.ide.tpCTe   = tpCTe.Normal;
            cteEletronico.infCte.ide.procEmi = procEmi.AplicativoContribuinte;
            cteEletronico.infCte.ide.verProc = "0.0.0.1";
            cteEletronico.infCte.ide.cMunEnv = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunEnv = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFEnv   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.modal   = modal.rodoviario;
            cteEletronico.infCte.ide.tpServ  = tpServ.normal;
            cteEletronico.infCte.ide.cMunIni = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunIni = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFIni   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.cMunFim = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunFim = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFFim   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.retira  = retira.Nao;

            if (config.ConfigWebService.Versao == versao.ve300)
            {
                cteEletronico.infCte.ide.indIEToma = indIEToma.ContribuinteIcms;
            }

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.ide.tomaBase3 = new toma03
                {
                    toma = toma.Remetente
                };
            }

            if (config.ConfigWebService.Versao == versao.ve300)
            {
                cteEletronico.infCte.ide.tomaBase3 = new toma3
                {
                    toma = toma.Remetente
                };
            }


            #endregion

            #region emit

            cteEletronico.infCte.emit       = new emit();
            cteEletronico.infCte.emit.CNPJ  = config.Empresa.Cnpj;
            cteEletronico.infCte.emit.IE    = config.Empresa.InscricaoEstadual;
            cteEletronico.infCte.emit.xNome = config.Empresa.Nome;
            cteEletronico.infCte.emit.xFant = config.Empresa.NomeFantasia;

            cteEletronico.infCte.emit.enderEmit         = new enderEmit();
            cteEletronico.infCte.emit.enderEmit.xLgr    = config.Empresa.Logradouro;
            cteEletronico.infCte.emit.enderEmit.nro     = config.Empresa.Numero;
            cteEletronico.infCte.emit.enderEmit.xCpl    = config.Empresa.Complemento;
            cteEletronico.infCte.emit.enderEmit.xBairro = config.Empresa.Bairro;
            cteEletronico.infCte.emit.enderEmit.cMun    = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.emit.enderEmit.xMun    = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.emit.enderEmit.CEP     = long.Parse(config.Empresa.Cep);
            cteEletronico.infCte.emit.enderEmit.UF      = config.Empresa.SiglaUf;
            cteEletronico.infCte.emit.enderEmit.fone    = config.Empresa.Telefone;

            #endregion

            // Remetente , no caso adicionei os mesmos dados do emitente.. mas seriam o do remente.
            #region rem
            cteEletronico.infCte.rem       = new rem();
            cteEletronico.infCte.rem.CNPJ  = config.Empresa.Cnpj;
            cteEletronico.infCte.rem.IE    = config.Empresa.InscricaoEstadual;
            cteEletronico.infCte.rem.xNome = config.Empresa.Nome;
            cteEletronico.infCte.rem.xFant = config.Empresa.NomeFantasia;
            cteEletronico.infCte.rem.fone  = config.Empresa.Telefone;

            cteEletronico.infCte.rem.enderReme         = new enderReme();
            cteEletronico.infCte.rem.enderReme.xLgr    = config.Empresa.Logradouro;
            cteEletronico.infCte.rem.enderReme.nro     = config.Empresa.Numero;
            cteEletronico.infCte.rem.enderReme.xCpl    = config.Empresa.Complemento;
            cteEletronico.infCte.rem.enderReme.xBairro = config.Empresa.Bairro;
            cteEletronico.infCte.rem.enderReme.cMun    = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.rem.enderReme.xMun    = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.rem.enderReme.CEP     = long.Parse(config.Empresa.Cep);
            cteEletronico.infCte.rem.enderReme.UF      = config.Empresa.SiglaUf;
            #endregion

            // Destinatário
            #region dest

            cteEletronico.infCte.dest       = new dest();
            cteEletronico.infCte.dest.CNPJ  = config.Empresa.Cnpj;
            cteEletronico.infCte.dest.IE    = config.Empresa.InscricaoEstadual;
            cteEletronico.infCte.dest.xNome = config.Empresa.Nome;
            cteEletronico.infCte.dest.fone  = config.Empresa.Telefone;

            cteEletronico.infCte.dest.enderDest         = new enderDest();
            cteEletronico.infCte.dest.enderDest.xLgr    = config.Empresa.Logradouro;
            cteEletronico.infCte.dest.enderDest.nro     = config.Empresa.Numero;
            cteEletronico.infCte.dest.enderDest.xCpl    = config.Empresa.Complemento;
            cteEletronico.infCte.dest.enderDest.xBairro = config.Empresa.Bairro;
            cteEletronico.infCte.dest.enderDest.cMun    = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.dest.enderDest.xMun    = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.dest.enderDest.CEP     = long.Parse(config.Empresa.Cep);
            cteEletronico.infCte.dest.enderDest.UF      = config.Empresa.SiglaUf;

            #endregion

            #region vPrest

            cteEletronico.infCte.vPrest         = new vPrest();
            cteEletronico.infCte.vPrest.vTPrest = 100m;
            cteEletronico.infCte.vPrest.vRec    = 100m;

            #endregion

            #region imp

            cteEletronico.infCte.imp      = new imp();
            cteEletronico.infCte.imp.ICMS = new ICMS();

            var icmsSimplesNacional = new ICMSSN();

            cteEletronico.infCte.imp.ICMS.TipoICMS = icmsSimplesNacional;

            if (config.ConfigWebService.Versao == versao.ve300)
            {
                icmsSimplesNacional.CST = CST.ICMS90;
            }

            #endregion

            #region infCTeNorm

            cteEletronico.infCte.infCTeNorm                  = new infCTeNorm();
            cteEletronico.infCte.infCTeNorm.infCarga         = new infCarga();
            cteEletronico.infCte.infCTeNorm.infCarga.vCarga  = 1000m;
            cteEletronico.infCte.infCTeNorm.infCarga.proPred = "Linguiça com piqui";

            cteEletronico.infCte.infCTeNorm.infCarga.infQ = new List <infQ>();
            cteEletronico.infCte.infCTeNorm.infCarga.infQ.Add(new infQ
            {
                cUnid  = cUnid.KG,
                qCarga = 10000,
                tpMed  = "quilos gramas"
            });

            cteEletronico.infCte.infCTeNorm.infDoc        = new infDoc();
            cteEletronico.infCte.infCTeNorm.infDoc.infNFe = new List <infNFe>();
            cteEletronico.infCte.infCTeNorm.infDoc.infNFe.Add(new infNFe
            {
                chave = "52161021025760000123550010000087341557247948"
            });

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.infCTeNorm.seg = new List <seg>();
                cteEletronico.infCte.infCTeNorm.seg.Add(new seg
                {
                    respSeg = respSeg.Destinatario
                });
            }

            cteEletronico.infCte.infCTeNorm.infModal = new infModal();

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM200;
            }

            if (config.ConfigWebService.Versao == versao.ve300)
            {
                cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM300;
            }

            var rodoviario = new rodo();
            rodoviario.RNTRC = config.Empresa.RNTRC;

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                rodoviario.dPrev = DateTime.Now;
                rodoviario.lota  = lota.Nao;
            }


            cteEletronico.infCte.infCTeNorm.infModal.ContainerModal = rodoviario;
            #endregion


            var numeroLote = InputBoxTuche("Número Lote");

            var servicoRecepcao = new ServicoCTeRecepcao();

            // Evento executado antes do envio do CT-e para o WebService
            // servicoRecepcao.AntesDeEnviar += AntesEnviarLoteCte;

            var retornoEnvio = servicoRecepcao.CTeRecepcao(int.Parse(numeroLote), new List <CteEletronico> {
                cteEletronico
            });

            OnSucessoSync(new RetornoEEnvio(retornoEnvio));

            config.ConfigWebService.Numeracao++;
            new ConfiguracaoDao().SalvarConfiguracao(config);
        }
예제 #25
0
        public void GerarESalvar1_0()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoesMDFe(config);
            var mdfe = new ManifestoDocumentoFiscalEletronico.Classes.Informacoes.MDFe();

            #region (ide)
            mdfe.InfMDFe.Ide.CUF     = config.ConfigWebService.UfEmitente;
            mdfe.InfMDFe.Ide.TpAmb   = config.ConfigWebService.Ambiente;
            mdfe.InfMDFe.Ide.TpEmit  = MDFeTipoEmitente.PrestadorServicoDeTransporte;
            mdfe.InfMDFe.Ide.Mod     = MDFeModelo.MDFe;
            mdfe.InfMDFe.Ide.Serie   = 750;
            mdfe.InfMDFe.Ide.NMDF    = ++config.ConfigWebService.Numeracao;
            mdfe.InfMDFe.Ide.CMDF    = GetRandom();
            mdfe.InfMDFe.Ide.Modal   = MDFeModal.Rodoviario;
            mdfe.InfMDFe.Ide.DhEmi   = DateTime.Now;
            mdfe.InfMDFe.Ide.TpEmis  = MDFeTipoEmissao.Normal;
            mdfe.InfMDFe.Ide.ProcEmi = MDFeIdentificacaoProcessoEmissao.EmissaoComAplicativoContribuinte;
            mdfe.InfMDFe.Ide.VerProc = "versao28383";
            mdfe.InfMDFe.Ide.UFIni   = EstadoUF.GO;
            mdfe.InfMDFe.Ide.UFFim   = EstadoUF.MT;


            mdfe.InfMDFe.Ide.InfMunCarrega.Add(new MDFeInfMunCarrega
            {
                CMunCarrega = "5211701",
                XMunCarrega = "JANDAIA"
            });

            mdfe.InfMDFe.Ide.InfMunCarrega.Add(new MDFeInfMunCarrega
            {
                CMunCarrega = "5209952",
                XMunCarrega = "INDIARA"
            });

            mdfe.InfMDFe.Ide.InfMunCarrega.Add(new MDFeInfMunCarrega
            {
                CMunCarrega = "5200134",
                XMunCarrega = "ACREUNA"
            });

            #endregion (ide)

            #region dados emitente (emit)
            mdfe.InfMDFe.Emit.CNPJ  = config.Empresa.Cnpj;
            mdfe.InfMDFe.Emit.IE    = config.Empresa.InscricaoEstadual;
            mdfe.InfMDFe.Emit.XNome = config.Empresa.Nome;
            mdfe.InfMDFe.Emit.XFant = config.Empresa.NomeFantasia;

            mdfe.InfMDFe.Emit.EnderEmit.XLgr    = config.Empresa.Logradouro;
            mdfe.InfMDFe.Emit.EnderEmit.Nro     = config.Empresa.Numero;
            mdfe.InfMDFe.Emit.EnderEmit.XCpl    = config.Empresa.Complemento;
            mdfe.InfMDFe.Emit.EnderEmit.XBairro = config.Empresa.Bairro;
            mdfe.InfMDFe.Emit.EnderEmit.CMun    = config.Empresa.CodigoIbgeMunicipio;
            mdfe.InfMDFe.Emit.EnderEmit.XMun    = config.Empresa.NomeMunicipio;
            mdfe.InfMDFe.Emit.EnderEmit.CEP     = long.Parse(config.Empresa.Cep);
            mdfe.InfMDFe.Emit.EnderEmit.UF      = config.Empresa.SiglaUf;
            mdfe.InfMDFe.Emit.EnderEmit.Fone    = config.Empresa.Telefone;
            mdfe.InfMDFe.Emit.EnderEmit.Email   = config.Empresa.Email;
            #endregion dados emitente (emit)

            #region modal
            mdfe.InfMDFe.InfModal.Modal = new MDFeRodo
            {
                RNTRC      = config.Empresa.RNTRC,
                VeicTracao = new MDFeVeicTracao
                {
                    Placa    = "KKK9888",
                    RENAVAM  = "888888888",
                    UF       = EstadoUF.GO,
                    Tara     = 222,
                    CapM3    = 222,
                    CapKG    = 22,
                    Condutor = new List <MDFeCondutor>
                    {
                        new MDFeCondutor
                        {
                            CPF   = "11392381754",
                            XNome = "Ricardão"
                        }
                    },
                    TpRod = MDFeTpRod.Outros,
                    TpCar = MDFeTpCar.NaoAplicavel
                }
            };
            #endregion modal

            #region infMunDescarga
            mdfe.InfMDFe.InfDoc.InfMunDescarga = new List <MDFeInfMunDescarga>
            {
                new MDFeInfMunDescarga
                {
                    XMunDescarga = "CUIABA",
                    CMunDescarga = "5103403",
                    InfCTe       = new List <MDFeInfCTe>
                    {
                        new MDFeInfCTe
                        {
                            ChCTe = "52161021351378000100577500000000191194518006"
                        }
                    }
                }
            };
            #endregion infMunDescarga

            #region Totais (tot)
            mdfe.InfMDFe.Tot.QCTe   = 1;
            mdfe.InfMDFe.Tot.vCarga = 500.00m;
            mdfe.InfMDFe.Tot.CUnid  = MDFeCUnid.KG;
            mdfe.InfMDFe.Tot.QCarga = 100.0000m;
            #endregion Totais (tot)

            #region informações adicionais (infAdic)
            mdfe.InfMDFe.InfAdic = new MDFeInfAdic
            {
                InfCpl = "aaaaaaaaaaaaaaaa"
            };
            #endregion

            mdfe = mdfe.Assina();
            mdfe = mdfe.Valida();

            mdfe.SalvarXmlEmDisco();
        }
예제 #26
0
        public void EventoIncluirDFe()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoesMDFe(config);

            var            evento = new ServicoMDFeEvento();
            MDFeEletronico mdfe;
            var            caminhoXml = BuscarArquivoXmlMDFe();

            try
            {
                var enviMDFe = MDFeEnviMDFe.LoadXmlArquivo(caminhoXml);
                mdfe = enviMDFe.MDFe;
            }
            catch
            {
                try
                {
                    mdfe = MDFeEletronico.LoadXmlArquivo(caminhoXml);
                }
                catch
                {
                    var proc = FuncoesXml.ArquivoXmlParaClasse <MDFeProcMDFe>(caminhoXml);
                    mdfe = proc.MDFe;
                }
            }
            var protocolo = InputBoxTuche("Protocolo");
            var codigoMunicipioCarregamento = InputBoxTuche("Código do Município de Carregamento");
            var nomeMunicipioCarregamento   = InputBoxTuche("Nome do Município de Carregamento");
            var cmunDescarga = InputBoxTuche("Código do Município de Descarga");
            var xmunDescarga = InputBoxTuche("Nome do Município de Descarga");
            var chNFe        = InputBoxTuche("Chave da NFe");

            if (string.IsNullOrEmpty(codigoMunicipioCarregamento))
            {
                MessageBoxTuche("Código do Município de Carregamento não pode ser vazio ou nulo");
                return;
            }
            if (string.IsNullOrEmpty(nomeMunicipioCarregamento))
            {
                MessageBoxTuche("Nome do Município de Carregamento não pode ser vazio ou nulo");
                return;
            }
            if (string.IsNullOrEmpty(cmunDescarga))
            {
                MessageBoxTuche("Nome do Município de Descarga não pode ser vazio ou nulo");
                return;
            }
            if (string.IsNullOrEmpty(xmunDescarga))
            {
                MessageBoxTuche("Nome do Município de Descarga não pode ser vazio ou nulo");
                return;
            }
            if (string.IsNullOrEmpty(chNFe))
            {
                MessageBoxTuche("Chave NFe não pode ser vazio ou nulo");
                return;
            }
            var informacoesDocumentos = new List <MDFeInfDocInc>
            {
                new MDFeInfDocInc
                {
                    CMunDescarga = cmunDescarga,
                    XMunDescarga = xmunDescarga,
                    ChNFe        = chNFe
                }
            };
            var retorno = evento.MDFeEventoIncluirDFe(mdfe, 1, protocolo, codigoMunicipioCarregamento, nomeMunicipioCarregamento, informacoesDocumentos);

            OnSucessoSync(new RetornoEEnvio(retorno));
        }
예제 #27
0
        public void GerarESalvar()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoesMDFe(config);
            var mdfe = new MDFeEletronico();

            #region (ide)
            mdfe.InfMDFe.Ide.CUF     = config.ConfigWebService.UfEmitente;
            mdfe.InfMDFe.Ide.TpAmb   = config.ConfigWebService.Ambiente;
            mdfe.InfMDFe.Ide.TpEmit  = MDFeTipoEmitente.PrestadorServicoDeTransporte;
            mdfe.InfMDFe.Ide.Mod     = ModeloDocumento.MDFe;
            mdfe.InfMDFe.Ide.Serie   = 751;
            mdfe.InfMDFe.Ide.NMDF    = ++config.ConfigWebService.Numeracao;
            mdfe.InfMDFe.Ide.CMDF    = GetRandom();
            mdfe.InfMDFe.Ide.Modal   = MDFeModal.Rodoviario;
            mdfe.InfMDFe.Ide.DhEmi   = DateTime.Now;
            mdfe.InfMDFe.Ide.TpEmis  = MDFeTipoEmissao.Normal;
            mdfe.InfMDFe.Ide.ProcEmi = MDFeIdentificacaoProcessoEmissao.EmissaoComAplicativoContribuinte;
            mdfe.InfMDFe.Ide.VerProc = "versao28383";
            mdfe.InfMDFe.Ide.UFIni   = Estado.SP;
            mdfe.InfMDFe.Ide.UFFim   = Estado.MT;


            mdfe.InfMDFe.Ide.InfMunCarrega.Add(new MDFeInfMunCarrega
            {
                CMunCarrega = "5211701",
                XMunCarrega = "JANDAIA"
            });

            mdfe.InfMDFe.Ide.InfMunCarrega.Add(new MDFeInfMunCarrega
            {
                CMunCarrega = "5209952",
                XMunCarrega = "INDIARA"
            });

            mdfe.InfMDFe.Ide.InfMunCarrega.Add(new MDFeInfMunCarrega
            {
                CMunCarrega = "5200134",
                XMunCarrega = "ACREUNA"
            });

            #endregion (ide)

            #region dados emitente (emit)
            mdfe.InfMDFe.Emit.CNPJ  = config.Empresa.Cnpj;
            mdfe.InfMDFe.Emit.IE    = config.Empresa.InscricaoEstadual;
            mdfe.InfMDFe.Emit.XNome = config.Empresa.Nome;
            mdfe.InfMDFe.Emit.XFant = config.Empresa.NomeFantasia;

            mdfe.InfMDFe.Emit.EnderEmit.XLgr    = config.Empresa.Logradouro;
            mdfe.InfMDFe.Emit.EnderEmit.Nro     = config.Empresa.Numero;
            mdfe.InfMDFe.Emit.EnderEmit.XCpl    = config.Empresa.Complemento;
            mdfe.InfMDFe.Emit.EnderEmit.XBairro = config.Empresa.Bairro;
            mdfe.InfMDFe.Emit.EnderEmit.CMun    = config.Empresa.CodigoIbgeMunicipio;
            mdfe.InfMDFe.Emit.EnderEmit.XMun    = config.Empresa.NomeMunicipio;
            mdfe.InfMDFe.Emit.EnderEmit.CEP     = long.Parse(config.Empresa.Cep);
            mdfe.InfMDFe.Emit.EnderEmit.UF      = config.Empresa.SiglaUf;
            mdfe.InfMDFe.Emit.EnderEmit.Fone    = config.Empresa.Telefone;
            mdfe.InfMDFe.Emit.EnderEmit.Email   = config.Empresa.Email;
            #endregion dados emitente (emit)

            #region modal
            if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao100)
            {
                mdfe.InfMDFe.InfModal.VersaoModal = MDFeVersaoModal.Versao100;
                mdfe.InfMDFe.InfModal.Modal       = new MDFeRodo
                {
                    RNTRC      = config.Empresa.RNTRC,
                    VeicTracao = new MDFeVeicTracao
                    {
                        Placa    = "KKK9888",
                        RENAVAM  = "888888888",
                        UF       = Estado.GO,
                        Tara     = 222,
                        CapM3    = 222,
                        CapKG    = 22,
                        Condutor = new List <MDFeCondutor>
                        {
                            new MDFeCondutor
                            {
                                CPF   = "11392381754",
                                XNome = "Ricardão"
                            }
                        },
                        TpRod = MDFeTpRod.Outros,
                        TpCar = MDFeTpCar.NaoAplicavel
                    }
                };
            }


            if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300)
            {
                mdfe.InfMDFe.InfModal.VersaoModal = MDFeVersaoModal.Versao300;
                mdfe.InfMDFe.InfModal.Modal       = new MDFeRodo
                {
                    infANTT = new MDFeInfANTT
                    {
                        RNTRC = config.Empresa.RNTRC,

                        // não é obrigatorio
                        infCIOT = new List <infCIOT>
                        {
                            new infCIOT
                            {
                                CIOT = "123456789123",
                                CNPJ = "21025760000123"
                            }
                        },
                        valePed = new MDFeValePed
                        {
                            Disp = new List <MDFeDisp>
                            {
                                new MDFeDisp
                                {
                                    CNPJForn = "21025760000123",
                                    CNPJPg   = "21025760000123",
                                    NCompra  = "838388383",
                                    vValePed = 100.33m
                                }
                            }
                        }
                    },

                    VeicTracao = new MDFeVeicTracao
                    {
                        Placa    = "KKK9888",
                        RENAVAM  = "888888888",
                        UF       = Estado.GO,
                        Tara     = 222,
                        CapM3    = 222,
                        CapKG    = 22,
                        Condutor = new List <MDFeCondutor>
                        {
                            new MDFeCondutor
                            {
                                CPF   = "11392381754",
                                XNome = "Ricardão"
                            }
                        },
                        TpRod = MDFeTpRod.Outros,
                        TpCar = MDFeTpCar.NaoAplicavel
                    },

                    lacRodo = new List <MDFeLacre>
                    {
                        new MDFeLacre
                        {
                            NLacre = "lacre01"
                        }
                    }
                };
            }

            #endregion modal

            #region infMunDescarga
            mdfe.InfMDFe.InfDoc.InfMunDescarga = new List <MDFeInfMunDescarga>
            {
                new MDFeInfMunDescarga
                {
                    XMunDescarga = "CUIABA",
                    CMunDescarga = "5103403",
                    InfCTe       = new List <MDFeInfCTe>
                    {
                        new MDFeInfCTe
                        {
                            ChCTe = "52161021351378000100577500000000191194518006"
                        }
                    }
                }
            };


            if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300)
            {
                mdfe.InfMDFe.InfDoc.InfMunDescarga[0].InfCTe[0].Peri = new List <MDFePeri>
                {
                    new MDFePeri
                    {
                        NONU     = "1111",
                        QTotProd = "quantidade 20"
                    }
                };
            }

            #endregion infMunDescarga

            #region seg

            if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300)
            {
                mdfe.InfMDFe.Seg = new List <MDFeSeg>();

                mdfe.InfMDFe.Seg.Add(new MDFeSeg
                {
                    InfResp = new MDFeInfResp
                    {
                        CNPJ    = "21025760000123",
                        RespSeg = MDFeRespSeg.EmitenteDoMDFe
                    },
                    InfSeg = new MDFeInfSeg
                    {
                        CNPJ = "21025760000123",
                        XSeg = "aaaaaaaaaa"
                    },
                    NApol = "aaaaaaaaaa",
                    NAver = new List <string>
                    {
                        "aaaaaaaa"
                    }
                });
            }

            #endregion

            #region Totais (tot)
            mdfe.InfMDFe.Tot.QCTe   = 1;
            mdfe.InfMDFe.Tot.vCarga = 500.00m;
            mdfe.InfMDFe.Tot.CUnid  = MDFeCUnid.KG;
            mdfe.InfMDFe.Tot.QCarga = 100.0000m;
            #endregion Totais (tot)

            #region informações adicionais (infAdic)
            mdfe.InfMDFe.InfAdic = new MDFeInfAdic
            {
                InfCpl = "aaaaaaaaaaaaaaaa"
            };
            #endregion

            mdfe = mdfe.Assina();
            mdfe = mdfe.Valida();

            mdfe.SalvarXmlEmDisco();
        }
예제 #28
0
        private static async Task CriarEnviarCTeConsultaReciboAutomatico2e3()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            #region infCte

            var cteEletronico = new CteEletronico
            {
                infCte = new infCte
                {
                    versao = config.ConfigWebService.Versao,
                    ide    = new ide
                    {
                        cUF   = config.Empresa.SiglaUf,
                        cCT   = GetRandom(),
                        CFOP  = 5353,
                        natOp = "PRESTAÇÃO DE SERVICO DE TRANSPORTE CT-E EXEMPLO"
                    }
                }
            };

            #endregion

            #region ide

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.ide.forPag = forPag.Pago;
            }
            cteEletronico.infCte.ide.mod     = ModeloDocumento.CTe;
            cteEletronico.infCte.ide.serie   = config.ConfigWebService.Serie;
            cteEletronico.infCte.ide.nCT     = config.ConfigWebService.Numeracao;
            cteEletronico.infCte.ide.dhEmi   = DateTime.Now;
            cteEletronico.infCte.ide.tpImp   = tpImp.Retrado;
            cteEletronico.infCte.ide.tpEmis  = tpEmis.teNormal;
            cteEletronico.infCte.ide.tpAmb   = config.ConfigWebService.Ambiente; // o serviço adicionara automaticamente isso para você
            cteEletronico.infCte.ide.tpCTe   = tpCTe.Normal;
            cteEletronico.infCte.ide.procEmi = procEmi.AplicativoContribuinte;
            cteEletronico.infCte.ide.verProc = "0.0.0.1";
            cteEletronico.infCte.ide.cMunEnv = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunEnv = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFEnv   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.modal   = modal.rodoviario;
            cteEletronico.infCte.ide.tpServ  = tpServ.normal;
            cteEletronico.infCte.ide.cMunIni = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunIni = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFIni   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.cMunFim = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunFim = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFFim   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.retira  = retira.Nao;

            switch (config.ConfigWebService.Versao)
            {
            case versao.ve300:
                cteEletronico.infCte.ide.indIEToma = indIEToma.ContribuinteIcms;
                cteEletronico.infCte.ide.tomaBase3 = new toma3
                {
                    toma = toma.Remetente
                };
                break;

            case versao.ve200:
                cteEletronico.infCte.ide.tomaBase3 = new toma03
                {
                    toma = toma.Remetente
                };
                break;
            }

            #endregion

            #region emit

            cteEletronico.infCte.emit = new emit
            {
                CNPJ      = config.Empresa.Cnpj,
                IE        = config.Empresa.InscricaoEstadual,
                xNome     = config.Empresa.Nome,
                xFant     = config.Empresa.NomeFantasia,
                enderEmit = new enderEmit
                {
                    xLgr    = config.Empresa.Logradouro,
                    nro     = config.Empresa.Numero,
                    xCpl    = config.Empresa.Complemento,
                    xBairro = config.Empresa.Bairro,
                    cMun    = config.Empresa.CodigoIbgeMunicipio,
                    xMun    = config.Empresa.NomeMunicipio,
                    CEP     = long.Parse(config.Empresa.Cep),
                    UF      = config.Empresa.SiglaUf,
                    fone    = config.Empresa.Telefone
                }
            };

            #endregion

            // Remetente , no caso adicionei os mesmos dados do emitente.. mas seriam o do remente.

            #region rem

            cteEletronico.infCte.rem = new rem
            {
                CNPJ      = config.Empresa.Cnpj,
                IE        = config.Empresa.InscricaoEstadual,
                xNome     = config.Empresa.Nome,
                xFant     = config.Empresa.NomeFantasia,
                fone      = config.Empresa.Telefone,
                enderReme = new enderReme
                {
                    xLgr    = config.Empresa.Logradouro,
                    nro     = config.Empresa.Numero,
                    xCpl    = config.Empresa.Complemento,
                    xBairro = config.Empresa.Bairro,
                    cMun    = config.Empresa.CodigoIbgeMunicipio,
                    xMun    = config.Empresa.NomeMunicipio,
                    CEP     = long.Parse(config.Empresa.Cep),
                    UF      = config.Empresa.SiglaUf
                }
            };

            #endregion

            // Destinatário

            #region dest

            cteEletronico.infCte.dest = new dest
            {
                CNPJ      = config.Empresa.Cnpj,
                IE        = config.Empresa.InscricaoEstadual,
                xNome     = config.Empresa.Nome,
                fone      = config.Empresa.Telefone,
                enderDest = new enderDest
                {
                    xLgr    = config.Empresa.Logradouro,
                    nro     = config.Empresa.Numero,
                    xCpl    = config.Empresa.Complemento,
                    xBairro = config.Empresa.Bairro,
                    cMun    = config.Empresa.CodigoIbgeMunicipio,
                    xMun    = config.Empresa.NomeMunicipio,
                    CEP     = long.Parse(config.Empresa.Cep),
                    UF      = config.Empresa.SiglaUf
                }
            };

            #endregion

            #region vPrest

            cteEletronico.infCte.vPrest = new vPrest {
                vTPrest = 100m, vRec = 100m
            };

            #endregion

            #region imp

            cteEletronico.infCte.imp = new imp {
                ICMS = new ICMS()
            };

            var icmsSimplesNacional = new ICMSSN();

            cteEletronico.infCte.imp.ICMS.TipoICMS = icmsSimplesNacional;

            if (config.ConfigWebService.Versao == versao.ve300)
            {
                icmsSimplesNacional.CST = CST.ICMS90;
            }

            #endregion

            #region infCTeNorm

            cteEletronico.infCte.infCTeNorm = new infCTeNorm
            {
                infCarga = new infCarga
                {
                    vCarga  = 1000m,
                    proPred = "Linguiça com piqui",
                    infQ    = new List <infQ> {
                        new infQ {
                            cUnid = cUnid.KG, qCarga = 10000, tpMed = "quilos gramas"
                        }
                    }
                }
            };


            cteEletronico.infCte.infCTeNorm.infDoc = new infDoc
            {
                infNFe = new List <infNFe> {
                    new infNFe {
                        chave = "52161021025760000123550010000087341557247948"
                    }
                }
            };

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.infCTeNorm.seg = new List <seg> {
                    new seg {
                        respSeg = respSeg.Destinatario
                    }
                }
            }
            ;

            cteEletronico.infCte.infCTeNorm.infModal = new infModal();

            switch (config.ConfigWebService.Versao)
            {
            case versao.ve200:
                cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM200;
                break;

            case versao.ve300:
                cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM300;
                break;
            }

            var rodoviario = new rodo {
                RNTRC = config.Empresa.RNTRC
            };

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                rodoviario.dPrev = DateTime.Now;
                rodoviario.lota  = lota.Nao;
            }


            cteEletronico.infCte.infCTeNorm.infModal.ContainerModal = rodoviario;

            #endregion


            var numeroLote = RequisitarInput("Número Lote");

            var servico = new ServicoEnviarCte();

            var retorno = await servico.Enviar(Convert.ToInt32(numeroLote), cteEletronico);

            var xmlRetorno = string.Empty;

            if (retorno.CteProc != null)
            {
                xmlRetorno = retorno.CteProc.ObterXmlString();
            }

            if (retorno.RetConsReciCTe.protCTe[0].infProt.cStat != 100)
            {
                xmlRetorno = retorno.RetConsReciCTe.RetornoXmlString;
            }

            OnSucessoSync(new RetornoEEnvio(retorno.RetEnviCte.EnvioXmlString, xmlRetorno));

            config.ConfigWebService.Numeracao++;
            new ConfiguracaoDao().SalvarConfiguracao(config);
        }