diff --git a/test/heroimport/index.mjs b/test/heroimport/index.mjs new file mode 100644 index 0000000..0f063ba --- /dev/null +++ b/test/heroimport/index.mjs @@ -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() diff --git a/test/printserver/Briefpapier.pdf b/test/printserver/Briefpapier.pdf new file mode 100644 index 0000000..647cec4 Binary files /dev/null and b/test/printserver/Briefpapier.pdf differ diff --git a/test/printserver/index.js b/test/printserver/index.js new file mode 100644 index 0000000..b256b30 --- /dev/null +++ b/test/printserver/index.js @@ -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) \ No newline at end of file