38 lines
1.4 KiB
C++
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
|