108 lines
2.9 KiB
JavaScript
108 lines
2.9 KiB
JavaScript
const urlBuilder = require("./qbo").urlBuilder;
|
|
const path = require("path");
|
|
require("dotenv").config({
|
|
path: path.resolve(
|
|
process.cwd(),
|
|
`.env.${process.env.NODE_ENV || "development"}`
|
|
),
|
|
});
|
|
const client = require("../../graphql-client/graphql-client").client;
|
|
const queries = require("../../graphql-client/queries");
|
|
const {
|
|
refresh: refreshOauthToken,
|
|
setNewRefreshToken,
|
|
} = require("./qbo-callback");
|
|
const OAuthClient = require("intuit-oauth");
|
|
var QuickBooks = require("node-quickbooks");
|
|
|
|
const oauthClient = new OAuthClient({
|
|
clientId: process.env.QBO_CLIENT_ID,
|
|
clientSecret: process.env.QBO_SECRET,
|
|
environment: process.env.NODE_ENV === "production" ? "production" : "sandbox",
|
|
redirectUri: process.env.QBO_REDIRECT_URI,
|
|
logging: true,
|
|
});
|
|
|
|
exports.default = async (req, res) => {
|
|
try {
|
|
const response = await client.request(queries.GET_QBO_AUTH, {
|
|
email: req.user.email,
|
|
});
|
|
response.associations[0].qbo_auth;
|
|
|
|
oauthClient.setToken(response.associations[0].qbo_auth);
|
|
|
|
if (!oauthClient.token.isAccessTokenValid()) {
|
|
await refreshOauthToken(oauthClient, req);
|
|
if (!oauthClient.token.isAccessTokenValid()) {
|
|
res.sendStatus(401);
|
|
}
|
|
}
|
|
|
|
const customerCreate = {
|
|
FullyQualifiedName: "A Test Customer",
|
|
DisplayName: "A test Customer",
|
|
};
|
|
|
|
// const ret = await oauthClient.makeApiCall({
|
|
// url: urlBuilder(req.cookies.qbo_realmId, "customer"),
|
|
// method: "POST",
|
|
// headers: {
|
|
// "Content-Type": "application/json",
|
|
// },
|
|
// body: JSON.stringify(customerCreate),
|
|
// });
|
|
|
|
// const invoice = {
|
|
// Line: [
|
|
// {
|
|
// DetailType: "SalesItemLineDetail",
|
|
// Amount: 100,
|
|
// SalesItemLineDetail: {
|
|
// ItemRef: {
|
|
// name: "Services",
|
|
// value: "1",
|
|
// },
|
|
// TaxCodeRef: {
|
|
// value: "2",
|
|
// },
|
|
// Qty: 1,
|
|
// UnitPrice: 100,
|
|
// },
|
|
// },
|
|
// ],
|
|
// CustomerRef: {
|
|
// name: "A test Customer",
|
|
// },
|
|
// };
|
|
|
|
// const ret2 = await oauthClient.makeApiCall({
|
|
// url: urlBuilder(req.cookies.qbo_realmId, "invoice"),
|
|
// method: "POST",
|
|
// headers: {
|
|
// "Content-Type": "application/json",
|
|
// },
|
|
// body: JSON.stringify(invoice),
|
|
// });
|
|
|
|
const ret2 = await oauthClient.makeApiCall({
|
|
url: urlBuilder(
|
|
req.cookies.qbo_realmId,
|
|
"query",
|
|
`select * From TaxCode where Active = true`
|
|
),
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
// body: JSON.stringify(invoice),
|
|
});
|
|
setNewRefreshToken(req.user.email, ret2);
|
|
console.log(ret2);
|
|
res.send(ret2);
|
|
} catch (error) {
|
|
console.log(error);
|
|
res.status(400).json(error);
|
|
}
|
|
};
|