Initial (basic) views for invoice costing batches
still a bit of feature preview at the moment, but maybe is mostly done?
This commit is contained in:
parent
ed705ff867
commit
bbfffd45fc
4 changed files with 393 additions and 39 deletions
|
@ -30,6 +30,7 @@ import six
|
|||
|
||||
from rattail.db import model, api
|
||||
from rattail.time import localtime
|
||||
from rattail.vendors.invoices import iter_invoice_parsers
|
||||
|
||||
import colander
|
||||
from deform import widget as dfwidget
|
||||
|
@ -220,6 +221,7 @@ class PurchasingBatchView(BatchMasterView):
|
|||
super(PurchasingBatchView, self).configure_form(f)
|
||||
batch = f.model_instance
|
||||
today = localtime(self.rattail_config).date()
|
||||
use_buefy = self.get_use_buefy()
|
||||
|
||||
# mode
|
||||
f.set_enum('mode', self.enum.PURCHASE_BATCH_MODE)
|
||||
|
@ -313,6 +315,25 @@ class PurchasingBatchView(BatchMasterView):
|
|||
field_display=buyer_display, service_url=buyers_url))
|
||||
f.set_label('buyer_uuid', "Buyer")
|
||||
|
||||
# invoice_file
|
||||
if self.creating:
|
||||
f.set_type('invoice_file', 'file', required=False)
|
||||
else:
|
||||
f.set_readonly('invoice_file')
|
||||
f.set_renderer('invoice_file', self.render_downloadable_file)
|
||||
|
||||
# invoice_parser_key
|
||||
if self.creating:
|
||||
parsers = sorted(iter_invoice_parsers(), key=lambda p: p.display)
|
||||
parser_values = [(p.key, p.display) for p in parsers]
|
||||
parser_values.insert(0, ('', "(please choose)"))
|
||||
if use_buefy:
|
||||
f.set_widget('invoice_parser_key', dfwidget.SelectWidget(values=parser_values))
|
||||
else:
|
||||
f.set_widget('invoice_parser_key', forms.widgets.JQuerySelectWidget(values=parser_values))
|
||||
else:
|
||||
f.remove_field('invoice_parser_key')
|
||||
|
||||
# date_ordered
|
||||
f.set_type('date_ordered', 'date_jquery')
|
||||
if self.creating:
|
||||
|
@ -582,8 +603,11 @@ class PurchasingBatchView(BatchMasterView):
|
|||
g.set_type('po_total_calculated', 'currency')
|
||||
g.set_type('credits', 'boolean')
|
||||
|
||||
# we only want the grid column to have abbreviated label, but *not* the filter
|
||||
# we only want the grid columns to have abbreviated labels,
|
||||
# but *not* the filters
|
||||
# TODO: would be nice to somehow make this simpler
|
||||
g.set_label('department_name', "Department")
|
||||
g.filters['department_name'].label = "Department Name"
|
||||
g.set_label('cases_ordered', "Cases Ord.")
|
||||
g.filters['cases_ordered'].label = "Cases Ordered"
|
||||
g.set_label('units_ordered', "Units Ord.")
|
||||
|
@ -597,6 +621,16 @@ class PurchasingBatchView(BatchMasterView):
|
|||
g.set_label('units_received', "Units Rec.")
|
||||
g.filters['units_received'].label = "Units Received"
|
||||
|
||||
# catalog_unit_cost
|
||||
g.set_renderer('catalog_unit_cost', self.render_row_grid_cost)
|
||||
g.set_label('catalog_unit_cost', "Catalog Cost")
|
||||
g.filters['catalog_unit_cost'].label = "Catalog Unit Cost"
|
||||
|
||||
# invoice_unit_cost
|
||||
g.set_renderer('invoice_unit_cost', self.render_row_grid_cost)
|
||||
g.set_label('invoice_unit_cost', "Invoice Cost")
|
||||
g.filters['invoice_unit_cost'].label = "Invoice Unit Cost"
|
||||
|
||||
# invoice_total
|
||||
g.set_type('invoice_total', 'currency')
|
||||
g.set_label('invoice_total', "Total")
|
||||
|
@ -608,6 +642,12 @@ class PurchasingBatchView(BatchMasterView):
|
|||
g.set_label('po_total', "Total")
|
||||
g.set_label('credits', "Credits?")
|
||||
|
||||
def render_row_grid_cost(self, row, field):
|
||||
cost = getattr(row, field)
|
||||
if cost is None:
|
||||
return ""
|
||||
return "{:0,.3f}".format(cost)
|
||||
|
||||
def make_row_grid_tools(self, batch):
|
||||
return self.make_default_row_grid_tools(batch)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue