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.min.css
|
||||
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(
|
||||
id SERIAL PRIMARY KEY,
|
||||
item_uuid UUID,
|
||||
barcode VARCHAR(255) NOT NULL,
|
||||
item_name VARCHAR(255) NOT NULL,
|
||||
brand INTEGER,
|
||||
@ -12,7 +13,7 @@ CREATE TABLE IF NOT EXISTS %%site_name%%_items(
|
||||
row_type VARCHAR(255) NOT NULL,
|
||||
item_type VARCHAR(255) NOT NULL,
|
||||
search_string TEXT NOT NULL,
|
||||
UNIQUE(barcode, item_info_id),
|
||||
UNIQUE(item_uuid, barcode, item_info_id),
|
||||
CONSTRAINT fk_item_info
|
||||
FOREIGN KEY(item_info_id)
|
||||
REFERENCES %%site_name%%_item_info(id)
|
||||
|
||||
@ -17,6 +17,8 @@ CREATE TABLE IF NOT EXISTS logins(
|
||||
system_admin BOOLEAN DEFAULT FALSE,
|
||||
flags JSONB DEFAULT '{}',
|
||||
row_type VARCHAR(50),
|
||||
profile_pic_url VARCHAR(255),
|
||||
login_type VARCHAR(32),
|
||||
UNIQUE(username),
|
||||
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
|
||||
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
|
||||
class LogisticsInfoPayload:
|
||||
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":
|
||||
item_barcode = f"%{str(request.args.get('barcode', 1))}%"
|
||||
site_name = session['selected_site']
|
||||
record = poe_database.selectItemAllByBarcode(site_name, (item_barcode,))
|
||||
print(record)
|
||||
record = poe_database.selectItemByBarcode(site_name, (item_barcode,))
|
||||
if record == {} or record == ():
|
||||
return jsonify({"item":None, "error":True, "message":"Item either does not exist or there was a larger problem!"})
|
||||
else:
|
||||
@ -50,11 +49,13 @@ def getItemBarcode():
|
||||
@access_api.login_required
|
||||
def post_transaction():
|
||||
if request.method == "POST":
|
||||
print(request.get_json())
|
||||
result = poe_processes.postTransaction(
|
||||
site_name=session['selected_site'],
|
||||
user_id=session['user_id'],
|
||||
data=dict(request.json)
|
||||
)
|
||||
print(result)
|
||||
return jsonify(result)
|
||||
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:
|
||||
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):
|
||||
item = ()
|
||||
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)),
|
||||
info_id AS (SELECT item_info_id FROM %%site_name%%_items WHERE id=(SELECT passed_id FROM passed_id)),
|
||||
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"){
|
||||
let data = await getItemBarcode(document.getElementById('barcode-scan').value)
|
||||
let scannedItem = data.item
|
||||
console.log(scannedItem)
|
||||
if(data.error){
|
||||
UIkit.notification({
|
||||
message: data.message,
|
||||
@ -68,14 +69,14 @@ async function submitScanTransaction(scannedItem) {
|
||||
let comparator = 0
|
||||
|
||||
if (trans_type === "Adjust In"){
|
||||
comparator = scannedItem.logistics_info.primary_location.id
|
||||
comparator = scannedItem.primary_location_id
|
||||
} 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++){
|
||||
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`, {
|
||||
@ -84,14 +85,14 @@ async function submitScanTransaction(scannedItem) {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
item_id: scannedItem.id,
|
||||
item_id: scannedItem.item_id,
|
||||
logistics_info_id: scannedItem.logistics_info_id,
|
||||
barcode: scannedItem.barcode,
|
||||
item_name: scannedItem.item_name,
|
||||
transaction_type: document.getElementById('scan_trans_type').value,
|
||||
quantity: scannedItem.item_info.uom_quantity,
|
||||
quantity: scannedItem.uom_quantity,
|
||||
description: "",
|
||||
cost: parseFloat(scannedItem.item_info.cost),
|
||||
cost: parseFloat(scannedItem.cost),
|
||||
vendor: 0,
|
||||
expires: null,
|
||||
location_id: scan_transaction_item_location_id
|
||||
@ -138,9 +139,9 @@ async function replenishScanTable() {
|
||||
typeCell.innerHTML = reversedScannedItems[i].type
|
||||
let locationCell = document.createElement('td')
|
||||
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 {
|
||||
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)
|
||||
|
||||
@ -5,6 +5,15 @@ from dataclasses import dataclass, field
|
||||
import random
|
||||
import string
|
||||
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):
|
||||
def __init__(self, message, payload=[], sql=""):
|
||||
|
||||
Binary file not shown.
@ -263,7 +263,6 @@ def getFile(file_name):
|
||||
@access_api.login_required
|
||||
def getPreview(file_name):
|
||||
path_ = current_app.config['FILES_FOLDER'] + "/receipts/previews"
|
||||
print(path_)
|
||||
return send_from_directory(path_, file_name)
|
||||
|
||||
@receipt_api.route('/api/checkAPI', methods=["POST"])
|
||||
|
||||
@ -215,13 +215,9 @@ async function replenishFilesCards(files) {
|
||||
let card_div = document.createElement('div')
|
||||
card_div.setAttribute('class', 'uk-card uk-card-default uk-card-small')
|
||||
|
||||
console.log(files[key])
|
||||
|
||||
let baseStaticUrl = `/receipts/api/getPreview/`;
|
||||
let imgSrc = `${baseStaticUrl}${files[key].preview_image}`;
|
||||
|
||||
console.log(imgSrc)
|
||||
|
||||
let media_div = document.createElement('div')
|
||||
media_div.setAttribute('class', 'uk-card-media-top')
|
||||
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',
|
||||
payload=1,
|
||||
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