def move(item: models.QuerySet, status: Status, **context) -> models.QuerySet: if abs(item.status - status) > 1: if status == Status.PAID and item.status > Status.PAID: pass if status == Status.DISCARD or item.status == Status.DISCARD: item.do_not_check_frozen = True else: raise ValidationError("Đơn hàng chuyển trạng thái không hợp lệ.") item.do_not_check_pending = True item.move_status = True if status == Status.NEW: return MoveStatusUtils.new(item, **context) if status == Status.APPROVED: return MoveStatusUtils.approved(item, **context) if status == Status.DEBT: return MoveStatusUtils.debt(item, **context) if status == Status.PAID: return MoveStatusUtils.paid(item, **context) if status == Status.DISPATCHED: return MoveStatusUtils.dispatched(item, **context) if status == Status.CN_STORE: return MoveStatusUtils.cn_store(item, **context) if status == Status.VN_STORE: return MoveStatusUtils.vn_store(item, **context) if status == Status.EXPORTED: return MoveStatusUtils.exported(item, **context) if status == Status.DONE: return MoveStatusUtils.done(item, **context) if status == Status.DISCARD: return MoveStatusUtils.discard(item, **context)
def pending(order: models.QuerySet) -> models.QuerySet: order.do_not_check_pending = True order.pending = True order.save() return order