https://github.com/denoww/seucondominio/commit/41b1f94cfad3a29e1d0ca4af91dff75cd683de6a
79 additions and 115 deletions.
Ficou um pouco mais organizado e com 36 linhas de código a menos
Observação: Mesmo que tenha ficado bugs eles serão corrigidos em cima de um padrão sustentável
Objeto em questão está definido no model de forma incompleta
como está hoje
STATUS = {
abertas: [
{ tipo: :em_dia, label: 'À Vencer', color: 'gray' },
{ tipo: :vencidas, label: 'Vencida', color: 'red' },
{ tipo: :juridicas, label: 'Jurídica', color: 'red-dark' },
],
quitadas: [
{ tipo: :em_dia, label: 'Paga', color: 'green' },
{ tipo: :vencidas, label: 'Paga', color: 'green' },
{ tipo: :juridicas, label: 'Paga', color: 'green' },
],
canceladas: [
{ tipo: :em_dia, label: 'Cancelada', color: 'yellow' },
{ tipo: :vencidas, label: 'Cancelada', color: 'yellow' },
{ tipo: :juridicas, label: 'Cancelada', color: 'yellow' },
]
}.freeze
Por ele estar incompleto, foi preciso REESCREVER ele no front sem necessidade No index_ctrl.coffe de cobranças dentro de $s.filtro existia uma definição pra status A definirição abaixo deveria ter vindo do backend, caso este estive sido definido corretamente (don't repeat your self)
...
status:
items: [
{
key: 'quitadas'
label: 'Quitadas'
subitems: [
{ key: 'em_dia', label: 'Em dia' }
{ key: 'vencidas', label: 'Vencidas' }
{ key: 'juridicas', label: 'Jurídicas' }
]
}
{
key: 'abertas'
label: 'Abertas'
subitems: [
{ key: 'em_dia', label: 'Em dia' }
{ key: 'vencidas', label: 'Vencidas' }
{ key: 'juridicas', label: 'Jurídicas' }
]
}
{
key: 'canceladas'
label: 'Canceladas'
subitems: [
{ key: 'em_dia', label: 'Em dia' }
{ key: 'vencidas', label: 'Vencidas' }
{ key: 'juridicas', label: 'Jurídicas' }
]
}
]
...
Agora por último, e mais grave problema $s.selections.toParams() e $s.settings estão com estrutura de dados incorreta, dificultando todas ações em massa futura que vamos implementar Esta estrutura de dados não representa a forma que organizamos os status no backend
Como está hoje
{
"abertas_em_dia": [
28,
451,
775,
1228,
1300
],
"abertas_vencidas": [
1, 2, 3, 4
],
"abertas_juridicas": [],
"quitadas_em_dia": [],
"quitadas_vencidas": [],
"quitadas_juridicas": [],
"canceladas_em_dia": [
328
],
"canceladas_vencidas": [],
"canceladas_juridicas": []
}
}
Problema: se algum desenvolvedor precisar "capturar" as cobranças abertas no front-end como ele deveria fazer? Respostas: Com expressão regular, ou cadastrar uma outra lista no front, como foi feito no botão ações para esconder "gerar boletos"
A estrutura sustentável e mantível seria separar status e substatus
{
abertas: { em_dia: [...], vencidas: [], juridicas: [] },
pagas: { em_dia: [...], vencidas: [], juridicas: [] },
canceladas: { em_dia: [...], vencidas: [], juridicas: [] },
}
Dessa forma é possível capturar qualquer coisa
$s.selections.toParams().abertas
$s.selections.toParams().abertas.em_dia
- Geração de Boletos
- Back-End: get_selections_ids
- Busca do ghosts
- todos os lugares que utilizam o objeto no front $s.selections
- todos lugares que utilizar a constante Cobranca::STATUS
- Algoritimo que da hide/show nas ações em massa
- Geração de boletos
- Se a 'quantidade' nas abas estão corretas
- se vai gerar quantidade corretas de boletos