diff --git a/brmbar3/brmbar-gui-qt4.py b/brmbar3/brmbar-gui-qt4.py index 4eb668c..cb8fa46 100755 --- a/brmbar3/brmbar-gui-qt4.py +++ b/brmbar3/brmbar-gui-qt4.py @@ -168,25 +168,21 @@ class ShopAdapter(QtCore.QObject): @QtCore.Slot(result='QVariant') def balance_cash(self): - return "N/A" balance = shop.cash.balance_str() db.commit() return balance @QtCore.Slot(result='QVariant') def balance_profit(self): - return "N/A" balance = shop.profits.balance_str() db.commit() return balance @QtCore.Slot(result='QVariant') def balance_inventory(self): - return "N/A" balance = shop.inventory_balance_str() db.commit() return balance @QtCore.Slot(result='QVariant') def balance_credit(self): - return "N/A" balance = shop.credit_negbalance_str() db.commit() return balance diff --git a/brmbar3/brmbar/Currency.py b/brmbar3/brmbar/Currency.py index 61d6a75..3033287 100644 --- a/brmbar3/brmbar/Currency.py +++ b/brmbar3/brmbar/Currency.py @@ -130,5 +130,5 @@ class Currency: def update_buy_rate(self, source, rate): self.db.execute( "SELECT public.update_currency_buy_rate(%s, %s, %s)", - [self.id, source.id, rate], + [source.id, self.id, rate], ) diff --git a/brmbar3/brmbar/Database.py b/brmbar3/brmbar/Database.py index 5b844dd..b70687c 100644 --- a/brmbar3/brmbar/Database.py +++ b/brmbar3/brmbar/Database.py @@ -35,7 +35,6 @@ class Database: def _execute(self, cur, query, attrs, level=1): """execute a query, and in case of OperationalError (db restart) reconnect to database. Recurses with increasig pause between tries""" - logger.debug("SQL: (%s) @%s" % (query, time.strftime("%Y%m%d %a %I:%m %p"))) try: if attrs is None: cur.execute(query) diff --git a/brmbar3/brmbar/Shop.py b/brmbar3/brmbar/Shop.py index a2ef1d1..b32f5bb 100644 --- a/brmbar3/brmbar/Shop.py +++ b/brmbar3/brmbar/Shop.py @@ -198,13 +198,12 @@ class Shop: """list all accounts (people or items, as per acctype)""" accts = [] cur = self.db.execute_and_fetchall( - "SELECT a.id, a.name aname, a.currency, a.acctype, c.name cname FROM accounts a JOIN currencies c ON c.id=a.currency WHERE a.acctype = %s AND a.name ILIKE %s ORDER BY a.name ASC", + "SELECT id FROM accounts WHERE acctype = %s AND name ILIKE %s ORDER BY name ASC", [acctype, like_str], ) # FIXME: sanitize input like_str ^ for inventory in cur: - curr = Currency(db=self.db, id=inventory[2], name=inventory[4]); - accts += [Account(self.db, id=inventory[0], name=inventory[1], currency=curr, acctype=inventory[3])] + accts += [Account.load(self.db, id=inventory[0])] return accts def fix_inventory(self, item, amount): diff --git a/brmbar3/schema/0024-find-rates-fix.sql b/brmbar3/schema/0024-find-rates-fix.sql deleted file mode 100644 index a196873..0000000 --- a/brmbar3/schema/0024-find-rates-fix.sql +++ /dev/null @@ -1,92 +0,0 @@ --- --- 0024-find-rates-fix.sql --- --- #23 - fix stored functions find_buy_rate and find_sell_rate --- --- ISC License --- --- Copyright 2023-2025 Brmlab, z.s. --- TMA --- --- Permission to use, copy, modify, and/or distribute this software --- for any purpose with or without fee is hereby granted, provided --- that the above copyright notice and this permission notice appear --- in all copies. --- --- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL --- WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED --- WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE --- AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR --- CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS --- OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, --- NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN --- CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --- - --- To require fully-qualified names -SELECT pg_catalog.set_config('search_path', '', false); - -DO $upgrade_block$ -BEGIN - -IF brmbar_privileged.has_exact_schema_version(23) THEN - -DROP FUNCTION IF EXISTS public.find_buy_rate(integer,integer); -DROP FUNCTION IF EXISTS public.find_sell_rate(integer,integer); - -CREATE OR REPLACE FUNCTION public.find_buy_rate( - IN i_item_currency_id public.accounts.id%TYPE, - IN i_other_currency_id public.accounts.id%TYPE -) RETURNS NUMERIC -LANGUAGE plpgsql -AS $$ -DECLARE - v_rate public.exchange_rates.rate%TYPE; - v_rate_dir public.exchange_rates.rate_dir%TYPE; -BEGIN - SELECT rate, rate_dir INTO STRICT v_rate, v_rate_dir FROM public.exchange_rates WHERE target = i_item_currency_id AND source = i_other_currency_id AND valid_since <= NOW() ORDER BY valid_since DESC LIMIT 1; - IF v_rate_dir = 'target_to_source'::public.exchange_rate_direction THEN - RETURN v_rate; - ELSE - RETURN 1/v_rate; - END IF; - /* propagate error -EXCEPTION - WHEN NO_DATA_FOUND THEN - RETURN -1; - */ -END; -$$; - --- return negative number on rate not found -CREATE OR REPLACE FUNCTION public.find_sell_rate( - IN i_item_currency_id public.accounts.id%TYPE, - IN i_other_currency_id public.accounts.id%TYPE -) RETURNS NUMERIC -LANGUAGE plpgsql -AS $$ -DECLARE - v_rate public.exchange_rates.rate%TYPE; - v_rate_dir public.exchange_rates.rate_dir%TYPE; -BEGIN - SELECT rate, rate_dir INTO STRICT v_rate, v_rate_dir FROM public.exchange_rates WHERE target = i_other_currency_id AND source = i_item_currency_id AND valid_since <= NOW() ORDER BY valid_since DESC LIMIT 1; - IF v_rate_dir = 'source_to_target'::public.exchange_rate_direction THEN - RETURN v_rate; - ELSE - RETURN 1/v_rate; - END IF; - /* propagate error -EXCEPTION - WHEN NO_DATA_FOUND THEN - RETURN -1; - */ -END; -$$; - -PERFORM brmbar_privileged.upgrade_schema_version_to(24); -END IF; - -END; -$upgrade_block$; - --- vim: set ft=plsql :