Version
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
import axios from "axios";
|
||||
|
||||
const connectWiseApi = axios.create({
|
||||
baseURL: `https://ttscw.totaltech.net/v4_6_release/apis/3.0/`,
|
||||
headers: {
|
||||
Authorization: `Basic ${process.env.CW_BASIC_TOKEN}`,
|
||||
clientId: `${process.env.CW_CLIENT_ID}`,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
});
|
||||
|
||||
async function main() {
|
||||
// Fetch inactive catalog items
|
||||
const pageSize = 1000;
|
||||
let page = 1;
|
||||
const inactiveItems: any[] = [];
|
||||
|
||||
while (true) {
|
||||
const response = await connectWiseApi.get(
|
||||
`/procurement/catalog?page=${page}&pageSize=${pageSize}&conditions=inactiveFlag=true&fields=id,identifier,description,_info`,
|
||||
);
|
||||
if (response.data.length === 0) break;
|
||||
inactiveItems.push(...response.data);
|
||||
page++;
|
||||
}
|
||||
|
||||
console.log(`Found ${inactiveItems.length} inactive catalog items`);
|
||||
console.log(`Checking inventory for each (batches of 50)...\n`);
|
||||
|
||||
const withStock: any[] = [];
|
||||
const batchSize = 50;
|
||||
|
||||
for (let i = 0; i < inactiveItems.length; i += batchSize) {
|
||||
const batch = inactiveItems.slice(i, i + batchSize);
|
||||
await Promise.all(
|
||||
batch.map(async (item) => {
|
||||
try {
|
||||
const res = await connectWiseApi.get(
|
||||
`/procurement/catalog/${item.id}/inventory?fields=onHand`,
|
||||
);
|
||||
const totalOnHand = (res.data as { onHand: number }[]).reduce(
|
||||
(sum, e) => sum + (e.onHand || 0),
|
||||
0,
|
||||
);
|
||||
if (totalOnHand > 0) {
|
||||
withStock.push({
|
||||
id: item.id,
|
||||
identifier: item.identifier,
|
||||
description: item.description,
|
||||
totalOnHand,
|
||||
});
|
||||
}
|
||||
} catch {}
|
||||
}),
|
||||
);
|
||||
const done = Math.min(i + batchSize, inactiveItems.length);
|
||||
if (done % 500 === 0 || done === inactiveItems.length) {
|
||||
console.log(` ${done}/${inactiveItems.length} checked`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(
|
||||
`\nInactive items with inventory: ${withStock.length}/${inactiveItems.length}\n`,
|
||||
);
|
||||
|
||||
if (withStock.length > 0) {
|
||||
console.log(JSON.stringify(withStock, null, 2));
|
||||
}
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
Reference in New Issue
Block a user