{"id":9619,"date":"2025-06-12T13:00:45","date_gmt":"2025-06-12T04:00:45","guid":{"rendered":"http:\/\/ibms.co.kr\/?page_id=9619"},"modified":"2026-01-07T13:38:20","modified_gmt":"2026-01-07T04:38:20","slug":"%ec%8b%9c%ed%97%98%ed%8e%b8%ec%9a%94%ec%b2%ad","status":"publish","type":"page","link":"http:\/\/ibms.co.kr\/?page_id=9619","title":{"rendered":"\uc2dc\ud5d8\ud3b8 \uc694\uccad"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"9619\" class=\"elementor elementor-9619\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-64c0786d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"64c0786d\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3a8ab4ac\" data-id=\"3a8ab4ac\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-345e9a7d elementor-widget elementor-widget-text-editor\" data-id=\"345e9a7d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-22ed978 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"22ed978\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ab1b672\" data-id=\"ab1b672\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d99eb6a elementor-widget elementor-widget-text-editor\" data-id=\"d99eb6a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>\uc2dc\ud5d8\ud3b8 \uc694\uccad<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-059a202 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"059a202\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b599174\" data-id=\"b599174\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-037fe7f elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"037fe7f\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n\n\/* ====== \uae30\ubcf8 \ud14c\uc774\ube14 \ub808\uc774\uc544\uc6c3 ====== *\/\n\n#rebar-form-table{width:1600px;max-width:100%;border-collapse:collapse;table-layout:fixed;margin:0 auto}\n\n\/* \ub370\uc2a4\ud06c\ud1b1 \uceec\ub7fc \ud3ed (1600px \uae30\uc900) *\/\n\n#rebar-form-table col.col-company{width:120px}\n\n#rebar-form-table col.col-company-manager{width:90px}\n\n#rebar-form-table col.col-company-contact{width:110px}\n\n#rebar-form-table col.col-construction{width:100px}\n\n#rebar-form-table col.col-address{width:150px}\n\n#rebar-form-table col.col-grade{width:90px}\n\n#rebar-form-table col.col-coupler{width:110px}\n\n#rebar-form-table col.col-spec{width:100px}\n\n#rebar-form-table col.col-length{width:100px}\n\n#rebar-form-table col.col-bending{width:85px}\n\n#rebar-form-table col.col-qty{width:70px}\n\n#rebar-form-table col.col-request{width:120px}\n\n#rebar-form-table col.col-pass{width:85px}\n\n#rebar-form-table col.col-actions{width:65px}\n\n#rebar-form-table th{background:#ECECEC;padding:8px;font-size:13px;text-align:left;white-space:nowrap}\n\n#rebar-form-table td{padding:6px;vertical-align:top;font-size:13px}\n\n#rebar-form-table input,#rebar-form-table select{\n\nwidth:100%;box-sizing:border-box;padding:6px;height:34px;font-size:13px;\n\n}\n\n.th-due{background:#fff4b8!important}\n\n.th-ship{background:#d6e7ff!important}\n\n\/* \uc218\ub7c9 \ud544\ub4dc - SET \ub2e8\uc704 \uc81c\uac70\ub428 *\/\n\n\/* (+)(-) \ud589 \ucd94\uac00\/\uc0ad\uc81c \ubc84\ud2bc \ub192\uc774 \ud1b5\uc77c + \ud30c\ub791 \ud1a4 *\/\n\n.action-buttons{display:flex;justify-content:center;align-items:center;gap:6px;white-space:nowrap}\n\n.action-buttons button{\n\nwidth:32px;height:34px;line-height:32px;padding:0;box-sizing:border-box;\n\nborder:1px solid #006BE0 !important;\n\nbackground:transparent !important;\n\ncolor:#006BE0 !important;\n\ncursor:pointer;border-radius:4px;transition:.15s;\n\n}\n\n.action-buttons button:hover{\n\nbackground:#006BE0 !important;\n\nborder-color:#0057c7 !important;\n\ncolor:#fff !important;\n\n}\n\n\/* ====== \ub9ac\uc2a4\ud2b8 \uc601\uc5ed \uacf5\ud1b5 ====== *\/\n\n#rebar-list table tr td:last-child{white-space:nowrap}\n\n\/* \uc77c\ubc18 \uc791\uc5c5 \ubc84\ud2bc (\uc0ad\uc81c \uc544\ub2cc \ubaa8\ub4e0 \ubc84\ud2bc\/\ub9c1\ud06c) : \ud30c\ub791 \ud1a4 *\/\n\n#rebar-list table tr td:last-child button:not([onclick^=\"deleteOrder(\"]),\n\n#rebar-list table tr td:last-child a:not([onclick^=\"deleteOrder(\"]) {\n\ndisplay:inline-block;\n\nheight:28px; line-height:26px; padding:0 8px; margin-right:4px;\n\nfont-size:12px; border-radius:4px; cursor:pointer; transition:.15s;\n\nborder:1px solid #006BE0 !important;\n\nbackground:transparent !important;\n\ncolor:#006BE0 !important;\n\ntext-decoration:none;\n\n}\n\n#rebar-list table tr td:last-child button:not([onclick^=\"deleteOrder(\"]):hover,\n\n#rebar-list table tr td:last-child a:not([onclick^=\"deleteOrder(\"]):hover {\n\nbackground:#006BE0 !important;\n\nborder-color:#0057c7 !important;\n\ncolor:#fff !important;\n\n}\n\n#rebar-list table tr td:last-child button:last-child{margin-right:0}\n\n\/* \uc0ad\uc81c \ubc84\ud2bc \uc804\uc6a9 (deleteOrder) : \ud30c\ub791 \ud1a4 *\/\n\n#rebar-list table tr td:last-child a[onclick^=\"deleteOrder(\"],\n\n#rebar-list table tr td:last-child button[onclick^=\"deleteOrder(\"]{\n\ndisplay:inline-block;\n\nheight:28px; line-height:26px; padding:0 8px; margin-right:4px;\n\nfont-size:12px; border-radius:4px; cursor:pointer; transition:.15s;\n\nborder:1px solid #006BE0 !important;\n\nbackground:transparent !important;\n\ncolor:#006BE0 !important;\n\ntext-decoration:none;\n\n}\n\n#rebar-list table tr td:last-child a[onclick^=\"deleteOrder(\"]:hover,\n\n#rebar-list table tr td:last-child button[onclick^=\"deleteOrder(\"]:hover{\n\nbackground:#006BE0 !important;\n\nborder-color:#0057c7 !important;\n\ncolor:#fff !important;\n\n}\n\n\/* ====== \ubc18\uc751\ud615 ====== *\/\n\n@media (min-width:769px) and (max-width:1024px){\n\n#rebar-form-table{display:block}\n\n#rebar-form-table thead{display:none}\n\n#rebar-form-table tbody{display:block}\n\n#rebar-form-table tr{display:flex;flex-wrap:wrap;border:1px solid #eee;margin-bottom:10px}\n\n#rebar-form-table td{display:block;width:50%}\n\n#rebar-form-table td::before{\n\ncontent:attr(data-label);display:inline-block;font-weight:bold;margin-bottom:3px;\n\npadding:2px 6px;border-radius:4px;background:#f0f0f0\n\n}\n\n#rebar-form-table td.lab-due::before{background:#fff4b8}\n\n#rebar-form-table td.lab-ship::before{background:#d6e7ff}\n\n.action-buttons{justify-content:flex-start}\n\n}\n\n@media (max-width:768px){\n\n#rebar-form-table{display:block} #rebar-form-table thead{display:none}\n\n#rebar-form-table tbody{display:block}\n\n#rebar-form-table tr{display:block;margin-bottom:12px;border:1px solid #eee}\n\n#rebar-form-table td{display:block;width:100%}\n\n#rebar-form-table td::before{\n\ncontent:attr(data-label);display:inline-block;font-weight:bold;margin-bottom:3px;\n\npadding:2px 6px;border-radius:4px;background:#f0f0f0\n\n}\n\n#rebar-form-table td.lab-due::before{background:#fff4b8}\n\n#rebar-form-table td.lab-ship::before{background:#d6e7ff}\n\n.action-buttons{justify-content:flex-start}\n\n}\n\n\/* ====== \ud3fc \ud558\ub2e8 \ub4f1\ub85d\/\ud589\ucd08\uae30\ud654 \ubc84\ud2bc ====== *\/\n\n.form-submit-wrapper{display:flex;gap:8px;justify-content:flex-end;margin:10px 0 30px}\n\n.form-submit-wrapper button,\n\n.form-submit-wrapper a {\n\ndisplay:inline-block;\n\nheight:34px; line-height:32px; padding:0 12px;\n\nborder:1px solid #006BE0 !important;\n\nbackground:transparent !important;\n\ncolor:#006BE0 !important;\n\nborder-radius:6px; cursor:pointer; transition:.15s; text-decoration:none;\n\n}\n\n.form-submit-wrapper button:hover,\n\n.form-submit-wrapper a:hover {\n\nbackground:#006BE0 !important;\n\nborder-color:#0057c7 !important;\n\ncolor:#fff !important;\n\n}\n\n\/* ====== \uad00\ub9ac\uc790 \uc77c\uad04 \ubc84\ud2bc(\uc218\uc815\ud558\uae30\/\uc120\ud0dd\uacb0\uc81c\ubcc0\uacbd\/\uc720\uc0c1\/\ubb34\uc0c1\/\uc120\ud0dd\uc0ad\uc81c \ub4f1) ====== *\/\n\n#bulk-actions{display:none;margin:12px 0 6px;gap:8px;flex-wrap:wrap}\n\n#bulk-actions .row{display:flex;gap:8px;align-items:center}\n\n\/* \ubc84\ud2bc\/\ub9c1\ud06c\/\uc778\ud48b \ubaa8\ub450 \ud30c\ub791\uc73c\ub85c *\/\n\n#bulk-actions button,\n\n#bulk-actions a,\n\n#bulk-actions input[type=\"button\"],\n\n#bulk-actions input[type=\"submit\"] {\n\ndisplay:inline-block;\n\nheight:30px; line-height:28px; padding:0 10px; margin-right:6px;\n\nborder:1px solid #006BE0 !important;\n\nbackground:transparent !important;\n\ncolor:#006BE0 !important;\n\nborder-radius:6px; cursor:pointer; transition:.15s; text-decoration:none;\n\n}\n\n#bulk-actions button:hover,\n\n#bulk-actions a:hover,\n\n#bulk-actions input[type=\"button\"]:hover,\n\n#bulk-actions input[type=\"submit\"]:hover {\n\nbackground:#006BE0 !important;\n\nborder-color:#0057c7 !important;\n\ncolor:#fff !important;\n\n}\n\n\/* \ud639\uc2dc \uc601\uc5ed \ubc16\uc5d0 \uc788\ub294 \uc218\uc815 \ubc84\ud2bc\ub3c4 \ucee4\ubc84(\ubcf4\uac15) *\/\n\n#rebar-wrap [onclick*=\"update\"],\n\n#rebar-wrap [onclick*=\"bulk_update\"],\n\n#rebar-wrap [data-action=\"update\"] {\n\nborder:1px solid #006BE0 !important;\n\nbackground:transparent !important;\n\ncolor:#006BE0 !important;\n\n}\n\n#rebar-wrap [onclick*=\"update\"]:hover,\n\n#rebar-wrap [onclick*=\"bulk_update\"]:hover,\n\n#rebar-wrap [data-action=\"update\"]:hover {\n\nbackground:#006BE0 !important;\n\nborder-color:#0057c7 !important;\n\ncolor:#fff !important;\n\n}\n\n\/* ====== \ud398\uc774\uc9c0\ub124\uc774\uc158(<< 1 2 3 >>) ====== *\/\n\n#rebar-pagination a, #rebar-pagination span,\n\n.pagination a, .pagination span {\n\ndisplay:inline-block; min-width:30px; text-align:center;\n\nheight:30px; line-height:28px; margin:0 3px;\n\nborder:1px solid #006BE0 !important;\n\ncolor:#006BE0 !important;\n\nbackground:transparent !important;\n\nborder-radius:6px; text-decoration:none; transition:.15s;\n\n}\n\n#rebar-pagination a:hover, .pagination a:hover,\n\n#rebar-pagination span.current, .pagination .current {\n\nbackground:#006BE0 !important;\n\nborder-color:#0057c7 !important;\n\ncolor:#fff !important;\n\n}\n\n\/* ====== \uac80\uc0c9\/\ucd08\uae30\ud654 \ubc84\ud2bc ====== *\/\n\n#rebar-search{margin:8px 0 0;padding:8px;background:#f7f7f7;border:1px solid #e2e2e2}\n\n#rebar-search .row{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}\n\n#rebar-search select{flex:0 0 90px;padding:4px 6px;height:30px;font-size:12px}\n\n#rebar-search input{flex:1 1 200px;min-width:150px;max-width:250px;padding:4px 6px;height:30px;font-size:12px}\n\n#rebar-search button{flex:0 0 auto;padding:4px 8px;height:30px;font-size:12px}\n\n@media (max-width:768px){\n\n#rebar-search .row{flex-wrap:wrap}\n\n#rebar-search select,#rebar-search input,#rebar-search button{flex:1 1 100%}\n\n}\n\n#rebar-search button,\n\n#rebar-search a {\n\ndisplay:inline-block;\n\nheight:30px; line-height:28px; padding:0 10px;\n\nborder:1px solid #006BE0 !important;\n\nbackground:transparent !important;\n\ncolor:#006BE0 !important;\n\nborder-radius:4px; cursor:pointer; transition:.15s; text-decoration:none;\n\nfont-size:12px;\n\n}\n\n#rebar-search button:hover,\n\n#rebar-search a:hover {\n\nbackground:#006BE0 !important;\n\nborder-color:#0057c7 !important;\n\ncolor:#fff !important;\n\n}\n\n\/* \ud558\ub2e8 \uc5ec\ubc31 *\/\n\n#rebar-search { margin: 8px 0 100px; padding:8px; background:#f7f7f7; border:1px solid #e2e2e2; }\n\n#rebar-form-table th,\n\n#rebar-list table th {\n\ntext-align: center !important;\n\nvertical-align: middle;\n\nfont-size: 13px !important;\n\n}\n\n\/* \ucd9c\ud558\uc608\uc815\uc77c \ud544\ub4dc\ub294 \uc81c\uac70\ub428 *\/\n\n\/* \ucc38\uace0\uc0ac\ud56d \uc2a4\ud0c0\uc77c *\/\n\n.form-notice{margin-bottom:15px;padding:10px;background:#fff9e6;border-left:3px solid #ff9800;font-size:13px;line-height:1.6}\n\n.form-notice strong{color:#d84315;font-size:13px}\n\n<\/style>\n\n<!-- \ucc38\uace0\uc0ac\ud56d -->\n\n<div class=\"form-notice\">\n\n<strong>\uc2dc\ud5d8\ud3b8 \uc694\uccad\uc2dc \ucc38\uace0\uc0ac\ud56d<\/strong><br>\n\n\uc0c1\ud638\uba85, \ub2f4\ub2f9\uc790, \uc5f0\ub77d\ucc98, \uc6d0\uccad\uc0ac, \ud604\uc7a5\uba85, \ud604\uc7a5\uc8fc\uc18c\ub97c \uc785\ub825\ud55c \ub4a4 \uc624\ub978\ucabd\uc758 '+' \ubc84\ud2bc\uc744 \ub204\ub974\uc2dc\uba74 \uc785\ub825\ud55c \ub0b4\uc6a9\uc774 \uadf8\ub300\ub85c \ubcf5\uc0ac\ub418\uc5b4 \ub2e4\uc74c \ud589\uc5d0\ub3c4 \uc790\ub3d9\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4.\n\n<\/div>\n\n<!-- \uc785\ub825 \ud3fc -->\n\n<form id=\"rebar-form\" novalidate onsubmit=\"submitRebarForm(event)\">\n\n<table id=\"rebar-form-table\">\n\n<colgroup>\n\n<col class=\"col-company\"><col class=\"col-company-manager\"><col class=\"col-company-contact\">\n\n<col class=\"col-construction\"><col class=\"col-address\">\n\n<col class=\"col-grade\"><col class=\"col-coupler\"><col class=\"col-spec\"><col class=\"col-length\"><col class=\"col-bending\"><col class=\"col-qty\">\n\n<col class=\"col-request\"><col class=\"col-pass\"><col class=\"col-actions\">\n\n<\/colgroup>\n\n<thead>\n\n<tr>\n\n<th>\uc0c1\ud638\uba85<\/th><th>\ub2f4\ub2f9\uc790<\/th><th>\uc5f0\ub77d\ucc98<\/th>\n\n<th>\uc6d0\uccad\uc0ac<\/th>\n\n<th>\ud604\uc7a5\uba85\/\ud604\uc7a5\uc8fc\uc18c<\/th>\n\n<th>\ucca0\uadfc\uac15\uc885<\/th><th>\ucee4\ud50c\ub7ec \uc885\ub958<\/th><th>\ucca0\uadfc \uc9c1\uacbd(\u00d8)<\/th><th>\ucca0\uadfc \uae38\uc774(mm)<\/th><th>\uac00\uacf5\ud615\uc2dd<\/th><th>\uc218\ub7c9<\/th>\n\n<th>\uc694\uccad\uc0ac\ud56d<\/th><th>\ube44\ubc00\ubc88\ud638<\/th><th>\ud589<\/th>\n\n<\/tr>\n\n<\/thead>\n\n<tbody id=\"form-body\">\n\n<tr>\n\n<td data-label=\"\uc0c1\ud638\uba85\"><input name=\"company_name[]\" required><\/td>\n\n<td data-label=\"\ub2f4\ub2f9\uc790\"><input name=\"company_manager[]\"><\/td>\n\n<td data-label=\"\uc5f0\ub77d\ucc98\"><input name=\"company_contact[]\" required><\/td>\n\n<td data-label=\"\uc6d0\uccad\uc0ac\"><input name=\"construction_company[]\"><\/td>\n\n<td data-label=\"\ud604\uc7a5\uba85\/\ud604\uc7a5\uc8fc\uc18c\"><input name=\"site_address[]\" required><\/td>\n\n<td data-label=\"\ucca0\uadfc\uac15\uc885\">\n\n<select name=\"steel_grade[]\" required>\n\n<option value=\"\">\uc120\ud0dd<\/option><option>SD300<\/option><option>SD400<\/option><option>SD500<\/option><option>SD600<\/option><option>SD700<\/option><option>SD400 W<\/option><option>SD500 W<\/option><option>SD400 S<\/option><option>SD500 S<\/option><option>SD600 S<\/option>\n\n<\/select>\n\n<\/td>\n\n<td data-label=\"\ucee4\ud50c\ub7ec \uc885\ub958\">\n\n<select name=\"coupler_type[]\">\n\n<option value=\"\">\uc120\ud0dd<\/option><option>\ubc14\ucee4\ud50c\ub7ec<\/option><option>\uc774\ud615\ucee4\ud50c\ub7ec<\/option><option>\uc6a9\uc811\uc6a9<\/option><option>\uc815\ucc29\uc6a9(\uc8fc\ucca0\uadfc)<\/option><option>\uc815\ucc29\uc6a9(\uc804\ub2e8)<\/option><option>\ud3fc\uc138\uc774\ubc84<\/option><option>\uae30\ud0c0<\/option>\n\n<\/select>\n\n<\/td>\n\n<td data-label=\"\ucca0\uadfc \uc9c1\uacbd(\u00d8)\"><input name=\"spec[]\" required><\/td>\n\n<td data-label=\"\ucca0\uadfc \uae38\uc774(mm)\"><input name=\"length[]\" required placeholder=\"mm\"><\/td>\n\n<td data-label=\"\uac00\uacf5\ud615\uc2dd\">\n\n<select name=\"bending_type[]\" required>\n\n<option value=\"\">\uc120\ud0dd<\/option><option>A+A<\/option><option>A+B<\/option><option>A+C<\/option>\n\n<\/select>\n\n<\/td>\n\n<td data-label=\"\uc218\ub7c9\">\n\n<input name=\"quantity[]\" type=\"number\" min=\"0\" required>\n\n<\/td>\n\n<td data-label=\"\uc694\uccad\uc0ac\ud56d\"><input name=\"request_note[]\" type=\"text\"><\/td>\n\n<td data-label=\"\ube44\ubc00\ubc88\ud638\"><input name=\"password[]\" type=\"password\" required><\/td>\n\n<td class=\"action-buttons\" data-label=\"\ud589\">\n\n<button type=\"button\" onclick=\"addRow()\">+<\/button>\n\n<button type=\"button\" onclick=\"removeRow(this)\">-<\/button>\n\n<\/td>\n\n<input type=\"hidden\" name=\"unit_price[]\" value=\"0\">\n\n<input type=\"hidden\" name=\"due_date[]\" value=\"\">\n\n<\/tr>\n\n<\/tbody>\n\n<\/table>\n\n<div class=\"form-submit-wrapper\">\n\n<button type=\"submit\">\ub4f1\ub85d<\/button>\n\n<button type=\"button\" onclick=\"resetFormToOneRow()\">\ud589 \ucd08\uae30\ud654<\/button>\n\n<\/div>\n\n<\/form>\n\n<!-- \ub4f1\ub85d \ub9ac\uc2a4\ud2b8 -->\n\n<div id=\"rebar-list\">\ub85c\ub529 \uc911...<\/div>\n\n<!-- (\uad00\ub9ac\uc790 \uc804\uc6a9) \uc77c\uad04 \uae30\ub2a5 -->\n\n<div id=\"bulk-actions\" class=\"row\">\n\n<button type=\"button\" onclick=\"bulkToggleStatusSelected()\">\uc120\ud0dd \uacb0\uc81c\ubcc0\uacbd(\uc720\uc0c1\u2194\ubb34\uc0c1)<\/button>\n\n<button type=\"button\" onclick=\"bulkDeleteSelected()\">\uc120\ud0dd \uc0ad\uc81c<\/button>\n\n<\/div>\n\n<!-- \uac80\uc0c9(\ub9ac\uc2a4\ud2b8 \uc544\ub798) -->\n\n<div id=\"rebar-search\">\n\n<div class=\"row\">\n\n<select id=\"q_field\" aria-label=\"\uac80\uc0c9 \ud544\ub4dc\">\n\n<option value=\"company\">\uc0c1\ud638\uba85<\/option>\n\n<option value=\"manager\">\ub2f4\ub2f9\uc790<\/option>\n\n<option value=\"site\">\ud604\uc7a5\uba85<\/option>\n\n<\/select>\n\n<input id=\"q_value\" placeholder=\"\uac80\uc0c9\uc5b4\ub97c \uc785\ub825\ud558\uc138\uc694\">\n\n<button type=\"button\" onclick=\"searchList()\">\uac80\uc0c9<\/button>\n\n<button type=\"button\" onclick=\"resetSearch()\">\ucd08\uae30\ud654<\/button>\n\n<\/div>\n\n<\/div>\n\n<!-- \ube44\ud68c\uc6d0 \uc0ad\uc81c \ube44\ubc00\ubc88\ud638 \ud328\ub110 -->\n\n<div id=\"guest-delete-panel\" style=\"display:none;margin-top:12px;padding:10px;border:1px solid #ddd;background:#f9f9f9\">\n\n<form id=\"guest-delete-form\" onsubmit=\"return submitGuestDelete(event)\">\n\n<input type=\"hidden\" id=\"guest-delete-id\">\n\n<label for=\"guest-delete-pw\">\uae00 \uc0ad\uc81c \ube44\ubc00\ubc88\ud638<\/label>\n\n<input type=\"password\" id=\"guest-delete-pw\" placeholder=\"\uae00 \uc791\uc131 \uc2dc \uc785\ub825\ud55c \ube44\ubc00\ubc88\ud638\" required>\n\n<span style=\"display:inline-flex;gap:6px;margin-left:8px\">\n\n<button type=\"submit\">\uc0ad\uc81c\ud558\uae30<\/button>\n\n<button type=\"button\" onclick=\"cancelGuestDelete()\">\ucde8\uc18c<\/button>\n\n<\/span>\n\n<\/form>\n\n<\/div>\n\n<script>\n\n\/* =========================\n\n   \ub0a9\uae30\uc694\uccad\uc77c: \uacfc\uac70\uc77c \uc120\ud0dd \ubc29\uc9c0\n\n========================= *\/\n\nfunction todayYMD(){\n\n  const d = new Date();\n\n  const y = d.getFullYear();\n\n  const m = String(d.getMonth()+1).padStart(2,'0');\n\n  const day = String(d.getDate()).padStart(2,'0');\n\n  return y + '-' + m + '-' + day;\n\n}\n\nfunction enforceDueMin(root){\n\n  const ctx = root || document;\n\n  const min = todayYMD();\n\n  ctx.querySelectorAll('input[name=\"due_date[]\"]').forEach(function(inp){\n\n    inp.setAttribute('min', min);\n\n    if (!inp.dataset.boundMin) {\n\n      inp.addEventListener('change', function(){\n\n        if (this.value && this.value < min) {\n\n          alert('\uacfc\uac70\uc77c\uc790\ub294 \uc120\ud0dd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.');\n\n          this.value = '';\n\n          this.focus();\n\n        }\n\n      });\n\n      inp.dataset.boundMin = '1';\n\n    }\n\n  });\n\n}\n\n\/* =========================\n\n   \ud589 \ucd94\uac00\/\uc0ad\uc81c\n\n========================= *\/\n\nfunction addRow(){\n\n  const tbody = document.getElementById('form-body');\n\n  const firstRow = tbody.querySelector('tr');\n\n  const newRow = firstRow.cloneNode(true);\n\n  \/\/ \ud611\ub825\uc0ac~\ud604\uc7a5\uba85 \uc8fc\uc18c\uae4c\uc9c0 \ubcf5\uc0ac\n  const copyFields = ['company_name', 'company_manager', 'company_contact', 'construction_company', 'site_address'];\n  \n  copyFields.forEach(function(fieldName) {\n\n    const sourceInput = firstRow.querySelector('input[name=\"' + fieldName + '[]\"]');\n\n    const targetInput = newRow.querySelector('input[name=\"' + fieldName + '[]\"]');\n\n    if (sourceInput && targetInput) {\n\n      targetInput.value = sourceInput.value;\n\n    }\n\n  });\n\n  \/\/ \ub098\uba38\uc9c0 \ud544\ub4dc\ub294 \ucd08\uae30\ud654\n\n  newRow.querySelectorAll('input,select').forEach(function(el){\n\n    if (el.type === 'hidden') {\n\n      if (el.name === 'unit_price[]') el.value = '0';\n\n      if (el.name === 'due_date[]') el.value = '';\n\n    } else if (el.tagName === 'SELECT') {\n\n      \/\/ \ubcf5\uc0ac\ub41c \ud544\ub4dc\uac00 \uc544\ub2c8\uba74 \ucd08\uae30\ud654\n\n      if (!copyFields.some(function(fn){ return el.name && el.name.indexOf(fn) >= 0; })) {\n\n        el.value = '';\n\n      }\n\n    } else {\n\n      \/\/ \ubcf5\uc0ac\ub41c \ud544\ub4dc\uac00 \uc544\ub2c8\uba74 \ucd08\uae30\ud654\n\n      if (!copyFields.some(function(fn){ return el.name && el.name.indexOf(fn) >= 0; })) {\n\n        el.value = '';\n\n      }\n\n    }\n\n  });\n\n  tbody.appendChild(newRow);\n\n  enforceDueMin(newRow); \/\/ \uc0c8 \ud589\uc5d0\ub3c4 \ub0a9\uae30 min \uc801\uc6a9\n\n}\n\nfunction removeRow(btn){\n\n  const tbody=document.getElementById('form-body');\n\n  if(tbody.querySelectorAll('tr').length>1) btn.closest('tr').remove();\n\n  else alert('\ucd5c\uc18c 1\uac1c\uc758 \ud589\uc740 \ub0a8\uaca8\uc57c \ud569\ub2c8\ub2e4.');\n\n}\n\n\/* =========================\n\n   \ub4f1\ub85d \ud6c4 \ud3fc \ucd08\uae30\ud654(1\ud589)\n\n========================= *\/\n\nfunction resetFormToOneRow(){\n\n  const tbody = document.getElementById('form-body');\n\n  tbody.innerHTML = '' +\n\n    '<tr>' +\n\n      '<td data-label=\"\uc0c1\ud638\uba85\"><input name=\"company_name[]\" required><\/td>' +\n\n      '<td data-label=\"\ub2f4\ub2f9\uc790\"><input name=\"company_manager[]\"><\/td>' +\n\n      '<td data-label=\"\uc5f0\ub77d\ucc98\"><input name=\"company_contact[]\" required><\/td>' +\n\n      '<td data-label=\"\uc6d0\uccad\uc0ac\"><input name=\"construction_company[]\"><\/td>' +\n\n      '<td data-label=\"\ud604\uc7a5\uba85\/\ud604\uc7a5\uc8fc\uc18c\"><input name=\"site_address[]\" required><\/td>' +\n\n      '<td data-label=\"\ucca0\uadfc\uac15\uc885\">' +\n\n        '<select name=\"steel_grade[]\" required>' +\n\n          '<option value=\"\">\uc120\ud0dd<\/option>' +\n\n          '<option>SD300<\/option><option>SD400<\/option><option>SD500<\/option><option>SD600<\/option><option>SD700<\/option><option>SD400 W<\/option><option>SD500 W<\/option><option>SD400 S<\/option><option>SD500 S<\/option><option>SD600 S<\/option>' +\n\n        '<\/select>' +\n\n      '<\/td>' +\n\n      '<td data-label=\"\ucee4\ud50c\ub7ec \uc885\ub958\">' +\n\n        '<select name=\"coupler_type[]\">' +\n\n          '<option value=\"\">\uc120\ud0dd<\/option>' +\n\n          '<option>\ubc14\ucee4\ud50c\ub7ec<\/option><option>\uc774\ud615\ucee4\ud50c\ub7ec<\/option><option>\uc6a9\uc811\uc6a9<\/option><option>\uc815\ucc29\uc6a9(\uc8fc\ucca0\uadfc)<\/option><option>\uc815\ucc29\uc6a9(\uc804\ub2e8)<\/option><option>\ud3fc\uc138\uc774\ubc84<\/option><option>\uae30\ud0c0<\/option>' +\n\n        '<\/select>' +\n\n      '<\/td>' +\n\n      '<td data-label=\"\ucca0\uadfc \uc9c1\uacbd(\u00d8)\"><input name=\"spec[]\" required><\/td>' +\n\n      '<td data-label=\"\ucca0\uadfc \uae38\uc774(mm)\"><input name=\"length[]\" required placeholder=\"mm\"><\/td>' +\n\n      '<td data-label=\"\uac00\uacf5\ud615\uc2dd\">' +\n\n        '<select name=\"bending_type[]\" required>' +\n\n          '<option value=\"\">\uc120\ud0dd<\/option>' +\n\n          '<option>A+A<\/option><option>A+B<\/option><option>A+C<\/option>' +\n\n        '<\/select>' +\n\n      '<\/td>' +\n\n      '<td data-label=\"\uc218\ub7c9\">' +\n\n        '<input name=\"quantity[]\" type=\"number\" min=\"0\" required>' +\n\n      '<\/td>' +\n\n      '<td data-label=\"\uc694\uccad\uc0ac\ud56d\"><input name=\"request_note[]\" type=\"text\"><\/td>' +\n\n      '<td data-label=\"\ube44\ubc00\ubc88\ud638\"><input name=\"password[]\" type=\"password\" required><\/td>' +\n\n      '<td class=\"action-buttons\" data-label=\"\ud589\">' +\n\n        '<button type=\"button\" onclick=\"addRow()\">+<\/button>' +\n\n        '<button type=\"button\" onclick=\"removeRow(this)\">-<\/button>' +\n\n      '<\/td>' +\n\n      '<input type=\"hidden\" name=\"unit_price[]\" value=\"0\">' +\n\n      '<input type=\"hidden\" name=\"due_date[]\" value=\"\">' +\n\n    '<\/tr>';\n\n  enforceDueMin(tbody);\n\n}\n\n\/* =========================\n\n   \ud3fc \uac80\uc99d + FormData \uad6c\uc131\n\n========================= *\/\n\nfunction validateFormAndBuildData(){\n\n  const rows = document.querySelectorAll('#form-body tr');\n\n  \/\/ \uac80\uc99d \uc21c\uc11c: \uc0c1\ud638\uba85, \ub2f4\ub2f9\uc790, \uc5f0\ub77d\ucc98, \uc6d0\uccad\uc0ac, \ud604\uc7a5\uba85\/\ud604\uc7a5\uc8fc\uc18c, \ucca0\uadfc\uac15\uc885, \ucee4\ud50c\ub7ec \uc885\ub958, \ucca0\uadfc \uc9c1\uacbd, \ucca0\uadfc \uae38\uc774, \uac00\uacf5\ud615\uc2dd, \uc218\ub7c9, \uc694\uccad\uc0ac\ud56d, \ube44\ubc00\ubc88\ud638\n  const validationOrder = [\n\n    { selector: 'input[name=\"company_name[]\"]', name: '\uc0c1\ud638\uba85', required: true },\n    { selector: 'input[name=\"company_manager[]\"]', name: '\ub2f4\ub2f9\uc790', required: true },\n    { selector: 'input[name=\"company_contact[]\"]', name: '\uc5f0\ub77d\ucc98', required: true },\n    { selector: 'input[name=\"construction_company[]\"]', name: '\uc6d0\uccad\uc0ac', required: true },\n    { selector: 'input[name=\"site_address[]\"]', name: '\ud604\uc7a5\uba85\/\ud604\uc7a5\uc8fc\uc18c', required: true },\n    { selector: 'select[name=\"steel_grade[]\"]', name: '\ucca0\uadfc\uac15\uc885', required: true },\n    { selector: 'select[name=\"coupler_type[]\"]', name: '\ucee4\ud50c\ub7ec \uc885\ub958', required: true },\n    { selector: 'input[name=\"spec[]\"]', name: '\ucca0\uadfc \uc9c1\uacbd(\u00d8)', required: true },\n    { selector: 'input[name=\"length[]\"]', name: '\ucca0\uadfc \uae38\uc774(mm)', required: true },\n    { selector: 'select[name=\"bending_type[]\"]', name: '\uac00\uacf5\ud615\uc2dd', required: true },\n    { selector: 'input[name=\"quantity[]\"]', name: '\uc218\ub7c9', required: true },\n    { selector: 'input[name=\"request_note[]\"]', name: '\uc694\uccad\uc0ac\ud56d', required: true },\n    { selector: 'input[name=\"password[]\"]', name: '\ube44\ubc00\ubc88\ud638', required: true }\n\n  ];\n\n  const fd = new FormData();\n\n  let active = 0;\n\n  const min = todayYMD();\n\n  for (const row of rows) {\n\n    const q = function(s){ return row.querySelector(s); };\n\n    const keyVals = [\n\n      q('input[name=\"company_name[]\"]')?.value?.trim() || '',\n\n      q('input[name=\"company_contact[]\"]')?.value?.trim() || '',\n\n      q('select[name=\"steel_grade[]\"]')?.value?.trim() || '',\n\n      q('input[name=\"spec[]\"]')?.value?.trim() || '',\n\n      q('input[name=\"length[]\"]')?.value?.trim() || '',\n\n      q('select[name=\"bending_type[]\"]')?.value?.trim() || '',\n\n      q('input[name=\"quantity[]\"]')?.value?.trim() || '',\n\n      q('input[name=\"site_address[]\"]')?.value?.trim() || ''\n\n    ];\n\n    const isEmptyRow = keyVals.every(function(v){ return v === ''; });\n\n    if (isEmptyRow) continue;\n\n    \/\/ \uc21c\uc11c\ub300\ub85c \uac80\uc99d\n    for (const item of validationOrder) {\n\n      const el = q(item.selector);\n\n      if (item.required && (!el || !el.value || el.value.trim() === '')) {\n\n        alert(item.name + '\uc744(\ub97c) \uc785\ub825\ud558\uc138\uc694.');\n\n        if (el) el.focus();\n\n        return null;\n\n      }\n\n    }\n\n    \/\/ \ub0a9\uae30\uc694\uccad\uc77c\uc740 \uc228\uaca8\uc9c4 \ud544\ub4dc\ub85c \ucc98\ub9ac (\uae30\ubcf8\uac12 \uc624\ub298)\n    const due = todayYMD();\n\n    \/\/ \ube44\ubc00\ubc88\ud638 \uac00\uc838\uc624\uae30\n    const password = q('input[name=\"password[]\"]')?.value || '';\n\n    fd.append('company_name[]', q('input[name=\"company_name[]\"]')?.value?.trim() || '');\n\n    fd.append('company_manager[]', q('input[name=\"company_manager[]\"]')?.value?.trim() || '');\n\n    fd.append('company_contact[]', q('input[name=\"company_contact[]\"]')?.value?.trim() || '');\n\n    fd.append('construction_company[]', q('input[name=\"construction_company[]\"]')?.value?.trim() || '');\n\n    fd.append('steel_grade[]',  q('select[name=\"steel_grade[]\"]')?.value?.trim() || '');\n\n    fd.append('coupler_type[]', q('select[name=\"coupler_type[]\"]')?.value?.trim() || '');\n\n    fd.append('spec[]',         q('input[name=\"spec[]\"]')?.value?.trim() || '');\n\n    fd.append('length[]',       q('input[name=\"length[]\"]')?.value?.trim() || '');\n\n    fd.append('bending_type[]', q('select[name=\"bending_type[]\"]')?.value?.trim() || '');\n\n    fd.append('quantity[]',     q('input[name=\"quantity[]\"]')?.value?.trim() || '0');\n\n    fd.append('unit_price[]',   q('input[name=\"unit_price[]\"]')?.value?.trim() || '0');\n\n    fd.append('due_date[]',     due);\n\n    fd.append('site_address[]', q('input[name=\"site_address[]\"]')?.value?.trim() || '');\n\n    fd.append('request_note[]', q('input[name=\"request_note[]\"]')?.value?.trim() || '');\n\n    fd.append('password[]',     password);\n\n    active++;\n\n  }\n\n  if (active === 0) { alert('\uc785\ub825\ub41c \ud589\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \ucd5c\uc18c 1\uac1c \ud589\uc744 \uc785\ub825\ud558\uc138\uc694.'); return null; }\n\n  return fd;\n\n}\n\n\/* =========================\n\n   \uc81c\ucd9c\n\n========================= *\/\n\nfunction submitRebarForm(e){\n\n  e.preventDefault();\n\n  \/\/ \ub4f1\ub85d \ubc84\ud2bc \ud074\ub9ad \uc2dc \uccab \ubc88\uc9f8 \ud589\uc758 \ud611\ub825\uc0ac~\ud604\uc7a5\uba85 \uc8fc\uc18c\uae4c\uc9c0 \ub2e4\ub978 \ud589\uc5d0 \ubcf5\uc0ac\n  const tbody = document.getElementById('form-body');\n  const firstRow = tbody.querySelector('tr');\n  if (firstRow) {\n    const copyFields = ['company_name', 'company_manager', 'company_contact', 'construction_company', 'site_address'];\n    const allRows = tbody.querySelectorAll('tr');\n    \n    allRows.forEach(function(row) {\n      if (row !== firstRow) {\n        copyFields.forEach(function(fieldName) {\n          const sourceInput = firstRow.querySelector('input[name=\"' + fieldName + '[]\"]');\n          const targetInput = row.querySelector('input[name=\"' + fieldName + '[]\"]');\n          if (sourceInput && targetInput && !targetInput.value.trim()) {\n            targetInput.value = sourceInput.value;\n          }\n        });\n      }\n    });\n  }\n\n  const fd = validateFormAndBuildData();\n\n  if (!fd) return;\n\n  fetch('\/rebar\/insert.php',{method:'POST',body:fd})\n\n    .then(function(r){ return r.text(); })\n\n    .then(function(msg){ alert(msg); resetFormToOneRow(); loadList(); })\n\n    .catch(function(){ alert('\ub4f1\ub85d \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.'); });\n\n}\n\n\/* =========================\n\n   \uac80\uc0c9\n\n========================= *\/\n\nlet currentQuery = { field:'company', q:'' };\n\nfunction searchList(){\n\n  const field = document.getElementById('q_field').value;\n\n  const q = document.getElementById('q_value').value.trim();\n\n  if (!q) { alert('\uac80\uc0c9\uc5b4\ub97c \uc785\ub825\ud558\uc138\uc694'); document.getElementById('q_value').focus(); return; }\n\n  currentQuery = { field: field, q: q };\n\n  loadList(1);\n\n}\n\nfunction resetSearch(){\n\n  document.getElementById('q_field').value = 'company';\n\n  document.getElementById('q_value').value = '';\n\n  currentQuery = { field:'company', q:'' };\n\n  loadList(1);\n\n}\n\ndocument.addEventListener('DOMContentLoaded', function(){\n\n  const q = document.getElementById('q_value');\n\n  if (q) {\n\n    q.addEventListener('keydown', function(e){\n\n      if (e.key === 'Enter'){ e.preventDefault(); searchList(); }\n\n    });\n\n  }\n\n});\n\n\/* =========================\n\n   \ubaa9\ub85d\/\ud398\uc774\uc9d5\n\n========================= *\/\n\nfunction loadList(page){\n\n  const p = new URLSearchParams();\n\n  p.set('page', String(page || 1));\n\n  if (currentQuery.q) { p.set('field', currentQuery.field); p.set('q', currentQuery.q); }\n\n  fetch('\/rebar\/load.php?' + p.toString())\n\n    .then(function(r){ return r.text(); })\n\n    .then(function(html){\n\n      document.getElementById('rebar-list').innerHTML = html;\n\n      toggleBulkUI();\n\n    });\n\n}\n\nfunction goToPage(page){ loadList(page); }\n\n\/* =========================\n\n   \ub2e8\uac74 \uc0ad\uc81c\n\n========================= *\/\n\nfunction deleteOrder(id){\n\n  if (!confirm('\uc0ad\uc81c\ud560\uae4c\uc694?')) return;\n\n  const body = new URLSearchParams({ id: String(id) });\n\n  fetch('\/rebar\/delete.php', {\n\n    method:'POST',\n\n    headers:{'Content-Type':'application\/x-www-form-urlencoded'},\n\n    body: body.toString()\n\n  })\n\n  .then(function(r){ return r.json(); })\n\n  .then(function(resp){\n\n    if (resp.status === 'ok') { alert('\uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.'); loadList(); }\n\n    else if (resp.status === 'need_password'){ openGuestDeletePanel(id); }\n\n    else { alert(resp.message || '\uc0ad\uc81c \uc2e4\ud328'); }\n\n  })\n\n  .catch(function(){ alert('\uc0ad\uc81c \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.'); });\n\n}\n\n\/* =========================\n\n   \uacb0\uc81c\uc720\ubb34 \uc800\uc7a5(\uad00\ub9ac\uc790)\n\n========================= *\/\n\nfunction savePaymentStatus(id){\n\n  const sel = document.getElementById('pay_' + id);\n\n  if (!sel) return;\n\n  const v = sel.value;\n\n  const body = new URLSearchParams({ id: String(id), status: v });\n\n  fetch('\/rebar\/update_payment_status.php', {\n\n    method:'POST',\n\n    headers:{'Content-Type':'application\/x-www-form-urlencoded'},\n\n    body: body.toString()\n\n  })\n\n  .then(function(r){ return r.text(); })\n\n  .then(function(msg){ alert(msg); loadList(); })\n\n  .catch(function(){ alert('\uacb0\uc81c\uc720\ubb34 \uc800\uc7a5 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.'); });\n\n}\n\n\/* =========================\n\n   \uad00\ub9ac\uc790 \uc77c\uad04\n\n========================= *\/\n\nfunction toggleAllRows(master){\n\n  document.querySelectorAll('#rebar-list .chk-row').forEach(function(cb){ cb.checked = master.checked; });\n\n}\n\nfunction getSelectedIds(){\n\n  return Array.from(document.querySelectorAll('#rebar-list .chk-row:checked')).map(function(cb){ return cb.value; });\n\n}\n\nasync function bulkToggleStatusSelected(){\n\n  const ids = getSelectedIds();\n\n  if (ids.length === 0) { alert('\uc120\ud0dd\ub41c \ud56d\ubaa9\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.'); return; }\n\n  if (!confirm('\uc120\ud0dd ' + ids.length + '\uac74\uc758 \uacb0\uc81c\uc720\ubb34(\uc720\uc0c1\u2194\ubb34\uc0c1)\ub97c \ubcc0\uacbd\ud560\uae4c\uc694?')) return;\n\n  try{\n\n    await Promise.all(ids.map(function(id){\n\n      const body = new URLSearchParams({ id: String(id) });\n\n      return fetch('\/rebar\/update_status.php', {\n\n        method:'POST',\n\n        headers:{'Content-Type':'application\/x-www-form-urlencoded'},\n\n        body: body.toString()\n\n      }).then(function(r){ return r.text(); }).catch(function(){ return null; });\n\n    }));\n\n    alert('\uc0c1\ud0dc \ubcc0\uacbd \ucc98\ub9ac \uc644\ub8cc');\n\n    loadList();\n\n  }catch(e){\n\n    alert('\uc77c\uad04 \uc0c1\ud0dc\ubcc0\uacbd \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.');\n\n  }\n\n}\n\nasync function bulkDeleteSelected(){\n\n  const ids = getSelectedIds();\n\n  if (ids.length === 0) { alert('\uc120\ud0dd\ub41c \ud56d\ubaa9\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.'); return; }\n\n  if (!confirm('\uc120\ud0dd ' + ids.length + '\uac74\uc744 \uc0ad\uc81c\ud560\uae4c\uc694?')) return;\n\n  try {\n\n    const results = await Promise.all(ids.map(function(id){\n\n      const body = new URLSearchParams({ id: String(id) });\n\n      return fetch('\/rebar\/delete.php', {\n\n        method:'POST',\n\n        headers:{'Content-Type':'application\/x-www-form-urlencoded'},\n\n        body: body.toString()\n\n      }).then(function(r){ return r.json(); }).catch(function(){ return {status:'error'}; });\n\n    }));\n\n    const ok = results.filter(function(r){ return r && r.status === 'ok'; }).length;\n\n    const fail = results.length - ok;\n\n    alert('\uc0ad\uc81c \uc644\ub8cc: ' + ok + '\uac74' + (fail ? ', \uc2e4\ud328: ' + fail + '\uac74' : ''));\n\n    loadList();\n\n  } catch(e) {\n\n    alert('\uc77c\uad04 \uc0ad\uc81c \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.');\n\n  }\n\n}\n\n\/* =========================\n\n   \uad00\ub9ac\uc790 \uc804\uc6a9 UI \ud1a0\uae00\n\n========================= *\/\n\nfunction toggleBulkUI(){\n\n  const meta = document.querySelector('#rebar-list #rebar-meta');\n\n  const isAdmin = meta && meta.getAttribute('data-is-admin') === '1';\n\n  const bulk = document.getElementById('bulk-actions');\n\n  if (bulk) bulk.style.display = isAdmin ? 'flex' : 'none';\n\n}\n\n\/* =========================\n\n   \ube44\ud68c\uc6d0 \uc0ad\uc81c \ube44\ubc88 \ud328\ub110\n\n========================= *\/\n\nfunction openGuestDeletePanel(id){\n\n  document.getElementById('guest-delete-id').value = String(id);\n\n  document.getElementById('guest-delete-pw').value = '';\n\n  document.getElementById('guest-delete-panel').style.display = 'block';\n\n  document.getElementById('guest-delete-panel').scrollIntoView({behavior:'smooth',block:'center'});\n\n}\n\nfunction cancelGuestDelete(){\n\n  document.getElementById('guest-delete-panel').style.display = 'none';\n\n  document.getElementById('guest-delete-id').value = '';\n\n  document.getElementById('guest-delete-pw').value = '';\n\n}\n\nfunction submitGuestDelete(e){\n\n  e.preventDefault();\n\n  const id = document.getElementById('guest-delete-id').value;\n\n  const pw = document.getElementById('guest-delete-pw').value;\n\n  if (!id || !pw) return false;\n\n  const body = new URLSearchParams({ id: String(id), post_password: pw });\n\n  fetch('\/rebar\/delete.php', {\n\n    method:'POST',\n\n    headers:{'Content-Type':'application\/x-www-form-urlencoded'},\n\n    body: body.toString()\n\n  })\n\n  .then(function(r){ return r.json(); })\n\n  .then(function(resp){\n\n    if (resp.status === 'ok'){ alert('\uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.'); cancelGuestDelete(); loadList(); }\n\n    else { alert(resp.message || '\uc0ad\uc81c \uc2e4\ud328'); }\n\n  })\n\n  .catch(function(){ alert('\uc0ad\uc81c \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.'); });\n\n  return false;\n\n}\n\n\/* =========================\n\n   \ucd9c\ud558\uc608\uc815\uc77c \uc800\uc7a5 (\uad00\ub9ac\uc790)\n\n========================= *\/\n\nfunction saveShipDate(id){\n\n  const el = document.getElementById('ship_' + id);\n\n  if (!el) { alert('\uc785\ub825 \ud544\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.'); return; }\n\n  const v = el.value || '';\n\n  const body = new URLSearchParams({ id: String(id), ship_date: v });\n\n  fetch('\/rebar\/update_ship_date.php', {\n\n    method: 'POST',\n\n    headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n\n    body: body.toString()\n\n  })\n\n  .then(function(r){ return r.text().then(function(t){ return { ok: r.ok, text: t }; }); })\n\n  .then(function(res){\n\n    alert(res.text || (res.ok ? '\ucd9c\ud558\uc608\uc815\uc77c\uc774 \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.' : '\uc800\uc7a5 \uc2e4\ud328'));\n\n    if (res.ok) loadList();\n\n  })\n\n  .catch(function(){ alert('\ucd9c\ud558\uc608\uc815\uc77c \uc800\uc7a5 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.'); });\n\n}\n\n\/* =========================\n\n   \uc120\ud0dd \uc218\uc815(\ucd9c\ud558\uc608\uc815\uc77c\/\uacb0\uc81c\uc720\ubb34) \u2014 \uad00\ub9ac\uc790\n\n========================= *\/\n\nfunction bulkApplyEdits(){\n\n  const checked = Array.from(document.querySelectorAll('#rebar-list .chk-row:checked'));\n\n  if (checked.length === 0) { alert('\uc218\uc815\ud560 \ud589\uc744 \uc120\ud0dd\ud558\uc138\uc694.'); return; }\n\n  const rows = checked.map(function(cb){\n\n    const id = parseInt(cb.value, 10);\n\n    const shipEl = document.getElementById('ship_' + id);\n\n    const payEl  = document.getElementById('pay_' + id);\n\n    return {\n\n      id: id,\n\n      ship_date: shipEl ? (shipEl.value || '') : '',\n\n      payment_status: payEl ? (payEl.value || '') : ''\n\n    };\n\n  });\n\n  fetch('\/rebar\/bulk_update.php', {\n\n    method: 'POST',\n\n    headers: { 'Content-Type':'application\/json' },\n\n    body: JSON.stringify({ rows: rows })\n\n  })\n\n  .then(function(r){ return r.json(); })\n\n  .then(function(res){\n\n    if (res.ok) {\n\n      alert('\uc218\uc815 \uc644\ub8cc: ' + res.updated + '\uac74' + (res.failed ? ', \uc2e4\ud328: ' + res.failed + '\uac74' : ''));\n\n      loadList();\n\n    } else {\n\n      alert(res.msg || '\uc800\uc7a5 \uc2e4\ud328');\n\n    }\n\n  })\n\n  .catch(function(){ alert('\uc800\uc7a5 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.'); });\n\n}\n\n\/* =========================\n\n   \ucd08\uae30 \ub85c\ub4dc\n\n========================= *\/\n\nwindow.onload = function(){\n\n  loadList(1);\n\n  enforceDueMin();\n\n};\n\n<\/script>\n\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\uc2dc\ud5d8\ud3b8 \uc694\uccad \uc2dc\ud5d8\ud3b8 \uc694\uccad\uc2dc \ucc38\uace0\uc0ac\ud56d \uc0c1\ud638\uba85, \ub2f4\ub2f9\uc790, \uc5f0\ub77d\ucc98, \uc6d0\uccad\uc0ac, \ud604\uc7a5\uba85, \ud604\uc7a5\uc8fc\uc18c\ub97c \uc785\ub825\ud55c \ub4a4 \uc624\ub978\ucabd\uc758 &#8216;+&#8217; \ubc84\ud2bc\uc744 \ub204\ub974\uc2dc\uba74 \uc785\ub825\ud55c \ub0b4\uc6a9\uc774 \uadf8\ub300\ub85c \ubcf5\uc0ac\ub418\uc5b4 \ub2e4\uc74c \ud589\uc5d0\ub3c4 \uc790\ub3d9\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. \uc0c1\ud638\uba85 \ub2f4\ub2f9\uc790 \uc5f0\ub77d\ucc98 \uc6d0\uccad\uc0ac \ud604\uc7a5\uba85\/\ud604\uc7a5\uc8fc\uc18c \ucca0\uadfc\uac15\uc885 \ucee4\ud50c\ub7ec \uc885\ub958 \ucca0\uadfc \uc9c1\uacbd(\u00d8) \ucca0\uadfc \uae38\uc774(mm) \uac00\uacf5\ud615\uc2dd \uc218\ub7c9 \uc694\uccad\uc0ac\ud56d \ube44\ubc00\ubc88\ud638 \ud589 \uc120\ud0ddSD300SD400SD500SD600SD700SD400 WSD500 WSD400 SSD500 SSD600 S \uc120\ud0dd\ubc14\ucee4\ud50c\ub7ec\uc774\ud615\ucee4\ud50c\ub7ec\uc6a9\uc811\uc6a9\uc815\ucc29\uc6a9(\uc8fc\ucca0\uadfc)\uc815\ucc29\uc6a9(\uc804\ub2e8)\ud3fc\uc138\uc774\ubc84\uae30\ud0c0 \uc120\ud0ddA+AA+BA+C + &#8211; \ub4f1\ub85d \ud589 \ucd08\uae30\ud654 [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-9619","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/ibms.co.kr\/index.php?rest_route=\/wp\/v2\/pages\/9619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/ibms.co.kr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/ibms.co.kr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/ibms.co.kr\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/ibms.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9619"}],"version-history":[{"count":86,"href":"http:\/\/ibms.co.kr\/index.php?rest_route=\/wp\/v2\/pages\/9619\/revisions"}],"predecessor-version":[{"id":10114,"href":"http:\/\/ibms.co.kr\/index.php?rest_route=\/wp\/v2\/pages\/9619\/revisions\/10114"}],"wp:attachment":[{"href":"http:\/\/ibms.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}