Commit a886e54d authored by Hugo Hörnquist's avatar Hugo Hörnquist

Merge branch 'master' of git.lysator.liu.se:hugo/Stupan

parents 045572b2 197a15ca
* Angående systemet
Systemet stödjer rent teknikt sätt produkter med NULL lager.
Dock skapar de för mycket förvirring för använderen. Och bör
därför inte användas.
* Angående det här dokumentet
Det här dokumentet dokumentarer hur databasen ser ut.
För nuvarande är den här texten helt handskriven, och
tabellerna nedan är inte grund för tabellerna i databasen.
Se [[file:create-db.sql][SQL-fiLen]] för faktisk data.
Jag är även medveten om att dokumentet är på fantastiks
svengelska. Men då även kassasystemet i all sin kasshet
är på svengelska ser inte jag det som ett probem.
* Att göra
Inga views eller triggers är för nuvarande dokumenterade.
Lika så finns det ingen förklaring av de insert's och delete's
vilka ligger i slutet av sql filen.
En bättre förklaring av många fält skulle nog också behövas.
Kapitlett om utdrag av data ska också utökas något ordentligt.
Dock känner jag ett behov av att läsa texten [[http://www.bfn.se/sv/informationsmaterial/att-fora-bok][Att föra bok]].
Det här bör dessutom få ett ordentligt index, så att den kan
sökas i. Värt att notera att det möjligen skulla vara en poäng
att typsätta om allting i texinfo direkt. Istället för min
nuvarande aproach med org-mode konverterat till texinfo.
* SQL
Här är alla tabeller, views, triggers och annat.
Tabellerna är uppdelade i /propper/ och /temp/, där propper är
de vilka faktiskt håller data. Och temp enbart finns för att
låta klienter slå ihop flera handlingar och skicka dem för
förvaring samtidigt.
** Proper Tables
*** products
Including name and sale price, but not stock
| name | type | default | other |
|-------------+---------+-------------+----------------------|
| id | integer | | primary key not unll |
| sorting_id | integer | 0 | |
| buy_id | integer | | |
| bar_code | text | | unique |
| name | text | "CHANGE ME" | not null |
| price | integer | 0 | not null |
| sale_status | integer | 1 | |
**** Sale status
- -1 :: system, not currently used
- 0 :: For Sale
- 1 :: Not For Sale
- 2 :: Hidden
*** stock
amonut in stock. Supports multiple storage location,
via different columns. Only *active* is used.
| name | type | default | other | references |
|------------+---------+---------+----------------------+--------------|
| product_id | integer | | primary key not null | products(id) |
| active | integer | 0 | | |
| storage | integer | 0 | | |
*** log
Log of everything sold
| name | type | default | other | references |
|------------+-----------+-------------------+----------------------+--------------|
| id | integer | | primary key not null | |
| product_id | integer | | | products(id) |
| time | TIMESTAMP | CURRENT_TIMESTAMP | not null | |
| price | INTEGER | | NOT NULL | |
*** Notes
Legend says there once was a type of file called /text file/,
The historians know little about these magical items.
*** Money
This is a state table, so it's one of the few places with mutable
data.
| name | type | default | other |
|--------+---------+---------+----------------------|
| id | integer | | primary key not null |
| name | text | | unique |
| amount | integer | 0 | |
*** money_diffs
För diffar i penga-konton.
| name | type | default | other | foreign |
|----------+-----------+-------------------+----------------------+-----------|
| id | integer | | primary key not null | |
| expected | integer | | not null | |
| actual | integer | | not null | |
| account | integer | 0 | not null | money(id) |
| time | timestamp | CURRENT_TIMESTAMP | not null | |
*** Money_transfers
När pengar går från ett konto till ett annat.
Notera att det är även här pengar som tillkommer och lämnar systemet
bokförs. Då med /yttre värden/ som konto Nr _0_, vilket inte håller
koll på mängden pengar i sig.
| name | type | default | other | references |
|----------+-----------+-------------------+----------------------+------------|
| id | integer | | primary key not null | |
| change | integer | | not null | |
| from_acc | integer | | not null | money(id) |
| to_acc | integer | | not null | money(id) |
| time | timestamp | CURRENT_TIMESTAMP | not null | |
| note | TEXT | | | |
*** acquisitions
Data över allting som köps in till systemet.
| name | type | default | other | references |
|------------+-----------+-------------------+----------------------+--------------|
| id | integer | | primary key not null | |
| time | timestamp | CURRENT_TIMESTAMP | NOT NULL | |
| product_id | INTEGER | | NOT NULL | products(id) |
| item_price | INTTEGER | 0 | | |
| amount | INTEGER | 0 | | |
*** stock_diff
Felaktigheter i lagret
| name | type | default | other | references |
|------------+-----------+-------------------+----------------------+--------------|
| id | integer | | primary key not null | |
| product_id | integer | | not null | products(id) |
| expected | integer | 0 | not null | |
| actual | integer | 0 | not null | |
| time | timestamp | CURRENT_TIMESTAMP | not null | |
*** drainage
Tömningssystemet
| name | type | default | other |
|-------------------+-----------+-------------------+------------------------------------------|
| id | integer | | primary key autoincrement [fn:1]not null |
| start_time | timestamp | CURRENT_TIMESTAMP | NOT NULL |
| end_time | TIMESTAMP | CURRENT_TIMESTAMP | NOT NULL |
| decrease | INTEGER | 2 | NOT NULL |
| how_often_minutes | INTEGER | 60 | NOT NULL |
| min_price | INTEGER | 5 | NOT NULL |
*** my_db_settings
Internal settings for this database.
These are mostly here to toggle between transfer mode and
delete mode for the temp tables
| name | type | other |
|-------+---------+----------------------|
| id | INTEGER | PRIMARY KEY NOT NULL |
| name | TEXT | NOT NULL |
| value | | |
** Temp tables
*** big_buy
Temporary table, when multiple things are to be bought at the
same time.
*** acuititions_temp
Liknande ide som big_buy, temporär tabell för inmatning till
acquisitions. Finns egentligen bara för klienternas skull.
*** stock_diff_temp
Samma sak igen
* Informationsutdrag
Eftersom all data är i SQL så kan man få ut ganska mycket
information om den i efterhand.
** Kvittolista
Kvitton på inköp löses enklast ut i två steg.
Först plockar man en lista på alla kvitton som finns i systemet.
Querien ska uppdateras för att få tidsstämpelsformatering enligt
ISO-8601. Samt ska jag bestämma hur jag gör med tidszoner.
Blir lokal är UTC. Beroende på hur jag känner när jag implementerar
det.
#+BEGIN_SRC sql
SELECT * FROM acquisitions ORDER BY time GROUP BY time;
#+END_SRC
För att sedan få inehållet i ett specifikt kvitto kör man
#+BEGIN_SRC sql
SELECT * FROM acquisitions WHERE time = ?;
#+END_SRC
* Footnotes
[fn:1] =AUTOINCREMENT= här av okänd anledning.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment