久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Drupal:計(jì)算折舊和評(píng)價(jià)

來(lái)自站長(zhǎng)百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

這里有不少被用來(lái)計(jì)算直線折舊(straight-line depreciation)和給定節(jié)點(diǎn)當(dāng)前估算價(jià)格的代碼片段。

用戶輸入CCK字段(user input CCK fields)為2個(gè)日期(需要日期模塊(date module))和2個(gè)價(jià)格: 1. purchase_date (iso日期格式) 2. expire_date (iso日期格式) 3. purchase_value (小數(shù)格式) 4. expire_value (小數(shù)格式) - 當(dāng)物品達(dá)到使用壽命時(shí)這是它的 'scrap value(殘余價(jià)格)' 。

第一個(gè)函數(shù)計(jì)算折舊的年比率(annual rate of depreciation):

<?php
if (!$node->nid) node_save($node); 
$start_date = date_make_date($node->field_purchase_date[0]['value']);
$start = $start_date->db->parts;
$end_date = date_make_date($node->field_expire_date[0]['value']);
$end = $end_date->db->parts;

$start_decimal = $start['year'] + ($start['mon'] / 12); // 此給出年折舊
$end_decimal = $end['year'] + ($end['mon'] / 12);
// $start_decimal = ($start['year'] * 12) + $start['mon']; // 此給出月折舊
// $end_decimal = ($end['year'] * 12) + $end['mon'];

$useful_life = $end_decimal - $start_decimal;

$start_value = ($node->field_purchase_value[0]['value']);
$end_value = ($node->field_expire_value[0]['value']);
$useful_value = ($start_value - $end_value);

$node_field[0]['value'] = ($useful_value / $useful_life);
?>

結(jié)果應(yīng)以浮點(diǎn)類型被保存在數(shù)據(jù)庫(kù)中,數(shù)據(jù)長(zhǎng)度為10,2 而且允許 NULL價(jià)格。它僅當(dāng)可編輯節(jié)點(diǎn)字段(node-editable field)改變時(shí)才會(huì)更新(節(jié)點(diǎn)就被重新提交了)。

第二個(gè)函數(shù)是第一個(gè)函數(shù)的衍生(但不依賴第一個(gè)函數(shù))。它根據(jù)相同的線狀折舊計(jì)算(linear depreciation calculation)來(lái)計(jì)算當(dāng)前數(shù)價(jià)格(current value)。

<?php
if (!$node->nid) node_save($node); 

// 讀取日期并設(shè)置為小數(shù)格式
$today = time(); // 讀取當(dāng)前時(shí)間,我們可以代之使用$node->updated... 見(jiàn)后文的注解
$start_date = date_make_date($node->field_purchase_date[0]['value']);
$start = $start_date->db->parts;
$end_date = date_make_date($node->field_expire_date[0]['value']);
$end = $end_date->db->parts;
$today_decimal = ($today / 31556952) + 1970.083; // 將unix時(shí)間轉(zhuǎn)換為小數(shù)形式(很粗略,但是用作估算還是不錯(cuò)的 ;)
$start_decimal = $start['year'] + ($start['mon'] / 12); // 將iso格式轉(zhuǎn)換為小數(shù)形式
$end_decimal = $end['year'] + ($end['mon'] / 12);

$useful_life = $end_decimal - $start_decimal;
$used_life = $today_decimal - $start_decimal;

// 讀取購(gòu)買價(jià)格和殘余價(jià)格并計(jì)算出折舊價(jià)格
$start_value = ($node->field_purchase_value[0]['value']);
$end_value = ($node->field_expire_value[0]['value']);
$useful_value = ($start_value - $end_value);

// 計(jì)算經(jīng)估算的當(dāng)前價(jià)格并四舍五入
$est_value = round(($useful_value / $useful_life) * $used_life); 

// 確定估算價(jià)格永不能低于殘余價(jià)格.
if ($today_decimal > $end_decimal) { 
$node_field[0]['value'] = ($end_value . ' (expired)');
}
else {
$node_field[0]['value'] = ($est_value . ' (estimated)');
}

?>

如果這被保存在了數(shù)據(jù)庫(kù)中,它僅當(dāng)節(jié)點(diǎn)從節(jié)點(diǎn)編輯表中提交時(shí)才會(huì)更新(即根據(jù)當(dāng)前日期重新進(jìn)行計(jì)算)--僅當(dāng)節(jié)點(diǎn)(重新)提交時(shí)。我正探尋讓當(dāng)前價(jià)格可以在Views中被重新計(jì)算。