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” do participante (part.snap_brok__Participante__r.snap_finan__tipo_pessoa__c) for igual “Física”
Se o campo “CPF” estiver nulo (part.snap_brok__Participante__r.snap_finan__Cpf_2__pc) 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” estiver nulo (part.snap_brok__Participante__r.snap_finan__CPFF__c) 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) for diferente de “Física”
Se o campo “CNPJ” 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” estiver nulo (part.snap_brok__Participante__r.snap_finan__razao_social__c) 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” do participante (part.snap_brok__Participante__r.snap_finan__Logradouro_cobranca__c) 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” do participante (part.snap_brok__Participante__r.snap_finan__Bairro_cobranca__c) 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” do participante (part.snap_brok__Participante__r.snap_finan__Cep_cobranca__c) 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” do participante (part.snap_brok__Participante__r.snap_finan__Cidade_para_cobranca_texto__c) 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” do participante (part.snap_brok__Participante__r.snap_finan__UF_para_cobranca__c) 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” será colocado com “Falso”
O campo “Erros para faturamento” será preenchido com os erros incrementados durante a validação.
E, como consequência de algum erro encontrado, esse contrato em questão contrato não seguirá no processamento para a geração de lançamentos.
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.