Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

...

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

...

gerarLancamentosTaxaAdministracao

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_

    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 Ativoo 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”.

...

  • 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

   

public static void gerarLancamentosCondominioContrato(Contrato__c contrato, Date inicioApuracao, Date terminoApuracao, List<Lancamento_contrato__c> lancamentos, Ciclo_locacao__c ciclo){
        System.debug('contrato > ' + contrato);
        System.debug('lancamentos > ' + lancamentos);
        try {
            Lancamento_contrato__c debito;
            Lancamento_contrato__c credito;
            String historico;
            Decimal valorCondominio;
           
            Parametrizacao__c parametrizacao = ParametrizacaoServico.Parametrizacao;
           
            String regraApuracao = parametrizacao.snap_brok__Periodo_apuracao_faturamento__c;
           
            Date dataLancamento = inicioApuracao;
           
            if (contrato.Tipo_vencimento__c == 'Antecipado' && regraApuracao.equalsIgnoreCase('Mês fechado')){
                dataLancamento = terminoApuracao.addMonths(-1);
            }
           
            System.debug('contrato.Gerar_lancamento_condominio__c > ' + contrato.Gerar_lancamento_condominio__c);
            if (contrato.Gerar_lancamento_condominio__c){
               
                for (Imovel_contrato__c imovel: contrato.Imoveis_contrato__r) {
                   
                    valorCondominio = imovel.Imovel__r.Valor_condominio__c;
                    historico = String.format('Condomínio do imóvel {0} no valor de R$ {1}',
                                              new String[]{ imovel.Imovel__r.Name, valorCondominio.format() });
                   
                    if (contrato.Responsavel_condominio__c.equalsIgnoreCase('Locatário') && contrato.Pagante_condominio__c.equalsIgnoreCase('Locatário')){
                        // neste caso o locatário deve enviar o comprovante de pagamento do IPTU
                    }
                    else {
                        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 = imovel.Imovel__c,
                            RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(contrato.Responsavel_condominio__c).getRecordTypeId(),
                            Situacao__c = 'Aprovado',
                            Tipo_lancamento_contrato__c = 'Condomínio',
                            Valor_lancamento__c = -valorCondominio);
                        lancamentos.add(debito);
                       
                        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,
                            Imovel__c = imovel.Imovel__c,
                            RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(contrato.Pagante_condominio__c).getRecordTypeId(),
                            Situacao__c = 'Aprovado',
                            Tipo_lancamento_contrato__c = 'Condomínio',
                            Valor_lancamento__c = valorCondominio);
                        lancamentos.add(credito);
                    }
                   
                    if (contrato.snap_brok__Pagante_condominio__c == 'Administradora' && contrato.Taxa_de_servico_para_encargo__c != null){
                       
                        String responsavel = contrato.snap_brok__Responsavel_condominio__c;
                        String pagante = contrato.snap_brok__Pagante_condominio__c;
                       
                        if(parametrizacao.snap_brok__Locador_paga_taxa_servico__c){
                            responsavel = 'Locador';
                        }
                       
                        historico = String.format('Taxa de serviço de {0}% para pagamento do Condomínio do imóvel {1} referente ao valor de R${2}',
                                                  new String[]{ contrato.Taxa_de_servico_para_encargo__c.format(), imovel.Imovel__r.Name, valorCondominio.format()});
                       
                        Decimal valorTaxa = (valorCondominio * contrato.Taxa_de_servico_para_encargo__c/100).setScale(2);
                       
                        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 = imovel.Imovel__c,
                            RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(responsavel).getRecordTypeId(),
                            Situacao__c = 'Aprovado',
                            Tipo_lancamento_contrato__c = 'Taxa de serviço',
                            Valor_lancamento__c = -valorTaxa);
                        lancamentos.add(debito);
                       
                        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,
                            Imovel__c = imovel.Imovel__c,
                            RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(pagante).getRecordTypeId(),
                            Situacao__c = 'Aprovado',
                            Tipo_lancamento_contrato__c = 'Taxa de serviço',
                            Valor_lancamento__c = valorTaxa);
                        lancamentos.add(credito);
                    }
                   
                }
            }
        }
        catch (Exception ex){
            throw new ContratoException('Erro na geração dos lançamentos de condomínio do contrato de locação: ' + ex.getMessage() + ' na linha ' + ex.getLineNumber());
        }
    }-------------------------------------------

 private static void gerarLancamentosTaxaColetaLixoContrato(Contrato__c contrato, Date inicioApuracao, Date terminoApuracao,
                                                               List<Lancamento_contrato__c> lancamentos, Ciclo_locacao__c ciclo){
                                                                   try {
                                                                       Lancamento_contrato__c debito;
                                                                       Lancamento_contrato__c credito;
                                                                       String historico;
                                                                       Decimal valorColetaLixo;
                                                                       
                                                                       Parametrizacao__c parametrizacao = ParametrizacaoServico.Parametrizacao;
                                                                       
                                                                       String regraApuracao = parametrizacao.snap_brok__Periodo_apuracao_faturamento__c;
                                                                       
                                                                       Date dataLancamento = inicioApuracao;
                                                                       
                                                                       if (contrato.Tipo_vencimento__c == 'Antecipado' && regraApuracao.equalsIgnoreCase('Mês fechado')){
                                                                           dataLancamento = terminoApuracao.addMonths(-1);
                                                                       }
                                                                       
                                                                       if (contrato.Gerar_lancamentos_coleta_lixo__c){
                                                                           
                                                                           for (Imovel_contrato__c imovel: contrato.Imoveis_contrato__r) {
                                                                               
                                                                               valorColetaLixo = imovel.Imovel__r.Valor_mensal_Coleta_lixo__c;
                                                                               historico = String.format('Taxa da coleta de lixo do imóvel {0} no valor de R$ {1}',
                                                                                                         new String[]{ imovel.Imovel__r.Name, valorColetaLixo.format() });
                                                                               
                                                                               if (contrato.Responsavel_coleta_lixo__c.equalsIgnoreCase('Locatário') && contrato.Pagante_coleta_lixo__c.equalsIgnoreCase('Locatário')){
                                                                                   // neste caso o locatário deve enviar o comprovante de pagamento da Taxa de Coleta de Lixo
                                                                               }
                                                                               else {
                                                                                   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 = imovel.Imovel__c,
                                                                                       RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(contrato.Responsavel_coleta_lixo__c).getRecordTypeId(),
                                                                                       Situacao__c = 'Aprovado',
                                                                                       Tipo_lancamento_contrato__c = 'Taxa de lixo',
                                                                                       Valor_lancamento__c = -valorColetaLixo);
                                                                                   lancamentos.add(debito);
                                                                                   
                                                                                   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,
                                                                                       Imovel__c = imovel.Imovel__c,
                                                                                       RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(contrato.Pagante_coleta_lixo__c).getRecordTypeId(),
                                                                                       Situacao__c = 'Aprovado',
                                                                                       Tipo_lancamento_contrato__c = 'Taxa de lixo',
                                                                                       Valor_lancamento__c = valorColetaLixo);
                                                                                   lancamentos.add(credito);
                                                                               }
                                                                               
                                                                               /*if (contrato.Responsavel_coleta_lixo__c.equalsIgnoreCase('Locatário') && contrato.Pagante_coleta_lixo__c.equalsIgnoreCase('Administradora')){
debito = new Lancamento_contrato__c(
Contrato__c = contrato.Contrato_administracao__c,
Contrato_locacao__c = contrato.Id,
Ciclo_locacao__r = ciclo,
Data_lancamento__c = contrato.Data_vencimento_proxima_fatura__c,
Historico__c = historico,
Imovel__c = imovel.Imovel__c,
RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get('Locador').getRecordTypeId(),
Situacao__c = 'Aprovado',
Tipo_lancamento_contrato__c = 'Taxa de lixo',
Valor_lancamento__c = -valorColetaLixo);
lancamentos.add(debito);

credito = new Lancamento_contrato__c(
Contrato__c = contrato.Contrato_administracao__c,
Contrato_locacao__c = contrato.Id,
Ciclo_locacao__r = ciclo,
Data_lancamento__c = contrato.Data_vencimento_proxima_fatura__c,
Historico__c = historico,
Imovel__c = imovel.Imovel__c,
RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get('Locador').getRecordTypeId(),
Situacao__c = 'Aprovado',
Tipo_lancamento_contrato__c = 'Taxa de lixo',
Valor_lancamento__c = valorColetaLixo);
lancamentos.add(credito);
}*/
                                                                               
                                                                               if (contrato.snap_brok__Pagante_coleta_lixo__c == 'Administradora' && contrato.Taxa_de_servico_para_encargo__c != null){
                                                                                   
                                                                                   String responsavel = contrato.snap_brok__Responsavel_coleta_lixo__c;
                                                                                   String pagante = contrato.snap_brok__Pagante_coleta_lixo__c;
                                                                                   
                                                                                   if(parametrizacao.snap_brok__Locador_paga_taxa_servico__c){
                                                                                       responsavel = 'Locador';
                                                                                   }
                                                                                   
                                                                                   historico = String.format('Taxa de serviço de {0}% para pagamento da Coleta de lixo do imóvel {1} referente ao valor de R${2}',
                                                                                                             new String[]{ contrato.Taxa_de_servico_para_encargo__c.format(), imovel.Imovel__r.Name, valorColetaLixo.format()});
                                                                                   
                                                                                   Decimal valorTaxa = (valorColetaLixo * contrato.Taxa_de_servico_para_encargo__c/100).setScale(2);
                                                                                   
                                                                                   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 = imovel.Imovel__c,
                                                                                       RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(responsavel).getRecordTypeId(),
                                                                                       Situacao__c = 'Aprovado',
                                                                                       Tipo_lancamento_contrato__c = 'Taxa de serviço',
                                                                                       Valor_lancamento__c = -valorTaxa);
                                                                                   lancamentos.add(debito);
                                                                                   
                                                                                   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,
                                                                                       Imovel__c = imovel.Imovel__c,
                                                                                       RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(pagante).getRecordTypeId(),
                                                                                       Situacao__c = 'Aprovado',
                                                                                       Tipo_lancamento_contrato__c = 'Taxa de serviço',
                                                                                       Valor_lancamento__c = valorTaxa);
                                                                                   lancamentos.add(credito);
                                                                               }
                                                                           }
                                                                       }
                                                                   }
                                                                   catch (Exception ex){
                                                                       throw new ContratoException('Erro na geração dos lançamentos da taxa da coleta de lixo do contrato de locação: ' + ex.getMessage() + ' na linha ' + ex.getLineNumber());
                                                                   }
                                                               }

