예제 #1
0
 private void EncerrarMDFe()
 {
     if (bsMDFe.Current != null)
     {
         //Cancelar CTe
         if (MessageBox.Show("Confirma encerramento MDFe?", "Mensagem", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
             == DialogResult.Yes)
         {
             if ((bsMDFe.Current as TRegistro_MDFe).Id_mdfe.HasValue)//MDF-e existe no sistema
             {
                 CamadaDados.Frota.TList_MDFe_Evento lEvento =
                     CamadaNegocio.Frota.TCN_MDFe_Evento.Buscar((bsMDFe.Current as TRegistro_MDFe).Cd_empresa,
                                                                (bsMDFe.Current as TRegistro_MDFe).Id_mdfestr,
                                                                "EC",
                                                                string.Empty,
                                                                null);
                 if (lEvento.Count.Equals(0))
                 {
                     string      vColunas = "a.ds_cidade|Cidade|200;a.uf|UF|30;a.cd_cidade|Código|60;a.cd_uf|Cd. UF|60";
                     DataRowView linha    = FormBusca.UtilPesquisa.BTN_BUSCA(vColunas, null, new CamadaDados.Financeiro.Cadastros.TCD_CadCidade(), string.Empty);
                     if (linha == null)
                     {
                         MessageBox.Show("Obrigótio selecinar cidade de encerramento do MDFe.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         return;
                     }
                     //Buscar evento Encerramento
                     CamadaDados.Faturamento.Cadastros.TList_Evento lEv =
                         CamadaNegocio.Faturamento.Cadastros.TCN_Evento.Buscar(string.Empty, string.Empty, "EC", null);
                     if (lEv.Count.Equals(0))
                     {
                         MessageBox.Show("Não existe evento de ENCERRAMENTO MDFe cadastrado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         return;
                     }
                     //Encerrar MDFe Receita
                     TRegistro_MDFe_Evento rEvento = new TRegistro_MDFe_Evento();
                     rEvento.Cd_empresa       = (bsMDFe.Current as TRegistro_MDFe).Cd_empresa;
                     rEvento.Id_mdfe          = (bsMDFe.Current as TRegistro_MDFe).Id_mdfe;
                     rEvento.Chaveacesso      = (bsMDFe.Current as TRegistro_MDFe).Chaveacesso;
                     rEvento.Nr_protocoloMDFe = (bsMDFe.Current as TRegistro_MDFe).Nr_protocolo;
                     rEvento.Dt_evento        = CamadaDados.UtilData.Data_Servidor();
                     rEvento.Cd_eventostr     = lEv[0].Cd_eventostr;
                     rEvento.Ds_evento        = lEv[0].Ds_evento;
                     rEvento.Tp_evento        = lEv[0].Tp_evento;
                     rEvento.Cd_cidadeEnc     = linha["cd_cidade"].ToString();
                     rEvento.Ds_cidadeEnc     = linha["ds_cidade"].ToString();
                     rEvento.Cd_ufEnc         = linha["cd_uf"].ToString();
                     rEvento.Uf_enc           = linha["uf"].ToString();
                     rEvento.St_registro      = "A";
                     CamadaNegocio.Frota.TCN_MDFe_Evento.Gravar(rEvento, null);
                     if (MessageBox.Show("Evento de ENCERRAMENTO gravado com sucesso.\r\n" +
                                         "Deseja enviar o mesmo para a receita?", "Pergunta",
                                         MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
                         == DialogResult.Yes)
                     {
                         string msg = MDFe.Evento.TEventoMDFe.EnviarEvento(rEvento, rCfgMdfe);
                         if (!string.IsNullOrEmpty(msg))
                         {
                             MessageBox.Show("Erro ao enviar evento ENCERRAMENTO para a receita.\r\n" +
                                             "Aguarde um tempo e tente novamente.\r\n" +
                                             "Erro: " + msg.Trim() + "\r\n" +
                                             "Obs.: O MDFe não será encerrado no sistema Aliance.NET enquanto o mesmo não for encerrado na receita.",
                                             "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                         }
                         else
                         {
                             bsMDFe.RemoveCurrent();
                             MessageBox.Show("Evento registrado e vinculado a MDFe.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                             TCN_MDFe.Encerrar(bsMDFe.Current as TRegistro_MDFe, null);
                             MessageBox.Show("MDFe encerrado com sucesso no sistema Aliance.NET", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         }
                     }
                 }
                 else
                 {
                     lEvento[0].Nr_protocoloMDFe = (bsMDFe.Current as TRegistro_MDFe).Nr_protocolo;
                     string msg = MDFe.Evento.TEventoMDFe.EnviarEvento(lEvento[0], rCfgMdfe);
                     if (!string.IsNullOrEmpty(msg))
                     {
                         MessageBox.Show("Erro ao enviar evento ENCERRAMENTO para a receita.\r\n" +
                                         "Aguarde um tempo e tente novamente.\r\n" +
                                         "Erro: " + msg.Trim() + "\r\n" +
                                         "Obs.: O MDFe não será encerrado no sistema Aliance.NET enquanto o mesmo não for encerrado na receita.",
                                         "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                     }
                     else
                     {
                         bsMDFe.RemoveCurrent();
                         MessageBox.Show("Evento registrado e vinculado a MDFe.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         CamadaNegocio.Frota.TCN_MDFe.Encerrar(bsMDFe.Current as TRegistro_MDFe, null);
                         MessageBox.Show("MDFe encerrado com sucesso no sistema Aliance.NET", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     }
                 }
             }
             else //MDF-e não existe no sistema, encerrar somente na receita
             {
                 string      vColunas = "a.ds_cidade|Cidade|200;a.uf|UF|30;a.cd_cidade|Código|60;a.cd_uf|Cd. UF|60";
                 DataRowView linha    = FormBusca.UtilPesquisa.BTN_BUSCA(vColunas, null, new CamadaDados.Financeiro.Cadastros.TCD_CadCidade(), string.Empty);
                 if (linha == null)
                 {
                     MessageBox.Show("Obrigótio selecinar cidade de encerramento do MDFe.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     return;
                 }
                 //Buscar evento Encerramento
                 CamadaDados.Faturamento.Cadastros.TList_Evento lEv =
                     CamadaNegocio.Faturamento.Cadastros.TCN_Evento.Buscar(string.Empty, string.Empty, "EC", null);
                 if (lEv.Count.Equals(0))
                 {
                     MessageBox.Show("Não existe evento de ENCERRAMENTO MDFe cadastrado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     return;
                 }
                 //Encerrar MDFe Receita
                 TRegistro_MDFe_Evento rEvento = new TRegistro_MDFe_Evento();
                 rEvento.Cd_empresa       = rCfgMdfe.Cd_empresa;
                 rEvento.Chaveacesso      = (bsMDFe.Current as TRegistro_MDFe).Chaveacesso;
                 rEvento.Nr_protocoloMDFe = (bsMDFe.Current as TRegistro_MDFe).Nr_protocolo;
                 rEvento.Dt_evento        = CamadaDados.UtilData.Data_Servidor();
                 rEvento.Cd_eventostr     = lEv[0].Cd_eventostr;
                 rEvento.Ds_evento        = lEv[0].Ds_evento;
                 rEvento.Tp_evento        = lEv[0].Tp_evento;
                 rEvento.Cd_cidadeEnc     = linha["cd_cidade"].ToString();
                 rEvento.Ds_cidadeEnc     = linha["ds_cidade"].ToString();
                 rEvento.Cd_ufEnc         = linha["cd_uf"].ToString();
                 rEvento.Uf_enc           = linha["uf"].ToString();
                 rEvento.St_registro      = "A";
                 string msg = MDFe.Evento.TEventoMDFe.EnviarEncerramento(rEvento, rCfgMdfe);
                 if (!string.IsNullOrEmpty(msg))
                 {
                     MessageBox.Show("Erro ao enviar evento ENCERRAMENTO para a receita.\r\n" +
                                     "Aguarde um tempo e tente novamente.\r\n" +
                                     "Erro: " + msg.Trim() + "\r\n" +
                                     "Obs.: O MDFe não será encerrado no sistema Aliance.NET enquanto o mesmo não for encerrado na receita.",
                                     "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 }
                 else
                 {
                     bsMDFe.RemoveCurrent();
                     MessageBox.Show("Evento registrado e vinculado a MDFe.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
             }
         }
     }
 }