コード例 #1
0
 /**
  * 入力された項目のチェックを行います。
  */
 public function Anken_PriceReserveEdit_checkInputItems(&$anken, &$o, $old = null)
 {
     $db =& $this->_core->getDB();
     // 案件ID
     $ankenId = $anken['anken_id'];
     // キャンペーンコード
     $code = $anken['campaign_code'];
     // 単価タイプ取得
     $priceTypeCd = $anken['price_type_cd'];
     // ID別売上・原価設定
     $useOptionPrice = $anken['use_option_price'];
     // エラーメッセージ
     $errorMessage = array();
     //----------------------------------------------
     // check
     //----------------------------------------------
     $mediaId = $o->getField('media_id')->getValue();
     $reserveDate = $o->getField('reserve_date')->getValue();
     $reserveHour = $o->getField('reserve_hour')->getValue();
     // 更新の場合は旧メディアIDと変更がある場合のみ重複チェックを行う
     if (is_null($old) == false) {
         $oldMediaId = $old->getField('media_id')->getValue();
     }
     // 選択されたメディアが提携されているかチェック
     if (is_null($old) == true || is_null($old) == false && $mediaId != $oldMediaId) {
         $countTeikei = $this->Anken_PriceReserveEdit_getTeikeiMedieCount($code, $mediaId);
         if ($countTeikei == 0) {
             $errorMessage[] = '選択されているメディアは提携メディア登録されていません。';
         }
     }
     // 予約日時のチェック
     if (time() > strtotime($reserveDate . " " . $reserveHour . ":00:00")) {
         $errorMessage[] = '予約日時が過去の日付です。';
     }
     // 予約済みかどうかチェック
     $countReserve = $this->Anken_PriceReserveEdit_getPriceReserveCount($ankenId, $mediaId, $reserveDate, $reserveHour);
     if (is_null($old) == true && $countReserve > 0) {
         $errorMessage[] = '選択されているメディア、予約日時は既に登録されています。';
     }
     //----------------------------------------------
     // 入力確認
     //----------------------------------------------
     $check =& $o->getChecker();
     $check->checkAll();
     if ($check->getErrorCount() > 0) {
         $errorMessage = array_merge($errorMessage, $check->getErrorMessage());
     }
     // 定率案件の場合、小数点をチェック
     if ($priceTypeCd == "2") {
         $check =& $o->getCheckerForRateAnken();
         $check->checkAll();
         if ($check->getErrorCount() > 0) {
             $errorMessage = array_merge($errorMessage, $check->getErrorMessage());
         }
     } else {
         if ($useOptionPrice == "1") {
             // ID別売上・原価設定(カスタム金額)の場合は複数チェックを行う
             $checker = new DataChecker();
             $count = 0;
             foreach ($o->getFields() as $field) {
                 $key = $field->getName();
                 if (ereg("^price([0-9]+)\$", $key, $match) == true) {
                     $valueId = $match[1];
                     $msg = "金額{$count}の売上は10桁までの数字です。";
                     $item = new CheckerItemLength($o->getField("price{$valueId}"), 1, 10, $msg);
                     $checker->addItem($item);
                     $msg = "金額{$count}の原価は10桁までの数字です。";
                     $item = new CheckerItemLength($o->getField("oroshi{$valueId}"), 1, 10, $msg);
                     $checker->addItem($item);
                     $count++;
                 }
             }
             $checker->checkAll();
             if ($checker->getErrorCount() > 0) {
                 $errorMessage = array_merge($errorMessage, $checker->getErrorMessage());
             }
             // オプション値の数が提携メディアの単価数が一致しない場合はエラー
             $price = new DataSeikaOptionPrice_v3();
             $price->getField('anken_id')->setValue($ankenId);
             $price->getField('media_id')->setValue($mediaId);
             $price->getField('option_id')->setValue("1");
             $sql = $price->getSelectSQL_Bind_ChangedField();
             $param =& $price->getChangedFieldValues();
             $price =& $db->query($sql, $param);
             if ($count != count($price)) {
                 $msg = "メディア[{$mediaId}]に登録されている金額項目数が一致しません。提携メディア画面で金額を登録して下さい。";
                 $errorMessage = array_merge($errorMessage, array($msg));
             }
         } else {
             // 定額案件
             $check =& $o->getCheckerTeigaku();
             $check->checkAll();
             if ($check->getErrorCount() > 0) {
                 $errorMessage = array_merge($errorMessage, $check->getErrorMessage());
             }
         }
     }
     return $errorMessage;
 }