Table of Contents |
---|
Operações de sistema
O serviço autônomo responsável por gerar lançamento é o GeracaoLancamentosContratosBatch que é executado uma vez ao dia, de acordo com o agendamento da classe GeracaoLancamentosContratosScheduler.
Seleção dos contratos
Este batch seleciona todos os contratos que cumpram os seguintes critérios:
...
#
...
Campo
...
Descrição
...
1
...
Tipo de registro
...
Table of Contents |
---|
Operações de sistema
O serviço autônomo responsável por gerar lançamento é o GeracaoLancamentosContratosBatch que é executado uma vez ao dia, de acordo com o agendamento da classe GeracaoLancamentosContratosScheduler.
Seleção dos contratos
Este batch seleciona todos os contratos que cumpram os seguintes critérios:
# | Campo | Descrição |
---|---|---|
1 | Tipo de registro | O campo "Tipo de registro" do contrato deve ser igual a "Locação". |
2 | Contrato ativo | O campo "Ativo" deve ser igual a "Verdadeiro". |
3 | Contrato para faturar | O campo "Faturar" deve ser igual a "Verdadeiro". |
4 | Data do próximo lançamento | O campo "Data do próximo lançamento" deve ser igual à data da execução do serviço. |
...
Se o “Tipo de vencimento” (contrato.tipo_vencimento__c) for igual a “Antecipado” e “Período de apuração” (parametrizacao.snap_brok__Periodo_apuracao_faturamento__c) do objeto de parametrizações do SnapProperty for igual a “Mês fechado”
A “Data do lançamento” = data de término da apuração - 1 mês
Se o período de apuração igual “Mês fechado”
Terminar de documentar mês fechado.
Se o período de apuração igual “Mês aberto”
Se o mês da “Data do próximo reajuste” (contrato.Data_proximo_reajuste__c) for igual ao mês da “data de vencimento da próxima fatura” (contrato.Data_vencimento_proxima_fatura__c) e o ano da “Data do próximo reajuste” (contrato.Data_proximo_reajuste__c) do contrato for igual ao ano da “data de vencimento da próxima fatura” (contrato.Data_vencimento_proxima_fatura__c):
Se não houve erro para calcular o reajuste do aluguel o sistema irá criar o lançamento de aluguel da seguinte forma:
O campo “Contrato de administração” (lancamentoContrato.Contrato__c) do lançamento = “Contrato de administração” (contrato.Contrato_administracao__c) que está sendo gerado o lançamento;
O campo “Contrato de locação” (lancamentoContrato.Contrato_locacao__c) do lançamento = “Contrato de locação” (contrato.contrato.Id) que está sendo gerado o lançamento;
O campo “Ciclo de locação” (lancamentoContrato.Ciclo_locacao__r) do lançamento = ao ciclo financeiro criado na etapa anterior;
O campo “Data do lançamento” (lancamentoContrato.Data_lancamento__c) do lançamento = a datalancamento é igual a “data de lançamento” recebida como parâmetro do método;
O campo “Histórico” (lancamentoContrato.Historico__c) do lançamento = Histórico. Esse histórico é composto da seguinte forma: “Aluguel referente ao período de "Início de apuração" a "Término de apuração".”
O campo “Imóvel” (lancamentoContrato.Imovel__c) do lançamento = “Imóvel” (contrato.Imovel__c) que está sendo gerado o lançamento;
O campo “Tipo de registro” do lançamento = “Locatário” ou o campo “Tipo de registro” do lançamento = “Locador”;
O campo “Situação” (Lancamentocontrato.Situacao__c) do lançamento = “Aprovado”;
O campo “Tipo de lançamento” (lancamentoContrato.Tipo_lancamento_contrato__c) do lançamento = “Aluguel”;
O campo “Valor do lançamento” (lancamentoContrato.Valor_lancamento__c) do lançamento = valorLancamento. Se o processamento entrou na condicional de reajuste de aluguel, o valor será o valor reajustado processado pelo método de reajuste, caso contrário, será o valor corrigido do aluguel do contrato. Esse valor poderá ser negativo se for “Locatário” ou positivo se for “Locador”.
...
Se o sistema entrou nessa condicional, significa que está no mês e ano do reajuste do contrato e, portanto, será realizado o reajuste de acordo ao processamento do reajuste do aluguel. Para entender a lógica do reajuste consulte o artigo xxxxxxxxxxxxxxxxxxxxxxx.
O sistema também inicializará a renovação do seguro contra incêndio pois após o reajuste do contrato é necessário novos lançamentos de seguro para esse contrato. Para saber mais sobre o processamento do módulo de seguro, consulte o artigo xxxxxxxxxxxxxxxxxx.
...
gerarLancamentosTaxaAdministração
// calcula a taxa de administração
Decimal taxaAdministracao = (contrato.Valor_aluguel_corrigido__c * contrato.Taxa_administracao__c/100).setScale(2);
// cria o histórico do lançamento
String historico = String.format('Taxa de administração de {0}% sobre o aluguel de R$ {1} referente ao período de {2} a {3}',
new String[] {contrato.Taxa_administracao__c.format(), contrato.Valor_aluguel_corrigido__c.format(), inicioHist.format(), terminoHist.format()});
Este método recebe como parâmetro a “Data de início de apuração” e “Término de apuração” que foi calculada na etapa anterior de período de apuração.
Se o “Tipo de vencimento” (contrato.tipo_vencimento__c) for igual a “Antecipado” e “Período de apuração” (parametrizacao.snap_brok__Periodo_apuracao_faturamento__c) do objeto de parametrizações do SnapProperty for igual a “Mês fechado”
A “Data do lançamento” = data de término da apuração - 1 mês
Se o período de apuração igual “Mês fechado”
Terminar de documentar mês fechado.
Se o período de apuração igual “Mês aberto”
Se o mês da “Data do próximo reajuste” (contrato.Data_proximo_reajuste__c) for igual ao mês da “data de vencimento da próxima fatura” (contrato.Data_vencimento_proxima_fatura__c) e o ano da “Data do próximo reajuste” (contrato.Data_proximo_reajuste__c) do contrato for igual ao ano da “data de vencimento da próxima fatura” (contrato.Data_vencimento_proxima_fatura__c):
Se não houve erro para calcular o reajuste do aluguel o sistema irá criar o lançamento de aluguel da seguinte forma:
O campo “Contrato de administração” (lancamentoContrato.Contrato__c) do lançamento = “Contrato de administração” (contrato.Contrato_administracao__c) que está sendo gerado o lançamento;
O campo “Contrato de locação” (lancamentoContrato.Contrato_locacao__c) do lançamento = “Contrato de locação” (contrato.contrato.Id) que está sendo gerado o lançamento;
O campo “Ciclo de locação” (lancamentoContrato.Ciclo_locacao__r) do lançamento = ao ciclo financeiro criado na etapa anterior;
O campo “Data do lançamento” (lancamentoContrato.Data_lancamento__c) do lançamento = a datalancamento é igual a “data de lançamento” recebida como parâmetro do método;
O campo “Histórico” (lancamentoContrato.Historico__c) do lançamento = Histórico. Esse histórico é composto da seguinte forma: “Taxa de administração de {0}% sobre o aluguel de R$ {1} referente ao período de {2} a {3}',” sendo os campos
O campo “Imóvel” (lancamentoContrato.Imovel__c) do lançamento = “Imóvel” (contrato.Imovel__c) que está sendo gerado o lançamento;
O campo “Tipo de registro” do lançamento = “Locatário” ou o campo “Tipo de registro” do lançamento = “Locador”;
O campo “Situação” (Lancamentocontrato.Situacao__c) do lançamento = “Aprovado”;
O campo “Tipo de lançamento” (lancamentoContrato.Tipo_lancamento_contrato__c) do lançamento = “Aluguel”;
O campo “Valor do lançamento” (lancamentoContrato.Valor_lancamento__c) do lançamento = valorLancamento. Se o processamento entrou na condicional de reajuste de aluguel, o valor será o valor reajustado processado pelo método de reajuste, caso contrário, será o valor corrigido do aluguel do contrato. Esse valor poderá ser negativo se for “Locatário” ou positivo se for “Locador”.
Irá criar o lançamento de aluguel da seguinte forma:
Crédito | Débito | |
---|---|---|
Contrato de administração | Número do contrato de administração que originou o lançamento | Número do contrato de administração que originou o lançamento |
Contrato de locação | Número do contrato de locação que originou o lançamento | Número do contrato de locação que originou o lançamento |
Ciclo de locação | Número do ciclo que originou o lançamento | Número do ciclo que originou o lançamento |
Data do lançamento | Data de vencimento da próxima fatura | Data de vencimento da próxima fatura |
Histórico | Aluguel referente ao período de "Início de apuração" a "Término de apuração" | Aluguel referente ao período de "Início de apuração" a "Término de apuração" |
Imóvel | Imóvel principal do contrato | Imóvel principal do contrato |
Tipo de registro | Locador | Locatário |
Situação | Aprovado | Aprovado |
Tipo de lançamento | Aluguel | Aluguel |
Valor do lançamento | Valor do aluguel corrigido |
|
if (contrato.Tipo_vencimento__c == 'Antecipado' && regraApuracao.equalsIgnoreCase('Mês fechado')){
dataLancamento = terminoApuracao.addMonths(-1);
}
// calcula a taxa de administração
Decimal taxaAdministracao = (contrato.Valor_aluguel_corrigido__c * contrato.Taxa_administracao__c/100).setScale(2);
// cria o histórico do lançamento
String historico = String.format('Taxa de administração de {0}% sobre o aluguel de R$ {1} referente ao período de {2} a {3}',
new String[] {contrato.Taxa_administracao__c.format(), contrato.Valor_aluguel_corrigido__c.format(), inicioHist.format(), terminoHist.format()});
// criar lançamento para debitar o locador
Lancamento_contrato__c debito = new Lancamento_contrato__c(
Contrato__c = contrato.Contrato_administracao__c,
Contrato_locacao__c = contrato.Id,
Ciclo_locacao__r = ciclo,
Data_lancamento__c = dataLancamento,
Historico__c = historico,
RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get('Locador').getRecordTypeId(),
Situacao__c = 'Aprovado',
Tipo_lancamento_contrato__c = 'Taxa de administração',
Valor_lancamento__c = - taxaAdministracao);
lancamentos.add(debito);
// criar lançamento para creditar a administradora
Lancamento_contrato__c credito = new Lancamento_contrato__c(
Contrato__c = contrato.Contrato_administracao__c,
Contrato_locacao__c = contrato.Id,
Ciclo_locacao__r = ciclo,
Data_lancamento__c = dataLancamento,
Historico__c = historico,
RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get('Administradora').getRecordTypeId(),
Situacao__c = 'Aprovado',
Tipo_lancamento_contrato__c = 'Taxa de administração',
Valor_lancamento__c = taxaAdministracao);
lancamentos.add(credito);