# Słownik Pojęć

Ten plik jest punktem wejścia do dokumentacji `stats` dla człowieka.
Nie opisuje całego systemu technicznie. Zbiera używane pojęcia, skróty myślowe i wskazuje, w którym pliku jest ich pełniejszy opis.

## Zasada pracy

Każdy nowy skrót myślowy, który zaczyna być używany w rozmowach, UI albo dokumentacji, dopisujemy tutaj przy okazji kolejnej zmiany.

## Jak czytać dokumentację

- [`project_overview.md`](/G:/dapp/app/pikaczu/public_html/stats/docs/project_overview.md)
  Ogólny opis modułu, jego zakresu i miejsca `stats` w ekosystemie.
- [`controllers.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/controllers.yaml)
  Router, kontrolery, trasy i odpowiedzialność metod HTTP.
- [`database.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/database.yaml)
  Główne tabele, prefiksy kolumn i relacje ważne dla aplikacji.
- [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)
  Reguły kosztów, importów, cache miesięcznego, BOM, carry, napraw i checków.
- [`reporting_workflow.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/reporting_workflow.yaml)
  Przepływ danych raportowych, dziennych i okresowych.
- [`pricing_workflow.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/pricing_workflow.yaml)
  Zasady rejestru kosztow kalkulacyjnych, cennikow, VAT i kalkulacji brutto.

## Pojęcia robocze

### `stats`
Moduł analityczno-kontrolny dla sprzedaży, kosztów, kursów walut, WZ i raportów.
Opis ogólny: [`project_overview.md`](/G:/dapp/app/pikaczu/public_html/stats/docs/project_overview.md)

### zamówienie
W `stats` podstawowy dokument sprzedażowy. Może pochodzić z importu zamówień albo z importu faktur sprzedaży.
Technicznie: `wms_stats_order` i `wms_stats_order_item`.
Opis tabel: [`database.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/database.yaml)

### produkt / towar / `stw`
Kartoteka produktu po stronie `stats`, używana do analiz, mapowań i filtrów.
Nie zawsze jest tym samym co źródłowy towar ERP, ale może być z nim powiązana.
Opis tabel i prefiksów: [`database.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/database.yaml)

### BOM
Bill of Materials, czyli lista składników produktu.
W `stats` chodzi głównie o kosztowy BOM używany do wyliczenia kosztu produktu ze składników.
Opis procesu: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### komplet / `tw_rodzaj=8`
Produkt składany z innych składników albo kupowany jako gotowy wyrób.
W kosztach traktowany specjalnie: może mieć koszt bezpośredni albo koszt liczony ze składników.
Reguły: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### koszt bezpośredni
Koszt wprowadzony z PZ, importu kosztów albo utrzymywany bez rozbicia na BOM.
Dla dzieci `tw_rodzaj=8` przy kalkulacji BOM używamy właśnie kosztu bezpośredniego, nie ich własnego `CALC`.
Reguły: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### `CALC`
Koszt wyliczony z BOM i kosztów składników.
To jedna z warstw aktywnego cache miesięcznego.
Opis: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### cache miesięczny
Główne aktywne źródło kosztu w `stats`.
Koszty są przypisane do symbolu i miesiąca, a nie bezpośrednio do pojedynczej daty kosztu.
Technicznie: `wms_cost_month_product`.
Opis: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### `carry`
Koszt przepisany z wcześniejszego miesiąca, gdy w bieżącym miesiącu nie ma kosztu bezpośredniego.
To zachowanie jest poprawne biznesowo dla pozycji aktualizowanych rzadko.
Opis: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### WZ
Wydanie magazynowe budowane na podstawie danych sprzedażowych i kosztowych.
W `stats` WZ jest generowane do tabel modułu `package` i służy też jako źródło do rejestrów dziennych i okresowych.
Opis: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### GAP
Różnica lub luka między oczekiwanym a rzeczywistym obrazem danych.
Najczęściej używane przy WZ i rozchodach: np. brak pełnego pokrycia realnym wydaniem albo różnica między wariantami kosztu.
Szerszy kontekst WZ: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### `diff`
Skrót od difference, czyli różnica między dwiema wartościami.
W checkach najczęściej oznacza rozjazd między sumą z nagłówka a sumą z pozycji.
Przykład: `Header PLN` vs `Items PLN`.

### `items`
Pozycje dokumentu albo rekordy składowe użyte do wyliczenia wartości zbiorczej.
W zależności od ekranu mogą to być pozycje zamówienia, pozycje WZ albo pozycje użyte w checku.

