mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-17 20:45:44 +00:00
Updates for purchase order line items
- Display list of line items - Add a form to create a new line item
This commit is contained in:
@ -7,7 +7,10 @@ from __future__ import unicode_literals
|
||||
|
||||
from django.views.generic import DetailView, ListView
|
||||
|
||||
from .models import PurchaseOrder
|
||||
from .models import PurchaseOrder, PurchaseOrderLineItem
|
||||
from .forms import EditPurchaseOrderLineItemForm
|
||||
|
||||
from InvenTree.views import AjaxCreateView, AjaxUpdateView, AjaxDeleteView
|
||||
|
||||
from InvenTree.status_codes import OrderStatus
|
||||
|
||||
@ -19,8 +22,8 @@ class PurchaseOrderIndex(ListView):
|
||||
template_name = 'order/purchase_orders.html'
|
||||
context_object_name = 'orders'
|
||||
|
||||
def get_context_data(self):
|
||||
ctx = super().get_context_data()
|
||||
def get_context_data(self, **kwargs):
|
||||
ctx = super().get_context_data(**kwargs)
|
||||
|
||||
ctx['OrderStatus'] = OrderStatus
|
||||
|
||||
@ -33,3 +36,76 @@ class PurchaseOrderDetail(DetailView):
|
||||
context_object_name = 'order'
|
||||
queryset = PurchaseOrder.objects.all().prefetch_related('lines')
|
||||
template_name = 'order/purchase_order_detail.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
ctx = super().get_context_data(**kwargs)
|
||||
|
||||
ctx['OrderStatus'] = OrderStatus
|
||||
|
||||
return ctx
|
||||
|
||||
|
||||
class POLineItemCreate(AjaxCreateView):
|
||||
""" AJAX view for creating a new PurchaseOrderLineItem object
|
||||
"""
|
||||
|
||||
model = PurchaseOrderLineItem
|
||||
context_object_name = 'line'
|
||||
form_class = EditPurchaseOrderLineItemForm
|
||||
ajax_template_name = 'modal_form.html'
|
||||
ajax_form_action = 'Add Line Item'
|
||||
|
||||
def get_form(self):
|
||||
""" Limit choice options based on the selected order, etc
|
||||
"""
|
||||
|
||||
form = super().get_form()
|
||||
|
||||
order_id = form['order'].value()
|
||||
|
||||
try:
|
||||
order = PurchaseOrder.objects.get(id=order_id)
|
||||
|
||||
query = form.fields['part'].queryset
|
||||
|
||||
# Only allow parts from the selected supplier
|
||||
query = query.filter(supplier=order.supplier.id)
|
||||
|
||||
print('limiting queryset')
|
||||
|
||||
form.fields['part'].queryset = query
|
||||
except PurchaseOrder.DoesNotExist:
|
||||
print('error')
|
||||
pass
|
||||
|
||||
return form
|
||||
|
||||
|
||||
def get_initial(self):
|
||||
""" Extract initial data for the line item.
|
||||
|
||||
- The 'order' will be passed as a query parameter
|
||||
- Use this to set the 'order' field and limit the options for 'part'
|
||||
"""
|
||||
|
||||
initials = super().get_initial().copy()
|
||||
|
||||
order_id = self.request.GET.get('order', None)
|
||||
|
||||
if order_id:
|
||||
try:
|
||||
order = PurchaseOrder.objects.get(id=order_id)
|
||||
initials['order'] = order
|
||||
|
||||
except PurchaseOrder.DoesNotExist:
|
||||
pass
|
||||
|
||||
return initials
|
||||
|
||||
|
||||
class POLineItemEdit(AjaxUpdateView):
|
||||
|
||||
model = PurchaseOrderLineItem
|
||||
form_class = EditPurchaseOrderLineItemForm
|
||||
ajax_template_name = 'modal_form.html'
|
||||
ajax_form_action = 'Edit Line Item'
|
||||
|
Reference in New Issue
Block a user