-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.py
More file actions
156 lines (138 loc) · 5.06 KB
/
database.py
File metadata and controls
156 lines (138 loc) · 5.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
import sqlite3
from datetime import datetime
import pandas as pd
class Database:
def __init__(self, dbName="acctos.db"):
self.conn = sqlite3.connect(dbName)
self.conn.row_factory = sqlite3.Row
self.cursor = self.conn.cursor()
self.createTables()
def createTables(self):
#RACUNI
self.cursor.execute("""
CREATE TABLE IF NOT EXISTS ACCTOSRACUNI (
id INTEGER PRIMARY KEY AUTOINCREMENT,
naziv TEXT NOT NULL UNIQUE,
vrsta TEXT NOT NULL DEFAULT 'tekući',
brojRacuna TEXT,
imeBanke TEXT,
pocetniIznos, REAL DEFAULT 0,
trenutacniIznos REAL DEFAULT 0,
biljeska TEXT,
kreiranDatuma TEXT DEFAULT CURRENT_TIMESTAMP
)
""")
#KATEGORIJE
self.cursor.execute("""
CREATE TABLE IF NOT EXISTS ACCTOSKATEGORIJE (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ime TEXT NOT NULL UNIQUE,
vrsta TEXT NOT NULL CHECK(vrsta IN('prihod', 'rashod')),
poreznoPriznato BOOLEAN DEFAULT 1,
opis TEXT
)
""")
#TRANSAKCIJE
self.cursor.execute("""
CREATE TABLE IF NOT EXISTS ACCTOSTRANSAKCIJE (
id INTEGER PRIMARY KEY AUTOINCREMENT,
datum TEXT NOT NULL,
brojRacuna TEXT,
dobavljacKlijent TEXT,
opis TEXT,
iznos REAL NOT NULL,
vrsta TEXT NOT NULL CHECK(vrsta IN('prihod', 'rashod')),
racunId INTEGER,
kategorijaId INTEGER,
uskladeno BOOLEAN DEFAULT 0,
iznosPoreza REAL DEFAULT 0,
napomene TEXT,
FOREIGN KEY(racunId) REFERENCES ACCTOSRACUNI(id),
FOREIGN KEY(kategorijaId) REFERENCES ACCTOSKATEGORIJE(id)
)
""")
#USKLADENJE
self.cursor.execute("""
CREATE TABLE IF NOT EXISTS ACCTOSUSKLADENJE (
id INTEGER PRIMARY KEY AUTOINCREMENT,
racunId INTEGER,
datumIzvitaka TEXT,
stanjeIzvitaka REAL,
datumUskladenja TEXT,
napomene TEXT,
FOREIGN KEY(racunId) REFERENCES ACCTOSRACUNI(id)
)
""")
#ZALIHE ARTIKALA
self.cursor.execute("""
CREATE TABLE IF NOT EXISTS ARTIKLZALIHE (
id INTEGER PRIMARY KEY AUTOINCREMENT,
sku TEXT NOT NULL UNIQUE,
naziv TEXT NOT NULL,
opis TEXT,
kategorija TEXT,
jedinica TEXT DEFAULT 'komad',
nabavnaCijena REAL NOT NULL DEFAULT 0,
prodajnaCijena REAL NOT NULL DEFAULT 0,
minimalnaKolicina INTEGER DEFAULT 10,
idealnaKolicina INTEGER DEFAULT 50,
lokacija TEXT,
dobavljacId INTEGER,
napomene TEXT,
datumKreiranja TEXT DEFAULT CURRENT_TIMESTAMP,
zadnjeAzuriranje TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY(dobavljacId) REFERENCES ACCTOSRACUNI(id)
)
""")
#ZALIHE STANJE
self.cursor.execute("""
CREATE TABLE IF NOT EXISTS StanjeZalihe (
id INTEGER PRIMARY KEY AUTOINCREMENT,
artiklId INTEGER NOT NULL,
lokacija TEXT,
brojSerije TEXT,
kolicina INTEGER NOT NULL DEFAULT 0,
rokTrajanja TEXT,
nabavnaCijena REAL,
napomene TEXT,
datumKreiranja TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY(artiklId) REFERENCES ARTIKLZALIHE(id)
)
""")
#ZALIHE TRANSAKCIJE
self.cursor.execute("""
CREATE TABLE IF NOT EXISTS ZALIHATRANSAKCIJA (
id INTEGER PRIMARY KEY AUTOINCREMENT,
datum TEXT NOT NULL,
tipTransakcije TEXT NOT NULL CHECK(tipTransakcije IN ('nabava','prodaja','ispravak','povrat','premjestanje','otpis')),
artiklId INTEGER NOT NULL,
kolicina INTEGER NOT NULL,
jedinicnaCijena REAL NOT NULL,
ukupanIznos REAL NOT NULL,
povezaniTransakcijaId INTEGER,
referentniBroj TEXT,
dobavljacKupac TEXT,
izLokacije TEXT,
uLokaciju TEXT,
napomene TEXT,
datumKreiranja TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY(artiklId) REFERENCES ARTIKLZALIHE(id),
FOREIGN KEY(povezaniTransakcijaId) REFERENCES ACCTOSTRANSAKCIJE (id)
)
""")
#DOBAVLJACI
self.cursor.execute("""
CREATE TABLE IF NOT EXISTS DOBAVLJACI (
id INTEGER PRIMARY KEY AUTOINCREMENT,
racunId INTEGER NOT NULL,
kontaktOsoba TEXT,
telefon TEXT,
email TEXT,
uvjetiPlacanja TEXT DEFAULT 'Net 30',
rokIsporuke INTEGER DEFAULT 7,
ocjena INTEGER DEFAULT 5,
napomene TEXT,
FOREIGN KEY(racunId) REFERENCES ACCTOSRACUNI(id)
)
""")
self.conn.commit()