Пример #1
0
    def register_bulk_return(self, user):
        """
        Registers bulk return with GSX
        """
        parts = []  # Array of outbound parts in GSX format

        gsx_act = self.location.gsx_accounts.get(ship_to=self.ship_to)
        gsx_act.connect(user)

        for p in self.servicepart_set.all().order_by('box_number'):
            parts.append(p.to_gsx())

        ret = gsxws.Return(shipToCode=self.ship_to)

        ret.notes = ""
        ret.width = self.width
        ret.length = self.length
        ret.height = self.height
        ret.carrierCode = self.carrier
        ret.trackingNumber = self.tracking_id
        ret.estimatedTotalWeight = self.weight

        result = ret.register_parts(parts)
        ret.bulkReturnOrder = parts
        self.dispatched_by = user
        self.dispatched_at = timezone.now()
        self.return_id = result.bulkReturnId
        self.tracking_url = result.trackingURL

        self.save()

        filename = "bulk_return_%s.pdf" % self.return_id
        self.packing_list.save(filename, File(open(result.packingList)))
Пример #2
0
    def update_part(self, return_data, return_type, user):
        """
        gsx/returns/Parts Return Update
        Updates the GSX status of this part
        """
        self.repair.connect_gsx(user)

        p = {'partNumber': self.part_number, 'returnType': return_type}
        p.update(return_data)
        part = gsxws.RepairOrderLine(**p)
        ret = gsxws.Return()

        ret.update_parts(self.repair.confirmation, [part])

        if return_type == Shipment.RETURN_DOA:
            self.mark_doa()
Пример #3
0
    def get_return_label(self):
        """Get the GSX return label for this part."""
        if self.return_label.name == "":
            # Return label not yet set, get it...
            label = gsxws.Return(self.return_order).get_label(self.part_number)
            filename = "%s_%s.pdf" % (self.return_order, self.part_number)
            tmp_fp = os.path.join(settings.TEMP_ROOT, filename)
            #  move the label to local temp to avoid
            #  django.security.SuspiciousFileOperation
            shutil.move(label.returnLabelFileData, tmp_fp)

            f = File(open(tmp_fp, 'r'))
            self.return_label = f
            self.save()
            self.return_label.save(filename, f)
            f.closed
            os.remove(tmp_fp)

        return self.return_label.read()