Exemplo n.º 1
0
        /// <summary>
        /// Salvar o titulo de receita avulso
        /// </summary>
        public bool salvar(TituloReceita OTituloReceita)
        {
            OTituloReceita = this.tratarDadosPessoa(OTituloReceita);

            OTituloReceita.setDefaultInsertValues();

            if (OTituloReceita.listaTituloReceitaPagamento.Any())
            {
                OTituloReceita.listaTituloReceitaPagamento.ToList().ForEach(Item => {
                    Item.setDefaultInsertValues();
                });
            }

            db.TituloReceita.Add(OTituloReceita);

            db.SaveChanges();

            bool flagSucesso = OTituloReceita.id > 0;

            if (flagSucesso)
            {
                this.onReceitaCadastrada.subscribe(new OnReceitaCadastradaHandler());
                this.onReceitaCadastrada.publish(OTituloReceita as object);
            }

            return(flagSucesso);
        }
        //Inserir os dados para um novo titulo de receita
        private void inserir(TituloReceita OTituloReceita)
        {
            OTituloReceita.setDefaultInsertValues();

            OTituloReceita.listaTituloReceitaPagamento = null;

            OTituloReceita.Categoria = null;

            OTituloReceita.CentroCusto = null;

            OTituloReceita.CidadeRecibo = null;

            OTituloReceita.ContaBancaria = null;

            OTituloReceita.MacroConta = null;

            OTituloReceita.Pessoa = null;

            if (OTituloReceita.listaDescontosAntecipacao != null)
            {
                OTituloReceita.listaDescontosAntecipacao.ForEach(x => { x.setDefaultInsertValues(); });
            }

            using (var dataContext = new DataContext()) {
                dataContext.TituloReceita.Add(OTituloReceita);

                dataContext.SaveChanges();
            }
        }
        //eventos

        //Definir qual título receita irá fazer os tratamentos
        public ITituloReceitaBaixaBL factory(TituloReceita OTitulo)
        {
            if (OTitulo == null)
            {
                return(new TituloReceitaBaixaBL());
            }

            if (OTitulo.idTipoReceita == TipoReceitaConst.CONTRIBUICAO)
            {
                return(new TituloReceitaContribuicaoBaixaBL());
            }

            if (OTitulo.idTipoReceita == TipoReceitaConst.PEDIDO)
            {
                return(new TituloReceitaPedidoBaixaBL());
            }

            /*if (OTitulo.idTipoReceita == TipoReceitaConst.INSCRICAO_EVENTO) {
             *  return new TituloReceitaEventoBaixaBL();
             * }
             *
             * if (OTitulo.idTipoReceita == TipoReceitaConst.SOLICITACAO) {
             *  return new TituloReceitaSolicitacaoBaixaBL();
             * }
             *
             * if (OTitulo.idTipoReceita == TipoReceitaConst.PROCESSO_AVALIACAO) {
             *  return new TituloReceitaInscricaoProcessoBaixaBL();
             * }*/

            return(new TituloReceitaBaixaBL());
        }
        /// <summary>
        /// Calcular valores de parcelas
        /// </summary>
        public void carregarParcelas()
        {
            decimal valorTotalCobranca = TituloReceita.valorTotalComDesconto();

            decimal valorParcela = decimal.Divide(TituloReceita.valorTotalComDesconto(), new decimal(qtdeParcelas));

            decimal valorSomatorioParcelas = 0;

            for (int i = 0; i < qtdeParcelas; i++)
            {
                var OParcela = listaPagamentos.Count > i? listaPagamentos[i] : new TituloReceitaPagamento();

                OParcela.valorOriginal = Math.Round(valorParcela, 2);

                OParcela.dtVencimento = OParcela.dtVencimento.HasValue? OParcela.dtVencimento: DateTime.Today.AddDays(1).AddMonths(i);

                valorSomatorioParcelas = Math.Round(decimal.Add(valorSomatorioParcelas, valorParcela), 2);

                if (listaPagamentos.Count > i)
                {
                    continue;
                }

                listaPagamentos.Add(OParcela);
            }

            decimal valorDiferenca = decimal.Subtract(valorTotalCobranca, valorSomatorioParcelas);

            var UltimaParcela = listaPagamentos.LastOrDefault() ?? new TituloReceitaPagamento();

            UltimaParcela.valorOriginal = decimal.Add(UltimaParcela.valorOriginal, valorDiferenca);
        }
Exemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        private void atualizarPedido(TituloReceita OTituloLiquidado, byte?idMeioPagamentoParam)
        {
            //Atualizar Pedido
            db.Pedido.Where(x => x.id == OTituloLiquidado.idReceita)
            .Update(x => new Pedido {
                dtQuitacao      = OTituloLiquidado.dtQuitacao,
                idStatusPedido  = StatusPedidoConst.PAGO,
                idMeioPagamento = idMeioPagamentoParam
            });

            //Atualizar os itens do pedido
            var listaItens = db.PedidoProduto.Where(x => x.idPedido == OTituloLiquidado.idReceita)
                             .Select(x => new { x.id, x.valorGanhoDiario, x.qtdeDiasDuracao })
                             .ToListJsonObject <PedidoProduto>();

            foreach (var Item in listaItens)
            {
                var dtFimGanho = DateTime.Today.AddDays(Item.qtdeDiasDuracao.toInt());

                db.PedidoProduto.Where(x => x.id == Item.id)
                .Update(x => new PedidoProduto {
                    dtFimGanhoDiario = dtFimGanho
                });
            }
        }
