3 Commits
Author SHA1 Message Date
Adam c783502481 Merge branch 'FruitBank_v0.0.8.2' of https://git.aycode.com/Adam/Mango.Nop.Plugins into FruitBank_v0.0.8.2 2026-08-21 15:10:15 +02:00
Adam 444905e3b3 content add 2026-08-21 15:09:38 +02:00
Adam c63ffb7ec6 A funkció-ismertető tudásbázis a plugin kb/ mappájában
- 15 modul-oldal + nyitólap, magyar nyelven, fő adminisztrátoroknak
- közös stíluslap (kb/css/kb.css): saját arculat, sötét mód, nyomtatási nézet, JavaScript nélkül
- a modulok a beérkezés → tervezés → mérés → készlet → rendelés → árrés útvonalat követik
2026-08-21 15:08:02 +02:00
18 changed files with 3727 additions and 0 deletions
@@ -695,6 +695,57 @@
<None Update="js\devextreme\vectormap-utils\dx.vectormaputils.node.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="kb\ai-rendelesfelvetel.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\arres.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\attekinto.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\beerkezes.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\css\kb.css">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\ekaer.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\elorendeles.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\ertesitesek.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\hitelkeret.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\index.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\keszlet.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\leltar.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\meres.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\rendeles.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\szallitmanytervezo.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\szamlazas.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="kb\termek-torzsadat.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Views\Checkout\PendingMeasurementWarning.cshtml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
@@ -0,0 +1,168 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>06 · AI rendelésfelvétel — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html" aria-current="page"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 06</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html" aria-current="page"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">06</div>
<span class="kicker">Modul 06 · Bejövő üzenetek</span>
<h1>AI rendelésfelvétel</h1>
<p class="lead">A vevő úgy rendel, ahogy szokott: üzenetben, telefonon, szabad szöveggel. A rendszer ebből tételes rendelés-piszkozatot készít, amit az admin egy képernyőn hagy jóvá.</p>
<div class="chips">
<span class="chip">nopCommerce admin</span>
<span class="chip chip--live">Élesben működik</span>
<span class="chip">Minden tétel admin-jóváhagyással</span>
</div>
</div>
<section class="section" id="mire-valo">
<h2 data-n="01">Mire való</h2>
<p>A nagykereskedelmi rendelések java része nem webshop-kosárból érkezik, hanem üzenetben: <em>„holnapra kérek 3 raklap almát és 20 láda paradicsomot"</em>. Ez a modul azt a gépelési munkát veszi le, ami eddig ebből keletkezett — <strong>a döntést nem</strong>.</p>
<p>A piszkozat nem külön rendelési út: jóváhagyás után <a href="elorendeles.html">előrendelés</a> lesz belőle, és onnan ugyanazon a csövön megy tovább, mint minden más.</p>
</section>
<section class="section" id="folyamat">
<h2 data-n="02">A folyamat</h2>
<ol class="steps">
<li><strong>Beérkezés</strong> Külső rendszer — üzenetküldő bot, e-mail feldolgozó, diktáló alkalmazás — átadja a nyers szöveget és a küldő azonosítóját. A csatorna kulccsal védett.</li>
<li><strong>Partner felismerése</strong> A rendszer a korábban megtanult hozzárendelésekből azonosítja a küldőt. Ha nem ismeri fel, a piszkozat partner nélkül jön létre, és az admin rendeli hozzá.</li>
<li><strong>Szétbontás szállítási napokra</strong> Az AI kiolvassa az üzenetből az átvételi dátumokat, és <strong>naponként külön piszkozatot</strong> készít. A négy napnál távolabbi dátum előrendelésnek minősül, a közelebbi azonnalinak.</li>
<li><strong>Termékfelismerés tételenként</strong> Három forrásból: a korábbi admin döntések ugyanerre a szövegre, az AI által javasolt kanonikus terméknév és kulcsszavak, végül a webshop saját termékkeresője. Az eredmény egy rangsorolt javaslatlista, az első előre kiválasztva.</li>
<li><strong>Admin ellenőrzés</strong> Listaképernyő a beérkezett piszkozatokkal — a 20 óránál régebben várakozó sürgősként jelenik meg. A részletek oldalon tételenként cserélhető a termék, módosítható a mennyiség, hozzárendelhető a partner.</li>
<li><strong>Jóváhagyás</strong> Csak akkor engedi, ha van partner, és <strong>minden tételnél ki van választva a termék</strong>. Ekkor a rendszer előrendelést hoz létre, és azonnal lefuttatja rá a konverziót.</li>
</ol>
</section>
<section class="section" id="tanulas">
<h2 data-n="03">Hogyan tanul a rendszer</h2>
<p>Minden jóváhagyás két dolgot tanít meg:</p>
<dl class="facts">
<div><dt>Külső felhasználó → partner</dt><dd>Ha egyszer hozzárendelte a küldőt egy partnerhez, legközelebb a rendszer magától felismeri.</dd></div>
<div><dt>Nyers szöveg → termék</dt><dd>„paradi", „koktél paradicsom", „TV paradicsom" — a rendszer az utolsó öt döntést használja arra, hogy ugyanarra a szövegre előre sorolja a helyes terméket.</dd></div>
</dl>
<div class="note">
<span class="note__label">Hibrid felismerés</span>
<p>A sorrendet <strong>nem az AI</strong> adja, hanem a korábbi admin döntések: a tanult megfeleltetések előre kerülnek, és csak az azon túli jelöltek rangsorolásába szól bele az AI. Így minél régebb óta használják, annál pontosabb — és a pontosság nem függ attól, hogy az AI épp mit gondol.</p>
</div>
</section>
<section class="section" id="hangos">
<h2 data-n="04">Hangos rendelésfelvétel</h2>
<p>Külön képernyő az adminban ugyanerre a feladatra, telefonos rendelésfelvételhez. Két lépésben dolgozik:</p>
<ol class="steps">
<li><strong>Partner</strong> A kolléga bemondja a partner nevét — a rendszer leírja és megkeresi az egyező partnereket. Gépelve is működik, ha a mikrofon nem opció.</li>
<li><strong>Tételek</strong> A termékek és mennyiségek bemondása, amit az AI tételekre bont. Ez is beírható kézzel.</li>
</ol>
<div class="note">
<span class="note__label">Elérés</span>
<p><span class="path">FruitBank → Hangos rendelés</span></p>
</div>
</section>
<section class="section" id="lejarat">
<h2 data-n="05">Lejárat</h2>
<p>A 14 napnál régebben függő piszkozatok automatikusan lejártra váltanak. Ez takarítás, nem törlés: a megnézetlen üzenetek nem tűnnek el, csak kikerülnek az aktív listából.</p>
</section>
<section class="section" id="korlatok">
<h2 data-n="06">Amit a modul ma nem csinál</h2>
<div class="note note--limit">
<span class="note__label">Korlát</span>
<p>Nincs automatikus jóváhagyás és nincs bizonyossági pontszám — <strong>minden piszkozatot ember hagy jóvá</strong>. A mennyiségek és mértékegységek normalizálása is a szövegértelmezésre támaszkodik, külön szabályrendszer nélkül. Az „azonnali vagy előrendelés" döntés fix négynapos határ, nem AI-döntés.</p>
</div>
</section>
<section class="section" id="hol">
<h2 data-n="07">Hol található</h2>
<dl class="facts">
<div><dt>Piszkozatok listája</dt><dd>Admin — rendelés-piszkozatok; a 20 óránál régebbiek sürgősként kiemelve</dd></div>
<div><dt>Piszkozat részletei</dt><dd>A listából; tételenkénti termékválasztás és partner-hozzárendelés</dd></div>
<div><dt>Hangos rendelés</dt><dd><span class="path">FruitBank → Hangos rendelés</span></dd></div>
</dl>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="08">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="elorendeles.html">Előrendelés</a>
<a href="rendeles.html">Rendelés és árazás</a>
<a href="beerkezes.html">Beérkezés</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 06 · AI rendelésfelvétel</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
+224
View File
@@ -0,0 +1,224 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>09 · Árrés és önköltség — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html" aria-current="page"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 09</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html" aria-current="page"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">09</div>
<span class="kicker">Modul 09 · Pénzügyi kép</span>
<h1>Árrés és önköltség</h1>
<p class="lead">A kiadott áru visszavezetve pontosan arra a beszerzésre, amiből származik — a fuvarral és az extra költségekkel arányosan terhelve. Ebből áll elő a nyereség szállítólevél, kamion és hónap bontásban.</p>
<div class="chips">
<span class="chip">nopCommerce admin</span>
<span class="chip chip--live">Élesben működik</span>
<span class="chip chip--part">Egyes finomítások folyamatban</span>
</div>
</div>
<section class="section" id="reteg">
<h2 data-n="01">Az elszámolás egysége: a költség-réteg</h2>
<p>Minden <strong>szállítólevél-tétel egy költség-réteg</strong>: egy adott beszállítótól, egy adott napon, egy adott áron érkezett árutétel. Ha ugyanabból a termékből három szállítmány érkezett három áron, az három réteg — és az eladott áru azonosítható módon az egyikből fogy.</p>
<div class="note">
<span class="note__label">Miért a szállítólevél-tétel</span>
<p>Mert a beszerzési ár is ott van. Terméknél átlagolni kellene, kamionnál pedig elveszne a beszállítónkénti bontás — a szállítólevél-tétel az a szint, ahol az ár, a mennyiség és a dátum együtt igaz.</p>
</div>
</section>
<section class="section" id="hozzarendeles">
<h2 data-n="02">Hozzárendelés: mikor és hogyan</h2>
<p>A hozzárendelés <strong>a rendelés lezárásakor</strong> történik, ugyanabban a lépésben, mint a készletlevonás. Nem külön futtatandó feladat.</p>
<ol class="steps">
<li><strong>FIFO alapszabály</strong> A kiadott áru a legrégebbi rétegből fogy először, a szállítólevél dátuma szerint.</li>
<li><strong>Előrendelésnél pontos forrás</strong> Ha a rendelés egy előrendelésből keletkezett, a rendszer tudja, melyik szállítólevél teljesítette — annak a rétegei fogynak először. Ha az elfogyott, a maradék a valós készletre kerül, nem „ismeretlen forrásúra".</li>
<li><strong>Vezérlő mértékegység</strong> A fogyasztás mértékegysége követi az árazást: mérendő terméknél <strong>kilogramm</strong>, nem mérendőnél <strong>rekesz</strong>. A másik dimenzió arányosan töltődik.</li>
<li><strong>Ha nincs réteg</strong> A sor „ismeretlen forrású" jelölést kap, és naplóba is kerül. Nulla önköltséggel <strong>soha nem olvad be</strong> a számításba — külön soron jelenik meg a riportban.</li>
<li><strong>Leltári hiány</strong> Ugyanez a mechanizmus fut a leltár záráskor is: a hiány fogyaszt réteget. A többlet nem — ahhoz nem tartozik beszerzés.</li>
</ol>
<div class="note">
<span class="note__label">Ismételhető</span>
<p>A folyamat idempotens: ha egy tételhez már van fogyasztás-sor, újabb nem keletkezik. Egy megismételt lezárás nem duplázza az önköltséget.</p>
</div>
</section>
<section class="section" id="szamitas">
<h2 data-n="03">A számítás</h2>
<p>Minden érték <strong>nettó</strong> és <strong>forint</strong>.</p>
<div class="tablewrap">
<table>
<thead><tr><th>Elem</th><th>Hogyan áll elő</th></tr></thead>
<tbody>
<tr><td>Fajlagos önköltség</td><td>A tétel nettó végösszege × árfolyam ÷ a <strong>mért</strong> mennyiség</td></tr>
<tr><td>Áru-önköltség</td><td>Fajlagos önköltség × az eladott mennyiség</td></tr>
<tr><td>Fuvar-hányad</td><td>A kamion költségei raklap-arányosan a tételre, majd az eladott hányadra szűkítve</td></tr>
<tr><td>Extra-hányad</td><td>A szállítólevél költségei (vám, rakodás) raklap-arányosan, ugyanígy szűkítve</td></tr>
<tr><td>Árbevétel</td><td>Az eladott mennyiség × a rendelés nettó egységára</td></tr>
<tr><td><strong>Árrés</strong></td><td>Árbevétel áru-önköltség fuvar extra</td></tr>
</tbody>
</table>
</div>
<div class="note">
<span class="note__label">Az osztó a tényleges rakomány</span>
<p>A fuvardíj a kamionon <strong>ténylegesen elfoglalt</strong> raklapszámra oszlik, nem a kapacitásra. Egy félig pakolt kamion tehát drágábbá teszi az árut — és ez így is helyes, mert a díjat teljes egészében ki kellett fizetni.</p>
</div>
<div class="note">
<span class="note__label">A maradék a készletben ül</span>
<p>A fuvar és az extra költség a teljes tételre szól, de csak az eladott hányada költség. Ami még nem kelt el, az a készlet értékében marad — a riport <em>Maradt</em> oszlopa mutatja, mennyi az.</p>
</div>
</section>
<section class="section" id="koltsegek">
<h2 data-n="04">Költségek rögzítése</h2>
<p>Egy költségsor tulajdonosa <strong>pontosan az egyik</strong>: vagy a kamion, vagy a szállítólevél. Ezt az adatbázis is őrzi, tehát a kettő nem keveredhet.</p>
<div class="tablewrap">
<table>
<thead><tr><th>Költségtípus</th><th>Kihez tartozik</th></tr></thead>
<tbody>
<tr><td>Fuvardíj</td><td>A kamionhoz — a rajta lévő összes tétel osztozik rajta</td></tr>
<tr><td>Vám</td><td>A szállítólevélhez</td></tr>
<tr><td>Rakodás</td><td>A szállítólevélhez</td></tr>
<tr><td>Egyéb</td><td>Amelyikhez tartozik</td></tr>
</tbody>
</table>
</div>
<p>Az összeg mindig nettó, a saját devizájában, a rögzítéskor befagyasztott árfolyammal. Felület: <span class="path">FruitBank → Szállítmány-költségek</span>.</p>
</section>
<section class="section" id="arfolyam">
<h2 data-n="05">Két árfolyam-forrás, és ez így helyes</h2>
<p>Ugyanahhoz a szállítólevélhez <strong>jogosan tartozhat két különböző forintérték</strong>. A kettő „egységesítése" kézenfekvőnek tűnik, de hibás lenne.</p>
<div class="tablewrap">
<table>
<thead><tr><th>Mihez</th><th>Milyen árfolyam</th><th>Miért</th></tr></thead>
<tbody>
<tr><td>Önköltség, árrés</td><td>A webshop pénznem-nyilvántartása</td><td>Számviteli szám: a tényleges átváltás felel meg neki</td></tr>
<tr><td>EKÁER-bejelentés</td><td>A NAV által megadott, fix éves árfolyam</td><td>Jogi artefaktum: a NAV ezt követeli meg</td></tr>
</tbody>
</table>
</div>
<div class="note note--warn">
<span class="note__label">Ismeretlen pénznem</span>
<p>Ha egy partnernél nincs beállítva pénznem, az árfolyam <strong>0 marad, nem 1</strong>. Az 1-es szorzó forintnak venné a devizát, és a hiba mindig ugyanabba az irányba vinne: az önköltség töredékére, az árrés pedig felfelé. Belföldi partnernél a hiányzó pénznem forintra egészül ki, mert ott az 1 valóban helyes.</p>
</div>
</section>
<section class="section" id="riport">
<h2 data-n="06">Az árrés-kimutatás</h2>
<p>Elérés: <span class="path">FruitBank → Árrés-kimutatás</span>.</p>
<dl class="facts">
<div><dt>Időszak</dt><dd>Az <strong>eladás</strong> dátumára szűr — arra, amikor a rendelés lezárult, nem arra, amikor az áru megérkezett.</dd></div>
<div><dt>Bontás</dt><dd>Szállítólevél, kamion vagy hónap szerint.</dd></div>
<div><dt>Külön jelölve</dt><dd>Ismeretlen forrású sorok, beszerzési érték nélküli tételek, kamionhoz nem rendelt tételek, nem megbízható árfolyam.</dd></div>
</dl>
<div class="note">
<span class="note__label">Visszamenőleges javulás</span>
<p>Tárolt adat egyedül az elfogyasztott mennyiség — minden pénzügyi érték lekérdezésből áll elő. Ezért egy később érkező, helyesbített beszállítói vagy fuvarszámla <strong>visszamenőleg átüt</strong> a riporton. Nem kell újraszámoltatni semmit.</p>
</div>
</section>
<section class="section" id="korlatok">
<h2 data-n="07">Jelenlegi korlátok</h2>
<div class="note note--limit">
<span class="note__label">Árfolyam dátuma</span>
<p>Az árfolyam ma a <strong>rögzítés</strong> pillanatában fagy be: a szállítólevélnél a bevételezéskor, a költségsornál a bevitel napján. Egy késve érkező fuvarszámlánál ez gyakorlatilag véletlen dátum. A megoldás nem a dátum cseréje, hanem szabadon megadható dátumú historikus árfolyam-lekérdezés — ez még nem készült el. Addig a mostani viselkedés vállalt, mert a fuvar aránya kicsi az önköltségben.</p>
</div>
<div class="note note--limit">
<span class="note__label">Régi adatok</span>
<p>Az előrendelésekhez tartozó pontos beszerzési forrás csak a nyilvántartás bevezetése óta áll rendelkezésre; a korábbi konverzióknál FIFO-becslés érvényes. Régi szállítmányoknál, ahol nincs kamion-hozzárendelés, a fuvarköltség nullaként viselkedik.</p>
</div>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="08">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="szallitmanytervezo.html">Szállítmánytervező</a>
<a href="beerkezes.html">Beérkezés</a>
<a href="rendeles.html">Rendelés és árazás</a>
<a href="leltar.html">Leltár</a>
<a href="keszlet.html">Készlet</a>
<a href="elorendeles.html">Előrendelés</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 09 · Árrés és önköltség</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
+158
View File
@@ -0,0 +1,158 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>00 · Vezetői áttekintő — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html" aria-current="page"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 00</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html" aria-current="page"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">00</div>
<span class="kicker">Modul 00 · Nyitóképernyő</span>
<h1>Vezetői áttekintő</h1>
<p class="lead">Az admin nyitólapja nem statisztika, hanem munkalista: azt mutatja, hol áll ma a napi forgalom, és mi az, ami emberi beavatkozásra vár.</p>
<div class="chips">
<span class="chip">nopCommerce admin</span>
<span class="chip chip--live">Élesben működik</span>
</div>
</div>
<section class="section" id="mire-valo">
<h2 data-n="01">Mire való</h2>
<p>A nyitóképernyő a FruitBank saját operatív panelje, ami a nopCommerce admin kezdőlapjára épül be. Betöltése külön, háttérben történik, így a kezdőlap akkor is azonnal megjelenik, ha az adatok lekérése lassabb.</p>
<p>Egy pillantással megválaszolja azt a négy kérdést, amivel a nap kezdődik: <em>mennyi a mai forgalom, hol tart a mérés, mi akadt el, és kinél fogy a hitelkeret.</em></p>
</section>
<section class="section" id="mit-mutat">
<h2 data-n="02">Mit mutat</h2>
<h3>Számlálók</h3>
<p>A képernyő tetején öt szám, mind a mai napra:</p>
<dl class="facts">
<div><dt>Mai rendelés</dt><dd>A mai napra felvett rendelések darabszáma.</dd></div>
<div><dt>Mérés alatt</dt><dd>Ahol a mérlegelés elindult, de még nem zárult le.</dd></div>
<div><dt>Auditálva</dt><dd>Lemért és ellenőrzött rendelés — kiadható, számlázható.</dd></div>
<div><dt>InnVoice hiányzik</dt><dd>Lezárt rendelés, aminek még nincs InnVoice-beküldése. Ha van ilyen, a doboz <strong>pirosra vált</strong>.</dd></div>
<div><dt>Befejezve</dt><dd>Teljesen lezárt rendelés.</dd></div>
</dl>
<h3>Mai rendelések</h3>
<p>Táblázat rendelésszámmal, partnerrel, összeggel, mérési és rendelési állapottal, InnVoice-pipával és az átvétel dátumával. Minden sor a rendelés szerkesztő oldalára visz.</p>
<h3>Figyelmet igénylő tételek</h3>
<p>Ez a piros fejlécű blokk csak akkor jelenik meg, ha van mit jelezni. Négyféle riasztást gyűjt össze:</p>
<div class="tablewrap">
<table>
<thead><tr><th>Riasztás</th><th>Mit jelent</th><th>Hova visz</th></tr></thead>
<tbody>
<tr><td>InnVoice</td><td>Lezárt rendelés beküldés nélkül</td><td>Rendelés szerkesztése</td></tr>
<tr><td>Régi mérés</td><td>Elindult, de régóta befejezetlen mérés</td><td>Rendelés szerkesztése</td></tr>
<tr><td>Hitelkeret</td><td>A partner túllépte a limitjét</td><td>Hitelkeret részletei</td></tr>
<tr><td>Előrendelés</td><td>Régóta nyitott előrendelés</td><td>Előrendelések listája</td></tr>
</tbody>
</table>
</div>
<h3>Összecsukott blokkok</h3>
<p>Három további panel, alapból becsukva — akkor nyílnak ki, ha rákattint:</p>
<ol class="steps">
<li><strong>Hitelkeret státusz</strong> Partnerenként a limit, a kint lévő összeg és a szabad keret. A közel a limithez sárga, a túllépett piros sorral jelenik meg.</li>
<li><strong>Nyitott előrendelések</strong> Partner, létrehozás dátuma, tételek száma és abból hány teljesült.</li>
<li><strong>Feldolgozatlan szállítmányok</strong> Beérkezett szállítólevelek, ahol a tételek mérése még nem teljes.</li>
</ol>
</section>
<section class="section" id="hasznalat">
<h2 data-n="03">Napi használat</h2>
<div class="note">
<span class="note__label">Javasolt rutin</span>
<p>Reggel: a <em>Figyelmet igénylő tételek</em> blokk kiürítése. Ha az üres, a nap tiszta lappal indul. Délután: az <em>InnVoice hiányzik</em> számláló nullázása, hogy a napi számlázás ne csússzon át másnapra.</p>
</div>
<div class="note note--limit">
<span class="note__label">Korlát</span>
<p>A panel adatai a <strong>mai napra</strong> szűrnek, és az oldal betöltésekor frissülnek — nem élő, magától frissülő képernyő. Húsz rendelés fölött a táblázat rövidül, a teljes lista az <span class="path">Összes rendelés →</span> hivatkozáson érhető el.</p>
</div>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="04">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="rendeles.html">Rendelés és árazás</a>
<a href="hitelkeret.html">Vevői hitelkeret</a>
<a href="elorendeles.html">Előrendelés</a>
<a href="beerkezes.html">Beérkezés</a>
<a href="szamlazas.html">Számlázás — InnVoice</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 00 · Vezetői áttekintő</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
+207
View File
@@ -0,0 +1,207 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>01 · Beérkezés — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html" aria-current="page"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 01</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html" aria-current="page"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">01</div>
<span class="kicker">Modul 01 · Bejövő irány</span>
<h1>Beérkezés</h1>
<p class="lead">A beszállítói kamion, a rajta érkező szállítólevelek és azok tételei. Innen indul minden: a készlet, az önköltség és az EKÁER-bejelentés is ebből az adatból él.</p>
<div class="chips">
<span class="chip">nopCommerce admin</span>
<span class="chip">Raktári alkalmazás</span>
<span class="chip chip--live">Élesben működik</span>
</div>
</div>
<section class="section" id="szerkezet">
<h2 data-n="01">A beérkezés szerkezete</h2>
<p>Három szint, felülről lefelé. A megkülönböztetés azért fontos, mert <strong>egy kamionon több beszállító árut is hozhat</strong> — a költségek egy része a kamionra, másik része a szállítólevélre szól.</p>
<div class="formula" aria-label="A beérkezés adatszerkezete">
<b>SZÁLLÍTMÁNY</b> a kamion: rendszám, pótkocsi, szállítás napja, fuvarozó
└── <b>SZÁLLÍTÓLEVÉL</b> beszállítónként egy: partner, telephely, deviza, PDF/fotó
└── <b>TÉTEL</b> termék, mennyiség, bruttó és nettó súly, egységár, nettó végösszeg
└── <b>MÉRÉS</b> a tényleges mérlegelés rekordjai
</div>
<div class="note">
<span class="note__label">Miért így</span>
<p>A <em>fuvardíj</em> a kamionhoz tartozik, és a rajta lévő összes tétel között oszlik el raklap-arányosan. A <em>vám</em> és a <em>rakodás</em> ezzel szemben egy adott szállítólevélhez. Ez a két szint választása adja az árrés-számítás pontosságát.</p>
</div>
</section>
<section class="section" id="folyamat">
<h2 data-n="02">A folyamat lépésről lépésre</h2>
<ol class="steps">
<li><strong>A kamion rögzítése</strong> Rendszám, pótkocsi, szállítás dátuma, fuvarozó partner. Az adatokból később az EKÁER-bejelentés jármű-mezői is töltődnek, ezért a rendszám és az országjelzés kitöltése nem formaság.</li>
<li><strong>Szállítólevél felvitele</strong> Beszállító partner és annak telephelye, a dokumentum devizája, valamint a fotózott vagy szkennelt szállítólevél feltöltése.</li>
<li><strong>AI dokumentum-olvasás</strong> A feltöltött képből vagy PDF-ből a rendszer kiolvassa a beszállító nevét, a tételeket, a mennyiséget, az egységárat és a nettó tétel-végösszeget. Az eredmény szerkeszthető listaként jelenik meg — <strong>az admin ellenőrzi és javítja</strong>, csak utána mentődik.</li>
<li><strong>Tételek véglegesítése</strong> Terméktársítás, a szállítólevélen szereplő mennyiség és súlyok. A tétel örökli a termék mérendőségét a törzsadatból.</li>
<li><strong>Mérlegelés</strong> A raktárban, a raktári alkalmazásból. Részletek: <a href="meres.html">Mérlegelés</a>.</li>
<li><strong>Automatikus továbbgyűrűzés</strong> Minden mentett mérés után frissül a tétel összesített súlya és mennyisége, majd a szállítólevél és a szállítmány „minden lemérve" jelzése.</li>
</ol>
</section>
<section class="section" id="ai-olvasas">
<h2 data-n="03">Az AI dokumentum-olvasás</h2>
<p>A szállítólevél fényképéből kiolvasott adatok a felületen ellenőrizhetők és javíthatók. Két dolgot a rendszer <strong>szándékosan nem az AI-ra bíz</strong>, mert azok levezethetők, és két egymásnak ellentmondó forrás rosszabb, mint egy:</p>
<dl class="facts">
<div>
<dt>Áfakulcs</dt>
<dd>A beszállító országkódjából adódik: nem magyar partner esetén 0. Belföldinél az admin adja meg.</dd>
</div>
<div>
<dt>Nettó tétel-végösszeg</dt>
<dd>Elsősorban a dokumentumról. Ha az AI nem talált sor-végösszeget, a rendszer az <em>egységár × mennyiség</em> szorzatból számolja — némán nullán soha nem hagyja, mert abból hibás önköltség lenne.</dd>
</div>
<div>
<dt>Deviza és árfolyam</dt>
<dd>A deviza a partner adatlapjáról jön, az árfolyam a bevételezés pillanatában rögzül a dokumentumra. Ismeretlen pénznemnél az árfolyam 0 marad, nem 1 — az 1-es szorzó forintnak venné a devizát, és mindig ugyanabba az irányba torzítana.</dd>
</div>
</dl>
<div class="note note--warn">
<span class="note__label">Fontos</span>
<p>A kiolvasott adat <strong>javaslat</strong>. A beszerzési érték innen indul, és ez a szám adja később a fajlagos önköltséget — egy elgépelt végösszeg az árrés-kimutatáson jelenik meg, hetekkel később.</p>
</div>
</section>
<section class="section" id="deklaralt-mert">
<h2 data-n="04">Deklarált és mért adat egymás mellett</h2>
<p>A rendszer nem írja felül a szállítólevélen szereplő adatot a lemérttel — mindkettőt megőrzi, így az eltérés utólag is látszik és reklamálható.</p>
<div class="tablewrap">
<table>
<thead><tr><th>Adat</th><th>A dokumentumról</th><th>A raktárból</th></tr></thead>
<tbody>
<tr><td>Mennyiség</td><td>Szállítólevélen szereplő</td><td>Mért mennyiség</td></tr>
<tr><td>Bruttó súly</td><td>Szállítólevélen szereplő</td><td>Mért bruttó súly</td></tr>
<tr><td>Nettó súly</td><td>Szállítólevélen szereplő</td><td>Mért nettó súly</td></tr>
</tbody>
</table>
</div>
<div class="note">
<span class="note__label">Az EKÁER kivétele</span>
<p>A NAV-bejelentés <strong>a dokumentumon szereplő</strong> bruttó súllyal megy ki, nem a későbbi mérleggel — a bejelentés a kísérő okmány adatairól szól.</p>
</div>
</section>
<section class="section" id="kovetkezmeny">
<h2 data-n="05">Mi indul el egy beérkezéstől</h2>
<dl class="facts">
<div><dt>Készlet</dt><dd>A bevételezés növeli a darabszámot és a súly-egyenleget, naplóbejegyzéssel.</dd></div>
<div><dt>Előrendelés</dt><dd>A beérkező mennyiségre a rendszer automatikusan kiosztja a várakozó előrendeléseket, és valódi rendeléseket hoz létre belőlük.</dd></div>
<div><dt>Várható készlet</dt><dd>A tétel felvitele és módosítása szinkronban tartja a termék „beérkezés alatt" mennyiségét.</dd></div>
<div><dt>Önköltség</dt><dd>Minden szállítólevél-tétel egy <strong>költség-réteg</strong> lesz, amiből a későbbi eladások fogyasztanak.</dd></div>
<div><dt>EKÁER</dt><dd>A fuvar bejelentés-kötelezettségét a rendszer a szállítmány adataiból értékeli.</dd></div>
<div><dt>Kamion-hozzárendelés</dt><dd>A tételek a <a href="szallitmanytervezo.html">szállítmánytervezőben</a> kerülnek kamionokra — egy szállítólevél tételei több kamionra is bomolhatnak.</dd></div>
</dl>
</section>
<section class="section" id="torles">
<h2 data-n="06">Szállítólevél törlése</h2>
<p>A törlés a tételeivel és azok méréseivel együtt történik. A rendszer viszont <strong>megtagadja a törlést</strong>, ha a dokumentumból már teljesült előrendelés: a konverzió szétosztotta a beérkezett árut valódi rendelésekre, és a törlés ezt nem fordítaná vissza.</p>
<div class="note note--limit">
<span class="note__label">Ilyenkor mi a teendő</span>
<p>Előbb a konverzióból keletkezett rendeléseket kell rendezni, és csak utána törölhető a szállítólevél.</p>
</div>
</section>
<section class="section" id="hol">
<h2 data-n="07">Hol található</h2>
<dl class="facts">
<div><dt>Szállítmányok</dt><dd>Raktári alkalmazás, illetve a nopCommerce admin <span class="path">FruitBank → Szállítmányok</span> menüpontja</dd></div>
<div><dt>Dokumentum-kiolvasás</dt><dd>A szállítólevél szerkesztő felületén, a feltöltött fájl mellett</dd></div>
<div><dt>Szállítmány-költségek</dt><dd><span class="path">FruitBank → Szállítmány-költségek</span></dd></div>
</dl>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="08">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="szallitmanytervezo.html">Szállítmánytervező</a>
<a href="meres.html">Mérlegelés</a>
<a href="elorendeles.html">Előrendelés</a>
<a href="keszlet.html">Készlet</a>
<a href="arres.html">Árrés és önköltség</a>
<a href="ekaer.html">EKÁER</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 01 · Beérkezés</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
+680
View File
@@ -0,0 +1,680 @@
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,600;9..144,700;9..144,900&family=Karla:wght@300;400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');
/* ==========================================================================
FruitBank tudásbázis — közös stíluslap
Arculat: "raktári papír" — meleg papír alap, olívtinta betű, paprikapiros
kiemelés, sárgaréz másodlagos szín. Fraunces / Karla / IBM Plex Mono.
Nincs JavaScript: a mobil menü <details>, a téma prefers-color-scheme.
========================================================================== */
/* --- Tokenek ------------------------------------------------------------- */
:root {
--paper: #F6F1E6;
--paper-2: #FBF8F1;
--paper-sunk: #EDE6D6;
--ink: #191C13;
--ink-2: #3D4433;
--ink-3: #6B7361;
--hairline: #CFC7B3;
--hairline-2: #E0D9C7;
--accent: #B23A15; /* paprika */
--accent-soft: #F2DCD2;
--olive: #40602C; /* leveles zöld */
--olive-soft: #DFE6D2;
--brass: #A87A22; /* sárgaréz */
--brass-soft: #F1E4C6;
--shadow-lift: 0 1px 0 var(--hairline-2), 0 18px 40px -28px rgba(25, 28, 19, .55);
--shadow-flat: 0 1px 0 var(--hairline-2);
--serif: 'Fraunces', 'Iowan Old Style', Georgia, 'Times New Roman', serif;
--sans: 'Karla', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
--mono: 'IBM Plex Mono', 'Cascadia Mono', Consolas, 'Courier New', monospace;
--rail-w: 17.5rem;
--measure: 68ch;
--radius: 3px;
}
@media (prefers-color-scheme: dark) {
:root {
--paper: #14170F;
--paper-2: #1B1F16;
--paper-sunk: #10130B;
--ink: #EDE7D8;
--ink-2: #C6C2B2;
--ink-3: #8E8B7C;
--hairline: #3A4030;
--hairline-2: #2A2F21;
--accent: #E4703F;
--accent-soft: #3A231A;
--olive: #9BBE74;
--olive-soft: #232C1A;
--brass: #D6AC55;
--brass-soft: #2E2716;
--shadow-lift: 0 1px 0 var(--hairline-2), 0 18px 40px -28px rgba(0, 0, 0, .8);
--shadow-flat: 0 1px 0 var(--hairline-2);
}
}
/* --- Alap ---------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html {
-webkit-text-size-adjust: 100%;
scroll-behavior: smooth;
scroll-padding-top: 6.5rem;
}
body {
margin: 0;
background: var(--paper);
color: var(--ink);
font-family: var(--sans);
font-size: 17px;
line-height: 1.65;
font-weight: 400;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
/* Papírszemcse — külső kép nélkül, SVG-zajból */
body::before {
content: '';
position: fixed;
inset: 0;
z-index: 0;
pointer-events: none;
opacity: .5;
mix-blend-mode: multiply;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E");
}
@media (prefers-color-scheme: dark) {
body::before { mix-blend-mode: screen; opacity: .28; }
}
body > * { position: relative; z-index: 1; }
::selection { background: var(--accent); color: var(--paper-2); }
/* --- Tipográfia ---------------------------------------------------------- */
h1, h2, h3, h4 {
font-family: var(--serif);
font-variation-settings: 'SOFT' 20, 'WONK' 1;
font-weight: 700;
line-height: 1.1;
letter-spacing: -.012em;
color: var(--ink);
margin: 0;
text-wrap: balance;
}
h1 { font-size: clamp(2.2rem, 1.4rem + 3.2vw, 3.6rem); font-weight: 900; }
h2 { font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.05rem); }
h3 { font-size: 1.2rem; font-weight: 600; letter-spacing: .002em; }
h4 { font-size: 1.02rem; font-weight: 600; font-family: var(--sans); letter-spacing: .01em; }
p { margin: 0 0 1.1em; max-width: var(--measure); }
p:last-child { margin-bottom: 0; }
a { color: var(--accent); text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover { color: var(--ink); background: var(--accent-soft); }
strong, b { font-weight: 700; color: var(--ink); }
em { font-style: italic; }
code, .mono, kbd {
font-family: var(--mono);
font-size: .845em;
font-weight: 500;
}
code {
background: var(--paper-sunk);
border: 1px solid var(--hairline-2);
border-radius: var(--radius);
padding: .08em .38em;
color: var(--ink-2);
white-space: nowrap;
}
kbd {
background: var(--paper-2);
border: 1px solid var(--hairline);
border-bottom-width: 2px;
border-radius: var(--radius);
padding: .1em .45em;
color: var(--ink);
}
/* Menüútvonal: Admin → Rendelések → … */
.path {
font-family: var(--mono);
font-size: .82em;
font-weight: 500;
color: var(--olive);
background: var(--olive-soft);
border-radius: var(--radius);
padding: .12em .45em;
white-space: nowrap;
}
/* --- Fejléc -------------------------------------------------------------- */
.masthead {
position: sticky;
top: 0;
z-index: 40;
background: color-mix(in srgb, var(--paper) 88%, transparent);
backdrop-filter: blur(9px) saturate(1.2);
border-bottom: 1px solid var(--hairline);
}
.masthead__in {
max-width: 90rem;
margin: 0 auto;
padding: .7rem clamp(1rem, 3vw, 2.5rem);
display: flex;
align-items: center;
gap: 1.2rem;
flex-wrap: wrap;
}
.brand {
display: inline-flex;
align-items: baseline;
gap: .55rem;
text-decoration: none;
color: var(--ink);
}
.brand:hover { background: none; color: var(--ink); }
.brand__mark {
font-family: var(--serif);
font-weight: 900;
font-size: 1.32rem;
letter-spacing: -.02em;
font-variation-settings: 'SOFT' 30, 'WONK' 1;
}
.brand__mark em { font-style: normal; color: var(--accent); }
.brand__sub {
font-family: var(--mono);
font-size: .68rem;
letter-spacing: .16em;
text-transform: uppercase;
color: var(--ink-3);
}
.masthead__meta {
margin-left: auto;
font-family: var(--mono);
font-size: .7rem;
letter-spacing: .1em;
text-transform: uppercase;
color: var(--ink-3);
}
/* --- Váz ----------------------------------------------------------------- */
.shell {
max-width: 90rem;
margin: 0 auto;
padding: 0 clamp(1rem, 3vw, 2.5rem) 5rem;
display: grid;
grid-template-columns: var(--rail-w) minmax(0, 1fr);
gap: clamp(1.5rem, 4vw, 4.5rem);
align-items: start;
}
.shell--wide { grid-template-columns: minmax(0, 1fr); }
main { min-width: 0; padding-top: 2.5rem; }
/* --- Oldalsáv ------------------------------------------------------------ */
.rail {
position: sticky;
top: 4.6rem;
padding-top: 2.5rem;
max-height: calc(100vh - 5.5rem);
overflow-y: auto;
scrollbar-width: thin;
font-size: .93rem;
}
.rail__title {
font-family: var(--mono);
font-size: .68rem;
letter-spacing: .18em;
text-transform: uppercase;
color: var(--ink-3);
padding-bottom: .6rem;
border-bottom: 1px solid var(--hairline);
margin-bottom: .4rem;
}
.rail ol { list-style: none; margin: 0; padding: 0; }
.rail a {
display: grid;
grid-template-columns: 2.1rem 1fr;
gap: .1rem;
align-items: baseline;
padding: .34rem 0 .34rem .1rem;
color: var(--ink-2);
text-decoration: none;
border-bottom: 1px solid transparent;
transition: color .16s ease, background .16s ease;
}
.rail a:hover { color: var(--accent); background: none; }
.rail a span { font-family: var(--mono); font-size: .74rem; color: var(--ink-3); }
.rail a:hover span { color: var(--accent); }
.rail a[aria-current='page'] {
color: var(--ink);
font-weight: 600;
background: linear-gradient(90deg, var(--accent-soft), transparent 82%);
box-shadow: -.55rem 0 0 0 var(--accent);
}
.rail a[aria-current='page'] span { color: var(--accent); }
/* Mobil menü — <details>, nulla JS */
.navdrop { display: none; }
.navdrop > summary {
cursor: pointer;
list-style: none;
font-family: var(--mono);
font-size: .72rem;
letter-spacing: .14em;
text-transform: uppercase;
color: var(--ink-2);
border: 1px solid var(--hairline);
border-radius: var(--radius);
padding: .4rem .7rem;
}
.navdrop > summary::-webkit-details-marker { display: none; }
.navdrop > summary::after { content: ' ▾'; color: var(--accent); }
.navdrop[open] > summary::after { content: ' ▴'; }
/* --- Hőscím -------------------------------------------------------------- */
.hero { position: relative; margin-bottom: 3.2rem; padding-top: 1.6rem; }
.hero__num {
font-family: var(--serif);
font-weight: 900;
font-size: clamp(4.2rem, 3rem + 8vw, 8.5rem);
line-height: .78;
color: transparent;
-webkit-text-stroke: 1.2px var(--hairline-2);
position: absolute;
left: clamp(-4.5rem, -3.2vw, -1.1rem);
top: -.46em;
z-index: -1;
user-select: none;
pointer-events: none;
}
.kicker {
font-family: var(--mono);
font-size: .72rem;
font-weight: 600;
letter-spacing: .2em;
text-transform: uppercase;
color: var(--accent);
display: block;
margin-bottom: .8rem;
}
.lead {
font-family: var(--serif);
font-variation-settings: 'SOFT' 40, 'WONK' 0;
font-size: clamp(1.12rem, 1rem + .5vw, 1.36rem);
line-height: 1.5;
color: var(--ink-2);
margin-top: 1.1rem;
max-width: 46ch;
}
.chips { display: flex; flex-wrap: wrap; gap: .45rem; margin-top: 1.5rem; }
.chip {
font-family: var(--mono);
font-size: .71rem;
letter-spacing: .08em;
text-transform: uppercase;
color: var(--ink-2);
background: var(--paper-2);
border: 1px solid var(--hairline);
border-radius: 999px;
padding: .24rem .7rem;
}
.chip--live { color: var(--olive); border-color: var(--olive); background: var(--olive-soft); }
.chip--part { color: var(--brass); border-color: var(--brass); background: var(--brass-soft); }
.chip--client { color: var(--accent); border-color: var(--accent); background: var(--accent-soft); }
/* --- Szakaszok ----------------------------------------------------------- */
.section { margin: 0 0 3.4rem; scroll-margin-top: 6rem; }
.section > h2 {
padding-bottom: .55rem;
border-bottom: 2px solid var(--ink);
margin-bottom: 1.4rem;
display: flex;
align-items: baseline;
gap: .7rem;
}
.section > h2::before {
content: attr(data-n);
font-family: var(--mono);
font-size: .72rem;
font-weight: 600;
letter-spacing: .1em;
color: var(--accent);
flex: 0 0 auto;
transform: translateY(-.12em);
}
.section > h3 { margin: 2rem 0 .7rem; color: var(--ink); }
.section > h3 + p { margin-top: 0; }
/* --- Lépéssor (rakodólista-sín) ------------------------------------------ */
.steps { list-style: none; margin: 1.4rem 0 0; padding: 0 0 0 2.3rem; position: relative; }
.steps::before {
content: '';
position: absolute;
left: .62rem;
top: .5rem;
bottom: .5rem;
width: 1px;
background: repeating-linear-gradient(var(--hairline) 0 5px, transparent 5px 10px);
}
.steps > li { position: relative; margin-bottom: 1.5rem; }
.steps > li:last-child { margin-bottom: 0; }
.steps > li::before {
counter-increment: step;
content: counter(step, decimal-leading-zero);
position: absolute;
left: -2.3rem;
top: .18em;
width: 1.35rem;
height: 1.35rem;
display: grid;
place-items: center;
font-family: var(--mono);
font-size: .63rem;
font-weight: 600;
color: var(--paper-2);
background: var(--ink);
border-radius: 50%;
}
.steps { counter-reset: step; }
/* Csak a lépés ELSŐ <strong>-ja a címsor; a szövegközi kiemelés inline marad. */
.steps > li > strong:first-child {
display: block;
font-family: var(--sans);
font-size: 1.01rem;
margin-bottom: .18rem;
}
/* --- Tények (fogalom → jelentés) ----------------------------------------- */
.facts { margin: 1.3rem 0 0; display: grid; gap: 0; }
.facts > div {
display: grid;
grid-template-columns: minmax(9rem, 15rem) 1fr;
gap: 0 1.6rem;
padding: .72rem 0;
border-top: 1px solid var(--hairline-2);
align-items: baseline;
}
.facts > div:last-child { border-bottom: 1px solid var(--hairline-2); }
.facts dt {
font-weight: 600;
color: var(--ink);
font-size: .95rem;
}
.facts dd { margin: 0; color: var(--ink-2); font-size: .95rem; }
/* --- Táblázat ------------------------------------------------------------ */
.tablewrap { overflow-x: auto; margin: 1.3rem 0 0; }
table {
border-collapse: collapse;
width: 100%;
min-width: 32rem;
font-size: .92rem;
}
thead th {
text-align: left;
font-family: var(--mono);
font-size: .69rem;
font-weight: 600;
letter-spacing: .12em;
text-transform: uppercase;
color: var(--ink-3);
padding: 0 1rem .5rem 0;
border-bottom: 1.5px solid var(--ink);
white-space: nowrap;
}
tbody td {
padding: .6rem 1rem .6rem 0;
border-bottom: 1px solid var(--hairline-2);
vertical-align: top;
color: var(--ink-2);
}
tbody td:first-child { color: var(--ink); font-weight: 500; }
tbody tr:hover td { background: color-mix(in srgb, var(--brass-soft) 45%, transparent); }
/* --- Kiemelt dobozok ------------------------------------------------------ */
.note {
margin: 1.5rem 0 0;
padding: 1rem 1.2rem 1rem 1.35rem;
background: var(--paper-2);
border-left: 3px solid var(--olive);
border-radius: 0 var(--radius) var(--radius) 0;
box-shadow: var(--shadow-flat);
font-size: .95rem;
}
.note > :first-child { margin-top: 0; }
.note__label {
display: block;
font-family: var(--mono);
font-size: .67rem;
font-weight: 600;
letter-spacing: .17em;
text-transform: uppercase;
color: var(--olive);
margin-bottom: .35rem;
}
.note--warn { border-left-color: var(--accent); }
.note--warn .note__label { color: var(--accent); }
.note--limit { border-left-color: var(--brass); }
.note--limit .note__label { color: var(--brass); }
/* --- Képlet -------------------------------------------------------------- */
.formula {
margin: 1.4rem 0 0;
padding: 1.15rem 1.3rem;
background: var(--paper-sunk);
border: 1px solid var(--hairline-2);
border-radius: var(--radius);
font-family: var(--mono);
font-size: .92rem;
line-height: 1.75;
color: var(--ink);
white-space: pre;
overflow-x: auto;
tab-size: 2;
}
.formula--wrap { white-space: pre-wrap; }
/* Jegyzetdobozba ágyazott képlet: keskenyebb, és alul is kap levegőt. */
.note .formula {
margin: 1rem 0 1.1rem;
padding: .85rem 1rem;
background: var(--paper);
font-size: .87rem;
line-height: 1.6;
}
.formula b { color: var(--accent); font-weight: 600; }
.formula .cmt { color: var(--ink-3); }
/* --- Kártyarács (nyitólap) ----------------------------------------------- */
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(16.5rem, 1fr));
gap: 1px;
background: var(--hairline-2);
border: 1px solid var(--hairline-2);
margin-top: 1.6rem;
}
.card {
display: block;
background: var(--paper);
padding: 1.4rem 1.35rem 1.5rem;
text-decoration: none;
color: inherit;
position: relative;
transition: background .18s ease, transform .18s ease;
}
.card:hover {
background: var(--paper-2);
color: inherit;
transform: translateY(-2px);
z-index: 2;
box-shadow: var(--shadow-lift);
}
.card:hover .card__t { color: var(--accent); }
.card__n {
font-family: var(--mono);
font-size: .69rem;
font-weight: 600;
letter-spacing: .16em;
color: var(--ink-3);
}
.card__t {
font-family: var(--serif);
font-variation-settings: 'SOFT' 20, 'WONK' 1;
font-weight: 700;
font-size: 1.24rem;
line-height: 1.2;
margin: .3rem 0 .45rem;
transition: color .18s ease;
}
.card__d { font-size: .91rem; color: var(--ink-2); line-height: 1.55; margin: 0; }
/* --- Kereszthivatkozás ---------------------------------------------------- */
.crossrefs { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.2rem; }
.crossrefs a {
font-size: .87rem;
text-decoration: none;
color: var(--ink-2);
border: 1px solid var(--hairline);
border-radius: var(--radius);
padding: .3rem .7rem;
background: var(--paper-2);
transition: border-color .16s ease, color .16s ease;
}
.crossrefs a::before { content: '→ '; color: var(--accent); }
.crossrefs a:hover { color: var(--ink); border-color: var(--accent); background: var(--paper-2); }
/* --- Lábléc -------------------------------------------------------------- */
.foot {
border-top: 1px solid var(--hairline);
margin-top: 1rem;
padding: 1.6rem clamp(1rem, 3vw, 2.5rem) 3rem;
max-width: 90rem;
margin-inline: auto;
font-size: .84rem;
color: var(--ink-3);
display: flex;
flex-wrap: wrap;
gap: 1rem 2rem;
align-items: baseline;
}
.foot__mono { font-family: var(--mono); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; }
/* --- Betöltési animáció --------------------------------------------------- */
@keyframes rise {
from { opacity: 0; transform: translateY(14px); }
to { opacity: 1; transform: none; }
}
main > * { animation: rise .55s cubic-bezier(.22, .68, .3, 1) backwards; }
main > *:nth-child(1) { animation-delay: .02s; }
main > *:nth-child(2) { animation-delay: .09s; }
main > *:nth-child(3) { animation-delay: .15s; }
main > *:nth-child(4) { animation-delay: .2s; }
main > *:nth-child(5) { animation-delay: .24s; }
main > *:nth-child(n+6) { animation-delay: .27s; }
@media (prefers-reduced-motion: reduce) {
html { scroll-behavior: auto; }
*, *::before, *::after { animation: none !important; transition: none !important; }
}
/* --- Reszponzív ---------------------------------------------------------- */
@media (max-width: 62rem) {
.shell { grid-template-columns: minmax(0, 1fr); }
.rail { display: none; }
.navdrop { display: block; margin-left: auto; }
.navdrop[open] { flex: 1 0 100%; margin-left: 0; }
.navdrop .rail {
display: block;
position: static;
padding-top: .6rem;
margin-top: .7rem;
max-height: 62vh;
border-top: 1px solid var(--hairline);
}
.navdrop .rail__title { display: none; }
.masthead__meta { display: none; }
main { padding-top: 1.8rem; }
.hero__num { left: -.4rem; top: -.38em; opacity: .55; }
.facts > div { grid-template-columns: 1fr; gap: .15rem; }
}
@media (max-width: 34rem) {
body { font-size: 16px; }
.card { padding: 1.1rem 1.05rem 1.2rem; }
}
/* --- Nyomtatás ----------------------------------------------------------- */
@media print {
:root { --paper: #fff; --paper-2: #fff; --paper-sunk: #f4f4f4; --ink: #000; --ink-2: #222; --ink-3: #555; }
body::before, .masthead, .rail, .navdrop, .crossrefs { display: none !important; }
.shell { display: block; padding: 0; }
main { padding-top: 0; }
.hero__num { -webkit-text-stroke-color: #ccc; }
.section { page-break-inside: avoid; }
a { color: #000; text-decoration: none; }
.foot { border-color: #999; }
}
+212
View File
@@ -0,0 +1,212 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>10 · EKÁER — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html" aria-current="page"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 10</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html" aria-current="page"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">10</div>
<span class="kicker">Modul 10 · Hatósági bejelentés</span>
<h1>EKÁER</h1>
<p class="lead">A NAV közúti áruforgalom-bejelentése a rendszerből: a kötelezettség eldöntése, az adatlap összeállítása, ellenőriztetése és beküldése — külön NAV-felület nyitogatása nélkül.</p>
<div class="chips">
<span class="chip chip--client">Raktári alkalmazás</span>
<span class="chip chip--live">Beküldés élesben</span>
<span class="chip chip--part">Automatikus indítás még nincs</span>
</div>
</div>
<section class="section" id="folyamat">
<h2 data-n="01">A munkafolyamat</h2>
<p>Négy lépés, mindegyiket a felhasználó indítja a felületről. A rendszer egyik lépést sem futtatja magától.</p>
<ol class="steps">
<li><strong>Hiánypótló kapu</strong> Egy megadott dátumtól kezdve a rendszer végignézi a szállítóleveleket és a rendeléseket, és <strong>csak azokra hoz létre bejelentés-sort, amelyekre tényleg kötelező</strong>. Ami kimarad, arról tételes üzenetet ad, hogy miért.</li>
<li><strong>Generálás</strong> A bejelentés adatlapja összeáll, és a rendszer saját, helyi ellenőrzésén átmegy. A NAV-nak ekkor még semmi nem megy ki.</li>
<li><strong>NAV-ellenőrzés</strong> Külön lépésként a NAV ellenőrző végpontjával is átnézetjük. Bejelentés nem jön létre, EKÁER-szám nem képződik — viszont előjön az, amit a helyi ellenőrzés szerkezetileg nem tud: a VTSZ létezése, a kockázati biztosíték, a FELIR/NÉBIH állapot. Elérhetetlen NAV esetén csak egy figyelmeztető sor keletkezik, a rekord érintetlen marad.</li>
<li><strong>Beküldés</strong> A gridben a „Beküldés" gomb, megerősítő kérdés után. A NAV válasza — EKÁER-szám vagy hiba — automatikusan rögzül a rekordon.</li>
</ol>
<div class="note">
<span class="note__label">A siker mércéje</span>
<p>A beküldés akkor sikeres, ha a NAV <strong>visszaadta az EKÁER-számot</strong>. A boríték szintű „rendben" válasz önmagában nem elég — létrehozásnál a szám hiánya azt jelenti, hogy a végrehajtás elbukott.</p>
</div>
</section>
<section class="section" id="kotelezettseg">
<h2 data-n="02">Mikor kötelező a bejelentés</h2>
<p>A rendszer egységenként dönt. Bejövő oldalon az egység a <strong>feladó + telephely + jármű</strong> hármas: az ide tartozó összes szállítólevél tömege és értéke <strong>összeadódik</strong>, és a csoport egyetlen bejelentést kap. Kimenő oldalon egy rendelés egy bejelentés.</p>
<div class="tablewrap">
<table>
<thead><tr><th>Helyzet</th><th>Döntés</th></tr></thead>
<tbody>
<tr><td>Küszöb felett</td><td>Kötelező, az országtól függetlenül</td></tr>
<tr><td>Küszöb alatt, külföldi reláció</td><td>Kötelező (a feladó és a címzett országkódja eltér)</td></tr>
<tr><td>Küszöb alatt, belföld</td><td>Nem kötelező</td></tr>
<tr><td>Hiányzó vagy érvénytelen országkód</td><td>Adathiba — a sor kimarad, üzenettel</td></tr>
<tr><td>Bejövő: a partnernél kikapcsolt EKÁER, vagy partner nélküli szállítólevél</td><td>Mentesül</td></tr>
<tr><td>Kimenő: a vevőnél kifejezetten kikapcsolt EKÁER</td><td>Mentesül</td></tr>
</tbody>
</table>
</div>
<div class="note">
<span class="note__label">Fail-safe a vevőnél</span>
<p>Kimenő irányban a hiányzó beállítás <strong>kötelezőnek</strong> számít — mentesülni csak kifejezett kikapcsolással lehet. A vevő adatlapján lévő jelölő addig pipáltat mutat, amíg valaki explicit ki nem veszi. Így egy elfelejtett beállításból nem lesz elmaradt bejelentés.</p>
</div>
<div class="note note--warn">
<span class="note__label">Két előfeltétel, ami sort tud kihagyni</span>
<p><strong>Nulla súlyú tétel:</strong> minden tétel bruttó súlyának nagyobbnak kell lennie nullánál. A kitöltetlen dokumentum-súly csendben alul-számolná a küszöböt, ezért a csoport sora nem jön létre — pótlás után a következő futás felveszi.<br>
<strong>Hiányzó telephely:</strong> kötelező bejelentésnél a beszállítói telephely megadása is kötelező. Enélkül nem keletkezik sor, mert a partner központi címe félrevezető adatlapot adna.</p>
</div>
<div class="note note--limit">
<span class="note__label">A küszöb beállítás, nem beépített szám</span>
<p>A tömeg- és értékküszöb konfigurációból jön, mert a jogszabály és a beállítás változhat. A NAV <strong>mindkét irányban büntet</strong> — alul- és túljelentésért is —, ezért a küszöb pontos karbantartása üzemeltetési feladat.</p>
</div>
</section>
<section class="section" id="allapotok">
<h2 data-n="03">A bejelentés életciklusa</h2>
<div class="tablewrap">
<table>
<thead><tr><th>Állapot</th><th>Mit jelent</th><th>Mi a teendő</th></tr></thead>
<tbody>
<tr><td>Függőben</td><td>A kapu létrehozta, de még nincs adatlap</td><td>Generálás</td></tr>
<tr><td>Legenerálva</td><td>Tiszta adatlap, hiba nélkül</td><td>Beküldhető</td></tr>
<tr><td>Legenerálva, figyelmeztetéssel ⚠️</td><td>Beküldhető, de valami pótlandó — például hiányzó rendszám</td><td>Pótlás, majd beküldés</td></tr>
<tr><td>Ellenőrzési hiba ⛔</td><td>Blokkoló hiba az adatlapon</td><td>Az adat javítása, újragenerálás</td></tr>
<tr><td>Beküldve</td><td>A NAV visszaadta az EKÁER-számot</td><td>Kész</td></tr>
<tr><td>Beküldve, hiányos adattal</td><td>Figyelmeztetéses adatlapból ment ki</td><td>Az adat pótlása</td></tr>
<tr><td>Beküldési hiba</td><td>A NAV-hívás elbukott</td><td>Javítás után újraküldhető</td></tr>
</tbody>
</table>
</div>
<p>A lista három füle pontosan ezekre az állapotokra szűr, a figyelmeztetés és a hiba külön ikonnal megkülönböztetve.</p>
</section>
<section class="section" id="adatok">
<h2 data-n="04">Honnan jönnek az adatok</h2>
<div class="tablewrap">
<table>
<thead><tr><th>EKÁER-mező</th><th>Forrás</th></tr></thead>
<tbody>
<tr><td>Feladó</td><td>A szállítólevél beszállító partnere</td></tr>
<tr><td>Jármű, pótkocsi</td><td>A szállítmány rendszáma és felségjele</td></tr>
<tr><td>Felrakodás helye</td><td><strong>Bejövő:</strong> a beszállító telephelyének címe · <strong>Kimenő:</strong> a saját telephelyünk</td></tr>
<tr><td>Lerakodás helye</td><td><strong>Bejövő:</strong> a saját telephelyünk · <strong>Kimenő:</strong> a rendelés címe</td></tr>
<tr><td>Fuvarozó</td><td><strong>Bejövő:</strong> a kamion fuvarozó partnere · <strong>Kimenő:</strong> üres — a vevő maga viszi el</td></tr>
<tr><td>Tétel súlya</td><td>A <strong>szállítólevélen szereplő</strong> bruttó súly, nem a későbbi mérleg</td></tr>
<tr><td>Ügylet jellege</td><td>Termékértékesítés / beszerzés, mindkét irányra</td></tr>
</tbody>
</table>
</div>
<div class="note note--warn">
<span class="note__label">VTSZ</span>
<p>A vámtarifaszám jelenleg a termék GTIN mezőjéből olvasódik ki. Ez <strong>átmeneti megoldás</strong> — a két azonosító nem ugyanaz, és a NAV a VTSZ létezését ellenőrzi. A NAV-ellenőrzés lépés éppen az ilyen hibákat hozza elő beküldés előtt.</p>
</div>
</section>
<section class="section" id="korlatok">
<h2 data-n="05">Jelenlegi korlátok</h2>
<div class="note note--limit">
<span class="note__label">Nincs automatikus bejelentés</span>
<p>A bejelentés ma <strong>felhasználó által indított</strong>: a kapu, a generálás és a beküldés is gombnyomásra fut. Az automatikus, szállítmány-szintű beküldés kódja megvan, de nincs bekötve.</p>
</div>
<div class="note note--limit">
<span class="note__label">Vállalt eltérés az aggregálásban</span>
<p>A jogszabályi aggregálási egység telephely nélküli (feladó → címzett → jármű), a rendszer viszont telephely szinten összegez. Több telephelyes belföldi partnernél ez elvileg alul-jelenthet. Ez ügyfél-döntéssel vállalt eltérés, mert ritka, tételenként küszöb alatti eset.</p>
</div>
<div class="note note--limit">
<span class="note__label">Szigorúbb a minimumnál</span>
<p>A rendszer <strong>minden külföldről bejövő fuvart bejelent</strong>, akkor is, ha a hatályos jog szerint a küszöb alatti import mentesülne. Ez kifejezett ügyfél-kérés — önkéntes, a minimumnál szigorúbb bejelentés.</p>
</div>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="06">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="szallitmanytervezo.html">Szállítmánytervező</a>
<a href="beerkezes.html">Beérkezés</a>
<a href="rendeles.html">Rendelés és árazás</a>
<a href="termek-torzsadat.html">Termék-törzsadat</a>
<a href="arres.html">Árrés és önköltség</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 10 · EKÁER</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
@@ -0,0 +1,194 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>05 · Előrendelés — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html" aria-current="page"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 05</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html" aria-current="page"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">05</div>
<span class="kicker">Modul 05 · Igény a készlet előtt</span>
<h1>Előrendelés</h1>
<p class="lead">A vevő olyan árura ad le igényt, ami még nincs raktáron. Amikor a beszállítói szállítólevél megerősíti a beérkezést, a rendszer magától valódi rendelést csinál belőle.</p>
<div class="chips">
<span class="chip">Webshop</span>
<span class="chip">nopCommerce admin</span>
<span class="chip chip--live">Élesben működik</span>
</div>
</div>
<section class="section" id="mire-valo">
<h2 data-n="01">Mire való</h2>
<p>Friss terménynél a vevő gyakran előbb tudja, mire lesz szüksége, mint ahogy az áru megérkezik. Az előrendelés ezt az igényt tartja nyilván úgy, hogy közben nem hazudik készletet: <strong>az áru csak akkor válik rendeléssé, amikor tényleg megérkezett.</strong></p>
<p>A kiosztás <strong>érkezési sorrendben</strong> történik: aki előbb adta le az igényt, előbb kap a beérkezett mennyiségből.</p>
</section>
<section class="section" id="leadas">
<h2 data-n="02">Leadás</h2>
<dl class="facts">
<div><dt>Ki adhatja le</dt><dd>A vevő a webshopból, illetve az admin a partner nevében.</dd></div>
<div><dt>Milyen termékre</dt><dd>Amelyikre be van állítva előrendelési időablak. Az ablakon kívüli termék nem jelenik meg a választható listában.</dd></div>
<div><dt>Milyen áron</dt><dd>Az egységár <strong>a leadás pillanatában rögzül</strong>, és a teljesüléskor is ez érvényes — a vevő ezt az árat kapja.</dd></div>
<div><dt>Átvétel napja</dt><dd>Az előrendelés ehhez a dátumhoz kötődik. Ez vezérli a konverziót és a lejáratot is.</dd></div>
</dl>
</section>
<section class="section" id="konverzio">
<h2 data-n="03">Átfordulás valódi rendeléssé</h2>
<p>A folyamat magától indul, amikor beérkezik az áru. Nem kell külön elindítani.</p>
<ol class="steps">
<li><strong>Lejárat-söprés</strong> Először kiesnek a lejárt igények — lásd lentebb.</li>
<li><strong>Jogosultak összegyűjtése</strong> A beérkezett termékekre várakozó, még nem vagy csak részben teljesült előrendelések, leadási sorrendben.</li>
<li><strong>Időablak-szűrés</strong> Csak azok az előrendelések jönnek szóba, amelyek átvételi napja a beérkezéstől számított <strong>négy napon belül</strong> van. A távolabbi átvételek egy későbbi szállítmányra várnak — így a friss áru nem kötődik le hetekkel előre.</li>
<li><strong>Kiosztás</strong> Sorrendben, amíg a beérkezett mennyiség tart. Egy igény lehet teljesen vagy részben teljesített.</li>
<li><strong>Rendelés keletkezése</strong> Az <em>első</em> teljesüléskor létrejön a valódi rendelés. Ha ugyanahhoz az előrendeléshez később újabb szállítmány érkezik, a rendszer <strong>ugyanahhoz a rendeléshez fűzi</strong> az új tételeket, nem csinál másodikat.</li>
<li><strong>Ami kimaradt</strong> A ki nem osztott tételek nem tűnnek el: rendelés-megjegyzésbe kerülnek, hogy a kolléga lássa, mi nem fért bele.</li>
</ol>
<div class="note">
<span class="note__label">Mi indítja</span>
<p>A konverzió több ponton is elindul: szállítólevél-tétel felvitelekor vagy mennyiségének növelésekor, a szállítólevél feldolgozásakor, illetve az adminból kézzel, azonnali kiszolgálásra a meglévő készletről.</p>
</div>
</section>
<section class="section" id="arazas">
<h2 data-n="04">Árazás átforduláskor</h2>
<div class="tablewrap">
<table>
<thead><tr><th>Termék</th><th>A rendelés-tétel ára</th></tr></thead>
<tbody>
<tr><td>Nem mérendő</td><td>A leadáskor rögzített egységár × a teljesített mennyiség — azonnal végleges</td></tr>
<tr><td>Mérendő</td><td>Átforduláskor még nulla; az ár a mérlegelés után áll elő</td></tr>
</tbody>
</table>
</div>
</section>
<section class="section" id="allapotok">
<h2 data-n="05">Állapotok</h2>
<p>A tételek állapotából a rendszer <strong>maga vezeti le</strong> az előrendelés fejállapotát — azt kézzel nem kell karbantartani.</p>
<div class="tablewrap">
<table>
<thead><tr><th>Előrendelés</th><th>Mikor</th></tr></thead>
<tbody>
<tr><td>Várakozik</td><td>Még van függő tétele</td></tr>
<tr><td>Megerősítve</td><td>Minden tétele teljesült</td></tr>
<tr><td>Részben teljesítve</td><td>Nincs több függő tétel, de valami kiesett vagy csak részben teljesült</td></tr>
<tr><td>Törölve</td><td>A vevő vagy az admin visszavonta; az aktív tételek kiesnek</td></tr>
</tbody>
</table>
</div>
</section>
<section class="section" id="lejarat">
<h2 data-n="06">Lejárat</h2>
<p>Minden konverziós futás elején lefut a söprés: ha egy előrendelés átvételi napja már elmúlt, és még mindig van függő tétele, azok a tételek <strong>kiesnek</strong>. Ami addigra teljesült, az marad — az már valódi rendelésen van.</p>
</section>
<section class="section" id="nyilvantartas">
<h2 data-n="07">Teljesítés-nyilvántartás</h2>
<p>A rendszer futásonként rögzíti, hogy <strong>melyik szállítólevélből mennyit</strong> teljesített egy adott igényre, és melyik rendelés-tétel keletkezett belőle. Ennek két gyakorlati haszna van:</p>
<dl class="facts">
<div><dt>Szállítólevél törlése</dt><dd>A rendszer megtagadja a törlést, ha abból a dokumentumból már teljesült előrendelés.</dd></div>
<div><dt>Árrés</dt><dd>A konvertált tételnél a beszerzési forrás <strong>egzakt</strong>, nem FIFO-becslés — pontosan az a szállítólevél, ami kiszolgálta.</dd></div>
</dl>
<div class="note note--limit">
<span class="note__label">Korlát</span>
<p>Ez a nyilvántartás a bevezetése óta keletkezett konverziókra áll rendelkezésre. A régebbieknél az önköltség forrása továbbra is FIFO-becslés.</p>
</div>
</section>
<section class="section" id="hol">
<h2 data-n="08">Hol található</h2>
<dl class="facts">
<div><dt>Előrendelések</dt><dd><span class="path">FruitBank → Előrendelés → Előrendelések</span></dd></div>
<div><dt>Elérhetőség beállítása</dt><dd><span class="path">FruitBank → Előrendelés → Előrendelés — elérhetőség</span> — itt állítható termékenként az előrendelési időablak</dd></div>
<div><dt>Nyitóképernyő</dt><dd>„Nyitott előrendelések" blokk, és riasztás a régóta nyitottakra</dd></div>
<div><dt>Vevői oldal</dt><dd>A webshop fiók-menüjében a saját előrendelések listája</dd></div>
</dl>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="09">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="beerkezes.html">Beérkezés</a>
<a href="rendeles.html">Rendelés és árazás</a>
<a href="ai-rendelesfelvetel.html">AI rendelésfelvétel</a>
<a href="arres.html">Árrés és önköltség</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 05 · Előrendelés</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
@@ -0,0 +1,177 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>12 · Értesítések — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html" aria-current="page"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 12</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html" aria-current="page"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">12</div>
<span class="kicker">Modul 12 · Vevői kommunikáció</span>
<h1>Értesítések</h1>
<p class="lead">Két saját vevői e-mail, a rendelés mérési állapotához kötve. A webshop beépített értesítői változatlanul működnek — ez a modul csak hozzátesz.</p>
<div class="chips">
<span class="chip">Automatikus</span>
<span class="chip chip--live">Élesben működik</span>
</div>
</div>
<section class="section" id="sablonok">
<h2 data-n="01">A két értesítő</h2>
<div class="tablewrap">
<table>
<thead><tr><th>Értesítő</th><th>Mikor megy ki</th><th>Mi van benne</th></tr></thead>
<tbody>
<tr>
<td>Feldolgozás elindult</td>
<td>Amikor a raktáros elindítja a rendelés mérését</td>
<td>„Elkezdtük feldolgozni" + mérendő tételnél árelőrejelzés</td>
</tr>
<tr>
<td>Rendelés elkészült</td>
<td>Amikor a rendelés lezárul</td>
<td>„Elkészült, átvehető" + a végösszeg</td>
</tr>
</tbody>
</table>
</div>
<div class="note">
<span class="note__label">Miért éppen ez a kettő</span>
<p>Mérendő terménynél a vevő a rendelés leadásakor még nem tudja a végösszeget. Az első levél azt üzeni, hogy a rendelés él és dolgoznak rajta; a második hozza a végleges számot. A kettő között a vevőnek nincs mit kérdeznie telefonon.</p>
</div>
</section>
<section class="section" id="ismetles">
<h2 data-n="02">Ismétlés elleni védelem</h2>
<p>Rendelésenként külön jelölés őrzi, hogy melyik értesítő ment már ki — ugyanaz a levél <strong>nem megy ki kétszer</strong>, akkor sem, ha a kiváltó esemény többször következik be.</p>
<div class="note">
<span class="note__label">Sikertelen küldés esetén</span>
<p>A jelölés <strong>csak sikeres sorbaállítás után</strong> íródik ki. Ha a küldés bármelyik okból elmarad — hiányzó vagy kikapcsolt sablon, nincs használható e-mail fiók, nincs vevő —, a jelölés sem keletkezik, és a következő kiváltó újrapróbálkozik. Enélkül egy pillanatnyi hiba véglegesen elnémítaná az adott rendelést.</p>
</div>
</section>
<section class="section" id="tartalom">
<h2 data-n="03">Mit tud a levél a szokásosnál többet</h2>
<p>A rendszer a webshop beépített e-mail behelyettesítőjét kiegészíti négy ponton:</p>
<dl class="facts">
<div>
<dt>Terméktáblázat</dt>
<dd>Saját formátum: mérendő tételnél ár helyett <em>„kalkuláció alatt"</em> jelenik meg, amíg nincs mérés.</dd>
</div>
<div>
<dt>Rendelés végösszege</dt>
<dd>A webshopnak erre nincs saját behelyettesítője — a végösszeg csak a terméktáblázat lábában szerepelne. Itt önálló mezőként is elérhető, bruttó értékkel, a tételszinten már érvényesített kedvezménnyel.</dd>
</div>
<div>
<dt>Mérendő tétel megjegyzése</dt>
<dd>Az a szöveg, ami elmagyarázza a vevőnek, miért nem végleges még az ár.</dd>
</div>
<div>
<dt>Vevő cégneve</dt>
<dd>A vevő saját cégneve, nem a számlázási címről. B2B-ben a cég a rendeléstől független törzsadat — ha nincs kitöltve, a mező üresen marad, és nem esik vissza a számlázási címre.</dd>
</div>
</dl>
</section>
<section class="section" id="naplo">
<h2 data-n="04">Naplózás</h2>
<p>Ha egy levél <strong>nem</strong> megy ki, annak oka bekerül a webshop rendszernaplójába — hiányzó vagy kikapcsolt sablon, hiányzó e-mail fiók, nem található vevő. Elérés: <span class="path">Rendszer → Napló</span>.</p>
<div class="note">
<span class="note__label">Miért fontos</span>
<p>Egy elmaradt vevői levél különben nyomtalan maradna: a vevő nem tudja, hogy várnia kellett volna rá, és belülről sem látszik, hogy nem ment ki.</p>
</div>
</section>
<section class="section" id="korlatok">
<h2 data-n="05">Amit érdemes tudni</h2>
<div class="note note--limit">
<span class="note__label">A sablonok szövege</span>
<p>A két sablon alapszövegét a rendszer <strong>a telepítéskor</strong> írja be. Már működő telepítésen ez nem fut le újra, ezért éles adatbázisban a sablon kézzel is létrejöhetett, eltérő tartalommal. Ha egy értesítő szövege nem az elvárt, először a sablon tényleges tartalmát érdemes megnézni.</p>
</div>
<div class="note note--limit">
<span class="note__label">Teszt-küldés</span>
<p>Az admin felületről indított teszt-levélben a mérendő tétel megjegyzése <strong>üresen marad</strong> — azt a szöveget a valódi küldés fűzi hozzá. Ez nem hiba, csak a teszt korlátja.</p>
</div>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="06">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="rendeles.html">Rendelés és árazás</a>
<a href="meres.html">Mérlegelés</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 12 · Értesítések</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
+168
View File
@@ -0,0 +1,168 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>11 · Vevői hitelkeret — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html" aria-current="page"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 11</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html" aria-current="page"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">11</div>
<span class="kicker">Modul 11 · Kockázatkezelés</span>
<h1>Vevői hitelkeret</h1>
<p class="lead">Partnerenként beállítható felső határ arra, mennyi kifizetetlen rendelés lehet egyszerre kint. Aki nincs korlátozva, az korlátlan — a limit tehát tudatos döntés, nem alapállapot.</p>
<div class="chips">
<span class="chip">nopCommerce admin</span>
<span class="chip chip--live">Élesben működik</span>
</div>
</div>
<section class="section" id="szabaly">
<h2 data-n="01">A szabály</h2>
<div class="formula" aria-label="A hitelkeret szabálya">
<span class="cmt">Nincs beállított hitelkeret → a partner korlátlan, minden rendelés mehet.</span>
<span class="cmt">Van beállított hitelkeret:</span>
kint lévő összeg + az új rendelés összege ≤ <b>hitelkeret</b>
</div>
<dl class="facts">
<div><dt>Hitelkeret</dt><dd>A partnerre beállított felső határ, forintban.</dd></div>
<div><dt>Kint lévő összeg</dt><dd>Az összes függő, még ki nem fizetett és nem törölt rendelés végösszege — nem a lejárt tartozás, hanem a teljes kintlévőség.</dd></div>
<div><dt>Szabad keret</dt><dd>Hitelkeret mínusz a kint lévő összeg.</dd></div>
</dl>
<div class="note">
<span class="note__label">Miért így</span>
<p>A „nincs rekord = korlátlan" szabály azt jelenti, hogy a modul <strong>bevezetése nem akaszt meg senkit</strong>: alapból minden partner úgy működik, mint korábban, és csak azok kapnak korlátot, akiknek szánták.</p>
</div>
</section>
<section class="section" id="felulet">
<h2 data-n="02">Hol kezelhető</h2>
<dl class="facts">
<div>
<dt>Hitelkeret lista</dt>
<dd>Partnerenként a limit, a kint lévő összeg és a szabad keret egy táblázatban.</dd>
</div>
<div>
<dt>Részletek</dt>
<dd>Egy partner teljes hitelkeret-képe, a beállítás módosításával.</dd>
</div>
<div>
<dt>Limit módosítása</dt>
<dd>Új összeg megadása vagy a korlát <strong>teljes megszüntetése</strong>. A módosításhoz megjegyzés fűzhető — érdemes kitölteni, mert ez marad a döntés nyoma.</dd>
</div>
<div>
<dt>Vevő adatlapja</dt>
<dd>A nopCommerce vevő szerkesztő oldalán külön kártya mutatja az aktuális hitelkeret-állapotot.</dd>
</div>
<div>
<dt>Nyitóképernyő</dt>
<dd>„Hitelkeret státusz" blokk, illetve riasztás a túllépett partnerekre.</dd>
</div>
</dl>
</section>
<section class="section" id="allapotok">
<h2 data-n="03">Állapotjelzések</h2>
<div class="tablewrap">
<table>
<thead><tr><th>Jelzés</th><th>Mit jelent</th><th>Hol látszik</th></tr></thead>
<tbody>
<tr><td>OK</td><td>Van szabad keret bőven</td><td>Lista, nyitóképernyő</td></tr>
<tr><td>Közel a limithez</td><td>A szabad keret fogyóban — sárga sor</td><td>Lista, nyitóképernyő</td></tr>
<tr><td>Túllépve</td><td>A kintlévőség meghaladja a limitet — piros sor és riasztás</td><td>Lista, nyitóképernyő, riasztások</td></tr>
</tbody>
</table>
</div>
</section>
<section class="section" id="hasznalat">
<h2 data-n="04">Napi használat</h2>
<div class="note">
<span class="note__label">Javaslat</span>
<p>A limit akkor véd, ha a kintlévőség adata friss. A kint lévő összeg a <strong>ki nem fizetett rendelésekből</strong> áll össze, tehát a pénzügyi lezárás elmaradása felfelé torzítja. Ha egy partner indokolatlanul „túllépettnek" látszik, először azt érdemes megnézni, van-e nála lezáratlan, valójában már rendezett rendelés.</p>
</div>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="05">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="rendeles.html">Rendelés és árazás</a>
<a href="attekinto.html">Vezetői áttekintő</a>
<a href="szamlazas.html">Számlázás — InnVoice</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 11 · Vevői hitelkeret</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
+202
View File
@@ -0,0 +1,202 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>FruitBank — Funkció-ismertető</title>
<meta name="description" content="A FruitBank rendszer moduljainak ismertetője adminisztrátoroknak.">
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<div class="masthead__meta">Adminisztrátori kézikönyv</div>
</div>
</header>
<div class="shell shell--wide">
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">FB</div>
<span class="kicker">Tudásbázis · 15 modul</span>
<h1>Mit tud a FruitBank rendszer</h1>
<p class="lead">Egy nagykereskedelmi működés végigkövetése a beérkező kamiontól a kiszámlázott rendelésig — modulonként, magyarul, a felület tényleges menüpontjaira hivatkozva.</p>
<div class="chips">
<span class="chip">nopCommerce admin</span>
<span class="chip">Raktári alkalmazás</span>
<span class="chip">NAV EKÁER</span>
<span class="chip">InnVoice</span>
</div>
</div>
<section class="section" id="folyamat">
<h2 data-n="A">A rendszer egyetlen folyamata</h2>
<p>A modulok nem egymás mellett állnak, hanem egyetlen áru-útvonalat követnek. Aki ezt a hat lépést érti, a többi modult a helyén látja.</p>
<div class="formula" aria-label="A fő folyamat lépései">
<b>TERVEZÉS</b><b>BEÉRKEZÉS</b><b>MÉRLEGELÉS</b><b>KÉSZLET</b><b>RENDELÉS</b><b>ÁRRÉS</b>
mi fér a kamion és a tényleges darab és kiszedés, önköltség
kamionokra szállítólevél súly rögzítése súly, futó mérés, és nyereség
egyenleg lezárás
<span class="cmt">Mellékágak: Előrendelés (a beérkezésre vár) · AI rendelésfelvétel (a rendelés elé)
EKÁER (a fuvarhoz) · Hitelkeret (a rendelés elé) · Értesítés + Számlázás (a rendelés után)</span>
</div>
<div class="note">
<span class="note__label">Irány</span>
<p><strong>Szállítmány = befelé.</strong> A beszállítótól a raktárba. <strong>Rendelés = kifelé.</strong> A raktárból a vevőhöz. A rendszer minden képernyője ezt a két irányt választja szét — ha egy adat nem stimmel, először mindig azt érdemes megnézni, melyik irányról van szó.</p>
</div>
</section>
<section class="section" id="modulok">
<h2 data-n="B">A modulok</h2>
<div class="grid">
<a class="card" href="attekinto.html">
<div class="card__n">00</div>
<div class="card__t">Vezetői áttekintő</div>
<p class="card__d">A nyitóképernyő operatív képe: mai rendelések, mérési állapot, figyelmet igénylő tételek, hitelkeretek.</p>
</a>
<a class="card" href="beerkezes.html">
<div class="card__n">01</div>
<div class="card__t">Beérkezés</div>
<p class="card__d">Kamion, szállítólevél, tételek. A dokumentum fényképéből az AI kiolvassa a partnert, a termékeket és az árakat.</p>
</a>
<a class="card" href="szallitmanytervezo.html">
<div class="card__n">02</div>
<div class="card__t">Szállítmánytervező</div>
<p class="card__d">Melyik áru melyik kamionra kerül — vizuális pakolás, kettős kapacitás-korláttal és automatikus szétosztással.</p>
</a>
<a class="card" href="meres.html">
<div class="card__n">03</div>
<div class="card__t">Mérlegelés</div>
<p class="card__d">A közös mérési motor: egyetlen súlyképlet és egyetlen állapotsor mind a három folyamatban.</p>
</a>
<a class="card" href="rendeles.html">
<div class="card__n">04</div>
<div class="card__t">Rendelés és árazás</div>
<p class="card__d">Kiszedés, mérés, lezárás. Mérendő terménynél a végösszeg a lemért súlyból áll elő.</p>
</a>
<a class="card" href="elorendeles.html">
<div class="card__n">05</div>
<div class="card__t">Előrendelés</div>
<p class="card__d">Vevői igény olyan árura, ami még nincs raktáron. A beérkező szállítólevél automatikusan rendeléssé váltja.</p>
</a>
<a class="card" href="ai-rendelesfelvetel.html">
<div class="card__n">06</div>
<div class="card__t">AI rendelésfelvétel</div>
<p class="card__d">Viber-üzenet, e-mail vagy diktálás szabad szövegből — az AI tételekre bontja, az admin jóváhagyja.</p>
</a>
<a class="card" href="leltar.html">
<div class="card__n">07</div>
<div class="card__t">Leltár</div>
<p class="card__d">Leltárív a teljes termékkörre, tényleges mérés, zárás — az eltérés a készletbe és az önköltségbe is átvezet.</p>
</a>
<a class="card" href="keszlet.html">
<div class="card__n">08</div>
<div class="card__t">Készlet</div>
<p class="card__d">Darab és súly két párhuzamos egyenlegként, minden mozgásról napló és önellenőrzés.</p>
</a>
<a class="card" href="arres.html">
<div class="card__n">09</div>
<div class="card__t">Árrés és önköltség</div>
<p class="card__d">A kiadott áru visszavezetve arra a beszerzésre, amiből származik. Fuvar és extra költség arányosan terhelve.</p>
</a>
<a class="card" href="ekaer.html">
<div class="card__n">10</div>
<div class="card__t">EKÁER</div>
<p class="card__d">NAV-bejelentés a fuvarokról: kötelezettség-vizsgálat, XML-generálás, ellenőrzés és beküldés a felületről.</p>
</a>
<a class="card" href="hitelkeret.html">
<div class="card__n">11</div>
<div class="card__t">Vevői hitelkeret</div>
<p class="card__d">Partnerenkénti limit a kint lévő, még ki nem fizetett rendelésekre — figyelmeztetéssel a nyitóképernyőn.</p>
</a>
<a class="card" href="ertesitesek.html">
<div class="card__n">12</div>
<div class="card__t">Értesítések</div>
<p class="card__d">Két saját vevői e-mail a rendelés mérési állapotához kötve, ismétlés elleni védelemmel.</p>
</a>
<a class="card" href="termek-torzsadat.html">
<div class="card__n">13</div>
<div class="card__t">Termék-törzsadat</div>
<p class="card__d">Az öt érték — mérendőség, tára, átlagsúly, tűréshatár, rekesz/raklap —, amiből minden számítás dolgozik.</p>
</a>
<a class="card" href="szamlazas.html">
<div class="card__n">14</div>
<div class="card__t">Számlázás — InnVoice</div>
<p class="card__d">A lezárt rendelés beküldése az InnVoice rendszerbe, a rendelés szerkesztő oldaláról.</p>
</a>
</div>
</section>
<section class="section" id="fogalmak">
<h2 data-n="C">Négy fogalom, ami mindenhol visszatér</h2>
<dl class="facts">
<div>
<dt>Szállítmány / Szállítólevél</dt>
<dd>A <strong>szállítmány</strong> a beérkező kamion. Egy kamionon több beszállító <strong>szállítólevele</strong> is érkezhet, és a tételek a szállítólevélhez tartoznak.</dd>
</div>
<div>
<dt>Mérendő termék</dt>
<dd>Változó tartalmú áru, amit fizikailag mérlegre teszünk, és a lemért súly szerint árazunk. A <strong>nem mérendő</strong> termék fix kiszerelésű (például 15 kg-os karton): ott csak a rekeszszámot adjuk meg, a súly a törzsadatból származik.</dd>
</div>
<div>
<dt>Raklap</dt>
<dd>A felületen „raklap" néven futó tétel <strong>mérési rekord</strong>, nem fizikai raklap. Minden tételhez keletkezik — akkor is, ha az árut nem mérjük.</dd>
</div>
<div>
<dt>Mérési állapot</dt>
<dd>Négy fokozat: <em>nem kezdett → mérés alatt → kész → auditálva</em>. Ez vezérli az árazást, az értesítőket és azt, hogy egy rendelés lezárható-e.</dd>
</div>
</dl>
</section>
<section class="section" id="hol-fut">
<h2 data-n="D">Hol fut melyik modul</h2>
<p>A rendszer két felületen jelenik meg, közös adatbázissal. A raktári alkalmazás és a webes admin ugyanazt az adatot látja, élő kapcsolaton keresztül.</p>
<div class="tablewrap">
<table>
<thead>
<tr><th>Felület</th><th>Ki használja</th><th>Mi történik ott</th></tr>
</thead>
<tbody>
<tr>
<td>nopCommerce admin</td>
<td>Iroda, vezetés</td>
<td>Szállítmányok és szállítólevelek, rendelések, előrendelések, AI rendelésfelvétel jóváhagyása, árrés-kimutatás, szállítmány-költségek, hitelkeret, termék-törzsadat, számlázás</td>
</tr>
<tr>
<td>Raktári alkalmazás</td>
<td>Raktár, mérlegelő</td>
<td>Szállítmánytervezés (kamionok pakolása), mérlegelés mind a három folyamatban, leltárfelvétel, EKÁER-műveletek indítása</td>
</tr>
<tr>
<td>Webshop</td>
<td>Vevők</td>
<td>Gyorsrendelés, előrendelés leadása, saját előrendelések listája</td>
</tr>
</tbody>
</table>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">FruitBank funkció-ismertető</span>
<span>A leírás a rendszer jelenlegi állapotát tükrözi. Ahol egy funkció még csak részben él, azt az adott oldal külön jelzi.</span>
</footer>
</body>
</html>
+154
View File
@@ -0,0 +1,154 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>08 · Készlet — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html" aria-current="page"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 08</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html" aria-current="page"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">08</div>
<span class="kicker">Modul 08 · Két egyenleg</span>
<h1>Készlet</h1>
<p class="lead">A készlet két dimenzióban fut egyszerre: darabban és súlyban. Mindkettő futó egyenleg, minden mozgásról naplóval és beépített önellenőrzéssel.</p>
<div class="chips">
<span class="chip">Automatikus</span>
<span class="chip chip--live">Élesben működik</span>
</div>
</div>
<section class="section" id="ket-dimenzio">
<h2 data-n="01">Miért két dimenzió</h2>
<p>Terménynél a darabszám önmagában nem mond eleget: húsz láda paradicsom lehet 180 és 220 kg is. A rendszer ezért <strong>a darabszámot és a nettó súlyt párhuzamosan vezeti</strong>, ugyanazokból az eseményekből.</p>
<dl class="facts">
<div><dt>Darab</dt><dd>A termék készletmennyisége, a webshop saját készletkezelésén keresztül.</dd></div>
<div><dt>Súly</dt><dd>A termék nettó súly-egyenlege, kilogrammban, futó egyenlegként.</dd></div>
</dl>
</section>
<section class="section" id="mozgasok">
<h2 data-n="02">Mi mozgatja a készletet</h2>
<p>Pontosan három esemény, más semmi. Mindhárom ugyanazon a közös ponton keresztül ír, ezért a napló és az önellenőrzés is mindháromra egyformán érvényes.</p>
<div class="tablewrap">
<table>
<thead><tr><th>Esemény</th><th>Irány</th><th>Mi történik</th></tr></thead>
<tbody>
<tr><td><a href="beerkezes.html">Bevételezés</a></td><td>Növel</td><td>A lemért mennyiség és súly hozzáadódik</td></tr>
<tr><td><a href="rendeles.html">Rendelés lezárása</a></td><td>Csökkent</td><td>A kiadott mennyiség és súly levonódik, és önköltséget is fogyaszt</td></tr>
<tr><td><a href="leltar.html">Leltár zárása</a></td><td>Igazít</td><td>A készlet a fizikailag mért értékre áll</td></tr>
</tbody>
</table>
</div>
</section>
<section class="section" id="naplo">
<h2 data-n="03">Napló és önellenőrzés</h2>
<p>Minden mozgás naplósort kap. Ha a súly is változott, mellé egy kiegészítő sor kerül, ami rögzíti a súly-változást és az új egyenleget.</p>
<div class="formula" aria-label="A készlet önellenőrzésének szabálya">
<span class="cmt">Az önellenőrzés szabálya:</span>
előző rögzített egyenleg + a mostani mozgás == az új egyenleg
<span class="cmt">Ha nem egyezik, a naplósor eltérésként jelölődik meg.</span>
</div>
<div class="note">
<span class="note__label">Mire jó</span>
<p>Ez a jelölés a korai figyelmeztetés arra, hogy valahol kézzel módosították a készletet, vagy egy mozgás nem a szokásos úton történt. A készlettörténet a nopCommerce termék-oldaláról érhető el.</p>
</div>
</section>
<section class="section" id="merendoseg">
<h2 data-n="04">A nem mérendő termék esete</h2>
<div class="note note--limit">
<span class="note__label">Tudatos, jelenleg nyitott üzleti döntés</span>
<p>Nem mérendő terméknél <strong>a súly-egyenleg szándékosan nem mozdul</strong> — a darabszám igen. Ennek következménye, hogy a súly szerinti készletkép csak a mérendő termékekre teljes. Ez ma vállalt működés, és nyitott kérdésként szerepel a fejlesztési döntések között.</p>
</div>
</section>
<section class="section" id="varhato">
<h2 data-n="05">Beérkezés alatti mennyiség</h2>
<p>A készleten lévő mennyiség mellett a rendszer külön tartja nyilván azt is, ami <strong>úton van</strong>: szállítólevélre már felvitt, de még nem bevételezett áru. Ezt a szám a szállítólevél-tételek felvitelekor és módosításakor frissül, és ebből dolgozik az <a href="elorendeles.html">előrendelés-konverzió</a>, amikor eldönti, mennyit oszthat ki.</p>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="06">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="beerkezes.html">Beérkezés</a>
<a href="rendeles.html">Rendelés és árazás</a>
<a href="leltar.html">Leltár</a>
<a href="arres.html">Árrés és önköltség</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 08 · Készlet</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
+143
View File
@@ -0,0 +1,143 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>07 · Leltár — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html" aria-current="page"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 07</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html" aria-current="page"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">07</div>
<span class="kicker">Modul 07 · Valóság és nyilvántartás</span>
<h1>Leltár</h1>
<p class="lead">A nyilvántartott készlet összevetése azzal, ami tényleg a raktárban van — és az eltérés átvezetése úgy, hogy az az önköltségben is nyomot hagyjon.</p>
<div class="chips">
<span class="chip chip--client">Raktári alkalmazás</span>
<span class="chip chip--live">Élesben működik</span>
</div>
</div>
<section class="section" id="folyamat">
<h2 data-n="01">A leltár menete</h2>
<ol class="steps">
<li><strong>Leltár indítása</strong> A rendszer megnyit egy leltárívet, és <strong>minden termékhez automatikusan felvesz egy sort</strong> — nem kell összeválogatni, mit leltározunk.</li>
<li><strong>A kiindulási állapot befagyasztása</strong> Soronként rögzül, mennyi a nyilvántartott készlet, és mennyi az, ami folyamatban lévő rendelésekben már le van kötve. A kettő összege a viszonyítási alap.</li>
<li><strong>Fizikai felmérés</strong> Terméksoronként mérés a <a href="meres.html">közös mérési motorral</a> — ugyanaz a súlyképlet, ugyanaz az állapotsor, mint a beérkezésnél.</li>
<li><strong>Zárás</strong> Csak akkor engedélyezett, ha <strong>minden sor le van mérve</strong>. Ekkor soronként kiszámolódik az eltérés, és a rendszer erre igazítja a készletet.</li>
</ol>
<div class="formula" aria-label="A leltári eltérés képlete">
<b>ELTÉRÉS</b> = mért készlet ( nyilvántartott készlet + rendelésekben lekötött )
</div>
</section>
<section class="section" id="zaras">
<h2 data-n="02">Mi történik a záráskor</h2>
<dl class="facts">
<div><dt>Készlet igazítása</dt><dd>A darabszám az eltéréssel módosul, a súly-egyenleg a mért értékre áll.</dd></div>
<div><dt>Napló</dt><dd>Minden mozgás bekerül a készlettörténetbe, így a leltári korrekció utólag is visszakereshető.</dd></div>
<div><dt>Önköltség — hiány</dt><dd>A hiány ugyanúgy fogyaszt beszerzési költség-réteget, mint egy eladás. Így a leírt áru nem marad készletnek látszó tétel az árrés-kimutatásban.</dd></div>
<div><dt>Önköltség — többlet</dt><dd><strong>Nem fogyaszt réteget.</strong> A többlethez nem tartozik beszerzés, azt a rendszer nem tudja hova kötni — ez tudatos döntés, nem hiányosság.</dd></div>
<div><dt>Lezárt állapot</dt><dd>A leltárív lezárul, és nem módosítható tovább.</dd></div>
</dl>
</section>
<section class="section" id="miert">
<h2 data-n="03">Miért kell a lekötött mennyiség</h2>
<div class="note">
<span class="note__label">Gyakori félreértés</span>
<p>A raktárban fizikailag ott van az az áru is, amit egy még le nem zárt rendelés már lefoglalt. Ha a leltár csak a szabad készlettel vetné össze a mértet, minden nyitott rendelés hamis többletnek látszana. Ezért veszi a rendszer <strong>viszonyítási alapnak a nyilvántartott és a lekötött mennyiség összegét</strong>.</p>
</div>
</section>
<section class="section" id="korlatok">
<h2 data-n="04">Amit érdemes tudni</h2>
<div class="note note--limit">
<span class="note__label">Korlát</span>
<p>A leltár <strong>a teljes termékkörre</strong> nyílik meg, részleges vagy kategória szerinti leltárív ma nincs. Zárni csak hiánytalanul lemért ívvel lehet — egy elmaradt sor az egész zárást megakasztja.</p>
</div>
<div class="note note--warn">
<span class="note__label">Időzítés</span>
<p>A leltár azt a pillanatot rögzíti, amikor indították. Érdemes olyan időpontban felvenni, amikor nincs futó bevételezés vagy rendelés-lezárás, különben a viszonyítási alap már a felmérés közben elmozdul.</p>
</div>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="05">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="meres.html">Mérlegelés</a>
<a href="keszlet.html">Készlet</a>
<a href="arres.html">Árrés és önköltség</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 07 · Leltár</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
+219
View File
@@ -0,0 +1,219 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>03 · Mérlegelés — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html" aria-current="page"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 03</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html" aria-current="page"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">03</div>
<span class="kicker">Modul 03 · Közös motor</span>
<h1>Mérlegelés</h1>
<p class="lead">Egyetlen súlyképlet és egyetlen állapotsor — ugyanaz a beérkezésnél, a rendelésnél és a leltárnál. Ha ezt az egy oldalt elolvassa, mind a három folyamat mérési részét érti.</p>
<div class="chips">
<span class="chip chip--client">Raktári alkalmazás</span>
<span class="chip chip--live">Élesben működik</span>
</div>
</div>
<section class="section" id="keplet">
<h2 data-n="01">A súlyképlet</h2>
<p>Minden mérés ugyanezzel a képlettel dolgozik, függetlenül attól, hogy bejövő áru, kimenő rendelés vagy leltár:</p>
<div class="formula" aria-label="Nettó súly képlete">
<b>NETTÓ SÚLY</b> = bruttó súly raklap súlya ( rekeszszám × egy rekesz tárája )
</div>
<dl class="facts">
<div><dt>Bruttó súly</dt><dd>Amit a mérleg mutat: áru + rekeszek + raklap együtt.</dd></div>
<div><dt>Raklap súlya</dt><dd>A fizikai raklapé. Ha az áru raklap nélkül érkezik, 0.</dd></div>
<div><dt>Egy rekesz tárája</dt><dd>A termék törzsadatából. Lásd: <a href="termek-torzsadat.html">Termék-törzsadat</a>.</dd></div>
<div><dt>Rekeszszám</dt><dd>Mindig rögzítjük — akkor is, ha a terméket nem mérjük.</dd></div>
<div><dt>Nettó súly</dt><dd>Számított érték. Nem írható felül kézzel: mindig a fenti négy adatból áll elő.</dd></div>
</dl>
</section>
<section class="section" id="allapotok">
<h2 data-n="02">A mérési állapotsor</h2>
<p>Négy fokozat, mindig ebben a sorrendben:</p>
<ol class="steps">
<li><strong>Nem kezdett</strong> Még nincs mérési rekord a tételhez.</li>
<li><strong>Mérés alatt</strong> A rekord létrejött, de a súlyok még nincsenek rögzítve.</li>
<li><strong>Kész</strong> A súlyok rögzítve — a tétel le van mérve.</li>
<li><strong>Auditálva</strong> Az ellenőr jóváhagyta. Ez az állapot csak a <strong>kimenő rendelésnél</strong> létezik, és a rendelés lezárásakor keletkezik.</li>
</ol>
<div class="note">
<span class="note__label">Miért számít</span>
<p>Ez az állapot vezérli a vevői értesítőket, az árazást és azt, hogy egy rendelés lezárható-e. A nyitóképernyő számlálói is ebből dolgoznak.</p>
</div>
</section>
<section class="section" id="merendo">
<h2 data-n="03">Mérendő és nem mérendő termék</h2>
<p>A termék törzsadatában egy kapcsoló dönti el, hogy az árut fizikailag mérlegre tesszük-e. A két ág mindenben eltér:</p>
<div class="tablewrap">
<table>
<thead><tr><th></th><th>Mérendő</th><th>Nem mérendő</th></tr></thead>
<tbody>
<tr><td>Tipikus áru</td><td>Ömlesztett, változó tartalmú termény</td><td>Fix kiszerelés, például 15 kg-os karton</td></tr>
<tr><td>Amit a raktáros megad</td><td>Bruttó súly, raklapsúly, rekeszszám</td><td>Csak a rekeszszám</td></tr>
<tr><td>A nettó súly forrása</td><td>A mérleg, a fenti képlettel</td><td>Az átlagsúly törzsadat × rekeszszám</td></tr>
<tr><td>Árazás</td><td>Nettó súly × egységár</td><td>Mennyiség × egységár</td></tr>
<tr><td>Átlagsúly karbantartása</td><td>A rendszer visszatanulja a mérésekből</td><td>Kézzel megadott, a rendszer soha nem írja felül</td></tr>
</tbody>
</table>
</div>
<div class="note">
<span class="note__label">A bevételezés kamionnal kezdődik</span>
<p>Beérkezésnél a mérés <strong>kamionválasztással indul</strong>: a raktáros megmondja, melyik kamiont pakolja le, és a felület csak annak a kamionnak a raklapjait nyitja meg. Így egy több kamionra bontott tételnél is egyértelmű, melyik méréshez melyik fuvar tartozik — és az első kamion önállóan lezárható, nem kell megvárni a másikat. Lásd: <a href="szallitmanytervezo.html">Szállítmánytervező</a>.</p>
</div>
<div class="note">
<span class="note__label">Mindkét ágon közös</span>
<p>Mérési rekord <strong>minden tételhez keletkezik</strong>, akkor is, ha az árut nem mérjük. Így a folyamat egységes marad, és a rekeszszám mindig nyilván van tartva.</p>
</div>
</section>
<section class="section" id="harom-folyamat">
<h2 data-n="04">A három folyamat</h2>
<p>Ugyanaz a motor, három helyen. A különbség csak az, hogy mihez tartozik a mérés, és mi történik utána.</p>
<div class="tablewrap">
<table>
<thead><tr><th>Folyamat</th><th>Mit mérünk</th><th>Mi történik a zárásakor</th></tr></thead>
<tbody>
<tr>
<td><a href="beerkezes.html">Beérkezés</a></td>
<td>A szállítólevél tételeit</td>
<td>Növekszik a készlet; frissül a termék átlagsúlya; indulnak az előrendelés-konverziók</td>
</tr>
<tr>
<td><a href="rendeles.html">Rendelés</a></td>
<td>A rendelés kiszedett tételeit</td>
<td>Végleges ár, készletlevonás, auditált állapot, vevői értesítő, önköltség-fogyasztás</td>
</tr>
<tr>
<td><a href="leltar.html">Leltár</a></td>
<td>A fizikailag megtalált készletet</td>
<td>A készlet a mért értékre igazodik; a hiány önköltséget fogyaszt</td>
</tr>
</tbody>
</table>
</div>
</section>
<section class="section" id="atlagsuly">
<h2 data-n="05">Átlagsúly: tanulás és ellenőrzés</h2>
<h3>Visszatanulás</h3>
<p>Beérkezéskor, minden mentett mérés után a rendszer újraszámolja a termék átlagsúlyát a tétel lemért raklapjaiból — <strong>de kizárólag mérendő terméknél</strong>. Nem mérendő terméknél a kézzel megadott átlagsúly tartós, azt a mérés soha nem írja felül.</p>
<h3>Érvényesség-ellenőrzés</h3>
<p>A rendelés mérése után a rendszer összeveti a lemért átlagsúlyt a törzsadattal:</p>
<div class="formula" aria-label="Átlagsúly-eltérés ellenőrzése">
eltérés % = | törzsadat átlagsúly mért átlagsúly | / törzsadat átlagsúly × 100
<b>érvényes</b>, ha eltérés % &lt; a termék tűréshatára
</div>
<p>Ha egy tétel kilóg, az a rendelés szintjén is látszik. Ez a legfontosabb korai jelzés arra, hogy vagy a mérés hibás, vagy a törzsadat elavult.</p>
</section>
<section class="section" id="korlatok">
<h2 data-n="06">Amit érdemes tudni</h2>
<div class="note note--limit">
<span class="note__label">Korlát</span>
<p>A nem mérendő terméknél a <strong>súly-egyenleg szándékosan nem mozdul</strong> a készletben — a darabszám igen. Ez tudatos működés, de azt jelenti, hogy a súly szerinti készletkép csak a mérendő termékekre teljes. Részletek: <a href="keszlet.html">Készlet</a>.</p>
</div>
<div class="note note--warn">
<span class="note__label">Hibás törzsadat következménye</span>
<p>A hiányzó tára vagy átlagsúly nem okoz hibaüzenetet — <strong>rossz számot okoz</strong>. Nulla táránál a nettó súly a bruttóval egyezik, és ez a hiba végigmegy az árazáson, az EKÁER-bejelentésen és a számlán. Ezért van külön ellenőrző felület: <a href="termek-torzsadat.html">Termék-törzsadat</a>.</p>
</div>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="07">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="szallitmanytervezo.html">Szállítmánytervező</a>
<a href="beerkezes.html">Beérkezés</a>
<a href="rendeles.html">Rendelés és árazás</a>
<a href="leltar.html">Leltár</a>
<a href="termek-torzsadat.html">Termék-törzsadat</a>
<a href="keszlet.html">Készlet</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 03 · Mérlegelés</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
+174
View File
@@ -0,0 +1,174 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>04 · Rendelés és árazás — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html" aria-current="page"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 04</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html" aria-current="page"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">04</div>
<span class="kicker">Modul 04 · Kimenő irány</span>
<h1>Rendelés és árazás</h1>
<p class="lead">A vevői rendelés útja a felvételtől a lezárásig. Mérendő terménynél a végösszeg nem a felvételkor születik, hanem akkor, amikor az áru lekerül a mérlegről.</p>
<div class="chips">
<span class="chip">nopCommerce admin</span>
<span class="chip chip--client">Raktári alkalmazás</span>
<span class="chip chip--live">Élesben működik</span>
</div>
</div>
<section class="section" id="folyamat">
<h2 data-n="01">A rendelés útja</h2>
<ol class="steps">
<li><strong>Felvétel</strong> Négy csatornán érkezhet: a webshopból, az admin felületről, a <a href="ai-rendelesfelvetel.html">AI rendelésfelvételből</a>, vagy egy <a href="elorendeles.html">előrendelés</a> teljesüléséből.</li>
<li><strong>Mérés indítása</strong> A raktáros elindítja a mérést. Ekkor rögzül, ki a mérés gazdája, és <strong>kimegy a vevőnek az első értesítő</strong> („elkezdtük feldolgozni").</li>
<li><strong>Tételek mérése</strong> Raklaponként, a <a href="meres.html">közös mérési motorral</a>. Minden mentett mérés után a rendszer azonnal újraszámolja a tétel és a rendelés árát.</li>
<li><strong>Lezárás</strong> Az ellenőr lezárja a rendelést. A rendszer előbb megvizsgálja, hogy <strong>minden tételhez tartozik-e mérés</strong> — enélkül a lezárás nem megy végig.</li>
<li><strong>Ami a lezárással történik</strong> Végleges árak és végösszeg; készletlevonás darabban és súlyban; minden tétel auditált állapotba kerül; a rendelés státusza <em>Befejezve</em> lesz; kimegy a második vevői értesítő; és megtörténik az önköltség-hozzárendelés.</li>
</ol>
</section>
<section class="section" id="arazas">
<h2 data-n="02">Az árazás</h2>
<p>A rendszer a nopCommerce árazását lecseréli: a végösszeg a mérési adatból áll elő. Két ág van, a termék mérendősége szerint.</p>
<div class="formula" aria-label="Az árazás két ága">
<b>MÉRENDŐ</b> tétel végösszege = lemért nettó súly × nettó egységár
<b>NEM MÉRENDŐ</b> tétel végösszege = mennyiség × nettó egységár
</div>
<div class="note">
<span class="note__label">Mikor számol újra</span>
<p>Nem csak a lezáráskor: <strong>minden egyes mentett mérés után</strong> frissül az érintett tétel ára és a rendelés végösszege. Így a rendelés összege a mérés közben is végig valós.</p>
</div>
</section>
<section class="section" id="ellenorzesek">
<h2 data-n="03">Ellenőrzések a lezárás előtt</h2>
<dl class="facts">
<div>
<dt>Minden tétel lemérve</dt>
<dd>Mérés nélküli tétellel a rendelés nem zárható le. Ez a legerősebb kapu: enélkül hiányos végösszeggel mehetne ki a számla.</dd>
</div>
<div>
<dt>Átlagsúly-eltérés</dt>
<dd>Tételenként összeveti a lemért átlagsúlyt a törzsadattal, és jelzi, ha kilóg a tűréshatárból. Rendelés szinten is látszik, hogy minden tétel rendben van-e.</dd>
</div>
<div>
<dt>Hitelkeret</dt>
<dd>Ha a partnernek van beállított limitje, a rendszer a rendelés felvételekor vizsgálja, belefér-e. Lásd: <a href="hitelkeret.html">Vevői hitelkeret</a>.</dd>
</div>
</dl>
</section>
<section class="section" id="fizetes">
<h2 data-n="04">Fizetés és mérés viszonya</h2>
<div class="note note--limit">
<span class="note__label">Jelenlegi állapot</span>
<p><strong>A rendszerben ma nincs vevői online fizetési folyamat.</strong> Ennek üzleti oka van: mérendő tételt tartalmazó rendelésnek a mérés előtt nincs végleges összege, tehát nem is lenne mit kifizetni. Ha később bekerül a fizetés, a szabály az lesz, hogy csak lemért, auditált rendelés fizethető ki.</p>
</div>
</section>
<section class="section" id="kovetkezmeny">
<h2 data-n="05">A lezárás továbbgyűrűzése</h2>
<dl class="facts">
<div><dt>Készlet</dt><dd>Darabszám és súly-egyenleg egyszerre csökken, naplóbejegyzéssel és önellenőrzéssel.</dd></div>
<div><dt>Önköltség</dt><dd>Ugyanabban a lépésben a rendszer FIFO szerint hozzárendeli a kiadott árut ahhoz a beszerzéshez, amiből származik. Ebből lesz az árrés.</dd></div>
<div><dt>Vevői értesítő</dt><dd>Kimegy a „rendelése elkészült" levél a végösszeggel.</dd></div>
<div><dt>Számlázás</dt><dd>A rendelés innentől beküldhető az InnVoice rendszerbe. A nyitóképernyő addig jelzi, amíg ez meg nem történt.</dd></div>
</dl>
</section>
<section class="section" id="hol">
<h2 data-n="06">Hol található</h2>
<dl class="facts">
<div><dt>Rendelések listája</dt><dd><span class="path">Eladások → Rendelések</span></dd></div>
<div><dt>Rendelés szerkesztése</dt><dd>A listából. A jobb oldali kártyákban a FruitBank saját mezői és az InnVoice-beküldés.</dd></div>
<div><dt>Mérés</dt><dd>Raktári alkalmazás</dd></div>
</dl>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="07">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="meres.html">Mérlegelés</a>
<a href="elorendeles.html">Előrendelés</a>
<a href="hitelkeret.html">Vevői hitelkeret</a>
<a href="ertesitesek.html">Értesítések</a>
<a href="arres.html">Árrés és önköltség</a>
<a href="szamlazas.html">Számlázás — InnVoice</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 04 · Rendelés és árazás</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
@@ -0,0 +1,270 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>02 · Szállítmánytervező — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html" aria-current="page"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 02</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html" aria-current="page"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">02</div>
<span class="kicker">Modul 02 · Kamionok tervezése</span>
<h1>Szállítmánytervező</h1>
<p class="lead">Melyik áru melyik kamionra kerül — vizuálisan, a kamion telítettségét raklapban és kilogrammban egyszerre számolva. Azt a fejben pakolást váltja ki, ami eddig az adminon volt.</p>
<div class="chips">
<span class="chip chip--client">Raktári alkalmazás</span>
<span class="chip chip--live">Élesben működik</span>
<span class="chip">Tört raklapszám</span>
</div>
</div>
<section class="section" id="mire-valo">
<h2 data-n="01">Mire való</h2>
<p>A kérdés, amire a tervező válaszol: <em>„ma N kamionnal hoznék — beférnek-e a már megrendelt áruk?"</em> Ebből három kimenet lehet, és mindhárom döntést kíván:</p>
<ol class="steps">
<li><strong>Befér</strong> Sőt marad hely — a szabad kapacitás megmutatja, mennyivel lehetne még többet rendelni.</li>
<li><strong>Nem fér be</strong> Kell egy további kamion — és a tervező megmutatja, mennyivel lóg túl.</li>
<li><strong>Nem fér be, és nincs több kamion</strong> Valamit le kell mondani vagy a következő napra tolni.</li>
</ol>
<div class="note">
<span class="note__label">Elérés</span>
<p>Raktári alkalmazás → <span class="path">Szállítmányok / Adminisztrátor</span> csoport.</p>
</div>
</section>
<section class="section" id="felulet">
<h2 data-n="02">A felület</h2>
<p>Két hasáb, közöttük pakolás — nem táblázat, hanem rajzolt kamionséma telő raklaprekeszekkel.</p>
<dl class="facts">
<div>
<dt>Bal oldal — a felrakó</dt>
<dd>A még kamionhoz nem, vagy csak részben rendelt raklapos áru, <strong>ország és nap szerint</strong> csoportosítva. Ez egyben az eltérés-áttekintő is: ami hiányzik vagy nem fért fel, itt látszik tételenként, mennyiséggel és súllyal.</dd>
</div>
<div>
<dt>Jobb oldal — a kamionok</dt>
<dd>A nyitott szerelvények (vontató és opcionális pótkocsi). Kiválaszt egyet, és rápakol, amíg a kapacitás engedi. A telítettség sávban és a kamionsémán is látszik.</dd>
</div>
<div>
<dt>Pakolás</dt>
<dd>Húzással vagy kattintással. A rendszer a ráhúzás pillanatában ellenőrzi, hogy belefér-e.</dd>
</div>
<div>
<dt>Átpakolás-javaslat</dt>
<dd>Ha valami nem fér az egyik kamionra, de egy másik nyitott — azonos ország és nap — tud helyet, a tervező felajánlja.</dd>
</div>
</dl>
</section>
<section class="section" id="kapacitas">
<h2 data-n="03">A kapacitás-szabály</h2>
<p>Egy szerelvény kettős korlát alatt áll. A kamion akkor tele, ha <strong>bármelyik</strong> betelik:</p>
<div class="formula" aria-label="A kamion kapacitása">
<b>26 raklap</b> ÉS <b>22 500 kg</b>
</div>
<dl class="facts">
<div><dt>A vontató nem számít</dt><dd>Saját kapacitása nincs, csak a pótkocsinak. A fenti érték a teljes szerelvényé.</dd></div>
<div><dt>Fix standard érték</dt><dd>Nem abból következik, hogy be van-e írva a pótkocsi — az gyakran csak később kerül rögzítésre.</dd></div>
<div><dt>Országonkénti eltérés</dt><dd>Ma nincs: minden relációra ugyanez a két szám érvényes.</dd></div>
</dl>
<h3>Tervezési súly</h3>
<p>Pakoláskor még nincs mérés, tehát a kg-korláthoz becsült súly kell. A rendszer sorrendben próbálkozik:</p>
<div class="formula" aria-label="A tervezési súly forrása">
1. a szállítólevélen szereplő <b>bruttó súly</b>
2. ha az hiányzik vagy nulla:
raklapszám × 10 kg + rekeszszám × ( tára + átlagsúly )
<span class="cmt">Részleges kiosztásnál rekesz-arányosan.</span>
</div>
<div class="note">
<span class="note__label">Ez nem a mért súly</span>
<p>A tervezési súly a pakolás segédszáma. A tényleges mérés ettől függetlenül fut, és a mérleg <strong>nem írja felül</strong> a tervezéskor rögzített deklarált súlyt — a kettő szándékosan külön él.</p>
</div>
</section>
<section class="section" id="ai">
<h2 data-n="04">Automatikus szétosztás</h2>
<p>Egy gombbal a rendszer az összes nyitott árut <strong>országonként</strong> szétosztja a kamionok között, a kettős korlátot betartva. Algoritmikus optimalizálás, nem nyelvi modell.</p>
<ol class="steps">
<li><strong>Előnézet</strong> A javaslat először csak megjelenik — semmi nem változik meg tőle.</li>
<li><strong>Alkalmazás</strong> Külön lépésben fogadja el. Amíg nem fogadja el, a kézi pakolás érvényben marad.</li>
<li><strong>Szabad kapacitás</strong> A javaslat megmutatja, mennyi hely maradt — vagyis mennyivel több árut lehetne még rendelni ugyanerre a fuvarra.</li>
</ol>
</section>
<section class="section" id="hozzarendeles">
<h2 data-n="05">Tétel és kamion viszonya</h2>
<p>A hozzárendelés <strong>külön nyilvántartásban</strong> él, nem a szállítólevél-tételen. Ennek egy oka van, és az fontos:</p>
<div class="note">
<span class="note__label">Egy tétel több kamionra bomolhat</span>
<p>Ha nyolc raklapból hat fér fel az egyik kamionra, a maradék kettő a következőre kerülhet — a szállítólevél-tétel közben érintetlen marad. Elsődleges egység a <strong>rekesz</strong>, a raklap ebből származik.</p>
</div>
<p>A mennyiség <strong>nem fagy be</strong>: a törés követése — hogy nyolc helyett hat jött — a funkció lényege, nem kivétel. Amikor a mennyiség változik, a hozzárendeléshez tartozó deklarált súly arányosan újraszámolódik.</p>
</section>
<section class="section" id="tores">
<h2 data-n="06">Törés és hiányos beérkezés</h2>
<p>Az admin két úton értesülhet arról, hogy nem jött meg minden — a rendszer mindkettőt kezeli.</p>
<h3>1. A lepakolásnál derül ki</h3>
<p>A rakodó a mérőfelületen <strong>hiányosan is lezárhatja</strong> a mérést azzal, ami ténylegesen megérkezett. A gomb akkor jelenik meg, ha a vártnál kevesebb, de legalább egy raklap le van mérve. A kamion hozzárendelése a valóságra áll, a különbözet pedig <strong>magától visszakerül a tervező felrakójára</strong> — nem kell nyitott mérést keresgélni hozzá.</p>
<h3>2. Az eladó előre jelzi</h3>
<p>Mérés előtt is bontható egy tétel: a kamion rakományán a tétel jelölőjén megadható, mennyi maradjon, a többi visszakerül a felrakóra.</p>
<h3>„Nem jön többé"</h3>
<p>Ha kiderül, hogy a maradék soha nem érkezik meg, a felrakói kártyán egy gomb leviszi az elvárt mennyiséget a ténylegesen kiosztott szintre. Így a lógó maradék lezárul, és nem terheli tovább a tervezést.</p>
<div class="note note--warn">
<span class="note__label">Szerepkör-határ</span>
<p>A <strong>törésről az admin dönt, nem a rakodó.</strong> A mérőfelület csak rögzít és hiányosan lezár; hogy a maradék egy másik kamionra megy-e vagy soha nem jön, az admin döntése a tervezőben. A rendszer szándékosan nem dönt helyette — nem tudhatja, melyik eset áll fenn.</p>
</div>
</section>
<section class="section" id="gyujto">
<h2 data-n="07">Gyűjtőjárat</h2>
<div class="note note--limit">
<span class="note__label">Külön modul, alapból kikapcsolva</span>
<p>Ha a fuvarozó gyűjtőjáratot ad — vagyis másnak is szállít ugyanazon a kamionon —, és megmondja, hány raklaphely a miénk, a rendszer ezzel a szűkített raklap-kapacitással számol. A súlykorlát ilyenkor is a teljes 22 500 kg marad.</p>
<p>Ez <strong>fizetős kiegészítés, jelenleg kikapcsolt állapotban</strong>. Az adatbázis-oldali felkészítés megvan, a bekapcsolás fejlesztői lépést és együttes újratelepítést igényel — adatbázis-módosítás nélkül.</p>
</div>
</section>
<section class="section" id="kapcsolodas">
<h2 data-n="08">Mire hat még</h2>
<p>A tervező nem önálló sziget: a kamion-hozzárendelés három másik modul alapadata lett.</p>
<div class="tablewrap">
<table>
<thead><tr><th>Modul</th><th>Mit ad neki a tervező</th></tr></thead>
<tbody>
<tr>
<td><a href="meres.html">Mérlegelés</a></td>
<td>A bevételezés <strong>kamionválasztással indul</strong>: a mérés azt a kamiont pakolja le, tehát minden mérés egyértelműen a helyes kamionhoz kötődik — megbontott tételnél is. A mérőfelület csak az adott kamion raklapjait nyitja meg, így az első kamion önállóan lezárható.</td>
</tr>
<tr>
<td><a href="ekaer.html">EKÁER</a></td>
<td>A bejelentés a kamion-hozzárendelés szintjén készül, nem a szállítólevélén — egy fuvarhoz pontosan az kerül be, ami tényleg azon a kamionon jött.</td>
</tr>
<tr>
<td><a href="arres.html">Árrés</a></td>
<td>A fuvardíj a hozzárendeléseken keresztül oszlik raklap-arányosan a tételek között. Hozzárendelés nélküli régi szállítmánynál a fuvarköltség nullaként viselkedik.</td>
</tr>
</tbody>
</table>
</div>
</section>
<section class="section" id="allapot">
<h2 data-n="09">Jelenlegi állapot</h2>
<div class="note">
<span class="note__label">Ami kész</span>
<p>Az adatmodell, a tervező felület, az automatikus szétosztás, a kamion-tudatos mérés, a hiányos lezárás, az admin-törés, a kevert raklapok kezelése és az EKÁER-átállás <strong>funkcionálisan kész</strong>. Ami hátravan belőlük: az éles környezeti próbák.</p>
</div>
<div class="note">
<span class="note__label">Kevert raklapok</span>
<p>Egy fizikai raklapon több áru is érkezhet, és a rendszer ezt kezeli. A tétel raklapigénye a rekesz/raklap arányból számolt <strong>tört érték</strong> — 2,2 raklap is lehet —, a tört maradékok pedig <strong>közös fizikai raklapra vonhatók</strong> a szállítólevélen belül. A kamion foglaltsága ebből áll elő, mindig egész raklaphelyekben:</p>
<div class="formula formula--wrap">Σ egész raklapok + csoportonként a maradékok összege felfelé kerekítve + csoport nélküli maradékonként 1</div>
<p>A <strong>mérési feladatok száma ettől külön</strong> számol: minden megkezdett raklap külön mérés, tételenként. Egy összevont raklapon tehát több mérés is van, miközben a kamionon egyetlen helyet foglal — a két szám jogosan tér el.</p>
</div>
<div class="note note--warn">
<span class="note__label">Amitől a számítás függ</span>
<p>A raklapszám a termék <strong>rekesz/raklap</strong> törzsadatából származik. Ahol ez hiányzik, a tervező jelzi a hiányt, és linkel a termék szerkesztő oldalára — de addig a foglaltság nem pontos. Lásd: <a href="termek-torzsadat.html">Termék-törzsadat</a>.</p>
</div>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="10">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="beerkezes.html">Beérkezés</a>
<a href="meres.html">Mérlegelés</a>
<a href="ekaer.html">EKÁER</a>
<a href="arres.html">Árrés és önköltség</a>
<a href="termek-torzsadat.html">Termék-törzsadat</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 02 · Szállítmánytervező</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
+138
View File
@@ -0,0 +1,138 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>14 · Számlázás — InnVoice — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html" aria-current="page"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 14</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html" aria-current="page"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">14</div>
<span class="kicker">Modul 14 · Külső rendszer</span>
<h1>Számlázás — InnVoice</h1>
<p class="lead">A lezárt rendelés átadása az InnVoice számlázó rendszernek, a rendelés szerkesztő oldaláról, egy gombbal — és a beküldés állapotának visszaolvasása.</p>
<div class="chips">
<span class="chip">nopCommerce admin</span>
<span class="chip chip--live">Élesben működik</span>
<span class="chip chip--part">Átállás előkészítés alatt</span>
</div>
</div>
<section class="section" id="hol">
<h2 data-n="01">Hol található</h2>
<p>A <strong>rendelés szerkesztő oldalán</strong>, a jobb oldali kártyák között: <em>„Megrendelés beküldése Innvoice-ba"</em>. Nem külön menüpont — ott van, ahol a rendelést amúgy is kezelik.</p>
</section>
<section class="section" id="mukodes">
<h2 data-n="02">Hogyan működik</h2>
<ol class="steps">
<li><strong>Automatikus állapotlekérdezés</strong> A rendelés oldalának megnyitásakor a rendszer magától megnézi, van-e már beküldés ehhez a rendeléshez.</li>
<li><strong>Megrendelés beküldése</strong> A gomb átadja a rendelést az InnVoice-nak.</li>
<li><strong>Visszaigazolás</strong> Sikeres beküldés után a kártya megmutatja az InnVoice azonosítókat és a <strong>PDF hivatkozást</strong>.</li>
<li><strong>Invoice adat ellenőrzése</strong> Bármikor újra lekérdezhető az állapot, ha a kártya nem az elvárt képet mutatja.</li>
</ol>
</section>
<section class="section" id="kovetes">
<h2 data-n="03">A beküldés követése</h2>
<p>A rendszer több helyen is jelzi, ha egy lezárt rendelés még nincs beküldve:</p>
<dl class="facts">
<div><dt>Nyitóképernyő számláló</dt><dd>„InnVoice hiányzik" — ha nem nulla, a doboz pirosra vált.</dd></div>
<div><dt>Mai rendelések táblázat</dt><dd>Rendelésenként pipa vagy kereszt az InnVoice oszlopban.</dd></div>
<div><dt>Riasztások</dt><dd>Külön riasztás-sor a beküldés nélküli lezárt rendelésekre, közvetlen hivatkozással a rendelésre.</dd></div>
</dl>
<div class="note">
<span class="note__label">Sorrend</span>
<p>A beküldésnek <strong>a rendelés lezárása után</strong> van értelme: mérendő tételnél a végösszeg csak akkor végleges. Ezért figyeli a nyitóképernyő kifejezetten a <em>lezárt, de be nem küldött</em> rendeléseket.</p>
</div>
</section>
<section class="section" id="atallas">
<h2 data-n="04">Tervezett átállás</h2>
<div class="note note--limit">
<span class="note__label">Jelenlegi állapot és irány</span>
<p>Ma a rendszer <strong>megrendelést</strong> küld be az InnVoice-nak. A tervezett irány a <strong>közvetlen számla-beküldés</strong>, ahol a számla azonnal <em>piszkozat</em> állapotban jön létre az InnVoice-ban — így a számlázás egy lépéssel rövidül, és a piszkozat az InnVoice-ban véglegesíthető.</p>
<p>Az átálláshoz szükséges kód egy része már a rendszerben van, de még nincs felülethez kötve. Amíg ez nem történik meg, a fenti megrendelés-beküldés az érvényes út.</p>
</div>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="05">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="rendeles.html">Rendelés és árazás</a>
<a href="attekinto.html">Vezetői áttekintő</a>
<a href="hitelkeret.html">Vevői hitelkeret</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 14 · Számlázás — InnVoice</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>
@@ -0,0 +1,188 @@
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>13 · Termék-törzsadat — FruitBank</title>
<link rel="stylesheet" href="css/kb.css">
</head>
<body>
<header class="masthead">
<div class="masthead__in">
<a class="brand" href="index.html">
<span class="brand__mark">Fruit<em>Bank</em></span>
<span class="brand__sub">Funkció-ismertető</span>
</a>
<details class="navdrop">
<summary>Modulok</summary>
<nav class="rail">
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html" aria-current="page"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
</details>
<div class="masthead__meta">Modul 13</div>
</div>
</header>
<div class="shell">
<nav class="rail">
<div class="rail__title">Modulok</div>
<ol>
<li><a href="attekinto.html"><span>00</span>Vezetői áttekintő</a></li>
<li><a href="beerkezes.html"><span>01</span>Beérkezés</a></li>
<li><a href="szallitmanytervezo.html"><span>02</span>Szállítmánytervező</a></li>
<li><a href="meres.html"><span>03</span>Mérlegelés</a></li>
<li><a href="rendeles.html"><span>04</span>Rendelés és árazás</a></li>
<li><a href="elorendeles.html"><span>05</span>Előrendelés</a></li>
<li><a href="ai-rendelesfelvetel.html"><span>06</span>AI rendelésfelvétel</a></li>
<li><a href="leltar.html"><span>07</span>Leltár</a></li>
<li><a href="keszlet.html"><span>08</span>Készlet</a></li>
<li><a href="arres.html"><span>09</span>Árrés és önköltség</a></li>
<li><a href="ekaer.html"><span>10</span>EKÁER</a></li>
<li><a href="hitelkeret.html"><span>11</span>Vevői hitelkeret</a></li>
<li><a href="ertesitesek.html"><span>12</span>Értesítések</a></li>
<li><a href="termek-torzsadat.html" aria-current="page"><span>13</span>Termék-törzsadat</a></li>
<li><a href="szamlazas.html"><span>14</span>Számlázás — InnVoice</a></li>
</ol>
</nav>
<main>
<div class="hero">
<div class="hero__num" aria-hidden="true">13</div>
<span class="kicker">Modul 13 · A számítások alapja</span>
<h1>Termék-törzsadat</h1>
<p class="lead">Öt érték a terméknél, amiből a mérés, a raklapszámítás, az EKÁER-bejelentés és a számlázott összeg dolgozik. Ha ez hibás, semmi nem ad hibaüzenetet — csak rossz számot.</p>
<div class="chips">
<span class="chip">nopCommerce admin</span>
<span class="chip chip--live">Élesben működik</span>
</div>
</div>
<section class="section" id="ot-ertek">
<h2 data-n="01">Az öt érték</h2>
<div class="tablewrap">
<table>
<thead><tr><th>Érték</th><th>Mit jelent</th><th>Mire hat</th></tr></thead>
<tbody>
<tr>
<td>Mérendő</td>
<td>Fizikailag mérlegre kerül-e a termék</td>
<td>Ez választja az árazási ágat és a súly-származtatást</td>
</tr>
<tr>
<td>Tára</td>
<td>Egy rekesz saját súlya</td>
<td>A nettó súly képlete</td>
</tr>
<tr>
<td>Átlagsúly</td>
<td>Várt nettó súly rekeszenként</td>
<td>Nem mérendő terméknél ebből jön a súly; mérendőnél az ellenőrzés alapja</td>
</tr>
<tr>
<td>Tűréshatár</td>
<td>Megengedett eltérés az átlagsúlytól, százalékban</td>
<td>A mérés érvényességének kapuja</td>
</tr>
<tr>
<td>Rekesz / raklap</td>
<td>Hány rekesz fér egy raklapra</td>
<td>Ebből származik a raklapszám, ami a fuvarköltséget elosztja</td>
</tr>
</tbody>
</table>
</div>
</section>
<section class="section" id="szerkesztes">
<h2 data-n="02">Hol szerkeszthető</h2>
<h3>Törzsadat-rács — tömeges karbantartás</h3>
<p>Elérés: <span class="path">FruitBank → Termék-törzsadat</span>. Egy képernyőn az összes termék öt értéke, közvetlenül szerkeszthető soronként.</p>
<dl class="facts">
<div><dt>Keresés</dt><dd>Terméknév vagy cikkszám szerint.</dd></div>
<div><dt>„Csak a hiányos törzsadatúak"</dt><dd>Kipipálva csak azok a sorok maradnak, ahol valami hiányzik. Ez a leggyorsabb út a karbantartáshoz: bepipálja, és addig javít, amíg a lista ki nem ürül.</dd></div>
<div><dt>Mit tekint hiányosnak</dt><dd>Nincs tára; vagy nincs, illetve nem pozitív az átlagsúly és a rekesz/raklap. Mérendő terméknél a tűréshatár is szükséges.</dd></div>
<div><dt>Üres mező mentése</dt><dd>Az üresen hagyott mező mentéskor <strong>törli</strong> az értéket — ez a „nincs beállítva" állapot, nem nulla.</dd></div>
</dl>
<h3>Termék szerkesztő oldala</h3>
<p>Az egyedi javításhoz a nopCommerce termék-szerkesztőjén is ott vannak a mezők, saját kártyában.</p>
</section>
<section class="section" id="tanulas">
<h2 data-n="03">Amit a rendszer magától karbantart</h2>
<p>Egyetlen érték van, amit a rendszer maga is ír: az <strong>átlagsúly</strong>. Beérkezéskor, minden mentett mérés után visszatanulja a tétel lemért raklapjaiból — de <strong>csak mérendő terméknél</strong>.</p>
<div class="note">
<span class="note__label">Nem mérendő terméknél</span>
<p>A kézzel megadott átlagsúly <strong>tartós</strong>: a mérés soha nem írja felül. Ez szándékos — ott az átlagsúly a kiszerelés deklarált tulajdonsága, nem mérési eredmény.</p>
</div>
<p>A másik négy értéknek nincs automatikus írója: azok kizárólag emberi kézből származnak.</p>
</section>
<section class="section" id="kockazat">
<h2 data-n="04">Miért ez a legkockázatosabb adat a rendszerben</h2>
<div class="note note--warn">
<span class="note__label">A hiányzó érték nem hiba, hanem nulla</span>
<p>A rendszer a hiányzó törzsadatot <strong>nullaként</strong> olvassa, a hiányzó mérendőség-jelölést pedig „nem mérendő"-ként. Ebből nem lesz hibaüzenet — csak rossz szám: nulla táránál a nettó súly a bruttóval egyezik, hiányzó átlagsúlynál a nem mérendő tétel nulla kilós lesz. Ez a hiba <strong>végigmegy az árazáson, a NAV-bejelentésen és a számlán</strong>.</p>
</div>
<div class="tablewrap">
<table>
<thead><tr><th>Ha hiányzik</th><th>Mi lesz a következménye</th></tr></thead>
<tbody>
<tr><td>Tára</td><td>A nettó súly a bruttóval egyezik — túlszámlázás</td></tr>
<tr><td>Átlagsúly</td><td>Nem mérendő terméknél nulla súly; mérendőnél nincs mihez hasonlítani</td></tr>
<tr><td>Tűréshatár</td><td>Az érvényesség-ellenőrzés nem véd</td></tr>
<tr><td>Rekesz / raklap</td><td>Nincs raklapszám — a fuvarköltség nem oszlik szét helyesen</td></tr>
<tr><td>Mérendőség</td><td>A termék némán a nem mérendő ágra kerül</td></tr>
</tbody>
</table>
</div>
</section>
<section class="section" id="ellenorzes">
<h2 data-n="05">Ellenőrzés</h2>
<p>A törzsadat-rács „csak a hiányos törzsadatúak" szűrője a napi eszköz. Ezen felül létezik <strong>adatbázis-szintű, tömeges ellenőrzés</strong> is, ami az egyedi hiányokon túl a következőket keresi: érvénytelen értékek, a terméknév és az érték ellentmondása, irreális számok, valamint egy összesítő kép a törzsadat állapotáról. Ez üzemeltetői feladat, a fejlesztéssel egyeztetve futtatható.</p>
</section>
<section class="section" id="kapcsolodo">
<h2 data-n="06">Kapcsolódó modulok</h2>
<div class="crossrefs">
<a href="meres.html">Mérlegelés</a>
<a href="rendeles.html">Rendelés és árazás</a>
<a href="ekaer.html">EKÁER</a>
<a href="arres.html">Árrés és önköltség</a>
</div>
</section>
</main>
</div>
<footer class="foot">
<span class="foot__mono">Modul 13 · Termék-törzsadat</span>
<span><a href="index.html">Vissza a tartalomjegyzékhez</a></span>
</footer>
</body>
</html>