From 0fc1b6dc1d45338dd7f818a0c8db16ff75b4977d Mon Sep 17 00:00:00 2001 From: Jadowyne Ulve Date: Thu, 21 Aug 2025 17:37:01 -0500 Subject: [PATCH] created inactivve state into items also made it so lists calculated only shows safety stocked items --- __pycache__/webserver.cpython-313.pyc | Bin 8040 -> 8408 bytes .../administration/sql/CREATE/item.sql | 1 + .../database_items.cpython-313.pyc | Bin 62244 -> 62278 bytes .../__pycache__/items_API.cpython-313.pyc | Bin 35142 -> 35889 bytes application/items/database_items.py | 1 + application/items/items_API.py | 11 ++++ application/items/sql/getItemAllByID.sql | 6 ++ application/items/sql/getItemsAll.sql | 3 +- application/items/sql/getItemsWithQOH.sql | 1 + application/items/sql/itemsModal.sql | 1 + application/items/static/itemEditHandler.js | 30 ++++++++++ application/items/templates/item_new.html | 12 +++- application/receipts/sql/getItemsWithQOH.sql | 1 + .../__pycache__/shoplist_api.cpython-313.pyc | Bin 18408 -> 19531 bytes .../shoplist_database.cpython-313.pyc | Bin 23331 -> 25051 bytes application/shoppinglists/shoplist_api.py | 17 ++++++ .../shoppinglists/shoplist_database.py | 34 +++++++++++ .../sql/getCalculatedItemsForModal.sql | 13 +++++ .../shoppinglists/sql/getItemsForModal.sql | 3 +- .../static/js/shoppingListGeneratorHandler.js | 20 ++++++- celerybeat-schedule-shm | Bin 32768 -> 32768 bytes celerybeat-schedule-wal | Bin 313152 -> 379072 bytes logs/database.log | 53 +++++++++++++++++- logs/process.log | 53 ++++++++++++++++++ 24 files changed, 254 insertions(+), 6 deletions(-) create mode 100644 application/shoppinglists/sql/getCalculatedItemsForModal.sql diff --git a/__pycache__/webserver.cpython-313.pyc b/__pycache__/webserver.cpython-313.pyc index e1740f5bb476023e941a94e2cd973e412e949fcf..ad78957f24e333161a3966d126c576da8f4dcaac 100644 GIT binary patch delta 1585 zcmZ8h-D@LN6raiWXPcx+n(wAfyWLc2w%RVPti}C6aYm}!fg)I)og|ZV+9VUto$R(1 z?1GO9QZB->=#$_Ff*^hKO?>cWAG(OF4uUT}xadQd{sW#f{lp9T@jK`I=G=4cxi^0= z{&p>T7>$MmT%UdY#oDjC(X4oTce*km`N3Zn6hU#x0VxPUDFh+McFSQY0+F(?+t2TK zo9+b0E4ss3;$$6;&1&4>_qEv#C z!z1#TREDy{qw=^k0TT`%k}J|AOcI|}hUF>g0$gwcF?m|L2p5sZa{^RXs}sTkHHHgj zR%e!1_>Z2Ecp`V^eHOiMlb5%}w0HK@`V_6&sr3_DmrksFenC9SsT9s-nmdU{izo5b z^m3DOPnFJer}aF)IVbH%OT&E91(9Qn}(T3vEx^Q=NQ5TUGsBbG?+b zN0{Dgsx2_PYSRF{VVSV^x$9?tEQ2CDVDt=2)%txHVQ@80>>NFHHZ3^S|Fc2zgLLNbbgjPQ+6jf0nTo(+AA!94#e{=>|xk769>%5-2 zA>Q2kGWDUW^*U;*L7@D0psic#Ix~APk0vY;yg~3L!7YMif&fC*YX?cHHZ@CwRdT;W z@GgSw0rM_n)X;Is{F6*cguU-F*Tg*S2sa6wPJ(PuXALmwI#@iE%g<0~J5ppm2+CKBdw0cHdKu< z-C{uhWq2*M!gM7<^lZQ%kf|Wp{=0g;KVWMR<=+;{;t+pW7!!y2zlCuz#)pd8EM0Ir zj*qEhH1K3-IP_W|!Cx+>#1Xzy94jPAlRU3Eekcr5e79KIp$B3IsJM0;Pj!?`k2$c` zfF3N|AaIU9jA+0Yp?@uHL13#i6hOhO>A2sSA+)G^!mnn8bWfPV$eqmy}# zB5oM;oC#h!cl82SyJmCH(HG%9YUudc3y249Q563a>W_u`BcaY$N)JU3gZMnH9V}N*>%=Cu#|oMu2$^9BE8A;D%qT<^`>Ytm4!VVXzcp(n zA*q}JD`lo3tvG09Obs-}A#2XeLRN9u%9-;puQ+1m%>on@N38|32t~y)t7Mj;tT=Az zW(6vW6V{?xg{tBi>y)_!OQtert<&Z*EK5%237n~)StJ+nQF4J%H#T3N@=3K*`Qx0k zGUp9(jT-(Z6umF0rsy+jTz?Yj3CzG|ywr*FR_3EVUYx|7F2Y8wh5W;h5{Ilol;A~dflaSMQhK=T60CVEYNR@`g zQRLKqLWUrY@o;me=k#TQ14(5&L)PQUmY0!9eBe6$VZ*)IU`@_o1~+Cf5Czs^&H&GL zAdQ|R@3@13({DGr4xjpGF!MruwK{zam-q7rSQmIu7)niw5rBlaz3_Ae3x~I*a7@tuDc{#|dkk(%PgmSq_>f)@ zz2cHKiQVir`K?Bib2j7<#;pqw4MLd4g9-5m{Cc$^u_F%+25EFkDbs87hQkf>i zGo{KE?EEAx+t+nk&7tG=YjOab0poy8o+M93)C^7MY38JV;4(;wPvn_takrGG8S!JO zw1o3931O}6wrtlNnm%_l>;O(Mtf5>I<#Kj^3qyX8G1(?`@1k(@Cc180&M~mvkppZ; zeFmJvh!;kE_)ix?&-dJ&QI}l?Aye?fc~0tYUP|c^+4zoZ9FfNl$;uHaenW~skeNgB R!XXh~l|L6B=xaV~=ihSsGfw~j diff --git a/application/administration/sql/CREATE/item.sql b/application/administration/sql/CREATE/item.sql index f659fb5..0d134d1 100644 --- a/application/administration/sql/CREATE/item.sql +++ b/application/administration/sql/CREATE/item.sql @@ -16,6 +16,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, + inactive BOOLEAN DEFAULT false NOT NULL, UNIQUE(item_uuid), CONSTRAINT fk_item_info FOREIGN KEY(item_info_id) diff --git a/application/items/__pycache__/database_items.cpython-313.pyc b/application/items/__pycache__/database_items.cpython-313.pyc index b3942ad6cc0a682623009cac7651315482015e91..ff16a8e24cc82ddce97e60b2167cec297eb2c72e 100644 GIT binary patch delta 445 zcmZ4TjQQ9zX5P=dyj%=GpfP!QhRa6Y?K>F*CLi4yC>G5O5(R-!Hd96jOMzkX1#LNQ zVFnKk28KNLh;-J;g0FrQLj^-|ru_iR23mx7rY&uwnJ>cYsl zd-Jhtkt~d#H!Iw(WnmQBJnud;E2Hk_MNisU7`-=Zy*$ann6>%K+h;72k&KKkj5C-& TFn}2gLcTy4A1Wq){$vOMyZe!_ delta 349 zcmX^1jCsj3X5P=dyj%=Ga71)|hVe$;?K>H*CLi4yI9X(p++?p^{F6V~NKY==Wz5Jj zInY*a^08g~jGU9N?NXdPxk-Am&~9b0e8BEVF#iag&pnxUj~`g9Y!6Hg_vHOhF^#Bi=-zvoadfAd7s(js!Rc9o@lPg36teE z|Jrw)i^j=2N1qUQ(OypUr1s+_TyLQZO^)+0Bcux-c^C+Wg{LBn#uG z%}%##Sr`R3AGpuV%BZvX$dh&!Mz762FHf>CW^NXH_l!j{f|1dMaR&1T1~6km$QKCX KL)m1}&xQbL^M?ii diff --git a/application/items/__pycache__/items_API.cpython-313.pyc b/application/items/__pycache__/items_API.cpython-313.pyc index 9bbb17df2596df9cc995af7de88b78975210a523..bf6c8b4546036291b384bb48142d5bfc03e36452 100644 GIT binary patch delta 1611 zcmaJ>e@xV680Y`_xV2G&-*-| z_kEw|dEYZb%Hab_%I)N2J&vAJ_lp)7hOBirlESR}leC5qQK#5#;p{A_ts>| zEh|=w8lX_UZDM}pxnh$q|y`g=5{2%6?$w|2N@1w zu_wo5WTZ0>E8VlP%acaZyFHcq2jpO7y(sCW%e$UJMI6M%-p3yJ&nJHyc6dw4|6}iL zu@5hJmuh1al`oTgZr;N4RSPIFJF7~}13a6FVHD3*6=v*XlN-&hfl;p`Obnv6x={Os z%pzG)eMwO8d_U`l{RQGE?)B$upVHtOdEAd8<0yw1CEz-bC`JQ8|B&B;JvElh$vR6K zvYQ~DeOEIK;AjntU92h9j}x(ux46Y9%te2?EMI>^h-0{2Rrjf#UjDy^nVwa~tAS^8w;~oep0^2=GPEOf1{DN1q@L81~56#%i8q zX>+~)9TCGE?Kh&2H2YK$MH3WTjF!60L01@lV7Q7th-QqE8GCeP05-G)LlIA)V^d2Y zNL9ECxzsY*5w~`eJU*07ky_R0SEHnMWwJ{jmKS~`ug)y2bj`9aglnw-6F~+1%;ql) z*9q+Uv{El2LCadkl)eL%qXd6w6;}3+-ZtFC*Y<1^5mDzBho+Kk%UiK7+ug2>7(XaRzQ(;NAjm z9pFAN>I+;`;1U3*1$gbCW7f7DvxOE!zqrT}lU%v2OnrRrn04%t-r46x$+yBhA+p9r V)-A;(YQ$|dPRV9?QbPYX>c8TAy~F?j delta 1402 zcmaJ>ZA@Eb6z1Ocw$f72Io7iA9Y<*eX0|CPI$?yn#RaW&qD9tux0VW70Z-{1P0&mV zE>weX%r-R}bBQDx=fd6?GBebsPo8P)1bJ6zvLV-9cDE3pIunHTOs^ z4A!hCe7(l4>?8UtuBls%)2bP-)^v!eI-6{Yvswb@>T9Kb%vV=Q19+cWVI9fxh-r1!pu9@lqIm0}IXV3RM{_3lrvG+4)R3jTMvGs>ctfFF zrt6h(1gGaRLKWL@{7V4)RoKt#e!THWJ*83SahvpjL5z6HEQiQt!+7O^%YnL_#CH>Ab##!r;L;7KG8fUQ9koeR?~-aTFNAWYKznIKKUMyXm8E5 zH>Wt<5|ZqKU)8(AWqVuJOAB$#^}8K<(r}D;ml=#4xQSr^{eG5A_^XujwJz9iahbiUM|tsuUdAqxW=X8p2KI`t1Z*?-X5-9pFS5e?M8z% zf?tM@S$JN7Aue9(c${Uw@7keUAOgjfXTk<4fhW7Gvh{KKier-uUo*_1DLQN)BQu$` zQG=bGfnda=_3Y}@0#xPqqWLr-Uql;}pD5ypDA>KtkgLmZzg+Ut1pe1Mn8$-Xh0X;Q z{)XUT_?FF!4BrvBEGa!)>?ybX$UcpI1{lJeSgCS}7AJ)o`%Jd#U(!1=kB;8|6HZSN z-rif9BAg)MRd~ENOSw$q=f#=cZH8M@Q-cM(Ywyr)SID1K_;^K79iN3?q7+&j(KE)Rg@cjXNSpZ)Oz=s+5ECQb~;IjdI z2!O{Hcm#n526!ldJFNE+xOc!c2QCM2+F-=lc%C(ja-m;Z 0){ + document.getElementById('inactiveButton').classList.add('uk-disabled') + } + + } function addTag(event){ @@ -1304,6 +1314,26 @@ async function saveUpdated() { await setBasicInfo() }; +async function inactivateItem() { + if (!updated.hasOwnProperty('item')){ + updated['item'] = {} + } + + updated['item']['inactive'] = !item.inactive + + const response = await fetch(`/items/api/inactivateItem`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + item_id: parseInt(item_id), + data: updated + }), + }); + location.href = "/items" +} + async function refreshSearchString() { const response = await fetch(`/items/refreshSearchString`, { method: 'POST', diff --git a/application/items/templates/item_new.html b/application/items/templates/item_new.html index baf9d1e..cb90d2d 100644 --- a/application/items/templates/item_new.html +++ b/application/items/templates/item_new.html @@ -216,7 +216,8 @@
  • Logistics Info
  • Associated Barcodes
  • -
  • Search String
  • +
  • Search String
  • +
  • Danger Zone
  • @@ -477,6 +478,15 @@
    + +
    +
    +

    This place holds the secret dangerous buttons, for this purpose you will only be allowed here by the system admin. If there are any refrences to this item you will not be able to + inactivate this item. +

    + +
    +
    diff --git a/application/receipts/sql/getItemsWithQOH.sql b/application/receipts/sql/getItemsWithQOH.sql index fb1b171..2a77bc1 100644 --- a/application/receipts/sql/getItemsWithQOH.sql +++ b/application/receipts/sql/getItemsWithQOH.sql @@ -13,6 +13,7 @@ FROM %%site_name%%_items LEFT JOIN sum_cte ON %%site_name%%_items.id = sum_cte.id LEFT JOIN %%site_name%%_item_info ON %%site_name%%_items.item_info_id = %%site_name%%_item_info.id WHERE %%site_name%%_items.search_string LIKE '%%' || %s || '%%' + AND %%site_name%%_items.inactive IS false ORDER BY %%sort_order%% LIMIT %s OFFSET %s; diff --git a/application/shoppinglists/__pycache__/shoplist_api.cpython-313.pyc b/application/shoppinglists/__pycache__/shoplist_api.cpython-313.pyc index 4851f7694731ad1a5d8e6cd2c2df315d83255893..851b514f8f47e0d9b165fad645a6227076335ed7 100644 GIT binary patch delta 809 zcmZXRT}YEr7{`6i+|;E;A3EL4$!1KQZkb;zm$BwYl0`)lNEBmxvC(XH_Nw$@N`w)C zIv!+}eGr8v*~K^z(oIDdMG09EiWf_k?UK7~fc?WvP>?r3%%bi{41G>{`!H0J?Fpb)QW9gu^gumwMAebG+_sKQ||=T{q3 zYGfvjwJ*1IveFu{Q}-)>lfmih4mvv()$0rSdqO@{35e$<^$ezQ(Bi~$yBX&#=~{lA z^6|69pKJWb+o~#Ek>)VRLEC0Zd1S9QFB$%K><3}DontG^`oBpzVgIwtm&#OcNe87dI%`HY`Ux-LtX#1oOQzh!U* zUpV?<2tCdU{WX&3Xht65T%}pWoWFr~o_b6<+1=rYdN^5dTky2Phsm`pURIhJjN;d- zty(1Er`S;a8X$@lE+hV^DS|PXyHOudLW-)i1tThtk&S_9tX%-Ojs>m`VxOy6cZ>A( zAnv+iOm~N3K7kGOi`pp)O~T}!VD5WTy+LT^AsOB$9N}HW(sZ6Gm0F23iAjk%iA;%` zxZ1EoJ58ZWY}=j3K*d&%W37Sx9wSWRxTjq^Lyi_)^$b7>@;zUU$$yz_ezL2{rg7P# zM}7SCm=T;9RuG1Do0my8PtOX=>eaG)ooH1Nl?1e%eMnDH({+4kA?*_L_8 in}^0lShoPicVPU^GT{(QXi}I-q6t<~Nf7-_r`R9fX6K;* delta 610 zcmXYuT}V_x6vy|>I(N6N-ICDOY~6H~tL^#$+tqDZ`w~}t>!o@sightVS()2+gw?}> z7-^l%wWu(n@JW_=lzO!c>M0Bn`tYH8Fp?gk0_mKa1NYBw{%7Xg`OmyAz}Ha-{Pg>M zE*e(L(^DT4w*o;36wQ}zDAhmQmjTLf3_>_8n{X7W@SQwa(kmL`I&b``&|B-y3GwX} zj+nI=ig-6HdQ>*kH<-0?S0sbK%#80MHC8Nn?2C=--}Rq`VY7DzKSj42=NT^`#JWP4 z2yHLP&h?>oaPf*Gc%pt%uf>W2XQDB%@o!BH&X}@X9p~~P7K>%QU$HsuY4AEl+#IgL zrO398YKRxGOzVo4x5Bv2^KQ&pW$2D);2QSE8)cr%Sv?t#2r`~qQ8`S;8@*zM1&p9S zQ73Pb@kO^K<^gWtRV$3u$x0Z*_M~atrqZfQpH40S+@Z!%97r`2JxJ9W1*)yN^jvB} z825z-ki_(Yej+3NSKjR}@Ias-6im{Dl6Uzh!JNC#Ygr+{y5fpS6 zxz48Q|GCMf)Fr&GmBrcSVVc4hormQ!!d48Xhrq-_dikjHIL-w-cf;8g=T)3haT>+P sR(wds|5V&z+NIi=`FR$-sexS2+5YTaRir7;8}0cg9Vk^lez diff --git a/application/shoppinglists/__pycache__/shoplist_database.cpython-313.pyc b/application/shoppinglists/__pycache__/shoplist_database.cpython-313.pyc index 62740f5dabddd5ffddc2f87c33dcccc2e82bd283..16eb51c4632763589b89d23b43004ec5e39e7bb4 100644 GIT binary patch delta 1036 zcmY+>O-vI(6ae6zc9+uak3en9pRkCAA7jO|7?q!hWt)QSqTNJl=4 zHJNw@o=3CuXYY9Lnk&)kyG=WDR#{ukoI?sLTV~iiCl^Avp~;GW)Ysq% zeG=8E3JeG-%;#bbvT((9QeWE)kxCcT~usNBD zPoy2KErKU7;1{y?C@lz^(ILjORYBxL7lBbuB{q-b+f1Jb|5ksKAeHYYmBbUGpm z#X+wa5dSpN_*=s+uh1j)ZjGFbjbxHjaiLEZ60z}g{BMuWccf#9cxF19&ZI`p3*ACn zhoXbyDa|DK@zs`EZ}op?>?7y#q!fQ@G&ZgrhheRVVbWO$d1j^DlJ8$Jn)2dGnKj?{ zPH!rf`Cew;=!3=ZX}loU!kw;_RAIAmAO7r0bhR&zE}krQ1d8%tF%Vv3m?3n8g;!M% ziM{MG^765McAaDr$=vJ-c7tI|0TwS9cjMdb23T`hAH=imu0aX5gBwJn_HmCvbTLm$ z+r>uh)2=;YUCB~&j|P%wtqss973XMoq$_wF2v2Jx`>m@NziWr&0bgrIVY zFp8ge4{~wfochyy7O^8hSlXsu=|7`I!}z2B7MFzD6ZL|0n?+;yTVwT!q+k zTf-j*&usQw`1y?(De^5;gTwxdvCda!0 z!xB|GKvg4Ps8R$)q()JrQdX2z%7(H@*->^W4W&srP!1_4%30BqBZiK>iZ8e@amhV5 z$}QzdAU%>^lvm1!@=5toeyKnk;=!jsZ64xmB|gDslNreIv*a`IkEN=G 0;", (payload[0], )) + count = cur.fetchone()[0] + + if self_conn: + conn.close() + + return recordsets, count + + except Exception as error: + raise postsqldb.DatabaseError(error, payload, sql) + def getItemByUUID(site, payload:dict, convert=True, conn=None): """ payload: dict = {'item_uuid'}""" record = () diff --git a/application/shoppinglists/sql/getCalculatedItemsForModal.sql b/application/shoppinglists/sql/getCalculatedItemsForModal.sql new file mode 100644 index 0000000..139aaf5 --- /dev/null +++ b/application/shoppinglists/sql/getCalculatedItemsForModal.sql @@ -0,0 +1,13 @@ +SELECT items.item_uuid as item_uuid, + items.item_name as item_name, + units.fullname AS fullname, + units.id AS unit_id, + items.links AS links +FROM %%site_name%%_items items +LEFT JOIN %%site_name%%_item_info item_info ON item_info.id = items.item_info_id +LEFT JOIN units ON item_info.uom = units.id +WHERE items.search_string LIKE '%%' || %s || '%%' + AND items.inactive IS false + AND item_info.safety_stock > 0 +ORDER BY items.item_name +LIMIT %s OFFSET %s; \ No newline at end of file diff --git a/application/shoppinglists/sql/getItemsForModal.sql b/application/shoppinglists/sql/getItemsForModal.sql index 6ee93a0..d7dd509 100644 --- a/application/shoppinglists/sql/getItemsForModal.sql +++ b/application/shoppinglists/sql/getItemsForModal.sql @@ -6,6 +6,7 @@ SELECT items.item_uuid as item_uuid, FROM %%site_name%%_items items LEFT JOIN %%site_name%%_item_info item_info ON item_info.id = items.item_info_id LEFT JOIN units ON item_info.uom = units.id -WHERE items.search_string LIKE '%%' || %s || '%%' +WHERE items.search_string LIKE '%%' || %s || '%%' + AND items.inactive IS false ORDER BY items.item_name LIMIT %s OFFSET %s; \ No newline at end of file diff --git a/application/shoppinglists/static/js/shoppingListGeneratorHandler.js b/application/shoppinglists/static/js/shoppingListGeneratorHandler.js index a68e8ad..985e8b4 100644 --- a/application/shoppinglists/static/js/shoppingListGeneratorHandler.js +++ b/application/shoppinglists/static/js/shoppingListGeneratorHandler.js @@ -27,6 +27,17 @@ async function fetchItems(){ return data.items; } +async function fetchCalculatedItems(){ + const url = new URL('/shopping-lists/api/getCalculatedItems', window.location.origin); + url.searchParams.append('page', item_current_page); + url.searchParams.append('limit', items_limit); + url.searchParams.append('search_string', item_search_string); + const response = await fetch(url); + data = await response.json(); + item_end_page = data.end + return data.items; +} + var recipes_limit = 25 var recipes_current_page = 1 var recipes_end_page = 1 @@ -202,6 +213,9 @@ async function changeUncalculatedZoneState() { } async function openUncalculatedItemsModal(){ + item_current_page = 1 + item_search_string = "" + item_end_page = 1 let items = await fetchItems() console.log(items) await generateUncalculatedItemsModalTable(items) @@ -467,8 +481,10 @@ async function changeCalculatedZoneState() { } async function openCalculatedItemsModal(){ - let items = await fetchItems() - console.log(items) + item_current_page = 1 + item_search_string = "" + item_end_page = 1 + let items = await fetchCalculatedItems() await generateCalculatedItemsModalTable(items) await updateCalculatedItemsModalPagination() UIkit.modal(document.getElementById('calculatedItemModal')).show() diff --git a/celerybeat-schedule-shm b/celerybeat-schedule-shm index 9456e440c0d2b4bba6c505959e360cd5b1732731..c69f40fecab98df1dfc40ee72361b0f4b19b42ff 100644 GIT binary patch delta 246 zcmZo@U}|V!s+V}A%K!o#K+MR%AP@tjnSuD^2425MtCnB?`g}^3by@k6dw=s&q+=7B zNL3Fs3JgHz{zn2(VI~HjiH+AME?BTRf|12#@*h_dbyEg&21^EO23rPu21f>G23H1m z22TcW244n$hCqg3hERrZhDe6!&54YQnI`}8Fi|&Suwbxauwk%caA0s^aA9y`@L=#_ a@L}*{2w(_e2w@0gh+v3fhyiL?Z3X}wl11qN delta 167 zcmZo@U}|V!s+V}A%K!pWK+MR%AYcNdnSpqD+kTyFm1{G;KA)0hT~@xtRhj8An{_{(QF)%PN0WrhZ=Tow*%gUELX?{||zu@S`%^3<1oqmiw;miUe zB~=Y9etJp}Ll(|w;9c{lTLEOqdw$Juer6@c`1rEaqT0x+&CQ^NEBOKE}xHYqzpk5^3YqJcbke6Snqm4iLD(?+^*{8ImiBb-=>nl36xg zp{1LDG!Sq=6nfb1SSR#JUCLnxUI#=G3h|$uY%c2~CuwiiScv3+Xe?ol;ed~pXD@fE zW#nOZKr|!@2s+^KmD49Wc#9)8M;s*H0WshtS~D@i{+ptIJV_3SK~Kmwd&|6-?KLKE z?sy1vKwQT#xka6=1Y3sVd878Zx&06+Z(n*aa+ diff --git a/logs/database.log b/logs/database.log index 154d858..deb0266 100644 --- a/logs/database.log +++ b/logs/database.log @@ -601,4 +601,55 @@ sql='INSERT INTO main_shopping_lists(name, description, author, creation_date, sub_type, list_type) VALUES (%s, %s, %s, %s, %s, %s) RETURNING *;') 2025-08-20 15:38:30.303845 --- ERROR --- DatabaseError(message='column "start_date" does not existLINE 1: ... FROM main_plan_events WHERE plan_uuid = NULL AND start_date... ^', payload={'start_date': '2025-08-18', 'end_date': '2025-08-24', 'plan_uuid': None, 'plan_name': 'Site Planner'}, - sql='SELECT * FROM main_plan_events WHERE plan_uuid = %(plan_uuid)s AND start_date <= %(end_date)s AND end_date >= %(start_date)s;') \ No newline at end of file + sql='SELECT * FROM main_plan_events WHERE plan_uuid = %(plan_uuid)s AND start_date <= %(end_date)s AND end_date >= %(start_date)s;') +2025-08-21 15:30:18.587714 --- ERROR --- DatabaseError(message='missing FROM-clause entry for table "rpcipe"LINE 34: rpcipe.*, ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rpcipe.*, rp_item.item_type, rp_item.qty FROM main_recipes recipe JOIN main_recipe_items rp_items ON recipe.id = rp_items.rp_id WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(rp)), '{}') FROM cte_recipes sl) AS item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.id LEFT JOIN cte_recipes ON main_items.id = cte_recipes.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:31:10.416198 --- ERROR --- DatabaseError(message='missing FROM-clause entry for table "rp_item"LINE 35: rp_item.item_type, ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT recipe.*, rp_item.item_type, rp_item.qty FROM main_recipes recipe JOIN main_recipe_items rp_items ON recipe.id = rp_items.rp_id WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(rp)), '{}') FROM cte_recipes sl) AS item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.id LEFT JOIN cte_recipes ON main_items.id = cte_recipes.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:32:08.445090 --- ERROR --- DatabaseError(message='syntax error at or near "FROM"LINE 35: FROM main_recipe_items rp_items ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.*, FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(rp)), '{}') FROM cte_recipes rp) AS item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.id LEFT JOIN cte_recipes ON main_items.id = cte_recipes.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:32:41.827889 --- ERROR --- DatabaseError(message='syntax error at or near "FROM"LINE 35: FROM main_recipe_items rp_items ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.*, FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(row_to_json(rp)), '{}') FROM cte_recipes rp) AS item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:34:02.604372 --- ERROR --- DatabaseError(message='syntax error at or near "FROM"LINE 34: FROM main_recipe_items rp_items ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.*, FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(rp), '()') FROM cte_recipes rp) AS item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:34:39.473685 --- ERROR --- DatabaseError(message='syntax error at or near "FROM"LINE 34: FROM main_recipe_items rp_items ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.*, FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(rp), '()') FROM cte_recipes rp) AS item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:35:28.528730 --- ERROR --- DatabaseError(message='syntax error at or near "FROM"LINE 34: FROM main_recipe_items rp_items ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.*, FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(rp), '()') FROM cte_recipes rp) AS item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:35:54.588258 --- ERROR --- DatabaseError(message='syntax error at or near "FROM"LINE 34: FROM main_recipe_items rp_items ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.*, FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:37:16.582148 --- ERROR --- DatabaseError(message='malformed array literal: "()"LINE 78: (SELECT COALESCE(array_agg(rp), '()') FROM cte_recipes r... ^DETAIL: Array value must start with "{" or dimension information.', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.* FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(array_agg(rp), '()') FROM cte_recipes rp) AS item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:38:10.175186 --- ERROR --- DatabaseError(message='subquery must return only one columnLINE 78: (SELECT * FROM cte_recipes AS item_recipes), ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.* FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT * FROM cte_recipes AS item_recipes), (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:38:23.981975 --- ERROR --- DatabaseError(message='subquery must return only one columnLINE 78: (SELECT * FROM cte_recipes) as item_recipes, ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.* FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT * FROM cte_recipes) as item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:38:50.106138 --- ERROR --- DatabaseError(message='syntax error at or near "*"LINE 78: (SELECT COALESCE(*, '()') FROM cte_recipes) as item_reci... ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.* FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(*, '()') FROM cte_recipes) as item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:39:05.980541 --- ERROR --- DatabaseError(message='input of anonymous composite types is not implementedLINE 78: (SELECT COALESCE(cte_recipes.*, '()') FROM cte_recipes) ... ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.* FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(cte_recipes.*, '()') FROM cte_recipes) as item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 15:58:14.461388 --- ERROR --- DatabaseError(message='input of anonymous composite types is not implementedLINE 78: (SELECT COALESCE(cte_recipes.*, '()') FROM cte_recipes) ... ^', + payload=(1,), + sql='WITH passed_id AS (SELECT id AS passed_id, item_uuid as passed_uuid FROM main_items WHERE id=%s), logistics_id AS (SELECT logistics_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), info_id AS (SELECT item_info_id FROM main_items WHERE id=(SELECT passed_id FROM passed_id)), cte_conversions AS ( SELECT main_conversions.id as conv_id, main_conversions.conv_factor as conv_factor, units.* as uom FROM main_conversions LEFT JOIN units ON main_conversions.uom_id = units.id WHERE main_conversions.item_id = (SELECT passed_id FROM passed_id) ), cte_item_info AS ( SELECT main_item_info.*, row_to_json(units.*) as uom, COALESCE((SELECT json_agg(convs) FROM cte_conversions convs), '[]'::json) AS conversions, COALESCE((SELECT json_agg(p.*) FROM main_sku_prefix as p WHERE p.id = ANY(main_item_info.prefixes)), '[]'::json) as prefixes FROM main_item_info LEFT JOIN units ON main_item_info.uom = units.id WHERE main_item_info.id = (SELECT item_info_id FROM info_id) ), cte_shopping_lists AS ( SELECT main_shopping_lists.*, main_shopping_list_items.item_type, main_shopping_list_items.qty FROM main_shopping_lists JOIN main_shopping_list_items ON main_shopping_lists.list_uuid = main_shopping_list_items.list_uuid WHERE main_shopping_list_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_recipes AS ( SELECT rp_items.* FROM main_recipe_items rp_items WHERE rp_items.item_uuid = (SELECT passed_uuid FROM passed_id) ), cte_itemlinks AS ( SELECT * FROM main_itemlinks WHERE link=(SELECT passed_id FROM passed_id) ), cte_item_locations AS ( SELECT * FROM main_item_locations LEFT JOIN main_locations ON main_locations.id = main_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 main_logistics_info AS li LEFT JOIN main_locations AS pl ON li.primary_location = pl.id LEFT JOIN main_locations AS ail ON li.auto_issue_location = ail.id LEFT JOIN main_zones AS pz ON li.primary_zone = pz.id LEFT JOIN main_zones AS aiz ON li.auto_issue_zone = aiz.id WHERE li.id=(SELECT logistics_info_id FROM logistics_id) ), cte_barcodes AS ( SELECT barcode.barcode As barcode, barcode.in_exchange AS in_exchange, barcode.out_exchange AS out_exchange, barcode.descriptor AS descriptor FROM main_barcodes AS barcode LEFT JOIN main_items AS item ON item.id = (SELECT passed_id FROM passed_id) WHERE barcode.item_uuid = item.item_uuid )SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_items.*, (SELECT COALESCE(row_to_json(logis), '{}') FROM cte_logistics_info logis) AS logistics_info, row_to_json(main_food_info.*) as food_info, row_to_json(main_brands.*) as brand, (SELECT COALESCE(row_to_json(ii), '{}') FROM cte_item_info ii) AS item_info, (SELECT COALESCE(array_agg(row_to_json(sl)), '{}') FROM cte_shopping_lists sl) AS item_shopping_lists, (SELECT COALESCE(cte_recipes.*, '()') FROM cte_recipes) as item_recipes, (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_locations, (SELECT COALESCE(array_agg(row_to_json(bar)), '{}') FROM cte_barcodes bar) AS item_barcodesFROM main_items LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN main_food_info ON main_items.food_info_id = main_food_info.id LEFT JOIN main_brands ON main_items.brand = main_brands.id LEFT JOIN units ON main_item_info.uom = units.id LEFT JOIN cte_shopping_lists ON main_items.id = cte_shopping_lists.idWHERE main_items.id=(SELECT passed_id FROM passed_id)GROUP BY main_items.id, main_item_info.id, main_food_info.id, main_brands.id;') +2025-08-21 17:10:08.203762 --- ERROR --- DatabaseError(message='duplicate key value violates unique constraint "main_barcodes_pkey"DETAIL: Key (barcode)=(%085239099810%) already exists.', + payload=('%085239099810%', '6ff93491-ede3-4f90-aca3-8617ab057617', '1', '1', ''), + sql='INSERT INTO main_barcodes (barcode, item_uuid, in_exchange, out_exchange, descriptor) VALUES (%s, %s, %s, %s, %s) RETURNING *;') +2025-08-21 17:32:04.748621 --- ERROR --- DatabaseError(message='syntax error at or near "%"LINE 1: SELECT COUNT(*) FROM main_items items LEFT JOIN %site_name%_... ^', + payload=('', 25, 0), + sql='SELECT items.item_uuid as item_uuid, items.item_name as item_name, units.fullname AS fullname, units.id AS unit_id, items.links AS linksFROM main_items itemsLEFT JOIN main_item_info item_info ON item_info.id = items.item_info_idLEFT JOIN units ON item_info.uom = units.idWHERE items.search_string LIKE '%%' || %s || '%%' AND items.inactive IS false AND item_info.safety_stock > 0ORDER BY items.item_name LIMIT %s OFFSET %s;') +2025-08-21 17:32:19.598403 --- ERROR --- DatabaseError(message='syntax error at or near "%"LINE 1: ...CT COUNT(items.*) FROM main_items items LEFT JOIN %site_name... ^', + payload=('', 25, 0), + sql='SELECT items.item_uuid as item_uuid, items.item_name as item_name, units.fullname AS fullname, units.id AS unit_id, items.links AS linksFROM main_items itemsLEFT JOIN main_item_info item_info ON item_info.id = items.item_info_idLEFT JOIN units ON item_info.uom = units.idWHERE items.search_string LIKE '%%' || %s || '%%' AND items.inactive IS false AND item_info.safety_stock > 0ORDER BY items.item_name LIMIT %s OFFSET %s;') \ No newline at end of file diff --git a/logs/process.log b/logs/process.log index e16dca6..088af59 100644 --- a/logs/process.log +++ b/logs/process.log @@ -1001,3 +1001,56 @@ 2025-08-15 06:18:11.169962 --- INFO --- sku_prefix DROPPED! 2025-08-15 06:18:11.173921 --- INFO --- barcodes DROPPED! 2025-08-15 06:18:11.178178 --- INFO --- plan_events DROPPED! +2025-08-21 15:16:14.560463 --- INFO --- logins Created! +2025-08-21 15:16:14.567863 --- INFO --- sites Created! +2025-08-21 15:16:14.574548 --- INFO --- roles Created! +2025-08-21 15:16:14.580965 --- INFO --- units Created! +2025-08-21 15:16:14.591751 --- INFO --- cost_layers Created! +2025-08-21 15:16:14.602478 --- INFO --- linked_items Created! +2025-08-21 15:16:14.610123 --- INFO --- brands Created! +2025-08-21 15:16:14.619120 --- INFO --- food_info Created! +2025-08-21 15:16:14.628087 --- INFO --- item_info Created! +2025-08-21 15:16:14.636844 --- INFO --- zones Created! +2025-08-21 15:16:14.645245 --- INFO --- locations Created! +2025-08-21 15:16:14.654775 --- INFO --- logistics_info Created! +2025-08-21 15:16:14.663430 --- INFO --- transactions Created! +2025-08-21 15:16:14.673901 --- INFO --- item Created! +2025-08-21 15:16:14.681913 --- INFO --- vendors Created! +2025-08-21 15:16:14.690399 --- INFO --- groups Created! +2025-08-21 15:16:14.699503 --- INFO --- group_items Created! +2025-08-21 15:16:14.708266 --- INFO --- receipts Created! +2025-08-21 15:16:14.717453 --- INFO --- receipt_items Created! +2025-08-21 15:16:14.726192 --- INFO --- recipes Created! +2025-08-21 15:16:14.734717 --- INFO --- recipe_items Created! +2025-08-21 15:16:14.743314 --- INFO --- shopping_lists Created! +2025-08-21 15:16:14.751858 --- INFO --- shopping_list_items Created! +2025-08-21 15:16:14.760950 --- INFO --- item_locations Created! +2025-08-21 15:16:14.768830 --- INFO --- conversions Created! +2025-08-21 15:16:14.777425 --- INFO --- sku_prefix Created! +2025-08-21 15:16:14.784970 --- INFO --- barcodes Created! +2025-08-21 15:16:14.793814 --- INFO --- plan_events Created! +2025-08-21 15:16:14.797697 --- INFO --- Admin User Created! +2025-08-21 15:17:17.941491 --- INFO --- item_info DROPPED! +2025-08-21 15:17:17.951515 --- INFO --- items DROPPED! +2025-08-21 15:17:17.958475 --- INFO --- cost_layers DROPPED! +2025-08-21 15:17:17.965374 --- INFO --- linked_items DROPPED! +2025-08-21 15:17:17.972445 --- INFO --- transactions DROPPED! +2025-08-21 15:17:17.979077 --- INFO --- brands DROPPED! +2025-08-21 15:17:17.985976 --- INFO --- food_info DROPPED! +2025-08-21 15:17:17.993582 --- INFO --- logistics_info DROPPED! +2025-08-21 15:17:18.000524 --- INFO --- zones DROPPED! +2025-08-21 15:17:18.007350 --- INFO --- locations DROPPED! +2025-08-21 15:17:18.014420 --- INFO --- vendors DROPPED! +2025-08-21 15:17:18.021550 --- INFO --- group_items DROPPED! +2025-08-21 15:17:18.028353 --- INFO --- groups DROPPED! +2025-08-21 15:17:18.035154 --- INFO --- receipt_items DROPPED! +2025-08-21 15:17:18.041897 --- INFO --- receipts DROPPED! +2025-08-21 15:17:18.048910 --- INFO --- recipe_items DROPPED! +2025-08-21 15:17:18.055587 --- INFO --- recipes DROPPED! +2025-08-21 15:17:18.062558 --- INFO --- shopping_list_items DROPPED! +2025-08-21 15:17:18.069321 --- INFO --- shopping_lists DROPPED! +2025-08-21 15:17:18.076097 --- INFO --- item_locations DROPPED! +2025-08-21 15:17:18.082644 --- INFO --- conversions DROPPED! +2025-08-21 15:17:18.089331 --- INFO --- sku_prefix DROPPED! +2025-08-21 15:17:18.095712 --- INFO --- barcodes DROPPED! +2025-08-21 15:17:18.102641 --- INFO --- plan_events DROPPED!