Exemple #1
0
 def pre_save(self, obj, data):
     try:
         obj.date = HelperService.convert_to_pydate(data['date'])
         obj.date_to = HelperService.convert_to_pydate(data['date_to'])
     except KeyError as exc:
         error(u"Попытка сохранить накладную без даты. " + unicode(exc))
         raise WayBillReturnCanon.WayBillCanonException(
             u"Для сохранения необходим обязательный параметр %s." % 'date')
     try:
         obj.waybill_items = data['items']
     except KeyError as exc:
         debug(u"Сохранение накладной %s без позиций товара." % obj)
         obj.waybill_items = []
     return super(WayBillReturnCanon, self).pre_save(obj, data)
Exemple #2
0
    def post(self):
        try:
            debug(u"Сохранение пачки накладных.")
            pointSource = request.json['pointSource']
            pointitems = request.json['pointReceiver']
            items = request.json['items']
            date = request.json['date']
            date = HelperService.convert_to_pydate(date)
            type = request.json['type']
            typeRec = request.json['typeRec']
            for it in items:
                it['count'] = 0
            for item in pointitems:
                waybill = WayBillService.create(
                    pointSource['id'], None, date, None, item['id'], type,
                    typeRec)
                waybill.waybill_items = items
                if waybill.waybill_items:
                    debug(u"Сохранение позиций накладной %s." % waybill)
                    try:
                        waybill_items = WayBillService.build_retail_items(
                            waybill.waybill_items)
                    except Exception as exc:
                        debug(u"Ошибка сохранения накладной %s. " + unicode(
                            exc) % waybill)
                        raise WayBillCanon.WayBillCanonException(unicode(exc))

                    WayBillService.upgrade_items(waybill, waybill_items)
        except Exception as exc:
            db.session.rollback()
            debug(u"Сохранение накладной %s не удалось." % unicode(exc))
            abort(400, message=unicode(exc))

        db.session.commit()
        return "ok"
Exemple #3
0
    def post_save(self, obj, data, create_new=False):

        if obj.id:
            if datetime.now().date() > HelperService.convert_to_pydate(
                    obj.date_end).date():
                raise BaseCanoniseResource.CanonException(
                    u"Нельзя редактировать заказ с истекшим сроком.")

            OrderService.set_handling(obj.id)

            items = data['items'] if 'items' in data else []

            for item in items:
                OrderService.set_count_by_id(item['id'], item['count'])

        super(OrderCanon, self).post_save(obj, data, create_new=create_new)
Exemple #4
0
    def prepared_acceptance(cls, acceptance, date, pointsale_id, type,
                            provider_id, invoices):
        from services.mailinvoice import InvoiceService
        from services.helperserv import HelperService
        from services.modelhelper import ModelService
        if acceptance.id is None or acceptance.status == DRAFT:
            if date is None:
                raise AcceptanceException(
                    u"Поле дата - обязательно для заполнения.")
            acceptance.date = HelperService.convert_to_pydate(date)
            if not ModelService.check_id(
                    pointsale_id):
                raise AcceptanceException(
                    u"Поле торговая точка - обязательно для заполнения.")
            if type is None:
                raise AcceptanceException(
                    u"Нельзя создать приход без типа.")
            type = int(type)
            if type not in [MAIL, NEW]:
                raise AcceptanceException(
                    u"Передан неверный тип.")
            if type == MAIL and not invoices:
                raise AcceptanceException(
                    u"При выбранном типе 'Регулярная накладная' необходимо "
                    u"указать как минимум одну накладную.")
            if type == NEW and not ModelService.check_id(provider_id):
                raise AcceptanceException(
                    u"При выбранном типе 'Новая' необходимо указать "
                    u"поставщика.")
            if type == MAIL:
                acceptance.provider_id = None

                acceptance.invoices[:] = []

                for invoice_id in invoices:
                    invoice = InvoiceService.get_by_id(invoice_id)
                    acceptance.invoices.append(invoice)

        return acceptance
Exemple #5
0
    def pre_save(self, obj, data):
        obj = super(RevisionResource, self).pre_save(obj, data)

        obj.date = HelperService.convert_to_pydate(data['date'])

        return obj