{"id":21899,"date":"2026-04-17T08:40:21","date_gmt":"2026-04-17T07:40:21","guid":{"rendered":"https:\/\/marinaport.hu\/app\/?page_id=21899"},"modified":"2026-04-17T10:41:53","modified_gmt":"2026-04-17T09:41:53","slug":"naplo","status":"publish","type":"page","link":"https:\/\/marinaport.hu\/app\/naplo\/","title":{"rendered":"Napl\u00f3"},"content":{"rendered":"\n<script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-app-compat.js\"><\/script>\n<script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-auth-compat.js\"><\/script>\n<script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-database-compat.js\"><\/script>\n\n<script>\nconst firebaseConfig = {\n  apiKey: \"AIzaSyDyHeexzDlwFVL3kowJ3sDBlXiPjCCVg2w\",\n  authDomain: \"wellness-ee025.firebaseapp.com\",\n  databaseURL: \"https:\/\/wellness-ee025-default-rtdb.firebaseio.com\",\n  projectId: \"wellness-ee025\",\n  storageBucket: \"wellness-ee025.appspot.com\",\n  messagingSenderId: \"196714975370\",\n  appId: \"1:196714975370:web:6548565d62a5e6252ddd73\"\n};\nif (!firebase.apps.length) { firebase.initializeApp(firebaseConfig); }\nconst db = firebase.database();\nconst auth = firebase.auth();\n\n\/\/ Automatikus bejelentkez\u00e9s a Permission Denied elker\u00fcl\u00e9s\u00e9re\nauth.signInAnonymously().catch(err => console.error(\"Auth hiba:\", err));\n<\/script>\n\n<div style=\"font-family: Arial; padding: 20px; border: 1px solid #ccc; border-radius: 8px; max-width: 600px; margin: 20px auto;\">\n    <h3>CSV Borraval\u00f3 Jav\u00edt\u00f3 (Jav\u00edtott Hozz\u00e1f\u00e9r\u00e9s)<\/h3>\n    <input type=\"file\" id=\"csvInput\" accept=\".csv\" style=\"margin-bottom: 20px; width: 100%;\"><br>\n    <button id=\"processBtn\" style=\"padding: 12px 24px; background: #27ae60; color: white; border: none; cursor: pointer; border-radius: 4px; width: 100%;\">Feldolgoz\u00e1s ind\u00edt\u00e1sa<\/button>\n    <div id=\"status\" style=\"margin-top: 20px; padding: 10px; border-radius: 4px; background: #f8f9fa;\">V\u00e1lasszon ki egy f\u00e1jlt!<\/div>\n<\/div>\n\n<script>\ndocument.getElementById('processBtn').addEventListener('click', async () => {\n    const fileInput = document.getElementById('csvInput');\n    const status = document.getElementById('status');\n    \n    if (!fileInput.files.length) { alert(\"V\u00e1lasszon ki egy f\u00e1jlt!\"); return; }\n\n    const file = fileInput.files[0];\n    const reader = new FileReader();\n\n    reader.onload = async (e) => {\n        try {\n            status.innerHTML = \"Elemz\u00e9s...\";\n            const lines = e.target.result.split(\/\\r?\\n\/).filter(l => l.trim() !== \"\");\n            const separator = lines[0].includes(';') ? ';' : ',';\n            const clean = (str) => str ? str.replace(\/\"\/g, '').trim() : \"\";\n\n            const headers = lines[0].split(separator).map(clean);\n            const datumIdx = headers.indexOf(\"D\u00e1tum\");\n            const transIdIdx = headers.indexOf(\"Tranzakci\u00f3 azonos\u00edt\u00f3\");\n            const szamlaszamIdx = headers.indexOf(\"Sz\u00e1mlasz\u00e1m\");\n\n            if (datumIdx === -1 || transIdIdx === -1) throw new Error(\"Hib\u00e1s CSV fejl\u00e9c!\");\n\n            const egyediDatumok = new Set();\n            for (let i = 1; i < lines.length; i++) {\n                const cells = lines[i].split(separator);\n                if (cells[datumIdx]) {\n                    const d = clean(cells[datumIdx]).substring(0, 10);\n                    if (d.match(\/^\\d{4}-\\d{2}-\\d{2}$\/)) egyediDatumok.add(d);\n                }\n            }\n\n            status.innerHTML = \"Adatb\u00e1zis lek\u00e9rdez\u00e9se...\";\n            const tipMap = new Map();\n            \n            \/\/ Lek\u00e9rdez\u00e9s hibakezel\u00e9ssel\n            const promises = Array.from(egyediDatumok).map(nap => \n                db.ref(`Klubkartya naplo\/${nap}`).get().then(snap => {\n                    if (snap.exists()) {\n                        Object.values(snap.val()).forEach(tr => {\n                            if (tr.transactionId) tipMap.set(String(tr.transactionId), tr.tipAmount || 0);\n                        });\n                    }\n                })\n            );\n\n            await Promise.all(promises);\n\n            status.innerHTML = \"CSV friss\u00edt\u00e9se...\";\n            \n            \/\/ M\u00d3DOS\u00cdT\u00c1S 1: A fejl\u00e9cben l\u00e9v\u0151 \"Sz\u00e1mlasz\u00e1m\" sz\u00f3t \u00e1t\u00edrjuk \"Borraval\u00f3\"-ra\n            const modositottFejlec = lines[0].replace(\"Sz\u00e1mlasz\u00e1m\", \"Borraval\u00f3\");\n            const resultLines = [modositottFejlec];\n\n            for (let i = 1; i < lines.length; i++) {\n                let cells = lines[i].split(separator);\n                const tId = clean(cells[transIdIdx]);\n                if (tipMap.has(tId)) {\n                    cells[szamlaszamIdx] = `\"${tipMap.get(tId)}\"`;\n                }\n                resultLines.push(cells.join(separator));\n            }\n\n            const blob = new Blob([\"\\ufeff\" + resultLines.join('\\r\\n')], { type: 'text\/csv;charset=utf-8;' });\n            const link = document.createElement(\"a\");\n            link.href = URL.createObjectURL(blob);\n            link.download = \"kesz_\" + file.name;\n            link.click();\n            \n            \/\/ M\u00d3DOS\u00cdT\u00c1S 2: A let\u00f6lt\u00e9s ut\u00e1ni \u00fczenet kieg\u00e9sz\u00edt\u00e9se\n            status.innerHTML = \"Sikeresen elk\u00e9sz\u00fclt \u00e9s let\u00f6ltve!\";\n            status.style.color = \"green\";\n\n        } catch (err) {\n            status.innerHTML = \"HIBA: \" + err.message;\n            status.style.color = \"red\";\n        }\n    };\n    reader.readAsText(file);\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>CSV Borraval\u00f3 Jav\u00edt\u00f3 (Jav\u00edtott Hozz\u00e1f\u00e9r\u00e9s) Feldolgoz\u00e1s ind\u00edt\u00e1sa V\u00e1lasszon ki egy f\u00e1jlt!<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-21899","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/pages\/21899","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/comments?post=21899"}],"version-history":[{"count":29,"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/pages\/21899\/revisions"}],"predecessor-version":[{"id":21928,"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/pages\/21899\/revisions\/21928"}],"wp:attachment":[{"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/media?parent=21899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}