O fluxo acontece no ms-slc
O fluxo começa no worker (conciliation_receivables_worker) que é executada todos os dias iteis as 17h.
Primeiro pegamos todos os recebiveis elegiveis, que passam por este filtro
- kind: credit
- liquidation_number: nil
- arrangements: Array de arrangements habilitados
- acquirer_id: Adiquirentes que não são da BLU
- release_at: Menor ou igual a data atual
- status: Todos menos o not_constituted
Com a lista de recebiveis, vamos iterar uma por uma (em batch). Aqui fazemos uma associação com a tabela liquidation_report_transaction para assim termos a relação entre as tabelas receivable e liquidation_report_transaction Para fazer esta relação pesquisamos da seguinte forma
Receivable | liquidation_report_transaction |
---|---|
release_at | payment_at |
arrangement | arrangement_code |
client.cpf_cnpj | client_document_number |
Detalhe para o release_at do receivable:
- Se a data cair no FDS ou em algum feriado a data deve pegar o priemrio dia util.
Sabendo esta relação entre eles, é atualizado os campos:
- liquidation_number da tabela receivables com base no liquidation_number da tabela liquidation_report_transaction
- receivable_id da tabela liquidation_report_transaction com base no id da tabela receivables
E então envia um evento (slc_receivable_liquidation_conciliated) para o ms-cerc contendo os dados receivable_id e payment_value
Aqui ao receber o evento ele pega o contrato associado ao receivable e verifica se ele é gestão de colateral. Se for calcula o novo valor do contrato. E então inicia 2 fluxos: 1 - Atualizar contrato na CERC 2 - Atualizar external bailout