Да, не получится при многострочной вставке проверить, так как нельзя выбрать группы записей у несуществующего и сослаться не на что. Без временной таблицы не обойтись. Только в цикле:
var data = [
[code, quantity, ....],
[code, quantity, ....],
....
];
data.forEach((d)=> {
query('INSERT INTO sales (code, quantity, ...) SELECT ' + d.join(',') + ' WHERE (SELECT stock FROM pi WHERE code=' + d.code + ') >=' + d.quantity)
})