Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
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.

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; ';

...

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.

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:

  1. Se o campo “Ativo” (contrato.Ativo__c) for nulo o sistema incrementará a mensagem de erro: 'A periodicidade de reajuste do valor do aluguel O contrato ainda não foi definidaativado; ';

  2. Se o campo “Valor do aluguel original” “Faturar” (contrato.ValorFaturar_aluguel__c) for nulo o sistema incrementará a mensagem de erro: 'Valor do aluguel não foi definidoO contrato não está habilitado para faturamento; ';

  3. Se o campo “Valor do aluguel corrigido” “Data de início de Vigência” (contrato.ValorData_aluguelinicio_corrigidovigencia__c) for nulo o sistema incrementará a mensagem de erro: 'Valor do aluguel corrigido Data de início de vigência não foi definidodefinida; ';

  4. Se o campo “Taxa de administração” “Data da posse do locatário” (contrato.TaxaData_posse_administracaolocatario__c) for nulo o sistema incrementará a mensagem de erro: 'Taxa de administração do O contrato ainda não foi definidaativado; ';

  5. Se o campo “Taxa de intermediação para locação” “Empresa” (contrato.TaxaEmpresa_intermediacao__c) for nulo o sistema incrementará a mensagem de erro: 'Taxa de intermediação A empresa administradora do contrato não foi definida; ';

  6. Se o campo “Data vencimento da próxima fatura” “Tipo de vencimento” (contrato.DataTipo_vencimento_proxima_fatura__c) for nulo o sistema incrementará a mensagem de erro: 'Data O tipo de vencimento da próxima fatura do contrato não foi preenchidadefinido; ';

  7. Se o campo “Data “Periodicidade do próximo lançamento”reajuste” (contrato.DataPeridiocidade_proximoreajuste_aluguel__c) for nulo o sistema incrementará a mensagem de erro: 'Data do próximo lançamento A periodicidade de reajuste do valor do aluguel não foi preenchidadefinida; ';

  8. Se o campo “Locatário” “Valor do aluguel original” (contrato.snap_brok__LocatarioValor_aluguel__c) for nulo o sistema incrementará a mensagem de erro: 'O locatário Valor do aluguel não foi preenchidadefinido; ';

  9. Se o campo “Locador” “Valor do aluguel corrigido” (contrato.snapValor_brokaluguel__Locadorcorrigido__c) for nulo o sistema incrementará a mensagem de erro: 'O locador Valor do aluguel corrigido não foi preenchidadefinido; ';

  10. Se o campo “Carteira” “Taxa de administração” (contrato.Empresa__r.snap_finan__Carteira__Taxa_administracao__c) for nulo o sistema incrementará a mensagem de erro: 'A carteira da empresa Taxa de administração do contrato não foi preenchidadefinida; ';

  11. Se o campo “Gerar lançamentos para IPTU” “Taxa de intermediação para locação” (contrato.GerarTaxa_lancamento_iptuintermediacao__c) estiver igual a “Ativo”:

    O sistema validará também:

    se o campo “Responsável pelo IPTU” (contrato.Responsavel_iptu

    for nulo o sistema incrementará a mensagem de erro: 'Taxa de intermediação do contrato não foi definida; ';

  12. Se o campo “Data vencimento da próxima fatura” (contrato.Data_vencimento_proxima_fatura__c) for

    igual a

    nulo

    será incrementado o seguinte

    o sistema incrementará a mensagem de erro: '

    O responsável do IPTU

    Data de vencimento da próxima fatura não foi

    preenchido

    preenchida; ';

    se
  13. Se o campo

    “Pagante IPTU”

    “Data do próximo lançamento” (contrato.

    Pagante

    Data_proximo_

    iptu

    aluguel__c) for

    igual a

    nulo

    será incrementado o seguinte

    o sistema incrementará a mensagem de erro: '

    O pagante

    Data do

    IPTU

    próximo lançamento não foi

    preenchido

    preenchida; ';

     

  14. 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

    Se o campo “Locatário” (contrato.snap_brok__Locatario__c)

    , caso esse campo seja nulo será incrementado o seguinte

    for nulo o sistema incrementará a mensagem de erro: 'O

    valor do IPTU do imóvel ' + “Imóvel” (imovel.Imovel__r.Name) + '

    locatário não foi preenchida; ';

    “Rateio IPTU” (imovel.Imovel__r.Rateio_iptu
  15. Se o campo “Locador” (contrato.snap_brok__Locador__c)

    , caso esse campo seja nulo será incrementado o seguinte

    for nulo o sistema incrementará a mensagem de erro: 'O

    valor do rateio do IPTU do imóvel ' + “Imóvel” (imovel.Imovel

    locador não foi preenchida; ';

  16. Se o campo “Carteira” (contrato.Empresa__r.

    Name) + '

    snap_finan__Carteira__c) for nulo o sistema incrementará a mensagem de erro: 'A carteira da empresa não foi preenchida; ';

  17. Se o campo “Gerar lançamentos para condomínio”IPTU” (contrato.Gerar_lancamento_condominioiptu__c) estiver igual a “Ativo”:

    1. O sistema validará também:

      1. se o campo “Responsável condomínio” pelo IPTU” (contrato.Responsavel_condominioiptu__c) for igual a nulo será incrementado o seguinte erro: 'O responsável do condomínio IPTU não foi preenchido; ';  

      2. se o campo “Pagante condomínio” IPTU” (contrato.Pagante_condominioiptu__c) for igual a nulo será incrementado o seguinte erro: 'O pagante do condomínio IPTU não foi preenchido; ';    

      3. 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:

        1. se o campo “Valor do condomínio” (imovel.Valor_condominio“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; ';

        2. “Rateio IPTU” (imovel.Imovel__r.Rateio_iptu__c), caso esse campo seja nulo será incrementado o seguinte erro: 'O valor do condomínio rateio do IPTU do imóvel ' + “Imóvel”  (imovel.Imovel__r.Name) + ' não foi preenchida; ';

  18. Se o campo “Gerar lançamentos para condomínio” (contrato.Gerar_lancamentoslancamento_coleta_lixocondominio__c) estiver igual a “Ativo”:

    1. O sistema validará também:

      1. se o campo “Responsável coleta de lixo” condomínio” (contrato.Responsavel_coletacondominio_lixo__c) for igual a nulo será incrementado o seguinte erro: 'O responsável da coleta do lixo condomínio não foi preenchido; ';  

      2. se o campo “Pagante coleta de lixo” condomínio” (contrato.Pagante_coletacondominio_lixo__c) for igual a nulo será incrementado o seguinte erro: 'O pagante da coleta do lixo condomínio não foi preenchido; ';   

      3. 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:

        1. se o campo “Valor mensal de coleta de lixo”do condomínio” (imovel.Imovel__r.Valor_mensalcondominio_Coleta_lixo__c), caso esse campo seja nulo será incrementado o seguinte erro: 'O valor da coleta do lixo condomínio do imóvel ' +   “Imóvel” (imovel.Imovel__r.Name) + ' não foi preenchida; ';

  19. Se o campo “Gerar lançamentos para condomínio” (contrato.Gerar_lancamentos_taxacoleta_marinhalixo__c) estiver igual a “Ativo”:

    1. O sistema validará também:

      1. se o campo “Responsável taxa marinha” coleta de lixo” (contrato.Responsavel_taxacoleta_marinhalixo__c) for igual a nulo será incrementado o seguinte erro: 'O responsável da taxa marinha coleta do lixo não foi preenchido; '; 

      2. se o campo “Pagante taxa marinha” coleta de lixo” (contrato.Pagante_taxacoleta_marinhalixo__c) for igual a nulo será incrementado o seguinte erro: 'O pagante da taxa marinha coleta do lixo não foi preenchido; '; 

      3. 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:

        1. se o campo “Valor mensal de coleta de taxa marinha” lixo” (imovel.Imovel__r.Valor_mensal_TaxaColeta_Marinhalixo__c), caso esse campo seja nulo será incrementado o seguinte erro: 'O valor da taxa marinha coleta do lixo 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:

  1. Se o campo “Papel” do participante (part.snap_brok__Papel__c) se for igual “Locatário”

    1. Se o campo “Tipo de Pessoa” (part.snap_brok__Participante__r.snap_finan__tipo_pessoa__c) da conta do participante for igual “Física”

      1. 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) + '
        1. .Imovel__r.Name) + ' não foi preenchida; ';

  2. Se o campo “Gerar lançamentos para condomínio” (contrato.Gerar_lancamentos_taxa_marinha__c) estiver igual a “Ativo”:

    1. O sistema validará também:

      1. 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

      2. se o campo “CPF - ERP” (part.snap_brok__Participante__r.snap_finan__CPFF “Pagante taxa marinha” (contrato.Pagante_taxa_marinha__c) da conta do participante estiver nulo o sistema incrementará a mensagem de for igual a nulo será incrementado o seguinte erro: 'O CPF (ERP) do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' pagante da taxa marinha 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”

      1. 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;';

      2. Se a campo “Razão social”  

      3. 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:

        1. 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:

  1. Se o campo “Papel” do participante (part.snap_brok__

    Participante_

    Papel_

    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”

    c) se for igual “Locatário”

    1. Se o campo “Tipo de Pessoa” (part.snap_brok__Participante__r.

      Name) + ' não foi preenchida; ';

      snap_finan__tipo_pessoa__c) da conta do participante for igual “Física”

      1. Se o campo

    “Endereço para cobrança”
      1. “CPF” (part.snap_brok__Participante__r.snap_finan__

    Logradouro
      1. Cpf_

    cobranca
      1. 2__

    c
      1. pc) da conta do participante

    for
      1. estiver nulo o sistema incrementará a mensagem de erro: 'O

    logradouro
      1. CPF do

    endereço de cobrança do
      1. locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchido; ';

      2. Se o campo

    “Bairro para cobrança”
      1. “CPF - ERP” (part.snap_brok__Participante__r.snap_finan__

    Bairro
      1. CPFF_

    cobranca
      1. _

    _
      1. c) da conta do participante

    for
      1. estiver nulo o sistema incrementará a mensagem de erro: 'O

    bairro do endereço de cobrança do
      1. CPF (ERP) do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchido; ';

    1. Se o

    campo “CEP para cobrança”
    1. “Tipo de pessoa” (part.snap_brok__Participante__r.snap_finan__

    Cep
    1. tipo_

    cobranca
    1. pessoa__c) da conta do participante for diferente de “Física”

      1. 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

    cep do endereço de cobrança
      1. CNPJ do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchido;';

      2. Se

    o campo “Cidade para cobrança”
      1. a campo “Razão social” (part.snap_brok__Participante__r.snap_finan__

    Cidade
      1. razao_

    para
      1. social_

    cobranca
      1. _

    texto__
      1. c) da conta do participante

    for
      1. estiver nulo, o sistema incrementará a mensagem de erro: 'A

    cidade do endereço de cobrança do
      1. razão social do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchida; ';

  2. Se o campo “UF “Endereço para cobrança” (part.snap_brok__Participante__r.snap_finan__UF_paraLogradouro_cobranca__c) da conta do participante for nulo o sistema incrementará a mensagem de erro: 'O estado (UF) logradouro do endereço de cobrança do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchidapreenchido; ';

  3. Se o

