@taqtile/nodenab
Version:
Uma biblioteca para remessa e retorno de arquivos 400 e 240 do padrão cnab
49 lines (38 loc) • 1.46 kB
JavaScript
const Picture = require('../Format/Picture');
module.exports = class Linha {
constructor(linhaStr, layout, tipo = 'remessa') {
this.linhaStr = linhaStr;
this.layout = layout;
this.tipo = tipo.toLowerCase();
}
getDadosSegmento(segmentoKey) {
const layout = (this.tipo === 'remessa') ?
this.layout.getRemessaLayout() :
this.layout.getRetornoLayout();
if (layout['detalhes'][segmentoKey] === undefined) {
throw new Error(`Erro ao processar o segumento ${segmentoKey}. Não foi possível identificar um layout válido para o mesmo`);
}
const campos = layout['detalhes'][segmentoKey];
let dados = {};
Object.keys(campos).forEach((nome) => {
dados[nome] = this.obterValorCampo(campos[nome]);
});
return dados;
}
obterValorCampo(definicao) {
let tipo;
if (tipo = Picture.REGEX_VALID_FORMAT.exec(definicao['picture'])) {
const inicio = definicao['pos'][0] - 1;
const tamanho = Picture.getLength(definicao['picture']);
return Picture.decode(this.linhaStr.substr(inicio, tamanho), definicao['picture']);
} else {
throw new Error(`Erro ao obter valor de campo. O padrão (${format}) não é um formato válido`);
}
}
getLayout() {
return this.layout;
}
getTipo() {
return this.tipo;
}
};