mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Merge pull request #605 from SchrodingersGat/order-receive-fix
Bug fix - receiving lines against a PO
This commit is contained in:
commit
3def3e1e89
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-01-05 21:52+0000\n"
|
"POT-Creation-Date: 2020-01-05 22:23+0000\n"
|
||||||
"PO-Revision-Date: 2019-12-19 17:48+0100\n"
|
"PO-Revision-Date: 2019-12-19 17:48+0100\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@ -429,24 +429,42 @@ msgstr "Notiz"
|
|||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr "Notizen"
|
msgstr "Notizen"
|
||||||
|
|
||||||
#: order/views.py:140
|
#: order/views.py:141
|
||||||
msgid "Confirm order cancellation"
|
msgid "Confirm order cancellation"
|
||||||
msgstr "Bestell-Stornierung bestätigen"
|
msgstr "Bestell-Stornierung bestätigen"
|
||||||
|
|
||||||
#: order/views.py:173
|
#: order/views.py:174
|
||||||
msgid "Confirm order placement"
|
msgid "Confirm order placement"
|
||||||
msgstr "Bestellungstätigung bestätigen"
|
msgstr "Bestellungstätigung bestätigen"
|
||||||
|
|
||||||
#: order/views.py:731
|
#: order/views.py:328
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Number of items received"
|
||||||
|
msgid "Items received"
|
||||||
|
msgstr "Empfangene Objekt-Anzahl"
|
||||||
|
|
||||||
|
#: order/views.py:342
|
||||||
|
msgid "No destination set"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:373
|
||||||
|
msgid "Error converting quantity to number"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:379
|
||||||
|
msgid "Receive quantity less than zero"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:740
|
||||||
msgid "Invalid Purchase Order"
|
msgid "Invalid Purchase Order"
|
||||||
msgstr "Ungültige Bestellung"
|
msgstr "Ungültige Bestellung"
|
||||||
|
|
||||||
#: order/views.py:739
|
#: order/views.py:748
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Supplier must match for Part and Order"
|
msgid "Supplier must match for Part and Order"
|
||||||
msgstr "Zulieferer muss zum Teil und zur Bestellung passen"
|
msgstr "Zulieferer muss zum Teil und zur Bestellung passen"
|
||||||
|
|
||||||
#: order/views.py:744
|
#: order/views.py:753
|
||||||
msgid "Invalid SupplierPart selection"
|
msgid "Invalid SupplierPart selection"
|
||||||
msgstr "Ungültige Wahl des Zulieferer-Teils"
|
msgstr "Ungültige Wahl des Zulieferer-Teils"
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-01-05 21:52+0000\n"
|
"POT-Creation-Date: 2020-01-05 22:23+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -420,23 +420,39 @@ msgstr ""
|
|||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: order/views.py:140
|
#: order/views.py:141
|
||||||
msgid "Confirm order cancellation"
|
msgid "Confirm order cancellation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: order/views.py:173
|
#: order/views.py:174
|
||||||
msgid "Confirm order placement"
|
msgid "Confirm order placement"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: order/views.py:731
|
#: order/views.py:328
|
||||||
|
msgid "Items received"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:342
|
||||||
|
msgid "No destination set"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:373
|
||||||
|
msgid "Error converting quantity to number"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:379
|
||||||
|
msgid "Receive quantity less than zero"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:740
|
||||||
msgid "Invalid Purchase Order"
|
msgid "Invalid Purchase Order"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: order/views.py:739
|
#: order/views.py:748
|
||||||
msgid "Supplier must match for Part and Order"
|
msgid "Supplier must match for Part and Order"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: order/views.py:744
|
#: order/views.py:753
|
||||||
msgid "Invalid SupplierPart selection"
|
msgid "Invalid SupplierPart selection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-01-05 21:52+0000\n"
|
"POT-Creation-Date: 2020-01-05 22:23+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -420,23 +420,39 @@ msgstr ""
|
|||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: order/views.py:140
|
#: order/views.py:141
|
||||||
msgid "Confirm order cancellation"
|
msgid "Confirm order cancellation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: order/views.py:173
|
#: order/views.py:174
|
||||||
msgid "Confirm order placement"
|
msgid "Confirm order placement"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: order/views.py:731
|
#: order/views.py:328
|
||||||
|
msgid "Items received"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:342
|
||||||
|
msgid "No destination set"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:373
|
||||||
|
msgid "Error converting quantity to number"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:379
|
||||||
|
msgid "Receive quantity less than zero"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: order/views.py:740
|
||||||
msgid "Invalid Purchase Order"
|
msgid "Invalid Purchase Order"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: order/views.py:739
|
#: order/views.py:748
|
||||||
msgid "Supplier must match for Part and Order"
|
msgid "Supplier must match for Part and Order"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: order/views.py:744
|
#: order/views.py:753
|
||||||
msgid "Invalid SupplierPart selection"
|
msgid "Invalid SupplierPart selection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ from django.views.generic import DetailView, ListView
|
|||||||
from django.forms import HiddenInput
|
from django.forms import HiddenInput
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
from decimal import Decimal, InvalidOperation
|
||||||
|
|
||||||
from .models import PurchaseOrder, PurchaseOrderLineItem
|
from .models import PurchaseOrder, PurchaseOrderLineItem
|
||||||
from .admin import POLineItemResource
|
from .admin import POLineItemResource
|
||||||
@ -324,6 +325,8 @@ class PurchaseOrderReceive(AjaxUpdateView):
|
|||||||
self.lines = []
|
self.lines = []
|
||||||
self.destination = None
|
self.destination = None
|
||||||
|
|
||||||
|
msg = _("Items received")
|
||||||
|
|
||||||
# Extract the destination for received parts
|
# Extract the destination for received parts
|
||||||
if 'location' in request.POST:
|
if 'location' in request.POST:
|
||||||
pk = request.POST['location']
|
pk = request.POST['location']
|
||||||
@ -332,7 +335,11 @@ class PurchaseOrderReceive(AjaxUpdateView):
|
|||||||
except (StockLocation.DoesNotExist, ValueError):
|
except (StockLocation.DoesNotExist, ValueError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
errors = self.destination is None
|
errors = False
|
||||||
|
|
||||||
|
if self.destination is None:
|
||||||
|
errors = True
|
||||||
|
msg = _("No destination set")
|
||||||
|
|
||||||
# Extract information on all submitted line items
|
# Extract information on all submitted line items
|
||||||
for item in request.POST:
|
for item in request.POST:
|
||||||
@ -359,15 +366,17 @@ class PurchaseOrderReceive(AjaxUpdateView):
|
|||||||
receive = self.request.POST[item]
|
receive = self.request.POST[item]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
receive = int(receive)
|
receive = Decimal(receive)
|
||||||
except ValueError:
|
except InvalidOperation:
|
||||||
# In the case on an invalid input, reset to default
|
# In the case on an invalid input, reset to default
|
||||||
receive = line.remaining()
|
receive = line.remaining()
|
||||||
|
msg = _("Error converting quantity to number")
|
||||||
errors = True
|
errors = True
|
||||||
|
|
||||||
if receive < 0:
|
if receive < 0:
|
||||||
receive = 0
|
receive = 0
|
||||||
errors = True
|
errors = True
|
||||||
|
msg = _("Receive quantity less than zero")
|
||||||
|
|
||||||
line.receive_quantity = receive
|
line.receive_quantity = receive
|
||||||
self.lines.append(line)
|
self.lines.append(line)
|
||||||
@ -378,7 +387,7 @@ class PurchaseOrderReceive(AjaxUpdateView):
|
|||||||
|
|
||||||
data = {
|
data = {
|
||||||
'form_valid': errors is False,
|
'form_valid': errors is False,
|
||||||
'success': 'Items marked as received',
|
'success': msg,
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.renderJsonResponse(request, data=data, form=self.get_form())
|
return self.renderJsonResponse(request, data=data, form=self.get_form())
|
||||||
|
Loading…
Reference in New Issue
Block a user