Changeset 22792
- Timestamp:
- 2013/05/01 01:04:51 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
r22567 r22792 32 32 * @version $Id$ 33 33 */ 34 class LC_Page_Admin_Order_Edit extends LC_Page_Admin_Order_Ex 34 class LC_Page_Admin_Order_Edit extends LC_Page_Admin_Order_Ex 35 35 { 36 36 … … 311 311 } 312 312 313 /** 314 * デストラクタ. 315 * 316 * @return void 317 */ 318 function destroy() 319 { 320 parent::destroy(); 321 } 322 323 /** 324 * パラメーター情報の初期化を行う. 325 * 326 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 327 * @return void 328 */ 329 function lfInitParam(&$objFormParam) 330 { 331 // 検索条件のパラメーターを初期化 332 parent::lfInitParam($objFormParam); 333 334 // お客様情報 335 $objFormParam->addParam('注文者 お名前(姓)', 'order_name01', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 336 $objFormParam->addParam('注文者 お名前(名)', 'order_name02', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 337 $objFormParam->addParam('注文者 お名前(フリガナ・姓)', 'order_kana01', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 338 $objFormParam->addParam('注文者 お名前(フリガナ・名)', 'order_kana02', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 339 $objFormParam->addParam('メールアドレス', 'order_email', null, 'KVCa', array('NO_SPTAB', 'EMAIL_CHECK', 'EMAIL_CHAR_CHECK')); 340 $objFormParam->addParam('郵便番号1', 'order_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 341 $objFormParam->addParam('郵便番号2', 'order_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 342 $objFormParam->addParam('都道府県', 'order_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 343 $objFormParam->addParam('住所1', 'order_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 344 $objFormParam->addParam('住所2', 'order_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 345 $objFormParam->addParam('電話番号1', 'order_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 346 $objFormParam->addParam('電話番号2', 'order_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 347 $objFormParam->addParam('電話番号3', 'order_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 348 $objFormParam->addParam('FAX番号1', 'order_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 349 $objFormParam->addParam('FAX番号2', 'order_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 350 $objFormParam->addParam('FAX番号3', 'order_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 351 352 // 受注商品情報 353 $objFormParam->addParam('値引き', 'discount', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 354 $objFormParam->addParam('送料', 'deliv_fee', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 355 $objFormParam->addParam('手数料', 'charge', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 356 357 // ポイント機能ON時のみ 358 if (USE_POINT !== false) { 359 $objFormParam->addParam('利用ポイント', 'use_point', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 360 } 361 362 $objFormParam->addParam('配送業者', 'deliv_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 363 $objFormParam->addParam('お支払い方法', 'payment_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 364 $objFormParam->addParam('対応状況', 'status', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 365 $objFormParam->addParam('お支払方法名称', 'payment_method'); 366 367 368 // 受注詳細情報 369 $objFormParam->addParam('商品種別ID', 'product_type_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 370 $objFormParam->addParam('単価', 'price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 371 $objFormParam->addParam('数量', 'quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 372 $objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 373 $objFormParam->addParam('商品規格ID', 'product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 374 $objFormParam->addParam('ポイント付与率', 'point_rate'); 375 $objFormParam->addParam('商品コード', 'product_code'); 376 $objFormParam->addParam('商品名', 'product_name'); 377 $objFormParam->addParam('規格名1', 'classcategory_name1'); 378 $objFormParam->addParam('規格名2', 'classcategory_name2'); 379 $objFormParam->addParam('税率', 'tax_rate'); 380 $objFormParam->addParam('課税規則', 'tax_rule'); 381 $objFormParam->addParam('メモ', 'note', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 382 $objFormParam->addParam('削除用項番', 'delete_no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 383 384 // DB読込用 385 $objFormParam->addParam('小計', 'subtotal'); 386 $objFormParam->addParam('合計', 'total'); 387 $objFormParam->addParam('支払い合計', 'payment_total'); 388 $objFormParam->addParam('加算ポイント', 'add_point'); 389 $objFormParam->addParam('お誕生日ポイント', 'birth_point', null, 'n', array(), 0); 390 $objFormParam->addParam('消費税合計', 'tax'); 391 $objFormParam->addParam('最終保持ポイント', 'total_point'); 392 $objFormParam->addParam('会員ID', 'customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 393 $objFormParam->addParam('会員ID', 'edit_customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 394 $objFormParam->addParam('現在のポイント', 'customer_point'); 395 $objFormParam->addParam('受注前ポイント', 'point'); 396 $objFormParam->addParam('注文番号', 'order_id'); 397 $objFormParam->addParam('受注日', 'create_date'); 398 $objFormParam->addParam('発送日', 'commit_date'); 399 $objFormParam->addParam('備考', 'message'); 400 $objFormParam->addParam('入金日', 'payment_date'); 401 $objFormParam->addParam('端末種別', 'device_type_id'); 402 $objFormParam->addParam('税率', 'order_tax_rate'); 403 $objFormParam->addParam('課税規則', 'order_tax_rule'); 404 405 // 複数情報 406 $objFormParam->addParam('配送数', 'shipping_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 407 $objFormParam->addParam('配送ID', 'shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 0); 408 $objFormParam->addParam('お名前(姓)', 'shipping_name01', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 409 $objFormParam->addParam('お名前(名)', 'shipping_name02', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 410 $objFormParam->addParam('お名前(フリガナ・姓)', 'shipping_kana01', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 411 $objFormParam->addParam('お名前(フリガナ・名)', 'shipping_kana02', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 412 $objFormParam->addParam('郵便番号1', 'shipping_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 413 $objFormParam->addParam('郵便番号2', 'shipping_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 414 $objFormParam->addParam('都道府県', 'shipping_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 415 $objFormParam->addParam('住所1', 'shipping_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 416 $objFormParam->addParam('住所2', 'shipping_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 417 $objFormParam->addParam('電話番号1', 'shipping_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 418 $objFormParam->addParam('電話番号2', 'shipping_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 419 $objFormParam->addParam('電話番号3', 'shipping_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 420 $objFormParam->addParam('FAX番号1', 'shipping_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 421 $objFormParam->addParam('FAX番号2', 'shipping_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 422 $objFormParam->addParam('FAX番号3', 'shipping_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 423 $objFormParam->addParam('お届け時間ID', 'time_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 424 $objFormParam->addParam('お届け日(年)', 'shipping_date_year', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 425 $objFormParam->addParam('お届け日(月)', 'shipping_date_month', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 426 $objFormParam->addParam('お届け日(日)', 'shipping_date_day', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 427 $objFormParam->addParam('お届け日', 'shipping_date', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 428 $objFormParam->addParam('配送商品数量', 'shipping_product_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 429 430 $objFormParam->addParam('商品規格ID', 'shipment_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 431 $objFormParam->addParam('商品コード', 'shipment_product_code'); 432 $objFormParam->addParam('商品名', 'shipment_product_name'); 433 $objFormParam->addParam('規格名1', 'shipment_classcategory_name1'); 434 $objFormParam->addParam('規格名2', 'shipment_classcategory_name2'); 435 $objFormParam->addParam('単価', 'shipment_price', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 436 $objFormParam->addParam('数量', 'shipment_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 437 438 $objFormParam->addParam('商品項番', 'no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 439 $objFormParam->addParam('追加商品規格ID', 'add_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 440 $objFormParam->addParam('修正商品規格ID', 'edit_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 441 $objFormParam->addParam('対象届け先ID', 'select_shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 442 $objFormParam->addParam('アンカーキー', 'anchor_key', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 443 } 444 445 /** 446 * 複数配送用フォームの初期化を行う. 447 * 448 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 449 * @return void 450 */ 451 function lfInitMultipleParam(&$objFormParam) 452 { 453 $objFormParam->addParam('商品規格ID', 'multiple_product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 454 $objFormParam->addParam('商品コード', 'multiple_product_code', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 455 $objFormParam->addParam('商品名', 'multiple_product_name', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 456 $objFormParam->addParam('規格1', 'multiple_classcategory_name1', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 457 $objFormParam->addParam('規格2', 'multiple_classcategory_name2', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 458 $objFormParam->addParam('単価', 'multiple_price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 459 $objFormParam->addParam('数量', 'multiple_quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 460 $objFormParam->addParam('お届け先', 'multiple_shipping_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 461 } 462 463 /** 464 * 複数配送入力フォームで入力された値を SC_FormParam へ設定する. 465 * 466 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 467 * @return void 468 */ 469 function setMultipleItemTo(&$objFormParam) 470 { 471 $arrMultipleKey = array('multiple_shipping_id', 472 'multiple_product_class_id', 473 'multiple_product_name', 474 'multiple_product_code', 475 'multiple_classcategory_name1', 476 'multiple_classcategory_name2', 477 'multiple_price', 478 'multiple_quantity'); 479 $arrMultipleParams = $objFormParam->getSwapArray($arrMultipleKey); 480 481 /* 482 * 複数配送フォームの入力値を shipping_id ごとにマージ 483 * 484 * $arrShipmentItem[お届け先ID][商品規格ID]['shipment_(key)'] = 値 485 */ 486 $arrShipmentItem = array(); 487 foreach ($arrMultipleParams as $arrMultiple) { 488 $shipping_id = $arrMultiple['multiple_shipping_id']; 489 $product_class_id = $arrMultiple['multiple_product_class_id']; 490 foreach ($arrMultiple as $key => $val) { 491 if ($key == 'multiple_quantity') { 492 $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] += $val; 493 } else { 494 $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] = $val; 495 } 496 } 497 } 498 499 /* 500 * フォームのお届け先ごとの配列を生成 501 * 502 * $arrShipmentForm['(key)'][$shipping_id][$item_index] = 値 503 * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 504 */ 505 $arrShipmentForm = array(); 506 $arrProductQuantity = array(); 507 $arrShippingIds = $objFormParam->getValue('shipping_id'); 508 foreach ($arrShippingIds as $shipping_id) { 509 $item_index = 0; 510 foreach ($arrShipmentItem[$shipping_id] as $product_class_id => $shipment_item) { 511 foreach ($shipment_item as $key => $val) { 512 $arrShipmentForm[$key][$shipping_id][$item_index] = $val; 513 } 514 // 受注商品の数量を設定 515 $arrQuantity[$product_class_id] += $shipment_item['shipment_quantity']; 516 $item_index++; 517 } 518 // お届け先ごとの配送商品数量を設定 519 $arrProductQuantity[$shipping_id] = count($arrShipmentItem[$shipping_id]); 520 } 521 522 $objFormParam->setParam($arrShipmentForm); 523 $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 524 525 // 受注商品の数量を変更 526 $arrDest = array(); 527 foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { 528 $arrDest['quantity'][$n] = 0; 529 } 530 foreach ($arrQuantity as $product_class_id => $quantity) { 313 /** 314 * デストラクタ. 315 * 316 * @return void 317 */ 318 function destroy() 319 { 320 parent::destroy(); 321 } 322 323 /** 324 * パラメーター情報の初期化を行う. 325 * 326 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 327 * @return void 328 */ 329 function lfInitParam(&$objFormParam) 330 { 331 // 検索条件のパラメーターを初期化 332 parent::lfInitParam($objFormParam); 333 334 // お客様情報 335 $objFormParam->addParam('注文者 お名前(姓)', 'order_name01', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 336 $objFormParam->addParam('注文者 お名前(名)', 'order_name02', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 337 $objFormParam->addParam('注文者 お名前(フリガナ・姓)', 'order_kana01', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 338 $objFormParam->addParam('注文者 お名前(フリガナ・名)', 'order_kana02', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 339 $objFormParam->addParam('メールアドレス', 'order_email', null, 'KVCa', array('NO_SPTAB', 'EMAIL_CHECK', 'EMAIL_CHAR_CHECK')); 340 $objFormParam->addParam('郵便番号1', 'order_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 341 $objFormParam->addParam('郵便番号2', 'order_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 342 $objFormParam->addParam('都道府県', 'order_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 343 $objFormParam->addParam('住所1', 'order_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 344 $objFormParam->addParam('住所2', 'order_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 345 $objFormParam->addParam('電話番号1', 'order_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 346 $objFormParam->addParam('電話番号2', 'order_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 347 $objFormParam->addParam('電話番号3', 'order_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 348 $objFormParam->addParam('FAX番号1', 'order_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 349 $objFormParam->addParam('FAX番号2', 'order_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 350 $objFormParam->addParam('FAX番号3', 'order_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 351 352 // 受注商品情報 353 $objFormParam->addParam('値引き', 'discount', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 354 $objFormParam->addParam('送料', 'deliv_fee', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 355 $objFormParam->addParam('手数料', 'charge', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 356 357 // ポイント機能ON時のみ 358 if (USE_POINT !== false) { 359 $objFormParam->addParam('利用ポイント', 'use_point', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 360 } 361 362 $objFormParam->addParam('配送業者', 'deliv_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 363 $objFormParam->addParam('お支払い方法', 'payment_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 364 $objFormParam->addParam('対応状況', 'status', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 365 $objFormParam->addParam('お支払方法名称', 'payment_method'); 366 367 368 // 受注詳細情報 369 $objFormParam->addParam('商品種別ID', 'product_type_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 370 $objFormParam->addParam('単価', 'price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 371 $objFormParam->addParam('数量', 'quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 372 $objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 373 $objFormParam->addParam('商品規格ID', 'product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 374 $objFormParam->addParam('ポイント付与率', 'point_rate'); 375 $objFormParam->addParam('商品コード', 'product_code'); 376 $objFormParam->addParam('商品名', 'product_name'); 377 $objFormParam->addParam('規格名1', 'classcategory_name1'); 378 $objFormParam->addParam('規格名2', 'classcategory_name2'); 379 $objFormParam->addParam('税率', 'tax_rate'); 380 $objFormParam->addParam('課税規則', 'tax_rule'); 381 $objFormParam->addParam('メモ', 'note', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 382 $objFormParam->addParam('削除用項番', 'delete_no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 383 384 // DB読込用 385 $objFormParam->addParam('小計', 'subtotal'); 386 $objFormParam->addParam('合計', 'total'); 387 $objFormParam->addParam('支払い合計', 'payment_total'); 388 $objFormParam->addParam('加算ポイント', 'add_point'); 389 $objFormParam->addParam('お誕生日ポイント', 'birth_point', null, 'n', array(), 0); 390 $objFormParam->addParam('消費税合計', 'tax'); 391 $objFormParam->addParam('最終保持ポイント', 'total_point'); 392 $objFormParam->addParam('会員ID', 'customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 393 $objFormParam->addParam('会員ID', 'edit_customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 394 $objFormParam->addParam('現在のポイント', 'customer_point'); 395 $objFormParam->addParam('受注前ポイント', 'point'); 396 $objFormParam->addParam('注文番号', 'order_id'); 397 $objFormParam->addParam('受注日', 'create_date'); 398 $objFormParam->addParam('発送日', 'commit_date'); 399 $objFormParam->addParam('備考', 'message'); 400 $objFormParam->addParam('入金日', 'payment_date'); 401 $objFormParam->addParam('端末種別', 'device_type_id'); 402 $objFormParam->addParam('税率', 'order_tax_rate'); 403 $objFormParam->addParam('課税規則', 'order_tax_rule'); 404 405 // 複数情報 406 $objFormParam->addParam('配送数', 'shipping_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 407 $objFormParam->addParam('配送ID', 'shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 0); 408 $objFormParam->addParam('お名前(姓)', 'shipping_name01', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 409 $objFormParam->addParam('お名前(名)', 'shipping_name02', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 410 $objFormParam->addParam('お名前(フリガナ・姓)', 'shipping_kana01', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 411 $objFormParam->addParam('お名前(フリガナ・名)', 'shipping_kana02', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 412 $objFormParam->addParam('郵便番号1', 'shipping_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 413 $objFormParam->addParam('郵便番号2', 'shipping_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 414 $objFormParam->addParam('都道府県', 'shipping_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 415 $objFormParam->addParam('住所1', 'shipping_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 416 $objFormParam->addParam('住所2', 'shipping_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 417 $objFormParam->addParam('電話番号1', 'shipping_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 418 $objFormParam->addParam('電話番号2', 'shipping_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 419 $objFormParam->addParam('電話番号3', 'shipping_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 420 $objFormParam->addParam('FAX番号1', 'shipping_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 421 $objFormParam->addParam('FAX番号2', 'shipping_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 422 $objFormParam->addParam('FAX番号3', 'shipping_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 423 $objFormParam->addParam('お届け時間ID', 'time_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 424 $objFormParam->addParam('お届け日(年)', 'shipping_date_year', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 425 $objFormParam->addParam('お届け日(月)', 'shipping_date_month', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 426 $objFormParam->addParam('お届け日(日)', 'shipping_date_day', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 427 $objFormParam->addParam('お届け日', 'shipping_date', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 428 $objFormParam->addParam('配送商品数量', 'shipping_product_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 429 430 $objFormParam->addParam('商品規格ID', 'shipment_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 431 $objFormParam->addParam('商品コード', 'shipment_product_code'); 432 $objFormParam->addParam('商品名', 'shipment_product_name'); 433 $objFormParam->addParam('規格名1', 'shipment_classcategory_name1'); 434 $objFormParam->addParam('規格名2', 'shipment_classcategory_name2'); 435 $objFormParam->addParam('単価', 'shipment_price', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 436 $objFormParam->addParam('数量', 'shipment_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 437 438 $objFormParam->addParam('商品項番', 'no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 439 $objFormParam->addParam('追加商品規格ID', 'add_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 440 $objFormParam->addParam('修正商品規格ID', 'edit_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 441 $objFormParam->addParam('対象届け先ID', 'select_shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 442 $objFormParam->addParam('アンカーキー', 'anchor_key', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 443 } 444 445 /** 446 * 複数配送用フォームの初期化を行う. 447 * 448 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 449 * @return void 450 */ 451 function lfInitMultipleParam(&$objFormParam) 452 { 453 $objFormParam->addParam('商品規格ID', 'multiple_product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 454 $objFormParam->addParam('商品コード', 'multiple_product_code', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 455 $objFormParam->addParam('商品名', 'multiple_product_name', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 456 $objFormParam->addParam('規格1', 'multiple_classcategory_name1', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 457 $objFormParam->addParam('規格2', 'multiple_classcategory_name2', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 458 $objFormParam->addParam('単価', 'multiple_price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 459 $objFormParam->addParam('数量', 'multiple_quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 460 $objFormParam->addParam('お届け先', 'multiple_shipping_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 461 } 462 463 /** 464 * 複数配送入力フォームで入力された値を SC_FormParam へ設定する. 465 * 466 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 467 * @return void 468 */ 469 function setMultipleItemTo(&$objFormParam) 470 { 471 $arrMultipleKey = array('multiple_shipping_id', 472 'multiple_product_class_id', 473 'multiple_product_name', 474 'multiple_product_code', 475 'multiple_classcategory_name1', 476 'multiple_classcategory_name2', 477 'multiple_price', 478 'multiple_quantity'); 479 $arrMultipleParams = $objFormParam->getSwapArray($arrMultipleKey); 480 481 /* 482 * 複数配送フォームの入力値を shipping_id ごとにマージ 483 * 484 * $arrShipmentItem[お届け先ID][商品規格ID]['shipment_(key)'] = 値 485 */ 486 $arrShipmentItem = array(); 487 foreach ($arrMultipleParams as $arrMultiple) { 488 $shipping_id = $arrMultiple['multiple_shipping_id']; 489 $product_class_id = $arrMultiple['multiple_product_class_id']; 490 foreach ($arrMultiple as $key => $val) { 491 if ($key == 'multiple_quantity') { 492 $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] += $val; 493 } else { 494 $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] = $val; 495 } 496 } 497 } 498 499 /* 500 * フォームのお届け先ごとの配列を生成 501 * 502 * $arrShipmentForm['(key)'][$shipping_id][$item_index] = 値 503 * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 504 */ 505 $arrShipmentForm = array(); 506 $arrProductQuantity = array(); 507 $arrShippingIds = $objFormParam->getValue('shipping_id'); 508 foreach ($arrShippingIds as $shipping_id) { 509 $item_index = 0; 510 foreach ($arrShipmentItem[$shipping_id] as $product_class_id => $shipment_item) { 511 foreach ($shipment_item as $key => $val) { 512 $arrShipmentForm[$key][$shipping_id][$item_index] = $val; 513 } 514 // 受注商品の数量を設定 515 $arrQuantity[$product_class_id] += $shipment_item['shipment_quantity']; 516 $item_index++; 517 } 518 // お届け先ごとの配送商品数量を設定 519 $arrProductQuantity[$shipping_id] = count($arrShipmentItem[$shipping_id]); 520 } 521 522 $objFormParam->setParam($arrShipmentForm); 523 $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 524 525 // 受注商品の数量を変更 526 $arrDest = array(); 531 527 foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { 532 if ($product_class_id == $order_product_class_id) { 533 $arrDest['quantity'][$n] = $quantity; 534 } 535 } 536 } 537 $objFormParam->setParam($arrDest); 538 } 539 540 /** 541 * 受注データを取得して, SC_FormParam へ設定する. 542 * 543 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 544 * @param integer $order_id 取得元の受注ID 545 * @return void 546 */ 547 function setOrderToFormParam(&$objFormParam, $order_id) 548 { 549 $objPurchase = new SC_Helper_Purchase_Ex(); 550 551 // 受注詳細を設定 552 $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false); 553 $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrOrderDetail)); 554 555 $arrShippingsTmp = $objPurchase->getShippings($order_id); 556 $arrShippings = array(); 557 foreach ($arrShippingsTmp as $row) { 558 // お届け日の処理 559 if (!SC_Utils_Ex::isBlank($row['shipping_date'])) { 560 $ts = strtotime($row['shipping_date']); 561 $row['shipping_date_year'] = date('Y', $ts); 562 $row['shipping_date_month'] = date('n', $ts); 563 $row['shipping_date_day'] = date('j', $ts); 564 } 565 $arrShippings[$row['shipping_id']] = $row; 566 } 567 $objFormParam->setValue('shipping_quantity', count($arrShippings)); 568 $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrShippings)); 569 570 /* 571 * 配送商品を設定 572 * 573 * $arrShipmentItem['shipment_(key)'][$shipping_id][$item_index] = 値 574 * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 575 */ 576 $arrProductQuantity = array(); 577 $arrShipmentItem = array(); 578 foreach ($arrShippings as $shipping_id => $arrShipping) { 579 $arrProductQuantity[$shipping_id] = count($arrShipping['shipment_item']); 580 foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) { 581 foreach ($arrItem as $item_key => $item_val) { 582 $arrShipmentItem['shipment_' . $item_key][$shipping_id][$item_index] = $item_val; 583 } 584 } 585 } 586 $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 587 $objFormParam->setParam($arrShipmentItem); 588 589 /* 590 * 受注情報を設定 591 * $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値 592 * が渡ってくるため, $arrOrder で上書きする. 593 */ 594 $arrOrder = $objPurchase->getOrder($order_id); 595 $objFormParam->setParam($arrOrder); 596 597 // ポイントを設定 598 list($db_point, $rollback_point) = SC_Helper_DB_Ex::sfGetRollbackPoint( 599 $order_id, $arrOrder['use_point'], $arrOrder['add_point'], $arrOrder['status'] 600 ); 601 $objFormParam->setValue('total_point', $db_point); 602 $objFormParam->setValue('point', $rollback_point); 603 604 if (!SC_Utils_Ex::isBlank($objFormParam->getValue('customer_id'))) { 605 $arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($objFormParam->getValue('customer_id')); 606 $objFormParam->setValue('customer_point', $arrCustomer['point']); 607 } 608 } 609 610 /** 611 * 入力内容のチェックを行う. 612 * 613 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 614 * @return array エラーメッセージの配列 615 */ 616 function lfCheckError(&$objFormParam) 617 { 618 $objProduct = new SC_Product_Ex(); 619 620 $arrErr = $objFormParam->checkError(); 621 622 if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { 528 $arrDest['quantity'][$n] = 0; 529 } 530 foreach ($arrQuantity as $product_class_id => $quantity) { 531 foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { 532 if ($product_class_id == $order_product_class_id) { 533 $arrDest['quantity'][$n] = $quantity; 534 } 535 } 536 } 537 $objFormParam->setParam($arrDest); 538 } 539 540 /** 541 * 受注データを取得して, SC_FormParam へ設定する. 542 * 543 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 544 * @param integer $order_id 取得元の受注ID 545 * @return void 546 */ 547 function setOrderToFormParam(&$objFormParam, $order_id) 548 { 549 $objPurchase = new SC_Helper_Purchase_Ex(); 550 551 // 受注詳細を設定 552 $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false); 553 $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrOrderDetail)); 554 555 $arrShippingsTmp = $objPurchase->getShippings($order_id); 556 $arrShippings = array(); 557 foreach ($arrShippingsTmp as $row) { 558 // お届け日の処理 559 if (!SC_Utils_Ex::isBlank($row['shipping_date'])) { 560 $ts = strtotime($row['shipping_date']); 561 $row['shipping_date_year'] = date('Y', $ts); 562 $row['shipping_date_month'] = date('n', $ts); 563 $row['shipping_date_day'] = date('j', $ts); 564 } 565 $arrShippings[$row['shipping_id']] = $row; 566 } 567 $objFormParam->setValue('shipping_quantity', count($arrShippings)); 568 $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrShippings)); 569 570 /* 571 * 配送商品を設定 572 * 573 * $arrShipmentItem['shipment_(key)'][$shipping_id][$item_index] = 値 574 * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 575 */ 576 $arrProductQuantity = array(); 577 $arrShipmentItem = array(); 578 foreach ($arrShippings as $shipping_id => $arrShipping) { 579 $arrProductQuantity[$shipping_id] = count($arrShipping['shipment_item']); 580 foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) { 581 foreach ($arrItem as $item_key => $item_val) { 582 $arrShipmentItem['shipment_' . $item_key][$shipping_id][$item_index] = $item_val; 583 } 584 } 585 } 586 $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 587 $objFormParam->setParam($arrShipmentItem); 588 589 /* 590 * 受注情報を設定 591 * $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値 592 * が渡ってくるため, $arrOrder で上書きする. 593 */ 594 $arrOrder = $objPurchase->getOrder($order_id); 595 $objFormParam->setParam($arrOrder); 596 597 // ポイントを設定 598 list($db_point, $rollback_point) = SC_Helper_DB_Ex::sfGetRollbackPoint( 599 $order_id, $arrOrder['use_point'], $arrOrder['add_point'], $arrOrder['status'] 600 ); 601 $objFormParam->setValue('total_point', $db_point); 602 $objFormParam->setValue('point', $rollback_point); 603 604 if (!SC_Utils_Ex::isBlank($objFormParam->getValue('customer_id'))) { 605 $arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($objFormParam->getValue('customer_id')); 606 $objFormParam->setValue('customer_point', $arrCustomer['point']); 607 } 608 } 609 610 /** 611 * 入力内容のチェックを行う. 612 * 613 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 614 * @return array エラーメッセージの配列 615 */ 616 function lfCheckError(&$objFormParam) 617 { 618 $objProduct = new SC_Product_Ex(); 619 620 $arrErr = $objFormParam->checkError(); 621 622 if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { 623 return $arrErr; 624 } 625 626 $arrValues = $objFormParam->getHashArray(); 627 628 // 商品の種類数 629 $max = count($arrValues['quantity']); 630 $subtotal = 0; 631 $totalpoint = 0; 632 $totaltax = 0; 633 for ($i = 0; $i < $max; $i++) { 634 // 小計の計算 635 $subtotal += SC_Helper_DB_Ex::sfCalcIncTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i]; 636 // 小計の計算 637 $totaltax += SC_Utils_Ex::sfTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i]; 638 // 加算ポイントの計算 639 $totalpoint += SC_Utils_Ex::sfPrePoint($arrValues['price'][$i], $arrValues['point_rate'][$i]) * $arrValues['quantity'][$i]; 640 641 // 在庫数のチェック 642 $arrProduct = $objProduct->getDetailAndProductsClass($arrValues['product_class_id'][$i]); 643 644 // 編集前の値と比較するため受注詳細を取得 645 $objPurchase = new SC_Helper_Purchase_Ex(); 646 $arrOrderDetail = SC_Utils_Ex::sfSwapArray($objPurchase->getOrderDetail($objFormParam->getValue('order_id'), false)); 647 648 if ($arrProduct['stock_unlimited'] != '1' 649 && $arrProduct['stock'] < $arrValues['quantity'][$i] - $arrOrderDetail['quantity'][$i]) { 650 $class_name1 = $arrValues['classcategory_name1'][$i]; 651 $class_name1 = SC_Utils_Ex::isBlank($class_name1) ? 'なし' : $class_name1; 652 $class_name2 = $arrValues['classcategory_name2'][$i]; 653 $class_name2 = SC_Utils_Ex::isBlank($class_name2) ? 'なし' : $class_name2; 654 $arrErr['quantity'][$i] .= $arrValues['product_name'][$i] 655 . '/(' . $class_name1 . ')/(' . $class_name2 . ') の在庫が不足しています。 設定できる数量は「' 656 . ($arrOrderDetail['quantity'][$i] + $arrProduct['stock']) . '」までです。<br />'; 657 } 658 } 659 660 // 消費税 661 $arrValues['tax'] = $totaltax; 662 // 小計 663 $arrValues['subtotal'] = $subtotal; 664 // 合計 665 $arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge']; 666 // お支払い合計 667 $arrValues['payment_total'] = $arrValues['total'] - ($arrValues['use_point'] * POINT_VALUE); 668 669 // 加算ポイント 670 $arrValues['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($totalpoint, $arrValues['use_point']) + $arrValues['birth_point']; 671 672 // 最終保持ポイント 673 $arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point']; 674 675 if ($arrValues['total'] < 0) { 676 $arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />'; 677 } 678 679 if ($arrValues['payment_total'] < 0) { 680 $arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />'; 681 } 682 683 if ($arrValues['total_point'] < 0) { 684 $arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />'; 685 } 686 687 $objFormParam->setParam($arrValues); 623 688 return $arrErr; 624 689 } 625 626 $arrValues = $objFormParam->getHashArray();627 628 // 商品の種類数629 $max = count($arrValues['quantity']);630 $subtotal = 0;631 $totalpoint = 0;632 $totaltax = 0;633 for ($i = 0; $i < $max; $i++) {634 // 小計の計算635 $subtotal += SC_Helper_DB_Ex::sfCalcIncTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i];636 // 小計の計算637 $totaltax += SC_Utils_Ex::sfTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i];638 // 加算ポイントの計算639 $totalpoint += SC_Utils_Ex::sfPrePoint($arrValues['price'][$i], $arrValues['point_rate'][$i]) * $arrValues['quantity'][$i];640 641 // 在庫数のチェック642 $arrProduct = $objProduct->getDetailAndProductsClass($arrValues['product_class_id'][$i]);643 644 // 編集前の値と比較するため受注詳細を取得645 $objPurchase = new SC_Helper_Purchase_Ex();646 $arrOrderDetail = SC_Utils_Ex::sfSwapArray($objPurchase->getOrderDetail($objFormParam->getValue('order_id'), false));647 648 if ($arrProduct['stock_unlimited'] != '1'649 && $arrProduct['stock'] < $arrValues['quantity'][$i] - $arrOrderDetail['quantity'][$i]) {650 $class_name1 = $arrValues['classcategory_name1'][$i];651 $class_name1 = SC_Utils_Ex::isBlank($class_name1) ? 'なし' : $class_name1;652 $class_name2 = $arrValues['classcategory_name2'][$i];653 $class_name2 = SC_Utils_Ex::isBlank($class_name2) ? 'なし' : $class_name2;654 $arrErr['quantity'][$i] .= $arrValues['product_name'][$i]655 . '/(' . $class_name1 . ')/(' . $class_name2 . ') の在庫が不足しています。 設定できる数量は「'656 . ($arrOrderDetail['quantity'][$i] + $arrProduct['stock']) . '」までです。<br />';657 }658 }659 660 // 消費税661 $arrValues['tax'] = $totaltax;662 // 小計663 $arrValues['subtotal'] = $subtotal;664 // 合計665 $arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge'];666 // お支払い合計667 $arrValues['payment_total'] = $arrValues['total'] - ($arrValues['use_point'] * POINT_VALUE);668 669 // 加算ポイント670 $arrValues['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($totalpoint, $arrValues['use_point']) + $arrValues['birth_point'];671 672 // 最終保持ポイント673 $arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point'];674 675 if ($arrValues['total'] < 0) {676 $arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />';677 }678 679 if ($arrValues['payment_total'] < 0) {680 $arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />';681 }682 683 if ($arrValues['total_point'] < 0) {684 $arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />';685 }686 687 $objFormParam->setParam($arrValues);688 return $arrErr;689 }690 690 691 691 /** … … 1036 1036 1037 1037 /** 1038 * 複数配送のパラメータを取り出す 1038 * 複数配送のパラメータを取り出す 1039 1039 * 1040 1040 * @param SC_FormParam $objFormParam SC_FormParam インスタンス
Note: See TracChangeset
for help on using the changeset viewer.