Пример #1
0
    def pre_save(self, obj, data):
        from applications.commodity.service import CommodityService
        obj.number_local = str(obj.number_local) if obj.number_local else None
        obj.number_global = str(obj.number_global) if obj.number_global \
            else None
        if obj.commodity_id is None:
            raise GoodResourceCanon.GoodResourceException(
                u"Нельзя сохранить товар без номенклатуры.")

        commodity = CommodityService.get_by_id(obj.commodity_id)
        try:
            res, good = GoodService.get_or_create_commodity_numbers(
                obj.commodity_id, obj.number_local, obj.number_global, obj.id)
        except GoodServiceException as exc:
            raise GoodResourceCanon.GoodResourceException(unicode(exc))

        if res is False:
            good.commodity = commodity
            price_id = data.get('price_id')
            if price_id:
                good.price_id = price_id
            if not data.get('full_name'):
                full_name = GoodService.full_name(good)
            else:
                full_name = obj.full_name
            good.full_name = full_name

        if res is True:
            if commodity.numeric:
                message = u"В системе уже есть товар с наименованием %s и " \
                          u"№%s(%s)" % (
                    commodity.name, obj.number_local, obj.number_global)
            else:
                message = u"В системе уже есть безномерной товар с " \
                          u"наименованием %s" % commodity.name
            raise GoodResourceCanon.GoodResourceException(message)

        good = super(GoodResourceCanon, self).pre_save(good, data)

        return good