Skip to content

Instantly share code, notes, and snippets.

@denoww
Last active May 12, 2017 11:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save denoww/7cdb009b3ba7106b5b88101f9a8032d9 to your computer and use it in GitHub Desktop.
Save denoww/7cdb009b3ba7106b5b88101f9a8032d9 to your computer and use it in GitHub Desktop.
Importacao de cobranças
Importação de Inadimplencia (Importação de Cobranças atrasadas originadas de excel):
Exemplo do que o cliente quer importar: inadimplencia_03052017.pdf
Converter pdf para excel para facilitar copiar e colar
pesquisar no google -> pdf to excel
O que deve ser feito:
Suporte cadastra os pagadores e unidades no sistema
Tela de Cobranças: Criamos um modal de importação na tela de cobranças
Sistema pergunta se ele deseja
1) Preencher Excel
2) ou Importar dados do Excel
Usuário marca opção de PREENCHER EXCEL
Usuário seleciona quais unidades ou pagador ele deseja importar
Mesmo typeahead do filtro de cobranças
O sistema de cobrança gera um excel para ser preenchido
Usuário baixa esse Excel
| Cod. Unidade | CPF/CNPJ/NUIT | Observação | |
| 1 | 009.263.331-22 | Bloco 1 - 101 - Fulano de Tal | |
| Título | Mês Ref. | Vencimento | Valor |
| Taxa de Condomínio | mm/yyyy | dd/mm/yyyy | 00,00 |
| Taxa de Condomínio | mm/yyyy | dd/mm/yyyy | 00,00 |
| Cod. Unidade | CPF/CNPJ/NUIT | Observação | |
| | 009.463.331-22 | Fulano de Tal | |
| Título | Mês Ref. | Vencimento | Valor |
| Taxa de Condomínio | mm/yyyy | dd/mm/yyyy | 00,00 |
| Taxa de Condomínio | mm/yyyy | dd/mm/yyyy | 00,00 |
| Cod. Unidade | CPF/CNPJ/NUIT | Observação | |
| 1 | | Fulano de Tal | |
| Título | Mês Ref. | Vencimento | Valor |
| Taxa de Condomínio | mm/yyyy | dd/mm/yyyy | 00,00 |
| Taxa de Condomínio | mm/yyyy | dd/mm/yyyy | 00,00 |
Suporte preenche o pdf que o sistema imprimiu
segue 3 exemplos com/sem unidade/pagador NO MESMO EXCEL
Melhorias neste planejamento são bem vindas
| Cod. Unidade | CPF/CNPJ/NUIT | Observação | |
| 1 | 009.463.331-22 | Bloco 1 - 101 - Fulano de Tal | |
| Título | Mês Ref. | Vencimento | Valor |
| Taxa de Condomínio | 01/2015 | 25/01/2015 | 547,60 |
| Taxa de Condomínio | 02/2015 | 25/02/2015 | 547,60 |
| Taxa de Condomínio | 03/2015 | 25/03/2015 | 547,60 |
| Cod. Unidade | CPF/CNPJ/NUIT | Observação | |
| | 009.463.331-22 | Fulano de Tal | |
| Título | Mês Ref. | Vencimento | Valor |
| Taxa de Condomínio | 01/2015 | 25/01/2015 | 547,60 |
| Taxa de Condomínio | 02/2015 | 25/02/2015 | 547,60 |
| Taxa de Condomínio | 03/2015 | 25/03/2015 | 547,60 |
| Cod. Unidade | CPF/CNPJ/NUIT | Observação | |
| 1 | | Fulano de Tal | |
| Título | Mês Ref. | Vencimento | Valor |
| Taxa de Condomínio | 01/2015 | 25/01/2015 | 547,60 |
Suporte ajusta PERFIL PADRÃO multa, juros e correção etc
Modal de importação de excel
Utilizar formulário de cobrança + perfil para preencher juros multa e etc
input de upload para inserir o excel
Back-end
Gerar PDF
CPF/CNPJ/NUIT deve utilizar I18n
Importação
Validar Planilha
Dar erro caso algum CPF/CNPJ não esteja no cadastro de pagadores
Deve retornar erros se não tem titulo, mes ref, vencimento e valor
Vencimento
Todos vencimentos devem ser uma data válida
Mes ref: validar se é valido
valor deve ser maior que zero
valor.delocalize_currency > 0
Importar Planilha
Se passar na validação então deve-se importar tudo
Tratar valores da planilha
Valor
fazer isso aqui valor.delocalize_currency
Criar composições de débitos com titulo e valor da cobrança
O sistema:
encontra unidade_id pelo id que está está na planilha
encontra pagador_id pelo cpf/cnpj que está na planinlha
utilizar a buscar do financeiro pessoas pois acredito que vai buscar pelo cpf/cnpj COM e SEM pntos e hífens
Fora do Brasil
Testar essa importação de documentos nos países aficanos NIF e NUIT
Crie um service no Back para trabalhar com importações de cobranças (service de cobrança está gigante)
A importaço de pagadores está seguindo este modelo que considero relativamente bom
module Financeiro
class CobrancaImportacoesService
def self.importar(opts, params)
errors = validar(params)
if errors.any?
[:unprocessable_entity, errors]
else
executar_importacao(params)
[:ok, {}]
end
end
# private
def self.executar_importacao(opts, pms)
...
end
private_class_method :executar_importacao
def self.validar(pms)
# init
errors = []
tipos = pms[:tipos] || {}
# ao menos uma unidade
sem_unidades = !pms[:todas_unidades] && pms[:unidade_ids].blank?
errors << locale('validar.ao_menos_uma_unidade') if sem_unidades
# importar ao menos alguma coisa - proprietario ou morador
tem_algo_a_importar = tipos.values.select { |v| v[:importar] }.any?
errors << locale('validar.ao_menos_um_tipo') unless tem_algo_a_importar
if tem_algo_a_importar
# ao menos um pagador principal
tem_pag_principal = tipos.values.select { |v| v[:pagador_principal] }.any?
errors << locale('validar.ao_menos_um_pagador_principal') unless tem_pag_principal
end
errors
end
private_class_method :validar
def self.locale(key, options={})
i18n_path = "services.financeiro.pessoa_unidades.importacoes.#{key}"
return I18n.t(i18n_path, **options) unless options[:count].present?
I18n.t(i18n_path, count: options.delete(:count), **options)
end
private_class_method :locale
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment