Esempio n. 1
0
    def status(cls, waybillreturn, status):
        from applications.point_sale.service import PointSaleService
        from applications.return_app.service import ReturnService
        debug(u"Смена статуса `накладной возврата` %s с %s на %s." % (
            waybillreturn.id, waybillreturn.status, StatusType[status]))

        if status == DRAFT:
            waybillreturn.items.delete()

        if status == IN_PROG:
            waybillreturn.items.delete()
            return_inst = ReturnService.get_by_id(waybillreturn.returninst_id)
            point = waybillreturn.pointsale

            for item in return_inst.items:
                good_id = item.good_id
                res = PointSaleService.item_to_pointsale_good(
                    point.id, good_id)
                if res:
                    itemreturn = WayBillReturnItems()
                    itemreturn.waybill = waybillreturn
                    itemreturn.good_id = good_id
                    itemreturn.count_plan = res.count
                    db.session.add(itemreturn)

        if status == FINISH:
            from_point = waybillreturn.pointsale
            to_point = PointSaleService.get_central()
            for item in waybillreturn.items:
                PointSaleService.sync_good_increment(
                    from_point.id, item.good_id, item.count * -1 if item.count
                    else 0)
                PointSaleService.sync_good_increment(
                    to_point.id, item.good_id, item.count if item.count else 0)

        waybillreturn.status = status
        debug(u"Смена статуса `накладной возврата` %s с %s на %s завершено." % (
            waybillreturn.id, waybillreturn.status, StatusType[status]))