예제 #1
0
        private void BtnEnviaEpec_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                /*
                 * Atenção:
                 * O campo dhEmi da nfe a ser vinculada ao EPEC deve ser exatamente igual ao informado m detevento do EPEC, assim como os demais dados, como emitente, destinatário, etc.
                 * Vide a rejeição código 467 no manual do EPEC
                 */

                #region Enviar EPEC

                var idlote = Funcoes.InpuBox(this, "Enviar EPEC", "Identificador de controle do Lote de envio:");
                if (String.IsNullOrEmpty(idlote))
                {
                    throw new Exception("A Id do Lote deve ser informada!");
                }

                var sequenciaEvento = Funcoes.InpuBox(this, "Enviar EPEC", "Número sequencial do evento:");
                if (String.IsNullOrEmpty(sequenciaEvento))
                {
                    throw new Exception("O número sequencial deve ser informado!");
                }

                var numeronota = Funcoes.InpuBox(this, "Enviar EPEC", "Número da Nota:");
                if (String.IsNullOrEmpty(numeronota))
                {
                    throw new Exception("O Número da Nota deve ser informado!");
                }

                _nfe = GetNf(Convert.ToInt32(numeronota), ModeloDocumento.NFe, _configuracoes.CfgServico.VersaoNFeAutorizacao);

                var servicoNFe  = new ServicosNFe(_configuracoes.CfgServico);
                var retornoEpec = servicoNFe.RecepcaoEventoEpec(Convert.ToInt16(idlote), Convert.ToInt16(sequenciaEvento), _nfe, "3.10");
                TrataRetorno(retornoEpec);

                #endregion
            }
            catch (Exception ex)
            {
                if (!String.IsNullOrEmpty(ex.Message))
                {
                    Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
                }
            }
        }
        /// <summary>
        /// Envia EPEC para Sefaz
        /// </summary>
        /// <param name="idlote"></param>
        /// <param name="sequenciaEvento"></param>
        /// <param name="_nfe"></param>
        /// <param name="veraplic"></param>
        /// <param name="cFgServico"></param>
        /// <returns></returns>
        public RetornoRecepcaoEvento EnviarEPEC(int idlote, int sequenciaEvento, Classes.NFe _nfe, string veraplic, ConfiguracaoServico cFgServico)
        {
            var servicoNFe   = new ServicosNFe(cFgServico);
            var retornoEnvio = servicoNFe.RecepcaoEventoEpec(Convert.ToInt32(idlote), Convert.ToInt16(sequenciaEvento), _nfe, veraplic);

            foreach (var evento in retornoEnvio.ProcEventosNFe)
            {
                var proceventoXmlString = evento.ObterXmlString();

                if (evento.retEvento.infEvento.cStat == 135)
                {
                    //Salva procEventoNFe
                    this.SalvarXmlArquivo(evento.retEvento.infEvento.chNFe + "-epec", proceventoXmlString, cFgServico.tpAmb);
                }
            }

            return(retornoEnvio);
        }