コード例 #1
0
 public function setPmReleaseDate($dueDate, $pmRow, $pmAssetRow, $setLastClosed = false)
 {
     $schedBo = new CalemPmScheduleBo($pmRow['release_schedule']);
     $nextDueDate = $schedBo->getNextDueDate($dueDate);
     if (!$nextDueDate) {
         $nextDueDate = $dueDate;
     }
     //In case there's no schedule planned
     $pmAssetDbo = CalemFactory::getDbo('pm_asset');
     $pmAssetRow = $pmAssetDbo->fetchById($pmAssetRow['id']);
     $pmAssetDbo->setChangeBulk(array('last_released' => CalemText::getServerDate($dueDate), 'next_due_date' => CalemText::getServerDate($nextDueDate), 'release_count' => $pmAssetRow['release_count'] + 1));
     $pmAssetDbo->setIdForUpdate($pmAssetRow['id']);
     $pmAssetDbo->update();
     //Going through meters if any
     $pmMeterDbo = CalemFactory::getDbo("pm_meter");
     try {
         $pmMeterRows = $pmMeterDbo->fetchBySqlParam('select * from pm_meter where pm_asset_id=?', $pmAssetRow['id']);
         $assetMeterDbo = CalemFactory::getDbo('asset_meter');
         foreach ($pmMeterRows as $pmMeterRow) {
             if ($pmMeterRow['release_by_meter']) {
                 try {
                     $assetMeterRow = $assetMeterDbo->fetchById($pmMeterRow['meter_id']);
                     $pmMeterDbo->setChangeBulk(array('reading_released' => $assetMeterRow['reading'], 'rollover_count' => $assetMeterRow['rollover_count']));
                     $pmMeterDbo->setIdForUpdate($pmMeterRow['id']);
                     $pmMeterDbo->update();
                 } catch (CalemDboDataNotFoundException $ex) {
                 }
             }
         }
     } catch (CalemDboDataNotFoundException $ex) {
     }
 }