clevic 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +371 -0
- data/INSTALL +10 -0
- data/Manifest.txt +30 -0
- data/README.txt +94 -0
- data/Rakefile +100 -0
- data/TODO +131 -0
- data/accounts_models.rb +122 -0
- data/bin/clevic +64 -0
- data/lib/active_record/dirty.rb +87 -0
- data/lib/clevic.rb +4 -0
- data/lib/clevic/browser.rb +195 -0
- data/lib/clevic/cache_table.rb +281 -0
- data/lib/clevic/db_options.rb +21 -0
- data/lib/clevic/delegates.rb +383 -0
- data/lib/clevic/extensions.rb +133 -0
- data/lib/clevic/field.rb +181 -0
- data/lib/clevic/item_delegate.rb +62 -0
- data/lib/clevic/model_builder.rb +171 -0
- data/lib/clevic/model_column.rb +23 -0
- data/lib/clevic/search_dialog.rb +77 -0
- data/lib/clevic/table_model.rb +431 -0
- data/lib/clevic/table_view.rb +479 -0
- data/lib/clevic/ui/browser.ui +201 -0
- data/lib/clevic/ui/browser_ui.rb +176 -0
- data/lib/clevic/ui/icon.png +0 -0
- data/lib/clevic/ui/search_dialog.ui +216 -0
- data/lib/clevic/ui/search_dialog_ui.rb +106 -0
- data/sql/accounts.sql +302 -0
- data/sql/times.sql +197 -0
- data/times_models.rb +163 -0
- metadata +93 -0
@@ -0,0 +1,106 @@
|
|
1
|
+
=begin
|
2
|
+
** Form generated from reading ui file 'search_dialog.ui'
|
3
|
+
**
|
4
|
+
** Created: Thu Jun 26 18:01:14 2008
|
5
|
+
** by: Qt User Interface Compiler version 4.3.3
|
6
|
+
**
|
7
|
+
** WARNING! All changes made in this file will be lost when recompiling ui file!
|
8
|
+
=end
|
9
|
+
|
10
|
+
class Ui_SearchDialog
|
11
|
+
attr_reader :button_box
|
12
|
+
attr_reader :selected_rows
|
13
|
+
attr_reader :selected_columns
|
14
|
+
attr_reader :search_label
|
15
|
+
attr_reader :search_combo
|
16
|
+
attr_reader :from_start
|
17
|
+
attr_reader :regex
|
18
|
+
attr_reader :whole_words
|
19
|
+
attr_reader :forwards
|
20
|
+
attr_reader :backwards
|
21
|
+
|
22
|
+
def setupUi(searchDialog)
|
23
|
+
if searchDialog.objectName.nil?
|
24
|
+
searchDialog.objectName = "searchDialog"
|
25
|
+
end
|
26
|
+
searchDialog.windowModality = Qt::WindowModal
|
27
|
+
searchDialog.resize(307, 400)
|
28
|
+
icon = Qt::Icon.new("../../hilfer/bin/hilfer-icon.png")
|
29
|
+
searchDialog.windowIcon = icon
|
30
|
+
@button_box = Qt::DialogButtonBox.new(searchDialog)
|
31
|
+
@button_box.objectName = "button_box"
|
32
|
+
@button_box.geometry = Qt::Rect.new(30, 240, 261, 32)
|
33
|
+
@button_box.orientation = Qt::Horizontal
|
34
|
+
@button_box.standardButtons = Qt::DialogButtonBox::Cancel|Qt::DialogButtonBox::NoButton|Qt::DialogButtonBox::Ok
|
35
|
+
@selected_rows = Qt::CheckBox.new(searchDialog)
|
36
|
+
@selected_rows.objectName = "selected_rows"
|
37
|
+
@selected_rows.enabled = false
|
38
|
+
@selected_rows.geometry = Qt::Rect.new(30, 280, 191, 21)
|
39
|
+
@selected_columns = Qt::CheckBox.new(searchDialog)
|
40
|
+
@selected_columns.objectName = "selected_columns"
|
41
|
+
@selected_columns.enabled = false
|
42
|
+
@selected_columns.geometry = Qt::Rect.new(30, 310, 191, 21)
|
43
|
+
@search_label = Qt::Label.new(searchDialog)
|
44
|
+
@search_label.objectName = "search_label"
|
45
|
+
@search_label.geometry = Qt::Rect.new(20, 10, 51, 21)
|
46
|
+
@search_label.textFormat = Qt::PlainText
|
47
|
+
@search_combo = Qt::ComboBox.new(searchDialog)
|
48
|
+
@search_combo.objectName = "search_combo"
|
49
|
+
@search_combo.geometry = Qt::Rect.new(90, 10, 201, 25)
|
50
|
+
@search_combo.focusPolicy = Qt::StrongFocus
|
51
|
+
@search_combo.editable = true
|
52
|
+
@from_start = Qt::CheckBox.new(searchDialog)
|
53
|
+
@from_start.objectName = "from_start"
|
54
|
+
@from_start.geometry = Qt::Rect.new(90, 50, 191, 21)
|
55
|
+
@regex = Qt::CheckBox.new(searchDialog)
|
56
|
+
@regex.objectName = "regex"
|
57
|
+
@regex.geometry = Qt::Rect.new(90, 80, 191, 21)
|
58
|
+
@whole_words = Qt::CheckBox.new(searchDialog)
|
59
|
+
@whole_words.objectName = "whole_words"
|
60
|
+
@whole_words.geometry = Qt::Rect.new(90, 110, 191, 21)
|
61
|
+
@forwards = Qt::RadioButton.new(searchDialog)
|
62
|
+
@forwards.objectName = "forwards"
|
63
|
+
@forwards.geometry = Qt::Rect.new(90, 140, 171, 26)
|
64
|
+
@forwards.checked = true
|
65
|
+
@backwards = Qt::RadioButton.new(searchDialog)
|
66
|
+
@backwards.objectName = "backwards"
|
67
|
+
@backwards.geometry = Qt::Rect.new(90, 170, 176, 26)
|
68
|
+
@search_label.buddy = @search_combo
|
69
|
+
Qt::Widget.setTabOrder(@search_combo, @selected_columns)
|
70
|
+
Qt::Widget.setTabOrder(@selected_columns, @selected_rows)
|
71
|
+
Qt::Widget.setTabOrder(@selected_rows, @button_box)
|
72
|
+
|
73
|
+
retranslateUi(searchDialog)
|
74
|
+
Qt::Object.connect(@button_box, SIGNAL('accepted()'), searchDialog, SLOT('accept()'))
|
75
|
+
Qt::Object.connect(@button_box, SIGNAL('rejected()'), searchDialog, SLOT('reject()'))
|
76
|
+
|
77
|
+
Qt::MetaObject.connectSlotsByName(searchDialog)
|
78
|
+
end # setupUi
|
79
|
+
|
80
|
+
def setup_ui(searchDialog)
|
81
|
+
setupUi(searchDialog)
|
82
|
+
end
|
83
|
+
|
84
|
+
def retranslateUi(searchDialog)
|
85
|
+
searchDialog.windowTitle = Qt::Application.translate("SearchDialog", "Search", nil, Qt::Application::UnicodeUTF8)
|
86
|
+
@selected_rows.text = Qt::Application.translate("SearchDialog", "Selected Rows", nil, Qt::Application::UnicodeUTF8)
|
87
|
+
@selected_columns.text = Qt::Application.translate("SearchDialog", "Selected Columns", nil, Qt::Application::UnicodeUTF8)
|
88
|
+
@search_label.text = Qt::Application.translate("SearchDialog", "Search", nil, Qt::Application::UnicodeUTF8)
|
89
|
+
@from_start.text = Qt::Application.translate("SearchDialog", "From &Start", nil, Qt::Application::UnicodeUTF8)
|
90
|
+
@regex.text = Qt::Application.translate("SearchDialog", "&Regular Expression", nil, Qt::Application::UnicodeUTF8)
|
91
|
+
@whole_words.text = Qt::Application.translate("SearchDialog", "&Whole Words", nil, Qt::Application::UnicodeUTF8)
|
92
|
+
@forwards.text = Qt::Application.translate("SearchDialog", "&Forwards", nil, Qt::Application::UnicodeUTF8)
|
93
|
+
@backwards.text = Qt::Application.translate("SearchDialog", "&Backwards", nil, Qt::Application::UnicodeUTF8)
|
94
|
+
end # retranslateUi
|
95
|
+
|
96
|
+
def retranslate_ui(searchDialog)
|
97
|
+
retranslateUi(searchDialog)
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
module Ui
|
103
|
+
class SearchDialog < Ui_SearchDialog
|
104
|
+
end
|
105
|
+
end # module Ui
|
106
|
+
|
data/sql/accounts.sql
ADDED
@@ -0,0 +1,302 @@
|
|
1
|
+
--
|
2
|
+
-- PostgreSQL database dump
|
3
|
+
--
|
4
|
+
|
5
|
+
SET client_encoding = 'LATIN1';
|
6
|
+
SET check_function_bodies = false;
|
7
|
+
SET client_min_messages = warning;
|
8
|
+
|
9
|
+
--
|
10
|
+
-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres
|
11
|
+
--
|
12
|
+
|
13
|
+
COMMENT ON SCHEMA public IS 'Standard public schema';
|
14
|
+
|
15
|
+
|
16
|
+
SET search_path = public, pg_catalog;
|
17
|
+
|
18
|
+
--
|
19
|
+
SET default_tablespace = '';
|
20
|
+
|
21
|
+
SET default_with_oids = true;
|
22
|
+
|
23
|
+
--
|
24
|
+
-- Name: accounts; Type: TABLE; Schema: public; Owner: panic; Tablespace:
|
25
|
+
--
|
26
|
+
|
27
|
+
CREATE TABLE accounts (
|
28
|
+
id integer DEFAULT nextval('accounts_id_seq'::text) NOT NULL,
|
29
|
+
name character varying(80) NOT NULL,
|
30
|
+
vat character varying(20) NOT NULL,
|
31
|
+
account_type character varying(80),
|
32
|
+
pastel_number character varying(8),
|
33
|
+
fringe double precision,
|
34
|
+
active boolean DEFAULT true NOT NULL
|
35
|
+
);
|
36
|
+
|
37
|
+
|
38
|
+
ALTER TABLE public.accounts OWNER TO panic;
|
39
|
+
|
40
|
+
--
|
41
|
+
-- Name: accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: panic
|
42
|
+
--
|
43
|
+
|
44
|
+
CREATE SEQUENCE accounts_id_seq
|
45
|
+
INCREMENT BY 1
|
46
|
+
NO MAXVALUE
|
47
|
+
NO MINVALUE
|
48
|
+
CACHE 1;
|
49
|
+
|
50
|
+
|
51
|
+
ALTER TABLE public.accounts_id_seq OWNER TO panic;
|
52
|
+
|
53
|
+
--
|
54
|
+
-- Name: entries; Type: TABLE; Schema: public; Owner: panic; Tablespace:
|
55
|
+
--
|
56
|
+
|
57
|
+
CREATE TABLE entries (
|
58
|
+
id integer DEFAULT nextval('entries_id'::text) NOT NULL,
|
59
|
+
date date,
|
60
|
+
description text,
|
61
|
+
debit_id integer,
|
62
|
+
credit_id integer,
|
63
|
+
amount numeric(9,2),
|
64
|
+
cheque_number character varying(10),
|
65
|
+
active boolean DEFAULT true NOT NULL,
|
66
|
+
vat boolean DEFAULT true NOT NULL
|
67
|
+
);
|
68
|
+
|
69
|
+
|
70
|
+
ALTER TABLE public.entries OWNER TO panic;
|
71
|
+
|
72
|
+
--
|
73
|
+
-- Name: transactions; Type: VIEW; Schema: public; Owner: panic
|
74
|
+
--
|
75
|
+
|
76
|
+
CREATE VIEW transactions AS
|
77
|
+
SELECT entries.id, entries.date, entries.description, (SELECT accounts.name FROM accounts WHERE (accounts.id = entries.debit_id)) AS debit, (SELECT accounts.name FROM accounts WHERE (accounts.id = entries.credit_id)) AS credit, entries.amount, entries.cheque_number, entries.active, entries.vat FROM entries;
|
78
|
+
|
79
|
+
|
80
|
+
ALTER TABLE public.transactions OWNER TO panic;
|
81
|
+
|
82
|
+
--
|
83
|
+
-- Name: values; Type: VIEW; Schema: public; Owner: panic
|
84
|
+
--
|
85
|
+
|
86
|
+
CREATE VIEW "values" AS
|
87
|
+
SELECT transactions.amount AS pre_vat_amount, transactions.id, transactions.date, transactions.description, transactions.debit, transactions.credit, transactions.cheque_number, transactions.vat, CASE WHEN (date_part('month'::text, transactions.date) > (2)::double precision) THEN (date_part('year'::text, transactions.date) + (1)::double precision) ELSE date_part('year'::text, transactions.date) END AS financial_year, date_part('month'::text, transactions.date) AS "month" FROM transactions WHERE (transactions.active = true);
|
88
|
+
|
89
|
+
|
90
|
+
ALTER TABLE public."values" OWNER TO panic;
|
91
|
+
|
92
|
+
--
|
93
|
+
-- Name: pre_amounts; Type: VIEW; Schema: public; Owner: panic
|
94
|
+
--
|
95
|
+
|
96
|
+
CREATE VIEW pre_amounts AS
|
97
|
+
((SELECT "values".financial_year, to_char(("values".date)::timestamp with time zone, 'mon'::text) AS "month", "values".date, "values".description, "values".debit AS account, accounts.account_type, accounts.fringe, accounts.vat, (- "values".pre_vat_amount) AS pre_vat_amount, CASE WHEN (((accounts.vat)::text = 'yes'::text) AND ("values".vat = true)) THEN (((- float8("values".pre_vat_amount)) * (100.0)::double precision) / (114.0)::double precision) WHEN (((accounts.vat)::text = 'no'::text) OR ("values".vat = false)) THEN ((- "values".pre_vat_amount))::double precision WHEN ((accounts.vat)::text = 'all'::text) THEN (0)::double precision ELSE NULL::double precision END AS amount FROM "values", accounts WHERE (("values".debit)::text = (accounts.name)::text) UNION SELECT "values".financial_year, to_char(("values".date)::timestamp with time zone, 'mon'::text) AS "month", "values".date, "values".description, 'VAT' AS account, 'Tax' AS account_type, accounts.fringe, accounts.vat, (- "values".pre_vat_amount) AS pre_vat_amount, CASE WHEN (((accounts.vat)::text = 'yes'::text) AND ("values".vat = true)) THEN (((- float8("values".pre_vat_amount)) * (14.0)::double precision) / (114.0)::double precision) WHEN (((accounts.vat)::text = 'no'::text) OR ("values".vat = false)) THEN (0)::double precision WHEN ((accounts.vat)::text = 'all'::text) THEN ((- "values".pre_vat_amount))::double precision ELSE NULL::double precision END AS amount FROM "values", accounts WHERE (("values".debit)::text = (accounts.name)::text)) UNION SELECT "values".financial_year, to_char(("values".date)::timestamp with time zone, 'mon'::text) AS "month", "values".date, "values".description, "values".credit AS account, accounts.account_type, accounts.fringe, accounts.vat, "values".pre_vat_amount, CASE WHEN (((accounts.vat)::text = 'yes'::text) AND ("values".vat = true)) THEN ((float8("values".pre_vat_amount) * (100.0)::double precision) / (114.0)::double precision) WHEN (((accounts.vat)::text = 'no'::text) OR ("values".vat = false)) THEN ("values".pre_vat_amount)::double precision WHEN ((accounts.vat)::text = 'all'::text) THEN (0)::double precision ELSE NULL::double precision END AS amount FROM "values", accounts WHERE (("values".credit)::text = (accounts.name)::text)) UNION SELECT "values".financial_year, to_char(("values".date)::timestamp with time zone, 'mon'::text) AS "month", "values".date, "values".description, 'VAT' AS account, 'Tax' AS account_type, accounts.fringe, accounts.vat, "values".pre_vat_amount, CASE WHEN (((accounts.vat)::text = 'yes'::text) AND ("values".vat = true)) THEN ((float8("values".pre_vat_amount) * (14.0)::double precision) / (114.0)::double precision) WHEN (((accounts.vat)::text = 'no'::text) OR ("values".vat = false)) THEN (0)::double precision WHEN ((accounts.vat)::text = 'all'::text) THEN ("values".pre_vat_amount)::double precision ELSE NULL::double precision END AS amount FROM "values", accounts WHERE (("values".credit)::text = (accounts.name)::text);
|
98
|
+
|
99
|
+
|
100
|
+
ALTER TABLE public.pre_amounts OWNER TO panic;
|
101
|
+
|
102
|
+
--
|
103
|
+
-- Name: amounts; Type: VIEW; Schema: public; Owner: panic
|
104
|
+
--
|
105
|
+
|
106
|
+
CREATE VIEW amounts AS
|
107
|
+
SELECT pre_amounts.financial_year, pre_amounts."month", pre_amounts.date, pre_amounts.description, pre_amounts.account, pre_amounts.account_type, pre_amounts.fringe, pre_amounts.vat, pre_amounts.pre_vat_amount, pre_amounts.amount, (pre_amounts.fringe * pre_amounts.amount) AS fringeamount FROM pre_amounts WHERE (NOT (pre_amounts.amount = (0)::double precision));
|
108
|
+
|
109
|
+
|
110
|
+
ALTER TABLE public.amounts OWNER TO panic;
|
111
|
+
|
112
|
+
--
|
113
|
+
-- Name: bank_statement; Type: VIEW; Schema: public; Owner: panic
|
114
|
+
--
|
115
|
+
|
116
|
+
CREATE VIEW bank_statement AS
|
117
|
+
SELECT transactions.id, transactions.date, transactions.description, transactions.debit, transactions.credit, transactions.amount, transactions.cheque_number, transactions.active, transactions.vat, CASE WHEN ((transactions.debit)::text = 'Bank'::text) THEN (- transactions.amount) WHEN ((transactions.credit)::text = 'Bank'::text) THEN transactions.amount ELSE (0)::numeric END AS movement FROM transactions WHERE (((transactions.debit)::text = 'Bank'::text) OR ((transactions.credit)::text = 'Bank'::text)) ORDER BY transactions.date;
|
118
|
+
|
119
|
+
|
120
|
+
ALTER TABLE public.bank_statement OWNER TO panic;
|
121
|
+
|
122
|
+
--
|
123
|
+
-- Name: running_total; Type: VIEW; Schema: public; Owner: panic
|
124
|
+
--
|
125
|
+
|
126
|
+
CREATE VIEW running_total AS
|
127
|
+
SELECT transactions.date, sum(CASE WHEN ((transactions.debit)::text = 'Bank'::text) THEN (- transactions.amount) WHEN ((transactions.credit)::text = 'Bank'::text) THEN transactions.amount ELSE (0)::numeric END) AS balance, CASE WHEN (date_part('month'::text, transactions.date) <= (2)::double precision) THEN (date_part('year'::text, transactions.date) - (1)::double precision) ELSE date_part('year'::text, transactions.date) END AS financial_year FROM transactions WHERE ((((transactions.debit)::text = 'Bank'::text) OR ((transactions.credit)::text = 'Bank'::text)) AND (transactions.active = true)) GROUP BY transactions.date;
|
128
|
+
|
129
|
+
|
130
|
+
ALTER TABLE public.running_total OWNER TO panic;
|
131
|
+
|
132
|
+
--
|
133
|
+
-- Name: daily_2006; Type: VIEW; Schema: public; Owner: panic
|
134
|
+
--
|
135
|
+
|
136
|
+
CREATE VIEW daily_2006 AS
|
137
|
+
SELECT running_total.date, (SELECT sum(running.balance) AS sum FROM running_total running WHERE ((running.date >= '2006-03-01'::date) AND (running.date <= running_total.date))) AS balance FROM running_total WHERE ((running_total.date >= '2006-03-01'::date) AND (running_total.date < '2007-03-01'::date)) ORDER BY running_total.date;
|
138
|
+
|
139
|
+
|
140
|
+
ALTER TABLE public.daily_2006 OWNER TO panic;
|
141
|
+
|
142
|
+
--
|
143
|
+
-- Name: daily_2007; Type: VIEW; Schema: public; Owner: panic
|
144
|
+
--
|
145
|
+
|
146
|
+
CREATE VIEW daily_2007 AS
|
147
|
+
SELECT running_total.date, (SELECT sum(running.balance) AS sum FROM running_total running WHERE ((running.date >= '2007-03-01'::date) AND (running.date <= running_total.date))) AS balance FROM running_total WHERE ((running_total.date >= '2007-03-01'::date) AND (running_total.date < '2008-03-01'::date)) ORDER BY running_total.date;
|
148
|
+
|
149
|
+
|
150
|
+
ALTER TABLE public.daily_2007 OWNER TO panic;
|
151
|
+
|
152
|
+
--
|
153
|
+
-- Name: daily_2008; Type: VIEW; Schema: public; Owner: panic
|
154
|
+
--
|
155
|
+
|
156
|
+
CREATE VIEW daily_2008 AS
|
157
|
+
SELECT running_total.date, (SELECT sum(running.balance) AS sum FROM running_total running WHERE ((running.date >= '2008-03-01'::date) AND (running.date <= running_total.date))) AS balance FROM running_total WHERE ((running_total.date >= '2008-03-01'::date) AND (running_total.date < '2009-03-01'::date)) ORDER BY running_total.date;
|
158
|
+
|
159
|
+
|
160
|
+
ALTER TABLE public.daily_2008 OWNER TO panic;
|
161
|
+
|
162
|
+
--
|
163
|
+
-- Name: daily_bank_balances; Type: VIEW; Schema: public; Owner: panic
|
164
|
+
--
|
165
|
+
|
166
|
+
CREATE VIEW daily_bank_balances AS
|
167
|
+
SELECT running_total.date, (SELECT sum(running.balance) AS sum FROM running_total running WHERE (running.date <= running_total.date)) AS balance FROM running_total ORDER BY running_total.date;
|
168
|
+
|
169
|
+
|
170
|
+
ALTER TABLE public.daily_bank_balances OWNER TO panic;
|
171
|
+
|
172
|
+
--
|
173
|
+
-- Name: entries_id; Type: SEQUENCE; Schema: public; Owner: panic
|
174
|
+
--
|
175
|
+
|
176
|
+
CREATE SEQUENCE entries_id
|
177
|
+
INCREMENT BY 1
|
178
|
+
MAXVALUE 2147483647
|
179
|
+
NO MINVALUE
|
180
|
+
CACHE 1;
|
181
|
+
|
182
|
+
|
183
|
+
ALTER TABLE public.entries_id OWNER TO panic;
|
184
|
+
|
185
|
+
--
|
186
|
+
-- Name: pastel_export; Type: VIEW; Schema: public; Owner: panic
|
187
|
+
--
|
188
|
+
|
189
|
+
CREATE VIEW pastel_export AS
|
190
|
+
((SELECT CASE WHEN (date_part('month'::text, transactions.date) > (2)::double precision) THEN (date_part('year'::text, transactions.date) + (1)::double precision) ELSE date_part('year'::text, transactions.date) END AS financial_year, CASE WHEN (date_part('month'::text, transactions.date) > (2)::double precision) THEN (date_part('month'::text, transactions.date) - (2)::double precision) ELSE (date_part('month'::text, transactions.date) + (10)::double precision) END AS period, transactions.date, 'G' AS gdc, accounts.pastel_number AS "Account Number", transactions.id AS reference, transactions.description, CASE WHEN ((accounts.vat)::text = 'yes'::text) THEN (((- float8(transactions.amount)) * (100.0)::double precision) / (114.0)::double precision) WHEN ((accounts.vat)::text = 'no'::text) THEN ((- transactions.amount))::double precision WHEN ((accounts.vat)::text = 'all'::text) THEN (0)::double precision ELSE NULL::double precision END AS amount, 0 AS "Tax Type", 0 AS "Tax Amount", NULL::"unknown" AS "Open Item Type", NULL::"unknown" AS "Cost Code", NULL::"unknown" AS "Contra Account", 0.0 AS "Exchange Rate", 0.0 AS "Bank Exchange Rate", NULL::"unknown" AS "Batch ID", NULL::"unknown" AS "Discount Tax Type", NULL::"unknown" AS "Discount Amount", NULL::"unknown" AS "Home Amount", 'Debit Amount' AS debug FROM transactions, accounts WHERE ((((((accounts.name)::text = (transactions.debit)::text) AND ((accounts.account_type)::text <> 'Personal'::text)) AND (((SELECT accounts.account_type FROM accounts WHERE ((accounts.name)::text = (transactions.credit)::text)))::text <> 'Personal'::text)) AND (transactions.active = true)) AND (accounts.active = true)) UNION SELECT CASE WHEN (date_part('month'::text, transactions.date) > (2)::double precision) THEN (date_part('year'::text, transactions.date) + (1)::double precision) ELSE date_part('year'::text, transactions.date) END AS financial_year, CASE WHEN (date_part('month'::text, transactions.date) > (2)::double precision) THEN (date_part('month'::text, transactions.date) - (2)::double precision) ELSE (date_part('month'::text, transactions.date) + (10)::double precision) END AS period, transactions.date, 'G' AS gdc, '9500000' AS "Account Number", transactions.id AS reference, transactions.description, CASE WHEN ((accounts.vat)::text = 'yes'::text) THEN (((- float8(transactions.amount)) * (14.0)::double precision) / (114.0)::double precision) WHEN ((accounts.vat)::text = 'no'::text) THEN (0)::double precision WHEN ((accounts.vat)::text = 'all'::text) THEN ((- transactions.amount))::double precision ELSE NULL::double precision END AS amount, 0 AS "Tax Type", 0 AS "Tax Amount", NULL::"unknown" AS "Open Item Type", NULL::"unknown" AS "Cost Code", NULL::"unknown" AS "Contra Account", 0.0 AS "Exchange Rate", 0.0 AS "Bank Exchange Rate", NULL::"unknown" AS "Batch ID", NULL::"unknown" AS "Discount Tax Type", NULL::"unknown" AS "Discount Amount", NULL::"unknown" AS "Home Amount", 'Debit VAT' AS debug FROM transactions, accounts WHERE ((((((accounts.name)::text = (transactions.debit)::text) AND ((accounts.account_type)::text <> 'Personal'::text)) AND (((SELECT accounts.account_type FROM accounts WHERE ((accounts.name)::text = (transactions.credit)::text)))::text <> 'Personal'::text)) AND (transactions.active = true)) AND (accounts.active = true))) UNION SELECT CASE WHEN (date_part('month'::text, transactions.date) > (2)::double precision) THEN (date_part('year'::text, transactions.date) + (1)::double precision) ELSE date_part('year'::text, transactions.date) END AS financial_year, CASE WHEN (date_part('month'::text, transactions.date) > (2)::double precision) THEN (date_part('month'::text, transactions.date) - (2)::double precision) ELSE (date_part('month'::text, transactions.date) + (10)::double precision) END AS period, transactions.date, 'G' AS gdc, accounts.pastel_number AS "Account Number", transactions.id AS reference, transactions.description, CASE WHEN ((accounts.vat)::text = 'yes'::text) THEN ((float8(transactions.amount) * (100.0)::double precision) / (114.0)::double precision) WHEN ((accounts.vat)::text = 'no'::text) THEN (transactions.amount)::double precision WHEN ((accounts.vat)::text = 'all'::text) THEN (0)::double precision ELSE NULL::double precision END AS amount, 0 AS "Tax Type", 0 AS "Tax Amount", NULL::"unknown" AS "Open Item Type", NULL::"unknown" AS "Cost Code", NULL::"unknown" AS "Contra Account", 0.0 AS "Exchange Rate", 0.0 AS "Bank Exchange Rate", NULL::"unknown" AS "Batch ID", NULL::"unknown" AS "Discount Tax Type", NULL::"unknown" AS "Discount Amount", NULL::"unknown" AS "Home Amount", 'Credit Amount' AS debug FROM transactions, accounts WHERE ((((((accounts.name)::text = (transactions.credit)::text) AND ((accounts.account_type)::text <> 'Personal'::text)) AND (((SELECT accounts.account_type FROM accounts WHERE ((accounts.name)::text = (transactions.debit)::text)))::text <> 'Personal'::text)) AND (transactions.active = true)) AND (accounts.active = true))) UNION SELECT CASE WHEN (date_part('month'::text, transactions.date) > (2)::double precision) THEN (date_part('year'::text, transactions.date) + (1)::double precision) ELSE date_part('year'::text, transactions.date) END AS financial_year, CASE WHEN (date_part('month'::text, transactions.date) > (2)::double precision) THEN (date_part('month'::text, transactions.date) - (2)::double precision) ELSE (date_part('month'::text, transactions.date) + (10)::double precision) END AS period, transactions.date, 'G' AS gdc, '9500000' AS "Account Number", transactions.id AS reference, transactions.description, CASE WHEN ((accounts.vat)::text = 'yes'::text) THEN ((float8(transactions.amount) * (14.0)::double precision) / (114.0)::double precision) WHEN ((accounts.vat)::text = 'no'::text) THEN (0)::double precision WHEN ((accounts.vat)::text = 'all'::text) THEN (transactions.amount)::double precision ELSE NULL::double precision END AS amount, 0 AS "Tax Type", 0 AS "Tax Amount", NULL::"unknown" AS "Open Item Type", NULL::"unknown" AS "Cost Code", NULL::"unknown" AS "Contra Account", 0.0 AS "Exchange Rate", 0.0 AS "Bank Exchange Rate", NULL::"unknown" AS "Batch ID", NULL::"unknown" AS "Discount Tax Type", NULL::"unknown" AS "Discount Amount", NULL::"unknown" AS "Home Amount", 'Credit VAT' AS debug FROM transactions, accounts WHERE ((((((accounts.name)::text = (transactions.credit)::text) AND ((accounts.account_type)::text <> 'Personal'::text)) AND (((SELECT accounts.account_type FROM accounts WHERE ((accounts.name)::text = (transactions.debit)::text)))::text <> 'Personal'::text)) AND (transactions.active = true)) AND (accounts.active = true));
|
191
|
+
|
192
|
+
|
193
|
+
ALTER TABLE public.pastel_export OWNER TO panic;
|
194
|
+
|
195
|
+
--
|
196
|
+
-- Name: pastel_2008; Type: VIEW; Schema: public; Owner: panic
|
197
|
+
--
|
198
|
+
|
199
|
+
CREATE VIEW pastel_2008 AS
|
200
|
+
SELECT pastel_export.period, pastel_export.date, pastel_export.gdc, pastel_export."Account Number", pastel_export.reference, pastel_export.description, pastel_export.amount, pastel_export."Tax Type", pastel_export."Tax Amount", pastel_export."Open Item Type", pastel_export."Cost Code", pastel_export."Contra Account", pastel_export."Exchange Rate", pastel_export."Bank Exchange Rate", pastel_export."Batch ID", pastel_export."Discount Tax Type", pastel_export."Discount Amount", pastel_export."Home Amount" FROM pastel_export WHERE ((pastel_export.financial_year = (2008)::double precision) AND (NOT (pastel_export.amount = float8(0.0))));
|
201
|
+
|
202
|
+
|
203
|
+
ALTER TABLE public.pastel_2008 OWNER TO panic;
|
204
|
+
|
205
|
+
--
|
206
|
+
-- Name: pastel_accounts; Type: TABLE; Schema: public; Owner: panic; Tablespace:
|
207
|
+
--
|
208
|
+
|
209
|
+
CREATE TABLE pastel_accounts (
|
210
|
+
account_number character varying(7),
|
211
|
+
description character varying(40),
|
212
|
+
financial_category character varying(3),
|
213
|
+
external_reference character varying(12),
|
214
|
+
tax_type character(1),
|
215
|
+
tax_method character(2)
|
216
|
+
);
|
217
|
+
|
218
|
+
|
219
|
+
ALTER TABLE public.pastel_accounts OWNER TO panic;
|
220
|
+
|
221
|
+
--
|
222
|
+
-- Name: transaction_description; Type: VIEW; Schema: public; Owner: panic
|
223
|
+
--
|
224
|
+
|
225
|
+
CREATE VIEW transaction_description AS
|
226
|
+
SELECT DISTINCT entries.description FROM entries ORDER BY entries.description;
|
227
|
+
|
228
|
+
|
229
|
+
ALTER TABLE public.transaction_description OWNER TO panic;
|
230
|
+
|
231
|
+
--
|
232
|
+
-- Name: vat_summary; Type: VIEW; Schema: public; Owner: panic
|
233
|
+
--
|
234
|
+
|
235
|
+
CREATE VIEW vat_summary AS
|
236
|
+
SELECT pre_amounts.financial_year, pre_amounts."month", pre_amounts.date, pre_amounts.description, pre_amounts.account, pre_amounts.account_type, pre_amounts.fringe, pre_amounts.vat, pre_amounts.pre_vat_amount, pre_amounts.amount, date_part('year'::text, pre_amounts.date) AS "year", CASE WHEN ((pre_amounts.vat)::text = 'yes'::text) THEN (float8(pre_amounts.pre_vat_amount) - pre_amounts.amount) WHEN ((pre_amounts.vat)::text = 'all'::text) THEN (pre_amounts.pre_vat_amount)::double precision ELSE (0)::double precision END AS vat_amount, CASE WHEN ((date_part('month'::text, pre_amounts.date) = (1)::double precision) OR (date_part('month'::text, pre_amounts.date) = (2)::double precision)) THEN '8 Jan - Feb'::text WHEN ((date_part('month'::text, pre_amounts.date) = (3)::double precision) OR (date_part('month'::text, pre_amounts.date) = (4)::double precision)) THEN '1 Mar - Apr'::text WHEN ((date_part('month'::text, pre_amounts.date) = (5)::double precision) OR (date_part('month'::text, pre_amounts.date) = (6)::double precision)) THEN '3 May - Jun'::text WHEN ((date_part('month'::text, pre_amounts.date) = (7)::double precision) OR (date_part('month'::text, pre_amounts.date) = (8)::double precision)) THEN '4 Jul - Aug'::text WHEN ((date_part('month'::text, pre_amounts.date) = (9)::double precision) OR (date_part('month'::text, pre_amounts.date) = (10)::double precision)) THEN '5 Sep - Oct'::text WHEN ((date_part('month'::text, pre_amounts.date) = (11)::double precision) OR (date_part('month'::text, pre_amounts.date) = (12)::double precision)) THEN '6 Nov - Dec'::text ELSE NULL::text END AS vat_period FROM pre_amounts WHERE (NOT ((pre_amounts.vat)::text = 'no'::text));
|
237
|
+
|
238
|
+
|
239
|
+
ALTER TABLE public.vat_summary OWNER TO panic;
|
240
|
+
|
241
|
+
--
|
242
|
+
-- Name: vat_totals; Type: VIEW; Schema: public; Owner: panic
|
243
|
+
--
|
244
|
+
|
245
|
+
CREATE VIEW vat_totals AS
|
246
|
+
SELECT vat_summary.financial_year, vat_summary.vat_period, vat_summary.account_type, sum(vat_summary.pre_vat_amount) AS pre_vat_amount, sum(vat_summary.vat_amount) AS vat_amount FROM vat_summary WHERE (((((vat_summary.account_type)::text = 'Assets'::text) OR ((vat_summary.account_type)::text = 'Expenses'::text)) OR ((vat_summary.account_type)::text = 'Income'::text)) OR ((vat_summary.account_type)::text = 'VAT'::text)) GROUP BY vat_summary.financial_year, vat_summary.vat_period, vat_summary.account_type ORDER BY vat_summary.financial_year, vat_summary.vat_period, vat_summary.account_type;
|
247
|
+
|
248
|
+
|
249
|
+
ALTER TABLE public.vat_totals OWNER TO panic;
|
250
|
+
|
251
|
+
--
|
252
|
+
-- Name: accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: panic; Tablespace:
|
253
|
+
--
|
254
|
+
|
255
|
+
ALTER TABLE ONLY accounts
|
256
|
+
ADD CONSTRAINT accounts_pkey PRIMARY KEY (name);
|
257
|
+
|
258
|
+
|
259
|
+
ALTER INDEX public.accounts_pkey OWNER TO panic;
|
260
|
+
|
261
|
+
--
|
262
|
+
-- Name: entries_pkey; Type: CONSTRAINT; Schema: public; Owner: panic; Tablespace:
|
263
|
+
--
|
264
|
+
|
265
|
+
ALTER TABLE ONLY entries
|
266
|
+
ADD CONSTRAINT entries_pkey PRIMARY KEY (id);
|
267
|
+
|
268
|
+
|
269
|
+
ALTER INDEX public.entries_pkey OWNER TO panic;
|
270
|
+
|
271
|
+
--
|
272
|
+
-- Name: entries_date; Type: INDEX; Schema: public; Owner: panic; Tablespace:
|
273
|
+
--
|
274
|
+
|
275
|
+
CREATE INDEX entries_date ON entries USING btree (date);
|
276
|
+
|
277
|
+
|
278
|
+
ALTER INDEX public.entries_date OWNER TO panic;
|
279
|
+
|
280
|
+
--
|
281
|
+
-- Name: entries_description; Type: INDEX; Schema: public; Owner: panic; Tablespace:
|
282
|
+
--
|
283
|
+
|
284
|
+
CREATE INDEX entries_description ON entries USING btree (description);
|
285
|
+
|
286
|
+
|
287
|
+
ALTER INDEX public.entries_description OWNER TO panic;
|
288
|
+
|
289
|
+
--
|
290
|
+
-- Name: public; Type: ACL; Schema: -; Owner: postgres
|
291
|
+
--
|
292
|
+
|
293
|
+
REVOKE ALL ON SCHEMA public FROM PUBLIC;
|
294
|
+
REVOKE ALL ON SCHEMA public FROM postgres;
|
295
|
+
GRANT ALL ON SCHEMA public TO postgres;
|
296
|
+
GRANT ALL ON SCHEMA public TO PUBLIC;
|
297
|
+
|
298
|
+
|
299
|
+
--
|
300
|
+
-- PostgreSQL database dump complete
|
301
|
+
--
|
302
|
+
|
data/sql/times.sql
ADDED
@@ -0,0 +1,197 @@
|
|
1
|
+
--
|
2
|
+
-- PostgreSQL database dump
|
3
|
+
--
|
4
|
+
|
5
|
+
SET client_encoding = 'LATIN1';
|
6
|
+
SET check_function_bodies = false;
|
7
|
+
SET client_min_messages = warning;
|
8
|
+
|
9
|
+
--
|
10
|
+
-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres
|
11
|
+
--
|
12
|
+
|
13
|
+
COMMENT ON SCHEMA public IS 'Standard public schema';
|
14
|
+
|
15
|
+
|
16
|
+
SET search_path = public, pg_catalog;
|
17
|
+
|
18
|
+
SET default_tablespace = '';
|
19
|
+
|
20
|
+
SET default_with_oids = true;
|
21
|
+
|
22
|
+
--
|
23
|
+
-- Name: activities; Type: TABLE; Schema: public; Owner: panic; Tablespace:
|
24
|
+
--
|
25
|
+
|
26
|
+
CREATE TABLE activities (
|
27
|
+
id bigint NOT NULL,
|
28
|
+
activity character varying(100),
|
29
|
+
active boolean DEFAULT true
|
30
|
+
);
|
31
|
+
|
32
|
+
|
33
|
+
ALTER TABLE public.activities OWNER TO panic;
|
34
|
+
|
35
|
+
--
|
36
|
+
-- Name: entries; Type: TABLE; Schema: public; Owner: panic; Tablespace:
|
37
|
+
--
|
38
|
+
|
39
|
+
CREATE TABLE entries (
|
40
|
+
id integer DEFAULT nextval('entries_id_seq'::text) NOT NULL,
|
41
|
+
invoice_id integer,
|
42
|
+
project_id integer,
|
43
|
+
activity_id integer,
|
44
|
+
date date,
|
45
|
+
"start" time without time zone,
|
46
|
+
"end" time without time zone,
|
47
|
+
description text,
|
48
|
+
person character varying(30) DEFAULT 'John'::character varying,
|
49
|
+
order_number character varying(40),
|
50
|
+
out_of_spec integer,
|
51
|
+
module character varying(100),
|
52
|
+
rate integer,
|
53
|
+
charge boolean DEFAULT true
|
54
|
+
);
|
55
|
+
|
56
|
+
|
57
|
+
ALTER TABLE public.entries OWNER TO panic;
|
58
|
+
|
59
|
+
--
|
60
|
+
-- Name: entries_id_seq; Type: SEQUENCE; Schema: public; Owner: panic
|
61
|
+
--
|
62
|
+
|
63
|
+
CREATE SEQUENCE entries_id_seq
|
64
|
+
INCREMENT BY 1
|
65
|
+
NO MAXVALUE
|
66
|
+
NO MINVALUE
|
67
|
+
CACHE 1;
|
68
|
+
|
69
|
+
|
70
|
+
ALTER TABLE public.entries_id_seq OWNER TO panic;
|
71
|
+
|
72
|
+
--
|
73
|
+
-- Name: invoices; Type: TABLE; Schema: public; Owner: panic; Tablespace:
|
74
|
+
--
|
75
|
+
|
76
|
+
CREATE TABLE invoices (
|
77
|
+
id integer DEFAULT nextval('invoices_id_seq'::text) NOT NULL,
|
78
|
+
date date,
|
79
|
+
client character varying(40),
|
80
|
+
invoice_number character varying(8),
|
81
|
+
status character varying(8),
|
82
|
+
billing character varying(15),
|
83
|
+
quote_date timestamp without time zone,
|
84
|
+
quote_amount money,
|
85
|
+
description character varying(100)
|
86
|
+
);
|
87
|
+
|
88
|
+
|
89
|
+
ALTER TABLE public.invoices OWNER TO panic;
|
90
|
+
|
91
|
+
--
|
92
|
+
-- Name: invoices_id_seq; Type: SEQUENCE; Schema: public; Owner: panic
|
93
|
+
--
|
94
|
+
|
95
|
+
CREATE SEQUENCE invoices_id_seq
|
96
|
+
INCREMENT BY 1
|
97
|
+
NO MAXVALUE
|
98
|
+
NO MINVALUE
|
99
|
+
CACHE 1;
|
100
|
+
|
101
|
+
|
102
|
+
ALTER TABLE public.invoices_id_seq OWNER TO panic;
|
103
|
+
|
104
|
+
--
|
105
|
+
-- Name: projects; Type: TABLE; Schema: public; Owner: panic; Tablespace:
|
106
|
+
--
|
107
|
+
|
108
|
+
CREATE TABLE projects (
|
109
|
+
id integer DEFAULT nextval('projects_id_seq'::text) NOT NULL,
|
110
|
+
project character varying(100),
|
111
|
+
description text,
|
112
|
+
order_number character varying(100),
|
113
|
+
client character varying(100),
|
114
|
+
rate integer,
|
115
|
+
active boolean
|
116
|
+
);
|
117
|
+
|
118
|
+
|
119
|
+
ALTER TABLE public.projects OWNER TO panic;
|
120
|
+
|
121
|
+
--
|
122
|
+
-- Name: nice_entries; Type: VIEW; Schema: public; Owner: panic
|
123
|
+
--
|
124
|
+
|
125
|
+
CREATE VIEW nice_entries AS
|
126
|
+
SELECT entries.id, invoices.invoice_number, invoices.status, projects.project, activities.activity, ((entries."end" - entries."start"))::time without time zone AS elapsed, entries.date, entries."start", entries."end", entries.description, entries.person, entries.order_number, entries.out_of_spec, entries.module, entries.rate, entries.charge FROM (((entries JOIN activities ON ((entries.activity_id = activities.id))) JOIN projects ON ((entries.project_id = projects.id))) JOIN invoices ON ((entries.invoice_id = invoices.id)));
|
127
|
+
|
128
|
+
|
129
|
+
ALTER TABLE public.nice_entries OWNER TO panic;
|
130
|
+
|
131
|
+
--
|
132
|
+
-- Name: projects_id_seq; Type: SEQUENCE; Schema: public; Owner: panic
|
133
|
+
--
|
134
|
+
|
135
|
+
CREATE SEQUENCE projects_id_seq
|
136
|
+
INCREMENT BY 1
|
137
|
+
NO MAXVALUE
|
138
|
+
NO MINVALUE
|
139
|
+
CACHE 1;
|
140
|
+
|
141
|
+
|
142
|
+
ALTER TABLE public.projects_id_seq OWNER TO panic;
|
143
|
+
|
144
|
+
--
|
145
|
+
-- Name: activities_pkey; Type: CONSTRAINT; Schema: public; Owner: panic; Tablespace:
|
146
|
+
--
|
147
|
+
|
148
|
+
ALTER TABLE ONLY activities
|
149
|
+
ADD CONSTRAINT activities_pkey PRIMARY KEY (id);
|
150
|
+
|
151
|
+
|
152
|
+
ALTER INDEX public.activities_pkey OWNER TO panic;
|
153
|
+
|
154
|
+
--
|
155
|
+
-- Name: entries_pkey; Type: CONSTRAINT; Schema: public; Owner: panic; Tablespace:
|
156
|
+
--
|
157
|
+
|
158
|
+
ALTER TABLE ONLY entries
|
159
|
+
ADD CONSTRAINT entries_pkey PRIMARY KEY (id);
|
160
|
+
|
161
|
+
|
162
|
+
ALTER INDEX public.entries_pkey OWNER TO panic;
|
163
|
+
|
164
|
+
--
|
165
|
+
-- Name: invoices_pkey; Type: CONSTRAINT; Schema: public; Owner: panic; Tablespace:
|
166
|
+
--
|
167
|
+
|
168
|
+
ALTER TABLE ONLY invoices
|
169
|
+
ADD CONSTRAINT invoices_pkey PRIMARY KEY (id);
|
170
|
+
|
171
|
+
|
172
|
+
ALTER INDEX public.invoices_pkey OWNER TO panic;
|
173
|
+
|
174
|
+
--
|
175
|
+
-- Name: projects_pkey; Type: CONSTRAINT; Schema: public; Owner: panic; Tablespace:
|
176
|
+
--
|
177
|
+
|
178
|
+
ALTER TABLE ONLY projects
|
179
|
+
ADD CONSTRAINT projects_pkey PRIMARY KEY (id);
|
180
|
+
|
181
|
+
|
182
|
+
ALTER INDEX public.projects_pkey OWNER TO panic;
|
183
|
+
|
184
|
+
--
|
185
|
+
-- Name: public; Type: ACL; Schema: -; Owner: postgres
|
186
|
+
--
|
187
|
+
|
188
|
+
REVOKE ALL ON SCHEMA public FROM PUBLIC;
|
189
|
+
REVOKE ALL ON SCHEMA public FROM postgres;
|
190
|
+
GRANT ALL ON SCHEMA public TO postgres;
|
191
|
+
GRANT ALL ON SCHEMA public TO PUBLIC;
|
192
|
+
|
193
|
+
|
194
|
+
--
|
195
|
+
-- PostgreSQL database dump complete
|
196
|
+
--
|
197
|
+
|