private void afterPrint() { if (bsMDFe.Current != null) { if (!(bsMDFe.Current as TRegistro_Lote_X_MDFe).cStat.Trim().Equals("100")) { MessageBox.Show("Permitido imprimir DAMDFE somente de MDF-e aceito pela receita.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } using (FormRelPadrao.TFGerenciadorImpressao fImp = new FormRelPadrao.TFGerenciadorImpressao()) { FormRelPadrao.Relatorio Rel = new FormRelPadrao.Relatorio(); Rel.Altera_Relatorio = Altera_Relatorio; BindingSource BinDados = new BindingSource(); BinDados.DataSource = TCN_MDFe.Buscar((bsMDFe.Current as TRegistro_Lote_X_MDFe).Cd_empresa, (bsMDFe.Current as TRegistro_Lote_X_MDFe).Id_mdfestr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, null); Rel.DTS_Relatorio = BinDados; //Buscar Empresa BindingSource bs_empresa = new BindingSource(); bs_empresa.DataSource = new CamadaDados.Diversos.TList_CadEmpresa() { empresa.SelectedItem as CamadaDados.Diversos.TRegistro_CadEmpresa }; Rel.Adiciona_DataSource("EMPRESA", bs_empresa); //Parametro RNTRC object obj_rntrc = new CamadaDados.Frota.Cadastros.TCD_CfgFrota().BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + (empresa.SelectedItem as CamadaDados.Diversos.TRegistro_CadEmpresa).Cd_empresa.Trim() + "'" } }, "a.rntrc"); if (obj_rntrc != null) { Rel.Parametros_Relatorio.Add("RNTRC", obj_rntrc.ToString()); } //Montar Parametros Veiculos TList_MDFe_Veiculo lVeic = TCN_MDFe_Veiculo.Buscar((bsMDFe.Current as TRegistro_Lote_X_MDFe).Cd_empresa, (bsMDFe.Current as TRegistro_Lote_X_MDFe).Id_mdfestr, null); if (lVeic.Count > 0) { for (int i = 0; i < lVeic.Count; i++) { if (i < 3) { Rel.Parametros_Relatorio.Add("PLACA" + (i + 1).ToString(), lVeic[i].Placa); Rel.Parametros_Relatorio.Add("RNTRC" + (i + 1).ToString(), lVeic[i].rVeic.Rntrc_prop); } else { break; } } } //Montar Parametros Motorista TList_MDFe_Motorista lMot = TCN_MDFe_Motorista.Buscar((bsMDFe.Current as TRegistro_Lote_X_MDFe).Cd_empresa, (bsMDFe.Current as TRegistro_Lote_X_MDFe).Id_mdfestr, null); int index = 0; if (lMot.Count > 0) { while (index < 6 && index < lMot.Count) { Rel.Parametros_Relatorio.Add("NOME" + (index + 1).ToString(), lMot[index].Nm_motorista.Trim()); Rel.Parametros_Relatorio.Add("CPF" + (index + 1).ToString(), lMot[index].Cpf_motorista.Trim()); index++; } } if (index < 6) { TList_MDFe_Evento lEvent = TCN_MDFe_Evento.Buscar((bsMDFe.Current as TRegistro_Lote_X_MDFe).Cd_empresa, (bsMDFe.Current as TRegistro_Lote_X_MDFe).Id_mdfestr, "IC", "T", null); if (lEvent.Count > 0) { while (index < 6 && index < lEvent.Count) { Rel.Parametros_Relatorio.Add("NOME" + (index + 1).ToString(), lEvent[index].Nm_motorista.Trim()); Rel.Parametros_Relatorio.Add("CPF" + (index + 1).ToString(), lEvent[index].Cpf_motorista.Trim()); index++; } } } //Parametros Documentos TList_MDFe_Documentos lDoc = TCN_MDFe_Documentos.Buscar((bsMDFe.Current as TRegistro_Lote_X_MDFe).Cd_empresa, (bsMDFe.Current as TRegistro_Lote_X_MDFe).Id_mdfestr, null); if (lDoc.Count > 0) { Rel.Parametros_Relatorio.Add("QTD_CTE", lDoc.Count(p => !string.IsNullOrEmpty(p.ChaveCTe))); Rel.Parametros_Relatorio.Add("QTD_NFE", lDoc.Count(p => !string.IsNullOrEmpty(p.ChaveNFe))); Rel.Parametros_Relatorio.Add("PESO", lDoc.Sum(p => p.PesoBrutoNFe)); for (int i = 0; i < lDoc.Count; i++) { if (i >= 8) { break; } else { Rel.Parametros_Relatorio.Add("CHAVE" + (i + 1).ToString(), string.IsNullOrEmpty(lDoc[i].ChaveCTe) ? lDoc[i].ChaveNFe : lDoc[i].ChaveCTe); } } } Rel.Nome_Relatorio = "TFLanMDFe_DAMDFe"; Rel.NM_Classe = "TFLanMDFe"; Rel.Modulo = "FRT"; Rel.Ident = "TFLanMDFe_DAMDFe"; fImp.St_enabled_enviaremail = true; fImp.pCd_clifor = string.Empty; fImp.pMensagem = "DAMDFe"; //Verificar se existe logo configurada para a empresa if ((empresa.SelectedItem as CamadaDados.Diversos.TRegistro_CadEmpresa).Img != null) { Rel.Parametros_Relatorio.Add("IMAGEM_RELATORIO", (empresa.SelectedItem as CamadaDados.Diversos.TRegistro_CadEmpresa).Img); } if (Altera_Relatorio) { Rel.Gera_Relatorio(string.Empty, fImp.pSt_imprimir, fImp.pSt_visualizar, fImp.pSt_enviaremail, fImp.pSt_exportPdf, fImp.Path_exportPdf, fImp.pDestinatarios, null, "DAMDFe", fImp.pDs_mensagem); Altera_Relatorio = false; } else if ((fImp.ShowDialog() == DialogResult.OK) || (fImp.pSt_enviaremail)) { List <string> Anexo = null; if (fImp.St_receberXmlNfe) { string path_anexo = CamadaNegocio.ConfigGer.TCN_CadParamGer.BuscaVlString("PATH_ANEXO_EMAIL", null); if (!string.IsNullOrEmpty(path_anexo)) { if (!System.IO.Directory.Exists(path_anexo)) { System.IO.Directory.CreateDirectory(path_anexo); } if (!path_anexo.EndsWith("\\")) { path_anexo += System.IO.Path.DirectorySeparatorChar.ToString(); } } } Rel.Gera_Relatorio(string.Empty, fImp.pSt_imprimir, fImp.pSt_visualizar, fImp.pSt_enviaremail, fImp.pSt_exportPdf, fImp.Path_exportPdf, fImp.pDestinatarios, Anexo, "MDFe", fImp.pDs_mensagem); } } } }
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); } } } } }