From a4267f76e86432c3a99ee9fc299797254d56e3fe Mon Sep 17 00:00:00 2001
From: Oliver Walters <oliver.henry.walters@gmail.com>
Date: Sun, 16 Aug 2020 13:39:05 +1000
Subject: [PATCH] Fixes for barcode data rendering

---
 InvenTree/InvenTree/helpers.py | 3 +++
 InvenTree/InvenTree/tests.py   | 1 +
 InvenTree/part/models.py       | 7 ++++---
 InvenTree/stock/models.py      | 8 ++++----
 4 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/InvenTree/InvenTree/helpers.py b/InvenTree/InvenTree/helpers.py
index fb54bc4c6f..28cebbcd3d 100644
--- a/InvenTree/InvenTree/helpers.py
+++ b/InvenTree/InvenTree/helpers.py
@@ -265,6 +265,9 @@ def MakeBarcode(object_name, object_pk, object_data, **kwargs):
         data['tool'] = 'InvenTree'
         data['version'] = inventreeVersion()
         data['instance'] = inventreeInstanceName()
+
+        # Ensure PK is included
+        object_data['id'] = object_pk
         data[object_name] = object_data
 
     return json.dumps(data, sort_keys=True)
diff --git a/InvenTree/InvenTree/tests.py b/InvenTree/InvenTree/tests.py
index 877adab919..c46a059c8d 100644
--- a/InvenTree/InvenTree/tests.py
+++ b/InvenTree/InvenTree/tests.py
@@ -138,6 +138,7 @@ class TestMakeBarcode(TestCase):
 
         bc = helpers.MakeBarcode(
             "part",
+            3,
             {
                 "id": 3,
                 "url": "www.google.com",
diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py
index 308808fbdd..c074d197b9 100644
--- a/InvenTree/part/models.py
+++ b/InvenTree/part/models.py
@@ -560,16 +560,17 @@ class Part(MPTTModel):
 
     responsible = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, related_name='parts_responible')
 
-    def format_barcode(self):
+    def format_barcode(self, **kwargs):
         """ Return a JSON string for formatting a barcode for this Part object """
 
         return helpers.MakeBarcode(
             "part",
+            self.id,
             {
-                "id": self.id,
                 "name": self.full_name,
                 "url": reverse('api-part-detail', kwargs={'pk': self.id}),
-            }
+            },
+            **kwargs
         )
 
     @property
diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py
index e523ed70d3..788bf845df 100644
--- a/InvenTree/stock/models.py
+++ b/InvenTree/stock/models.py
@@ -45,16 +45,17 @@ class StockLocation(InvenTreeTree):
     def get_absolute_url(self):
         return reverse('stock-location-detail', kwargs={'pk': self.id})
 
-    def format_barcode(self):
+    def format_barcode(self, **kwargs):
         """ Return a JSON string for formatting a barcode for this StockLocation object """
 
         return helpers.MakeBarcode(
             'stocklocation',
+            self.pk,
             {
-                "id": self.id,
                 "name": self.name,
                 "url": reverse('api-location-detail', kwargs={'pk': self.id}),
-            }
+            },
+            **kwargs
         )
 
     def get_stock_items(self, cascade=True):
@@ -298,7 +299,6 @@ class StockItem(MPTTModel):
             "stockitem",
             self.id,
             {
-                "id": self.id,
                 "url": reverse('api-stock-detail', kwargs={'pk': self.id}),
             },
             **kwargs