Added Bankimport, BankAccounts, BankStatements Some Visual Changes Added Contacts Changes in VendorInvoices Added layouts with default an one for Login PAge Added Input Group Component
169 lines
5.1 KiB
JavaScript
169 lines
5.1 KiB
JavaScript
import axios from "axios"
|
|
import {createClient} from "@supabase/supabase-js";
|
|
|
|
let key = process.env.SUPABASE_KEY
|
|
let url = process.env.SUPABASE_URL
|
|
let interval = process.env.INTERVAL
|
|
let goCardLessBaseUrl = process.env.GOCARDLESS_URL
|
|
let goCardLessSecretId = process.env.GOCARDLESS_SECRET_ID
|
|
let goCardLessSecretKey = process.env.GOCARDLESS_SECRET_KEY
|
|
|
|
const supabase = createClient(url,key)
|
|
|
|
let accessToken = ""
|
|
let refreshToken = ""
|
|
|
|
|
|
console.log(goCardLessBaseUrl)
|
|
|
|
|
|
let currentTenant = 1
|
|
|
|
let tenantData = (await supabase.from("tenants").select().eq("id", currentTenant)).data[0]
|
|
//console.log(tenantData)
|
|
|
|
|
|
let bankConfig = tenantData.bankConfig
|
|
|
|
//console.log(bankConfig)
|
|
|
|
//console.log(goCardLessBaseUrl + "token/new/")
|
|
let tokenData = (await axios({
|
|
url: goCardLessBaseUrl + "token/new/",
|
|
method: "POST",
|
|
data: {
|
|
"secret_id": goCardLessSecretId,
|
|
"secret_key": goCardLessSecretKey
|
|
}
|
|
})).data
|
|
|
|
accessToken = tokenData.access
|
|
refreshToken = tokenData.access
|
|
|
|
let accounts = []
|
|
|
|
const getAccounts = async () => {
|
|
let existingAccounts = (await supabase.from("bankAccounts").select()).data
|
|
|
|
let requisitionData = (await axios({
|
|
url: goCardLessBaseUrl + "requisitions/" + bankConfig.requisitions[0],
|
|
headers: {
|
|
Authorization: `Bearer ${accessToken}`
|
|
},
|
|
method: "GET",
|
|
})).data
|
|
|
|
requisitionData.accounts.forEach(account => {
|
|
if (!accounts.includes(account)) {
|
|
accounts.push(account)
|
|
}
|
|
})
|
|
|
|
let supabaseAccountInserts = []
|
|
|
|
async function getAccountData () {
|
|
await Promise.all(accounts.map(async (account) => {
|
|
let accountData = (await axios({
|
|
url: goCardLessBaseUrl + "accounts/" + account,
|
|
headers: {
|
|
Authorization: `Bearer ${accessToken}`
|
|
},
|
|
method: "GET"
|
|
})).data
|
|
|
|
//console.log(accountData)
|
|
|
|
if(existingAccounts.filter(account => account.iban === accountData.iban).length === 0){
|
|
supabaseAccountInserts.push({
|
|
name: "",
|
|
iban: accountData.iban,
|
|
bankId: accountData.institution_id,
|
|
ownerName: accountData.owner_name,
|
|
tenant: currentTenant,
|
|
accountId: accountData.id
|
|
})
|
|
}
|
|
|
|
|
|
}));
|
|
}
|
|
|
|
await getAccountData()
|
|
|
|
//console.log("Start Insert")
|
|
|
|
const {data:accountInsertData,error:accountInsertError} = await supabase.from("bankAccounts").insert(supabaseAccountInserts).select()
|
|
if(accountInsertError) {
|
|
console.log(accountInsertError)
|
|
} else if(accountInsertData) {
|
|
//console.log(accountInsertData)
|
|
}
|
|
}
|
|
|
|
|
|
const getTransactions = async () => {
|
|
let accountsToRequest = (await supabase.from("bankAccounts").select().eq("used", true)).data
|
|
let existingTransactions = (await supabase.from("bankStatements").select().eq("tenant", currentTenant)).data
|
|
|
|
console.log(accountsToRequest)
|
|
|
|
let supabaseTransactionInserts = []
|
|
|
|
async function getAccountTransactions () {
|
|
await Promise.all(accountsToRequest.map(async (account) => {
|
|
let transactions = (await axios({
|
|
url: goCardLessBaseUrl + "accounts/" + account.accountId + "/transactions",
|
|
headers: {
|
|
Authorization: `Bearer ${accessToken}`
|
|
},
|
|
method: "GET"
|
|
})).data.transactions.booked
|
|
|
|
//console.log(transactions)
|
|
|
|
|
|
transactions.forEach(transaction => {
|
|
if(!transaction.creditorAccount) console.log(transaction)
|
|
|
|
let transactionData = {
|
|
date: transaction.bookingDate,
|
|
amount: transaction.transactionAmount.amount,
|
|
credName: transaction.creditorName ? transaction.creditorName : null,
|
|
credIban: transaction.creditorAccount ? transaction.creditorAccount.iban : null,
|
|
debName: transaction.debtorName,
|
|
debIban: transaction.debtorAccount.iban,
|
|
text: transaction.remittanceInformationUnstructured,
|
|
gocardlessId: transaction.internalTransactionId,
|
|
currency: transaction.transactionAmount.currency,
|
|
account: account.id,
|
|
tenant: currentTenant
|
|
}
|
|
|
|
if(existingTransactions.filter(item => item.gocardlessId === transaction.internalTransactionId).length === 0){
|
|
supabaseTransactionInserts.push(transactionData)
|
|
}
|
|
})
|
|
|
|
}));
|
|
}
|
|
|
|
await getAccountTransactions()
|
|
|
|
console.log(supabaseTransactionInserts)
|
|
|
|
const {data:transactionInsertData, error:transactionInsertError} = await supabase.from("bankStatements").insert(supabaseTransactionInserts).select()
|
|
|
|
if(transactionInsertError) {
|
|
console.log(transactionInsertError)
|
|
} else if(transactionInsertData) {
|
|
console.log(transactionInsertData)
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
getAccounts()
|
|
getTransactions()
|