Пример #1
0
    def create_or_update_prices(cls, invoice_model, data_items):
        """
        Создаем или изменяем цены позиций переданной накладной.
        """
        invoice_id = invoice_model.id
        debug(u"Начало сохранения цен в позициях накладной %d", invoice_id)
        from applications.good.service import GoodService
        from services.mailinvoice import InvoiceService
        try:
            for data in data_items:
                good_id = data['id_good']
                commodity_id = int(data['id_commodity'])
                price_retail = float(data['price_retail']) \
                    if data['price_retail'] else None
                price_gross = float(data['price_gross']) \
                    if data['price_gross'] else None
                NDS = float(data['NDS'])
                price_prev = float(data['price_prev'])
                price_post = float(data['price_post'])
                good = GoodService.get_good(good_id)
                number_local = data['number_local']
                number_global = data['number_global']

                item = InvoiceService.get_item_by_invoice_good(invoice_id, good_id)
                item.price_retail = price_retail
                item.price_gross = price_gross
                db.session.add(item)

                cls.create_or_update(good, DataToUpdatePrice(
                    id_commodity=commodity_id, price_retail=price_retail,
                    price_gross=price_gross, price_prev=price_prev,
                    price_post=price_post, NDS=NDS, number_local=number_local,
                    number_global=number_global, invoice=invoice_model))
        except Exception as err:
            error(
                u"Ошибка сохранения цен в позициях накладной %d. %s",
                invoice_id, unicode(err))
            db.session.rollback()
            raise PriceServiceException(err)
        else:
            db.session.commit()
        debug(u"Конец сохранения цен в позициях накладной %d", invoice_id)