Exemplo n.º 6
0
        //eventos

        //Definir qual título receita irá fazer os tratamentos
        public ITituloReceitaBL factory(TituloReceita OTitulo)
        {
            if (OTitulo == null)
            {
                return(new TituloReceitaPadraoBL());
            }

            if (OTitulo.idTipoReceita == TipoReceitaConst.CONTRIBUICAO)
            {
                return(new TituloReceitaContribuicaoBL());
            }


/*
 *                   if(OTitulo.idTipoReceita == TipoReceitaConst.INSCRICAO_EVENTO) {
 *                       return new TituloReceitaEventoBL();
 *                   }
 */

            if (OTitulo.idTipoReceita == TipoReceitaConst.PEDIDO)
            {
                return(new TituloReceitaPedidoBL());
            }

            if (OTitulo.idTipoReceita == TipoReceitaConst.TAXA_INSCRICAO)
            {
                return(new TituloReceitaTaxaInscricaoBL());
            }

            return(new TituloReceitaPadraoBL());
        }
        //Registrar a liquidacao do titulo (pagamento total)
        //Cada classe filha pode sobreescrever esse metodo para que as acoes de pagamento sejam feitas
        public virtual TituloReceita liquidar(TituloReceita OTituloReceita)
        {
            var listaParcelas = this.db.TituloReceitaPagamento
                                .Where(x => x.idTituloReceita == OTituloReceita.id && x.dtExclusao == null)
                                .ToList();

            var listaParcelasPendentes = listaParcelas.Where(x => x.dtPagamento == null).ToList();

            if (listaParcelasPendentes.Count > 0)
            {
                return(OTituloReceita);
            }

            OTituloReceita.dtQuitacao = listaParcelas.Max(x => x.dtPagamento);

            this.db.TituloReceita.Where(x => x.id == OTituloReceita.id)
            .Update(x => new TituloReceita {
                dtQuitacao = OTituloReceita.dtQuitacao,
                ativo      = true
            }
                    );

            this.onTituloQuitado.subscribe(new OnTituloQuitadoHandler());

            this.onTituloQuitado.publish((OTituloReceita as object));

            return(OTituloReceita);
        }
        //Atributos

        //Propriedades

        //eventos

        /// <summary>
        /// Realizar a exclusao pelo ID do registro
        /// </summary>
        public virtual UtilRetorno excluir(int idTituloReceita, string motivo = "")
        {
            TituloReceita dbTitulo = this.db.TituloReceita.condicoesSeguranca().FirstOrDefault(x => x.id == idTituloReceita);

            if (dbTitulo == null)
            {
                return(UtilRetorno.newInstance(true, "O título informado não pôde ser localizado."));
            }

            dbTitulo.dtExclusao = DateTime.Now;

            dbTitulo.idUsuarioExclusao = User.id();

            dbTitulo.motivoExclusao = motivo;

            int qtdeAfetados = this.db.SaveChanges();

            if (qtdeAfetados == 0)
            {
                return(UtilRetorno.newInstance(true, "Houve um problema ao remover o registro, tente novamente mais tarde."));
            }

            this.removerParcelas(dbTitulo.id, User.id(), motivo);

            return(UtilRetorno.newInstance(false, "O registro foi removido com sucesso."));
        }
