Skip to content

Commit

Permalink
formatters: change diff date calculation
Browse files Browse the repository at this point in the history
change the date constructors
to stop using the default
new Date and instead use the
moment (tz) constructor
  • Loading branch information
travoul authored and lucianopf committed Oct 30, 2018
1 parent 226b264 commit bd79de2
Show file tree
Hide file tree
Showing 7 changed files with 110 additions and 17 deletions.
3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ node_js:

language: node_js

env:
- TZ=America/Sao_Paulo

cache:
directories:
- node_modules
Expand Down
3 changes: 2 additions & 1 deletion banks/bradesco/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
const moment = require('moment')
var formatters = require('../../lib/formatters')
var ediHelper = require('../../lib/edi-helper')
var helper = require('./helper')
Expand All @@ -16,7 +17,7 @@ exports.barcodeData = function (boleto) {
var codigoBanco = this.options.codigo
var numMoeda = '9'

var fatorVencimento = formatters.fatorVencimento(boleto['data_vencimento'])
var fatorVencimento = formatters.fatorVencimento(moment(boleto['data_vencimento']).utc().format())

var agencia = formatters.addTrailingZeros(boleto['agencia'], 4)

Expand Down
3 changes: 2 additions & 1 deletion banks/santander/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
const moment = require('moment')
var formatters = require('../../lib/formatters')
var ediHelper = require('../../lib/edi-helper')
var helper = require('./helper')
Expand All @@ -18,7 +19,7 @@ exports.barcodeData = function (boleto) {
var fixo = '9' // Numero fixo para a posição 05-05
var ios = '0' // IOS - somente para Seguradoras (Se 7% informar 7, limitado 9%) - demais clientes usar 0

var fatorVencimento = formatters.fatorVencimento(boleto['data_vencimento'])
var fatorVencimento = formatters.fatorVencimento(moment(boleto['data_vencimento']).utc().format())

var valor = formatters.addTrailingZeros(boleto['valor'], 10)
var carteira = boleto['carteira']
Expand Down
5 changes: 4 additions & 1 deletion lib/formatters.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const escapeXML = require('ejs').escapeXML
const moment = require('moment')

exports.capitalize = function (string) {
return string.charAt(0).toUpperCase() + string.slice(1)
Expand Down Expand Up @@ -80,7 +81,9 @@ exports.mod10 = function (num) {
}

exports.fatorVencimento = function (date) {
return exports.addTrailingZeros(Math.floor((date.getTime() - new Date(1997, 9, 7).getTime()) / (24 * 3600 * 1000)), 4)
const parsedDate = moment(date).utc().format('YYYY-MM-DD')
const startDate = moment('1997-10-07').utc().format("YYYY-MM-DD")
return exports.addTrailingZeros(moment(parsedDate).diff(startDate, 'days'), 4)
}

exports.dateFromEdiDate = function (ediDate) {
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"eslint-plugin-promise": "^3.3.0",
"eslint-plugin-standard": "^2.0.1",
"mocha": "^3.2.0",
"moment": "https://github.com/pagarme/moment/archive/0.0.2.tar.gz",
"ramda": "^0.23.0"
},
"author": "Pedro Franceschi",
Expand Down
106 changes: 95 additions & 11 deletions test/integration/bradesco/boleto.spec.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
const Boleto = require('../../../index').Boleto

const moment = require('moment')
const expect = require('chai').expect

describe('Bradesco Boleto', () => {
describe('when creating a valid boleto', () => {
let boleto
let boletos = []
before(() => {
boleto = new Boleto({
boletos.push(new Boleto({
'banco': 'bradesco',
'data_emissao': new Date('2017-01-01T00:00:00Z'),
'data_vencimento': new Date(2017, 0, 5),
'data_emissao': moment('2017-01-01T00:00:00Z').valueOf(),
'data_vencimento': moment('2017-01-05T00:00:00Z').valueOf(),
'valor': 1500,
'nosso_numero': '6',
'numero_documento': '1',
Expand All @@ -21,24 +21,108 @@ describe('Bradesco Boleto', () => {
'pagador': 'Nome do pagador\nCPF: 000.000.000-00',
'local_de_pagamento': 'PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO.',
'instrucoes': 'Sr. Caixa, aceitar o pagamento e não cobrar juros após o vencimento.'
})
}))
})

before(() => {
boletos.push(new Boleto({
'banco': 'bradesco',
'data_emissao': moment('2017-01-01T00:00:00Z').toDate(),
'data_vencimento': moment('2017-01-05T01:00:00Z').toDate(),
'valor': 1500,
'nosso_numero': '6',
'numero_documento': '1',
'cedente': 'Pagar.me Pagamentos S/A',
'cedente_cnpj': '18727053000174',
'agencia': '1229',
'codigo_cedente': '469',
'carteira': '25',
'pagador': 'Nome do pagador\nCPF: 000.000.000-00',
'local_de_pagamento': 'PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO.',
'instrucoes': 'Sr. Caixa, aceitar o pagamento e não cobrar juros após o vencimento.'
}))
})

before(() => {
boletos.push(new Boleto({
'banco': 'bradesco',
'data_emissao': moment('2017-01-01T00:00:00Z').format(),
'data_vencimento': moment('2017-01-05T02:00:00Z').format(),
'valor': 1500,
'nosso_numero': '6',
'numero_documento': '1',
'cedente': 'Pagar.me Pagamentos S/A',
'cedente_cnpj': '18727053000174',
'agencia': '1229',
'codigo_cedente': '469',
'carteira': '25',
'pagador': 'Nome do pagador\nCPF: 000.000.000-00',
'local_de_pagamento': 'PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO.',
'instrucoes': 'Sr. Caixa, aceitar o pagamento e não cobrar juros após o vencimento.'
}))
})

before(() => {
boletos.push(new Boleto({
'banco': 'bradesco',
'data_emissao': new Date('2017-01-01T23:00:00Z').getTime(),
'data_vencimento': new Date('2017-01-05T23:00:00Z').getTime(),
'valor': 1500,
'nosso_numero': '6',
'numero_documento': '1',
'cedente': 'Pagar.me Pagamentos S/A',
'cedente_cnpj': '18727053000174',
'agencia': '1229',
'codigo_cedente': '469',
'carteira': '25',
'pagador': 'Nome do pagador\nCPF: 000.000.000-00',
'local_de_pagamento': 'PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO.',
'instrucoes': 'Sr. Caixa, aceitar o pagamento e não cobrar juros após o vencimento.'
}))
})

before(() => {
boletos.push(new Boleto({
'banco': 'bradesco',
'data_emissao': new Date('2017-01-01T00:00:00Z').getTime(),
'data_vencimento': new Date('2017-01-05T00:00:00Z').getTime(),
'valor': 1500,
'nosso_numero': '6',
'numero_documento': '1',
'cedente': 'Pagar.me Pagamentos S/A',
'cedente_cnpj': '18727053000174',
'agencia': '1229',
'codigo_cedente': '469',
'carteira': '25',
'pagador': 'Nome do pagador\nCPF: 000.000.000-00',
'local_de_pagamento': 'PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO.',
'instrucoes': 'Sr. Caixa, aceitar o pagamento e não cobrar juros após o vencimento.'
}))
})

it('contains correct bank options', () => {
expect(boleto.bank.options).to.have.property('logoURL').that.contains('bradesco.jpg')
expect(boleto.bank.options).to.have.property('codigo', '237')
boletos.forEach(boleto => {
expect(boleto.bank.options).to.have.property('logoURL').that.contains('bradesco.jpg')
expect(boleto.bank.options).to.have.property('codigo', '237')
});
})

it('contains correct codigo_banco', () => {
expect(boleto.codigo_banco).to.equal('237-2')
boletos.forEach(boleto => {
expect(boleto.codigo_banco).to.equal('237-2')
})
})

it('contains correct barcode_data', () => {
expect(boleto.barcode_data).to.equal('23794703000000015001229250000000000600004690')
boletos.forEach(boleto => {
expect(boleto.barcode_data).to.equal('23794703000000015001229250000000000600004690')
})
})

it('contains correct linha_digitavel', () => {
expect(boleto.linha_digitavel).to.equal('23791.22928 50000.000005 06000.046901 4 70300000001500')
boletos.forEach(boleto => {
expect(boleto.linha_digitavel).to.equal('23791.22928 50000.000005 06000.046901 4 70300000001500')
})
})
})
})
6 changes: 3 additions & 3 deletions test/integration/santander/boleto.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const Boleto = require('../../../index').Boleto

const moment = require('moment')
const expect = require('chai').expect

describe('Santander Boleto', () => {
Expand All @@ -8,8 +8,8 @@ describe('Santander Boleto', () => {
before(() => {
boleto = new Boleto({
'banco': 'santander',
'data_emissao': new Date('2017-01-01T00:00:00Z'),
'data_vencimento': new Date(2017, 0, 5),
'data_emissao': moment('2017-01-01T00:00:00Z'),
'data_vencimento': moment('2017-01-05'),
'valor': 1500,
'nosso_numero': '6',
'numero_documento': '1',
Expand Down

0 comments on commit bd79de2

Please sign in to comment.