...

 private static void gerarLancamentosTaxaMarinhaContrato(Contrato__c contrato, Date inicioApuracao, Date terminoApuracao,
                                                            List<Lancamento_contrato__c> lancamentos, Ciclo_locacao__c ciclo){
                                                                try {
                                                                    Lancamento_contrato__c debito;
                                                                    Lancamento_contrato__c credito;
                                                                    String historico;
                                                                    Decimal valorTaxaMarinha;
                                                                   
                                                                    Parametrizacao__c parametrizacao = ParametrizacaoServico.Parametrizacao;
                                                                   
                                                                    String regraApuracao = parametrizacao.snap_brok__Periodo_apuracao_faturamento__c;
                                                                   
                                                                    Date dataLancamento = inicioApuracao;
                                                                   
                                                                    if (contrato.Tipo_vencimento__c == 'Antecipado' && regraApuracao.equalsIgnoreCase('Mês fechado')){
                                                                        dataLancamento = terminoApuracao.addMonths(-1);
                                                                    }
                                                                   
                                                                    if (contrato.Gerar_lancamentos_taxa_marinha__c){
                                                                       
                                                                        for (Imovel_contrato__c imovel: contrato.Imoveis_contrato__r) {
                                                                           
                                                                            valorTaxaMarinha = imovel.Imovel__r.Valor_mensal_Taxa_Marinha__c;
                                                                            historico = String.format('Taxa marinha do imóvel {0} no valor de R$ {1}',
                                                                                                      new String[]{ imovel.Imovel__r.Name, valorTaxaMarinha.format() });
                                                                           
                                                                            if (contrato.Responsavel_taxa_marinha__c.equalsIgnoreCase('Locatário') && contrato.Pagante_taxa_marinha__c.equalsIgnoreCase('Locatário')){
                                                                                // neste caso o locatário deve enviar o comprovante de pagamento da taxa marinha
                                                                            }
                                                                            else {
                                                                                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 = imovel.Imovel__c,
                                                                                    RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(contrato.Responsavel_taxa_marinha__c).getRecordTypeId(),
                                                                                    Situacao__c = 'Aprovado',
                                                                                    Tipo_lancamento_contrato__c = 'Taxa marinha',
                                                                                    Valor_lancamento__c = -valorTaxaMarinha);
                                                                                lancamentos.add(debito);
                                                                               
                                                                                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,
                                                                                    Imovel__c = imovel.Imovel__c,
                                                                                    RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(contrato.Pagante_taxa_marinha__c).getRecordTypeId(),
                                                                                    Situacao__c = 'Aprovado',
                                                                                    Tipo_lancamento_contrato__c = 'Taxa marinha',
                                                                                    Valor_lancamento__c = valorTaxaMarinha);
                                                                                lancamentos.add(credito);
                                                                            }
                                                                           
                                                                            /*if (contrato.Responsavel_taxa_marinha__c.equalsIgnoreCase('Locatário') && contrato.Pagante_taxa_marinha__c.equalsIgnoreCase('Administradora')){
debito = new Lancamento_contrato__c(
Contrato__c = contrato.Contrato_administracao__c,
Contrato_locacao__c = contrato.Id,
Ciclo_locacao__r = ciclo,
Data_lancamento__c = contrato.Data_vencimento_proxima_fatura__c,
Historico__c = historico,
Imovel__c = imovel.Imovel__c,
RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get('Locador').getRecordTypeId(),
Situacao__c = 'Aprovado',
Tipo_lancamento_contrato__c = 'Taxa marinha',
Valor_lancamento__c = -valorTaxaMarinha);
lancamentos.add(debito);

credito = new Lancamento_contrato__c(
Contrato__c = contrato.Contrato_administracao__c,
Contrato_locacao__c = contrato.Id,
Ciclo_locacao__r = ciclo,
Data_lancamento__c = contrato.Data_vencimento_proxima_fatura__c,
Historico__c = historico,
Imovel__c = imovel.Imovel__c,
RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get('Locador').getRecordTypeId(),
Situacao__c = 'Aprovado',
Tipo_lancamento_contrato__c = 'Taxa marinha',
Valor_lancamento__c = valorTaxaMarinha);
lancamentos.add(credito);
}*/
                                                                           
                                                                            if (contrato.snap_brok__Pagante_taxa_marinha__c == 'Administradora' && contrato.Taxa_de_servico_para_encargo__c != null){
                                                                               
                                                                                String responsavel = contrato.snap_brok__Responsavel_taxa_marinha__c;
                                                                                String pagante = contrato.snap_brok__Pagante_taxa_marinha__c;
                                                                               
                                                                                if(parametrizacao.snap_brok__Locador_paga_taxa_servico__c){
                                                                                    responsavel = 'Locador';
                                                                                }
                                                                               
                                                                                historico = String.format('Taxa de serviço de {0}% para pagamento da Taxa marinha do imóvel {1} referente ao valor de R${2}',
                                                                                                          new String[]{ contrato.Taxa_de_servico_para_encargo__c.format(), imovel.Imovel__r.Name, valorTaxaMarinha.format()});
                                                                               
                                                                                Decimal valorTaxa = (valorTaxaMarinha * contrato.Taxa_de_servico_para_encargo__c/100).setScale(2);
                                                                               
                                                                                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 = imovel.Imovel__c,
                                                                                    RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(responsavel).getRecordTypeId(),
                                                                                    Situacao__c = 'Aprovado',
                                                                                    Tipo_lancamento_contrato__c = 'Taxa de serviço',
                                                                                    Valor_lancamento__c = -valorTaxa);
                                                                                lancamentos.add(debito);
                                                                               
                                                                                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,
                                                                                    Imovel__c = imovel.Imovel__c,
                                                                                    RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(pagante).getRecordTypeId(),
                                                                                    Situacao__c = 'Aprovado',
                                                                                    Tipo_lancamento_contrato__c = 'Taxa de serviço',
                                                                                    Valor_lancamento__c = valorTaxa);
                                                                                lancamentos.add(credito);
                                                                            }
                                                                           
                                                                        }
                                                                    }
                                                                }
                                                                catch (Exception ex){
                                                                    throw new ContratoException('Erro na geração dos lançamentos da taxa marinha do contrato de locação: ' + ex.getMessage() + ' na linha ' + ex.getLineNumber());
                                                                }
                                                            }
   
    /**

  • author: André Miranda

  • date: 08/01/2019

  • @descrption: Implementa o caso de uso "Gerar lançamentos da taxa de coleta de lixo para contrato de locação"

  • @param contrato

  • @param lancamentos

  • /

    private static void gerarLancamentosTaxaColetaLixoContrato(Contrato__c contrato, Date inicioApuracao, Date terminoApuracao,
                                                               List<Lancamento_contrato__c> lancamentos, Ciclo_locacao__c ciclo){
                                                                   try {
                                                                       Lancamento_contrato__c debito;
                                                                       Lancamento_contrato__c credito;
                                                                       String historico;
                                                                       Decimal valorColetaLixo;
                                                                       
                                                                       Parametrizacao__c parametrizacao = ParametrizacaoServico.Parametrizacao;
                                                                       
                                                                       String regraApuracao = parametrizacao.snap_brok__Periodo_apuracao_faturamento__c;
                                                                       
                                                                       Date dataLancamento = inicioApuracao;
                                                                       
                                                                       if (contrato.Tipo_vencimento__c == 'Antecipado' && regraApuracao.equalsIgnoreCase('Mês fechado')){
                                                                           dataLancamento = terminoApuracao.addMonths(-1);
                                                                       }
                                                                       
                                                                       if (contrato.Gerar_lancamentos_coleta_lixo__c){
                                                                           
                                                                           for (Imovel_contrato__c imovel: contrato.Imoveis_contrato__r) {
                                                                               
                                                                               valorColetaLixo = imovel.Imovel__r.Valor_mensal_Coleta_lixo__c;
                                                                               historico = String.format('Taxa da coleta de lixo do imóvel {0} no valor de R$ {1}',
                                                                                                         new String[]{ imovel.Imovel__r.Name, valorColetaLixo.format() });
                                                                               
                                                                               if (contrato.Responsavel_coleta_lixo__c.equalsIgnoreCase('Locatário') && contrato.Pagante_coleta_lixo__c.equalsIgnoreCase('Locatário')){
                                                                                   // neste caso o locatário deve enviar o comprovante de pagamento da Taxa de Coleta de Lixo
                                                                               }
                                                                               else {
                                                                                   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 = imovel.Imovel__c,
                                                                                       RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(contrato.Responsavel_coleta_lixo__c).getRecordTypeId(),
                                                                                       Situacao__c = 'Aprovado',
                                                                                       Tipo_lancamento_contrato__c = 'Taxa de lixo',
                                                                                       Valor_lancamento__c = -valorColetaLixo);
                                                                                   lancamentos.add(debito);
                                                                                   
                                                                                   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,
                                                                                       Imovel__c = imovel.Imovel__c,
                                                                                       RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(contrato.Pagante_coleta_lixo__c).getRecordTypeId(),
                                                                                       Situacao__c = 'Aprovado',
                                                                                       Tipo_lancamento_contrato__c = 'Taxa de lixo',
                                                                                       Valor_lancamento__c = valorColetaLixo);
                                                                                   lancamentos.add(credito);
                                                                               }
                                                                               
                                                                               /*if (contrato.Responsavel_coleta_lixo__c.equalsIgnoreCase('Locatário') && contrato.Pagante_coleta_lixo__c.equalsIgnoreCase('Administradora')){
debito = new Lancamento_contrato__c(
Contrato__c = contrato.Contrato_administracao__c,
Contrato_locacao__c = contrato.Id,
Ciclo_locacao__r = ciclo,
Data_lancamento__c = contrato.Data_vencimento_proxima_fatura__c,
Historico__c = historico,
Imovel__c = imovel.Imovel__c,
RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get('Locador').getRecordTypeId(),
Situacao__c = 'Aprovado',
Tipo_lancamento_contrato__c = 'Taxa de lixo',
Valor_lancamento__c = -valorColetaLixo);
lancamentos.add(debito);

credito = new Lancamento_contrato__c(
Contrato__c = contrato.Contrato_administracao__c,
Contrato_locacao__c = contrato.Id,
Ciclo_locacao__r = ciclo,
Data_lancamento__c = contrato.Data_vencimento_proxima_fatura__c,
Historico__c = historico,
Imovel__c = imovel.Imovel__c,
RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get('Locador').getRecordTypeId(),
Situacao__c = 'Aprovado',
Tipo_lancamento_contrato__c = 'Taxa de lixo',
Valor_lancamento__c = valorColetaLixo);
lancamentos.add(credito);
}*/
                                                                               
                                                                               if (contrato.snap_brok__Pagante_coleta_lixo__c == 'Administradora' && contrato.Taxa_de_servico_para_encargo__c != null){
                                                                                   
                                                                                   String responsavel = contrato.snap_brok__Responsavel_coleta_lixo__c;
                                                                                   String pagante = contrato.snap_brok__Pagante_coleta_lixo__c;
                                                                                   
                                                                                   if(parametrizacao.snap_brok__Locador_paga_taxa_servico__c){
                                                                                       responsavel = 'Locador';
                                                                                   }
                                                                                   
                                                                                   historico = String.format('Taxa de serviço de {0}% para pagamento da Coleta de lixo do imóvel {1} referente ao valor de R${2}',
                                                                                                             new String[]{ contrato.Taxa_de_servico_para_encargo__c.format(), imovel.Imovel__r.Name, valorColetaLixo.format()});
                                                                                   
                                                                                   Decimal valorTaxa = (valorColetaLixo * contrato.Taxa_de_servico_para_encargo__c/100).setScale(2);
                                                                                   
                                                                                   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 = imovel.Imovel__c,
                                                                                       RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(responsavel).getRecordTypeId(),
                                                                                       Situacao__c = 'Aprovado',
                                                                                       Tipo_lancamento_contrato__c = 'Taxa de serviço',
                                                                                       Valor_lancamento__c = -valorTaxa);
                                                                                   lancamentos.add(debito);
                                                                                   
                                                                                   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,
                                                                                       Imovel__c = imovel.Imovel__c,
                                                                                       RecordTypeId = Schema.SObjectType.Lancamento_contrato__c.getRecordTypeInfosByName().get(pagante).getRecordTypeId(),
                                                                                       Situacao__c = 'Aprovado',
                                                                                       Tipo_lancamento_contrato__c = 'Taxa de serviço',
                                                                                       Valor_lancamento__c = valorTaxa);
                                                                                   lancamentos.add(credito);
                                                                               }
                                                                           }
                                                                       }
                                                                   }
                                                                   catch (Exception ex){
                                                                       throw new ContratoException('Erro na geração dos lançamentos da taxa da coleta de lixo do contrato de locação: ' + ex.getMessage() + ' na linha ' + ex.getLineNumber());
                                                                   }
                                                               }
   
    /**