Example #1
0
        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;
            }
        }
Example #2
0
        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;
            }
        }