const{PageHeader,Card,SearchField,TextField,QuantityStepper,Button,StatusBadge,IconButton,Dialog,DataTable}=window.RemedeStockDesignSystem_3e957a,Icon=window.REMEDE.Icon;function StockIssue(){const{fmt:I,statusOf:b}=window.REMEDE,[r,v]=React.useState(""),[p,d]=React.useState(""),[n,i]=React.useState([]),[g,o]=React.useState(!1),[m,S]=window.REMEDE.useFlash(!1),[l,f]=React.useState(""),R=window.REMEDE.useSaveGuard(),{data:y,loading:x,error:c,reload:w}=window.REMEDE.useAsyncData(async()=>{const[e,t]=await Promise.all([window.REMEDE.getMedicines(),window.REMEDE.getIssueRequests()]);return{items:e.filter(a=>a.kind==="consumable"),reqs:t}},{initial:{items:[],reqs:[]},errorMessage:"โหลดข้อมูลไม่สำเร็จ"}),s=y.items,E=y.reqs;window.REMEDE.useLucide([r,n,g,m,x,c,l,s,E]);const h=window.REMEDE.searchInStock(s,r),k=e=>i(t=>window.REMEDE.addToCart(t,e.id)),C=(e,t)=>i(a=>window.REMEDE.setCartQty(a,e,t)),D=e=>i(t=>window.REMEDE.removeFromCart(t,e)),M=n.length>0,z=()=>R(async()=>{o(!1),f("");try{await window.REMEDE.createIssueRequest(n.map(e=>({id:e.id,qty:e.qty})),p.trim()),i([]),d(""),S(!0),await w()}catch(e){f(e.message||"ส่งคำขอเบิกไม่สำเร็จ กรุณาลองใหม่")}}),u=React.createElement(PageHeader,{eyebrow:"หน้าหลัก · ของใช้สิ้นเปลือง",title:"เบิกของใช้",description:"สร้างคำขอเบิกวัสดุสิ้นเปลือง (ไม่ผูกกับคนไข้) — ส่งให้หลังบ้านตรวจนับ หยิบของ และอนุมัติก่อนจึงจะตัดสต๊อก",actions:React.createElement(Button,{variant:"ghost",iconLeft:React.createElement(Icon,{n:"rotate-ccw",s:16}),onClick:()=>{i([]),d("")}},"ล้างฟอร์ม")});return x?React.createElement("div",{style:{maxWidth:"var(--content-max)"}},u,React.createElement(Card,{padding:"md",style:{marginTop:"var(--space-7)"}},React.createElement(window.REMEDE.LoadingState,null))):c?React.createElement("div",{style:{maxWidth:"var(--content-max)"}},u,React.createElement(Card,{padding:"md",style:{marginTop:"var(--space-7)"}},React.createElement(window.REMEDE.ErrorState,{message:c,onRetry:w}))):React.createElement("div",{style:{maxWidth:"var(--content-max)"}},u,l?React.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:"var(--space-5)",padding:"10px 14px",background:"var(--danger-50)",border:"1px solid var(--danger-100)",borderRadius:"var(--radius-md)",color:"var(--danger-700)",fontSize:"var(--text-sm)"}},React.createElement(Icon,{n:"alert-circle",s:16}),l):null,React.createElement("div",{style:{display:"grid",gridTemplateColumns:"1.55fr 1fr",gap:"var(--space-6)",marginTop:"var(--space-7)",alignItems:"start"}},React.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-5)"}},React.createElement(Card,{padding:"md"},React.createElement("h3",{style:{fontSize:"var(--text-lg)",fontWeight:600,marginBottom:14}},"เลือกของที่จะเบิก"),React.createElement(SearchField,{value:r,onChange:e=>v(e.target.value),onClear:()=>v(""),placeholder:"ค้นหาของสิ้นเปลือง / ประเภท",size:"lg"}),React.createElement("div",{style:{marginTop:12,display:"flex",flexDirection:"column",gap:6,maxHeight:320,overflowY:"auto"}},h.map(e=>{const t=n.find(B=>B.id===e.id),a=b(e);return React.createElement("button",{key:e.id,onClick:()=>k(e),disabled:!!t,style:{display:"flex",alignItems:"center",gap:12,padding:"10px 12px",border:"1px solid var(--border-subtle)",borderRadius:"var(--radius-md)",background:t?"var(--neutral-100)":"var(--surface-card)",cursor:t?"default":"pointer",textAlign:"left",fontFamily:"var(--font-ui)",opacity:t?.6:1}},React.createElement("div",{style:{flex:1}},React.createElement("div",{style:{fontWeight:500,color:"var(--text-strong)",fontSize:"var(--text-base)"}},e.name),React.createElement("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-subtle)"}},e.cat," · คงเหลือ ",e.stock," ",e.unit)),React.createElement(StatusBadge,{tone:a.tone,size:"sm"},a.label),React.createElement(Icon,{n:t?"check":"plus",s:16}))}),h.length===0?React.createElement("div",{style:{padding:20,textAlign:"center",color:"var(--text-subtle)",fontSize:"var(--text-sm)"}},s.length===0?'ยังไม่มีของสิ้นเปลืองในคลัง (เพิ่มได้ที่หน้าจัดการรายการยา โดยเลือกประเภท "ของใช้สิ้นเปลือง")':"ไม่พบรายการ"):null)),React.createElement(Card,{padding:"md"},React.createElement("h3",{style:{fontSize:"var(--text-lg)",fontWeight:600,marginBottom:14}},"คำขอเบิกล่าสุด"),React.createElement(DataTable,{columns:[{key:"date",header:"วันที่ / เวลา"},{key:"items",header:"รายการ",wrap:!0,render:e=>e.items.map(t=>`${t.name} ×${t.qty}`).join(", ")},{key:"purpose",header:"วัตถุประสงค์",wrap:!0},{key:"status",header:"สถานะ",render:e=>{const t=window.REMEDE.requestStatus(e.status);return React.createElement(StatusBadge,{tone:t.tone,size:"sm"},t.label)}}],rows:E,empty:"ยังไม่มีคำขอเบิก"}))),React.createElement(Card,{padding:"none",style:{position:"sticky",top:24,overflow:"hidden"}},React.createElement("div",{style:{padding:"16px 20px",borderBottom:"1px solid var(--border-subtle)",display:"flex",alignItems:"center",justifyContent:"space-between"}},React.createElement("h3",{style:{fontSize:"var(--text-lg)",fontWeight:600}},"รายการที่จะเบิก"),React.createElement(StatusBadge,{tone:"info",dot:!1},n.length," รายการ")),React.createElement("div",{style:{padding:n.length?"8px 12px":"32px 20px",display:"flex",flexDirection:"column",gap:4,minHeight:120}},n.length===0?React.createElement("div",{style:{textAlign:"center",color:"var(--text-subtle)",fontSize:"var(--text-sm)"}},"ยังไม่ได้เลือกของ",React.createElement("br",null),"เลือกจากรายการทางซ้าย"):n.map(e=>{const t=s.find(a=>a.id===e.id);return t?React.createElement("div",{key:e.id,style:{display:"flex",alignItems:"center",gap:10,padding:"10px 8px",borderBottom:"1px solid var(--border-subtle)"}},React.createElement("div",{style:{flex:1,minWidth:0}},React.createElement("div",{style:{fontWeight:500,fontSize:"var(--text-sm)",color:"var(--text-strong)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},t.name),React.createElement("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-subtle)"}},"คงเหลือ ",t.stock," ",t.unit)),React.createElement(QuantityStepper,{value:e.qty,onChange:a=>C(e.id,a),min:1,max:t.stock,unit:t.unit}),React.createElement(IconButton,{label:"ลบ",size:"sm",onClick:()=>D(e.id)},React.createElement(Icon,{n:"x",s:16}))):null})),React.createElement("div",{style:{padding:"16px 20px",background:"var(--neutral-50)",borderTop:"1px solid var(--border-subtle)",display:"flex",flexDirection:"column",gap:12}},React.createElement(TextField,{label:"วัตถุประสงค์ / หมายเหตุ",value:p,onChange:e=>d(e.target.value),placeholder:"เช่น ใช้ในห้องหัตถการ 2"}),React.createElement(Button,{block:!0,size:"lg",disabled:!M,onClick:()=>o(!0),iconLeft:React.createElement(Icon,{n:"send",s:16})},"ส่งคำขอเบิก")))),React.createElement(Dialog,{open:g,onClose:()=>o(!1),tone:"warning",title:"ส่งคำขอเบิก",description:`ส่งคำขอเบิก ${n.length} รายการ ให้หลังบ้านตรวจนับและอนุมัติ — ยังไม่ตัดสต๊อกจนกว่าจะได้รับอนุมัติ`,footer:React.createElement(React.Fragment,null,React.createElement(Button,{variant:"ghost",onClick:()=>o(!1)},"ยกเลิก"),React.createElement(Button,{variant:"secondary",onClick:z,iconLeft:React.createElement(Icon,{n:"send",s:16})},"ส่งคำขอ"))}),React.createElement(Dialog,{open:m,tone:"default",title:"ส่งคำขอเรียบร้อยแล้ว",description:"คำขอเบิกถูกส่งให้หลังบ้านแล้ว รอการตรวจนับและอนุมัติ"}))}window.StockIssue=StockIssue;
