public static void Cancela_Transferencia(TRegistro_Transferencia val, TObjetoBanco banco) { string Retorno = string.Empty; bool st_transacao = false; TCD_Transferencia qtb_Transferencia = new TCD_Transferencia(); try { if (banco == null) { st_transacao = qtb_Transferencia.CriarBanco_Dados(true); } else { qtb_Transferencia.Banco_Dados = banco; } //Verificar se o usuario tem permissão para cancelar nota fiscal if (!CamadaNegocio.Diversos.TCN_Usuario_RegraEspecial.ValidaRegra(Utils.Parametros.pubLogin, "PERMITIR CANCELAR NOTAS FISCAIS", qtb_Transferencia.Banco_Dados)) { throw new Exception("Usuario não tem permissão para cancelar nota fiscal."); } //Cancelar transferencia val.St_registro = "C"; Altera_Transferencia(val, qtb_Transferencia.Banco_Dados); //Cancelar nota fiscal de origem TList_RegLanFaturamento lFatOrigem = TCN_LanFaturamento.Busca(val.Transf_X_Contrato_Origem[0].CD_Empresa, string.Empty, string.Empty, val.Transf_X_Contrato_Origem[0].NR_LanctoFiscal.ToString(), string.Empty, string.Empty, decimal.Zero, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_Transferencia.Banco_Dados); if (lFatOrigem.Count > 0) { TCN_LanFaturamento.CancelarFaturamento(lFatOrigem[0], qtb_Transferencia.Banco_Dados); } else { throw new Exception("Nota Fiscal de Origem não encontrada!"); } //Cancelar nota fiscal de destino TList_RegLanFaturamento lFatDestino = TCN_LanFaturamento.Busca(val.Transf_X_Contrato_Destino[0].CD_Empresa, string.Empty, string.Empty, val.Transf_X_Contrato_Destino[0].NR_LanctoFiscal.ToString(), string.Empty, string.Empty, decimal.Zero, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_Transferencia.Banco_Dados); if (lFatDestino.Count > 0) { TCN_LanFaturamento.CancelarFaturamento(lFatDestino[0], qtb_Transferencia.Banco_Dados); } else { throw new Exception("Nota Fiscal de destino não encontrada!"); } if (st_transacao) { qtb_Transferencia.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_Transferencia.Banco_Dados.RollBack_Tran(); } //Retornar o status da transferencia para ativo novamente val.St_registro = "A"; throw new Exception(ex.Message); } finally { if (st_transacao) { qtb_Transferencia.deletarBanco_Dados(); } } }
public static List <TRegistro_SaldoContratoGMO> processaFinanceiroGMO(string Nr_contrato, decimal id_LanctoGmo, TObjetoBanco banco) { //Buscar saldo pedido GMO List <TRegistro_SaldoContratoGMO> lSaldoContrato = new TCD_LanRoyaltiesGMO(banco).SelectSaldoContratoGMO( new TpBusca[] { new TpBusca() { vNM_Campo = "p.nr_contrato", vOperador = "=", vVL_Busca = Nr_contrato } }, 0); //Buscar Saldo NF GMO List <TRegistro_SaldoNFGMO> lSaldoNf = new TCD_LanRoyaltiesGMO(banco).SelectSaldoNFGMO( new TpBusca[] { new TpBusca() { vNM_Campo = "contrato.nr_contrato", vOperador = "=", vVL_Busca = Nr_contrato } }, 0); decimal pc_gmo_declarado = ConfigGer.TCN_CadParamGer.BuscaVlNumerico("PC_GMO_DECLARADO", banco); decimal pc_gmo_testado = ConfigGer.TCN_CadParamGer.BuscaVlNumerico("PC_GMO_TESTADO", banco); TList_RegLanLiquidacao liq = new TList_RegLanLiquidacao(); //credito/debito de todas as notas fiscais do pedido lSaldoContrato.ForEach(p => { if ((p.Saldo_debito - p.Saldo_credito) > 0) { //Credito/Debito da nota fiscal atual lSaldoNf.ForEach(v => { if ((v.Saldo_debito - v.Saldo_credito) > 0) { if (v.Tp_gmo.Trim().ToUpper().Equals("D") && pc_gmo_declarado.Equals(decimal.Zero)) { throw new Exception("Não existe configuração percentual de GMO declarado configurado.\r\n" + "Va em PARAMETROS->CONFIGURAÇÕES->CONFIGURAÇÕES GERAIS e configure o percentual GMO declarado."); } if (v.Tp_gmo.Trim().ToUpper().Equals("T") && pc_gmo_testado.Equals(decimal.Zero)) { throw new Exception("Não existe configuração percentual de GMO testado configurado.\r\n" + "Va em PARAMETROS->CONFIGURAÇÕES->CONFIGURAÇÕES GERAIS e configure o percentual GMO testado."); } decimal qtd_lancto = decimal.Zero; if ((p.Saldo_debito - p.Saldo_credito) >= (v.Saldo_debito - v.Saldo_credito)) { qtd_lancto = v.Saldo_debito - v.Saldo_credito; } else { qtd_lancto = p.Saldo_debito - p.Saldo_credito; } //Calcular impostos Retidos da Nota TList_RegLanFaturamento lNf = TCN_LanFaturamento.Busca(v.Cd_empresa, string.Empty, string.Empty, v.Nr_lanctofiscal.ToString(), string.Empty, string.Empty, decimal.Zero, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, 1, string.Empty, banco); decimal vl_liquidar = decimal.Zero; if (lNf.Count > 0) { //Buscar Item da Nota TList_RegLanFaturamento_Item lItem = TCN_LanFaturamento_Item.Busca(v.Cd_empresa, v.Nr_lanctofiscal.Value.ToString(), v.Id_nfitem.Value.ToString(), banco); if (lItem.Count > 0) { //Calcular Impostos Retidos TCN_LanFaturamento_Item.PreencherOutrosImpostos( TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(lNf[0].Cd_condfiscal_clifor, lItem[0].Cd_condfiscal_produto, lNf[0].Cd_movimentacaostring, lNf[0].Tp_movimento, lNf[0].Tp_pessoa, lNf[0].Cd_empresa, lNf[0].Nr_serie, lNf[0].Cd_clifor, lItem[0].Cd_unidEst, lNf[0].Dt_emissao, qtd_lancto, TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade, p.Cd_unidade_valor, (qtd_lancto * v.Vl_unitario), 2, banco), lNf[0].Tp_nota, lNf[0].Cd_municipioexecservico, banco), lItem[0], lNf[0].Tp_movimento); lNf[0].ItensNota = lItem; } TCN_LanFaturamento.CalcTotalNota(lNf[0]); vl_liquidar = lNf[0].Vl_totalnota * ((v.Tp_gmo.Trim().ToUpper().Equals("D") ? pc_gmo_declarado : pc_gmo_testado) / 100); } else { //Valor liquidar vl_liquidar = TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade, p.Cd_unidade_valor, (qtd_lancto * v.Vl_unitario), 2, banco) * ((v.Tp_gmo.Trim().ToUpper().Equals("D") ? pc_gmo_declarado : pc_gmo_testado) / 100); } //Liquidar duplicata liquidaDuplicatas(v, p, vl_liquidar, qtd_lancto, banco); } }); } }); return(lSaldoContrato); }