Files
jtlPosSync/jtlsrv-cpp/src/queries/warehouse.hpp
2026-07-15 01:25:38 +02:00

38 lines
1.4 KiB
C++

#pragma once
#include "../db/pool.hpp"
#include "../config.hpp"
namespace delivery {
inline int resolve_outgoing_warehouse(OdbcPool::Connection* c) {
int configured = config::get_int("JTL_KWARENLAGER", 0);
if (configured > 0) return configured;
ResultSet rs;
if (!get_pool().execute(c,
"SELECT TOP 1 kWarenLager FROM dbo.tWarenLager "
"WHERE nFulfillment = 0 AND ISNULL(nAktiv, 1) = 1 "
"ORDER BY nAuslieferungsPrio, kWarenLager", rs) || rs.empty() || rs[0].empty()) {
throw std::runtime_error("No local warehouse (dbo.tWarenLager.nFulfillment = 0) found; set JTL_KWARENLAGER explicitly.");
}
return std::stoi(rs[0][0].str);
}
inline int resolve_warehouse_place(OdbcPool::Connection* c, int kWarenLager) {
int configured = config::get_int("JTL_KWARENLAGERPLATZ", 0);
if (configured > 0) return configured;
std::vector<Param> ps = {{ParamType::Int, "", kWarenLager}};
ResultSet rs;
if (!get_pool().execute(c,
"SELECT TOP 1 kWarenLagerPlatz FROM dbo.tWarenLagerPlatz "
"WHERE kWarenLager = ? AND ISNULL(nGesperrt, 0) = 0 "
"ORDER BY nPrio, kWarenLagerPlatz", ps, rs) || rs.empty() || rs[0].empty()) {
throw std::runtime_error("No warehouse place found for kWarenLager="
+ std::to_string(kWarenLager) + "; set JTL_KWARENLAGERPLATZ explicitly.");
}
return std::stoi(rs[0][0].str);
}
} // namespace delivery