2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-17 12:35:46 +00:00

rename AdditionalLineItems to ExtraLine

This commit is contained in:
Matthias
2022-03-27 01:11:25 +01:00
parent ce68ee3781
commit bff2fb81f3
9 changed files with 188 additions and 188 deletions

View File

@ -8,13 +8,13 @@ from import_export.admin import ImportExportModelAdmin
from import_export.resources import ModelResource
from import_export.fields import Field
from .models import PurchaseOrder, PurchaseOrderLineItem, PurchaseOrderAdditionalLineItem
from .models import SalesOrder, SalesOrderLineItem, SalesOrderAdditionalLineItem
from .models import PurchaseOrder, PurchaseOrderLineItem, PurchaseOrderExtraLine
from .models import SalesOrder, SalesOrderLineItem, SalesOrderExtraLine
from .models import SalesOrderShipment, SalesOrderAllocation
# region general classes
class GeneralAdditionalLineItemAdmin:
class GeneralExtraLineAdmin:
list_display = (
'order',
'quantity',
@ -30,7 +30,7 @@ class GeneralAdditionalLineItemAdmin:
autocomplete_fields = ('order', )
class GeneralAdditionalLineMeta:
class GeneralExtraLineMeta:
skip_unchanged = True
report_skipped = False
clean_model_instances = True
@ -110,11 +110,11 @@ class POLineItemResource(ModelResource):
clean_model_instances = True
class POAdditionalLineItemResource(ModelResource):
""" Class for managing import / export of POAdditionalLineItem data """
class POExtraLineResource(ModelResource):
""" Class for managing import / export of POExtraLine data """
class Meta(GeneralAdditionalLineMeta):
model = PurchaseOrderAdditionalLineItem
class Meta(GeneralExtraLineMeta):
model = PurchaseOrderExtraLine
class SOLineItemResource(ModelResource):
@ -148,11 +148,11 @@ class SOLineItemResource(ModelResource):
clean_model_instances = True
class SOAdditionalLineItemResource(ModelResource):
""" Class for managing import / export of SOAdditionalLineItem data """
class SOExtraLineResource(ModelResource):
""" Class for managing import / export of SOExtraLine data """
class Meta(GeneralAdditionalLineMeta):
model = SalesOrderAdditionalLineItem
class Meta(GeneralExtraLineMeta):
model = SalesOrderExtraLine
class PurchaseOrderLineItemAdmin(ImportExportModelAdmin):
@ -171,9 +171,9 @@ class PurchaseOrderLineItemAdmin(ImportExportModelAdmin):
autocomplete_fields = ('order', 'part', 'destination',)
class PurchaseOrderAdditionalLineItemAdmin(GeneralAdditionalLineItemAdmin, ImportExportModelAdmin):
class PurchaseOrderExtraLineAdmin(GeneralExtraLineAdmin, ImportExportModelAdmin):
resource_class = POAdditionalLineItemResource
resource_class = POExtraLineResource
class SalesOrderLineItemAdmin(ImportExportModelAdmin):
@ -197,9 +197,9 @@ class SalesOrderLineItemAdmin(ImportExportModelAdmin):
autocomplete_fields = ('order', 'part',)
class SalesOrderAdditionalLineItemAdmin(GeneralAdditionalLineItemAdmin, ImportExportModelAdmin):
class SalesOrderExtraLineAdmin(GeneralExtraLineAdmin, ImportExportModelAdmin):
resource_class = SOAdditionalLineItemResource
resource_class = SOExtraLineResource
class SalesOrderShipmentAdmin(ImportExportModelAdmin):
@ -232,11 +232,11 @@ class SalesOrderAllocationAdmin(ImportExportModelAdmin):
admin.site.register(PurchaseOrder, PurchaseOrderAdmin)
admin.site.register(PurchaseOrderLineItem, PurchaseOrderLineItemAdmin)
admin.site.register(PurchaseOrderAdditionalLineItem, PurchaseOrderAdditionalLineItemAdmin)
admin.site.register(PurchaseOrderExtraLine, PurchaseOrderExtraLineAdmin)
admin.site.register(SalesOrder, SalesOrderAdmin)
admin.site.register(SalesOrderLineItem, SalesOrderLineItemAdmin)
admin.site.register(SalesOrderAdditionalLineItem, SalesOrderAdditionalLineItemAdmin)
admin.site.register(SalesOrderExtraLine, SalesOrderExtraLineAdmin)
admin.site.register(SalesOrderShipment, SalesOrderShipmentAdmin)
admin.site.register(SalesOrderAllocation, SalesOrderAllocationAdmin)

View File

@ -27,9 +27,9 @@ from part.models import Part
from users.models import Owner
class GeneralAdditionalLineItemList:
class GeneralExtraLineList:
"""
General template for AdditionalLineItem API classes
General template for ExtraLine API classes
"""
def get_serializer(self, *args, **kwargs):
@ -501,20 +501,20 @@ class POLineItemDetail(generics.RetrieveUpdateDestroyAPIView):
return queryset
class POAdditionalLineItemList(GeneralAdditionalLineItemList, generics.ListCreateAPIView):
class POExtraLineList(GeneralExtraLineList, generics.ListCreateAPIView):
"""
API endpoint for accessing a list of PurchaseOrderAdditionalLineItem objects.
API endpoint for accessing a list of PurchaseOrderExtraLine objects.
"""
queryset = models.PurchaseOrderAdditionalLineItem.objects.all()
serializer_class = serializers.POAdditionalLineItemSerializer
queryset = models.PurchaseOrderExtraLine.objects.all()
serializer_class = serializers.POExtraLineSerializer
class POAdditionalLineItemDetail(generics.RetrieveUpdateDestroyAPIView):
""" API endpoint for detail view of a PurchaseOrderAdditionalLineItem object """
class POExtraLineDetail(generics.RetrieveUpdateDestroyAPIView):
""" API endpoint for detail view of a PurchaseOrderExtraLine object """
queryset = models.PurchaseOrderAdditionalLineItem.objects.all()
serializer_class = serializers.POAdditionalLineItemSerializer
queryset = models.PurchaseOrderExtraLine.objects.all()
serializer_class = serializers.POExtraLineSerializer
class SOAttachmentList(generics.ListCreateAPIView, AttachmentMixin):
@ -811,20 +811,20 @@ class SOLineItemList(generics.ListCreateAPIView):
]
class SOAdditionalLineItemList(GeneralAdditionalLineItemList, generics.ListCreateAPIView):
class SOExtraLineList(GeneralExtraLineList, generics.ListCreateAPIView):
"""
API endpoint for accessing a list of SalesOrderAdditionalLineItem objects.
API endpoint for accessing a list of SalesOrderExtraLine objects.
"""
queryset = models.SalesOrderAdditionalLineItem.objects.all()
serializer_class = serializers.SOAdditionalLineItemSerializer
queryset = models.SalesOrderExtraLine.objects.all()
serializer_class = serializers.SOExtraLineSerializer
class SOAdditionalLineItemDetail(generics.RetrieveUpdateDestroyAPIView):
""" API endpoint for detail view of a SalesOrderAdditionalLineItem object """
class SOExtraLineDetail(generics.RetrieveUpdateDestroyAPIView):
""" API endpoint for detail view of a SalesOrderExtraLine object """
queryset = models.SalesOrderAdditionalLineItem.objects.all()
serializer_class = serializers.SOAdditionalLineItemSerializer
queryset = models.SalesOrderExtraLine.objects.all()
serializer_class = serializers.SOExtraLineSerializer
class SOLineItemDetail(generics.RetrieveUpdateDestroyAPIView):
@ -1120,10 +1120,10 @@ order_api_urls = [
url(r'^.*$', POLineItemList.as_view(), name='api-po-line-list'),
])),
# API endpoints for purchase order additional line items
url(r'^po-additional-line/', include([
url(r'^(?P<pk>\d+)/$', POAdditionalLineItemDetail.as_view(), name='api-po-additional-line-detail'),
url(r'^$', POAdditionalLineItemList.as_view(), name='api-po-additional-line-list'),
# API endpoints for purchase order extra line
url(r'^po-extra-line/', include([
url(r'^(?P<pk>\d+)/$', POExtraLineDetail.as_view(), name='api-po-extra-line-detail'),
url(r'^$', POExtraLineList.as_view(), name='api-po-extra-line-list'),
])),
# API endpoints for sales ordesr
@ -1159,10 +1159,10 @@ order_api_urls = [
url(r'^$', SOLineItemList.as_view(), name='api-so-line-list'),
])),
# API endpoints for sales order additional line items
url(r'^so-additional-line/', include([
url(r'^(?P<pk>\d+)/$', SOAdditionalLineItemDetail.as_view(), name='api-so-additional-line-detail'),
url(r'^$', SOAdditionalLineItemList.as_view(), name='api-so-additional-line-list'),
# API endpoints for sales order extra line
url(r'^so-extra-line/', include([
url(r'^(?P<pk>\d+)/$', SOExtraLineDetail.as_view(), name='api-so-extra-line-detail'),
url(r'^$', SOExtraLineList.as_view(), name='api-so-extra-line-list'),
])),
# API endpoints for sales order allocations

View File

@ -163,8 +163,8 @@ class Order(ReferenceIndexingMixin):
# order items
total += sum([a.quantity * convert_money(getattr(a, price_ref), target_currency) for a in self.lines.all() if getattr(a, price_ref)])
# additional lines
total += sum([a.quantity * convert_money(a.sale_price, target_currency) for a in self.additional_lines.all() if a.sale_price])
# extra lines
total += sum([a.quantity * convert_money(a.price, target_currency) for a in self.extra_lines.all() if a.price])
# set decimal-places
total.decimal_places = 4
@ -875,11 +875,11 @@ class OrderLineItem(models.Model):
)
class OrderAdditionalLineItem(OrderLineItem):
class OrderExtraLine(OrderLineItem):
"""
Abstract Model for a single AdditionalLineItem in a Order
Abstract Model for a single ExtraLine in a Order
Attributes:
sale_price: The unit sale price for this OrderLineItem
price: The unit sale price for this OrderLineItem
"""
class Meta:
@ -887,18 +887,18 @@ class OrderAdditionalLineItem(OrderLineItem):
unique_together = [
]
sale_price = InvenTreeModelMoneyField(
price = InvenTreeModelMoneyField(
max_digits=19,
decimal_places=4,
null=True, blank=True,
verbose_name=_('Sale Price'),
help_text=_('Unit sale price'),
verbose_name=_('Price'),
help_text=_('Unit price'),
)
def sale_price_converted(self):
return convert_money(self.sale_price, currency_code_default())
def price_converted(self):
return convert_money(self.price, currency_code_default())
def sale_price_converted_currency(self):
def price_converted_currency(self):
return currency_code_default()
@ -1011,19 +1011,19 @@ class PurchaseOrderLineItem(OrderLineItem):
return max(r, 0)
class PurchaseOrderAdditionalLineItem(OrderAdditionalLineItem):
class PurchaseOrderExtraLine(OrderExtraLine):
"""
Model for a single AdditionalLineItem in a PurchaseOrder
Model for a single ExtraLine in a PurchaseOrder
Attributes:
order: Link to the PurchaseOrder that this line item belongs to
title: title of line item
sale_price: The unit sale price for this OrderLineItem
order: Link to the PurchaseOrder that this line belongs to
title: title of line
price: The unit price for this OrderLine
"""
@staticmethod
def get_api_url():
return reverse('api-po-additional-line-list')
return reverse('api-po-extra-line-list')
order = models.ForeignKey(PurchaseOrder, on_delete=models.CASCADE, related_name='additional_lines', verbose_name=_('Order'), help_text=_('Purchase Order'))
order = models.ForeignKey(PurchaseOrder, on_delete=models.CASCADE, related_name='extra_lines', verbose_name=_('Order'), help_text=_('Purchase Order'))
class SalesOrderLineItem(OrderLineItem):
@ -1229,19 +1229,19 @@ class SalesOrderShipment(models.Model):
trigger_event('salesordershipment.completed', id=self.pk)
class SalesOrderAdditionalLineItem(OrderAdditionalLineItem):
class SalesOrderExtraLine(OrderExtraLine):
"""
Model for a single AdditionalLineItem in a SalesOrder
Model for a single ExtraLine in a SalesOrder
Attributes:
order: Link to the SalesOrder that this line item belongs to
title: title of line item
sale_price: The unit sale price for this OrderLineItem
order: Link to the SalesOrder that this line belongs to
title: title of line
price: The unit price for this OrderLine
"""
@staticmethod
def get_api_url():
return reverse('api-so-additional-line-list')
return reverse('api-so-extra-line-list')
order = models.ForeignKey(SalesOrder, on_delete=models.CASCADE, related_name='additional_lines', verbose_name=_('Order'), help_text=_('Sales Order'))
order = models.ForeignKey(SalesOrder, on_delete=models.CASCADE, related_name='extra_lines', verbose_name=_('Order'), help_text=_('Sales Order'))
class SalesOrderAllocation(models.Model):

View File

@ -53,8 +53,8 @@ class AbstractOrderSerializer(serializers.Serializer):
total_price_string = serializers.CharField(source='get_total_price', read_only=True)
class AbstractAdditionalLineItemSerializer(serializers.Serializer):
""" Abstract Serializer for a AdditionalLineItem object """
class AbstractExtraLineSerializer(serializers.Serializer):
""" Abstract Serializer for a ExtraLine object """
def __init__(self, *args, **kwargs):
order_detail = kwargs.pop('order_detail', False)
@ -66,21 +66,21 @@ class AbstractAdditionalLineItemSerializer(serializers.Serializer):
quantity = serializers.FloatField()
sale_price = InvenTreeMoneySerializer(
price = InvenTreeMoneySerializer(
allow_null=True
)
sale_price_string = serializers.CharField(source='sale_price', read_only=True)
price_string = serializers.CharField(source='price', read_only=True)
sale_price_currency = serializers.ChoiceField(
price_currency = serializers.ChoiceField(
choices=currency_code_mappings(),
help_text=_('Sale price currency'),
help_text=_('Price currency'),
)
class AbstractAdditionalLineItemMeta:
class AbstractExtraLineMeta:
"""
Abstract Meta for LineItem
Abstract Meta for ExtraLine
"""
fields = [
@ -90,9 +90,9 @@ class AbstractAdditionalLineItemMeta:
'notes',
'order',
'order_detail',
'sale_price',
'sale_price_currency',
'sale_price_string',
'price',
'price_currency',
'price_string',
]
@ -272,13 +272,13 @@ class POLineItemSerializer(InvenTreeModelSerializer):
]
class POAdditionalLineItemSerializer(AbstractAdditionalLineItemSerializer, InvenTreeModelSerializer):
""" Serializer for a PurchaseOrderAdditionalLineItem object """
class POExtraLineSerializer(AbstractExtraLineSerializer, InvenTreeModelSerializer):
""" Serializer for a PurchaseOrderExtraLine object """
order_detail = POSerializer(source='order', many=False, read_only=True)
class Meta(AbstractAdditionalLineItemMeta):
model = order.models.PurchaseOrderAdditionalLineItem
class Meta(AbstractExtraLineMeta):
model = order.models.PurchaseOrderExtraLine
class POLineItemReceiveSerializer(serializers.Serializer):
@ -1168,13 +1168,13 @@ class SOShipmentAllocationSerializer(serializers.Serializer):
)
class SOAdditionalLineItemSerializer(AbstractAdditionalLineItemSerializer, InvenTreeModelSerializer):
""" Serializer for a SalesOrderAdditionalLineItem object """
class SOExtraLineSerializer(AbstractExtraLineSerializer, InvenTreeModelSerializer):
""" Serializer for a SalesOrderExtraLine object """
order_detail = SalesOrderSerializer(source='order', many=False, read_only=True)
class Meta(AbstractAdditionalLineItemMeta):
model = order.models.SalesOrderAdditionalLineItem
class Meta(AbstractExtraLineMeta):
model = order.models.SalesOrderExtraLine
class SOAttachmentSerializer(InvenTreeAttachmentSerializer):

View File

@ -46,24 +46,24 @@
<div class='panel-heading'>
<div class='d-flex flex-wrap'>
<h4>{% trans "Additional Order Items" %}</h4>
<h4>{% trans "Extra Lines" %}</h4>
{% include "spacer.html" %}
<div class='btn-group' role='group'>
{% if roles.purchase_order.change and order.status == PurchaseOrderStatus.PENDING %}
<button type='button' class='btn btn-success' id='new-po-additional-line'>
<span class='fas fa-plus-circle'></span> {% trans "Add Additional Order Items" %}
<button type='button' class='btn btn-success' id='new-po-extra-line'>
<span class='fas fa-plus-circle'></span> {% trans "Add Extra Line" %}
</button>
{% endif %}
</div>
</div>
</div>
<div class='panel-content'>
<div id='order-additional-toolbar-buttons' class='btn-group' style='float: right;'>
<div id='order-extra-toolbar-buttons' class='btn-group' style='float: right;'>
<div class='btn-group'>
{% include "filter_list.html" with id="purchase-order-additional-lines" %}
{% include "filter_list.html" with id="purchase-order-extra-lines" %}
</div>
</div>
<table class='table table-striped table-condensed' id='po-additional-lines-table' data-toolbar='#order-additional-toolbar-buttons'>
<table class='table table-striped table-condensed' id='po-extra-lines-table' data-toolbar='#order-extra-toolbar-buttons'>
</table>
</div>
</div>
@ -230,24 +230,24 @@ loadPurchaseOrderLineItemTable('#po-line-table', {
{% endif %}
});
$("#new-po-additional-line").click(function() {
$("#new-po-extra-line").click(function() {
var fields = additionalLineItemFields({
var fields = extraLineFields({
order: {{ order.pk }},
});
constructForm('{% url "api-po-additional-line-list" %}', {
constructForm('{% url "api-po-extra-line-list" %}', {
fields: fields,
method: 'POST',
title: '{% trans "Add Order Line" %}',
onSuccess: function() {
$("#po-additional-lines-table").bootstrapTable("refresh");
$("#po-extra-lines-table").bootstrapTable("refresh");
},
});
});
loadPurchaseOrderAdditionalLineItemTable(
'#po-additional-lines-table',
loadPurchaseOrderExtraLineTable(
'#po-extra-lines-table',
{
order: {{ order.pk }},
status: {{ order.status }},

View File

@ -38,24 +38,24 @@
<div class='panel-heading'>
<div class='d-flex flex-wrap'>
<h4>{% trans "Additional Order Items" %}</h4>
<h4>{% trans "Extra Lines" %}</h4>
{% include "spacer.html" %}
<div class='btn-group' role='group'>
{% if roles.sales_order.change and order.is_pending %}
<button type='button' class='btn btn-success' id='new-so-additional-line'>
<span class='fas fa-plus-circle'></span> {% trans "Add Additional Order Items" %}
<button type='button' class='btn btn-success' id='new-so-extra-line'>
<span class='fas fa-plus-circle'></span> {% trans "Add Extra Line" %}
</button>
{% endif %}
</div>
</div>
</div>
<div class='panel-content'>
<div id='order-additional-toolbar-buttons' class='btn-group' style='float: right;'>
<div id='order-extra-toolbar-buttons' class='btn-group' style='float: right;'>
<div class='btn-group'>
{% include "filter_list.html" with id="sales-order-additional-lines" %}
{% include "filter_list.html" with id="sales-order-extra-lines" %}
</div>
</div>
<table class='table table-striped table-condensed' id='so-additional-lines-table' data-toolbar='#order-additional-toolbar-buttons'>
<table class='table table-striped table-condensed' id='so-extra-lines-table' data-toolbar='#order-extra-toolbar-buttons'>
</table>
</div>
</div>
@ -268,24 +268,24 @@
}
);
$("#new-so-additional-line").click(function() {
$("#new-so-extra-line").click(function() {
var fields = AdditionalLineItemFields({
var fields = ExtraLineFields({
order: {{ order.pk }},
});
constructForm('{% url "api-so-additional-line-list" %}', {
constructForm('{% url "api-so-extra-line-list" %}', {
fields: fields,
method: 'POST',
title: '{% trans "Add Order Line" %}',
title: '{% trans "Add Extra Line" %}',
onSuccess: function() {
$("#so-additional-lines-table").bootstrapTable("refresh");
$("#so-extra-lines-table").bootstrapTable("refresh");
},
});
});
loadSalesOrderAdditionalLineItemTable(
'#so-additional-lines-table',
loadSalesOrderExtraLineTable(
'#so-extra-lines-table',
{
order: {{ order.pk }},
status: {{ order.status }},