2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-05-01 04:56:45 +00:00

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', 'part',
'quantity', 'quantity',
'reference', 'reference',
'purchase_price',
'notes', '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 -*- # -*- coding: utf-8 -*-
import os
from datetime import datetime
from decimal import Decimal
from django.db import models, transaction from django.db import models, transaction
from django.db.models import F, Sum from django.db.models import F, Sum
from django.db.models.functions import Coalesce from django.db.models.functions import Coalesce
@ -15,9 +19,7 @@ from django.utils.translation import ugettext as _
from markdownx.models import MarkdownxField from markdownx.models import MarkdownxField
import os from djmoney.models.fields import MoneyField
from datetime import datetime
from decimal import Decimal
from part import models as PartModels from part import models as PartModels
from stock import models as stock_models 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')) 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): def remaining(self):
""" Calculate the number of items remaining to be received """ """ Calculate the number of items remaining to be received """
r = self.quantity - self.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) part_detail = PartBriefSerializer(source='get_base_part', many=False, read_only=True)
supplier_part_detail = SupplierPartSerializer(source='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: class Meta:
model = PurchaseOrderLineItem model = PurchaseOrderLineItem
@ -108,6 +110,9 @@ class POLineItemSerializer(InvenTreeModelSerializer):
'part_detail', 'part_detail',
'supplier_part_detail', 'supplier_part_detail',
'received', 'received',
'purchase_price',
'purchase_price_currency',
'purchase_price_string',
] ]

View File

@ -178,6 +178,14 @@ $("#po-table").inventreeTable({
field: 'quantity', field: 'quantity',
title: '{% trans "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, sortable: true,
field: 'received', field: 'received',