Skip to content

Commit

Permalink
Gerado comparativo remessa e retorno e criado Job para retorno
Browse files Browse the repository at this point in the history
  • Loading branch information
williamfl2007 committed Mar 6, 2024
1 parent cf5e500 commit 9099754
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 43 deletions.
4 changes: 3 additions & 1 deletion src/cnab/entity/header-arquivo.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
export class HeaderArquivo extends EntityHelper {
@PrimaryGeneratedColumn()
id_header_arquivo: number;
@Column({ type: Number, unique: false, nullable: true })
@Column({ type: String, unique: false, nullable: true })
nsa: string;
@Column({ type: String, unique: false, nullable: true })
tipo_arquivo: string;
@Column({ type: String, unique: false, nullable: true })
cod_banco: string;
Expand Down
6 changes: 4 additions & 2 deletions src/cnab/repository/header-arquivo.repository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ export class HeaderArquivoRepository {
});
}

public async findAll(): Promise<HeaderArquivo[]> {
return await this.HeaderArquivoRepository.find();
public async findAll(fields: EntityCondition<HeaderArquivo> | EntityCondition<HeaderArquivo>[]): Promise<HeaderArquivo[]> {
return await this.HeaderArquivoRepository.find({
where: fields
});
}
}
4 changes: 4 additions & 0 deletions src/cnab/service/cnab.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,8 @@ export class CnabService {
await this.headerArquivoService.saveRemessa()
}

public async getArquivoRetornoCNAB(){
await this.headerArquivoService.compareRemessaToRetorno();
}

}
77 changes: 38 additions & 39 deletions src/cnab/service/header-arquivo.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -338,49 +338,48 @@ export class HeaderArquivoService {
}

