Added Vehicles
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
This commit is contained in:
168
test/bankImport/index.mjs
Normal file
168
test/bankImport/index.mjs
Normal file
@@ -0,0 +1,168 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user