diff --git a/tailbone/views/trainwreck/__init__.py b/tailbone/views/trainwreck/__init__.py
new file mode 100644
index 00000000..33662c67
--- /dev/null
+++ b/tailbone/views/trainwreck/__init__.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8; -*-
+################################################################################
+#
+# Rattail -- Retail Software Framework
+# Copyright © 2010-2021 Lance Edgar
+#
+# This file is part of Rattail.
+#
+# Rattail is free software: you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation, either version 3 of the License, or (at your option) any later
+# version.
+#
+# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Rattail. If not, see .
+#
+################################################################################
+"""
+Trainwreck Views
+"""
+
+from __future__ import unicode_literals, absolute_import
+
+from .base import TransactionView
diff --git a/tailbone/views/trainwreck.py b/tailbone/views/trainwreck/base.py
similarity index 96%
rename from tailbone/views/trainwreck.py
rename to tailbone/views/trainwreck/base.py
index a21fd8ef..85e77761 100644
--- a/tailbone/views/trainwreck.py
+++ b/tailbone/views/trainwreck/base.py
@@ -2,7 +2,7 @@
################################################################################
#
# Rattail -- Retail Software Framework
-# Copyright © 2010-2019 Lance Edgar
+# Copyright © 2010-2021 Lance Edgar
#
# This file is part of Rattail.
#
@@ -162,6 +162,10 @@ class TransactionView(MasterView):
g.set_link('customer_name')
g.set_link('total')
+ def grid_extra_class(self, transaction, i):
+ if transaction.void:
+ return 'warning'
+
def configure_form(self, f):
super(TransactionView, self).configure_form(f)
@@ -200,6 +204,10 @@ class TransactionView(MasterView):
g.set_type('tax', 'currency')
g.set_type('total', 'currency')
+ def row_grid_extra_class(self, row, i):
+ if row.void:
+ return 'warning'
+
def configure_row_form(self, f):
super(TransactionView, self).configure_row_form(f)
diff --git a/tailbone/views/trainwreck/defaults.py b/tailbone/views/trainwreck/defaults.py
new file mode 100644
index 00000000..68b08a42
--- /dev/null
+++ b/tailbone/views/trainwreck/defaults.py
@@ -0,0 +1,43 @@
+# -*- coding: utf-8; -*-
+################################################################################
+#
+# Rattail -- Retail Software Framework
+# Copyright © 2010-2021 Lance Edgar
+#
+# This file is part of Rattail.
+#
+# Rattail is free software: you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation, either version 3 of the License, or (at your option) any later
+# version.
+#
+# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Rattail. If not, see .
+#
+################################################################################
+"""
+Trainwreck "default" views (i.e. assuming "default" schema)
+"""
+
+from __future__ import unicode_literals, absolute_import
+
+from rattail.trainwreck.db.model import defaults as trainwreck
+
+from tailbone.views.trainwreck import base
+
+
+class TransactionView(base.TransactionView):
+ """
+ Master view for Trainwreck transactions
+ """
+ model_class = trainwreck.Transaction
+ model_row_class = trainwreck.TransactionItem
+
+
+def includeme(config):
+ TransactionView.defaults(config)