Skip to content

Commit

Permalink
test: process, generate, stirngify cnab 104
Browse files Browse the repository at this point in the history
  • Loading branch information
yxuo committed Feb 26, 2024
1 parent 08cb318 commit 6ddc9a1
Show file tree
Hide file tree
Showing 65 changed files with 1,441 additions and 616 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { CnabFile } from './types/cnab-file.type';
import { getCnabRegistros, stringifyRegistro } from './cnab-utils';
import { getCnabRegistros, stringifyCnabRegistro } from './utils/cnab-utils';
import { CNAB_EOL } from './cnab-consts';

@Injectable()
export class CnabRemessaService {
Expand All @@ -11,9 +12,8 @@ export class CnabRemessaService {
const plainCnab = getCnabRegistros(cnab);
const cnabTextList: string[] = [];
for (const registro of plainCnab) {
cnabTextList.push(stringifyRegistro(registro));
cnabTextList.push(stringifyCnabRegistro(registro));
}
const CNAB_EOL = '\r\n';
return cnabTextList.join(CNAB_EOL);
}
}
37 changes: 1 addition & 36 deletions src/cnab/cnab-consts.ts
Original file line number Diff line number Diff line change
@@ -1,37 +1,2 @@
import { cnab240_104DetalheATemplate } from './templates/240/104/cnab-240-104-detalhe-a-template.const';
import { cnab240_104DetalheBTemplate } from './templates/240/104/cnab-240-104-detalhe-b-template.const';
import { cnab240_104HeaderArquivoTemplate } from './templates/240/104/cnab-240-104-header-arquivo-template.const';
import { cnab240_104HeaderLoteTemplate } from './templates/240/104/cnab-240-104-header-lote-template.const';
import { cnab240_104TrailerArquivoTemplate } from './templates/240/104/cnab-240-104-trailer-arquivo-template.const';
import { cnab240_104TrailerLoteTemplate } from './templates/240/104/cnab-240-104-trailer-lote-template.const';

export const CNAB_SUPPORTED_FORMATS = [240];
export const CNAB_YAML_DIR = './yaml';
export const CNAB_BANK = {
caixa: {
code: '104',
remessa: {
240: ['header_arquivo', 'detalhe', 'trailer_arquivo'],
},
retorno: {
240: ['header_arquivo', 'detalhe', 'trailer_arquivo'],
},
},
};

