public static void ReprocessarImpostos(TRegistro_LanFaturamento rNf, CamadaDados.Faturamento.CTRC.TRegistro_ConhecimentoFrete rCtrc, CamadaDados.Faturamento.PDV.TRegistro_NFCe rEcf, decimal Vl_TotalNota, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_ImpostosNF qtb_imp = new TCD_ImpostosNF(); try { if (banco == null) { st_transacao = qtb_imp.CriarBanco_Dados(true); } else { qtb_imp.Banco_Dados = banco; } TList_ImpostosNF lImp = new TList_ImpostosNF(); if (rCtrc != null) { //Verificar se o ctrc possui imposto processado object objfiscal = new TCD_ImpostosNF(banco).BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rCtrc.Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.nr_lanctoCTR", vOperador = "=", vVL_Busca = rCtrc.Nr_lanctoCTRC.Value.ToString() }, new TpBusca() { vNM_Campo = "a.id_lotefis", vOperador = "is", vVL_Busca = "not null" } }, "1"); if (objfiscal != null) { throw new Exception("Não é permitido reprocessar impostos de conhecimento de frete com registro fiscal processado."); } //Buscar impostos CTRC gravados para excluir lImp = Buscar(string.Empty, rCtrc.Cd_empresa, string.Empty, string.Empty, rCtrc.Nr_lanctoCTRC.Value.ToString(), string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, string.Empty, qtb_imp.Banco_Dados); } //Excluir impostos lImp.ForEach(p => Excluir(p, qtb_imp.Banco_Dados)); //Gravar novos impostos if (rCtrc != null) { rCtrc.lImpostos.ForEach(p => { p.Cd_empresa = rCtrc.Cd_empresa; p.Nr_lanctoctr = rCtrc.Nr_lanctoCTRC; Gravar(p, qtb_imp.Banco_Dados); }); } else if (rNf != null) { rNf.ItensNota.ForEach(p => TCN_LanFaturamento_Item.AlterarFaturamentoItem(p, qtb_imp.Banco_Dados)); } else if (rEcf != null) { rEcf.lItem.ForEach(p => new CamadaDados.Faturamento.PDV.TCD_NFCe_Item(qtb_imp.Banco_Dados).Gravar(p)); } if (st_transacao) { qtb_imp.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_imp.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro reprocessar impostos: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_imp.deletarBanco_Dados(); } } }