Some Tests
This commit is contained in:
225
test/heroimport/index.mjs
Normal file
225
test/heroimport/index.mjs
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
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
|
||||||
|
|
||||||
|
const supabase = createClient(url,key)
|
||||||
|
|
||||||
|
let currentTenant = 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const fetchProjects = async () => {
|
||||||
|
|
||||||
|
let offset = 0;
|
||||||
|
let projectMatches = [];
|
||||||
|
|
||||||
|
|
||||||
|
let query = `
|
||||||
|
query {
|
||||||
|
project_matches(offset: 0) {
|
||||||
|
id
|
||||||
|
project_nr
|
||||||
|
name
|
||||||
|
display_id
|
||||||
|
is_deleted
|
||||||
|
file_uploads {
|
||||||
|
url
|
||||||
|
url_download
|
||||||
|
type
|
||||||
|
category
|
||||||
|
image_category
|
||||||
|
filename
|
||||||
|
modified
|
||||||
|
size
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
partner_notes
|
||||||
|
|
||||||
|
volume
|
||||||
|
|
||||||
|
|
||||||
|
measure { # Gewerk
|
||||||
|
short
|
||||||
|
name
|
||||||
|
}
|
||||||
|
|
||||||
|
customer { # Kunde
|
||||||
|
id
|
||||||
|
first_name
|
||||||
|
last_name
|
||||||
|
email
|
||||||
|
address {
|
||||||
|
basic_address
|
||||||
|
city
|
||||||
|
street
|
||||||
|
zipcode
|
||||||
|
full_address
|
||||||
|
}
|
||||||
|
birth_date
|
||||||
|
is_deleted
|
||||||
|
full_name
|
||||||
|
nr
|
||||||
|
partner_notes
|
||||||
|
type
|
||||||
|
}
|
||||||
|
|
||||||
|
contact { # Ansprechpartner
|
||||||
|
id
|
||||||
|
full_name
|
||||||
|
nr
|
||||||
|
type
|
||||||
|
first_name
|
||||||
|
last_name
|
||||||
|
email
|
||||||
|
phone_home
|
||||||
|
phone_mobile
|
||||||
|
birth_date
|
||||||
|
category
|
||||||
|
}
|
||||||
|
|
||||||
|
address { #Projektadresse
|
||||||
|
street
|
||||||
|
city
|
||||||
|
zipcode
|
||||||
|
full_address
|
||||||
|
}
|
||||||
|
|
||||||
|
current_project_match_status { # Projektstatus
|
||||||
|
status_code
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const response = await axios({
|
||||||
|
url: "https://login.hero-software.de/api/external/v7/graphql",
|
||||||
|
data: {query},
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"content-type":"application/json",
|
||||||
|
"Authorization":"Bearer ac_wEDTAs73QLyb94RAnp265XcbgVtj6PKd"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
projectMatches = response.data.data.project_matches
|
||||||
|
//projectMatches = projectMatches.splice(0,10)
|
||||||
|
|
||||||
|
//console.log(projectMatches)
|
||||||
|
|
||||||
|
let customerObjs = []
|
||||||
|
let projectObjs = []
|
||||||
|
|
||||||
|
|
||||||
|
projectMatches.forEach(item => {
|
||||||
|
//Kunden erstellen
|
||||||
|
|
||||||
|
let customerObj = {
|
||||||
|
customerNumber: item.customer.nr,
|
||||||
|
name: item.customer.full_name,
|
||||||
|
tenant: currentTenant,
|
||||||
|
infoData: {
|
||||||
|
city: item.customer.address.city,
|
||||||
|
zip: item.customer.address.zipcode,
|
||||||
|
street: item.customer.address.street,
|
||||||
|
email: item.customer.email
|
||||||
|
},
|
||||||
|
active: true,
|
||||||
|
notes: item.customer.partner_notes,
|
||||||
|
type: item.customer.type == 'private' ? "Privat" : "Firma",
|
||||||
|
heroId: item.customer.nr,
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!customerObjs.find(i => i.heroId === customerObj.heroId)) customerObjs.push(customerObj)
|
||||||
|
|
||||||
|
//Kontakte erstellen
|
||||||
|
|
||||||
|
/*let contactObj = {
|
||||||
|
firstName: item.contact.first_name,
|
||||||
|
lastName: item.contact.last_name,
|
||||||
|
email: item.contact.email,
|
||||||
|
phoneMobile: item.contact.phone_mobile,
|
||||||
|
phoneHome: item.contact.phone_home,
|
||||||
|
heroId: item.contact.nr,
|
||||||
|
tenant: currentTenant
|
||||||
|
}*/
|
||||||
|
|
||||||
|
//Projekte erstellen
|
||||||
|
|
||||||
|
let projectObj = {
|
||||||
|
name: item.name,
|
||||||
|
heroId: item.project_nr,
|
||||||
|
notes: item.partner_notes,
|
||||||
|
tenant: currentTenant,
|
||||||
|
measure: item.measure.name
|
||||||
|
}
|
||||||
|
|
||||||
|
projectObjs.push(projectObj)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log(projectObjs.length)
|
||||||
|
console.log(customerObjs.length)
|
||||||
|
|
||||||
|
|
||||||
|
const existingProjects = (await supabase.from("projects").select("heroId")).data
|
||||||
|
let existingCustomers = (await supabase.from("customers").select("heroId")).data
|
||||||
|
|
||||||
|
projectObjs = projectObjs.filter(item => !existingProjects.find(i => i.heroId === item.heroId))
|
||||||
|
customerObjs = customerObjs.filter(item => !existingCustomers.find(i => i.heroId === item.heroId))
|
||||||
|
|
||||||
|
console.log(projectObjs.length)
|
||||||
|
console.log(customerObjs.length)
|
||||||
|
|
||||||
|
|
||||||
|
const {data:customerData, error:customerError } = await supabase
|
||||||
|
.from("customers")
|
||||||
|
.insert(customerObjs)
|
||||||
|
.select()
|
||||||
|
|
||||||
|
if(customerError) {
|
||||||
|
console.log(customerError)
|
||||||
|
} else if(customerData) {
|
||||||
|
console.log(customerData)
|
||||||
|
}
|
||||||
|
|
||||||
|
existingCustomers = (await supabase.from("customers").select("heroId,id").eq("tenant", currentTenant)).data
|
||||||
|
|
||||||
|
console.log(existingCustomers)
|
||||||
|
|
||||||
|
projectObjs.forEach((item,index) => {
|
||||||
|
let heroProject = projectMatches.find(prj => prj.project_nr === item.heroId)
|
||||||
|
let heroCustomerNr = heroProject.customer.nr
|
||||||
|
console.log(heroCustomerNr)
|
||||||
|
let customerId = existingCustomers.find(customer => String(customer.heroId) === String(heroCustomerNr)).id
|
||||||
|
console.log(customerId)
|
||||||
|
projectObjs[index].customer = customerId
|
||||||
|
})
|
||||||
|
|
||||||
|
//console.log(projectObjs)
|
||||||
|
|
||||||
|
|
||||||
|
const {data:projectData, error:projectError } = await supabase
|
||||||
|
.from("projects")
|
||||||
|
.insert(projectObjs)
|
||||||
|
.select()
|
||||||
|
|
||||||
|
if(projectError) {
|
||||||
|
console.log(projectError)
|
||||||
|
} else if(projectData) {
|
||||||
|
console.log(projectData)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchProjects()
|
||||||
BIN
test/printserver/Briefpapier.pdf
Normal file
BIN
test/printserver/Briefpapier.pdf
Normal file
Binary file not shown.
52
test/printserver/index.js
Normal file
52
test/printserver/index.js
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
const find = require('local-devices')
|
||||||
|
const {getPrinters, print } = require("unix-print");
|
||||||
|
const ipp = require("ipp")
|
||||||
|
|
||||||
|
const express = require("express")
|
||||||
|
const app = express()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*find().then(devices => {
|
||||||
|
console.log(devices)
|
||||||
|
})*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//let printers = await getPrinters()
|
||||||
|
//console.log(printers)
|
||||||
|
|
||||||
|
app.get("/", async (req,res) => {
|
||||||
|
console.log(req)
|
||||||
|
|
||||||
|
|
||||||
|
res.send("ok")
|
||||||
|
//res.json(await getPrinters())
|
||||||
|
})
|
||||||
|
|
||||||
|
app.post("/printlabel", async (req,res) => {
|
||||||
|
res.json(await getPrinters())
|
||||||
|
})
|
||||||
|
|
||||||
|
app.get("/printdoc", async (req,res) => {
|
||||||
|
res.json(await getPrinters())
|
||||||
|
})
|
||||||
|
|
||||||
|
app.post("/printeralarm", (req,res) => {
|
||||||
|
console.log(req)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let options = [
|
||||||
|
"-o media=a4",
|
||||||
|
"-o sides=one-sided"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//print("Briefpapier.pdf","EPSON_ET_15000_Series",options).then(console.log)
|
||||||
|
|
||||||
|
app.listen(3001)
|
||||||
Reference in New Issue
Block a user