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)
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"
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)
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
def pre_save(self, obj, data): obj = super(RevisionResource, self).pre_save(obj, data) obj.date = HelperService.convert_to_pydate(data['date']) return obj