1"use strict";(self.webpackChunkParkAdda=self.webpackChunkParkAdda||[]).push([[922],{52802(e,t,a){a.d(t,{NY:()=>f,re:()=>i,vE:()=>u});var n=a(93533),l=a(98670),s=a(4596),r=a(35084);async function o(e){var t;try{t=await e.json()}catch(i){t=null}if(401===e.status){(0,l.setStaffToken)(null),(0,l.setStaffPayload)(null);var a=(0,s.K)(t&&t.message||t||"Session expired, please log in again."),n=new Error(a);throw n.status=401,(0,r.P0)(a,"error"),n}if(!e.ok||t&&!1===t.success){var o=(0,s.K)(t&&t.message||t||"Request failed"),c=new Error(o);throw c.status=e.status,c.payload=t&&t.payload,401!==e.status&&(0,r.P0)(o,"error"),c}return t&&t.payload}function c(e,t,a){a=a||{};var n=(0,l.yK)(),s=Object.assign({"Content-Type":"application/json"},a.headers||{});return n&&(s.Authorization="Bearer "+n),fetch(e+t,Object.assign({},a,{headers:s})).then(o)}function i(e,t,a){return c(e,t+function(e){if(!e)return"";var t=[];return Object.keys(e).forEach(function(a){var n=e[a];void 0!==n&&null!==n&&""!==n&&t.push(encodeURIComponent(a)+"="+encodeURIComponent(n))}),t.length?"?"+t.join("&"):""}(a),{method:"GET"})}function u(e,t,a){return c(e,t,{method:"POST",body:JSON.stringify(a||{})})}var f={EVENTS:n.wm.EVENTS,VALET:n.wm.VALET,CART:n.wm.CART,VENDORPAY:n.wm.VENDORPAY}},5336(e,t,a){a.d(t,{P:()=>s});var n=a(52802),l=n.NY.VENDORPAY,s={dashboardOverview:function(e){return(0,n.re)(l,"/dashboard/overview/",e)},dashboardVendor:function(e){return(0,n.re)(l,"/dashboard/vendor/",e)},listOrders:function(e){return(0,n.re)(l,"/orders/",e)},getOrder:function(e){return(0,n.re)(l,"/orders/"+encodeURIComponent(e)+"/")},createOrder:function(e){return(0,n.vE)(l,"/orders/create/",e)},markPaid:function(e){return(0,n.vE)(l,"/orders/mark-paid/",e)},verify:function(e){return(0,n.vE)(l,"/orders/verify/",e)},fulfill:function(e){return(0,n.vE)(l,"/orders/fulfill/",e)},cancelOrder:function(e){return(0,n.vE)(l,"/orders/cancel/",e)},override:function(e){return(0,n.vE)(l,"/orders/override/",e)},printOrder:function(e){return(0,n.vE)(l,"/orders/print/",e)},scanOrder:function(e){return(0,n.vE)(l,"/orders/scan/",e)},listVendors:function(e){return(0,n.re)(l,"/vendors/",e)},upsertVendor:function(e){return(0,n.vE)(l,"/vendors/upsert/",e)},gstVerify:function(e){return(0,n.vE)(l,"/vendors/gst-verify/",e)},onboardFromGst:function(e){return(0,n.vE)(l,"/vendors/onboard-from-gst/",e)},notifyOrder:function(e){return(0,n.vE)(l,"/orders/notify/",e)},listStalls:function(e){return(0,n.re)(l,"/stalls/",e)},upsertStall:function(e){return(0,n.vE)(l,"/stalls/upsert/",e)},generateStallQr:function(e){return(0,n.vE)(l,"/stalls/"+e+"/generate-qr/",{})},listOperators:function(e){return(0,n.re)(l,"/operators/",e)},upsertOperator:function(e){return(0,n.vE)(l,"/operators/upsert/",e)},generateOperatorQr:function(e){return(0,n.vE)(l,"/operators/"+e+"/generate-qr/",{})},listItems:function(e){return(0,n.re)(l,"/items/",e)},upsertItem:function(e){return(0,n.vE)(l,"/items/upsert/",e)},listStock:function(e){return(0,n.re)(l,"/stock/",e)},loadStock:function(e){return(0,n.vE)(l,"/stock/load/",e)},adjustStock:function(e){return(0,n.vE)(l,"/stock/adjust/",e)},stockLog:function(e){return(0,n.re)(l,"/stock/log/",e)},listSettlements:function(e){return(0,n.re)(l,"/settlements/",e)},buildSettlement:function(e){return(0,n.vE)(l,"/settlements/build/",e)},approveSettlement:function(e){return(0,n.vE)(l,"/settlements/approve/",e)},markSettlementPaid:function(e){return(0,n.vE)(l,"/settlements/mark-paid/",e)}}},96498(e,t,a){var n=a(80296),l=a(65043),s=a(62582),r=a(59557),o=a(98670),c=a(4596),i=a(10705);a(54958);const u=function(e){const t=(0,o.wA)(),a=(0,r.zy)(),u=(0,l.useState)(!1),f=(0,n.A)(u,2),m=f[0],d=f[1],v=(0,l.useMemo)(function(){const e=t.caps;if(e.isBookingViewerOnly&&e.canViewBookingAnalytics)return[{to:"/staff/dashboard",label:"Dashboard"},{to:"/staff/scan",label:"Scan QR"},{to:"/staff/bookings",label:"Participants"},{to:"/staff/game-status",label:"Game status"},{to:"/staff/profile",label:"Profile"},{to:"/events",label:"Events"}];const a=[{to:"/staff",label:"Home",exact:!0},{to:"/staff/scan",label:"Scan QR"}];return e.canOperateValet&&a.push({to:"/staff/valet",label:"Valet"}),e.canOperateCart&&a.push({to:"/staff/cart",label:"Cart"}),e.canOperateVendorPay&&a.push({to:"/staff/vendorpay",label:"VendorPay"}),e.canManageAccreditation&&a.push({to:"/staff/accreditation",label:"Accreditation"}),e.canViewBookingAnalytics?(a.push({to:"/staff/dashboard",label:"Dashboard"}),a.push({to:"/staff/bookings",label:"Participants"}),a.push({to:"/staff/game-status",label:"Game status"})):(e.isCommitteeDesk||e.canRecordCash||e.isAdmin)&&a.push({to:"/staff/game-status",label:"Game status"}),e.canViewSponsors&&a.push({to:"/staff/sponsors",label:"Sponsors"}),e.canRecordCash&&a.push({to:"/staff/cash",label:"Offline cash"}),e.isAdmin&&(a.push({to:"/staff/committees",label:"Committees"}),a.push({to:"/staff/accounts",label:"Admins"})),e.canViewSiteFeedback&&a.push({to:"/staff/feedback",label:"Site feedback"}),a.push({to:"/staff/profile",label:"Profile"}),a.push({to:"/events",label:"Events"}),a},[t.caps]);if((0,l.useEffect)(function(){d(!1)},[a.pathname,a.search]),(0,l.useEffect)(function(){if(m){var e=document.body.style.overflow;return document.body.style.overflow="hidden",document.addEventListener("keydown",t),function(){document.body.style.overflow=e,document.removeEventListener("keydown",t)}}function t(e){"Escape"===e.key&&d(!1)}},[m]),"loading"===t.status||"idle"===t.status)return l.createElement("div",{className:"stf-shell stf-shell--loading"},l.createElement("div",{className:"stf-loading-center"},l.createElement(i.y$,{size:28}
1),l.createElement("span",null,"Loading session\u2026")));if("unauthenticated"===t.status){const e=encodeURIComponent(a.pathname+a.search);return l.createElement(r.rd,{to:"/staff/login?next="+e})}const p=t.staff||{},E=(0,o.Up)(p.role_code),b=(0,c.c)(p),h=function(e,t){if(0===e.indexOf("/staff/valet")&&t.canOperateValet){var a=[{to:"/staff/valet",label:"Dashboard",exact:!0},{to:"/staff/valet/transactions",label:"Transactions"},{to:"/staff/valet/scan",label:"Scan / Intake"},{to:"/staff/valet/pos-exit",label:"POS exit"},{to:"/staff/valet/retrievals",label:"Retrievals"},{to:"/staff/valet/keys",label:"Keys"}];return t.isAdmin&&a.push({to:"/staff/valet/admin",label:"Admin"}),a}if(0===e.indexOf("/staff/cart")&&t.canOperateCart){var n=[{to:"/staff/cart",label:"Dashboard",exact:!0},{to:"/staff/cart/requests",label:"Requests"},{to:"/staff/cart/dispatch",label:"Dispatch"},{to:"/staff/cart/scan",label:"Scan / Dispatch"},{to:"/staff/cart/pos-exit",label:"POS exit"},{to:"/staff/cart/batches",label:"Batches"}];return t.isAdmin&&n.push({to:"/staff/cart/admin",label:"Admin"}),n}if(0===e.indexOf("/staff/vendorpay")&&t.canOperateVendorPay){var l=[{to:"/staff/vendorpay",label:"Dashboard",exact:!0}];return t.canBillVendorPay&&l.push({to:"/staff/vendorpay/pos",label:"POS"}),l.push({to:"/staff/vendorpay/orders",label:"Orders"}),t.canFulfilVendorPay&&l.push({to:"/staff/vendorpay/scan",label:"Scan"}),l.push({to:"/staff/vendorpay/stock",label:"Stock"}),t.isAdmin&&l.push({to:"/staff/vendorpay/admin",label:"Admin"}),t.isAdmin&&l.push({to:"/staff/vendorpay/settlements",label:"Settlements"}),l}return[]}(a.pathname,t.caps),_=function(e,t,a){for(var n="",l="Staff",s=[a,t],r=0;r<s.length;r++)for(var o=s[r],c=0;c<o.length;c++){var i=o[c].to;(e===i||"/staff"!==i&&0===e.indexOf(i))&&i.length>=n.length&&(n=i,l=o[c].label)}return l}(a.pathname,v,h),y=function(e){if((e=e||{}).isBookingViewerOnly&&e.canViewBookingAnalytics)return[{to:"/staff/dashboard",label:"Dashboard",exact:!0},{to:"/staff/scan",label:"Scan"},{to:"/staff/bookings",label:"Participants"},{to:"/staff/game-status",label:"Results"}];var t=[{to:"/staff",label:"Home",exact:!0},{to:"/staff/scan",label:"Scan"}];e.canViewBookingAnalytics?(t.push({to:"/staff/bookings",label:"Participants"}),t.push({to:"/staff/game-status",label:"Results"})):(e.isCommitteeDesk||e.canRecordCash||e.isAdmin)&&t.push({to:"/staff/game-status",label:"Results"});e.canOperateValet&&t.push({to:"/staff/valet",label:"Valet"});e.canOperateCart&&t.push({to:"/staff/cart",label:"Cart"});e.canOperateVendorPay&&t.push({to:"/staff/vendorpay",label:"VendorPay"});return t.slice(0,5)}(t.caps||{}),g=function(e){var t={"/staff/dashboard":!0,"/staff/bookings":!0,"/staff/game-status":!0,"/staff/cash":!0,"/staff/sponsors":!0,"/staff/committees":!0,"/staff/accounts":!0,"/staff/feedback":!0},a={"/staff/profile":!0,"/events":!0},n=[{key:"work",title:"On the ground",items:[]},{key:"events",title:"Event desk",items:[]},{key:"account",title:"Account",items:[]}];return e.forEach(function(e){a[e.to]?n[2].items.push(e):t[e.to]?n[1].items.push(e):n[0].items.push(e)}),n.filter(function(e){return e.items.length>0})}(v),k=function(e){var t=String(e||"").trim().split(/\s+/).filter(Boolean);return t.length?1===t.length?t[0].slice(0,2).toUpperCase():(t[0].charAt(0)+t[t.length-1].charAt(0)).toUpperCase():"PA"}(b);return l.createElement("div",{className:"stf-shell"},l.createElement("header",{className:"stf-topbar"},l.createElement("button",{type:"button",className:"stf-topbar__menu"+(m?" stf-topbar__menu--open":""),"aria-expanded":m,"aria-controls":"stf-nav-drawer","aria-label":m?"Close menu":"Open menu",onClick:function(){d(function(e){return!e})}},l.createElement("span",{className:"stf-topbar__menu-icon"})),l.createElement(s.Link,{to:"/staff",className:"stf-topbar__brand"},l.createElement("span",{className:"stf-topbar__mark","aria-hidden":"true"},"P"),l.createElement("span",{className:"stf-topbar__brand-text"},"ParkAdda",l.createElement("small",null,"Staff"))),l.createElement("nav",{className:"stf-topbar__nav","aria-label":"Primary"},y.map(function(e){return l.createElement(s.NavLink,{key:"bar-"+e.to,to:e.to,exact:!!e.exact,activeClassName:"stf-topbar__nav--active"},e.label)})),l.createElement("div",{className:"stf-topbar__current"},_),l.createElement("div",{className:"stf-topbar__spacer"}),l.createElement(s.Link,{to:"/staff/profile",className:"stf-topbar__staff",title:"Open profile"},l.createElement("span",{className:"stf-avatar","aria-hidden":"true"},k),l.createElement("span",{className:"stf-topbar__staff-text"},l.createElement("strong",null,b),l.createElement("small",null,E))),l.createElement("button",{className:"stf-topbar__logout",type:"button",onClick:function(){t.logout()}},"Log out")),h.length>0?l.createElement("nav",{className:"stf-subnav","aria-label":"This section"},h.map(function(e){return l.createElement(s.NavLink,{key:"sub-"+e.to,to:e.to,exact:!!e.exact,className:"stf-subnav__link",activeClassName:"stf-subnav__link--active"},e.label)})):null,l.createElement("div",{id:"stf-nav-drawer",className:"stf-drawer"+(m?" stf-drawer--open":""),"aria-hidden":!m},l.createElement("div",{className:"stf-drawer__backdrop",onClick:function(){d(!1)}}),l.createElement("div",{className:"stf-drawer__panel",role:"dialog","aria-label":"Staff menu"},l.createElement("div",{className:"stf-drawer__head"},l.createElement("div",null,l.createElement("div",{className:"stf-drawer__brand"},"ParkAdda"),l.createElement("div",{className:"stf-drawer__brand-sub"},"Staff menu")),l.createElement("button",{type:"button",className:"stf-drawer__close","aria-label":"Close menu",onClick:function(){d(!1)}},l.createElement("span",null))),l.createElement("div",{className:"stf-drawer__scroll"},g.map(function(e){return l.createElement("div",{key:e.key,className:"stf-drawer__group"},l.createElement("div",{className:"stf-drawer__title"},e.title),e.items.map(function(e){return l.createElement(s.NavLink,{key:"drawer
1-"+e.to,to:e.to,exact:!!e.exact,activeClassName:"stf-drawer__link--active",className:"stf-drawer__link",onClick:function(){d(!1)}},e.label)}))}),h.length>0?l.createElement("div",{className:"stf-drawer__group"},l.createElement("div",{className:"stf-drawer__title"},"This section"),h.map(function(e){return l.createElement(s.NavLink,{key:"section-"+e.to,to:e.to,exact:!!e.exact,activeClassName:"stf-drawer__link--active",className:"stf-drawer__link",onClick:function(){d(!1)}},e.label)})):null),l.createElement("div",{className:"stf-drawer__footer"},l.createElement(s.Link,{to:"/staff/profile",className:"stf-drawer__who",onClick:function(){d(!1)}},l.createElement("span",{className:"stf-avatar stf-avatar--navy","aria-hidden":"true"},k),l.createElement("span",null,l.createElement("strong",null,b),l.createElement("span",null,E))),l.createElement("button",{type:"button",className:"stf-drawer__logout",onClick:function(){d(!1),t.logout()}},"Log out")))),l.createElement("main",{className:"stf-page"},e.children))};a.d(t,["A",0,u])},80922(e,t,a){a.r(t);var n=a(65043),l=a(96498),s=a(10705),r=a(5336);a(54958);var o=function(e){const t=(0,n.useState)({vendor_item_id:"",stall_id:"",opening_stock:0,low_stock_threshold:"",notes:""}),a=t[0],l=t[1],o=(0,n.useState)(!1),c=o[0],i=o[1],u=(0,n.useState)(""),f=u[0],m=u[1],d=(0,n.useState)([]),v=d[0],p=d[1],E=(0,n.useState)([]),b=E[0],h=E[1];n.useEffect(function(){e.open&&(l({vendor_item_id:"",stall_id:"",opening_stock:0,low_stock_threshold:"",notes:""}),m(""))},[e.open]),n.useEffect(function(){if(e.open){var t={active:1};e.eventId&&(t.event_id=e.eventId),r.P.listStalls(t).then(function(e){p(e&&e.stalls||[])}).catch(function(){p([])}),r.P.listItems(t).then(function(e){h(e&&e.items||[])}).catch(function(){h([])})}},[e.open,e.eventId]);var _=function(e){return function(t){l(Object.assign({},a,{[e]:t.target.value}))}};return n.createElement(s.aF,{open:e.open,onClose:e.onClose,title:"Load opening stock"},n.createElement(s.Fx,{message:f}),n.createElement("div",{className:"stf-field"},n.createElement("label",null,"Vendor item *"),n.createElement("select",{value:a.vendor_item_id,onChange:_("vendor_item_id")},n.createElement("option",{value:""},"\u2014 pick item \u2014"),b.map(function(e){return n.createElement("option",{key:e.id,value:e.id},e.item_name," (",e.item_code,")")}))),n.createElement("div",{className:"stf-field"},n.createElement("label",null,"Stall *"),n.createElement("select",{value:a.stall_id,onChange:_("stall_id")},n.createElement("option",{value:""},"\u2014 pick stall \u2014"),v.map(function(e){return n.createElement("option",{key:e.id,value:e.id},e.stall_name," (",e.stall_code,")")}))),n.createElement("div",{className:"stf-field"},n.createElement("label",null,"Opening stock"),n.createElement("input",{type:"number",value:a.opening_stock,onChange:_("opening_stock")})),n.createElement("div",{className:"stf-field"},n.createElement("label",null,"Low stock threshold"),n.createElement("input",{type:"number",value:a.low_stock_threshold,onChange:_("low_stock_threshold")})),n.createElement("div",{className:"stf-field"},n.createElement("label",null,"Notes"),n.createElement("textarea",{rows:2,value:a.notes,onChange:_("notes")})),n.createElement("button",{className:"stf-btn",disabled:c||!e.eventId||!a.vendor_item_id||!a.stall_id,onClick:function(){i(!0),m("");var t={vendor_item_id:Number(a.vendor_item_id),event_id:e.eventId,stall_id:Number(a.stall_id),opening_stock:Number(a.opening_stock),notes:a.notes||void 0};a.low_stock_threshold&&(t.low_stock_threshold=Number(a.low_stock_threshold)),r.P.loadStock(t).then(function(){e.onDone("Opening stock loaded"),e.onClose()}).catch(function(e){m(e.message)}).then(function(){i(!1)})}},c?n.createElement(s.y$,null):"Load"))},c=function(e){const t=(0,n.useState)({adjustment_type:"MANUAL_ADD",quantity:0,notes:""}),a=t[0],l=t[1],o=(0,n.useState)(!1),c=o[0],i=o[1],u=(0,n.useState)(""),f=u[0],m=u[1];n.useEffect(function(){e.open&&(l({adjustment_type:"MANUAL_ADD",quantity:0,notes:""}),m(""))},[e.open]);var d=function(e){return function(t){l(Object.assign({},a,{[e]:t.target.value}))}};return n.createElement(s.aF,{open:e.open,onClose:e.onClose,title:"Adjust \u2014 "+(e.inv&&(e.inv.item_name||e.
1inv.item))},n.createElement(s.Fx,{message:f}),n.createElement("div",{className:"stf-field"},n.createElement("label",null,"Adjustment type"),n.createElement("select",{value:a.adjustment_type,onChange:d("adjustment_type")},n.createElement("option",{value:"MANUAL_ADD"},"Manual add"),n.createElement("option",{value:"MANUAL_REDUCE"},"Manual reduce"),n.createElement("option",{value:"DAMAGE"},"Damage / wastage"),n.createElement("option",{value:"RECONCILIATION"},"Reconciliation"))),n.createElement("div",{className:"stf-field"},n.createElement("label",null,"Quantity"),n.createElement("input",{type:"number",value:a.quantity,onChange:d("quantity")})),n.createElement("div",{className:"stf-field"},n.createElement("label",null,"Notes"),n.createElement("textarea",{rows:2,value:a.notes,onChange:d("notes")})),n.createElement("button",{className:"stf-btn",disabled:c,onClick:function(){e.inv&&(i(!0),m(""),r.P.adjustStock({inventory_id:e.inv.id,adjustment_type:a.adjustment_type,quantity:Number(a.quantity),notes:a.notes||void 0}).then(function(){e.onDone("Stock adjusted"),e.onClose()}).catch(function(e){m(e.message)}).then(function(){i(!1)}))}},c?n.createElement(s.y$,null):"Adjust"))},i=function(e){const t=(0,n.useState)({inventory_id:"",adjustment_type:""}),a=t[0],l=t[1],o=(0,n.useState)([]),c=o[0],i=o[1],u=(0,n.useState)(!1),f=u[0],m=u[1],d=(0,n.useState)(""),v=d[0],p=d[1];var E=function(){m(!0),p("");var e={};a.inventory_id&&(e.inventory_id=a.inventory_id),a.adjustment_type&&(e.adjustment_type=a.adjustment_type),r.P.stockLog(e).then(function(e){i(e&&e.logs||[])}).catch(function(e){p(e.message)}).then(function(){m(!1)})};return n.useEffect(function(){e.open&&(i([]),E())},[e.open]),n.createElement(s.aF,{open:e.open,onClose:e.onClose,title:"Stock movement log",maxWidth:720},n.createElement(s.Fx,{message:v}),n.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr auto",gap:8,marginBottom:10}},n.createElement("div",{className:"stf-field",style:{margin:0}},n.createElement("label",null,"Inventory id"),n.createElement("input",{value:a.inventory_id,onChange:function(e){l(Object.assign({},a,{inventory_id:e.target.value}))}})),n.createElement("div",{className:"stf-field",style:{margin:0}},n.createElement("label",null,"Type"),n.createElement("select",{value:a.adjustment_type,onChange:function(e){l(Object.assign({},a,{adjustment_type:e.target.value}))}},n.createElement("option",{value:""},"All"),n.createElement("option",{value:"OPENING"},"OPENING"),n.createElement("option",{value:"SALE"},"SALE"),n.createElement("option",{value:"CANCEL_RESTORE"},"CANCEL_RESTORE"),n.createElement("option",{value:"DAMAGE"},"DAMAGE"),n.createElement("option",{value:"MANUAL_ADD"},"MANUAL_ADD"),n.createElement("option",{value:"MANUAL_REDUCE"},"MANUAL_REDUCE"),n.createElement("option",{value:"RECONCILIATION"},"RECONCILIATION"))),n.createElement("div",{className:"stf-field",style:{margin:0}},n.createElement("label",null,"\xa0"),n.createElement("button",{className:"stf-btn",onClick:E,disabled:f},f?n.createElement(s.y$,null):"Search"))),0===c.length?n.createElement("div",{className:"stf-empty"},"No entries"):n.createElement("table",{className:"stf-table"},n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",
1null,"Time"),n.createElement("th",null,"Type"),n.createElement("th",null,"Qty"),n.createElement("th",null,"Before \u2192 After"),n.createElement("th",null,"Ref"))),n.createElement("tbody",null,c.map(function(e){return n.createElement("tr",{key:e.id},n.createElement("td",{style:{fontSize:12}},(0,s.qw)(e.created)),n.createElement("td",null,n.createElement("code",null,e.adjustment_type)),n.createElement("td",null,e.quantity),n.createElement("td",{style:{fontSize:12}},e.before_stock," \u2192 ",e.after_stock),n.createElement("td",{style:{fontSize:11,color:"#94a3b8"}},(e.reference_type||"")+" "+(e.reference_id||"")))}))))};const u=function(){const e=(0,s.UM)(),t=(0,n.useState)([]),a=t[0],u=t[1],f=(0,n.useState)(!1),m=f[0],d=f[1],v=(0,n.useState)(""),p=v[0],E=v[1],b=(0,n.useState)(""),h=b[0],_=b[1],y=(0,n.useState)({stall_id:"",vendor_id:"",only_low:""}),g=y[0],k=y[1],N=(0,n.useState)([]),C=N[0],S=N[1],A=(0,n.useState)([]),w=A[0],O=A[1];(0,n.useEffect)(function(){r.P.listVendors({active:1}).then(function(e){S(e&&e.vendors||[])}).catch(function(){S([])})},[]),(0,n.useEffect)(function(){var t={active:1};e.selected&&(t.event_id=e.selected),g.vendor_id&&(t.vendor_id=g.vendor_id),r.P.listStalls(t).then(function(e){O(e&&e.stalls||[])}).catch(function(){O([])})},[e.selected,g.vendor_id]);const P=(0,n.useState)(null),L=P[0],x=P[1],j=(0,n.useState)(null),V=j[0],D=j[1],R=(0,n.useState)(null),I=R[0],T=R[1],U=(0,n.useCallback)(function(){d(!0),E("");var t={};e.selected&&(t.event_id=e.selected),Object.keys(g).forEach(function(e){g[e]&&(t[e]=g[e])}),r.P.listStock(t).then(function(e){u(e&&e.inventory||[])}).catch(function(e){E(e.message)}).then(function(){d(!1)})},[e.selected,g]);return(0,n.useEffect)(function(){U()},[U]),n.createElement(l.A,null,n.createElement("h1",{className:"stf-page__title"},"VendorPay Stock"),n.createElement("p",{className:"stf-page__sub"},"Load opening stock, adjust mid-event, view full movement log."),n.createElement("div",{className:"stf-card",style:{display:"grid",gridTemplateColumns:"repeat(auto-fit,minmax(170px,1fr))",gap:12}},n.createElement(s.Iy,{events:e.events,value:e.selected,onChange:e.setSelected}),n.createElement("div",{className:"stf-field",style:{margin:0}},n.createElement("label",null,"Vendor"),n.createElement("select",{value:g.vendor_id,onChange:function(e){k(Object.assign({},g,{vendor_id:e.target.value,stall_id:""}))}},n.createElement("option",{value:""},"All vendors"),C.map(function(e){return n.createElement("option",{key:e.id,value:e.id},e.vendor_name)}))),n.createElement("div",{className:"stf-field",style:{margin:0}},n.createElement("label",null,"Stall"),n.createElement("select",{value:g.stall_id,onChange:function(e){k(Object.assign({},g,{stall_id:e.target.value}))}},n.createElement("option",{value:""},"All stalls"),w.map(function(e){return n.createElement("option",{key:e.id,value:e.id},e.stall_name," (",e.stall_code,")")}))),n.createElement("div",{className:"stf-field",style:{margin:0}},n.createElement("label",null,"Only low"),n.createElement("select",{value:g.only_low,onChange:function(e){k(Object.assign({},g,{only_low:e.target.value}))}},n.createElement("option",{value:""},"All"),n.createElement("option",{value:"1"},"Low stock only"))),n.createElement("div",{className:"stf-field",style:{margin:0}},n.createElement("label",null,"\xa0"),n.createElement("button",{className:"stf-btn",onClick:U,disabled:m},m?n.createElement(s.y$,null):"Apply"))),n.createElement(s.Fx,{message:p}),n.createElement(s.GN,{message:h}),n.createElement("div",{style:{display:"flex",gap:8,marginBottom:12}},n.createElement("button",{className:"stf-btn",onClick:function(){x({})}},"Load opening stock"),n.createElement("button",{className:"stf-btn stf-btn--ghost",onClick:function(){T({})}},"View movement log")),n.createElement("div",{className:"stf-card stf-card--flush"},0===a.length?n.createElement("div",{className:"stf-empty",style:{margin:16}},"No inventory rows."):n.createElement("table",{className:"stf-table"},n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",
1null,"Item"),n.createElement("th",null,"Stall"),n.createElement("th",null,"Opening"),n.createElement("th",null,"Current"),n.createElement("th",null,"Reserved"),n.createElement("th",null,"Sold"),n.createElement("th",null,"Damaged"),n.createElement("th",null,"Low?"),n.createElement("th",null))),n.createElement("tbody",null,a.map(function(e){var t=null!=e.low_stock_threshold&&e.current_stock<=e.low_stock_threshold;return n.createElement("tr",{key:e.id},n.createElement("td",null,n.createElement("strong",null,e.item_name||e.item)),n.createElement("td",{style:{fontSize:12}},e.stall_name||e.stall),n.createElement("td",null,e.opening_stock),n.createElement("td",null,n.createElement("strong",{style:{color:t?"#dc2626":"#0f172a"}},e.current_stock)),n.createElement("td",null,e.reserved_stock||0),n.createElement("td",null,e.sold_quantity||0),n.createElement("td",null,e.damaged_quantity||0),n.createElement("td",null,t?"\u26a0\ufe0f":""),n.createElement("td",null,n.createElement("button",{className:"stf-btn stf-btn--ghost stf-btn--sm",onClick:function(){D(e)}},"Adjust")))})))),n.createElement(o,{open:!!L,onClose:function(){x(null)},eventId:e.selected,onDone:function(e){_(e),U()}}),n.createElement(c,{open:!!V,inv:V,onClose:function(){D(null)},onDone:function(e){_(e),U()}}),n.createElement(i,{open:!!I,onClose:function(){T(null)}}))};a.d(t,["default",0,u])},54958(){}}]); 2//# sourceMappingURL=922.9d556f84.chunk.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.