brmbar v3 UserMgmt: New view with list of users and their balances

This commit is contained in:
Petr Baudis 2012-09-24 03:55:39 +02:00
parent 99cbefbb21
commit 1d64e17a54
4 changed files with 125 additions and 3 deletions

View file

@ -2,9 +2,9 @@
+ Stock management link + Stock management link
+ User management link + User management link
+ Bilance overview (Cash, Profit, Credit total) + Bilance overview (Cash, Profit, Credit total)
- Item picker from list (only items with non-zero quantities) / Item picker from list (only items with non-zero quantities)
- User management / User management
- List of users + List of users
- Withdrawal of user credit - Withdrawal of user credit
- Numerical manual entry support - Numerical manual entry support
- Use for credit charge - Use for credit charge

View file

@ -80,6 +80,10 @@ class ShopAdapter(QtCore.QObject):
def balance_credit(self): def balance_credit(self):
return shop.credit_negbalance_str() return shop.credit_negbalance_str()
@QtCore.Slot(result='QVariant')
def userList(self):
return [ self.acct_debt_map(a) for a in shop.account_list("debt") ]
db = psycopg2.connect("dbname=brmbar") db = psycopg2.connect("dbname=brmbar")
shop = brmbar.Shop.new_with_defaults(db) shop = brmbar.Shop.new_with_defaults(db)
currency = shop.currency currency = shop.currency

View file

@ -129,6 +129,9 @@ Item {
y: 430 y: 430
width: 360 width: 360
text: "User Mgmt" text: "User Mgmt"
onButtonClick: {
loadPage("UserMgmt")
}
} }
BarButton { BarButton {

View file

@ -0,0 +1,115 @@
// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
import QtQuick 1.1
import QtQuick 1.0
Item {
id: page
anchors.fill: parent
property variant name: ""
property variant dbid: ""
property variant price: ""
property variant user_list_model
BarcodeInput {
color: "#00ff00" /* just for debugging */
onAccepted: {
var acct = shop.barcodeInput(text)
text = ""
if (typeof(acct) == "undefined") {
status_text.setStatus("Unknown barcode", "#ff4444")
return
}
if (acct.acctype != "debt") {
loadPageByAcct(acct)
return
}
loadPage("UserEdit", { name: acct["name"], dbid: acct["id"], negbalance: acct["negbalance"] })
}
}
Item {
id: user_list_container
x: 65
y: 156
width: 899
height: 250
ListView {
id: user_list
anchors.fill: parent
clip: true
delegate: Item {
x: 5
height: 80
Text {
text: modelData.name
anchors.verticalCenter: parent.verticalCenter
color: "#ffffff"
font.pointSize: 34
}
Text {
anchors.verticalCenter: parent.verticalCenter
x: 300
width: 254
color: "#ffff7c"
text: modelData.negbalance_str
horizontalAlignment: Text.AlignRight
font.pointSize: 34
}
BarButton {
anchors.verticalCenter: parent.verticalCenter
x: 600
width: 240
height: 68
text: "Withdraw"
fontSize: 34
}
}
model: user_list_model
// model: ListModel {
// ListElement {
// name: "pasky"; negbalance: "400.00 Kč"
// }
//
// ListElement {
// name: "růža"; negbalance: "1200.00 Kč"
// }
// }
}
BarScrollBar {
id: user_list_scrollbar
anchors.right: parent.right
anchors.rightMargin: 0
flickableItem: user_list
}
}
BarButton {
id: add_user
x: 65
y: 582
width: 360
text: "Add User"
fontSize: 44
}
BarButton {
id: cancel
x: 599
y: 582
width: 360
text: "Main Screen"
onButtonClick: {
loadPage("MainPage")
}
}
Component.onCompleted: {
user_list_model = shop.userList()
}
}