Fix/add data to products script
This commit is contained in:
@@ -2,13 +2,16 @@ const { outputProgress, formatElapsedTime, estimateRemaining, calculateRate } =
|
||||
|
||||
// Utility functions
|
||||
const imageUrlBase = 'https://sbing.com/i/products/0000/';
|
||||
const getImageUrls = (pid) => {
|
||||
const getImageUrls = (pid, iid = 1) => {
|
||||
const paddedPid = pid.toString().padStart(6, '0');
|
||||
const basePath = `${imageUrlBase}${paddedPid.slice(0, 3)}/${pid}`;
|
||||
// Use padded PID only for the first 3 digits
|
||||
const prefix = paddedPid.slice(0, 3);
|
||||
// Use the actual pid for the rest of the URL
|
||||
const basePath = `${imageUrlBase}${prefix}/${pid}`;
|
||||
return {
|
||||
image: `${basePath}-t-`,
|
||||
image_175: `${basePath}-175x175-`,
|
||||
image_full: `${basePath}-o-`
|
||||
image: `${basePath}-t-${iid}.jpg`,
|
||||
image_175: `${basePath}-175x175-${iid}.jpg`,
|
||||
image_full: `${basePath}-o-${iid}.jpg`
|
||||
};
|
||||
};
|
||||
|
||||
@@ -118,12 +121,11 @@ async function materializeCalculations(prodConnection, localConnection) {
|
||||
p.pid,
|
||||
COALESCE(pcp.price_each, 0) as price,
|
||||
COALESCE(p.sellingprice, 0) AS regular_price,
|
||||
COALESCE(
|
||||
(SELECT ROUND(AVG(costeach), 5)
|
||||
FROM product_inventory
|
||||
WHERE pid = p.pid
|
||||
AND COUNT > 0), 0
|
||||
) AS cost_price
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM product_inventory WHERE pid = p.pid AND count > 0)
|
||||
THEN (SELECT ROUND(AVG(costeach), 5) FROM product_inventory WHERE pid = p.pid AND count > 0)
|
||||
ELSE (SELECT costeach FROM product_inventory WHERE pid = p.pid ORDER BY daterec DESC LIMIT 1)
|
||||
END AS cost_price
|
||||
FROM products p
|
||||
LEFT JOIN product_current_prices pcp ON p.pid = pcp.pid
|
||||
WHERE pcp.active = 1
|
||||
@@ -256,6 +258,13 @@ async function importProducts(prodConnection, localConnection, incrementalUpdate
|
||||
line VARCHAR(100),
|
||||
subline VARCHAR(100),
|
||||
artist VARCHAR(100),
|
||||
landing_cost_price DECIMAL(10,2) DEFAULT NULL,
|
||||
permalink VARCHAR(255) DEFAULT NULL,
|
||||
options TEXT DEFAULT NULL,
|
||||
tags TEXT DEFAULT NULL,
|
||||
uom VARCHAR(50) DEFAULT NULL,
|
||||
baskets INT DEFAULT 0,
|
||||
notifies INT DEFAULT 0,
|
||||
moq INT,
|
||||
rating TINYINT UNSIGNED,
|
||||
reviews INT UNSIGNED,
|
||||
@@ -286,7 +295,14 @@ async function importProducts(prodConnection, localConnection, incrementalUpdate
|
||||
p.harmonized_tariff_code,
|
||||
p.stamp AS updated_at,
|
||||
CASE WHEN si.show + si.buyable > 0 THEN 1 ELSE 0 END AS visible,
|
||||
CASE WHEN p.reorder >= 0 THEN 1 ELSE 0 END AS replenishable,
|
||||
CASE
|
||||
WHEN p.reorder < 0 THEN 0
|
||||
WHEN (
|
||||
((p.datein = '0000-00-00 00:00:00' OR p.datein <= DATE_SUB(NOW(), INTERVAL 5 YEAR))
|
||||
AND (p.date_refill = '0000-00-00 00:00:00' OR p.date_refill <= DATE_SUB(NOW(), INTERVAL 5 YEAR)))
|
||||
) THEN 0
|
||||
ELSE 1
|
||||
END AS replenishable,
|
||||
s.companyname AS vendor,
|
||||
CASE WHEN s.companyname = 'Notions'
|
||||
THEN sid.notions_itemnumber
|
||||
@@ -297,6 +313,13 @@ async function importProducts(prodConnection, localConnection, incrementalUpdate
|
||||
pc2.name AS line,
|
||||
pc3.name AS subline,
|
||||
pc4.name AS artist,
|
||||
NULL AS landing_cost_price,
|
||||
CONCAT('https://www.acherryontop.com/shop/product/', p.pid) AS permalink,
|
||||
NULL AS options,
|
||||
NULL AS tags,
|
||||
NULL AS uom,
|
||||
(SELECT COUNT(*) FROM mybasket mb WHERE mb.item = p.pid AND mb.qty > 0) AS baskets,
|
||||
(SELECT COUNT(*) FROM product_notify pn WHERE pn.pid = p.pid) AS notifies,
|
||||
COALESCE(CASE
|
||||
WHEN sid.supplier_id = 92 THEN sid.notions_qty_per_unit
|
||||
ELSE sid.supplier_qty_per_unit
|
||||
@@ -310,7 +333,8 @@ async function importProducts(prodConnection, localConnection, incrementalUpdate
|
||||
p.totalsold AS total_sold,
|
||||
p.country_of_origin,
|
||||
pls.date_sold as date_last_sold,
|
||||
GROUP_CONCAT(DISTINCT pci.cat_id) as category_ids
|
||||
GROUP_CONCAT(DISTINCT pci.cat_id) as category_ids,
|
||||
true // needs_update
|
||||
FROM products p
|
||||
LEFT JOIN shop_inventory si ON p.pid = si.pid AND si.store = 0
|
||||
LEFT JOIN supplier_item_data sid ON p.pid = sid.pid
|
||||
@@ -362,6 +386,13 @@ async function importProducts(prodConnection, localConnection, incrementalUpdate
|
||||
row.line,
|
||||
row.subline,
|
||||
row.artist,
|
||||
row.landing_cost_price,
|
||||
row.permalink,
|
||||
row.options,
|
||||
row.tags,
|
||||
row.uom,
|
||||
row.baskets,
|
||||
row.notifies,
|
||||
row.moq,
|
||||
row.rating,
|
||||
row.reviews,
|
||||
@@ -655,16 +686,25 @@ async function importMissingProducts(prodConnection, localConnection, missingPid
|
||||
COALESCE(pnb.inventory, 0) as notions_inv_count,
|
||||
COALESCE(pcp.price_each, 0) as price,
|
||||
COALESCE(p.sellingprice, 0) AS regular_price,
|
||||
COALESCE((SELECT ROUND(AVG(costeach), 5)
|
||||
FROM product_inventory
|
||||
WHERE pid = p.pid
|
||||
AND COUNT > 0), 0) AS cost_price,
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM product_inventory WHERE pid = p.pid AND count > 0)
|
||||
THEN (SELECT ROUND(AVG(costeach), 5) FROM product_inventory WHERE pid = p.pid AND count > 0)
|
||||
ELSE (SELECT costeach FROM product_inventory WHERE pid = p.pid ORDER BY daterec DESC LIMIT 1)
|
||||
END AS cost_price,
|
||||
NULL AS landing_cost_price,
|
||||
p.upc AS barcode,
|
||||
p.harmonized_tariff_code,
|
||||
p.stamp AS updated_at,
|
||||
CASE WHEN si.show + si.buyable > 0 THEN 1 ELSE 0 END AS visible,
|
||||
CASE WHEN p.reorder >= 0 THEN 1 ELSE 0 END AS replenishable,
|
||||
CASE
|
||||
WHEN p.reorder < 0 THEN 0
|
||||
WHEN (
|
||||
(IFNULL(pls.date_sold, '0000-00-00') = '0000-00-00' OR pls.date_sold <= DATE_SUB(CURDATE(), INTERVAL 5 YEAR))
|
||||
OR (p.datein = '0000-00-00 00:00:00' OR p.datein <= DATE_SUB(NOW(), INTERVAL 5 YEAR))
|
||||
OR (p.date_refill = '0000-00-00 00:00:00' OR p.date_refill <= DATE_SUB(NOW(), INTERVAL 5 YEAR))
|
||||
) THEN 0
|
||||
ELSE 1
|
||||
END AS replenishable,
|
||||
s.companyname AS vendor,
|
||||
CASE WHEN s.companyname = 'Notions' THEN sid.notions_itemnumber ELSE sid.supplier_itemnumber END AS vendor_reference,
|
||||
sid.notions_itemnumber AS notions_reference,
|
||||
|
||||
Reference in New Issue
Block a user