Exemple #1
0
    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)