...

  1. O valor do campo “Validado para faturamento” (contratocampo “Bairro para cobrança” (part.snap_brok__ValidadoParticipante_faturamento__c) será colocado com “Falso”.

  2. O campo “Erros para faturamento” (contrato.snap_brok__Erros_faturamento__c) será preenchido com os erros incrementados durante a validação.

  3. o campo “Situação do lançamento” (contrato_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__SituacaoParticipante_faturamento__c) será preenchido com“Erro”.

...

  1. r.Name) + ' não foi preenchido; ';

  2. Se o campo “CEP para cobrança” (part.snap_brok__

...

  1. Participante__r.snap_finan__Cep_cobranca__c)

...

  1. da conta do participante for nulo o sistema

...

  1. incrementará a mensagem de erro: 'O

...

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

...

  1. cep do endereço de cobrança do locatário ' + “Nome da conta” (part.snap_brok__Participante__r.Name) + ' não foi preenchido; ';

  2. 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__

...

  1. Participante_

...

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

...

  1. _r.Name) + ' não foi preenchida; ';

  2. 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á:

  1. O valor do campo “Validado para faturamento” (contrato.snap_brok__

...

  1. Validado_

...

  1. faturamento_

...

  1. _

...

  1. c)

...

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.

...

  1. será colocado com “Falso”.

  2. O campo “Erros para faturamento” (contrato.snap_brok__Erros_faturamento__c) será preenchido com os erros incrementados durante a validação.

  3. o campo “Situação do lançamento” (contrato.snap_brok__Situacao_faturamento__c) será preenchido com“Erro”.