### check
Kontrola jakości danych.
Check niczego sam nie zmienia, tylko wykrywa problem, pokazuje listę i zwykle daje CSV.
Kontrolery i widoki: `admin/checks`.
Opis procesów kontroli: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### reports-cost
Osobny obszar do przegladu i korekt rekordow kosztowych.
Widok raportu jest dostepny dla rol `lead`, `manager`, `chief`, `admin`, a korekty wykonuje tylko `admin`.
To nie jest zwykly check: po zapisie uruchamia sled przeliczenia danych zależnych.

### fix
Akcja naprawcza uruchamiana świadomie z admina.
W odróżnieniu od checka zmienia dane albo oznacza je do przeliczenia.
Opis procesów naprawczych: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### `recalc`
Oznaczenie, że symbol lub zakres wymaga ponownego przeliczenia po zmianie danych źródłowych.
Najczęściej chodzi o flagę `csr_flag_needs_recalc`.
Opis: [`costs_and_imports.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/costs_and_imports.yaml)

### rejestr dzienny
Zbiorcze dane dzienne budowane z WZ.
Są podstawą dalszych agregacji okresowych.
Opis: [`reporting_workflow.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/reporting_workflow.yaml)

### rejestr okresowy
Agregat tygodniowy, miesięczny, kwartalny itd. budowany z rejestrów dziennych.
Opis: [`reporting_workflow.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/reporting_workflow.yaml)

### snapshot / top / ogon
Robocze określenia szybkich zestawień rankingowych.
`top` oznacza najlepsze pozycje, `ogon` najsłabsze, a `snapshot` szybki obraz z wybranego okresu.
To pojęcia analityczne, nie nazwy konkretnych tabel.

### market / marketplace
Grupa kanałów sprzedaży.
W modelu `stats` kanał sprzedaży może należeć do jednego marketu.
Opis tabel: [`database.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/database.yaml)

### seria / model / kategoria
Jednoznaczne klasyfikatory towaru po stronie `stats`.
Każdy towar `stats` ma docelowo jedno przypisanie kategorii, modelu i serii.
Opis modelu danych: [`database.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/database.yaml)

### pricing / cenniki / `pim_*`
Obszar roboczy przyszlego PIM do utrzymania symboli technicznych ERP, kosztow kalkulacyjnych i pozycji cennikowych.
Technicznie korzysta z tabel `pim_price_*`, a nie `wms_*`.

### `pim_price_list_component`
Lista skladnikow kosztowych przypisana do konkretnego cennika.
To na jej podstawie wybieramy, ktore koszty kalkulacyjne wplywaja na wycene symboli w danym cenniku.

### koszt kalkulacyjny
Koszt uznaniowy / kalkulacyjny uzywany do budowy cen cennikowych.
Nie ma historii okresowej jak klasyczne koszty stats; jest utrzymywany statycznie per symbol techniczny.
Szerszy opis: [`pricing_workflow.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/pricing_workflow.yaml)

### cennik detaliczny
Cennik, w ktorym biznesowo najwazniejsza jest cena brutto.
Moze wymagac zaokraglenia brutto do ladnej wartosci, a potem ponownego wyliczenia netto.
Szerszy opis: [`pricing_workflow.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/pricing_workflow.yaml)

### cennik B2B
Cennik, w ktorym biznesowo najwazniejsza jest cena netto.
Szerszy opis: [`pricing_workflow.yaml`](/G:/dapp/app/pikaczu/public_html/stats/docs/pricing_workflow.yaml)

### `pim_dict_cost_component`
Wlasny slownik skladnikow kosztu dla obszaru cennikow.
To kopia robocza z legacy `wms_dict_koszt_skladnik`, utrzymywana po to, zeby `pricing` bylo odciete od `wms`.
Model organizacyjny jest dwupoziomowy:
- grupa glowna (`parent_group_id = NULL/0`)
- podgrupa (`parent_group_id > 0`)

## Uwaga praktyczna

### `utf8mb4_unicode_ci`
Domyslny standard kolacji dla nowych tabel i nowych kolumn tekstowych w `stats`.

W praktyce oznacza to:

- `utf8mb4` jako charset,
- `utf8mb4_unicode_ci` jako collation,
- unikanie mieszania z `utf8mb4_general_ci`, bo to moze powodowac bledy SQL przy porownaniach tekstowych.

Jeżeli jakieś pojęcie zaczyna żyć własnym życiem w rozmowach albo w UI, warto dopisać je tutaj nawet wtedy, gdy technicznie istnieje już w innym pliku.
Ten plik ma przede wszystkim skracać wejście w projekt i porządkować wspólny język pracy.
