xxxxxxxxxx
const csv = require('csvtojson')
const fs = require('fs')
const Papa = require('papaparse')
const { json2csv } = require('json-2-csv')
const moment = require('moment-timezone')
// function reformatString(str) {
// const obj = {
// address: '',
// addressName: ''
// }
// const vaNumberRegex = /\s*([^|]+)$/
// const vaNumberMatch = str.match(vaNumberRegex)
// if (vaNumberMatch) {
// const data = vaNumberMatch[0].replace(/(\d+)\s(.+)/, '$1, $2').split(',')
// obj.address = data[0].trim()
// obj.addressName = data[1].trim()
// }
// return obj
// }
const reformatValueCreditAndDebit = (data) => {
const csvMap = {}
const notValueIn = ['0:00', '0.00', undefined]
data.forEach((item) => {
if (!notValueIn.includes(item.credit)) {
csvMap[item.id] = item.credit
}
})
data.forEach((item) => {
if (notValueIn.includes(item.credit)) {
item.credit = csvMap[item.id]
}
const pemindahanDebitMatch = item.debit.match(/(\d+)\:(\d+):(\d+)/g)
if (Array.isArray(pemindahanDebitMatch) && pemindahanDebitMatch.length) {
item.debit = item.debit.replace(/:(\d)+$/g, '').replace(/:/g, '')
item.debit = item.debit.length > 5 ? Number(item.debit) : Number(item.debit + '0')
item.debit = item.debit / 1000
}
const pemindahanCreditPattern = /(\d+),/g
if (item.credit) {
const pemindahanCreditMatch = item.credit.match(pemindahanCreditPattern)
if (Array.isArray(pemindahanCreditMatch) && pemindahanCreditMatch.length) {
item.credit = Number(item.credit.replace(/:(\d+)/g, '').replace(/,/g, ''))
}
} else {
const pemindahanCreditMatch = item.debit.match(pemindahanCreditPattern)
if (Array.isArray(pemindahanCreditMatch) && pemindahanCreditMatch.length) {
item.debit = Number(item.debit.replace(/:(\d+)/g, '').replace(/,/g, ''))
}
}
})
const deposit = data.filter((val) => val.notes.includes('BRIVA') && !notValueIn.includes(val.debit))
const withdraw = data.filter((val) => !val.notes.includes('BRIVA') && notValueIn.includes(val.credit))
return { deposit, withdraw }
}
const readFile = fs.readFileSync('./BRI2.csv')
let csvStr = readFile.toString()
if (csvStr.match(/(\d+)\.(\d+)/g)) {
const ouputCsvStr = csvStr.replace(/(\d+)\.(\d+)/g, '$1:$2')
csvStr = ouputCsvStr.replace(/(\d+):(\d+),(\d+):(\d+)/g, '$1:$2$3:$4')
}
let pr = Papa.parse(csvStr)
let data = pr.data.slice(1, pr.data.length)
let briDataReformat = []
let briHeaderKeyReformat = ['date', 'time', 'notes', 'debit', 'credit', 'id']
for (let i = 0; i < data.length; i++) {
let csvDatas = data[i]
if (csvDatas.length < 11) {
let id = csvDatas[9]
csvDatas[9] = '0:00'
csvDatas[10] = id
}
let normalizeDatas = csvDatas.slice(briHeaderKeyReformat.length - 1, csvDatas.length)
let csvMap = {}
for (let i in normalizeDatas) {
csvMap[briHeaderKeyReformat[i]] = normalizeDatas[i]
if (csvMap.date && csvMap.time) {
csvMap.created_date = moment(csvMap.date + ' ' + csvMap.time, 'MM/DD/YYYY HH:mm:ss').format('YYYY-MM-DD HH:mm:ss.SSS Z')
delete csvMap.date
delete csvMap.time
}
}
const pemindahanAddressMatch = csvMap.notes.match(/(?<=BRIVA\s{0,2})\d{15}[A-Z]+(?=\s{0,2}BRIVA)/)
if (Array.isArray(pemindahanAddressMatch) && pemindahanAddressMatch.length > 0) {
const str = pemindahanAddressMatch.join('')
const newStr = str.replace(/(\d{15})\w{4}/, '$1,').split(',')
csvMap.address = Number(newStr[0])
csvMap.addressName = newStr[1]
}
const pemindahanNotesMatch = csvMap.notes.match(/[\w]+/)
if (Array.isArray(pemindahanNotesMatch) && pemindahanNotesMatch.length > 0) {
csvMap.notes = pemindahanNotesMatch.join('')
}
// const pemindahanDebitMatch = csvMap.debit.match(/(\d+)\:(\d+):(\d+)/g)
// if (Array.isArray(pemindahanDebitMatch) && pemindahanDebitMatch.length) {
// csvMap.debit = csvMap.debit.replace(/:(\d)+$/g, '').replace(/:/g, '')
// csvMap.debit = csvMap.debit.length > 5 ? Number(csvMap.debit) : Number(csvMap.debit + '0')
// csvMap.debit = csvMap.debit / 1000
// }
// const pemindahanCreditMatch = csvMap.credit.match(/(\d+),/g)
// if (Array.isArray(pemindahanCreditMatch) && pemindahanCreditMatch.length) {
// csvMap.credit = Number(csvMap.credit.replace(/:(\d)+$/g, '').replace(/,/, ''))
// }
briDataReformat.push(csvMap)
}
let datax = reformatValueCreditAndDebit(briDataReformat)
console.log(datax)
xxxxxxxxxx
const csv = require('csvtojson')
const fs = require('fs')
const Papa = require('papaparse')
const { json2csv } = require('json-2-csv')
const moment = require('moment-timezone')
const reformatValueCreditAndDebit = (data) => {
const csvMap = {}
const notValueIn = ['0:00', '0.00', undefined]
data.forEach((item) => {
if (!notValueIn.includes(item.credit)) {
csvMap[item.id] = item.credit
}
})
data.forEach((item) => {
if (notValueIn.includes(item.credit)) {
item.credit = csvMap[item.id]
}
const pemindahanDebitMatch = item.debit.match(/(\d+)\:(\d+):(\d+)/g)
if (Array.isArray(pemindahanDebitMatch) && pemindahanDebitMatch.length) {
item.debit = item.debit.replace(/:(\d)+$/g, '').replace(/:/g, '')
item.debit = item.debit.length > 5 ? Number(item.debit) : Number(item.debit + '0')
item.debit = item.debit / 1000
}
const pemindahanCreditPattern = /(\d+),/g
if (item.credit) {
const pemindahanCreditMatch = item.credit.match(pemindahanCreditPattern)
if (Array.isArray(pemindahanCreditMatch) && pemindahanCreditMatch.length) {
item.credit = Number(item.credit.replace(/:(\d+)/g, '').replace(/,/g, ''))
}
} else {
const pemindahanCreditMatch = item.debit.match(pemindahanCreditPattern)
if (Array.isArray(pemindahanCreditMatch) && pemindahanCreditMatch.length) {
item.debit = Number(item.debit.replace(/:(\d+)/g, '').replace(/,/g, ''))
}
}
})
const deposit = data.filter((val) => val.notes.includes('BRIVA') && !notValueIn.includes(val.debit))
const withdraw = data.filter((val) => {
if (!val.notes.includes('BRIVA') && notValueIn.includes(val.credit)) {
val.credit = '0:00'
return val
}
})
return { deposit: deposit, withdraw: withdraw }
}
const readFile = fs.readFileSync('./BRI_success.csv')
let csvStr = readFile.toString()
if (csvStr.match(/(\d+)\.(\d+)/g)) {
const ouputCsvStr = csvStr.replace(/(\d+)\.(\d+)/g, '$1:$2')
csvStr = ouputCsvStr.replace(/(\d+):(\d+),(\d+):(\d+)/g, '$1:$2$3:$4')
}
let pr = Papa.parse(csvStr)
let data = pr.data.slice(1, pr.data.length)
let briDataReformat = []
let briHeaderKeyReformat = ['date', 'time', 'notes', 'debit', 'credit', 'id']
for (let i = 0; i < data.length; i++) {
let csvDatas = data[i]
if (csvDatas.length < 11) {
let id = csvDatas[9]
csvDatas[9] = '0:00'
csvDatas[10] = id
}
let normalizeDatas = csvDatas.slice(briHeaderKeyReformat.length - 1, csvDatas.length)
let csvMap = {}
for (let i in normalizeDatas) {
csvMap[briHeaderKeyReformat[i]] = normalizeDatas[i]
if (csvMap.date && csvMap.time) {
csvMap.createdDate = moment(csvMap.date + ' ' + csvMap.time, 'DD/MM/YYYY HH:mm:ss').format('YYYY-MM-DD HH:mm:ss.SSS Z')
delete csvMap.date
delete csvMap.time
}
}
const pemindahanAddressMatch = csvMap.notes.match(/BRIVA(\d+[A-Z\s]+)[BRIVA]/i)
if (Array.isArray(pemindahanAddressMatch) && pemindahanAddressMatch.length > 0) {
const str = pemindahanAddressMatch[1]
const newStr = str
.replace(/(\d{15})\w{4}/i, '$1,')
.replace(/BRIV/, '')
.trim()
.split(',')
csvMap.address = Number(newStr[0])
csvMap.addressName = newStr[1]
}
briDataReformat.push(csvMap)
}
let datax = reformatValueCreditAndDebit(briDataReformat)
console.log(datax)
xxxxxxxxxx
const csv = require('csvtojson')
const fs = require('fs')
const Papa = require('papaparse')
const { json2csv } = require('json-2-csv')
const moment = require('moment-timezone')
const reformatValueCreditAndDebit = (data) => {
const csvMap = {}
const notValueIn = ['0:00', '0.00', undefined]
data.forEach((item) => {
if (!notValueIn.includes(item.credit)) {
csvMap[item.id] = item.credit
}
})
data.forEach((item) => {
if (notValueIn.includes(item.credit)) {
item.credit = csvMap[item.id]
}
const pemindahanDebitMatch = item.debit.match(/(\d+)\:(\d+):(\d+)/g)
if (Array.isArray(pemindahanDebitMatch) && pemindahanDebitMatch.length) {
item.debit = item.debit.replace(/:(\d)+$/g, '').replace(/:/g, '')
item.debit = item.debit.length > 5 ? Number(item.debit) : Number(item.debit + '0')
item.debit = item.debit / 1000
}
const pemindahanCreditPattern = /(\d+),/g
if (item.credit) {
const pemindahanCreditMatch = item.credit.match(pemindahanCreditPattern)
if (Array.isArray(pemindahanCreditMatch) && pemindahanCreditMatch.length) {
item.credit = Number(item.credit.replace(/:(\d+)/g, '').replace(/,/g, ''))
}
} else {
const pemindahanCreditMatch = item.debit.match(pemindahanCreditPattern)
if (Array.isArray(pemindahanCreditMatch) && pemindahanCreditMatch.length) {
item.debit = Number(item.debit.replace(/:(\d+)/g, '').replace(/,/g, ''))
}
}
})
const deposit = data.filter((val) => val.notes.includes('BRIVA') && !notValueIn.includes(val.debit))
const withdraw = data.filter((val) => {
if (!val.notes.includes('BRIVA') && notValueIn.includes(val.credit)) {
val.credit = '0:00'
return val
}
})
return { deposit: deposit, withdraw: withdraw }
}
const readFile = fs.readFileSync('./BRI_success.csv')
let csvStr = readFile.toString()
if (csvStr.match(/(\d+)\.(\d+)/g)) {
const ouputCsvStr = csvStr.replace(/(\d+)\.(\d+)/g, '$1:$2')
csvStr = ouputCsvStr.replace(/(\d+):(\d+),(\d+):(\d+)/g, '$1:$2$3:$4')
}
let pr = Papa.parse(csvStr)
let data = pr.data.slice(1, pr.data.length)
let briDataReformat = []
let briHeaderKeyReformat = ['date', 'time', 'notes', 'debit', 'credit', 'id']
for (let i = 0; i < data.length; i++) {
let csvDatas = data[i]
if (csvDatas.length < 11) {
let id = csvDatas[9]
csvDatas[9] = '0:00'
csvDatas[10] = id
}
let normalizeDatas = csvDatas.slice(briHeaderKeyReformat.length - 1, csvDatas.length)
let csvMap = {}
for (let i in normalizeDatas) {
csvMap[briHeaderKeyReformat[i]] = normalizeDatas[i]
if (csvMap.date && csvMap.time) {
if (!csvMap.date.match(/^\d{2}/)) {
csvMap.createdDate = moment(csvMap.date + ' ' + csvMap.time, 'MM/DD/YYYY HH:mm:ss').format('YYYY-MM-DD HH:mm:ss.SSS Z')
} else {
csvMap.createdDate = moment(csvMap.date + ' ' + csvMap.time, 'DD/MM/YYYY HH:mm:ss').format('YYYY-MM-DD HH:mm:ss.SSS Z')
}
delete csvMap.date
delete csvMap.time
}
}
const pemindahanNoteMatch = csvMap.notes.match(/BRIVA(\d+[A-Z\s]+)[BRIVA]/i)
if (Array.isArray(pemindahanNoteMatch) && pemindahanNoteMatch.length > 0) {
const str = pemindahanNoteMatch[1]
const newStr = str
.replace(/(\d{15})\w{4}/i, '$1,')
.replace(/BRIV/, '')
.trim()
.split(',')
csvMap.address = Number(newStr[0])
csvMap.addressName = newStr[1]
}
briDataReformat.push(csvMap)
}
let datax = reformatValueCreditAndDebit(briDataReformat)
console.log(datax)
xxxxxxxxxx
/// NEW
const csv = require('csvtojson')
const fs = require('fs')
const Papa = require('papaparse')
const { json2csv } = require('json-2-csv')
const moment = require('moment-timezone')
function exextransactionCsvData(type, data) {
const csvMap = {}
const notValueIn = ['0:00', '0.00', undefined]
data.forEach((item) => {
if (!notValueIn.includes(item.credit)) {
csvMap[item.id] = item.credit
}
})
data.forEach((item) => {
if (notValueIn.includes(item.credit)) {
item.credit = csvMap[item.id]
}
const pemindahanDebitMatch = item.debit.match(/(\d+)\:(\d+):(\d+)/g)
if (Array.isArray(pemindahanDebitMatch) && pemindahanDebitMatch.length) {
item.debit = item.debit.replace(/:(\d)+$/g, '').replace(/:/g, '')
item.debit = item.debit.length > 5 ? Number(item.debit) : Number(item.debit + '0')
item.debit = item.debit / 1000
}
const pemindahanCreditPattern = /(\d+),/g
if (item.credit) {
const pemindahanCreditMatch = item.credit.match(pemindahanCreditPattern)
if (Array.isArray(pemindahanCreditMatch) && pemindahanCreditMatch.length) {
item.credit = Number(item.credit.replace(/:(\d+)/g, '').replace(/,/g, ''))
}
} else {
const pemindahanCreditMatch = item.debit.match(pemindahanCreditPattern)
if (Array.isArray(pemindahanCreditMatch) && pemindahanCreditMatch.length) {
item.debit = Number(item.debit.replace(/:(\d+)/g, '').replace(/,/g, ''))
}
}
})
const deposit = data
.filter((val) => val.notes.includes('BRIVA') && !notValueIn.includes(val.debit))
.map((val) => {
if (notValueIn.includes(val.credit)) {
val.credit = '0'
}
return {
id: val.id,
created_time: val.createdDate,
amount: val.credit,
fee_amount: val.debit,
reference: val.address,
notes: val.notes,
address: val.address,
address_name: val.addressName
}
})
const withdraw = data
.filter((val) => {
if (!val.notes.includes('BRIVA') && notValueIn.includes(val.credit)) {
val.credit = '0'
return val
}
})
.map((val) => {
let referenceNo = '-'
const pemindahanReferenceMatch = val.notes.match(/:S:(\d+):WSOB/)
if (Array.isArray(pemindahanReferenceMatch) && pemindahanReferenceMatch.length > 0) {
referenceNo = pemindahanReferenceMatch[1]
}
return {
id: val.id,
created_time: val.createdDate,
amount: val.debit,
fee_amount: val.credit,
reference: referenceNo,
notes: val.notes,
address: val.address ? val.address : '-',
address_name: val.addressName ? val.addressName : '-'
}
})
let csvData = json2csv(deposit)
if (type !== 'deposit') {
csvData = json2csv(withdraw)
}
return csvData
}
function reformatCsv(type, csvData) {
let csvStr = csvData
if (csvStr.match(/(\d+)\.(\d+)/g)) {
const ouputCsvStr = csvStr.replace(/(\d+)\.(\d+)/g, '$1:$2')
csvStr = ouputCsvStr.replace(/(\d+):(\d+),(\d+):(\d+)/g, '$1:$2$3:$4')
}
let pr = Papa.parse(csvStr)
let data = pr.data.slice(1, pr.data.length)
let briDataReformat = []
let briHeaderKeyReformat = ['date', 'time', 'notes', 'debit', 'credit', 'id']
for (let i = 0; i < data.length; i++) {
let csvDatas = data[i]
if (csvDatas.length < 11) {
let id = csvDatas[9]
csvDatas[9] = '0:00'
csvDatas[10] = id
}
let normalizeDatas = csvDatas.slice(briHeaderKeyReformat.length - 1, csvDatas.length)
let csvMap = {}
for (let i in normalizeDatas) {
csvMap[briHeaderKeyReformat[i]] = normalizeDatas[i]
if (csvMap.date && csvMap.time) {
if (!csvMap.date.match(/^\d{2}/)) {
csvMap.createdDate = moment(csvMap.date + ' ' + csvMap.time, 'MM/DD/YYYY HH:mm:ss').format('YYYY-MM-DD HH:mm:ss.SSS Z')
} else {
csvMap.createdDate = moment(csvMap.date + ' ' + csvMap.time, 'DD/MM/YYYY HH:mm:ss').format('YYYY-MM-DD HH:mm:ss.SSS Z')
}
delete csvMap.date
delete csvMap.time
}
}
const pemindahanNoteMatch = csvMap.notes.match(/BRIVA(\d+[A-Z\s]+)[BRIVA]/i)
if (Array.isArray(pemindahanNoteMatch) && pemindahanNoteMatch.length > 0) {
const str = pemindahanNoteMatch[1]
const newStr = str
.replace(/(\d{15})\w{4}/i, '$1,')
.replace(/BRIV/, '')
.trim()
.split(',')
csvMap.address = Number(newStr[0])
csvMap.addressName = newStr[1]
}
briDataReformat.push(csvMap)
}
return exextransactionCsvData(type, briDataReformat)
}
const readFile = fs.readFileSync('./BRI_WD_SUCCEED.csv')
let csvData = reformatCsv('withdraw', readFile.toString())
console.log(csvData)