export const CNAB_MODULES = {
caixa: {
remessa: {
240: {
templates: [
cnab240_104HeaderArquivoTemplate,
cnab240_104HeaderLoteTemplate,
cnab240_104DetalheATemplate,
cnab240_104DetalheBTemplate,
cnab240_104TrailerLoteTemplate,
cnab240_104TrailerArquivoTemplate,
],
},
},
},
};
export const CNAB_EOL = '\r\n';
106 changes: 0 additions & 106 deletions src/cnab/cnab-utils.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export enum CamaraCompensacaoCaixa {
export enum Cnab104CamaraCompensacao {
Ted = '018',
DocEOp = '700',
CreditoContaEGuiaDepositoJudiciario = '000',
Expand Down
4 changes: 4 additions & 0 deletions src/cnab/enums/104/cnab-104-codigo-segmento.enum.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export enum Cnab104CodigoSegmento {
A = 'A',
B = 'B',
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export enum FinalidadDocCaixa {
export enum Cnab104FinalidadeDoc {
CreditoConta = '01',
PagamentoAluguelCondominio = '02',
PagamentoDuplicataTitulos = '03',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export enum FinalidadeTedCaixa {
export enum Cnab104FinalidadeTed {
SemConta = '0',
ContaCorrente = '1',
Poupanca = '2',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export enum FormaLancamentoCaixa {
export enum Cnab104FormaLancamento {
CreditoContaCorrente = '01',
ChequePagamento = '02',
DOC = '03',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export enum IndicadorParcelamentoCaixa {
export enum Cnab104IndicadorParcelamento {
DataFixa = '1',
Periodico = '2',
DiaUtil = '3',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export enum TipoCompromissoCaixa {
export enum Cnab104TipoCompromisso {
PagamentoFornecedores = '01',
PagamentoSalarios = '02',
Autopagamento = '03',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export enum TipoMovimentoCaixa {
export enum Cnab104TipoMovimento {
Inclusao = '0',
Exclusao = '9',
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export enum TipoServicoCaixa {
export enum Cnab104TipoServico {
Optantes = '00',
DebitosRecebimento = '05',
PagamentoDividendos = '10',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
export enum CodigoRegistroCnabCaixa {
export enum CnabAllCodigoRegistro {
HeaderArquivo = '0',
HeaderLote = '1',

/** Se aplica a todos os segmentos de detalhe. */
DetalheSegmento = '3',

TrailerLote = '5',
TailerArquivo = '9',
TrailerArquivo = '9',
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
import { CnabField } from '../../../types/cnab-field.type';
import { CnabAllCodigoRegistro } from 'src/cnab/enums/all/cnab-all-codigo-registro.enum';
import {
CnabField,
CnabFieldAs,
CnabFields,
} from '../../../types/cnab-field.type';
import { Cnab104CodigoSegmento } from 'src/cnab/enums/104/cnab-104-codigo-segmento.enum';

export interface ICnab240_104DetalheA {
export interface ICnab240_104DetalheA extends CnabFields {
codigoBanco: CnabField;
loteServico: CnabField;
codigoRegistro: CnabField;
codigoRegistro: CnabFieldAs<CnabAllCodigoRegistro>;
nsr: CnabField;
codigoSegmento: CnabField;
codigoSegmento: CnabFieldAs<Cnab104CodigoSegmento>;
tipoMovimento: CnabField;
codigoInstrucaoMovimento: CnabField;
camaraCompensacao: CnabField;
Expand Down Expand Up @@ -34,7 +40,7 @@ export interface ICnab240_104DetalheA {
valorRealEfetivado: CnabField;
informacao2: CnabField;
finalidadeDOC: CnabField;
usoFebraban: CnabField;
usoExclusivoFebraban: CnabField;
avisoAoFavorecido: CnabField;
/** Status do retorno CNAB */
ocorrencias: CnabField;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
import { CnabField } from '../../../types/cnab-field.type';
import { CnabAllCodigoRegistro as CnabAllCodigoRegistro } from 'src/cnab/enums/all/cnab-all-codigo-registro.enum';
import {
CnabField,
CnabFieldAs,
CnabFields,
} from '../../../types/cnab-field.type';
import { Cnab104CodigoSegmento } from 'src/cnab/enums/104/cnab-104-codigo-segmento.enum';

export interface ICnab240CaixaDetalheB {
export interface ICnab240_104DetalheB extends CnabFields {
codigoBanco: CnabField;
loteServico: CnabField;
codigoRegistro: CnabField;
codigoRegistro: CnabFieldAs<CnabAllCodigoRegistro>;
nsr: CnabField;
codigoSegmento: CnabField;
codigoSegmento: CnabFieldAs<Cnab104CodigoSegmento>;
usoExclusivoFebraban: CnabField;
tipoInscricao: CnabField;
numeroInscricao: CnabField;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { ICnab240_104HeaderArquivo } from './cnab-240-104-header-arquivo.interface';
import { ICnab240_104Lote } from './cnab-240-104-lote.interface';
import { ICnab240_104TrailerArquivo } from './cnab-240-104-trailer-arquivo.interface';

export interface ICnab240_104File {
headerArquivo: ICnab240_104HeaderArquivo;
lotes: ICnab240_104Lote[];
trailerArquivo: ICnab240_104TrailerArquivo;
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import { CnabField } from '../../../types/cnab-field.type';
import { CnabAllCodigoRegistro } from 'src/cnab/enums/all/cnab-all-codigo-registro.enum';
import {
CnabField,
CnabFieldAs,
CnabFields,
} from '../../../types/cnab-field.type';

export interface ICnab240CaixaHeaderArquivo {
export interface ICnab240_104HeaderArquivo extends CnabFields {
codigoBanco: CnabField;
loteServico: CnabField;
codigoRegistro: CnabField;
codigoRegistro: CnabFieldAs<CnabAllCodigoRegistro>;
filler: CnabField;
tipoInscricao: CnabField;
numeroInscricao: CnabField;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import { CnabField } from '../../../types/cnab-field.type';
import { CnabAllCodigoRegistro } from 'src/cnab/enums/all/cnab-all-codigo-registro.enum';
import {
CnabField,
CnabFieldAs,
CnabFields,
} from '../../../types/cnab-field.type';

export interface ICnab240CaixaHeaderLote {
export interface ICnab240_104HeaderLote extends CnabFields {
codigoBanco: CnabField;
loteServico: CnabField;
codigoRegistro: CnabField;
codigoRegistro: CnabFieldAs<CnabAllCodigoRegistro>;
tipoOperacao: CnabField;
tipoServico: CnabField;
formaLancamento: CnabField;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { ICnab240_104HeaderLote } from './cnab-240-104-header-lote.interface';
import { ICnab240_104Registro } from './cnab-240-104-registro.interface';
import { ICnab240_104TrailerLote } from './cnab-240-104-trailer-lote.interface';

export interface ICnab240_104Lote {
headerLote: ICnab240_104HeaderLote;
registros: ICnab240_104Registro[];
trailerLote: ICnab240_104TrailerLote;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { ICnab240_104DetalheA } from './cnab-240-104-detalhe-a.interface';
import { ICnab240_104DetalheB } from './cnab-240-104-detalhe-b.interface';

export interface ICnab240_104RegistroAB {
detalheA: ICnab240_104DetalheA;
detalheB: ICnab240_104DetalheB;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { ICnab240_104DetalheA } from './cnab-240-104-detalhe-a.interface';
import { ICnab240_104DetalheB } from './cnab-240-104-detalhe-b.interface';

export interface ICnab240_104Registro {
detalheA?: ICnab240_104DetalheA;
detalheB?: ICnab240_104DetalheB;
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import { CnabField } from '../../../types/cnab-field.type';
import { CnabAllCodigoRegistro } from 'src/cnab/enums/all/cnab-all-codigo-registro.enum';
import {
CnabField,
CnabFieldAs,
CnabFields,
} from '../../../types/cnab-field.type';

export interface ICnab240CaixaTrailerArquivo {
export interface ICnab240_104TrailerArquivo extends CnabFields {
codigoBanco: CnabField;
loteServico: CnabField;
codigoRegistro: CnabField;
codigoRegistro: CnabFieldAs<CnabAllCodigoRegistro>;
usoExclusivoFebraban: CnabField;
quantidadeLotesArquivo: CnabField;
quantidadeRegistrosArquivo: CnabField;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
import { CnabField } from '../../../types/cnab-field.type';
import { CnabAllCodigoRegistro } from 'src/cnab/enums/all/cnab-all-codigo-registro.enum';
import {
CnabField,
CnabFieldAs,
CnabFields,
} from '../../../types/cnab-field.type';

export interface ICnab240CaixaTrailerLote {
export interface ICnab240_104TrailerLote extends CnabFields {
codigoBanco: CnabField;
/** O mesmo valor que o `HeaderLote.loteServico` deste lote. */
loteServico: CnabField;
codigoRegistro: CnabField;
codigoRegistro: CnabFieldAs<CnabAllCodigoRegistro>;
usoExclusivoFebraban: CnabField;
quantidadeRegistrosLote: CnabField;
/** Soma de todos os valores: detalhe A, I, O, N */
Expand Down
Loading

0 comments on commit 6ddc9a1

Please sign in to comment.