public async compareRemessaToRetorno():Promise<void>{
const arquivos = await this.headerArquivoRepository.findAll();
const arquivosRemessa = await this.headerArquivoRepository.findAll({tipo_arquivo: "remessa"});

arquivos.forEach(headerArquivo => {
arquivosRemessa.forEach(async headerArquivo => {
const arquivoPublicacao = new ArquivoPublicacaoDTO();
arquivoPublicacao.id_header_arquivo = headerArquivo.id_header_arquivo
arquivoPublicacao.id_transacao = headerArquivo.id_transacao;

const headersLote =
this.headerLoteService.findMany({id_header_arquivo: headerArquivo.id_header_arquivo});
headersLote.forEach(async headerLote=> {
arquivoPublicacao.id_header_lote = headerLote.id_header_lote;
arquivoPublicacao.dt_geracao_remessa = headerLote.dt_geracao;
arquivoPublicacao.hr_geracao_remessa = headerLote.hr_geracao;
arquivoPublicacao.dt_geracao_retorno = headerLote.dt_geracao;
arquivoPublicacao.hr_geracao_retorno = headerLote.hr_geracao;
arquivoPublicacao.lote_servico = headerLote.lote_servico;
const pagador = await this.pagadorService.getOneByIdPagador(headerLote.id_pagador);

arquivoPublicacao.nome_pagador = pagador.nome_empresa;
arquivoPublicacao.agencia_pagador = pagador.agencia;
arquivoPublicacao.dv_agencia_pagador = pagador.dv_agencia;
arquivoPublicacao.conta_pagador = pagador.conta;
arquivoPublicacao.dv_conta_pagador = pagador.dv_conta;

const detalhesA = await this.detalheAService.findMany({ id_header_lote: headerLote.id_header_lote });
detalhesA.forEach( async detalheA => {
arquivoPublicacao.dt_vencimento = detalheA.dt_vencimento;
arquivoPublicacao.valor_lancamento = detalheA.valor_lancamento;
arquivoPublicacao.data_efetivacao = detalheA.data_efetivacao;
arquivoPublicacao.valor_real_efetivado = detalheA.valor_real_efetivado;
arquivoPublicacao.ocorrencias = detalheA.ocorrencias;
const clienteFavorecido =
await this.clienteFavorecidoService.getOneByIdClienteFavorecido(detalheA.id_cliente_favorecido);
arquivoPublicacao.nome_cliente = clienteFavorecido.nome ;
arquivoPublicacao.cpf_cnpj_cliente = clienteFavorecido.cpf_cnpj;
arquivoPublicacao.cod_banco_cliente = clienteFavorecido.cod_banco ;
arquivoPublicacao.agencia_cliente = clienteFavorecido.agencia;
arquivoPublicacao.dv_agencia_cliente = clienteFavorecido.dv_agencia;
arquivoPublicacao.conta_corrente_cliente = clienteFavorecido.conta_corrente;
arquivoPublicacao.dv_conta_corrente_cliente = clienteFavorecido.dv_conta_corrente;
void this.arquivoPublicacaoRepository.save(arquivoPublicacao);
arquivoPublicacao.dt_geracao_remessa = headerArquivo.dt_geracao;
arquivoPublicacao.hr_geracao_remessa = headerArquivo.hr_geracao;
const arquivosRetorno =
await this.headerArquivoRepository.findAll({tipo_arquivo:"retorno", nsa: headerArquivo.nsa}) ;
if (arquivosRetorno !=null){
//Header Arquivo Retorno
arquivosRetorno.forEach(async arquivoRetorno=> {
const headersLoteRetorno =
await this.headerLoteService.findMany({ id_header_arquivo: arquivoRetorno.id_header_arquivo });
arquivoPublicacao.dt_geracao_retorno = arquivoRetorno.dt_geracao;
arquivoPublicacao.hr_geracao_retorno = arquivoRetorno.hr_geracao;
//Header lote Retorno
headersLoteRetorno.forEach(async headerLoteRetorno => {
//DetalheA Retorno
const detalhesA = await this.detalheAService.findMany({ id_header_lote: headerLoteRetorno.id_header_lote});
detalhesA.forEach( async detalheA => {
arquivoPublicacao.dt_vencimento = detalheA.dt_vencimento;
arquivoPublicacao.valor_lancamento = detalheA.valor_lancamento;
arquivoPublicacao.data_efetivacao = detalheA.data_efetivacao;
arquivoPublicacao.valor_real_efetivado = detalheA.valor_real_efetivado;
arquivoPublicacao.ocorrencias = detalheA.ocorrencias;
const clienteFavorecido =
await this.clienteFavorecidoService.getOneByIdClienteFavorecido(detalheA.id_cliente_favorecido);
arquivoPublicacao.nome_cliente = clienteFavorecido.nome ;
arquivoPublicacao.cpf_cnpj_cliente = clienteFavorecido.cpf_cnpj;
arquivoPublicacao.cod_banco_cliente = clienteFavorecido.cod_banco ;
arquivoPublicacao.agencia_cliente = clienteFavorecido.agencia;
arquivoPublicacao.dv_agencia_cliente = clienteFavorecido.dv_agencia;
arquivoPublicacao.conta_corrente_cliente = clienteFavorecido.conta_corrente;
arquivoPublicacao.dv_conta_corrente_cliente = clienteFavorecido.dv_conta_corrente;
arquivoPublicacao.ocorrencias = detalheA.ocorrencias;
void this.arquivoPublicacaoRepository.save(arquivoPublicacao);
});
});
});
});
}
});
}
}
}
17 changes: 16 additions & 1 deletion src/cron-jobs/cron-jobs.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ export enum CrobJobsEnum {
bulkResendInvites = 'bulkResendInvites',
updateTransacaoFromJae = 'updateTransacaoFromJae',
sendNewCNABs = 'sendNewCNABs',
getRetornoCNAB = 'getRetornoCNAB',
}

interface ICronJob {
Expand Down Expand Up @@ -129,6 +130,16 @@ export class CronJobsService implements OnModuleInit {
},
},
},
{
name: CrobJobsEnum.getRetornoCNAB,
cronJobParameters: {
cronTime: '45 14 * * *', // 14:45 GMT = 11:45BRT (GMT-3)
onTick: async () => {
await this.getRetornoCNAB();
},
},
}

);

for (const jobConfig of this.jobsConfig) {
Expand Down Expand Up @@ -666,6 +677,10 @@ export class CronJobsService implements OnModuleInit {
}

async sendNewCNABs() {
await this.cnabService.sendNewCNABs();
await this.cnabService.sendNewCNABs();
}

async getRetornoCNAB(){
await this.cnabService.getArquivoRetornoCNAB();
}
}

0 comments on commit 9099754

Please sign in to comment.