public void Gravar(TB_FIN_DUPLICATA duplicata, decimal valorDesconto, decimal valorJuros, int?formaPagamento, ref int posicaoTransacao) { try { Conexao.Iniciar(ref posicaoTransacao); if (duplicata.ID_DUPLICATA.ToString().Length > 0) { Deletar(duplicata, ref posicaoTransacao); } duplicata.ID_DUPLICATA = duplicata.ID_DUPLICATA.TemValor() ? duplicata.ID_DUPLICATA : ((Conexao.BancoDados.TB_FIN_DUPLICATAs.Any() ? Conexao.BancoDados.TB_FIN_DUPLICATAs.Max(a => a.ID_DUPLICATA) : 0) + 1); if (!duplicata.ID_CONDICAOPAGAMENTO.TemValor()) { throw new SYSException(Mensagens.Necessario("informar a condição de pagamento")); } Conexao.BancoDados.TB_FIN_DUPLICATAs.InsertOnSubmit(duplicata); Conexao.Enviar(); duplicata.TB_FIN_PARCELAs = new System.Data.Linq.EntitySet <TB_FIN_PARCELA>(); var condicaoPagamento = new QCondicaoPagamento().Buscar(duplicata.ID_CONDICAOPAGAMENTO.Padrao()).FirstOrDefault(); for (var i = 0; i < (duplicata.QT_PARCELAS ?? 1); i++) { var data = condicaoPagamento.QT_DIASDESDOBRO.Padrao() == 0 ? Conexao.Data : Conexao.Data.AddDays(Convert.ToDouble(condicaoPagamento.QT_DIASDESDOBRO.Padrao()) * (i + 1)); var parcela = new TB_FIN_PARCELA { ID_PARCELA = i + 1, ID_DUPLICATA = duplicata.ID_DUPLICATA, ID_EMPRESA = duplicata.ID_EMPRESA, VL = duplicata.VL / duplicata.QT_PARCELAS, DT_VENCIMENTO = data, DT_PAGAMENTO = data == Conexao.Data ? Conexao.DataHora : (DateTime?)null }; Conexao.BancoDados.TB_FIN_PARCELAs.InsertOnSubmit(parcela); Conexao.Enviar(); if (parcela.DT_VENCIMENTO == Conexao.Data) { new QLiquidacao().Gravar(parcela, valorDesconto, valorJuros, formaPagamento, ref posicaoTransacao); } Conexao.Enviar(); } Conexao.Finalizar(ref posicaoTransacao); } catch (Exception excessao) { Conexao.Voltar(ref posicaoTransacao); throw excessao; } }
public TB_FIN_LIQUIDACAO Gravar(TB_FIN_PARCELA parcela, decimal valorDesconto, decimal valorJuros, int?formaPagamento, ref int posicaoTransacao) { try { Conexao.Iniciar(ref posicaoTransacao); // Abre o caixa geral var caixa = new QCaixaGeral(); caixa.Abrir(ref posicaoTransacao); var liquidacao = new TB_FIN_LIQUIDACAO { ID_LIQUIDACAO = (Conexao.BancoDados.TB_FIN_LIQUIDACAOs.Any() ? Conexao.BancoDados.TB_FIN_LIQUIDACAOs.Max(a => a.ID_LIQUIDACAO) : 0) + 1, ID_PARCELA = parcela.ID_PARCELA, ID_DUPLICATA = parcela.ID_DUPLICATA, ID_EMPRESA = parcela.ID_EMPRESA, ID_USUARIO = Parametros.ID_Usuario, VL = parcela.VL, ST = true, VL_DESCONTO = valorDesconto, ID_FORMAPAGAMENTO = formaPagamento }; Conexao.BancoDados.TB_FIN_LIQUIDACAOs.InsertOnSubmit(liquidacao); Conexao.Enviar(); Conexao.Finalizar(ref posicaoTransacao); return(liquidacao); } catch (Exception excessao) { Conexao.Voltar(ref posicaoTransacao); throw excessao; } }