Diskuze: Návrh struktury MySQL databáze
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, zrovna budu řešit také jeden sklad... pokud správně chápu, tak
máš tabulku položek a pak tabulku inventur osobně tam postrádám tabulku s
pohyby příjem, výdej, prodej, odpis atd...
novou inventuru bych poté koncipoval jako součet pohybů a stavu předchozí
inventury + případně speciální položky pro rozdíl 'má být' vs. 'je'
záleží na koncepci jestli to třeba zákazník chce nějak vidět zvlášť
třeba zpětně za rok.. tak, aby se tím lépe pracovalo..
Ještě jsem si všiml, že na položce máš cenu... takže inventuru patrně můžeš udělat jen na ks, litry atd... bohužel asi neuděláš inventuru v Kč... lepší by bylo mít cenu na pohybu, jelikož např. nakoupíš saláty od Standy na 50 Kč/ks dnes,, ale v úterý už máš jen 2ks, takže ve středu půjdeš k Jirkovi a přikoupíš za 60 Kč/ks mezi tím nějaké odepíšeš protože prostě nebyly čerstvé... Pak v rámci inventury vznikne otázka, kolik salátu a za jakou cenu máme na skladě? nebude to ani 50 Kč ani 60 Kč ale někde mezi tím..
item (id_zbozi, zbozi_data)
sklad (id_sklad, id_zbozi, pohyb_data - kdo, kdy, jaky druh pohybu, pocet
kusu...)
1, 98, 0, 5, ... -- nakup 5 kusu
1, 98, 1, 5, ... -- prodej 5 kusu
1, 98, 2, 5, ... -- spotreba 5 kusu
1, 98, 3, 5, ... -- vyroba 5 kusu
A inventura je vypis za urcite obdobi, ne? To potrebujes tez ukladat do tabulky? Nestaci to vytahnout sql dotazem? Jako, muzes, to je na tobe. Pseudokod dotazu
SELECT SUM(cislo)
(SELECT +SUM(kusu) AS cislo, id_zbozi ... WHERE pohyb_typ IN (nakup, vyroba)
UNION
SELECT -SUM(kusu) AS cislo, id_zbozi ... WHERE pohyb_typ IN (prodej, spotreba))
GROUP BY id_zbozi
Ahoj, ano, chápeš to správně. Já právě řešil všechno v tabulce inventury (tam jsem ukládal ty pohyby a ve výpisu filtroval podle data, sčítal a násobil podle klíče položky). Moc děkuji za tvoje řešení. Tohle jsem přesně potřeboval, ale jak jsem už psal, tak po 3 dnech jsem se v tom totálně utopil a už neviděl, co to potřebuje. Ještě jednou díky.
Všem moc děkuji za pomoc. Předělám tabulky, vložím testovací data a hodím sem výsledek. Pokud někdo budete pracovat na podobném systému, napište. Je tam několik zákeřností, které jsem již vyřešil a rád pomůžu ostatním.
Položka cena je v tabulce "polozky" a slouží jako prodejní cena (tržba) nikoliv jako nákupní cena.
Ok, ale jak víš, že prodejní cena není nižší než cena položky z inventury? Tj. v procesu naskladnění nedošlo ke správné aktualizaci prodejní ceny? Nebo se cena aktualizuje jen když nová nákupní + marže je vyšší než současná prodejní?
Prodejní cena je fixní, respektive mění se maximálně 1x za rok při zdražení ze strany dodavatelů a slouží pouze k výpočtu tržby u dané položky (aby personál věděl, kolik peněz má odevzdat majiteli). Např. 1 panák rumu stojí 50kč a jeho obsah je 4cl, počáteční stav rumu je 200cl, zůstatek při inventuře 184cl, prodej tedy vychází na 16cl = 4 panáky = tržba je 200kč. Nákupní ceny se řeší v další části aplikace "finance". Zákazník neměl zájem o podrobný report čistého zisku podle položek. Vše se počítá dohromady (tržba - nákup = profit). Výplaty zaměstnanců, nájem prostor atd jsou odděleny typem příjmu/výdeje peněz.
Aha, takže tak častou inventarizací se neřeší ani tak změna cen jako
spíše to... jak to říci zda se nekrade.
V podstatě ano, přesněji to funguje následovně. Jsou 2 směny, každá z
nich pracuje krátký(st-čt) - dlouhý(po-út, pá-ne) týden proti sobě. Je
tedy důležité, aby směna, co začíná svůj první den (např pátek)
zkontrolovala fyzicky stav jednotlivých položek na provozovně a porovnala s
počátečním zůstatkem (konečným zůstatkem směny předešlé), zda
všechno sedí. V den, kdy jsou v práci naposledy ( v našem případě
neděle) musejí všechny položky opět fyzicky spočítat, zadat do systému,
ten vypočítá prodané kusy a podle toho i celkovou tržbu k odevzdání
majiteli. Jejich konečné stavy opět překontroluje druhá směna, které jde
další den do práce a tak pořád dokola. V dnešní době se používají
(musejí) fiskální pokladny s EET, ovšem co si budeme povídat, každý
kouká, jak to co nejvíc obcházet, takže pokud nejsou markovány a evidovány
všechny prodané položky v kase, tak není jiná cesta než vše fyzicky
počítat a zadávat data do podobného systému. Dříve se to ani jinak
nedělalo, jen místo aplikace se používala tužka, papír a občas i šanon
Proc resite prodejni cenu? Jako, treba s mou tabulkou to nedava smysl. Tam je sklad, nakoupeno za cenu, prodano za cenu. Ze je nekde v eshopu u zbozi nejaka cena ho nezajima, to zajima script, ktery vklada radek do tehle tabulky. Nikoliv script pro zobrazeni inventury.
Však ano, ptal jsem se proto, že nemá cenu jednotlivých příjmů. Osobně mne zajímalo jak tedy řeší prodejní cenu. Odpověď byla, že to neřeší a přeceňují jednou za rok. To že to nemá souvislost s kusovou inventurou je snad všem jasná. Toto spíše souviselo s inventurou v Kč... kterou také neřeší a pro finanční toky postačují celkové součty výdajů a příjmů jak píše Jaroslav. Asi je prodejní cena dosti vysoko o proti nákupu, že je výkyvy příliš nezajímají, nebo by administrativa s tím spojená (náklady) převyšovaly přínos. A konečně poznámka, takže tohle celé se neděje primárně kvůli finančním záležitostem a stavu skladu z pohledu účetního, ale spíše proto, aby byl klid mezi směnami.
Přesně, jak píše Tomáš. Celé je to z důvodu dvojí kontroly nad zbožím = financemi. Nikdo si nepřejme chybějící zboží, jinak by ho musel zaplatit sám. Prodejní cena je podstatou celého systému - převést zboží na peníze.
Ano, prodejní cena je vysoko. Až na pár položek jako např pivo odpovídá vzorci: cena nákupu + 100% + DPH = prodejní cena.
Ok, jen mne to tak zaujalo.
Ahoj, nechces sem pastnut celu DB schemu? Celkom ma zaujima ako si to vyriesil. Dik.
Zobrazeno 17 zpráv z 17.