Add "purchase price" field to PurchaseOrderLineItem table

This commit is contained in:
Oliver Walters 2020-11-12 18:05:24 +11:00
parent 0988040172
commit 6e7224ee7c
5 changed files with 52 additions and 3 deletions

View File

@ -175,6 +175,7 @@ class EditPurchaseOrderLineItemForm(HelperForm):
'part',
'quantity',
'reference',
'purchase_price',
'notes',
]

View File

@ -0,0 +1,24 @@
# Generated by Django 3.0.7 on 2020-11-12 06:37
from django.db import migrations
import djmoney.models.fields
class Migration(migrations.Migration):
dependencies = [
('order', '0037_auto_20201110_0911'),
]
operations = [
migrations.AddField(
model_name='purchaseorderlineitem',
name='purchase_price',
field=djmoney.models.fields.MoneyField(decimal_places=4, default_currency='USD', help_text='Unit purchase price', max_digits=19, null=True, verbose_name='Purchase Price'),
),
migrations.AddField(
model_name='purchaseorderlineitem',
name='purchase_price_currency',
field=djmoney.models.fields.CurrencyField(choices=[('AUD', 'Australian Dollar'), ('CAD', 'Canadian Dollar'), ('EUR', 'Euro'), ('NZD', 'New Zealand Dollar'), ('GBP', 'Pound Sterling'), ('USD', 'US Dollar'), ('JPY', 'Yen')], default='USD', editable=False, max_length=3),
),
]

View File

@ -4,6 +4,10 @@ Order model definitions
# -*- coding: utf-8 -*-
import os
from datetime import datetime
from decimal import Decimal
from django.db import models, transaction
from django.db.models import F, Sum
from django.db.models.functions import Coalesce
@ -15,9 +19,7 @@ from django.utils.translation import ugettext as _
from markdownx.models import MarkdownxField
import os
from datetime import datetime
from decimal import Decimal
from djmoney.models.fields import MoneyField
from part import models as PartModels
from stock import models as stock_models
@ -499,6 +501,15 @@ class PurchaseOrderLineItem(OrderLineItem):
received = models.DecimalField(decimal_places=5, max_digits=15, default=0, help_text=_('Number of items received'))
purchase_price = MoneyField(
max_digits=19,
decimal_places=4,
default_currency='USD',
null=True,
verbose_name=_('Purchase Price'),
help_text=_('Unit purchase price'),
)
def remaining(self):
""" Calculate the number of items remaining to be received """
r = self.quantity - self.received

View File

@ -95,6 +95,8 @@ class POLineItemSerializer(InvenTreeModelSerializer):
part_detail = PartBriefSerializer(source='get_base_part', many=False, read_only=True)
supplier_part_detail = SupplierPartSerializer(source='part', many=False, read_only=True)
purchase_price_string = serializers.CharField(source='purchase_price', read_only=True)
class Meta:
model = PurchaseOrderLineItem
@ -108,6 +110,9 @@ class POLineItemSerializer(InvenTreeModelSerializer):
'part_detail',
'supplier_part_detail',
'received',
'purchase_price',
'purchase_price_currency',
'purchase_price_string',
]

View File

@ -178,6 +178,14 @@ $("#po-table").inventreeTable({
field: 'quantity',
title: '{% trans "Quantity" %}'
},
{
sortable: true,
field: 'purchase_price',
title: '{% trans "Unit Price" %}',
formatter: function(value, row) {
return row.purchase_price_string || row.purchase_price;
}
},
{
sortable: true,
field: 'received',