オープンソースのERP iDempiereの標準機能として、受注伝票と発注伝票は、一度完成にしても"再アクテイブ"する事で再度編集する事ができます。受注伝票の修正は、業種/業界によっては割と頻繁にある事かもしれません。そのような場合に完成した受注伝票をボイドして、再度入力というのは面倒な場合があるだろうという事で、"再アクテイブ"して再度編集できるようにしているのだと思います。
しかし一方で、既に出荷したり請求したりしている受注伝票の変更は困る場合があります。例えば、受注伝票明細上は10個受注して、10個すべて出荷済みになっているのにも関わらず、再アクテイブする事により、8個受注に変更する事ができてしまいます。
このように、再アクテイブは業務処理的なメリットがある一方で、誤入力のデメリット(懸念)もあります。そこで、JPiereでは、再アクテイブした際に、数量等の重要な情報を修正しないようにするチェックロジックを実装しました。
前提
そもそも受注伝票や発注伝票で"再アクテイブ"を許可しないのであれば、職責の設定やDocOptionsの実装で制限して下さい。このカスタマイズは、あくまでも再アクテイブを行う事を前提に、運用上誤入力を防ぐためのチェックロジックの実装を目的としています。
チェックロジックは、既に出荷/入荷がされているか、請求されている受注伝票明細もしくは発注伝票明細を変更しようとした際に、bereSave()メソッドで実行されます。新規に明細行を追加するのは、既に出荷/入荷がされているという事はないため、チェックロジックの対象外としています。
システムコンフィグ設定
受注伝票と発注伝票の再アクテイブの制御は、まずは、その方針をシステムコンフィグ設定に定義しておく必要があります。
JP_ORDER_REACTIVATE_QTY_CHECK
入力数量(QtyEntered)の変更を許可するかどうかの設定です。下記のいずれかの値を設定します。このシステムコンフィグ設定は組織レベルの設定が可能です。
◆SUP (Sales order Under quantity Prohibit)
受注伝票明細だけ(発注伝票明細はチェックの対象外)、再アクテイブの際に、出荷済数量もしくは請求済数量が0ではない場合は、入力数量(注文数量)を出荷済数量もしくは請求済数量のいずれか大きい数量より小さくする入力はできません。
◆SCP (Sales order Change quantity Prohibit)
受注伝票明細だけ(発注伝票明細はチェックの対象外)、再アクテイブの際に、出荷済数量もしくは請求済数量が0ではない場合は、入力数量(注文数量)の変更はできません。
◆PUP (Purchase order Under quantity Prohibit)
発注伝票明細だけ(受注伝票明細はチェックの対象外)、再アクテイブの際に、入荷済数量もしくは請求済数量が0ではない場合は、入力数量(注文数量)を入荷済数量もしくは請求済数量のいずれか大きい数量より小さくする入力はできません。
◆PCP (Purchase order Change quantity Prohibit)
発注伝票明細だけ(受注伝票明細はチェックの対象外)、再アクテイブの際に、入荷済数量もしくは請求済数量が0ではない場合は、入力数量(注文数量)の変更はできません。
◆BUP (Both sales order and purchase order Under quantity Prohibit)
受注伝票明細と受注伝票明細の両方、再アクテイブの際に、出荷済数量/入荷済数量もしくは請求済数量が0ではない場合は、入力数量(注文数量)を出荷済数量/入荷済数量もしくは請求済数量のいずれか大きい数量より小さくする入力はできません。
◆BCP (Both sales order and purchase order Change quantity Prohibit)
受注伝票明細と発注伝票明細の両方、再アクテイブの際に、出荷済数量/入荷済数量もしくは請求済数量が0ではない場合は、入力数量(注文数量)の変更はできません。
◆NON
受注伝票明細と発注伝票明細の両方とも数量の変更チェックは行わない場合に使用します。
JP_ORDER_REACTIVATE_AMT_CHECK
入数単価(PriceEntered)の変更を許可するかどうかの設定です。下記のいずれかの値を設定します。このシステムコンフィグ設定は組織レベルの設定が可能です。
◆SCP (Sales order Change amount Prohibit)
受注伝票明細だけ(発注伝票明細はチェックの対象外)、再アクテイブの際に、請求済数量が0ではない場合は、入数単価と税金情報の変更はできません。
◆PCP (Purchase order Change amount Prohibit)
発注伝票明細だけ(受注伝票明細はチェックの対象外)、再アクテイブの際に、請求済数量が0ではない場合は、入数単価と税金情報の変更はできません。
◆BCP (Both sales order and purchase order Change quantity Prohibit)
受注伝票明細と発注伝票明細の両方で、再アクテイブの際に、請求済数量が0ではない場合は、入数単価と税金情報の変更はできません。
◆NON
受注伝票明細と発注伝票明細の両方とも入数単価と税金情報の変更チェックは行わない場合に使用します。
カスタマイズ情報
追加メッセージ
◆JP_CanNotChangeQtyForQtyDeliveredOrQtyInvoiced
You can not change Qty. Because Delivered or Invoiced Qty are not 0.(既に入出荷もしくは請求が行われているため数量の変更はできません。)
◆JP_CanNotChangeQtyLessThanQtyDeliveredOrQtyInvoiced
You can not change Qty less than Delivered or Invoiced Qty.(入出荷済数量もしくは請求済数量より少ない数量に変更する事はできません。)
◆JP_CanNotChangeAmountForQtyInvoiced
You can not change Amount. Because invoice was issued.(既に請求が行われているため金額に関係する変更はできません。)