Ekonomika: Porovnání verzí
(→Import výpisů z banky) |
|||
(Není zobrazeno 20 mezilehlých verzí od 4 dalších uživatelů.) | |||
Řádek 1: | Řádek 1: | ||
+ | [[en:Economy]] | ||
+ | [[ru:Экономика]] | ||
+ | |||
+ | = Úvod = | ||
+ | Evidence členských příspěvků je typická úloha pro podvojné účetnictví. Proč?Protože [http://en.wikipedia.org/wiki/Double-entry_bookkeeping_system#Timeline od 12.-13. století, kdy se podvojné účto poprvé objevuje v písemných zmínkách], ještě nikdo nevymyslel žádný lepší a jednodušší systém vnitřní evidence financí pro jakýkoli subjekt (živnostník, neziskovka, s.r.o nebo univerzita...). | ||
+ | |||
+ | Princip podvojného účetnictví je opravdu triviální: o každé finanční operaci si pořizujete záznam ve tvaru | ||
+ | |||
+ | ______________________ částka ____________________ | ||
+ | |zdrojový podvojný účet| ---------->|cílový podvojný účet| | ||
+ | |______________________| |____________________| | ||
+ | |||
+ | Např. když Franta Šiška pošle sdružení částku 1000 Kč, lze to podvojně zaúčtovat takto: | ||
+ | |||
+ | ______________________ 1000 Kč ____________________ | ||
+ | | Franta Šiška | ---------->| náš bankovní účet | | ||
+ | |______________________| |____________________| | ||
+ | |||
+ | anebo třeba takto: | ||
+ | ______________________ 1000 Kč ____________________ | ||
+ | | Členské příspěvky | ---------->|Kredit Franta Šiška | | ||
+ | |______________________| |____________________| | ||
+ | |||
+ | Poznámka: k čemu je ve druhém způsobu účet "Členské příspěvky"? | ||
+ | |||
+ | Peníze v podvojném účtu nemůžou přitéct "odnikud", na obou stranách šipky musí být nějaké účty. | ||
+ | |||
+ | Výhoda tohoto je v tom, že když budeme všechny členské příspěvky převádět z jednoho účtu "Členské příspěvky", bude nám okamžitý stav tohoto účtu říkat, kolik členských příspěvků už jsme vybrali. Stav účtu získáme jediným dotazem ve stylu: | ||
+ | SELECT balance FROM accounts WHERE accounts.name="Členské příspěvky". | ||
+ | |||
+ | = DB Schema = | ||
+ | Podvojné účty si můžeme v podvojném účetnictví tvořit dle vlastní libovůle. | ||
+ | |||
+ | Příklad: chceme zjistit, kolik utrácíme za UTP kabely. Vytvoříme si proto účet "UTP kabely" a na něj budeme převádět částku z každého nákupu UTP kabelu. | ||
+ | |||
+ | Ve FreenetISu jsou podvojné účty, které naše organizace používá, uloženy v '''tabulce accounts'''. | ||
+ | |||
+ | Po instalaci FreenetISu tabulka accounts obsahuje jenom cca 5 účtů, ale s postupem času jejich počet roste, protože každý platící člen má automaticky vytvořen "svůj" podvojný účet, na kterém ukládáme jeho kredit. | ||
+ | |||
+ | Ve FreenetISu může člen mít přiřazeny i další podvojné účty - to jsou účty projektů, ale o tom někdy příště. | ||
+ | |||
+ | Převody mezi podvojnými účty jsou v '''tabulce''' '''transfers'''.Její sloupce jsou: | ||
+ | * origin_id, destination_id : id podvojných účtů z tabulky accounts | ||
+ | * previous_transfer_id : používá se u složitějších podvojných transakcí, které se skládají z více podvojných převodů. Např. zaúčtování faktury se standardně dělá 2ma transakcemi. Aby bylo jasné, že tyto 2 transakce "patří k sobě", nastavíme u té druhé previous_transfer_id tak, aby ukazovalo na tu první transakci. | ||
+ | * member_id : u platby příspěvku je zde ID člena, od něhož transakce pochází. Může se zdát, že tento sloupec je zbytečný, protože peníze přece putují na kreditní účet člena a ten má také údaj member_id. Ale držet si member_id i v tabulce transfers je výhodné při více-krokových převodech. Např. zaúčtování platby členského příspěvku v našem sdružení děláme v 5ti podvojných převodech, z nichž jen jeden cílí na kreditní účet člena. My ale chceme jednoduše vidět, že i ty ostatní převody "způsobil" tento daný člen - mohli bychom to sice složitě odvodit přes previous_transfer_id, ale ten dotaz, to by byla šílenost. | ||
+ | * user_id : id uživatele, který podvojný převod vytvořil. Ve FreenetISu můžete právo přístupu k ekonomické části přidělit více lidem, takže je potřeba vědět, kdo z nich daný převod spáchal. | ||
+ | * type: 1=stržení pravidelného měsíčního příspěvku, 2=vstupní příspěvek, 4=dobití VOIP kreditu, ... | ||
+ | * datetime: datum a čas účetního případu. Např. u řádku bankovního výpisu se zde bere datum a čas tohoto řádku. U faktury zde bude datum zdanitelného plnění. | ||
+ | * creation_datetime: datum a čas, kdy byl převod zadán do FreenetISu | ||
+ | * text, amount - popis platby a částka | ||
+ | |||
+ | Pozn. pro znalce podvojného účetnictví: tabulka transfers je vlastně obyčejný účetní deník - stejný, jaký si můj děda před 50ti lety vedl v papírové podobě... | ||
+ | |||
+ | == Tabulka account_attributes == | ||
+ | Když už tedy podvojně účtujeme, je dobrý nápad mít naše podvojné účty "kompatibilní" s legislativou našeho státu. | ||
+ | |||
+ | Pak může stavy podvojných účtů ve FreenetISu okamžitě začít využívat pan(í) účetní naší organizace, protože mu (jí) to ušetří spoustu práce. | ||
+ | |||
+ | Abychom dosáhli kombatibilitu s legislativou, musíme ke každému našemu podvojnímu účtu najít nějaký standardní účet dle legislativy. | ||
+ | |||
+ | Standardní účty legislativa definuje ve formě tzv. účetní osnovy (angličani mají lepší termín: chart of accounts). | ||
+ | |||
+ | Účetní osnova je seznam možných podvojných účtů pro daný typ organizace. U každého účtu je v účetní osnově definován jeho standardní název, standardní číslo a další atributy. | ||
+ | |||
+ | Účetní osnova vypadá nějak pro neziskovky, trochu jinak pro podnikatelské subjekty, trochu jinak pro státní správu. | ||
+ | |||
+ | Ve FreenetISu je účetní osnova uložena v tabulce account_attributes, a to jako účetní osnova pro neziskovky. Jiné typy účetních osnov (např. podnikatelské) by řešil instalátor FreenetISu, ale zatím to nikdo nechtěl. | ||
+ | |||
+ | Nás asi nejvíc zajímá, na který standardní podvojný účet budeme mapovat kreditní účty členů? | ||
+ | |||
+ | Podvojný účet kreditu člena můžeme dle účetní osnovy pro neziskovky implementovat buď jako | ||
+ | # podúčet standardního účtu "Členské příspěvky" (standardní číslo v účetní osnově = 684000) | ||
+ | # podúčet standardního účtu "Účty v bankách" (číslo 221000) | ||
+ | |||
+ | Ve FreenetISu používáme 2. variantu, protože je stejná pro neziskovky i pro jiné subjekty, jejichž účetní osnova žádné členské příspěvky (684000) nezná. | ||
+ | |||
+ | Podrobnější výklad najdete v této prezentaci: | ||
+ | * [http://zamestnanci.fai.utb.cz/~dulik/unart/hospodareni_v1_5.pdf formát PDF] | ||
+ | * [http://zamestnanci.fai.utb.cz/~dulik/unart/hospodareni_v1_5.odp formát ODP] | ||
+ | |||
+ | Na slajdu 13 je ukázán způsob, jakým členské příspěvky účtujeme v UnArtu my (při importu z Ebanky). | ||
+ | |||
+ | === Typy podvojných účtů používaných při importu z banky === | ||
+ | |||
+ | *Account_attribute_Model::MEMBER_FEES - typ "členské příspěvky" | ||
+ | *Account_attribute_Model::SUPPLIERS - typ "dodavatelé" | ||
+ | *Account_attribute_Model::OPERATING - operační účet, do kterého padají všechny nekategorizované příjmy a výdaje sdružení | ||
+ | *Account_attribute_Model::CASH - účet pro platby v hotovosti (pokladna) | ||
+ | |||
+ | == Evidence bankovních účtů == | ||
+ | Narozdíl od běžných účetních systémů (Pohoda, Money S3), má FreenetIS dokonalejší evidenci bankovních účtů členů - FreenetIS umožňuje evidovat u každého člena až N jeho bankovních účtů. To nám velmi často pomáhá při identifikaci platby se špatným variabilem - přestože spousta členů(=rodin) platí z bankovního účtu manželky, který nese její dívčí příjmení (odlišné od příjmení rodiny), jsme schopni díky evidenci bankovních účtů okamžitě poznat, který člen je původcem takové platby. | ||
+ | |||
+ | Bankovní účty evidujeme v tabulce '''bank_accounts'''. | ||
+ | |||
+ | Po instalaci FreenetISu zde bude pouze bankovní účet sdružení. | ||
+ | |||
+ | Další bankovní účty členů automaticky vytváří importer z ebanky. U plateb, které mají správný variabil, také importer nově vytvářenému bank. účtu automaticky přiřadí majitele. | ||
+ | |||
+ | Pokud chcete importovat bankovní výpisy ze zdroje, který bankovní účty neobsahuje, pak budete muset v tabulce "bank_accounts" vytvořit účet "NEIDENTIFIKOVANY" | ||
+ | |||
+ | Proč? Viz další kapitola: | ||
+ | |||
+ | == Evidence bankovních výpisů == | ||
+ | Bankovní výpisy evidujeme v tabulce '''bank_statement'''. | ||
+ | |||
+ | Každý bankovní výpis sestává z mnoha bankovních transakcí. | ||
+ | Bankovní transakce jsou převody mezi bankovními účty. | ||
+ | Proto je evidujeme podobně, jako převody mezi podvojnými účty - pomocí tabulky '''bank_transfers''', která obsahuje následující sloupce: | ||
+ | * origin_id, destination_id : id bankovních účtů z tabulky bank_accounts | ||
+ | * transfer_id : id podvojného převodu z tabulky transfers. Každý bankovní převod by měl být podvojně zaúčtovaný, tj. odkazovat na některý podvojný převod. Pokud byste některé bankovní převody nezaúčtovali, vznikne účetní chyba - stav podvojného účtu "bankovní účet" nebude sedět se skutečným stavem bankovního účtu | ||
+ | * bank_statement_id : odkaz do tabulky bank | ||
+ | * number: Line number or number of the bank listing item | ||
+ | * variable_symbol, constant_symbol, specific_symbol - to je asi jasné | ||
+ | * comment - případný komentář účetního k dané platbě | ||
+ | |||
+ | Datum, čas a text platby jsme se rozhodli evidovat ne v této tabulce, ale v tabulce transfers - protože každý bank_transfer má vždy přiřazen jeden transfer, byly by stejnomenné sloupce v tabulce bank_transfers redundantní. | ||
+ | |||
=Terminologie= | =Terminologie= | ||
*V kódu se používá směska anglické "polopatické" a oficiální účetní terminologie. | *V kódu se používá směska anglické "polopatické" a oficiální účetní terminologie. | ||
Řádek 5: | Řádek 122: | ||
**v PhD práci [http://is.muni.cz/th/33061/ff_d/Radek_Vogel_-_Lexical_Hierarchies_in_the_Scientific_Terminology_-_doctoral_thesis_2006.doc Radka Vogela z MUNI Brno]. | **v PhD práci [http://is.muni.cz/th/33061/ff_d/Radek_Vogel_-_Lexical_Hierarchies_in_the_Scientific_Terminology_-_doctoral_thesis_2006.doc Radka Vogela z MUNI Brno]. | ||
− | |||
− | |||
=Import výpisů z banky= | =Import výpisů z banky= | ||
− | + | FreenetIS momentálně umí importovat HTML výpisy z ebanky/Raiffeisen banky a výpisy v libovolném CSV formátu. | |
− | Největší díl práce v této oblasti představují parsery - především HTML parser ebanky. Proto jsou parsery napsány tak, aby neměly žádnou závislost na frameworku Kohana ani na | + | Největší díl práce v této oblasti představují parsery - především HTML parser ebanky. Proto jsou parsery napsány tak, aby neměly žádnou závislost na frameworku Kohana ani na FreenetISu - jsou to naprosto samostatné knihovny. |
Popis implementace je v následujících článcích: | Popis implementace je v následujících článcích: | ||
* [[Příprava pro import dat]] | * [[Příprava pro import dat]] | ||
− | * [[ | + | * [[Raiffeisenbank]] |
− | * [[ | + | * [[Fio banka]] |
* [[Ukládání dat do databáze]] | * [[Ukládání dat do databáze]] |
Aktuální verze z 10. 12. 2013, 12:09
Obsah
Úvod
Evidence členských příspěvků je typická úloha pro podvojné účetnictví. Proč?Protože od 12.-13. století, kdy se podvojné účto poprvé objevuje v písemných zmínkách, ještě nikdo nevymyslel žádný lepší a jednodušší systém vnitřní evidence financí pro jakýkoli subjekt (živnostník, neziskovka, s.r.o nebo univerzita...).
Princip podvojného účetnictví je opravdu triviální: o každé finanční operaci si pořizujete záznam ve tvaru
______________________ částka ____________________ |zdrojový podvojný účet| ---------->|cílový podvojný účet| |______________________| |____________________|
Např. když Franta Šiška pošle sdružení částku 1000 Kč, lze to podvojně zaúčtovat takto:
______________________ 1000 Kč ____________________ | Franta Šiška | ---------->| náš bankovní účet | |______________________| |____________________|
anebo třeba takto:
______________________ 1000 Kč ____________________ | Členské příspěvky | ---------->|Kredit Franta Šiška | |______________________| |____________________|
Poznámka: k čemu je ve druhém způsobu účet "Členské příspěvky"?
Peníze v podvojném účtu nemůžou přitéct "odnikud", na obou stranách šipky musí být nějaké účty.
Výhoda tohoto je v tom, že když budeme všechny členské příspěvky převádět z jednoho účtu "Členské příspěvky", bude nám okamžitý stav tohoto účtu říkat, kolik členských příspěvků už jsme vybrali. Stav účtu získáme jediným dotazem ve stylu:
SELECT balance FROM accounts WHERE accounts.name="Členské příspěvky".
DB Schema
Podvojné účty si můžeme v podvojném účetnictví tvořit dle vlastní libovůle.
Příklad: chceme zjistit, kolik utrácíme za UTP kabely. Vytvoříme si proto účet "UTP kabely" a na něj budeme převádět částku z každého nákupu UTP kabelu.
Ve FreenetISu jsou podvojné účty, které naše organizace používá, uloženy v tabulce accounts.
Po instalaci FreenetISu tabulka accounts obsahuje jenom cca 5 účtů, ale s postupem času jejich počet roste, protože každý platící člen má automaticky vytvořen "svůj" podvojný účet, na kterém ukládáme jeho kredit.
Ve FreenetISu může člen mít přiřazeny i další podvojné účty - to jsou účty projektů, ale o tom někdy příště.
Převody mezi podvojnými účty jsou v tabulce transfers.Její sloupce jsou:
- origin_id, destination_id : id podvojných účtů z tabulky accounts
- previous_transfer_id : používá se u složitějších podvojných transakcí, které se skládají z více podvojných převodů. Např. zaúčtování faktury se standardně dělá 2ma transakcemi. Aby bylo jasné, že tyto 2 transakce "patří k sobě", nastavíme u té druhé previous_transfer_id tak, aby ukazovalo na tu první transakci.
- member_id : u platby příspěvku je zde ID člena, od něhož transakce pochází. Může se zdát, že tento sloupec je zbytečný, protože peníze přece putují na kreditní účet člena a ten má také údaj member_id. Ale držet si member_id i v tabulce transfers je výhodné při více-krokových převodech. Např. zaúčtování platby členského příspěvku v našem sdružení děláme v 5ti podvojných převodech, z nichž jen jeden cílí na kreditní účet člena. My ale chceme jednoduše vidět, že i ty ostatní převody "způsobil" tento daný člen - mohli bychom to sice složitě odvodit přes previous_transfer_id, ale ten dotaz, to by byla šílenost.
- user_id : id uživatele, který podvojný převod vytvořil. Ve FreenetISu můžete právo přístupu k ekonomické části přidělit více lidem, takže je potřeba vědět, kdo z nich daný převod spáchal.
- type: 1=stržení pravidelného měsíčního příspěvku, 2=vstupní příspěvek, 4=dobití VOIP kreditu, ...
- datetime: datum a čas účetního případu. Např. u řádku bankovního výpisu se zde bere datum a čas tohoto řádku. U faktury zde bude datum zdanitelného plnění.
- creation_datetime: datum a čas, kdy byl převod zadán do FreenetISu
- text, amount - popis platby a částka
Pozn. pro znalce podvojného účetnictví: tabulka transfers je vlastně obyčejný účetní deník - stejný, jaký si můj děda před 50ti lety vedl v papírové podobě...
Tabulka account_attributes
Když už tedy podvojně účtujeme, je dobrý nápad mít naše podvojné účty "kompatibilní" s legislativou našeho státu.
Pak může stavy podvojných účtů ve FreenetISu okamžitě začít využívat pan(í) účetní naší organizace, protože mu (jí) to ušetří spoustu práce.
Abychom dosáhli kombatibilitu s legislativou, musíme ke každému našemu podvojnímu účtu najít nějaký standardní účet dle legislativy.
Standardní účty legislativa definuje ve formě tzv. účetní osnovy (angličani mají lepší termín: chart of accounts).
Účetní osnova je seznam možných podvojných účtů pro daný typ organizace. U každého účtu je v účetní osnově definován jeho standardní název, standardní číslo a další atributy.
Účetní osnova vypadá nějak pro neziskovky, trochu jinak pro podnikatelské subjekty, trochu jinak pro státní správu.
Ve FreenetISu je účetní osnova uložena v tabulce account_attributes, a to jako účetní osnova pro neziskovky. Jiné typy účetních osnov (např. podnikatelské) by řešil instalátor FreenetISu, ale zatím to nikdo nechtěl.
Nás asi nejvíc zajímá, na který standardní podvojný účet budeme mapovat kreditní účty členů?
Podvojný účet kreditu člena můžeme dle účetní osnovy pro neziskovky implementovat buď jako
- podúčet standardního účtu "Členské příspěvky" (standardní číslo v účetní osnově = 684000)
- podúčet standardního účtu "Účty v bankách" (číslo 221000)
Ve FreenetISu používáme 2. variantu, protože je stejná pro neziskovky i pro jiné subjekty, jejichž účetní osnova žádné členské příspěvky (684000) nezná.
Podrobnější výklad najdete v této prezentaci:
Na slajdu 13 je ukázán způsob, jakým členské příspěvky účtujeme v UnArtu my (při importu z Ebanky).
Typy podvojných účtů používaných při importu z banky
- Account_attribute_Model::MEMBER_FEES - typ "členské příspěvky"
- Account_attribute_Model::SUPPLIERS - typ "dodavatelé"
- Account_attribute_Model::OPERATING - operační účet, do kterého padají všechny nekategorizované příjmy a výdaje sdružení
- Account_attribute_Model::CASH - účet pro platby v hotovosti (pokladna)
Evidence bankovních účtů
Narozdíl od běžných účetních systémů (Pohoda, Money S3), má FreenetIS dokonalejší evidenci bankovních účtů členů - FreenetIS umožňuje evidovat u každého člena až N jeho bankovních účtů. To nám velmi často pomáhá při identifikaci platby se špatným variabilem - přestože spousta členů(=rodin) platí z bankovního účtu manželky, který nese její dívčí příjmení (odlišné od příjmení rodiny), jsme schopni díky evidenci bankovních účtů okamžitě poznat, který člen je původcem takové platby.
Bankovní účty evidujeme v tabulce bank_accounts.
Po instalaci FreenetISu zde bude pouze bankovní účet sdružení.
Další bankovní účty členů automaticky vytváří importer z ebanky. U plateb, které mají správný variabil, také importer nově vytvářenému bank. účtu automaticky přiřadí majitele.
Pokud chcete importovat bankovní výpisy ze zdroje, který bankovní účty neobsahuje, pak budete muset v tabulce "bank_accounts" vytvořit účet "NEIDENTIFIKOVANY"
Proč? Viz další kapitola:
Evidence bankovních výpisů
Bankovní výpisy evidujeme v tabulce bank_statement.
Každý bankovní výpis sestává z mnoha bankovních transakcí. Bankovní transakce jsou převody mezi bankovními účty. Proto je evidujeme podobně, jako převody mezi podvojnými účty - pomocí tabulky bank_transfers, která obsahuje následující sloupce:
- origin_id, destination_id : id bankovních účtů z tabulky bank_accounts
- transfer_id : id podvojného převodu z tabulky transfers. Každý bankovní převod by měl být podvojně zaúčtovaný, tj. odkazovat na některý podvojný převod. Pokud byste některé bankovní převody nezaúčtovali, vznikne účetní chyba - stav podvojného účtu "bankovní účet" nebude sedět se skutečným stavem bankovního účtu
- bank_statement_id : odkaz do tabulky bank
- number: Line number or number of the bank listing item
- variable_symbol, constant_symbol, specific_symbol - to je asi jasné
- comment - případný komentář účetního k dané platbě
Datum, čas a text platby jsme se rozhodli evidovat ne v této tabulce, ale v tabulce transfers - protože každý bank_transfer má vždy přiřazen jeden transfer, byly by stejnomenné sloupce v tabulce bank_transfers redundantní.
Terminologie
- V kódu se používá směska anglické "polopatické" a oficiální účetní terminologie.
- Oficiální anglická a jí odpovídající česká účetní terminologie je popsána
- V tomto slovníčku
- v PhD práci Radka Vogela z MUNI Brno.
Import výpisů z banky
FreenetIS momentálně umí importovat HTML výpisy z ebanky/Raiffeisen banky a výpisy v libovolném CSV formátu. Největší díl práce v této oblasti představují parsery - především HTML parser ebanky. Proto jsou parsery napsány tak, aby neměly žádnou závislost na frameworku Kohana ani na FreenetISu - jsou to naprosto samostatné knihovny.
Popis implementace je v následujících článcích: