{"id":9184,"date":"2025-05-28T12:34:06","date_gmt":"2025-05-28T12:34:06","guid":{"rendered":"https:\/\/test.exalco.ro\/?page_id=9184"},"modified":"2025-07-24T13:21:09","modified_gmt":"2025-07-24T11:21:09","slug":"profile-standard-in-stoc","status":"publish","type":"page","link":"https:\/\/exalco.ro\/en\/profile-standard-in-stoc\/","title":{"rendered":"Profile Standard in Stoc"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row use_custom_gutter=&#8221;on&#8221; make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; positioning=&#8221;none&#8221; width=&#8221;100%&#8221; custom_margin=&#8221;25px||||false|false&#8221; custom_margin_tablet=&#8221;25px||||false|false&#8221; custom_margin_phone=&#8221;25px|0px||0px|false|true&#8221; custom_margin_last_edited=&#8221;on|desktop&#8221; custom_padding=&#8221;20px|20px|20px|20px|false|true&#8221; custom_padding_tablet=&#8221;20px|5px||5px|false|true&#8221; custom_padding_phone=&#8221;20px|5px||5px|false|true&#8221; animation_direction=&#8221;top&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; custom_margin__hover_enabled=&#8221;off|desktop&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.4&#8243; text_font=&#8221;||||||||&#8221; header_3_text_color=&#8221;#DF192B&#8221; custom_padding=&#8221;||||false|false&#8221; custom_padding_tablet=&#8221;|10%||10%|false|true&#8221; custom_padding_phone=&#8221;|10%||10%|false|true&#8221; custom_padding_last_edited=&#8221;on|phone&#8221; hover_enabled=&#8221;0&#8243; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h3 style=\"text-align: center;\">Profile Industriale Standard \u00een Stoc<\/h3>\n<h4 style=\"text-align: center;\">\u2705 Stoc actualizat \u00een timp real direct din depozit<\/h4>\n<p>Avem pe stoc o gam\u0103 variat\u0103 de profile industriale standard din aluminiu: \u021beav\u0103 rectangular\u0103, profil U, profil L (cornier), profil T (Teu), \u021beav\u0103 rotund\u0103 sau platband\u0103. Verific\u0103 disponibilitatea \u00een timp real sau trimite o cerere de ofert\u0103 personalizat\u0103.<br \/>Ne po\u021bi contacta oric\u00e2nd pentru detalii sau oferte la telefon <a href=\"tel:0728063000\"><strong>0728 063 000<\/strong><\/a>, pe email la <a href=\"mailto:office@exalco.ro\"><strong>office@exalco.ro<\/strong><\/a> sau folosind <a href=\"\/solicita-oferta\">formularul de contact<\/a>. R\u0103spundem rapid \u0219i \u00ee\u021bi oferim solu\u021bii adaptate nevoilor tale.<br \/>Pentru produsele care nu sunt \u00een stoc, po\u021bi plasa direct o <a href=\"https:\/\/oferta.exalco.ro\/\"><strong>cerere de ofert\u0103<\/strong><\/a> \u2013 r\u0103spundem rapid \u0219i \u00ee\u021bi oferim solu\u021bii adaptate nevoilor tale.<\/p>\n<p>[\/et_pb_text][et_pb_code _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<link rel=\"stylesheet\" href=\"https:\/\/cdn.datatables.net\/1.13.6\/css\/jquery.dataTables.min.css\">\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.datatables.net\/responsive\/2.5.0\/css\/responsive.dataTables.min.css\">\r\n<script src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"><\/script>\r\n<script src=\"https:\/\/cdn.datatables.net\/1.13.6\/js\/jquery.dataTables.min.js\"><\/script>\r\n<script src=\"https:\/\/cdn.datatables.net\/responsive\/2.5.0\/js\/dataTables.responsive.min.js\"><\/script>\r\n\r\n<div id=\"secure-softone-stoc\">Se \u00eencarc\u0103 stocurile...<\/div>\r\n\r\n<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n    const siteUrl   = \"https:\\\/\\\/exalco.ro\";\r\n    const ajaxUrl   = \"https:\\\/\\\/exalco.ro\\\/wp-admin\\\/admin-ajax.php\";\r\n    const tableId   = \"stoc-dt-table\";\r\n    const params    = new URLSearchParams(window.location.search);\r\n\r\n    \/\/ --- mapping pentru header\/legend\u0103 \"Dimensiuni\"\r\n    const mapDim = {\r\n        \"Profil L - Cornier\": \"(HxBxS)\",\r\n        \"Profil T - Teu\": \"(HxBxS)\",\r\n        \"Profil U\": \"(H1xBxH2xS)\",\r\n        \"Teava Rectangulara\": \"(HxBxS)\",\r\n        \"Teava Rotunda\": \"(DxS)\",\r\n        \"Platbanda\": \"(BxS)\",\r\n        \"\": \"Dimensiuni\"\r\n    };\r\n    const mapLegend = {\r\n        \"Profil L - Cornier\": \"Dimensiuni exprimate ca (HxBxS)\",\r\n        \"Profil T - Teu\": \"Dimensiuni exprimate ca (HxBxS)\",\r\n        \"Profil U\": \"Dimensiuni exprimate ca (H1xBxH2xS)\",\r\n        \"Teava Rectangulara\": \"Dimensiuni exprimate ca (HxBxS)\",\r\n        \"Teava Rotunda\": \"Dimensiuni exprimate ca (DxS)\",\r\n        \"Platbanda\": \"Dimensiuni exprimate ca (BxS)\",\r\n        \"\": \"Dimensiuni exprimate \u00een func\u021bie de tipul profilului\"\r\n    };\r\n\r\n    \/\/ --- helpers URL\r\n    const setParam = (k, v) => {\r\n        if (v === undefined || v === null || v === \"\") params.delete(k);\r\n        else params.set(k, v);\r\n        const qs = params.toString();\r\n        history.replaceState(null, \"\", qs ? `${location.pathname}?${qs}` : location.pathname);\r\n    };\r\n\r\n    \/\/ --- starea ini\u021bial\u0103 din URL\r\n    const initialTip  = params.get(\"tip\") || \"\";\r\n    const initialQ    = params.get(\"q\")   || \"\";\r\n    const initialLen  = parseInt(params.get(\"len\") || \"10\", 10);\r\n    const initialPage = parseInt(params.get(\"p\")   || \"1\", 10) - 1;\r\n\r\n    fetch(`${ajaxUrl}?action=get_softone_stoc`)\r\n        .then(res => res.json())\r\n        .then(result => {\r\n            const el = document.getElementById(\"secure-softone-stoc\");\r\n\r\n            if (!result.success || !Array.isArray(result.data)) {\r\n                el.innerHTML = \"<p>Nu exist\u0103 stocuri disponibile.<\/p>\";\r\n                return;\r\n            }\r\n\r\n            const columns = [\r\n                { title: \"Profil\",    data: \"Profil\",    responsivePriority: 1 },\r\n                { title: \"Tip\",       data: \"tip\",       responsivePriority: 5 },\r\n                { title: \"Lungime\",   data: \"lungime\",   responsivePriority: 4 },\r\n                { title: \"Dimensiuni\",data: \"V7\",        responsivePriority: 3 },\r\n                { title: \"Bare\",      data: \"x_qty\",     responsivePriority: 2 },\r\n                { title: \"Kg\/ml\",     data: \"kgml\",      responsivePriority: 6 }\r\n            ];\r\n\r\n            \/\/ --- UI\r\n            let html = `\r\n            <style>\r\n              .product-filters{display:flex;overflow-x:auto;white-space:nowrap;gap:12px;padding-bottom:8px;margin-bottom:1rem;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}\r\n              .product-filters::-webkit-scrollbar{display:none}\r\n              .product-filters button{flex:0 0 auto;scroll-snap-align:start;background:none;border:none;cursor:pointer;padding:0}\r\n              .product-filters button img{width:120px;height:auto;border-radius:6px;border:2px solid transparent}\r\n              .product-filters button.active img{border-color:#0073aa;box-shadow:0 0 6px rgba(0,0,0,.3)}\r\n              #stoc-wrapper{overflow-x:auto;width:100%}\r\n              table.dataTable td{white-space:nowrap}\r\n            <\/style>\r\n\r\n            <div class=\"product-filters\">\r\n              <button data-filter=\"\">Toate<\/button>\r\n              <button data-filter=\"Profil L - Cornier\"><img decoding=\"async\" src=\"${siteUrl}\/wp-content\/uploads\/stoc-icoane\/profil-l-aluminiu-exalco.png.webp\" alt=\"Cornier\" title=\"Cornier\"><\/button>\r\n              <button data-filter=\"Profil T - Teu\"><img decoding=\"async\" src=\"${siteUrl}\/wp-content\/uploads\/stoc-icoane\/profil-t-aluminiu-exalco.png.webp\" alt=\"Teu\" title=\"Teu\"><\/button>\r\n              <button data-filter=\"Profil U\"><img decoding=\"async\" src=\"${siteUrl}\/wp-content\/uploads\/stoc-icoane\/profil-u-aluminiu-exalco.png.webp\" alt=\"Profil U\" title=\"Profil U\"><\/button>\r\n              <button data-filter=\"Teava Rotunda\"><img decoding=\"async\" src=\"${siteUrl}\/wp-content\/uploads\/stoc-icoane\/teava-rotunda-aluminiu-exalco.png.webp\" alt=\"Teav\u0103 rotund\u0103\" title=\"Teav\u0103 rotund\u0103\"><\/button>\r\n              <button data-filter=\"Teava Rectangulara\"><img decoding=\"async\" src=\"${siteUrl}\/wp-content\/uploads\/stoc-icoane\/teava-rectangulara-aluminiu-exalco.png.webp\" alt=\"Teav\u0103 rectangular\u0103\" title=\"Teav\u0103 rectangular\u0103\"><\/button>\r\n              <button data-filter=\"Platbanda\"><img decoding=\"async\" src=\"${siteUrl}\/wp-content\/uploads\/stoc-icoane\/profil-platbanda-aluminiu-exalco.png.webp\" alt=\"Platband\u0103\" title=\"Platband\u0103\"><\/button>\r\n            <\/div>\r\n\r\n            <div class=\"dimensiuni-legend\" id=\"dimensiuni-legend\">Dimensiuni exprimate \u00een func\u021bie de tipul profilului<\/div>\r\n            <div id=\"stoc-wrapper\">\r\n              <table id=\"${tableId}\" class=\"display responsive nowrap\" style=\"width:100%\">\r\n                <thead><tr>`;\r\n            columns.forEach(c => html += `<th${c.data===\"V7\" ? ' id=\"dimensiuni-header\"' : ''}>${c.title}<\/th>`);\r\n            html += `<\/tr><\/thead><\/table><\/div>`;\r\n            el.innerHTML = html;\r\n\r\n            \/\/ --- procesare r\u00e2nduri (kgml formatat, x_qty calculat)\r\n            const processedData = result.data.map(row => ({\r\n                ...row,\r\n                kgml: row.kgml ? parseFloat(row.kgml).toFixed(3) : \"0.000\",\r\n                x_qty: Math.round(\r\n                    (row.X_QTY2 ? parseFloat(row.X_QTY2) : 0) -\r\n                    (row.termen_calculat ? parseFloat(row.termen_calculat) : 0)\r\n                )\r\n            }));\r\n\r\n            \/\/ --- init DataTable cu pageLength din URL\r\n            const datatable = new DataTable(`#${tableId}`, {\r\n                data: processedData,\r\n                columns,\r\n                order: [[0, 'asc']],\r\n                pageLength: isNaN(initialLen) ? 10 : initialLen,\r\n                responsive: true,\r\n                language: {\r\n                    search: \"Caut\u0103:\",\r\n                    lengthMenu: \"Afi\u0219eaz\u0103 _MENU_ \u00eenregistr\u0103ri\",\r\n                    info: \"Afi\u0219ate _START_\u2013_END_ din _TOTAL_\",\r\n                    paginate: { next: \"Urm\u0103torul\", previous: \"Anterior\" },\r\n                    zeroRecords: \"Nicio \u00eenregistrare g\u0103sit\u0103\"\r\n                }\r\n            });\r\n\r\n            const dimHeader = document.getElementById(\"dimensiuni-header\");\r\n            const dimLegend = document.getElementById(\"dimensiuni-legend\");\r\n\r\n            \/\/ --- aplicare filtru Tip + UI\r\n            const applyTipFilter = (tipValue) => {\r\n                if (tipValue === \"\") {\r\n                    datatable.column(1).search(\"\"); \/\/ f\u0103r\u0103 regex\r\n                } else {\r\n                    const safe = tipValue.replace(\/[.*+?^${}()|[\\]\\\\]\/g, \"\\\\$&\");\r\n                    datatable.column(1).search(\"^\" + safe + \"$\", true, false); \/\/ exact match\r\n                }\r\n                document.querySelectorAll(\".product-filters button\").forEach(b => {\r\n                    b.classList.toggle(\"active\", b.dataset.filter === tipValue);\r\n                });\r\n                dimHeader.textContent = mapDim[tipValue] || \"Dimensiuni\";\r\n                dimLegend.textContent = mapLegend[tipValue] || \"\";\r\n            };\r\n\r\n            \/\/ --- set\u0103ri ini\u021biale (c\u0103utare global\u0103 + tip + pagin\u0103)\r\n            if (initialQ) datatable.search(initialQ);\r\n            applyTipFilter(initialTip);\r\n\r\n            if (!isNaN(initialPage) && initialPage >= 0) {\r\n                datatable.page(initialPage);\r\n            }\r\n            datatable.draw(false);\r\n\r\n            \/\/ seteaz\u0103 vizual inputul de c\u0103utare\r\n            if (initialQ) {\r\n                const searchInput = document.querySelector(`#${tableId}_filter input`);\r\n                if (searchInput) searchInput.value = initialQ;\r\n            }\r\n            if (!initialTip) {\r\n                const allBtn = document.querySelector('.product-filters button[data-filter=\"\"]');\r\n                if (allBtn) allBtn.classList.add(\"active\");\r\n            }\r\n\r\n            \/\/ --- click pe butoanele de filtru Tip\r\n            document.querySelectorAll(\".product-filters button\").forEach(button => {\r\n                button.addEventListener(\"click\", () => {\r\n                    const filterValue = button.dataset.filter || \"\";\r\n                    applyTipFilter(filterValue);\r\n                    datatable.page(0).draw(false); \/\/ reset pagin\u0103\r\n                    setParam(\"tip\", filterValue);\r\n                    setParam(\"p\", \"\");\r\n                });\r\n            });\r\n\r\n            \/\/ --- sincronizare URL la ac\u021biunile DataTables\r\n            datatable.on(\"search.dt\", function () {\r\n                const q = datatable.search() || \"\";\r\n                setParam(\"q\", q);\r\n                setParam(\"p\", \"\"); \/\/ revenim la pagina 1 c\u00e2nd se schimb\u0103 c\u0103utarea\r\n            });\r\n\r\n            datatable.on(\"page.dt\", function () {\r\n                const info = datatable.page.info();\r\n                setParam(\"p\", String(info.page + 1)); \/\/ 1-based \u00een URL\r\n            });\r\n\r\n            datatable.on(\"length.dt\", function (e, settings, len) {\r\n                setParam(\"len\", String(len));\r\n                setParam(\"p\", \"\"); \/\/ reset pagin\u0103\r\n            });\r\n        })\r\n        .catch(err => {\r\n            console.error(err);\r\n            document.getElementById(\"secure-softone-stoc\").innerHTML = \"<p>Eroare la afi\u0219area stocurilor.<\/p>\";\r\n        });\r\n});\r\n<\/script>\r\n[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Profile Industriale Standard \u00een Stoc \u2705 Stoc actualizat \u00een timp real direct din depozit Avem pe stoc o gam\u0103 variat\u0103 de profile industriale standard din aluminiu: \u021beav\u0103 rectangular\u0103, profil U, profil L (cornier), profil T (Teu), \u021beav\u0103 rotund\u0103 sau platband\u0103. Verific\u0103 disponibilitatea \u00een timp real sau trimite o cerere de ofert\u0103 personalizat\u0103.Ne po\u021bi contacta oric\u00e2nd [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-9184","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/exalco.ro\/en\/wp-json\/wp\/v2\/pages\/9184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exalco.ro\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/exalco.ro\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/exalco.ro\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exalco.ro\/en\/wp-json\/wp\/v2\/comments?post=9184"}],"version-history":[{"count":3,"href":"https:\/\/exalco.ro\/en\/wp-json\/wp\/v2\/pages\/9184\/revisions"}],"predecessor-version":[{"id":10085,"href":"https:\/\/exalco.ro\/en\/wp-json\/wp\/v2\/pages\/9184\/revisions\/10085"}],"wp:attachment":[{"href":"https:\/\/exalco.ro\/en\/wp-json\/wp\/v2\/media?parent=9184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exalco.ro\/en\/wp-json\/wp\/v2\/categories?post=9184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exalco.ro\/en\/wp-json\/wp\/v2\/tags?post=9184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}