const{PageHeader,Card,TextField,Select,Button,DataTable,StatusBadge,Dialog,Tag,SearchField}=window.RemedeStockDesignSystem_3e957a,MIcon=window.REMEDE.Icon,UNITS=["ขวด","กล่อง","หลอด","ชุด","อัน","แพ็ค","หน่วย"],KIND_OPTIONS=[{value:"drug",label:"ยา / เวชภัณฑ์"},{value:"consumable",label:"ของใช้สิ้นเปลือง"}];function emptyForm(){return{name:"",cat:"",unit:"ขวด",kind:"drug",stock:"",low:"",price:"",lot:"",exp:""}}function MedicineManage(){const{statusOf:j}=window.REMEDE,[r,m]=React.useState(""),[n,c]=React.useState(emptyForm()),[o,y]=React.useState(null),[u,g]=window.REMEDE.useFlash(""),[E,f]=React.useState(""),I=window.REMEDE.useSaveGuard(),k=(window.REMEDE.profile||{}).role,B=k==="admin"||k==="backend",{data:l,loading:R,error:v,reload:w}=window.REMEDE.useAsyncData(()=>window.REMEDE.getMedicines(),{initial:[],errorMessage:"โหลดรายการยาไม่สำเร็จ"}),[i,d]=React.useState(null),[p,M]=React.useState(""),[h,S]=React.useState(""),[b,s]=React.useState(""),A=window.REMEDE.useSaveGuard(),T=e=>{d(e),M(String(e.stock)),S(""),s("")},L=()=>A(async()=>{if(!i)return;const e=window.REMEDE.validateStockAdjust(p,h);if(e){s(e);return}s("");try{await window.REMEDE.adjustStock(i.id,Number(p),h.trim()),d(null),await w(),g("ปรับสต๊อกเรียบร้อยแล้ว")}catch(t){s(t.message||"ปรับสต๊อกไม่สำเร็จ")}});window.REMEDE.useLucide([l,r,u,o,R,v,E]);const a=e=>t=>c(F=>({...F,[e]:t&&t.target?t.target.value:t})),N=window.REMEDE.canSaveMedicine(n),D=r.trim(),x=window.REMEDE.searchRows(l,D,["name","cat","lot"]),z=e=>{y(e.id),c({name:e.name,cat:e.cat||"",unit:e.unit,kind:e.kind||"drug",stock:String(e.stock),low:String(e.low??""),price:String(e.price??""),lot:e.lot||"",exp:e.exp||""})},C=()=>{y(null),c(emptyForm())},q=()=>I(async()=>{f("");const e=window.REMEDE.buildMedicinePayload(n);try{o?(await window.REMEDE.updateMedicine(o,e),g("บันทึกการแก้ไขรายการยาเรียบร้อยแล้ว")):(await window.REMEDE.addMedicine(e),g("เพิ่มรายการยาใหม่เรียบร้อยแล้ว")),C(),await w()}catch(t){f(t.message||"บันทึกรายการยาไม่สำเร็จ กรุณาลองใหม่")}});return React.createElement("div",{style:{maxWidth:"var(--content-max)"}},React.createElement(PageHeader,{eyebrow:"คลังยา",title:"จัดการรายการยา",description:"เพิ่มรายการยาใหม่ หรือปรับปรุงหน่วย หมวดหมู่ ล็อต และวันหมดอายุของรายการเดิม"}),React.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1.4fr",gap:"var(--space-6)",marginTop:"var(--space-7)",alignItems:"start"}},React.createElement(Card,{padding:"md",style:{position:"sticky",top:"var(--space-6)"}},React.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:16}},React.createElement("h3",{style:{fontSize:"var(--text-lg)",fontWeight:600}},o?"แก้ไขรายการยา":"เพิ่มรายการยาใหม่"),o?React.createElement(Button,{variant:"ghost",size:"sm",onClick:C},"ยกเลิกการแก้ไข"):null),React.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},React.createElement(TextField,{label:"ชื่อยา / เวชภัณฑ์",required:!0,value:n.name,onChange:a("name"),placeholder:"เช่น Botox 100u"}),React.createElement(TextField,{label:"หมวดหมู่",value:n.cat,onChange:a("cat"),placeholder:"เช่น Injectable · Botulinum"}),React.createElement(Select,{label:"ประเภท",required:!0,value:n.kind,onChange:a("kind"),options:KIND_OPTIONS,hint:"ของใช้สิ้นเปลืองจะเบิกได้ที่หน้า “เบิกของใช้” โดยไม่ผูกคนไข้"}),React.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12}},React.createElement(Select,{label:"หน่วย / ยูนิต",required:!0,value:n.unit,onChange:a("unit"),options:UNITS.map(e=>({value:e,label:e}))}),React.createElement(TextField,{label:"ราคา/หน่วย",value:n.price,onChange:a("price"),placeholder:"0"})),React.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12}},o?React.createElement(TextField,{label:"คงเหลือปัจจุบัน",value:n.stock,disabled:!0,hint:"ปรับผ่านหน้ารับเข้า/ตัดสต๊อกเท่านั้น"}):React.createElement(TextField,{label:"จำนวนคงเหลือ",required:!0,value:n.stock,onChange:a("stock"),placeholder:"0"}),React.createElement(TextField,{label:"จุดสั่งเพิ่ม (ใกล้หมด)",value:n.low,onChange:a("low"),placeholder:"0"})),React.createElement(TextField,{label:"เลขที่ล็อต (Lot no.)",value:n.lot,onChange:a("lot"),placeholder:"LOT-0000-A",iconLeft:React.createElement(MIcon,{n:"hash",s:16})}),React.createElement(TextField,{label:"วันหมดอายุ",required:!0,value:n.exp,onChange:a("exp"),placeholder:"MM/YY",iconLeft:React.createElement(MIcon,{n:"calendar",s:16}),hint:"วันที่รับเข้าบันทึกที่หน้า “รับเข้าสต๊อก” พร้อมล็อตและผู้จำหน่าย"}),React.createElement(Button,{block:!0,size:"lg",disabled:!N,onClick:q,iconLeft:React.createElement(MIcon,{n:o?"save":"plus",s:16})},o?"บันทึกการแก้ไข":"เพิ่มรายการยา"),E?React.createElement(window.REMEDE.InlineNote,{tone:"danger"},E):null,u?React.createElement(window.REMEDE.InlineNote,null,u):null)),React.createElement("div",null,React.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginBottom:14,flexWrap:"wrap"}},React.createElement("h3",{style:{fontSize:"var(--text-lg)",fontWeight:600}},"รายการยาทั้งหมด · คลิกเพื่อแก้ไข"),React.createElement("span",{style:{fontSize:"var(--text-xs)",color:"var(--text-subtle)"}},D?`พบ ${x.length} จาก ${l.length} รายการ`:`${l.length} รายการ`)),React.createElement("div",{style:{marginBottom:14}},React.createElement(SearchField,{value:r,onChange:e=>m(e.target.value),onClear:()=>m(""),placeholder:"ค้นหาชื่อยา / หมวดหมู่ / เลขที่ล็อต"})),R?React.createElement(Card,{padding:"md"},React.createElement(window.REMEDE.LoadingState,null)):v?React.createElement(Card,{padding:"md"},React.createElement(window.REMEDE.ErrorState,{message:v,onRetry:w})):React.createElement(DataTable,{columns:[{key:"name",header:"รายการ",render:e=>React.createElement("div",null,React.createElement("div",{style:{fontWeight:500,color:"var(--text-strong)"}},e.name),React.createElement("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-subtle)"}},e.cat))},{key:"kind",header:"ประเภท",render:e=>React.createElement(Tag,{tone:e.kind==="consumable"?"neutral":"navy"},e.kind==="consumable"?"สิ้นเปลือง":"ยา")},{key:"stock",header:"คงเหลือ",align:"right",mono:!0},{key:"exp",header:"หมดอายุ",mono:!0},{key:"status",header:"สถานะ",render:e=>{const t=j(e);return React.createElement(StatusBadge,{tone:t.tone},t.label)}},...B?[{key:"adj",header:"",align:"right",render:e=>React.createElement(Button,{variant:"ghost",size:"sm",onClick:t=>{t.stopPropagation(),T(e)},iconLeft:React.createElement(MIcon,{n:"sliders-horizontal",s:15})},"ปรับสต๊อก")}]:[]],rows:x,onRowClick:z,empty:l.length===0?"ยังไม่มีรายการยา":"ไม่พบรายการที่ค้นหา"}))),React.createElement(Dialog,{open:!!i,onClose:()=>d(null),tone:"warning",title:"ปรับสต๊อก",description:i?`${i.name} — คงเหลือปัจจุบัน ${i.stock} ${i.unit}`:"",footer:React.createElement(React.Fragment,null,React.createElement(Button,{variant:"ghost",onClick:()=>d(null)},"ยกเลิก"),React.createElement(Button,{variant:"secondary",onClick:L,iconLeft:React.createElement(MIcon,{n:"check",s:16})},"บันทึกการปรับ"))},React.createElement("div",{style:{display:"flex",flexDirection:"column",gap:14}},React.createElement(TextField,{label:"ยอดคงเหลือใหม่",required:!0,value:p,onChange:e=>M(e.target.value.replace(/[^0-9]/g,"")),placeholder:"0",iconLeft:React.createElement(MIcon,{n:"hash",s:16})}),React.createElement(TextField,{label:"เหตุผลการปรับ",required:!0,value:h,onChange:e=>S(e.target.value),placeholder:"เช่น นับสต๊อกจริงรอบเดือน / ของเสียหาย / หมดอายุ"}),b?React.createElement(window.REMEDE.InlineNote,{tone:"danger"},b):null,React.createElement("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-subtle)"}},"ระบบจะบันทึกประวัติการปรับ (ก่อน→หลัง + เหตุผล + ผู้ปรับ) ไว้เพื่อการตรวจสอบ"))))}window.MedicineManage=MedicineManage;
