Changeset 18100 for branches/comu-ver2/data/class/helper/SC_Helper_DB.php
- Timestamp:
- 2009/06/12 21:47:32 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/comu-ver2/data/class/helper/SC_Helper_DB.php
r18095 r18100 1816 1816 return SC_Utils_Ex::sfGetAddPoint($totalpoint, $use_point, $CONF['point_rate']); 1817 1817 } 1818 1819 /** 1820 * 受注.対応状況の更新 1821 * 1822 * ・必ず呼び出し元でトランザクションブロックを開いておくこと。 1823 * 1824 * @param integer $orderId 注文番号 1825 * @param integer|null $newStatus 対応状況 (null=変更無し) 1826 * @param integer|null $newAddPoint 加算ポイント (null=変更無し) 1827 * @param integer|null $newUsePoint ポイント (null=変更無し) 1828 * @return void 1829 */ 1830 function sfUpdateOrderStatus($orderId, $newStatus = null, $newAddPoint = null, $newUsePoint = null) { 1831 $objQuery = new SC_Query(); 1832 1833 $arrOrderOld = $objQuery->getRow('dtb_order', 'status, add_point, use_point, customer_id', 'order_id = ?', array($orderId)); 1834 1835 // 対応状況 1836 if (is_null($newStatus)) { 1837 $newStatus = $arrOrderOld['status']; 1838 } 1839 1840 if (USE_POINT !== false) { 1841 $addPoint = 0; 1842 1843 // 使用ポイント 1844 if (!is_null($newUsePoint)) { 1845 $addPoint += $arrOrderOld['use_point']; // 変更前のポイントを戻す 1846 $addPoint -= $newUsePoint; // 変更後のポイントを引く 1847 } 1848 1849 // ▼加算ポイント 1850 // 変更前の状態が加算対象の場合、 1851 if (SC_Utils_Ex::sfIsAddPoint($arrOrderOld['status'])) { 1852 $addPoint -= $arrOrderOld['add_point']; 1853 } 1854 1855 // 変更後の状態が加算対象の場合、 1856 if (SC_Utils_Ex::sfIsAddPoint($newStatus)) { 1857 $addPoint += is_null($newAddPoint) ? $arrOrderOld['add_point'] : $newAddPoint; 1858 } 1859 // ▲加算ポイント 1860 1861 if ($addPoint != 0) { 1862 // ▼顧客テーブルの更新 1863 $sqlval = array(); 1864 $where = ''; 1865 $arrVal = array(); 1866 $arrRawSql = array(); 1867 1868 $sqlval['update_date'] = 'Now()'; 1869 $arrRawSql['point'] = 'point + ?'; 1870 $arrVal[] = $addPoint; 1871 $where .= 'customer_id = ?'; 1872 $arrVal[] = $arrOrderOld['customer_id']; 1873 1874 $objQuery->update('dtb_customer', $sqlval, $where, $arrVal, $arrRawSql); 1875 // ▲顧客テーブルの更新 1876 1877 // ポイントをマイナスした場合、 1878 if ($addPoint < 0) { 1879 $sql = 'SELECT point FROM dtb_customer WHERE customer_id = ?'; 1880 $point = $objQuery->getone($sql, array($arrOrderOld['customer_id'])); 1881 // 変更後のポイントがマイナスの場合、 1882 if ($point < 0) { 1883 // ロールバック 1884 $objQuery->rollback(); 1885 // エラー 1886 SC_Utils_Ex::sfDispSiteError(LACK_POINT); 1887 } 1888 } 1889 } 1890 } 1891 1892 // ▼受注テーブルの更新 1893 $sqlval = array(); 1894 if (USE_POINT !== false) { 1895 if (!is_null($newAddPoint)) { 1896 $sqlval['add_point'] = $newAddPoint; 1897 } 1898 if (!is_null($newUsePoint)) { 1899 $sqlval['use_point'] = $newUsePoint; 1900 } 1901 } 1902 // ステータスが発送済みに変更の場合、発送日を更新 1903 if ($arrOrderOld['status'] != ORDER_DELIV && $newStatus == ORDER_DELIV) { 1904 $sqlval['commit_date'] = 'Now()'; 1905 } 1906 $sqlval['status'] = $newStatus; 1907 $sqlval['update_date'] = 'Now()'; 1908 1909 $objQuery->update('dtb_order', $sqlval, 'order_id = ?', array($orderId)); 1910 // ▲受注テーブルの更新 1911 } 1818 1912 } 1819 1913 ?>
Note: See TracChangeset
for help on using the changeset viewer.