mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
VIews / forms / etc
This commit is contained in:
parent
1a90106bac
commit
ff7570aea4
@ -401,7 +401,7 @@ class PriceBreakCreate(AjaxCreateView):
|
|||||||
|
|
||||||
def get_data(self):
|
def get_data(self):
|
||||||
return {
|
return {
|
||||||
'success': 'Added new price break'
|
'success': _('Added new price break')
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_part(self):
|
def get_part(self):
|
||||||
|
@ -17,6 +17,8 @@ from .models import Part, PartCategory, PartAttachment
|
|||||||
from .models import BomItem
|
from .models import BomItem
|
||||||
from .models import PartParameterTemplate, PartParameter
|
from .models import PartParameterTemplate, PartParameter
|
||||||
from .models import PartTestTemplate
|
from .models import PartTestTemplate
|
||||||
|
from .models import PartSellPriceBreak
|
||||||
|
|
||||||
|
|
||||||
from common.models import Currency
|
from common.models import Currency
|
||||||
|
|
||||||
@ -253,3 +255,22 @@ class PartPriceForm(forms.Form):
|
|||||||
'quantity',
|
'quantity',
|
||||||
'currency',
|
'currency',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class EditPartSalePriceBreakForm(HelperForm):
|
||||||
|
"""
|
||||||
|
Form for creating / editing a sale price for a part
|
||||||
|
"""
|
||||||
|
|
||||||
|
quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)
|
||||||
|
|
||||||
|
cost = RoundingDecimalFormField(max_digits=10, decimal_places=5)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = PartSellPriceBreak
|
||||||
|
fields = [
|
||||||
|
'part',
|
||||||
|
'quantity',
|
||||||
|
'cost',
|
||||||
|
'currency',
|
||||||
|
]
|
@ -21,8 +21,19 @@
|
|||||||
{% block js_ready %}
|
{% block js_ready %}
|
||||||
{{ block.super }}
|
{{ block.super }}
|
||||||
|
|
||||||
|
function reloadTable() {
|
||||||
|
$("#price-break-table").bootstrapTable("refresh");
|
||||||
|
}
|
||||||
|
|
||||||
$('#new-price-break').click(function() {
|
$('#new-price-break').click(function() {
|
||||||
// TODO
|
launchModalForm("{% url 'sale-price-break-create' %}",
|
||||||
})
|
{
|
||||||
|
success: reloadTable,
|
||||||
|
data: {
|
||||||
|
part: {{ part.id }},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -18,6 +18,12 @@ part_attachment_urls = [
|
|||||||
url(r'^(?P<pk>\d+)/delete/?', views.PartAttachmentDelete.as_view(), name='part-attachment-delete'),
|
url(r'^(?P<pk>\d+)/delete/?', views.PartAttachmentDelete.as_view(), name='part-attachment-delete'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
sale_price_break_urls = [
|
||||||
|
url(r'^new/', views.PartSalePriceBreakCreate.as_view(), name='sale-price-break-create'),
|
||||||
|
url(r'^(?P<pk>\d+)/edit/', views.PartSalePriceBreakEdit.as_view(), name='sale-price-break-edit'),
|
||||||
|
url(r'^(?P<pk>\d+)/delete/', views.PartSalePriceBreakDelete.as_view(), name='sale-price-break-delete'),
|
||||||
|
]
|
||||||
|
|
||||||
part_parameter_urls = [
|
part_parameter_urls = [
|
||||||
|
|
||||||
url(r'^template/new/', views.PartParameterTemplateCreate.as_view(), name='part-param-template-create'),
|
url(r'^template/new/', views.PartParameterTemplateCreate.as_view(), name='part-param-template-create'),
|
||||||
@ -27,7 +33,6 @@ part_parameter_urls = [
|
|||||||
url(r'^new/', views.PartParameterCreate.as_view(), name='part-param-create'),
|
url(r'^new/', views.PartParameterCreate.as_view(), name='part-param-create'),
|
||||||
url(r'^(?P<pk>\d+)/edit/', views.PartParameterEdit.as_view(), name='part-param-edit'),
|
url(r'^(?P<pk>\d+)/edit/', views.PartParameterEdit.as_view(), name='part-param-edit'),
|
||||||
url(r'^(?P<pk>\d+)/delete/', views.PartParameterDelete.as_view(), name='part-param-delete'),
|
url(r'^(?P<pk>\d+)/delete/', views.PartParameterDelete.as_view(), name='part-param-delete'),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
part_detail_urls = [
|
part_detail_urls = [
|
||||||
@ -109,6 +114,9 @@ part_urls = [
|
|||||||
# Part attachments
|
# Part attachments
|
||||||
url(r'^attachment/', include(part_attachment_urls)),
|
url(r'^attachment/', include(part_attachment_urls)),
|
||||||
|
|
||||||
|
# Part price breaks
|
||||||
|
url(r'^sale-price/', include(sale_price_break_urls)),
|
||||||
|
|
||||||
# Part test templates
|
# Part test templates
|
||||||
url(r'^test-template/', include([
|
url(r'^test-template/', include([
|
||||||
url(r'^new/', views.PartTestTemplateCreate.as_view(), name='part-test-template-create'),
|
url(r'^new/', views.PartTestTemplateCreate.as_view(), name='part-test-template-create'),
|
||||||
|
@ -26,6 +26,7 @@ from .models import PartParameterTemplate, PartParameter
|
|||||||
from .models import BomItem
|
from .models import BomItem
|
||||||
from .models import match_part_names
|
from .models import match_part_names
|
||||||
from .models import PartTestTemplate
|
from .models import PartTestTemplate
|
||||||
|
from .models import PartSellPriceBreak
|
||||||
|
|
||||||
from common.models import Currency, InvenTreeSetting
|
from common.models import Currency, InvenTreeSetting
|
||||||
from company.models import SupplierPart
|
from company.models import SupplierPart
|
||||||
@ -2097,3 +2098,75 @@ class BomItemDelete(AjaxDeleteView):
|
|||||||
ajax_template_name = 'part/bom-delete.html'
|
ajax_template_name = 'part/bom-delete.html'
|
||||||
context_object_name = 'item'
|
context_object_name = 'item'
|
||||||
ajax_form_title = _('Confim BOM item deletion')
|
ajax_form_title = _('Confim BOM item deletion')
|
||||||
|
|
||||||
|
|
||||||
|
class PartSalePriceBreakCreate(AjaxCreateView):
|
||||||
|
""" View for creating a sale price break for a part """
|
||||||
|
|
||||||
|
model = PartSellPriceBreak
|
||||||
|
form_class = part_forms.EditPartSalePriceBreakForm
|
||||||
|
ajax_form_title = _('Add Price Break')
|
||||||
|
|
||||||
|
def get_data(self):
|
||||||
|
return {
|
||||||
|
'success': _('Added new price break')
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_part(self):
|
||||||
|
try:
|
||||||
|
part = Part.objects.get(id=self.request.GET.get('part'))
|
||||||
|
except (ValueError, Part.DoesNotExist):
|
||||||
|
part = None
|
||||||
|
|
||||||
|
if part is None:
|
||||||
|
try:
|
||||||
|
part = Part.objects.get(id=self.request.POST.get('part'))
|
||||||
|
except (ValueError, Part.DoesNotExist):
|
||||||
|
part = None
|
||||||
|
|
||||||
|
return part
|
||||||
|
|
||||||
|
def get_form(self):
|
||||||
|
|
||||||
|
form = super(AjaxCreateView, self).get_form()
|
||||||
|
form.fields['part'].widget = HiddenInput()
|
||||||
|
|
||||||
|
return form
|
||||||
|
|
||||||
|
def get_initial(self):
|
||||||
|
|
||||||
|
initials = super(AjaxCreateView, self).get_initial()
|
||||||
|
|
||||||
|
initials['part'] = self.get_part()
|
||||||
|
|
||||||
|
# Pre-select the default currency
|
||||||
|
try:
|
||||||
|
base = Currency.objects.get(base=True)
|
||||||
|
initials['currency'] = base
|
||||||
|
except Currency.DoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return initials
|
||||||
|
|
||||||
|
|
||||||
|
class PartSalePriceBreakEdit(AjaxUpdateView):
|
||||||
|
""" View for editing a sale price break """
|
||||||
|
|
||||||
|
model = PartSellPriceBreak
|
||||||
|
form_class = part_forms.EditPartSalePriceBreakForm
|
||||||
|
ajax_form_title = _('Edit Price Break')
|
||||||
|
|
||||||
|
def get_form(self):
|
||||||
|
|
||||||
|
form = super().get_form()
|
||||||
|
form.fields['part'].widget = HiddenInput()
|
||||||
|
|
||||||
|
return form
|
||||||
|
|
||||||
|
|
||||||
|
class PartSalePriceBreakDelete(AjaxDeleteView):
|
||||||
|
""" View for deleting a sale price break """
|
||||||
|
|
||||||
|
model = PartSellPriceBreak
|
||||||
|
ajax_form_title = _("Delete Price Break")
|
||||||
|
ajax_template_name = "modal_delete_form.html"
|
||||||
|
Loading…
Reference in New Issue
Block a user