mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-20 13:56:30 +00:00
Separate concept of "OrderStatus" into "SalesOrderStatus" and "PurchaseOrderStatus"
This commit is contained in:
@ -39,7 +39,7 @@ from InvenTree.models import InvenTreeTree, InvenTreeAttachment
|
||||
from InvenTree.fields import InvenTreeURLField
|
||||
from InvenTree.helpers import decimal2string, normalize
|
||||
|
||||
from InvenTree.status_codes import BuildStatus, StockStatus, OrderStatus
|
||||
from InvenTree.status_codes import BuildStatus, StockStatus, PurchaseOrderStatus
|
||||
|
||||
from company.models import SupplierPart
|
||||
|
||||
@ -955,18 +955,18 @@ class Part(models.Model):
|
||||
def open_purchase_orders(self):
|
||||
""" Return a list of open purchase orders against this part """
|
||||
|
||||
return [order for order in self.purchase_orders() if order.status in OrderStatus.OPEN]
|
||||
return [order for order in self.purchase_orders() if order.status in PurchaseOrderStatus.OPEN]
|
||||
|
||||
def closed_purchase_orders(self):
|
||||
""" Return a list of closed purchase orders against this part """
|
||||
|
||||
return [order for order in self.purchase_orders() if order.status not in OrderStatus.OPEN]
|
||||
return [order for order in self.purchase_orders() if order.status not in PurchaseOrderStatus.OPEN]
|
||||
|
||||
@property
|
||||
def on_order(self):
|
||||
""" Return the total number of items on order for this part. """
|
||||
|
||||
orders = self.supplier_parts.filter(purchase_order_line_items__order__status__in=OrderStatus.OPEN).aggregate(
|
||||
orders = self.supplier_parts.filter(purchase_order_line_items__order__status__in=PurchaseOrderStatus.OPEN).aggregate(
|
||||
quantity=Sum('purchase_order_line_items__quantity'),
|
||||
received=Sum('purchase_order_line_items__received')
|
||||
)
|
||||
|
@ -15,7 +15,7 @@ from decimal import Decimal
|
||||
from django.db.models import Q, Sum
|
||||
from django.db.models.functions import Coalesce
|
||||
|
||||
from InvenTree.status_codes import StockStatus, OrderStatus, BuildStatus
|
||||
from InvenTree.status_codes import StockStatus, PurchaseOrderStatus, BuildStatus
|
||||
from InvenTree.serializers import InvenTreeModelSerializer
|
||||
|
||||
|
||||
@ -120,7 +120,7 @@ class PartSerializer(InvenTreeModelSerializer):
|
||||
stock_filter = Q(stock_items__status__in=StockStatus.AVAILABLE_CODES)
|
||||
|
||||
# Filter to limit orders to "open"
|
||||
order_filter = Q(supplier_parts__purchase_order_line_items__order__status__in=OrderStatus.OPEN)
|
||||
order_filter = Q(supplier_parts__purchase_order_line_items__order__status__in=PurchaseOrderStatus.OPEN)
|
||||
|
||||
# Filter to limit builds to "active"
|
||||
build_filter = Q(builds__status__in=BuildStatus.ACTIVE_CODES)
|
||||
|
@ -4,14 +4,20 @@ Provide templates for the various model status codes.
|
||||
|
||||
from django import template
|
||||
from django.utils.safestring import mark_safe
|
||||
from InvenTree.status_codes import OrderStatus, StockStatus, BuildStatus
|
||||
from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus
|
||||
from InvenTree.status_codes import StockStatus, BuildStatus
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def order_status(key, *args, **kwargs):
|
||||
return mark_safe(OrderStatus.render(key))
|
||||
def purchase_order_status(key, *args, **kwargs):
|
||||
return mark_safe(PurchaseOrderStatus.render(key))
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def sales_order_status(key, *args, **kwargs):
|
||||
return mark_safe(SalesOrderStatus.render(key))
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
@ -30,7 +36,8 @@ def load_status_codes(context):
|
||||
Make the various StatusCodes available to the page context
|
||||
"""
|
||||
|
||||
context['order_status_codes'] = OrderStatus.list()
|
||||
context['purchase_order_status_codes'] = PurchaseOrderStatus.list()
|
||||
context['sales_order_status_codes'] = SalesOrderStatus.list()
|
||||
context['stock_status_codes'] = StockStatus.list()
|
||||
context['build_status_codes'] = BuildStatus.list()
|
||||
|
||||
|
@ -38,7 +38,7 @@ from InvenTree.views import AjaxView, AjaxCreateView, AjaxUpdateView, AjaxDelete
|
||||
from InvenTree.views import QRCodeView
|
||||
|
||||
from InvenTree.helpers import DownloadFile, str2bool
|
||||
from InvenTree.status_codes import OrderStatus, BuildStatus
|
||||
from InvenTree.status_codes import PurchaseOrderStatus, BuildStatus
|
||||
|
||||
|
||||
class PartIndex(ListView):
|
||||
@ -561,8 +561,6 @@ class PartNotes(UpdateView):
|
||||
ctx['starred'] = part.isStarredBy(self.request.user)
|
||||
ctx['disabled'] = not part.active
|
||||
|
||||
ctx['OrderStatus'] = OrderStatus
|
||||
|
||||
return ctx
|
||||
|
||||
|
||||
@ -593,9 +591,6 @@ class PartDetail(DetailView):
|
||||
context['starred'] = part.isStarredBy(self.request.user)
|
||||
context['disabled'] = not part.active
|
||||
|
||||
context['OrderStatus'] = OrderStatus
|
||||
context['BuildStatus'] = BuildStatus
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user