Updated Transaction SCanner to utilize a barcodes
table instead of linked lists.
This commit is contained in:
parent
71f1c4f85d
commit
e01b31ab9a
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,3 +5,4 @@ static/css/uikit-rtl.min.css
|
|||||||
static/css/uikit.css
|
static/css/uikit.css
|
||||||
static/css/uikit.min.css
|
static/css/uikit.min.css
|
||||||
instance/application.cfg.py
|
instance/application.cfg.py
|
||||||
|
test.py
|
||||||
Binary file not shown.
Binary file not shown.
6
application/administration/sql/CREATE/barcodes.sql
Normal file
6
application/administration/sql/CREATE/barcodes.sql
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS %%site_name%%_barcodes (
|
||||||
|
barcode VARCHAR(32) PRIMARY KEY,
|
||||||
|
item_uuid UUID,
|
||||||
|
in_exchange FLOAT,
|
||||||
|
out_exchange FLOAT
|
||||||
|
);
|
||||||
@ -1,5 +1,6 @@
|
|||||||
CREATE TABLE IF NOT EXISTS %%site_name%%_items(
|
CREATE TABLE IF NOT EXISTS %%site_name%%_items(
|
||||||
id SERIAL PRIMARY KEY,
|
id SERIAL PRIMARY KEY,
|
||||||
|
item_uuid UUID,
|
||||||
barcode VARCHAR(255) NOT NULL,
|
barcode VARCHAR(255) NOT NULL,
|
||||||
item_name VARCHAR(255) NOT NULL,
|
item_name VARCHAR(255) NOT NULL,
|
||||||
brand INTEGER,
|
brand INTEGER,
|
||||||
@ -12,7 +13,7 @@ CREATE TABLE IF NOT EXISTS %%site_name%%_items(
|
|||||||
row_type VARCHAR(255) NOT NULL,
|
row_type VARCHAR(255) NOT NULL,
|
||||||
item_type VARCHAR(255) NOT NULL,
|
item_type VARCHAR(255) NOT NULL,
|
||||||
search_string TEXT NOT NULL,
|
search_string TEXT NOT NULL,
|
||||||
UNIQUE(barcode, item_info_id),
|
UNIQUE(item_uuid, barcode, item_info_id),
|
||||||
CONSTRAINT fk_item_info
|
CONSTRAINT fk_item_info
|
||||||
FOREIGN KEY(item_info_id)
|
FOREIGN KEY(item_info_id)
|
||||||
REFERENCES %%site_name%%_item_info(id)
|
REFERENCES %%site_name%%_item_info(id)
|
||||||
|
|||||||
@ -17,6 +17,8 @@ CREATE TABLE IF NOT EXISTS logins(
|
|||||||
system_admin BOOLEAN DEFAULT FALSE,
|
system_admin BOOLEAN DEFAULT FALSE,
|
||||||
flags JSONB DEFAULT '{}',
|
flags JSONB DEFAULT '{}',
|
||||||
row_type VARCHAR(50),
|
row_type VARCHAR(50),
|
||||||
|
profile_pic_url VARCHAR(255),
|
||||||
|
login_type VARCHAR(32),
|
||||||
UNIQUE(username),
|
UNIQUE(username),
|
||||||
CHECK (email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')
|
CHECK (email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')
|
||||||
);
|
);
|
||||||
|
|||||||
1
application/administration/sql/DROP/barcodes.sql
Normal file
1
application/administration/sql/DROP/barcodes.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
DROP TABLE %%site_name%%_barcodes CASCADE;
|
||||||
@ -2,6 +2,21 @@ from dataclasses import dataclass, field
|
|||||||
import json, datetime
|
import json, datetime
|
||||||
from database import lst2pgarr
|
from database import lst2pgarr
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class BarcodesPayload:
|
||||||
|
barcode: str
|
||||||
|
item_uuid: str
|
||||||
|
in_exchange: float
|
||||||
|
out_exchange: float
|
||||||
|
|
||||||
|
def payload(self):
|
||||||
|
return (
|
||||||
|
self.barcode,
|
||||||
|
self.item_uuid,
|
||||||
|
self.in_exchange,
|
||||||
|
self.out_exchange
|
||||||
|
)
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class LogisticsInfoPayload:
|
class LogisticsInfoPayload:
|
||||||
barcode: str
|
barcode: str
|
||||||
|
|||||||
4
application/items/sql/selectItemByBarcode.sql
Normal file
4
application/items/sql/selectItemByBarcode.sql
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
SELECT barcodes.*, row_to_json(items.*) as item
|
||||||
|
FROM %%site_name%%_barcodes barcodes
|
||||||
|
LEFT JOIN %%site_name%%_items items ON barcodes.item_uuid = items.item_uuid
|
||||||
|
WHERE barcodes.barcode = %s;
|
||||||
Binary file not shown.
Binary file not shown.
@ -38,8 +38,7 @@ def getItemBarcode():
|
|||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
item_barcode = f"%{str(request.args.get('barcode', 1))}%"
|
item_barcode = f"%{str(request.args.get('barcode', 1))}%"
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
record = poe_database.selectItemAllByBarcode(site_name, (item_barcode,))
|
record = poe_database.selectItemByBarcode(site_name, (item_barcode,))
|
||||||
print(record)
|
|
||||||
if record == {} or record == ():
|
if record == {} or record == ():
|
||||||
return jsonify({"item":None, "error":True, "message":"Item either does not exist or there was a larger problem!"})
|
return jsonify({"item":None, "error":True, "message":"Item either does not exist or there was a larger problem!"})
|
||||||
else:
|
else:
|
||||||
@ -50,11 +49,13 @@ def getItemBarcode():
|
|||||||
@access_api.login_required
|
@access_api.login_required
|
||||||
def post_transaction():
|
def post_transaction():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
|
print(request.get_json())
|
||||||
result = poe_processes.postTransaction(
|
result = poe_processes.postTransaction(
|
||||||
site_name=session['selected_site'],
|
site_name=session['selected_site'],
|
||||||
user_id=session['user_id'],
|
user_id=session['user_id'],
|
||||||
data=dict(request.json)
|
data=dict(request.json)
|
||||||
)
|
)
|
||||||
|
print(result)
|
||||||
return jsonify(result)
|
return jsonify(result)
|
||||||
return jsonify({"error":True, "message":"There was an error with this POST statement"})
|
return jsonify({"error":True, "message":"There was an error with this POST statement"})
|
||||||
|
|
||||||
|
|||||||
@ -174,6 +174,37 @@ def selectItemAllByID(site, payload, convert=True, conn=None):
|
|||||||
except (Exception, psycopg2.DatabaseError) as error:
|
except (Exception, psycopg2.DatabaseError) as error:
|
||||||
raise postsqldb.DatabaseError(error, payload, getItemAllByID_sql)
|
raise postsqldb.DatabaseError(error, payload, getItemAllByID_sql)
|
||||||
|
|
||||||
|
def selectItemByBarcode(site, payload, convert=True, conn=None):
|
||||||
|
item = ()
|
||||||
|
self_conn = False
|
||||||
|
|
||||||
|
if convert:
|
||||||
|
item = {}
|
||||||
|
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with open(f"application/poe/sql/scanner/selectItemByBarcode.sql", "r+") as file:
|
||||||
|
selectItemByBarcode_sql = file.read().replace("%%site_name%%", site)
|
||||||
|
|
||||||
|
try:
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(selectItemByBarcode_sql, payload)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
item = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
if rows and not convert:
|
||||||
|
item = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.close()
|
||||||
|
return item
|
||||||
|
except (Exception, psycopg2.DatabaseError) as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, selectItemByBarcode_sql)
|
||||||
|
|
||||||
def selectItemAllByBarcode(site, payload, convert=True, conn=None):
|
def selectItemAllByBarcode(site, payload, convert=True, conn=None):
|
||||||
item = ()
|
item = ()
|
||||||
self_conn = False
|
self_conn = False
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
WITH passed_id AS (SELECT id AS passed_id FROM %%site_name%%_items WHERE barcode=%s),
|
WITH passed_id AS (SELECT items.id AS passed_id FROM %%site_name%%_barcodes barcodes
|
||||||
|
LEFT JOIN %%site_name%%_items items ON items.item_uuid = barcodes.item_uuid
|
||||||
|
WHERE barcodes.barcode=%s),
|
||||||
logistics_id AS (SELECT logistics_info_id FROM %%site_name%%_items WHERE id=(SELECT passed_id FROM passed_id)),
|
logistics_id AS (SELECT logistics_info_id FROM %%site_name%%_items WHERE id=(SELECT passed_id FROM passed_id)),
|
||||||
info_id AS (SELECT item_info_id FROM %%site_name%%_items WHERE id=(SELECT passed_id FROM passed_id)),
|
info_id AS (SELECT item_info_id FROM %%site_name%%_items WHERE id=(SELECT passed_id FROM passed_id)),
|
||||||
cte_item_info AS (
|
cte_item_info AS (
|
||||||
|
|||||||
39
application/poe/sql/scanner/selectItemByBarcode.sql
Normal file
39
application/poe/sql/scanner/selectItemByBarcode.sql
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
id
|
||||||
|
logistics_info_id
|
||||||
|
barcode
|
||||||
|
item_name
|
||||||
|
logistics_info.primary_location.id
|
||||||
|
logistics_info.auto_issue_location.id
|
||||||
|
item_info.uom_quantity
|
||||||
|
item_info.cost
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
WITH passed_id AS (SELECT items.id AS passed_id, barcodes.barcode AS passed_barcode FROM %%site_name%%_barcodes barcodes
|
||||||
|
LEFT JOIN %%site_name%%_items items ON items.item_uuid = barcodes.item_uuid
|
||||||
|
WHERE barcodes.barcode=%s),
|
||||||
|
cte_item_locations AS (
|
||||||
|
SELECT %%site_name%%_locations.uuid AS location_uuid, %%site_name%%_locations.id AS location_id FROM %%site_name%%_item_locations
|
||||||
|
LEFT JOIN %%site_name%%_locations ON %%site_name%%_locations.id = %%site_name%%_item_locations.location_id
|
||||||
|
WHERE part_id = (SELECT passed_id FROM passed_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
SELECT barcodes.*,
|
||||||
|
item.id as item_id,
|
||||||
|
item.logistics_info_id as logistics_info_id,
|
||||||
|
item.item_name as item_name,
|
||||||
|
primary_location.id as primary_location_id,
|
||||||
|
primary_location.uuid as primary_location_uuid,
|
||||||
|
auto_issue_location.id as auto_issue_location_id,
|
||||||
|
auto_issue_location.uuid as auto_issue_location_uuid,
|
||||||
|
item_info.cost as cost,
|
||||||
|
item_info.uom_quantity as uom_quantity,
|
||||||
|
(SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locations
|
||||||
|
FROM %%site_name%%_barcodes barcodes
|
||||||
|
LEFT JOIN %%site_name%%_items item ON barcodes.item_uuid = item.item_uuid
|
||||||
|
LEFT JOIN %%site_name%%_item_info as item_info ON item_info.id = item.item_info_id
|
||||||
|
LEFT JOIN %%site_name%%_logistics_info logistics_info ON logistics_info.id = item.logistics_info_id
|
||||||
|
LEFT JOIN %%site_name%%_locations primary_location ON logistics_info.primary_location = primary_location.id
|
||||||
|
LEFT JOIN %%site_name%%_locations auto_issue_location ON logistics_info.auto_issue_location = auto_issue_location.id
|
||||||
|
WHERE barcodes.barcode = (SELECT passed_barcode FROM passed_id);
|
||||||
@ -31,6 +31,7 @@ async function addToQueue(event) {
|
|||||||
if (event.key == "Enter"){
|
if (event.key == "Enter"){
|
||||||
let data = await getItemBarcode(document.getElementById('barcode-scan').value)
|
let data = await getItemBarcode(document.getElementById('barcode-scan').value)
|
||||||
let scannedItem = data.item
|
let scannedItem = data.item
|
||||||
|
console.log(scannedItem)
|
||||||
if(data.error){
|
if(data.error){
|
||||||
UIkit.notification({
|
UIkit.notification({
|
||||||
message: data.message,
|
message: data.message,
|
||||||
@ -68,14 +69,14 @@ async function submitScanTransaction(scannedItem) {
|
|||||||
let comparator = 0
|
let comparator = 0
|
||||||
|
|
||||||
if (trans_type === "Adjust In"){
|
if (trans_type === "Adjust In"){
|
||||||
comparator = scannedItem.logistics_info.primary_location.id
|
comparator = scannedItem.primary_location_id
|
||||||
} else if (trans_type === "Adjust Out"){
|
} else if (trans_type === "Adjust Out"){
|
||||||
comparator = scannedItem.logistics_info.auto_issue_location.id
|
comparator = scannedItem.auto_issue_location_id
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < scannedItem.item_locations.length; i++){
|
for (let i = 0; i < scannedItem.item_locations.length; i++){
|
||||||
if (scannedItem.item_locations[i].location_id === comparator){
|
if (scannedItem.item_locations[i].location_id === comparator){
|
||||||
scan_transaction_item_location_id = scannedItem.item_locations[i].id
|
scan_transaction_item_location_id = scannedItem.item_locations[i].location_id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const response = await fetch(`/poe/postTransaction`, {
|
const response = await fetch(`/poe/postTransaction`, {
|
||||||
@ -84,14 +85,14 @@ async function submitScanTransaction(scannedItem) {
|
|||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
item_id: scannedItem.id,
|
item_id: scannedItem.item_id,
|
||||||
logistics_info_id: scannedItem.logistics_info_id,
|
logistics_info_id: scannedItem.logistics_info_id,
|
||||||
barcode: scannedItem.barcode,
|
barcode: scannedItem.barcode,
|
||||||
item_name: scannedItem.item_name,
|
item_name: scannedItem.item_name,
|
||||||
transaction_type: document.getElementById('scan_trans_type').value,
|
transaction_type: document.getElementById('scan_trans_type').value,
|
||||||
quantity: scannedItem.item_info.uom_quantity,
|
quantity: scannedItem.uom_quantity,
|
||||||
description: "",
|
description: "",
|
||||||
cost: parseFloat(scannedItem.item_info.cost),
|
cost: parseFloat(scannedItem.cost),
|
||||||
vendor: 0,
|
vendor: 0,
|
||||||
expires: null,
|
expires: null,
|
||||||
location_id: scan_transaction_item_location_id
|
location_id: scan_transaction_item_location_id
|
||||||
@ -138,9 +139,9 @@ async function replenishScanTable() {
|
|||||||
typeCell.innerHTML = reversedScannedItems[i].type
|
typeCell.innerHTML = reversedScannedItems[i].type
|
||||||
let locationCell = document.createElement('td')
|
let locationCell = document.createElement('td')
|
||||||
if (reversedScannedItems[i].type === "Adjust In"){
|
if (reversedScannedItems[i].type === "Adjust In"){
|
||||||
locationCell.innerHTML = reversedScannedItems[i].item.logistics_info.primary_location.uuid
|
locationCell.innerHTML = reversedScannedItems[i].item.primary_location_uuid
|
||||||
} else {
|
} else {
|
||||||
locationCell.innerHTML = reversedScannedItems[i].item.logistics_info.auto_issue_location.uuid
|
locationCell.innerHTML = reversedScannedItems[i].item.auto_issue_location_uuid
|
||||||
}
|
}
|
||||||
|
|
||||||
tableRow.append(statusCell, barcodeCell, nameCell, typeCell, locationCell)
|
tableRow.append(statusCell, barcodeCell, nameCell, typeCell, locationCell)
|
||||||
|
|||||||
@ -5,6 +5,15 @@ from dataclasses import dataclass, field
|
|||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
import config
|
import config
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
|
||||||
|
def validateUUID(uuid_string, version):
|
||||||
|
try:
|
||||||
|
u = uuid.UUID(uuid_string, version=version)
|
||||||
|
return u.version == version
|
||||||
|
except ValueError:
|
||||||
|
return False
|
||||||
|
|
||||||
class DatabaseError(Exception):
|
class DatabaseError(Exception):
|
||||||
def __init__(self, message, payload=[], sql=""):
|
def __init__(self, message, payload=[], sql=""):
|
||||||
|
|||||||
Binary file not shown.
@ -263,7 +263,6 @@ def getFile(file_name):
|
|||||||
@access_api.login_required
|
@access_api.login_required
|
||||||
def getPreview(file_name):
|
def getPreview(file_name):
|
||||||
path_ = current_app.config['FILES_FOLDER'] + "/receipts/previews"
|
path_ = current_app.config['FILES_FOLDER'] + "/receipts/previews"
|
||||||
print(path_)
|
|
||||||
return send_from_directory(path_, file_name)
|
return send_from_directory(path_, file_name)
|
||||||
|
|
||||||
@receipt_api.route('/api/checkAPI', methods=["POST"])
|
@receipt_api.route('/api/checkAPI', methods=["POST"])
|
||||||
|
|||||||
@ -215,13 +215,9 @@ async function replenishFilesCards(files) {
|
|||||||
let card_div = document.createElement('div')
|
let card_div = document.createElement('div')
|
||||||
card_div.setAttribute('class', 'uk-card uk-card-default uk-card-small')
|
card_div.setAttribute('class', 'uk-card uk-card-default uk-card-small')
|
||||||
|
|
||||||
console.log(files[key])
|
|
||||||
|
|
||||||
let baseStaticUrl = `/receipts/api/getPreview/`;
|
let baseStaticUrl = `/receipts/api/getPreview/`;
|
||||||
let imgSrc = `${baseStaticUrl}${files[key].preview_image}`;
|
let imgSrc = `${baseStaticUrl}${files[key].preview_image}`;
|
||||||
|
|
||||||
console.log(imgSrc)
|
|
||||||
|
|
||||||
let media_div = document.createElement('div')
|
let media_div = document.createElement('div')
|
||||||
media_div.setAttribute('class', 'uk-card-media-top')
|
media_div.setAttribute('class', 'uk-card-media-top')
|
||||||
media_div.innerHTML = `<img data-src="${imgSrc}" width="600" height="400" alt="" uk-img />`;
|
media_div.innerHTML = `<img data-src="${imgSrc}" width="600" height="400" alt="" uk-img />`;
|
||||||
|
|||||||
@ -2,3 +2,21 @@
|
|||||||
2025-08-03 08:25:07.786121 --- ERROR --- DatabaseError(message=''int' object does not support indexing',
|
2025-08-03 08:25:07.786121 --- ERROR --- DatabaseError(message=''int' object does not support indexing',
|
||||||
payload=1,
|
payload=1,
|
||||||
sql='SELECT * FROM logins WHERE id=%s;')
|
sql='SELECT * FROM logins WHERE id=%s;')
|
||||||
|
2025-08-05 15:17:02.305813 --- ERROR --- DatabaseError(message='column "id" does not existLINE 1: WITH passed_id AS (SELECT id AS passed_id FROM test_barcodes... ^',
|
||||||
|
payload=('%01231003%',),
|
||||||
|
sql='WITH passed_id AS (SELECT id AS passed_id FROM test_barcodes WHERE barcode=%s), logistics_id AS (SELECT logistics_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT test_item_info.*, row_to_json(units.*) as uom FROM test_item_info LEFT JOIN units ON test_item_info.uom = units.id WHERE test_item_info.id = (SELECT item_info_id FROM info_id) ), cte_groups AS ( SELECT test_groups.*, test_group_items.uuid, test_group_items.item_type, test_group_items.qty FROM test_groups JOIN test_group_items ON test_groups.id = test_group_items.gr_id WHERE test_group_items.item_id = (SELECT passed_id FROM passed_id) ), cte_shopping_lists AS ( SELECT test_shopping_lists.*, test_shopping_list_items.uuid, test_shopping_list_items.item_type, test_shopping_list_items.qty FROM test_shopping_lists JOIN test_shopping_list_items ON test_shopping_lists.id = test_shopping_list_items.sl_id WHERE test_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM test_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM test_item_locations LEFT JOIN test_locations ON test_locations.id = test_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM test_logistics_info AS li LEFT JOIN test_locations AS pl ON li.primary_location = pl.id LEFT JOIN test_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN test_zones AS pz ON li.primary_zone = pz.id LEFT JOIN test_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, test_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(test_food_info.*) as food_info, row_to_json(test_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM test_items LEFT JOIN test_item_info ON test_items.item_info_id = test_item_info.id LEFT JOIN test_food_info ON test_items.food_info_id = test_food_info.id LEFT JOIN test_brands ON test_items.brand = test_brands.id LEFT JOIN units ON test_item_info.uom = units.id LEFT JOIN cte_groups ON test_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON test_items.id = cte_shopping_lists.idWHERE test_items.id=(SELECT passed_id FROM passed_id)GROUP BY test_items.id, test_item_info.id, test_food_info.id, test_brands.id;')
|
||||||
|
2025-08-05 15:19:02.753652 --- ERROR --- DatabaseError(message='tuple index out of range',
|
||||||
|
payload=('%01231003%',),
|
||||||
|
sql='WITH item_uuid AS (SELECT item_uuid AS item_uuid FROM test_barcodes WHERE barcode=%s), passed_id As (SELECT id AS passed_id FROM test_items WHERE item_uuid=%s), logistics_id AS (SELECT logistics_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT test_item_info.*, row_to_json(units.*) as uom FROM test_item_info LEFT JOIN units ON test_item_info.uom = units.id WHERE test_item_info.id = (SELECT item_info_id FROM info_id) ), cte_groups AS ( SELECT test_groups.*, test_group_items.uuid, test_group_items.item_type, test_group_items.qty FROM test_groups JOIN test_group_items ON test_groups.id = test_group_items.gr_id WHERE test_group_items.item_id = (SELECT passed_id FROM passed_id) ), cte_shopping_lists AS ( SELECT test_shopping_lists.*, test_shopping_list_items.uuid, test_shopping_list_items.item_type, test_shopping_list_items.qty FROM test_shopping_lists JOIN test_shopping_list_items ON test_shopping_lists.id = test_shopping_list_items.sl_id WHERE test_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM test_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM test_item_locations LEFT JOIN test_locations ON test_locations.id = test_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM test_logistics_info AS li LEFT JOIN test_locations AS pl ON li.primary_location = pl.id LEFT JOIN test_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN test_zones AS pz ON li.primary_zone = pz.id LEFT JOIN test_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, test_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(test_food_info.*) as food_info, row_to_json(test_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM test_items LEFT JOIN test_item_info ON test_items.item_info_id = test_item_info.id LEFT JOIN test_food_info ON test_items.food_info_id = test_food_info.id LEFT JOIN test_brands ON test_items.brand = test_brands.id LEFT JOIN units ON test_item_info.uom = units.id LEFT JOIN cte_groups ON test_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON test_items.id = cte_shopping_lists.idWHERE test_items.id=(SELECT passed_id FROM passed_id)GROUP BY test_items.id, test_item_info.id, test_food_info.id, test_brands.id;')
|
||||||
|
2025-08-05 15:21:40.124158 --- ERROR --- DatabaseError(message='column reference "barcode" is ambiguousLINE 1: ...t_items.item_uuid = test_barcodes.item_uuid WHERE barcode='%... ^',
|
||||||
|
payload=('%01231003%',),
|
||||||
|
sql='WITH passed_id AS (SELECT id AS passed_id FROM test_barcodes LEFT JOIN test_items ON test_items.item_uuid = test_barcodes.item_uuid WHERE barcode=%s), logistics_id AS (SELECT logistics_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT test_item_info.*, row_to_json(units.*) as uom FROM test_item_info LEFT JOIN units ON test_item_info.uom = units.id WHERE test_item_info.id = (SELECT item_info_id FROM info_id) ), cte_groups AS ( SELECT test_groups.*, test_group_items.uuid, test_group_items.item_type, test_group_items.qty FROM test_groups JOIN test_group_items ON test_groups.id = test_group_items.gr_id WHERE test_group_items.item_id = (SELECT passed_id FROM passed_id) ), cte_shopping_lists AS ( SELECT test_shopping_lists.*, test_shopping_list_items.uuid, test_shopping_list_items.item_type, test_shopping_list_items.qty FROM test_shopping_lists JOIN test_shopping_list_items ON test_shopping_lists.id = test_shopping_list_items.sl_id WHERE test_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM test_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM test_item_locations LEFT JOIN test_locations ON test_locations.id = test_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM test_logistics_info AS li LEFT JOIN test_locations AS pl ON li.primary_location = pl.id LEFT JOIN test_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN test_zones AS pz ON li.primary_zone = pz.id LEFT JOIN test_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, test_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(test_food_info.*) as food_info, row_to_json(test_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM test_items LEFT JOIN test_item_info ON test_items.item_info_id = test_item_info.id LEFT JOIN test_food_info ON test_items.food_info_id = test_food_info.id LEFT JOIN test_brands ON test_items.brand = test_brands.id LEFT JOIN units ON test_item_info.uom = units.id LEFT JOIN cte_groups ON test_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON test_items.id = cte_shopping_lists.idWHERE test_items.id=(SELECT passed_id FROM passed_id)GROUP BY test_items.id, test_item_info.id, test_food_info.id, test_brands.id;')
|
||||||
|
2025-08-05 15:21:59.561578 --- ERROR --- DatabaseError(message='column reference "barcode" is ambiguousLINE 1: ...t_items.item_uuid = test_barcodes.item_uuid WHERE barcode='%... ^',
|
||||||
|
payload=('%01231003%',),
|
||||||
|
sql='WITH passed_id AS (SELECT test_items.id AS passed_id FROM test_barcodes LEFT JOIN test_items ON test_items.item_uuid = test_barcodes.item_uuid WHERE barcode=%s), logistics_id AS (SELECT logistics_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT test_item_info.*, row_to_json(units.*) as uom FROM test_item_info LEFT JOIN units ON test_item_info.uom = units.id WHERE test_item_info.id = (SELECT item_info_id FROM info_id) ), cte_groups AS ( SELECT test_groups.*, test_group_items.uuid, test_group_items.item_type, test_group_items.qty FROM test_groups JOIN test_group_items ON test_groups.id = test_group_items.gr_id WHERE test_group_items.item_id = (SELECT passed_id FROM passed_id) ), cte_shopping_lists AS ( SELECT test_shopping_lists.*, test_shopping_list_items.uuid, test_shopping_list_items.item_type, test_shopping_list_items.qty FROM test_shopping_lists JOIN test_shopping_list_items ON test_shopping_lists.id = test_shopping_list_items.sl_id WHERE test_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM test_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM test_item_locations LEFT JOIN test_locations ON test_locations.id = test_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM test_logistics_info AS li LEFT JOIN test_locations AS pl ON li.primary_location = pl.id LEFT JOIN test_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN test_zones AS pz ON li.primary_zone = pz.id LEFT JOIN test_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, test_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(test_food_info.*) as food_info, row_to_json(test_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM test_items LEFT JOIN test_item_info ON test_items.item_info_id = test_item_info.id LEFT JOIN test_food_info ON test_items.food_info_id = test_food_info.id LEFT JOIN test_brands ON test_items.brand = test_brands.id LEFT JOIN units ON test_item_info.uom = units.id LEFT JOIN cte_groups ON test_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON test_items.id = cte_shopping_lists.idWHERE test_items.id=(SELECT passed_id FROM passed_id)GROUP BY test_items.id, test_item_info.id, test_food_info.id, test_brands.id;')
|
||||||
|
2025-08-05 15:24:44.958603 --- ERROR --- DatabaseError(message='column reference "barcode" is ambiguousLINE 3: WHERE barcode='%041789001314%'), ^',
|
||||||
|
payload=('%041789001314%',),
|
||||||
|
sql='WITH passed_id AS (SELECT test_items.id AS passed_id FROM test_barcodes LEFT JOIN test_items ON test_items.item_uuid = test_barcodes.item_uuid WHERE barcode=%s), logistics_id AS (SELECT logistics_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT test_item_info.*, row_to_json(units.*) as uom FROM test_item_info LEFT JOIN units ON test_item_info.uom = units.id WHERE test_item_info.id = (SELECT item_info_id FROM info_id) ), cte_groups AS ( SELECT test_groups.*, test_group_items.uuid, test_group_items.item_type, test_group_items.qty FROM test_groups JOIN test_group_items ON test_groups.id = test_group_items.gr_id WHERE test_group_items.item_id = (SELECT passed_id FROM passed_id) ), cte_shopping_lists AS ( SELECT test_shopping_lists.*, test_shopping_list_items.uuid, test_shopping_list_items.item_type, test_shopping_list_items.qty FROM test_shopping_lists JOIN test_shopping_list_items ON test_shopping_lists.id = test_shopping_list_items.sl_id WHERE test_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM test_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM test_item_locations LEFT JOIN test_locations ON test_locations.id = test_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM test_logistics_info AS li LEFT JOIN test_locations AS pl ON li.primary_location = pl.id LEFT JOIN test_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN test_zones AS pz ON li.primary_zone = pz.id LEFT JOIN test_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, test_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(test_food_info.*) as food_info, row_to_json(test_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM test_items LEFT JOIN test_item_info ON test_items.item_info_id = test_item_info.id LEFT JOIN test_food_info ON test_items.food_info_id = test_food_info.id LEFT JOIN test_brands ON test_items.brand = test_brands.id LEFT JOIN units ON test_item_info.uom = units.id LEFT JOIN cte_groups ON test_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON test_items.id = cte_shopping_lists.idWHERE test_items.id=(SELECT passed_id FROM passed_id)GROUP BY test_items.id, test_item_info.id, test_food_info.id, test_brands.id;')
|
||||||
|
2025-08-05 15:25:24.830194 --- ERROR --- DatabaseError(message='invalid reference to FROM-clause entry for table "test_items"LINE 1: WITH passed_id AS (SELECT test_items.id AS passed_id FROM te... ^HINT: Perhaps you meant to reference the table alias "items".',
|
||||||
|
payload=('%041789001314%',),
|
||||||
|
sql='WITH passed_id AS (SELECT test_items.id AS passed_id FROM test_barcodes barcodes LEFT JOIN test_items items ON items.item_uuid = barcodes.item_uuid WHERE barcodes.barcode=%s), logistics_id AS (SELECT logistics_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM test_items WHERE id=(SELECT passed_id FROM passed_id)), cte_item_info AS ( SELECT test_item_info.*, row_to_json(units.*) as uom FROM test_item_info LEFT JOIN units ON test_item_info.uom = units.id WHERE test_item_info.id = (SELECT item_info_id FROM info_id) ), cte_groups AS ( SELECT test_groups.*, test_group_items.uuid, test_group_items.item_type, test_group_items.qty FROM test_groups JOIN test_group_items ON test_groups.id = test_group_items.gr_id WHERE test_group_items.item_id = (SELECT passed_id FROM passed_id) ), cte_shopping_lists AS ( SELECT test_shopping_lists.*, test_shopping_list_items.uuid, test_shopping_list_items.item_type, test_shopping_list_items.qty FROM test_shopping_lists JOIN test_shopping_list_items ON test_shopping_lists.id = test_shopping_list_items.sl_id WHERE test_shopping_list_items.item_id = (SELECT passed_id FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM test_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM test_item_locations LEFT JOIN test_locations ON test_locations.id = test_item_locations.location_id WHERE part_id = (SELECT passed_id FROM passed_id) ), cte_logistics_info AS ( SELECT li.*, row_to_json(pl) AS primary_location, row_to_json(ail) AS auto_issue_location, row_to_json(pz) AS primary_zone, row_to_json(aiz) AS auto_issue_zone FROM test_logistics_info AS li LEFT JOIN test_locations AS pl ON li.primary_location = pl.id LEFT JOIN test_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN test_zones AS pz ON li.primary_zone = pz.id LEFT JOIN test_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) )SELECT (SELECT passed_id FROM passed_id) AS passed_id, test_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(test_food_info.*) as food_info, row_to_json(test_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(g)), '{}') FROM cte_groups g) AS item_groups, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(il)), '{}') FROM cte_itemlinks il) AS linked_items, (SELECT COALESCE(array_agg(row_to_json(ils)), '{}') FROM cte_item_locations ils) AS item_locationsFROM test_items LEFT JOIN test_item_info ON test_items.item_info_id = test_item_info.id LEFT JOIN test_food_info ON test_items.food_info_id = test_food_info.id LEFT JOIN test_brands ON test_items.brand = test_brands.id LEFT JOIN units ON test_item_info.uom = units.id LEFT JOIN cte_groups ON test_items.id = cte_groups.id LEFT JOIN cte_shopping_lists ON test_items.id = cte_shopping_lists.idWHERE test_items.id=(SELECT passed_id FROM passed_id)GROUP BY test_items.id, test_item_info.id, test_food_info.id, test_brands.id;')
|
||||||
Loading…
x
Reference in New Issue
Block a user