def mark_doa(self): """ Marking a part DOA means we get a new part, so: - make a copy of the old part """ # Update our PO so we know to expect the replacement for the DOA part poi = PurchaseOrderItem(price=0, purchase_order=self.purchase_order) poi.product = self.order_item.product poi.order_item = self.order_item poi.ordered_at = timezone.now() poi.save() # Create a copy of this part and reset new_part = self new_part.pk = None new_part.shipment = None new_part.line_number = None new_part.returned_at = None new_part.return_order = '' new_part.order_status = '' new_part.return_label = None new_part.order_status_code = '' new_part.coverage_description = '' new_part.registered_for_return = False new_part.save()
def order(self, user, po=None): """ Purchase this Service Part """ if po is None: po = PurchaseOrder() po.location = user.get_location() po.sales_order = self.repair.order po.reference = self.repair.reference po.confirmation = self.repair.confirmation po.created_by = user po.supplier = "Apple" po.save() self.purchase_order = po poi = PurchaseOrderItem(purchase_order=po) poi.code = self.part_number poi.title = self.part_title poi.order_item = self.order_item poi.product = self.order_item.product poi.price = self.order_item.get_purchase_price() poi.save() if po.submitted_at is None: po.submit(user) self.save()