Note

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)

...

  • Se as duas condições acima não foram atendidasfor maior que 28:

    • Término de apuração = dia do vencimento do contrato, igual 28, mês igual a mês da data de término de apuração definida na etapa anterior, da apuração - 1 mês, ano igual ao ano da data de término de apuração definida 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 = término ano do início de apuração - 1 mês - 1 dia, mês do início de apuração e último dia encontrado na etapa anterior.

Se o sistema entrou neste processamento, significa nessa condicional, quer dizer que o mês dia de vencimento 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.

...

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 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 = ciclo;

      • O campo “Data do lançamento” (lancamentoContrato.Data_lancamento__c) do lançamento = datalancamento;

      • O campo “Histórico” (lancamentoContrato.Historico__c) do lançamento = Histórico

      • 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” (Lancamento_contrato__c.getRecordTypeInfosByName()) do lançamento = “Locatário”;

      • 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 negativo.

  • 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) 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 “Término de apuração” que foi calculada na etapa anterior de período de apuração.

  •   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,
                               Imovel__c = contrato.Imovel__c,
                               RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get('Locatário').getRecordTypeId(),
                               Situacao__c = 'Aprovado',
                               Tipo_lancamento_contrato__c = 'Aluguel',
                               Valor_lancamento__c = - valorLancamento);
                           lancamentos.add(debito);
                           system.debug('aluguel débito: ' + debito);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 “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: “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 negativo se for débito ou O campo “Valor do lançamento” (lancamentoContrato.Valor_lancamento__c) do lançamento = valorLancamento positivo se for crédito

Irá criar o lançamento de aluguel da seguinte forma:

...

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.

Se não for mês e ano do reajuste do contrato, o sistema criará o lançamento de aluguel sem passar pelo processamento do reajuste nem geração do seguro contra incêndio. Os lançamentos de alugueis ficarão da seguinte forma:

...