概要
承認アプリで申請を提出すると、状態が「申請済」になります。
この状態になると、申請を出した本人(依頼者)は申請を取り消すことも編集することもできません。
承認の回覧中に誤りを指摘されても、依頼者が直して再提出することはできません。
この状態では、新しい申請を作り直して誤ったものは廃棄する運用にしなければいけません。
これはOdooの標準の挙動でした。
原因は「キャンセル」ボタンの表示に「役員: 全申請の承認」の権限が必要だったことです。
以下では条件を整理し、依頼者本人が「未申請」に戻せるようにする方法を説明します。
対象バージョン
- Odoo 18.0(承認アプリは Enterprise版のアプリです)
対処1: サーバアクションで未申請に戻す
依頼者本人のときだけ「キャンセル」と「ドラフトに戻る」を続けて実行するサーバアクションを用意し、レコード名の横の歯車(アクション)メニューから実行します。
設定 > 技術設定 > アクション > サーバアクション で、モデルを「承認依頼」にして次のコードを登録します。
for record in records:
if record.request_status not in ('pending', 'refused'):
raise UserError("申請済または却下済の場合のみ未申請に変更できます")
if record.request_owner_id != env.user:
raise UserError("依頼者本人のみ未申請に変更できます")
record.sudo().action_cancel()
record.sudo().action_draft()
却下済からも未申請に戻せるようにしています。修正して再提出する流れは、却下されたときも同じです。
登録すると、歯車メニューに項目が追加されます。
実行すると状態が未申請に戻り、「提出」ボタンが再び表示されます。修正して再提出できる状態です。
注意事項:
依頼者以外のユーザからもこのサーバアクションが表示されます。
実行してもエラーになるだけですが、対象ユーザを絞りたい場合はサーバアクションのグループを設定してください。
対策2: 修正PRをOdoo社にマージしてもらう
Odoo本体に対しては依頼者本人が申請済の申請を取り消せるようにする改善を提案しています(執筆時点で未マージ)。
このPRがマージされると、申請者でも申請済みから未申請に戻して、申請内容を更新することができるようになります。
(弊社の森田が作ったPRです。森田さんありがとう!!)
https://github.com/odoo/enterprise/pull/129459
Enterpriseに初めてPRだしました!!!😎
Odoo社の人にでかい顔ができますね (笑)
実は僕はまだEnterpriseにはPRを出したことがないんですよね
憧れます!!