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):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”.
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:
Irá criar o lançamento de taxa de administração da seguinte forma:
Crédito | Débito | |
---|---|---|
Contrato de administração | Número do contrato de administração que originou o lançamento | Número do contrato de administração que originou o lançamento |
Contrato de locação | Número do contrato de locação que originou o lançamento | Número do contrato de locação que originou o lançamento |
Ciclo de locação | Número do ciclo que originou o lançamento | Número do ciclo que originou o lançamento |
Data do lançamento | Data de vencimento da próxima fatura | Data de vencimento da próxima fatura |
Histórico | “Taxa de administração de {0}% sobre o aluguel de R$ {1} referente ao período de {2} a {3}',” sendo os campos “Taxa de administração” (contrato.snap_brok__Taxa_administracao__c), “Valor do aluguel corrigido” (contrato.snap_brok__Valor_aluguel_corrigido__c), "Início de apuração" e "Término de apuração" respectivamente. | “Taxa de administração de {0}% sobre o aluguel de R$ {1} referente ao período de {2} a {3}',” sendo os campos “Taxa de administração” (contrato.snap_brok__Taxa_administracao__c), “Valor do aluguel corrigido” (contrato.snap_brok__Valor_aluguel_corrigido__c), "Início de apuração" e "Término de apuração" respectivamente. |
Imóvel | Imóvel principal do contrato | Imóvel principal do contrato |
Tipo de registro | Adminstradora | Locador |
Situação | Aprovado | Aprovado |
Tipo de lançamento | Taxa de administração | Taxa de administração |
Valor do lançamento | Valor da taxa de administração calculada | - Valor da taxa de administração calculada |
gerarLancamentosIptuContrato
Este método recebe como parâmetro a “Data de início de apuração” e “Data de término de apuração” que foram calculadas na etapa anterior de período de apuração além dos parâmetros “Lançamento do contrato” e “Ciclo da locação” List<Lancamento_contrato__c> lancamentos, Ciclo_locacao__c ciclo ??
Parametrizacao__c parametrizacao = ParametrizacaoServico.Parametrizacao;
String regraApuracao = parametrizacao.snap_brok__Periodo_apuracao_faturamento__c;
Date dataLancamento = inicioApuracao;
Se o “Tipo de vencimento” (contrato.tipo_vencimento__c) for igual a “Antecipado” e “Período de apuração” (parametrizacao.snap_brok__Periodo_apuracao_faturamento__c) do objeto de parametrizações do SnapProperty for igual a “Mês fechado”
A “Data do lançamento” = data de término da apuração - 1 mês
Se o campo “Gerar Lançamentos para IPTU” do contrato de locação (contrato.Gerar_lancamento_iptu__c) estiver como “Ativo” o sistema faz as seguintes verificações:
Enquanto o contrato tiver mais de um imóvel, o sistema gera um lançamento de IPTU para cada imóvel do contrato. for (Imovel_contrato__c imovel: contrato.Imoveis_contrato__r)
Os valores são calculados da seguinte forma:
O campo rateioIptu = “Rateio para IPTU” do imóvel (imovel.Imovel__r.Rateio_iptu__c). Quando este campo não for informado, o sistema considera o valor do rateio como 100%.
O campo valorIptu = “Valor Mensal do IPTU” do imóvel (imovel.Imovel__r.Valor_iptu__c) * o campo “Rateio para IPTU” dividido por 100, isto é, (imovel.Imovel__r.Valor_iptu__c * rateioIptu / 100). Quando o campo “Valor mensal do IPTU” não for encontrado, o sistema considerá como zero.
O campo historico = “IPTU do imóvel {0} no valor de R$ {1} referente ao rateio de {2}%'“ sendo preenchido com os campos “Imóvel” (imovel.Imovel__r.Name), valorIptu calculado anteriormente e rateioIptu também calculado anteriormente;
Se o campo “Responsável pelo IPTU” for igual a “Locatário” e o “Pagante IPTU” for igual a “Locatário” if (contrato.Responsavel_iptu__c.equalsIgnoreCase('Locatário') && contrato.Pagante_iptu__c.equalsIgnoreCase('Locatário')){
o locatário deve enviar o comprovante de pagamento do IPTU para a administradora.
Senão o sistema irá criar o lançamento de IPTU da seguinte forma:
O campo “Contrato de administração” (lancamentoContrato.Contrato__c) do lançamento = “Contrato de administração” (contrato.Contrato_administracao__c) que está sendo gerado o lançamento;
O campo “Contrato de locação” (lancamentoContrato.Contrato_locacao__c) do lançamento = “Contrato de locação” (contrato.contrato.Id) que está sendo gerado o lançamento;
O campo “Ciclo de locação” (lancamentoContrato.Ciclo_locacao__r) do lançamento = ao ciclo financeiro criado na etapa anterior;
O campo “Data do lançamento” (lancamentoContrato.Data_lancamento__c) do lançamento = a datalancamento é igual a “data de lançamento” recebida como parâmetro do método;
O campo “Histórico” (lancamentoContrato.Historico__c) do lançamento = Histórico. Esse histórico é composto da seguinte forma: “IPTU do imóvel {0} no valor de R$ {1} referente ao rateio de {2}%'“ sendo preenchido com os campos “Imóvel” (imovel.Imovel__r.Name), valorIptu calculado anteriormente e rateioIptu também calculado anteriormente;
O campo “Imóvel” (lancamentoContrato.Imovel__c) do lançamento = “Imóvel” (contrato.Imovel__c) que está sendo gerado o lançamento;
O campo “Tipo de registro” do lançamento = “Responsável pelo IPTU” (contrato.Responsavel_iptu__c) ou “Pagante IPTU” (contrato.Pagante_iptu__c);
O campo “Situação” (Lancamentocontrato.Situacao__c) do lançamento = “Aprovado”;
O campo “Tipo de lançamento” (lancamentoContrato.Tipo_lancamento_contrato__c) do lançamento = “IPTU”;
O campo “Valor do lançamento” (lancamentoContrato.Valor_lancamento__c) do lançamento = valorIptu. Esse valor do lançamento é composto pela variável valorIptu anteriormente calculado da seguinte forma: “Valor Mensal do IPTU” do imóvel (imovel.Imovel__r.Valor_iptu__c) * o campo “rateioIptu” dividido por 100, isto é, (imovel.Imovel__r.Valor_iptu__c * rateioIptu / 100). Quando o campo “Valor mensal do IPTU” não for encontrado, o sistema considerá como zero. Esse valor poderá ser negativo para o “Responsável pelo IPTU” ou positivo para o “Pagante IPTU”.
...
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());
}
}
/**