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. |
Observação: Os contratos que tiverem o campo “Situação do lançamento” igual a “Pendente” e as condições acima listadas cumpridas (com exceção do campo “Data do próximo lançamento”) também serão inclusos no processamento.
Após selecionar os contratos será executado o método gerarLancamentosContratoLocacao da classe ContratoServico.
gerarLancamentosContratoLocacao
Ao iniciar esse método, o processamento passará por uma validação de contratos que será executada pelo método validarContratoFaturamento da classe ContratoServico.
validarContratoFaturamento
Essa validação realiza a verificação dos contratos e, para cada contrato que foi selecionado, funciona da seguinte forma:
Se o campo “Ativo” (contrato.Ativo__c) for nulo o sistema incrementará a mensagem de erro: 'O contrato ainda não foi ativado; ';
Se o campo “Faturar” (contrato.Faturar__c) for nulo o sistema incrementará a mensagem de erro: 'O contrato não está habilitado para faturamento; ';
Se o campo “Data de início de Vigência” (contrato.Data_inicio_vigencia__c) for nulo o sistema incrementará a mensagem de erro: 'Data de início de vigência não foi definida; ';
Se o campo “Data da posse do locatário” (contrato.Data_posse_locatario__c) for nulo o sistema incrementará a mensagem de erro: 'O contrato ainda não foi ativado; ';
Se o campo “Empresa” (contrato.Empresa__c) for nulo o sistema incrementará a mensagem de erro: 'A empresa administradora do contrato não foi definida; ';
Se o campo “Tipo de vencimento” (contrato.Tipo_vencimento__c) for nulo o sistema incrementará a mensagem de erro: 'O tipo de vencimento do contrato não foi definido; ';
Se o campo “Periodicidade do reajuste” (contrato.Peridiocidade_reajuste__c) for nulo o sistema incrementará a mensagem de erro: 'A periodicidade de reajuste do valor do aluguel não foi definida; ';
Se o campo “Valor do aluguel original” (contrato.Valor_aluguel__c) for nulo o sistema incrementará a mensagem de erro: 'Valor do aluguel não foi definido; ';
Se o campo “Valor do aluguel corrigido” (contrato.Valor_aluguel_corrigido__c) for nulo o sistema incrementará a mensagem de erro: 'Valor do aluguel corrigido não foi definido; ';
Se o campo “Taxa de administração” (contrato.Taxa_administracao__c) for nulo o sistema incrementará a mensagem de erro: 'Taxa de administração do contrato não foi definida; ';
Se o campo “Taxa de intermediação para locação” (contrato.Taxa_intermediacao__c) for nulo o sistema incrementará a mensagem de erro: 'Taxa de intermediação do contrato não foi definida; ';
Se o campo “Data vencimento da próxima fatura” (contrato.Data_vencimento_proxima_fatura__c) for nulo o sistema incrementará a mensagem de erro: 'Data de vencimento da próxima fatura não foi preenchida; ';
Se o campo “Data do próximo lançamento” (contrato.Data_proximo_aluguel__c) for nulo o sistema incrementará a mensagem de erro: 'Data do próximo lançamento não foi preenchida; ';
Se o campo “Locatário” (contrato.snap_brok__Locatario__c) for nulo o sistema incrementará a mensagem de erro: 'O locatário não foi preenchida; ';
Se o campo “Locador” (contrato.snap_brok__Locador__c) for nulo o sistema incrementará a mensagem de erro: 'O locador não foi preenchida; ';
Se o campo “Carteira” (contrato.Empresa__r.snap_finan__Carteira__c) for nulo o sistema incrementará a mensagem de erro: 'A carteira da empresa não foi preenchida; ';
Se o campo “Gerar lançamentos para IPTU” (contrato.Gerar_lancamento_iptu__c) estiver igual a “Ativo”:
O sistema validará também:
se o campo “Responsável pelo IPTU” (contrato.Responsavel_iptu__c) for igual a nulo será incrementado o seguinte erro: 'O responsável do IPTU não foi preenchido; ';
se o campo “Pagante IPTU” (contrato.Pagante_iptu__c) for igual a nulo será incrementado o seguinte erro: 'O pagante do IPTU não foi preenchido; ';
se o contrato tiver algum imóvel cadastrado o sistema irá percorrer os imóveis e, para cada imóvel do contrato, validará as seguintes informações:
“Valor mensal do IPTU” (imovel.Imovel__r.Valor_iptu__c), caso esse campo seja nulo será incrementado o seguinte erro: 'O valor do IPTU do imóvel ' + “Imóvel” (imovel.Imovel__r.Name) + ' não foi preenchida; ';
“Rateio IPTU” (imovel.Imovel__r.Rateio_iptu__c), caso esse campo seja nulo será incrementado o seguinte erro: 'O valor do rateio do IPTU do imóvel ' + “Imóvel” (imovel.Imovel__r.Name) + ' não foi preenchida; ';
Se o campo “Gerar lançamentos para condomínio” (contrato.Gerar_lancamento_condominio__c) estiver igual a “Ativo”:
O sistema validará também:
se o campo “Responsável condomínio” (contrato.Responsavel_condominio__c) for igual a nulo será incrementado o seguinte erro: 'O responsável do condomínio não foi preenchido; ';
se o campo “Pagante condomínio” (contrato.Pagante_condominio__c) for igual a nulo será incrementado o seguinte erro: 'O pagante do condomínio não foi preenchido; ';
se o contrato tiver algum imóvel cadastrado o sistema irá percorrer os imóveis e, para cada imóvel do contrato, validará as seguintes informações:
se o campo “Valor do condomínio” (imovel.Valor_condominio__c), caso esse campo seja nulo será incrementado o seguinte erro: 'O valor do condomínio do imóvel ' + “Imóvel” (imovel.Imovel__r.Name) + ' não foi preenchida; ';
Se o campo “Gerar lançamentos para condomínio” (contrato.Gerar_lancamentos_coleta_lixo__c) estiver igual a “Ativo”:
O sistema validará também:
se o campo “Responsável coleta de lixo” (contrato.Responsavel_coleta_lixo__c) for igual a nulo será incrementado o seguinte erro: 'O responsável da coleta do lixo não foi preenchido; ';
se o campo “Pagante coleta de lixo” (contrato.Pagante_coleta_lixo__c) for igual a nulo será incrementado o seguinte erro: 'O pagante da coleta do lixo não foi preenchido; ';
se o contrato tiver algum imóvel cadastrado o sistema irá percorrer os imóveis e, para cada imóvel do contrato, validará as seguintes informações:
se o campo “Valor mensal de coleta de lixo” (imovel.Imovel__r.Valor_mensal_Coleta_lixo__c), caso esse campo seja nulo será incrementado o seguinte erro: 'O valor da coleta do lixo do imóvel ' + “Imóvel” (imovel.Imovel__r.Name) + ' não foi preenchida; ';
Se o campo “Gerar lançamentos para condomínio” (contrato.Gerar_lancamentos_taxa_marinha__c) estiver igual a “Ativo”:
O sistema validará também:
se o campo “Responsável taxa marinha” (contrato.Responsavel_taxa_marinha__c) for igual a nulo será incrementado o seguinte erro: 'O responsável da taxa marinha não foi preenchido; ';
se o campo “Pagante taxa marinha” (contrato.Pagante_taxa_marinha__c) for igual a nulo será incrementado o seguinte erro: 'O pagante da taxa marinha não foi preenchido; ';
se o contrato tiver algum imóvel cadastrado o sistema irá percorrer os imóveis e, para cada imóvel do contrato, validará as seguintes informações:
se o campo “Valor mensal de taxa marinha” (imovel.Imovel__r.Valor_mensal_Taxa_Marinha__c), caso esse campo seja nulo será incrementado o seguinte erro: 'O valor da taxa marinha do imóvel ' + “Imóvel” (imovel.Imovel__r.Name) + ' não foi preenchida; ';
Após, o sistema irá percorrer os participantes do contrato e validar as seguintes informações para cada participante encontrado:
Se o campo “Papel” do participante (part.snap_brok__Papel__c) se for igual “Locatário”
Se o campo “Tipo de Pessoa” (part.snap_brok__Participante__r.snap_finan__tipo_pessoa__c) da conta do participante for igual “Física”
Se o campo “CPF” (part.snap_brok__Participante__r.snap_finan__Cpf_2__pc) da conta do participante estiver nulo o sistema incrementará a mensagem de erro: 'O CPF do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchido; ';
Se o campo “CPF - ERP” (part.snap_brok__Participante__r.snap_finan__CPFF__c) da conta do participante estiver nulo o sistema incrementará a mensagem de erro: 'O CPF (ERP) do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchido; ';
Se o “Tipo de pessoa” (part.snap_brok__Participante__r.snap_finan__tipo_pessoa__c) da conta do participante for diferente de “Física”
Se o campo “CNPJ” da conta do participante estiver nulo (part.snap_brok__Participante__r.snap_finan__CNPJ__c) o sistema incrementará a mensagem de erro: 'O CNPJ do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchido;';
Se a campo “Razão social” (part.snap_brok__Participante__r.snap_finan__razao_social__c) da conta do participante estiver nulo, o sistema incrementará a mensagem de erro: 'A razão social do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchida; ';
Se o campo “Endereço para cobrança” (part.snap_brok__Participante__r.snap_finan__Logradouro_cobranca__c) da conta do participante for nulo o sistema incrementará a mensagem de erro: 'O logradouro do endereço de cobrança do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name)+ ' não foi preenchido; ';
Se o campo “Bairro para cobrança” (part.snap_brok__Participante__r.snap_finan__Bairro_cobranca__c) da conta do participante for nulo o sistema incrementará a mensagem de erro: 'O bairro do endereço de cobrança do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchido; ';
Se o campo “CEP para cobrança” (part.snap_brok__Participante__r.snap_finan__Cep_cobranca__c) da conta do participante for nulo o sistema incrementará a mensagem de erro: 'O cep do endereço de cobrança do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchido; ';
Se o campo “Cidade para cobrança” (part.snap_brok__Participante__r.snap_finan__Cidade_para_cobranca_texto__c) da conta do participante for nulo o sistema incrementará a mensagem de erro: 'A cidade do endereço de cobrança do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchida; ';
Se o campo “UF para cobrança” (part.snap_brok__Participante__r.snap_finan__UF_para_cobranca__c) da conta do participante for nulo o sistema incrementará a mensagem de erro: 'O estado (UF) do endereço de cobrança do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchida; ';
Se o sistema incrementou uma ou mais mensagens de erro em alguma das validações acima, ele atualizará:
O valor do campo “Validado para faturamento” (contrato.snap_brok__Validado_faturamento__c) será colocado com “Falso”.
O campo “Erros para faturamento” (contrato.snap_brok__Erros_faturamento__c) será preenchido com os erros incrementados durante a validação.
o campo “Situação do lançamento” (contrato.snap_brok__Situacao_faturamento__c) será preenchido com “Erro”.
O sistema valida o campo “Quantidade de dias para lançamentos” (parametrizacao.snap_brok__Quantidades_dias_para_lancamentos__c) do registro “Padrão” do parametrizações do SnapProperty, se o campo estiver nulo o sistema dará o seguinte erro: 'O parâmetro com a quantidade de dias para lançamentos não foi definido', abortando a geração de lançamento.
Se o sistema encontrar algum erro na validação acima descrita, incluirá os contratos com erro em uma lista para notificação por e-mail. Os contratos que foram validados com sucesso seguirão para geração de lançamento.
Período de Apuração
Existem duas modalidades de período de apuração para a geração de lançamentos “Mês aberto” e “Mês fechado” para definir qual será o tipo de apuração da org será verificado o campo “Período de apuração do faturamento” (parametrizacao.snap_brok__Periodo_apuracao_faturamento__c) do objeto de parametrizações do SnapProperty.
Glossário
Término de apuração: Término de apuração será a data limite final que o sistema se utilizará para apurar os lançamentos, por exemplo, um aluguel tem sua data de término de apuração definindo até quando será pago aquele aluguel.
Início de apuração: Início de apuração será a data inicial que o sistema se utilizará para apurar os lançamentos, por exemplo, um aluguel tem sua data de início de apuração definindo desde quando será pago aquele aluguel.
Mês Aberto
Término de apuração = data do “Data do próximo lançamento” (contrato.Data_proximo_aluguel__c) do contrato + “Dias do lançamento” (parametrizacao.snap_brok__Quantidades_dias_para_lancamentos__c) do objeto parametrizações do SnapProperty.
Se o mês da “Data do próximo lançamento” (contrato.Data_proximo_aluguel__c) do contrato for igual a 2 e “Tipo de vencimento” (contrato.tipo_vencimento__c) do contrato for igual “Vencido” e “Dia do vencimento” (contrato.Dia_vencimento__c) for maior que 28:
Término de apuração = dia igual 28, mês igual a mês da data de término da apuração - 1 mês, ano igual ao ano da data de término da apuração.
Início de apuração = data do término de apuração - 1 mês.
O sistema define qual é o último dia do mês do início de apuração calculado na etapa anterior.
Início de apuração = ano do início de apuração, mês do início de apuração e último dia encontrado na etapa anterior.
Se o sistema entrou nessa condicional, quer dizer que o dia de vencimento do contrato não está aderente com o mês de fevereiro que o lançamento compete, pois o mês de fevereiro, com exceção de anos bissextos, não possui mais que 28 dias e, portanto, a data de apuração deverá respeitar o último dia do mês de fevereiro e não o dia de vencimento estipulado no contrato no campo “Dias de vencimento” (contrato.Dia_vencimento__c).
Senão se o mês da “Data do próximo lançamento” (contrato.Data_proximo_aluguel__c) do contrato for igual a 2 e “Tipo de vencimento” (contrato.tipo_vencimento__c) do contrato for igual “Antecipado” e “Dia do vencimento” (contrato.Dia_vencimento__c) for maior que 28:
Término de apuração = dia igual 28, mês igual a mês da data do término da apuração - 1 mês, ano igual ao ano da data de término da apuração.
Início de apuração = data do término de apuração - 1 mês.
O sistema define qual é o último dia do mês do início de apuração calculado na etapa anterior.
Início de apuração = ano do início de apuração, mês do início de apuração e último dia encontrado na etapa anterior.
Se o sistema entrou nessa condicional, quer dizer que o dia de vencimento do contrato não está aderente com o mês de fevereiro que o lançamento compete, pois o mês de fevereiro, com exceção de anos bissextos, não possui mais que 28 dias e, portanto, a data de apuração deverá respeitar o último dia do mês de fevereiro e não o dia de vencimento estipulado no contrato no campo “Dias de vencimento” (contrato.Dia_vencimento__c).
Se as duas condições acima não foram atendidas:
Término de apuração = dia do vencimento do contrato, mês da data de término de apuração definida na etapa anterior, ano da data de término de apuração definida na etapa anterior.
Início de apuração = término de apuração - 1 mês - 1 dia.
Se o sistema entrou neste processamento, significa que o mês do lançamento não é fevereiro e, portanto, seguirá o processamento dos dias normalmente. Este processamento consiste em adicionar quantidade de dias para lançamento na data do próximo lançamento, sendo assim, define o término da apuração como sendo a data de vencimento da próxima fatura e o início de apuração como sendo menos um mês desta data mais um dia, para que o lançamento não cobre o valor novamente do último dia que já foi apurado no mês anterior.
Se “Tipo de vencimento” (contrato.tipo_vencimento__c) igual Antecipado
Se o contrato é antecipado haverá um acréscimo de mais um mês para o término da apuração pois isso significa que a apuração deste lançamento compete ao mês seguinte de quando ele está sendo cobrado (primeiro paga depois usufrui):
Término de apuração = “início de apuração” (que foi definido na etapa anterior) + 1 mês - 1 dia.
Mês Fechado
Ciclo financeiro
O sistema cria um ciclo financeiro para controles dos lançamentos agrupados:
Os campos “Ano” e “Mês” que constará no ciclo financeiro será o ano e mês do “Término de apuração”.
gerarLancamentosAluguel
Este método recebe como parâmetro a “Data de início de apuração” e “Data de término de apuração” que foram calculadas 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: “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”.
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 | - Valor do aluguel corrigido |
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 ??
Este método recebe como parâmetro a “Data de início de apuração” e “Data de término de apuração” que foram calculadas 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 a taxa de administração o sistema irá criar o lançamento de taxa de administração 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 “Taxa de administração” (contrato.snap_brok__Taxa_administracao__c), “Valor do aluguel corrigido” (contrato.snap_brok__Valor_aluguel_corrigido__c), "Início de apuração" e "Término de apuração" respectivamente.
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 = “Administradora” 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 = “Taxa de administração”;
O campo “Valor do lançamento” (lancamentoContrato.Valor_lancamento__c) do lançamento = taxaAdministracao. Esse valor do lançamento é composto da seguinte forma: “Valor do aluguel corrigido” * “Taxa de administração”/100, isto é, (contrato.Valor_aluguel_corrigido__c * contrato.Taxa_administracao__c/100). Esse valor poderá ser negativo se for “Locador” ou positivo se for “Administradora”.
Irá criar o lançamento de taxa de administração 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 | “Taxa de administração de {0}% sobre o aluguel de R$ {1} referente ao período de {2} a {3}',” sendo os campos “Taxa de administração” (contrato.snap_brok__Taxa_administracao__c), “Valor do aluguel corrigido” (contrato.snap_brok__Valor_aluguel_corrigido__c), "Início de apuração" e "Término de apuração" respectivamente. | “Taxa de administração de {0}% sobre o aluguel de R$ {1} referente ao período de {2} a {3}',” sendo os campos “Taxa de administração” (contrato.snap_brok__Taxa_administracao__c), “Valor do aluguel corrigido” (contrato.snap_brok__Valor_aluguel_corrigido__c), "Início de apuração" e "Término de apuração" respectivamente. |
Imóvel | Imóvel principal do contrato | Imóvel principal do contrato |
Tipo de registro | Adminstradora | Locador |
Situação | Aprovado | Aprovado |
Tipo de lançamento | Taxa de administração | Taxa de administração |
Valor do lançamento | Valor da taxa de administração calculada | - Valor da taxa de administração calculada |
gerarLancamentosIptuContrato
Este método recebe como parâmetro a “Data de início de apuração” e “Data de término de apuração” que foram calculadas na etapa anterior de período de apuração além dos parâmetros “Lançamento do contrato” e “Ciclo da locação” List<Lancamento_contrato__c> lancamentos, Ciclo_locacao__c ciclo ??
Parametrizacao__c parametrizacao = ParametrizacaoServico.Parametrizacao;
String regraApuracao = parametrizacao.snap_brok__Periodo_apuracao_faturamento__c;
Date dataLancamento = inicioApuracao;
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 campo “Gerar Lançamentos para IPTU” do contrato de locação (contrato.Gerar_lancamento_iptu__c) estiver como “Ativo” o sistema faz as seguintes verificações:
Enquanto o contrato tiver mais de um imóvel, o sistema gera um lançamento de IPTU para cada imóvel do contrato. for (Imovel_contrato__c imovel: contrato.Imoveis_contrato__r)
Os valores são calculados da seguinte forma:
O campo rateioIptu = “Rateio para IPTU” do imóvel (imovel.Imovel__r.Rateio_iptu__c). Quando este campo não for informado, o sistema considera o valor do rateio como 100%.
O campo valorIptu = “Valor Mensal do IPTU” do imóvel (imovel.Imovel__r.Valor_iptu__c) * o campo “Rateio para IPTU” dividido por 100, isto é, (imovel.Imovel__r.Valor_iptu__c * rateioIptu / 100). Quando o campo “Valor mensal do IPTU” não for encontrado, o sistema considerá como zero.
O campo historico = “IPTU do imóvel {0} no valor de R$ {1} referente ao rateio de {2}%'“ sendo preenchido com os campos “Imóvel” (imovel.Imovel__r.Name), valorIptu calculado anteriormente e rateioIptu também calculado anteriormente;
Se o campo “Responsável pelo IPTU” for igual a “Locatário” e o “Pagante IPTU” for igual a “Locatário” if (contrato.Responsavel_iptu__c.equalsIgnoreCase('Locatário') && contrato.Pagante_iptu__c.equalsIgnoreCase('Locatário')){
o locatário deve enviar o comprovante de pagamento do IPTU para a administradora.
Senão o sistema irá criar o lançamento de IPTU 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: “IPTU do imóvel {0} no valor de R$ {1} referente ao rateio de {2}%'“ sendo preenchido com os campos “Imóvel” (imovel.Imovel__r.Name), valorIptu calculado anteriormente e rateioIptu também calculado anteriormente;
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 = “Responsável pelo IPTU” (contrato.Responsavel_iptu__c) ou “Pagante IPTU” (contrato.Pagante_iptu__c);
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 = “IPTU”;
O campo “Valor do lançamento” (lancamentoContrato.Valor_lancamento__c) do lançamento = valorIptu. Esse valor do lançamento é composto pela variável valorIptu anteriormente calculado da seguinte forma: “Valor Mensal do IPTU” do imóvel (imovel.Imovel__r.Valor_iptu__c) * o campo “rateioIptu” dividido por 100, isto é, (imovel.Imovel__r.Valor_iptu__c * rateioIptu / 100). Quando o campo “Valor mensal do IPTU” não for encontrado, o sistema considerá como zero. Esse valor poderá ser negativo para o “Responsável pelo IPTU” ou positivo para o “Pagante IPTU”.
Resumindo:
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 | “IPTU do imóvel {0} no valor de R$ {1} referente ao rateio de {2}%'“ sendo preenchido com os campos “Imóvel” (imovel.Imovel__r.Name), valorIptu calculado anteriormente e rateioIptu também calculado anteriormente | “IPTU do imóvel {0} no valor de R$ {1} referente ao rateio de {2}%'“ sendo preenchido com os campos “Imóvel” (imovel.Imovel__r.Name), valorIptu calculado anteriormente e rateioIptu também calculado anteriormente |
Imóvel | Imóvel principal do contrato | Imóvel principal do contrato |
Tipo de registro | Pagante do IPTU | Responsável pelo IPTU |
Situação | Aprovado | Aprovado |
Tipo de lançamento | IPTU | IPTU |
Valor do lançamento | Valor do IPTU calculado | - Valor do IPTU calculado |
Após a criação do lançamento de IPTU o sistema poderá criar o lançamento da taxa de serviço do IPTU.
Se o campo "Taxa de serviço para encargo" do contrato (contrato.Taxa_de_servico_para_encargo__c) for diferente de nulo e o campo "Pagante do IPTU" for igual a "Administradora", o sistema realiza as seguintes atividades para gerar um lançamento de taxa de serviço para IPTU. if (contrato.Pagante_IPTU__c == 'Administradora' && contrato.Taxa_de_servico_para_encargo__c != null){
DEscrever os itens abaixo
System.debug('Taxa de serviço >>>');
System.debug('lancamentos.size() >>>' + lancamentos.size());
String responsavel = contrato.snap_brok__Responsavel_IPTU__c;
String pagante = contrato.snap_brok__Pagante_IPTU__c;
if(parametrizacao.snap_brok__Locador_paga_taxa_servico__c){
responsavel = 'Locador';
}O campo “Histórico” (lancamentoContrato.Historico__c) do lançamento = Histórico. Esse histórico é composto da seguinte forma: “Taxa de serviço de {0}% para pagamento do IPTU do imóvel {1} referente ao rateio de {2}%'”, sendo preenchido com os campos “Taxa de serviço para encargo” (contrato.Taxa_de_servico_para_encargo__c), “Imóvel” (imovel.Imovel__r.Name), “rateioIptu” calculado anteriormente, respectivamente.
O campo “Valor do lançamento” (lancamentoContrato.Valor_lancamento__c) do lançamento = valorTaxa. Esse valor do lançamento é composto pela variável valorIptu (calculado anteriormente) * “Taxa de serviço para encargo” (contrato.Taxa_de_servico_para_encargo__c) dividido por 100, isto é, (valorIptu * contrato.Taxa_de_servico_para_encargo__c/100). Esse valor poderá ser negativo para o “Responsável pelo IPTU” ou positivo para o “Pagante IPTU”.
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 “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 = “Responsável pelo IPTU” (contrato.Responsavel_iptu__c) ou “Pagante IPTU” (contrato.Pagante_iptu__c);
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 = “Taxa de serviço IPTU”;
descrever abaixo isso:
System.debug('lancamentos.size() >>>' + lancamentos.size());
}
} //Imovel_contrato__c imovel: contrato.Imoveis_contrato__r
} // contrato.Gerar_lancamento_iptu__c
}
catch (Exception ex){
throw new ContratoException('Erro na geração dos lançamentos de iptu do contrato de locação: ' + ex.getMessage() + ' na linha ' + ex.getLineNumber());
}
}
Resumindo:
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 | “Taxa de serviço de {0}% para pagamento do IPTU do imóvel {1} referente ao rateio de {2}%'”, sendo preenchido com os campos “Taxa de serviço para encargo” (contrato.Taxa_de_servico_para_encargo__c), “Imóvel” (imovel.Imovel__r.Name), “rateioIptu” calculado anteriormente, respectivamente. | “Taxa de serviço de {0}% para pagamento do IPTU do imóvel {1} referente ao rateio de {2}%'”, sendo preenchido com os campos “Taxa de serviço para encargo” (contrato.Taxa_de_servico_para_encargo__c), “Imóvel” (imovel.Imovel__r.Name), “rateioIptu” calculado anteriormente, respectivamente. |
Imóvel | Imóvel principal do contrato | Imóvel principal do contrato |
Tipo de registro | Pagante do IPTU | Responsável pelo IPTU |
Situação | Aprovado | Aprovado |
Tipo de lançamento | Taxa de serviço IPTU | Taxa de serviço IPTU |
Valor do lançamento | Valor da taxa de IPTU calculada | - Valor da taxa de IPTU calculada |