public static string GravarFixacao(TRegistro_LanFixacao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_LanFixacao qtb_fixacao = new TCD_LanFixacao(); try { if (banco == null) { st_transacao = qtb_fixacao.CriarBanco_Dados(true); } else { qtb_fixacao.Banco_Dados = banco; } //Gravar fixacao string retorno = qtb_fixacao.Gravar(val); val.Id_fixacao = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_FIXACAO")); //Gravar Fixacao X Contrato TCN_Fixacao_X_Contrato.Gravar(new TRegistro_Fixacao_X_Contrato() { Id_fixacao = val.Id_fixacao, Nr_contrato = val.Nr_contrato, }, qtb_fixacao.Banco_Dados); //Gravar nota fiscal de complemento val.lFixacaonf.ForEach(p => { if (p.rNfComplemento != null) { TCN_LanFaturamento.GravarFaturamento(p.rNfComplemento, null, qtb_fixacao.Banco_Dados); //Gravar Fixacao NF Complemento TRegistro_Fixacao_NF rFComp = new TRegistro_Fixacao_NF(); rFComp.Id_fixacao = val.Id_fixacao; rFComp.Id_fixacaonf = null; rFComp.Cd_empresa = p.rNfComplemento.Cd_empresa; rFComp.Nr_lanctofiscal = p.rNfComplemento.Nr_lanctofiscal; rFComp.Id_nfitem = p.rNfComplemento.ItensNota[0].Id_nfitem; rFComp.Qtd_fixacao = p.Qtd_fixacao; rFComp.Vl_complemento = decimal.Zero; rFComp.Vl_devolucao = decimal.Zero; rFComp.Vl_fixacao = p.Vl_fixacao; rFComp.Tp_nota = "C"; TCN_Fixacao_NF.GravarFixacaoNf(rFComp, qtb_fixacao.Banco_Dados); } //Gravar Fixacao NF Pauta p.Tp_nota = "P"; p.Id_fixacao = val.Id_fixacao; TCN_Fixacao_NF.GravarFixacaoNf(p, qtb_fixacao.Banco_Dados); }); //Gravar Nota Fiscal de Devolucao if (val.rNfDev != null) { TCN_LanFaturamento.GravarFaturamento(val.rNfDev, null, qtb_fixacao.Banco_Dados); TRegistro_Fixacao_NF rFDev = new TRegistro_Fixacao_NF(); rFDev.Id_fixacao = val.Id_fixacao; rFDev.Id_fixacaonf = null; rFDev.Cd_empresa = val.rNfDev.Cd_empresa; rFDev.Nr_lanctofiscal = val.rNfDev.Nr_lanctofiscal; rFDev.Id_nfitem = val.rNfDev.ItensNota[0].Id_nfitem; rFDev.Qtd_fixacao = val.lFixacaonf.Where(p => p.Vl_devolucao > decimal.Zero).Sum(p => p.Qtd_fixacao); rFDev.Vl_complemento = decimal.Zero; rFDev.Vl_devolucao = decimal.Zero; rFDev.Vl_fixacao = val.lFixacaonf.Where(p => p.Vl_devolucao > decimal.Zero).Sum(p => p.Vl_fixacao); rFDev.Tp_nota = "D"; //Gravar Fixacao NF Devolucao TCN_Fixacao_NF.GravarFixacaoNf(rFDev, qtb_fixacao.Banco_Dados); val.lFixacaonf.ForEach(p => { //Gravar Fixacao NF Pauta p.Tp_nota = "P"; p.Id_fixacao = val.Id_fixacao; TCN_Fixacao_NF.GravarFixacaoNf(p, qtb_fixacao.Banco_Dados); }); } //Gravar Financeiro Fixacao if (val.rDup != null) { val.rDup.Nr_docto = "RAP" + val.Id_fixacao.Value.ToString(); Financeiro.Duplicata.TCN_LanDuplicata.GravarDuplicata(val.rDup, false, qtb_fixacao.Banco_Dados); //Gravar Fixacao X Duplicata TCN_Fixacao_X_Duplicata.Gravar(new TRegistro_Fixacao_X_Duplicata() { Id_fixacao = val.Id_fixacao, Cd_empresa = val.rDup.Cd_empresa, Nr_lancto = val.rDup.Nr_lancto }, qtb_fixacao.Banco_Dados); if (ConfigGer.TCN_CadParamGer.BuscaVL_Bool("ST_CONTROLAR_GMO", val.rDup.Cd_empresa, qtb_fixacao.Banco_Dados).Trim().ToUpper().Equals("S")) { val.lFixacaonf.Where(p => p.Vl_complemento > decimal.Zero).ToList().ForEach(p => { //Gravar Retencao GMO TRegistro_SaldoNFGMO rSaldoNf = new TRegistro_SaldoNFGMO(); rSaldoNf.Cd_empresa = val.rDup.Cd_empresa; rSaldoNf.Nr_lanctoduplicata = val.rDup.Nr_lancto; rSaldoNf.Dt_saient = val.rDup.Dt_emissao; rSaldoNf.Nr_lanctofiscal = p.rNfComplemento.Nr_lanctofiscal; rSaldoNf.Id_nfitem = p.rNfComplemento.ItensNota[0].Id_nfitem; if (val.Qtd_gmo_declarado > decimal.Zero) { //Liquidar duplicata retendo os Royalties TCN_LanRoyaltiesGMO.liquidaDuplicatas(rSaldoNf, new TRegistro_SaldoContratoGMO() { Cd_produto = val.Cd_produto, Nr_contrato = val.Nr_contrato, Tp_gmo = "D" }, val.Vl_royalties_declarado, val.Qtd_gmo_declarado, qtb_fixacao.Banco_Dados); } if (val.Qtd_gmo_testado > decimal.Zero) { //Liquidar duplicata retendo os Royalties TCN_LanRoyaltiesGMO.liquidaDuplicatas(rSaldoNf, new TRegistro_SaldoContratoGMO() { Cd_produto = val.Cd_produto, Nr_contrato = val.Nr_contrato, Tp_gmo = "T" }, val.Vl_royalties_testado, val.Qtd_gmo_testado, qtb_fixacao.Banco_Dados); } }); if (val.rNfDev != null) { //Gravar Retencao GMO TRegistro_SaldoNFGMO rSaldoNf = new TRegistro_SaldoNFGMO(); rSaldoNf.Cd_empresa = val.rDup.Cd_empresa; rSaldoNf.Nr_lanctoduplicata = val.rDup.Nr_lancto; rSaldoNf.Dt_saient = val.rDup.Dt_emissao; rSaldoNf.Nr_lanctofiscal = val.rNfDev.Nr_lanctofiscal; rSaldoNf.Id_nfitem = val.rNfDev.ItensNota[0].Id_nfitem; if (val.Qtd_gmo_declarado > decimal.Zero) { //Liquidar duplicata retendo os Royalties TCN_LanRoyaltiesGMO.liquidaDuplicatas(rSaldoNf, new TRegistro_SaldoContratoGMO() { Cd_produto = val.Cd_produto, Nr_contrato = val.Nr_contrato, Tp_gmo = "D" }, val.Vl_royalties_declarado, val.Qtd_gmo_declarado, qtb_fixacao.Banco_Dados); } if (val.Qtd_gmo_testado > decimal.Zero) { //Liquidar duplicata retendo os Royalties TCN_LanRoyaltiesGMO.liquidaDuplicatas(rSaldoNf, new TRegistro_SaldoContratoGMO() { Cd_produto = val.Cd_produto, Nr_contrato = val.Nr_contrato, Tp_gmo = "T" }, val.Vl_royalties_testado, val.Qtd_gmo_testado, qtb_fixacao.Banco_Dados); } } } } if (st_transacao) { qtb_fixacao.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (st_transacao) { qtb_fixacao.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar fixação: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_fixacao.deletarBanco_Dados(); } } }
public static TList_RegLanParcela liquidaDuplicatas(TRegistro_SaldoNFGMO rSaldoNf, TRegistro_SaldoContratoGMO rSaldoPed, decimal vl_Liquidar, decimal qtdLancto, TObjetoBanco banco) { TList_RegLanParcela lParcelas = Financeiro.Duplicata.TCN_LanParcela.Busca(rSaldoNf.Cd_empresa, rSaldoNf.Nr_lanctoduplicata.Value, decimal.Zero, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 0, string.Empty, banco); TRegistro_LanLiquidacao liquid = new TRegistro_LanLiquidacao(); TList_Cad_ParamGMO lParamGMO = TCN_Cad_ParamGMO.Buscar(rSaldoNf.Cd_empresa, string.Empty, string.Empty, string.Empty, banco); if (lParamGMO.Count > 0) { lParcelas.ForEach(p => { liquid = new TRegistro_LanLiquidacao(); liquid.Cd_empresa = rSaldoNf.Cd_empresa; liquid.Nr_lancto = rSaldoNf.Nr_lanctoduplicata.Value; liquid.Cd_parcela = p.Cd_parcela; liquid.cVl_Atual = vl_Liquidar; liquid.Cd_contager = lParamGMO[0].Cd_contager; liquid.Cvl_aliquidar_padrao = vl_Liquidar; liquid.Nr_docto = p.Nr_docto; liquid.Ds_contaGer = lParamGMO[0].Ds_contager; liquid.Cd_portador = lParamGMO[0].Cd_portador; liquid.Ds_portador = lParamGMO[0].Ds_portador; liquid.Cd_historico = lParamGMO[0].Cd_historico_pgto; liquid.Ds_historico = lParamGMO[0].Ds_historico_pgto; liquid.Dt_Liquidacao = rSaldoNf.Dt_saient; liquid.Tp_mov = p.Tp_mov; liquid.Vl_parcela = p.Vl_parcela; liquid.Vl_atual = p.Vl_atual; liquid.Vl_difcamb_at = decimal.Zero; liquid.Vl_difcamb_pa = decimal.Zero; liquid.Vl_Liquidado = p.Vl_liquidado; liquid.Vl_liquidado_padrao = p.Vl_liquidado; liquid.Vl_DescontoBonus = decimal.Zero; liquid.Vl_JuroAcrescimo = decimal.Zero; liquid.st_registro = "A"; liquid.cVl_Nominal = decimal.Zero; liquid.cVl_Liquidado = p.Vl_liquidado; liquid.cVl_JuroTotal = decimal.Zero; liquid.cVl_DescontoTotal = decimal.Zero; Financeiro.Duplicata.TCN_LanLiquidacao.GravarLiquidacao(lParcelas, liquid, null, null, null, null, banco); //Cria registro para gravar lançamento de caixa. TRegistro_LanCaixa lCx = new TRegistro_LanCaixa(); lCx.Cd_ContaGer = lParamGMO[0].Cd_contager; lCx.Cd_LanctoCaixa = decimal.Zero; lCx.Cd_Empresa = lParamGMO[0].Cd_empresa; lCx.Cd_Historico = lParamGMO[0].Cd_historico_retencao; lCx.Vl_RECEBER = vl_Liquidar; lCx.Vl_PAGAR = decimal.Zero; lCx.Vl_Atual = decimal.Zero; lCx.Vl_Anterior = decimal.Zero; lCx.Nr_Docto = p.Nr_docto; lCx.Dt_lancto = rSaldoNf.Dt_saient; lCx.ComplHistorico = string.Empty; string vLanctoCx = Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(lCx, banco); decimal lanctoCx = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(vLanctoCx, "@P_CD_LANCTOCAIXA")); if (liquid.Id_liquid.Equals(decimal.Zero) || lanctoCx.Equals(decimal.Zero)) { throw new Exception("Erro ao gravar Liquidação/Caixa "); } string credroy = Gravar(new TRegistro_LanRoyaltiesGMO() { CD_Produto = rSaldoPed.Cd_produto, DS_Observacao = "Crédito Retido GMO nota fiscal Número " + p.Nr_docto, Id_lanctoGMO = decimal.Zero, Nr_Contrato = rSaldoPed.Nr_contrato, QTD_Credito = qtdLancto, QTD_Debito = decimal.Zero, Tp_gmo = rSaldoPed.Tp_gmo, TP_Lancto = "N" }, banco); //Cria registro da retencao financeira TRegistro_Lan_RetencaoFinanceiraGMO lRGmo = new TRegistro_Lan_RetencaoFinanceiraGMO(); lRGmo.Id_Liquid = liquid.Id_liquid; lRGmo.Id_LanctoGMO = Convert.ToDecimal(credroy); lRGmo.Nr_Lancto = rSaldoNf.Nr_lanctoduplicata; lRGmo.Cd_ContaGer = lParamGMO[0].Cd_contager; lRGmo.Cd_Empresa = rSaldoNf.Cd_empresa; lRGmo.Cd_LanctoCaixa = lanctoCx; lRGmo.Cd_Parcela = p.Cd_parcela; TCN_Lan_RetencaoFinanceiraGMO.Gravar(lRGmo, banco); if ((rSaldoNf.Nr_lanctofiscal != null) && (rSaldoNf.Id_nfitem != null)) { TCN_Lan_NotaFiscalGMO.Gravar( new TRegistro_Lan_NotaFiscalGMO() { cd_Empresa = rSaldoNf.Cd_empresa, id_LanctoGmo = Convert.ToDecimal(credroy), id_NfItem = rSaldoNf.Id_nfitem, nr_LanctoFiscal = rSaldoNf.Nr_lanctofiscal }, banco); } }); } else { throw new Exception("Não existem parâmetros de GMO configurados para a empresa " + rSaldoNf.Cd_empresa.Trim()); } return(lParcelas); }