diff options
author | Filipp Lepalaan <filipp@mac.com> | 2015-10-01 00:31:02 +0300 |
---|---|---|
committer | Filipp Lepalaan <filipp@mac.com> | 2015-10-01 00:31:02 +0300 |
commit | 0c6d66e7ced5f1c7843eba4221b08db79e56a021 (patch) | |
tree | c16473f761eb5d26d2a3d1a4ceb2f9f2875b44e4 /servo/models | |
parent | ec6276e2fb2bb0785f14469bbe8eb292f4a6e6b7 (diff) | |
download | Servo-0c6d66e7ced5f1c7843eba4221b08db79e56a021.tar.gz Servo-0c6d66e7ced5f1c7843eba4221b08db79e56a021.tar.bz2 Servo-0c6d66e7ced5f1c7843eba4221b08db79e56a021.zip |
Inventory bug fixes
and performance enhancements
Diffstat (limited to 'servo/models')
-rw-r--r-- | servo/models/order.py | 6 | ||||
-rw-r--r-- | servo/models/purchases.py | 51 | ||||
-rw-r--r-- | servo/models/shipments.py | 2 |
3 files changed, 55 insertions, 4 deletions
diff --git a/servo/models/order.py b/servo/models/order.py index 18fc3b0..b389053 100644 --- a/servo/models/order.py +++ b/servo/models/order.py @@ -931,8 +931,12 @@ class ServiceOrderItem(AbstractOrderItem): return self.order.repair_set.latest() def reserve_product(self): + """ + Reserve this SOI for the inventory at this location + """ location = self.order.location - inventory = Inventory.objects.get(location=location, product=self.product) + inventory, created = Inventory.objects.get_or_create(location=location, + product=self.product) inventory.amount_reserved += self.amount inventory.save() diff --git a/servo/models/purchases.py b/servo/models/purchases.py index 184f303..636eab6 100644 --- a/servo/models/purchases.py +++ b/servo/models/purchases.py @@ -188,7 +188,9 @@ class PurchaseOrder(models.Model): class PurchaseOrderItem(AbstractOrderItem): - "An item being purchased" + """ + An item being purchased + """ price = models.DecimalField( max_digits=8, decimal_places=2, @@ -202,8 +204,34 @@ class PurchaseOrderItem(AbstractOrderItem): verbose_name=_("Purchase Order") ) + # begin optimization + sales_order = models.ForeignKey( + Order, + null=True, + editable=False, + ) + + sales_order_ref = models.CharField( + default='', + max_length=8, + editable=False, + ) + + purchase_order_ref = models.CharField( + default='', + max_length=32, + editable=False, + ) + + user_fullname = models.CharField( + default='', + max_length=256, + editable=False, + ) + # /end optimization + order_item = models.ForeignKey(ServiceOrderItem, null=True, editable=False) - reference = models.CharField(default='', blank=True, max_length=128) + reference = models.CharField(default='', blank=True, max_length=128) ordered_at = models.DateTimeField(null=True, editable=False) expected_ship_date = models.DateField(null=True, editable=False) @@ -255,7 +283,23 @@ class PurchaseOrderItem(AbstractOrderItem): self.save() def save(self, *args, **kwargs): + + # The following four fields are used so much + # that we store them for fast access + if self.sales_order is None: + self.sales_order = self.purchase_order.sales_order + + if self.sales_order_ref == '': + self.sales_order_ref = self.sales_order.code + + if self.purchase_order_ref == '': + self.purchase_order_ref = self.purchase_order.reference + + if self.user_fullname == '': + self.user_fullname = self.created_by.get_name() + super(PurchaseOrderItem, self).save(*args, **kwargs) + # Sync SOI and POI serial numbers if self.order_item: if self.order_item.sn and not self.sn: @@ -265,6 +309,9 @@ class PurchaseOrderItem(AbstractOrderItem): self.order_item.save() + def __unicode__(self): + return self.code + class Meta: ordering = ('id',) app_label = 'servo' diff --git a/servo/models/shipments.py b/servo/models/shipments.py index d6112ab..614c642 100644 --- a/servo/models/shipments.py +++ b/servo/models/shipments.py @@ -62,7 +62,7 @@ class Shipment(models.Model): default='', max_length=18, choices=gsxws.CARRIERS, - verbose_name=_('carrier') + verbose_name=_('Carrier') ) created_at = models.DateTimeField(auto_now=True, editable=False) |