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:
2023-12-22 17:50:22 +01:00
parent 8a1e2384d1
commit 9e092823e4
22 changed files with 1475 additions and 243 deletions

168
test/bankImport/index.mjs Normal file
View 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()