Exemplo n.º 9
0
        /// <summary>
        /// Capturar dados adicionais do cadastro de pessoa para inserir no título
        /// </summary>
        public static void tratarDadosPessoa(this TituloReceita OTituloReceita)
        {
            int idPessoa = OTituloReceita.idPessoa.toInt();

            if (idPessoa == 0)
            {
                return;
            }

            var OPessoa = db.Pessoa.Where(x => x.id == idPessoa)
                          .Select(x => new {
                x.id,
                x.nroDocumento,
                x.nome,
                x.dddTelPrincipal,
                x.nroTelPrincipal,
                x.dddTelSecundario,
                x.nroTelSecundario,
                listaEmails    = x.listaEmails.Select(e => new { e.id, e.email, e.idTipoEmail, e.dtExclusao }).ToList(),
                listaEnderecos = x.listaEnderecos.Select(e => new { e.id, e.idTipoEndereco, e.cep, e.logradouro, e.numero, e.complemento, e.bairro, e.nomeCidade, e.idCidade, e.dtExclusao }).ToList(),
                listaTelefones = x.listaTelefones.Select(t => new { t.id, t.idTipoTelefone, t.nroTelefone, t.dtExclusao }).ToList()
            }).AsNoTracking().FirstOrDefault().ToJsonObject <Pessoa>();

            if (OPessoa == null)
            {
                return;
            }

            OTituloReceita.preencherRecibo(OPessoa);
        }
        //Salvar uma receita no banco de dados
        //A operacao pode ser de atualizacao ou de insercao
        public virtual TituloReceita salvar(TituloReceita OTituloReceita)
        {
            //Tratar valores
            OTituloReceita.nroTelPrincipal = UtilString.onlyAlphaNumber(OTituloReceita.nroTelPrincipal).abreviar(15);

            OTituloReceita.nroTelSecundario = UtilString.onlyAlphaNumber(OTituloReceita.nroTelSecundario).abreviar(15);

            OTituloReceita.nomePessoa = OTituloReceita.nomePessoa.abreviar(100).toUppercaseWords();

            OTituloReceita.documentoPessoa = OTituloReceita.documentoPessoa.abreviar(20);

            OTituloReceita.passaporteRecibo = OTituloReceita.passaporteRecibo.abreviar(20);

            OTituloReceita.rneRecibo = OTituloReceita.rneRecibo.abreviar(20);

            OTituloReceita.nomeRecibo = OTituloReceita.nomeRecibo.abreviar(100).toUppercaseWords();

            OTituloReceita.documentoRecibo = OTituloReceita.documentoRecibo.abreviar(20);

            OTituloReceita.cepRecibo = OTituloReceita.cepRecibo.onlyNumber().abreviar(8);

            OTituloReceita.logradouroRecibo = OTituloReceita.logradouroRecibo.abreviar(100).toUppercaseWords();

            OTituloReceita.numeroRecibo = OTituloReceita.numeroRecibo.abreviar(20);

            OTituloReceita.complementoRecibo = OTituloReceita.complementoRecibo.abreviar(50).toUppercaseWords();

            OTituloReceita.bairroRecibo = OTituloReceita.bairroRecibo.abreviar(80).toUppercaseWords();

            OTituloReceita.nomeCidadeRecibo = OTituloReceita.nomeCidadeRecibo.abreviar(100).toUppercaseWords();

            OTituloReceita.motivoDesconto = OTituloReceita.motivoDesconto.abreviar(500);

            OTituloReceita.observacao = OTituloReceita.observacao.abreviar(1000);


            //Anular relacionamentos que nao se deseja inserções
            OTituloReceita.idPessoa = OTituloReceita.idPessoa == 0 ? null : OTituloReceita.idPessoa;

            OTituloReceita.Pessoa = null;

            OTituloReceita.CidadeRecibo = null;

            OTituloReceita.CentroCusto = null;

            OTituloReceita.PeriodoRepeticao = null;

            OTituloReceita.CupomDesconto = null;

            if (OTituloReceita.id > 0)
            {
                this.atualizar(OTituloReceita);
            }
            else
            {
                this.inserir(OTituloReceita);
            }

            return(OTituloReceita);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Registar a data da quitacao na tb_associado_contribuicao
        /// </summary>
        private void registrarPagamento(TituloReceita OTituloReceita)
        {
            int idAssociadoContribuicao = OTituloReceita.idReceita.toInt();

            db.AssociadoContribuicao
            .Where(x => x.id == idAssociadoContribuicao)
            .Update(x => new AssociadoContribuicao {
                dtPagamento = OTituloReceita.dtQuitacao
            });
        }
        /// <summary>
        /// Realizar a exclusao pelo tipo de receita e pela referencia
        /// </summary>
        public UtilRetorno excluir(int idTipoReceita, int idReferencia, string motivo)
        {
            TituloReceita dbTitulo = this.db.TituloReceita.condicoesSeguranca().FirstOrDefault(x => x.idTipoReceita == idTipoReceita && x.idReceita == idReferencia);

            if (dbTitulo == null)
            {
                return(UtilRetorno.newInstance(true, "O título informado não pôde ser localizado."));
            }

            return(this.excluir(dbTitulo.id, motivo));
        }
        //
        public void carregarDados(TituloReceita OTitulo)
        {
            this.TituloReceita = OTitulo;

            this.listaPagamentos = OTitulo.listaTituloReceitaPagamento.Where(x => x.dtExclusao == null).OrderBy(x => x.dtVencimento).ToList();

            this.listaPagamentosCancelados = OTitulo.listaTituloReceitaPagamento.Where(x => x.dtExclusao != null).OrderByDescending(x => x.id).ToList();

            this.valorParcelado = this.listaPagamentos.Sum(x => x.valorOriginal);

            this.valorDiferencaParcelas = Decimal.Subtract(UtilNumber.toDecimal(OTitulo.valorTotal), this.valorParcelado);
        }
        //
        private UtilRetorno salvarReceitas(TituloReceita OReceitaClone, int qtdeReplicacoes)
        {
            var ORetorno = UtilRetorno.newInstance(false);

            var listaReceitasGeradas = new List <TituloReceita>();

            OReceitaClone.listaTituloReceitaPagamento = this.ajustarPagamentos(OReceitaClone, OReceitaClone.listaTituloReceitaPagamento.ToList());

            listaReceitasGeradas.Add(OReceitaClone);

            qtdeReplicacoes--;

            for (int i = 1; i <= qtdeReplicacoes; i++)
            {
                var OReceitaReplicada = OReceitaClone.ToJsonObject <TituloReceita>();

                OReceitaReplicada.dtCompetencia = OReceitaClone.dtCompetencia?.AddMonths(i);

                OReceitaReplicada.mesCompetencia = OReceitaReplicada.dtCompetencia?.Month.toByte();

                OReceitaReplicada.anoCompetencia = Convert.ToInt16(OReceitaReplicada.dtCompetencia?.Year);

                OReceitaReplicada.dtVencimento = OReceitaClone.dtVencimento?.AddMonths(i);

                OReceitaReplicada.dtVencimentoOriginal = OReceitaClone.dtVencimento?.AddMonths(i);

                OReceitaReplicada.listaTituloReceitaPagamento = this.ajustarPagamentos(OReceitaReplicada, OReceitaReplicada.listaTituloReceitaPagamento.ToList());

                listaReceitasGeradas.Add(OReceitaReplicada);
            }

            using (var ctx = this.db) {
                ctx.Configuration.AutoDetectChangesEnabled = false;

                ctx.Configuration.ValidateOnSaveEnabled = false;

                listaReceitasGeradas.ForEach(x => {
                    x.setDefaultInsertValues();

                    x.listaTituloReceitaPagamento.ForEach(c => {
                        c.setDefaultInsertValues();
                    });
                });

                ctx.TituloReceita.AddRange(listaReceitasGeradas);

                ctx.SaveChanges();
            }

            ORetorno.info = listaReceitasGeradas.FirstOrDefault().id;

            return(ORetorno);
        }
        private UtilRetorno alterarCampo(TituloReceita OTituloReceita, LogAlteracao OLog)
        {
            var ORetorno = UtilRetorno.newInstance(true);

            var listaCamposNaoEditaveis = new[] {
                "id"
                , "idOrganizacao"
                , "idUsuarioCadastro"
                , "idUsuarioAlteracao"
                , "dtCadastro"
            };

            if (listaCamposNaoEditaveis.Contains(OLog.nomeCampoAlterado))
            {
                return(UtilRetorno.newInstance(true, "O dado informado não pode ser alterado."));
            }

            if (OLog.nomeCampoAlterado.Equals("observacao"))
            {
                OLog.valorNovo = OLog.valorNovo.abreviar(1000);
            }

            OLog.valorAntigo = OTituloReceita.alterarValorCampo(OLog.nomeCampoAlterado, OLog.valorNovo);

            if (OLog.valorAntigo == null)
            {
                ORetorno.listaErros.Add("O valor informado é inválido");

                return(ORetorno);
            }

            var Retorno = db.validateAndSave();

            if (Retorno.flagError)
            {
                return(Retorno);
            }

            OLog.nomeCampoAlterado = OLog.nomeCampoAlterado.abreviar(255);
            OLog.nomeCampoDisplay  = OLog.nomeCampoDisplay.abreviar(255);
            OLog.valorNovo         = OTituloReceita.getValorCampo(OLog.nomeCampoAlterado).removeTags().abreviar(255);
            OLog.valorAntigo       = OLog.valorAntigo.removeTags().abreviar(255);
            OLog.oldValueSelect    = OLog.valorAntigo.isEmpty() ? null : OLog.oldValueSelect.removeTags().abreviar(255);

            OLogAlteracaoBL.salvar(OLog);

            ORetorno.flagError = false;

            return(ORetorno);
        }
        /// <summary>
        /// Preencher os dados de recibo de um titulo de receita
        /// </summary>
        protected void preencherRecibo(ref TituloReceita OTituloReceita, Pessoa OPessoa)
        {
            OTituloReceita.nomePessoa = OPessoa.flagTipoPessoa == "J" ? (!OPessoa.razaoSocial.isEmpty() ? OPessoa.razaoSocial : OPessoa.nome) : OPessoa.nome;

            OTituloReceita.documentoPessoa = OPessoa.nroDocumento;

            OTituloReceita.nroTelPrincipal = string.Concat(OPessoa.dddTelPrincipal, OPessoa.nroTelPrincipal);

            OTituloReceita.nomeRecibo = OTituloReceita.nomePessoa;

            OTituloReceita.documentoRecibo = OPessoa.nroDocumento;

            OTituloReceita.passaporteRecibo = OPessoa.passaporte;

            OTituloReceita.rneRecibo = OPessoa.rne;

            //Carregar E-mails da Pessoa
            var listaEmails = OPessoa.listaEmails.Where(x => x.dtExclusao == null && !string.IsNullOrEmpty(x.email)).ToList();

            if (listaEmails.Any())
            {
                OTituloReceita.emailPrincipal = listaEmails.Select(x => x.email).FirstOrDefault();
            }

            //Carregar E-mails da Pessoa
            var listaTelefones = OPessoa.listaTelefones.Where(x => x.dtExclusao == null && !string.IsNullOrEmpty(x.nroTelefone)).ToList();

            if (listaTelefones.Any())
            {
                OTituloReceita.nroTelPrincipal = listaTelefones.Select(x => x.nroTelefone).FirstOrDefault();
            }

            //Carregar Endereco da Pessoa
            var listaEnderecos = OPessoa.listaEnderecos.Where(x => x.dtExclusao == null).ToList();

            var OEndereco = listaEnderecos.FirstOrDefault(x => !string.IsNullOrEmpty(x.cep)) ?? new PessoaEndereco();

            OTituloReceita.cepRecibo = OEndereco.cep;

            OTituloReceita.logradouroRecibo = OEndereco.logradouro;

            OTituloReceita.complementoRecibo = OEndereco.complemento;

            OTituloReceita.numeroRecibo = OEndereco.numero;

            OTituloReceita.bairroRecibo = OEndereco.bairro;

            OTituloReceita.idCidadeRecibo = OEndereco.idCidade;
        }
Exemplo n.º 17
0
        /// <summary>
        /// Preencher os dados de recibo de um titulo de receita
        /// </summary>
        public static void preencherRecibo(this TituloReceita OTituloReceita, Pessoa OPessoa)
        {
            OTituloReceita.nomePessoa = OPessoa.nome;

            OTituloReceita.documentoPessoa = OPessoa.nroDocumento;

            OTituloReceita.nroTelPrincipal = string.Concat(OPessoa.dddTelPrincipal, OPessoa.nroTelPrincipal);

            OTituloReceita.nomeRecibo = OPessoa.nome;

            OTituloReceita.documentoRecibo = OPessoa.nroDocumento;

            OTituloReceita.nroTelPrincipal = OPessoa.nroTelPrincipal;

            OTituloReceita.nroTelSecundario = OPessoa.nroTelSecundario;

            //Carregar E-mails da Pessoa
            var listaEmails = OPessoa.retornarListaEmails();

            if (listaEmails.Any())
            {
                OTituloReceita.emailPrincipal = listaEmails.Select(x => x.email).FirstOrDefault();
            }

            //Carregar E-mails da Pessoa
            var listaTelefones = OPessoa.retornarListaTelefones();

            if (listaTelefones.Any())
            {
                OTituloReceita.nroTelPrincipal = listaTelefones.Select(x => x.nroTelefone).FirstOrDefault();
            }

            //Carregar Endereco da Pessoa
            var listaEnderecos = OPessoa.retornarListaEnderecos();

            var OEndereco = listaEnderecos.FirstOrDefault(x => !string.IsNullOrEmpty(x.cep)) ?? new PessoaEndereco();

            OTituloReceita.cepRecibo = OEndereco.cep;

            OTituloReceita.logradouroRecibo = OEndereco.logradouro;

            OTituloReceita.complementoRecibo = OEndereco.complemento;

            OTituloReceita.numeroRecibo = OEndereco.numero;

            OTituloReceita.bairroRecibo = OEndereco.bairro;

            OTituloReceita.idCidadeRecibo = OEndereco.idCidade;
        }
Exemplo n.º 18
0
        //Carregar o titulo de receita (se houver)
        private TituloReceita carregarTitulo(AssociadoContribuicao OAssociadoContribuicao)
        {
            TituloReceita TituloExistente = this.OTituloReceitaMensalidadeBL.carregarPorReceita(OAssociadoContribuicao.id);

            if (TituloExistente != null)
            {
                return(TituloExistente);
            }

            //this.OTituloReceitaMensalidadeBL.gerar( OAssociadoContribuicao as object );

            TituloExistente = this.OTituloReceitaMensalidadeBL.carregarPorReceita(OAssociadoContribuicao.id);

            return(TituloExistente);
        }
        //Liquidar receita de acordo com lista de pagamentos informada
        public virtual TituloReceita liquidar(TituloReceita OTituloReceita, List <TituloReceitaPagamento> listaPagamentos)
        {
            if (OTituloReceita.dtQuitacao.HasValue)
            {
                this.liquidar(OTituloReceita);

                return(OTituloReceita);
            }

            //this.OTituloReceitaBL.removerParcelas(OTituloReceita.id, OTituloReceita.idUsuarioAlteracao);

            foreach (var OPagamento in listaPagamentos)
            {
                OPagamento.idMeioPagamento = OPagamento.definirMeioPagamento();

                OPagamento.idFormaPagamento = OPagamento.definirFormaPagamento();

                OPagamento.dtPrevisaoCredito = OPagamento.dtPrevisaoCredito.HasValue? OPagamento.dtPrevisaoCredito: OPagamento.dtCredito;

                OPagamento.dtCredito = OPagamento.dtCredito;

                OPagamento.idTituloReceita = OTituloReceita.id;

                OPagamento.valorOriginal = UtilNumber.toDecimal(OTituloReceita.valorTotal);

                OPagamento.dtBaixa = DateTime.Now;

                OPagamento.flagBaixaAutomatica = false;

                OPagamento.idUsuarioBaixa = OTituloReceita.idUsuarioAlteracao;

                if (OTituloReceita.dtVencimento.HasValue)
                {
                    OPagamento.dtVencimento = OTituloReceita.dtVencimento.Value;
                }

                OPagamento.setDefaultInsertValues();

                this.db.TituloReceitaPagamento.Add(OPagamento);
            }

            this.db.SaveChanges();

            this.liquidar(OTituloReceita);

            return(OTituloReceita);
        }
Exemplo n.º 20
0
        public ActionResult excluir(TituloReceita ViewModel)
        {
            if (ViewModel.motivoExclusao.isEmpty())
            {
                this.Flash(UtilMessage.TYPE_MESSAGE_ERROR, "Informe o motivo da exclusão.");
                return(View("modal-excluir-receita", ViewModel));
            }

            var ORetorno = this.OTituloReceitaExclusaoBL.excluir(ViewModel.id, ViewModel.motivoExclusao);

            if (ORetorno.flagError == false)
            {
                return(Json(new { error = false, message = "Receita removida com sucesso", urlRetorno = Url.Action("editar", "ReceitaDetalhe", new { area = "Financeiro", id = ViewModel.id }) }));
            }

            this.Flash(UtilMessage.TYPE_MESSAGE_ERROR, ORetorno.listaErros.FirstOrDefault());
            return(View("modal-excluir-receita", ViewModel));
        }
        //
        private List <TituloReceitaPagamento> ajustarPagamentos(TituloReceita OReceitaClone, List <TituloReceitaPagamento> listaPagamentosClone)
        {
            listaPagamentosClone.ForEach(x => {
                x.idStatusPagamento = StatusPagamentoConst.ABERTO;

                x.dtCompetencia = OReceitaClone.dtCompetencia;

                x.mesCompetencia = OReceitaClone.dtCompetencia?.Month.toByte();

                x.anoCompetencia = Convert.ToInt16(OReceitaClone.dtCompetencia?.Year);

                x.dtVencimentoOriginal = OReceitaClone.dtVencimento;

                x.dtVencimento = OReceitaClone.dtVencimento;
            });

            return(listaPagamentosClone);
        }
        //Atualizar os dados de um titulo de receita
        private void atualizar(TituloReceita OTituloReceita)
        {
            OTituloReceita.listaDescontosAntecipacao = null;

            TituloReceita dbTitulo = this.db.TituloReceita.Find(OTituloReceita.id);

            var entryTitulo = db.Entry(dbTitulo);

            entryTitulo.CurrentValues.SetValues(OTituloReceita);

            OTituloReceita.setDefaultUpdateValues();

            entryTitulo.State = EntityState.Modified;

            entryTitulo.ignoreFields(new[] { "idPessoa", "idOrganizacao", "idUnidade", "idCentroCusto", "idReceita" });

            db.SaveChanges();
        }
        //
        public UtilRetorno clonar(TituloReceita OReceita, int qtdeReplicacoes)
        {
            var ORetorno = UtilRetorno.newInstance(false);

            var OReceitaClone = this.carregarDadosReceitaBase(OReceita.id);

            if (OReceitaClone == null)
            {
                ORetorno.flagError = true;

                ORetorno.listaErros.Add("A Receita informada não foi encontrada.");

                return(ORetorno);
            }

            OReceitaClone.id = 0;

            OReceitaClone.idTituloReceitaOrigem = OReceita.id;

            OReceitaClone.descricao = OReceita.descricao;

            if (OReceita.idPessoa != OReceitaClone.idPessoa)
            {
                OReceitaClone.idPessoa = OReceita.idPessoa;

                OReceitaClone.tratarDadosPessoa();
            }

            OReceitaClone.dtCompetencia = OReceita.dtCompetencia;

            OReceitaClone.mesCompetencia = Convert.ToByte(OReceita.dtCompetencia?.Month);

            OReceitaClone.anoCompetencia = Convert.ToInt16(OReceita.dtCompetencia?.Year);

            OReceitaClone.dtVencimento = OReceita.dtVencimento;

            OReceitaClone.dtVencimentoOriginal = OReceita.dtVencimento;

            OReceitaClone.dtQuitacao = null;

            ORetorno = this.salvarReceitas(OReceitaClone, qtdeReplicacoes);

            return(ORetorno);
        }
Exemplo n.º 24
0
        //Chamador das ações do evento
        public void execute(object source)
        {
            try {
                int idTituloReceita = UtilNumber.toInt32(source);

                TituloReceita OTituloReceita = OTituloReceitaBL.carregar(idTituloReceita);

                this.AssociadoContribuicao = this.OAssociadoContribuicaoBL.carregar(UtilNumber.toInt32(OTituloReceita.idReceita));

                this.registrarPagamento(OTituloReceita);

                this.enviarEmailPagamento(AssociadoContribuicao);

                this.OAssociadoAcaoBL.atualizarUltimoPagamentoContribuicao(this.AssociadoContribuicao);

                new TarefaInadimplencia().executar();
            } catch (Exception ex) {
                UtilLog.saveError(ex, "Erro no manipulador de evento: OnContribuicaoQuitadaHandler");
            }
        }
        //
        private void gerarPagamento(TituloReceita OTituloReceita)
        {
            var OPagamento = new TituloReceitaPagamento();

            OPagamento.transferirDadosTitulo(OTituloReceita);

            OPagamento.idMeioPagamento = MeioPagamentoConst.TRANSFERENCIA_ELETRONICA;

            OPagamento.idFormaPagamento = FormaPagamentoConst.TRANSFERENCIA_BANCARIA;

            OPagamento.idStatusPagamento = StatusPagamentoConst.PAGO;

            OPagamento.dtPagamento = OTituloReceita.dtQuitacao;

            OPagamento.dtCredito = OTituloReceita.dtQuitacao;

            OPagamento.valorRecebido = OTituloReceita.valorTotal;

            OTituloReceitaPagamentoBL.salvar(OPagamento);
        }
        //Registrar a liquidacao do titulo (pagamento total)
        public override TituloReceita liquidar(TituloReceita OTituloReceita)
        {
            var dbTitulo = OTituloReceitaBL.carregar(OTituloReceita.id);

            var listaPagamentos = dbTitulo.listaTituloReceitaPagamento.Where(x => x.dtExclusao == null).ToList();

            bool flagTituloQuitado = listaPagamentos.All(x => x.dtPagamento != null);

            if (flagTituloQuitado)
            {
                dbTitulo.dtQuitacao = listaPagamentos.Max(x => x.dtPagamento);

                db.SaveChanges();

                this.onMensalidadeQuitada.subscribe(new OnMensalidadeQuitadaHandler());

                this.onMensalidadeQuitada.publish((dbTitulo.id as object));
            }

            return(OTituloReceita);
        }
Exemplo n.º 27
0
        /// <summary>
        /// Registrar a liquidacao do titulo (pagamento total)
        /// Registrar a quitacao no pedido também alteração do status
        /// </summary>
        public override TituloReceita liquidar(TituloReceita OTituloReceita)
        {
            var OTituloLiquidado = base.liquidar(OTituloReceita);

            if (!OTituloLiquidado.dtQuitacao.HasValue)
            {
                return(OTituloLiquidado);
            }

            var OPagamento = PagamentoConsultaBL.query(1)
                             .Where(x => x.idTituloReceita == OTituloLiquidado.id)
                             .Select(x => new { x.id, x.idTituloReceita, x.idMeioPagamento })
                             .FirstOrDefault();

            byte?idMeioPagamentoParam = null;

            if (OPagamento != null)
            {
                idMeioPagamentoParam = OPagamento.idMeioPagamento;
            }

            var Movimento = this.MediadorCompra.carregarDados(OTituloReceita.idPessoa.toInt(), 1, OTituloReceita.valorTotalComDesconto(), OTituloReceita.idReceita.toInt());

            Movimento.flagPagamentoComBitkink = idMeioPagamentoParam == MeioPagamentoConst.BITLINK;

            Movimento.flagIgnorarSaldo = Movimento.flagPagamentoComBitkink == false;

            UtilRetorno ORetorno = this.CompraFacade.pagar(Movimento);

            if (ORetorno.flagError)
            {
                return(OTituloLiquidado);
            }

            this.atualizarPedido(OTituloLiquidado, idMeioPagamentoParam);

            return(OTituloLiquidado);
        }
        //Liquidar um título de receita a partir do próprio título
        //A parcelas precisam já ter tido os seus pagamentos registrados
        public virtual TituloReceita liquidar(TituloReceita OTituloReceita)
        {
            var listaParcelas = this.db.TituloReceitaPagamento
                                .Where(x => x.idTituloReceita == OTituloReceita.id && x.dtExclusao == null)
                                .ToList();

            decimal valorTotalRecebido = listaParcelas.Where(x => x.dtPagamento.HasValue).Sum(x => x.valorRecebido.toDecimal());

            decimal valorDescontoAntecipacao = listaParcelas.Where(x => x.dtPagamento.HasValue).Sum(x => x.valorDescontoAntecipacao.toDecimal());

            decimal valorDescontoCupom = listaParcelas.Where(x => x.dtPagamento.HasValue).Sum(x => x.valorDescontoCupom.toDecimal());

            decimal valorTotalDescontoParcelas = decimal.Add(valorDescontoCupom, valorDescontoAntecipacao);

            //Diminuir os descontos registros diretamente no título
            decimal valorTotalTitulo = decimal.Subtract(OTituloReceita.valorTotal.toDecimal(), OTituloReceita.valorDesconto.toDecimal());

            //Diminuir os descontos acrescentados no checkout ou por antecipacao de pagamento
            valorTotalTitulo = decimal.Subtract(valorTotalTitulo, valorTotalDescontoParcelas);

            if (valorTotalRecebido < valorTotalTitulo)
            {
                return(OTituloReceita);
            }

            OTituloReceita.dtQuitacao = listaParcelas.Max(x => x.dtPagamento);

            this.db.TituloReceita.Where(x => x.id == OTituloReceita.id)
            .Update(x => new TituloReceita {
                dtQuitacao = OTituloReceita.dtQuitacao,
                ativo      = true
            }
                    );

            this.onTituloQuitado.publish((OTituloReceita.id as object));

            return(OTituloReceita);
        }
Exemplo n.º 29
0
        /// <summary>
        /// Faz a alteração de qualquer campo informado
        /// </summary>
        private UtilRetorno alterarCampo(TituloReceita OItem, LogAlteracao OLog)
        {
            var ORetorno = UtilRetorno.newInstance(true);

            var listaCamposEditaveis = new[] {
                "observacao", "flagFixa", "valorTotal", "idContaBancaria", "idCentroCusto", "idMacroConta", "idCategoria", "idGatewayPermitido", "limiteParcelamento",
                "nroNotaFiscal", "nroContabil", "nroContrato", "nroDocumento", "dtLimitePagamento",
                "flagBoletoBancarioPermitido", "flagDepositoPermitido", "flagCartaoCreditoPermitido", "emailPrincipal", "descricao"
            };

            if (!listaCamposEditaveis.Contains(OLog.nomeCampoAlterado))
            {
                return(UtilRetorno.newInstance(true, "Campo informado não pode ser editado"));
            }

            OLog.valorAntigo = OItem.alterarValorCampo(OLog.nomeCampoAlterado, OLog.valorNovo);

            if (OLog.valorAntigo == null)
            {
                ORetorno.listaErros.Add("O valor informado é inválido");
                return(ORetorno);
            }

            var successSave = db.SaveChanges();

            if (successSave > 0)
            {
                OLog.valorNovo      = OItem.getValorCampo(OLog.nomeCampoAlterado);
                OLog.oldValueSelect = OLog.valorAntigo.isEmpty() ? null : OLog.oldValueSelect;
                OLogAlteracaoBL.salvar(OLog);

                ORetorno.flagError = false;
                return(ORetorno);
            }

            ORetorno.listaErros.Add("Não foi possível salvar o registro no banco.");
            return(ORetorno);
        }
Exemplo n.º 30
0
        //Metodo para geracao do titulo de receita
        public override UtilRetorno gerar(object OrigemTitulo)
        {
            Pedido OPedido = (OrigemTitulo as Pedido);

            if (OPedido == null)
            {
                return(UtilRetorno.newInstance(true, "O registro Pedido está nulo."));
            }

            //Verificar se o titulo já existe
            var OTituloReceita = this.OTituloReceitaBL.carregarPorReceita(OPedido.id);

            if (OTituloReceita != null)
            {
                return(UtilRetorno.newInstance(false, "O título já foi gerado anteriormente.", OTituloReceita));
            }

            var OConfigEcommerce = OConfiguracaoEcommerceBL.carregar(User.idOrganizacao(), false);

            OTituloReceita = new TituloReceita();

            OTituloReceita.idPessoa = OPedido.idPessoa;

            OTituloReceita.idTipoReceita = (byte)idTipoReceita;

            OTituloReceita.idReceita = OPedido.id;

            OTituloReceita.idOrganizacao = OPedido.idOrganizacao.toInt();

            OTituloReceita.idUnidade = OPedido.idUnidade;

            OTituloReceita.limiteParcelamento = OConfigEcommerce.qtdeLimiteParcelas;

            OTituloReceita.qtdeRepeticao = 1;

            OTituloReceita.mesCompetencia = (byte?)OPedido.dtFaturamento?.Month;

            OTituloReceita.anoCompetencia = (short?)OPedido.dtFaturamento?.Year;

            if (OTituloReceita.mesCompetencia > 0 && OTituloReceita.anoCompetencia > 0)
            {
                byte?diaCompetencia = OPedido.dtFaturamento?.Day.toByte();

                diaCompetencia = diaCompetencia.toByte() > 0 ? diaCompetencia.toByte() : (byte)1;

                OTituloReceita.dtCompetencia = new DateTime(OTituloReceita.anoCompetencia.toInt(), OTituloReceita.mesCompetencia.toInt(), diaCompetencia.toInt());
            }

            OTituloReceita.idContaBancaria = OPedido.idContaBancaria;

            OTituloReceita.idCentroCusto = OPedido.idCentroCusto;

            OTituloReceita.idMacroConta = OPedido.idMacroConta;

            OTituloReceita.idCategoria = OPedido.idCategoriaTitulo;

            OTituloReceita.flagCartaoCreditoPermitido = OPedido.flagCartaoCreditoPermitido;

            OTituloReceita.flagBoletoBancarioPermitido = OPedido.flagBoletoBancarioPermitido;

            OTituloReceita.flagDepositoPermitido = OPedido.flagDepositoPermitido;

            OTituloReceita.descricao = $"Pedido {OPedido.id}";

            OTituloReceita.valorTotal = OPedido.getValorTotal();

            OTituloReceita.dtVencimentoOriginal = OPedido.dtVencimento;

            OTituloReceita.dtVencimento = OPedido.dtVencimento;

            this.preencherRecibo(ref OTituloReceita, OPedido.Pessoa);

            this.salvar(OTituloReceita);

            return(UtilRetorno.newInstance(false, "O título foi gerado com sucesso.", OTituloReceita));
        }