vtigercrm や f-revocrm で連番付与をするフィールドを準備しており、番号を 00001、00002、00003 といったようにゼロ埋めで定義をしている場合。画面からGUIで操作しデータを作成する分には順調にゼロ埋めで連番が付与されるのだが、一括インポートをした際はゼロ埋めが取れてしまう。とても悲しい。
これはちょっとイケてないのだけど、GUIから入力する場合は連番付与処理に data/CRMEntity.php ファイルの setModuleSeqNumber() 関数を通過するのでゼロ埋めの件は問題ないが、インポートする場合は別の連番付与 updateMissingSeqNumber() 関数を通過するのでこのような問題が起きる。せっかく関数作ってあるのだからそっちを呼んでよ…。
つくりを変えるのは大変なのでちゃっちゃっとパッチを当てる方向で対処する。
updateMissingSeqNumber() 関数の while ($recordinfo = $adb->fetch_array($records)) ブロックの中身を setModuleSeqNumber() 関数の同等の場所と同等の内容にしてしまえばOK。
例えば coreBOS の updateMissingSeqNumber() 関数はここがFIXされており参考になると思う → corebos/CRMEntity.php at master · tsolucio/corebos · GitHub
これで、一括インポート時も無事通常処理と同様の連番が付与される。安心である。