Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/helloticket/superfile
Parser de configuração de layouts bancários e outros
https://github.com/helloticket/superfile
arquivo cnab go yml
Last synced: 3 months ago
JSON representation
Parser de configuração de layouts bancários e outros
- Host: GitHub
- URL: https://github.com/helloticket/superfile
- Owner: helloticket
- License: mit
- Created: 2020-04-13T23:36:51.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-12-21T15:57:43.000Z (about 3 years ago)
- Last Synced: 2024-09-30T23:04:01.234Z (3 months ago)
- Topics: arquivo, cnab, go, yml
- Language: Go
- Homepage:
- Size: 488 KB
- Stars: 12
- Watchers: 12
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# superfile
Parser de arquivos de configuração cnab e outros layouts.
## Instalação
```bash
go get github.com/helloticket/superfile
```## Debug de layout
```go
go run cmd/main.go
```## Arquivo de remessa
```go
source := strings.NewReader(itau.CNAB240Pagamentos)
layout, err := superfile.NewLayout(source)
remessa := superfile.NewRemessa(layout)remessa.Header["tipo_inscricao"] = 0
remessa.Header["inscricao_numero"] = 00000000000000
remessa.Header["agencia_debito"] = 00000
remessa.Header["conta_debito"] = 000000000000
remessa.Header["dac_debito"] = 0
remessa.Header["nome_empresa"] = "0"
remessa.Header["nome_banco"] = "0"
remessa.Header["data_geracao"] = 00000000
remessa.Header["hora_geracao"] = 000000lote := remessa.NovoLote(1)
lote.Header["codigo_lote"] = 0000
lote.Header["tipo_pagamento"] = 00
lote.Header["forma_pagamento"] = 00
lote.Header["tipo_inscricao_debito"] = 0
lote.Header["inscricao_numero"] = 00000000000000
lote.Header["identificacao_lancamento"] = "0"
lote.Header["agencia_debito"] = 00000
lote.Header["conta_debito"] = 000000000000
lote.Header["dac_debito"] = 0
lote.Header["nome_empresa"] = "0"
lote.Header["finalidade_lote"] = "0"
lote.Header["historico_cc_debito"] = "0"
lote.Header["endereco_empresa"] = "0"
lote.Header["numero"] = 00000
lote.Header["cidade"] = "0"
lote.Header["cep"] = 00000000
lote.Header["estado"] = "0"
lote.Header["codigo_ocorrencias"] = "0"detalhe := lote.NovoDetalhe()
detalhe["segmento_a"]["codigo_lote"] = 0000
detalhe["segmento_a"]["numero_registro"] = 00000
detalhe["segmento_a"]["tipo_movimento"] = 000
detalhe["segmento_a"]["codigo_camara_centralizadora"] = 000
detalhe["segmento_a"]["codigo_banco_favorecido"] = 000
detalhe["segmento_a"]["agencia_favorecido"] = "0"
detalhe["segmento_a"]["nome_favorecido"] = "0"
detalhe["segmento_a"]["numero_doc"] = "0"
detalhe["segmento_a"]["data_pagto"] = 00000000
detalhe["segmento_a"]["codigo_ispb"] = 00000000
detalhe["segmento_a"]["valor_pagto"] = 000000000000000
detalhe["segmento_a"]["nosso_numero"] = "0"
detalhe["segmento_a"]["data_efetiva"] = 00000000
detalhe["segmento_a"]["valor_efetivo"] = 000000000000000
detalhe["segmento_a"]["finalidade"] = "0"
detalhe["segmento_a"]["num_documento"] = 000000
detalhe["segmento_a"]["num_inscricao_favorecido"] = 00000000000000
detalhe["segmento_a"]["finalidade_doc_status_funcionario"] = "0"
detalhe["segmento_a"]["finalidade_ted"] = "0"
detalhe["segmento_a"]["aviso"] = "0"
detalhe["segmento_a"]["codigo_ocorrencias"] = "0"lote.InserirDetalhe(detalhe)
lote.Trailer["codigo_lote"] = 0000
lote.Trailer["total_registros_lote"] = 000000
lote.Trailer["total_valor_pagtos"] = 0
lote.Trailer["codigos_ocorrencias"] = "0"remessa.InserirLote(lote)
remessa.Trailer["total_lotes_arquivo"] = remessa.TotalLotes()
remessa.Trailer["total_registros"] = remessa.TotalRegistros()remessaFile := output.NewRemessaFile(remessa, "itau-pagamentos-cnab240.rem")
arquivo := remessaFile.Write()
log.Println(arquivo)
```## Arquivo de retorno
```go
source := strings.NewReader(itau.CNAB240Cobranca)
layout, err := superfile.NewLayout(source)f, _ := os.Open("cobranca_itau_cnab240.ret")
defer f.Close()
arquivo, err := superfile.NewRetornoFile(layout, f)
retorno := arquivo.Read()
log.Println(retorno)
```## Melhorias no tratamento de erros para arquivo de retorno
Cada campo recebeu um adicional para tratar erros, por exemplo: **tipo_registro** recebe **tipo_registro_error**
Outra melhoria foi captura erros linha a linha sem quebrar parse e decode.
## Inspirado
Baseado no projeto CNAB Layouts (http://glauberportella.github.io/cnab-layouts)