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) {
     }
 }
示例#2
0
 public function addWogenEntry()
 {
     $woGenDbo = CalemFactory::getDbo('wo_generation');
     $row = array('status_id' => 'wgn_started', 'to_date' => CalemText::getServerDate($this->endDate));
     $woGenDbo->setChangeBulk($row);
     $this->wogenEntryId = $woGenDbo->insert();
     return $this->wogenEntryId;
     //for test use
 }
示例#3
0
 public function onDataUpdated($baseTable, $baseCurrent, $baseUpdate, $customTable, $customCurrent, $customUpdate)
 {
     //Must have a status change
     if (isset($baseUpdate['status_id'])) {
         //Managing status changes
         if ($baseUpdate['status_id'] == 'wos_closed') {
             if ($baseCurrent['pm_id']) {
                 //Now update PM to set the date
                 $pmDbo = CalemFactory::getDbo('pm_asset');
                 $pmDbo->updateBySqlParam('update pm_asset set last_closed=? where pm_id=? and asset_id=?', array(CalemText::getServerDate(), $baseCurrent['pm_id'], $baseCurrent['asset_id']));
             }
             //Clear reserved
             $reserveBo = new CalemWoReservedBo();
             $reserveBo->removeReservedByWo($baseCurrent['id']);
         }
     }
     //Other listeners
     $this->notifyDataUpdated($baseTable, $baseCurrent, $baseUpdate, $customTable, $customCurrent, $customUpdate);
 }
 public function unserializeOneDay($startDate, $startTime, $xid, $counts, $series, $graph)
 {
     $data = $counts ? unserialize($counts) : array();
     $series .= '<value xid="' . $xid . '">' . $startDate . '</value>' . "\n";
     foreach ($graph as $key => $val) {
         $graph[$key] .= '<value xid="' . $xid . '">' . ($data[$key] ? $data[$key] : 0) . '</value>' . "\n";
     }
     $xid++;
     $startTime = strtotime("+1 day", $startTime);
     $startDate = CalemText::getServerDate($startTime);
     return array($series, $graph, $startDate, $startTime, $xid);
 }
示例#5
0
 /**
  * When updating a PO
  * -- fill-in vendor if changed
  * -- fill-in buyer if changed
  */
 public function beforeUpdate($baseTable, $baseCurrent, $baseUpdate)
 {
     //vendor
     if (isset($baseUpdate['vendor_id'])) {
         $baseUpdate = $this->fillInVendor($baseUpdate['vendor_id'], $baseUpdate);
     }
     //buyer
     if (isset($baseUpdate['buyer_id'])) {
         $baseUpdate = $this->fillInBuyer($baseUpdate['buyer_id'], $baseUpdate);
     }
     /**
      * Status change handling
      * 1) change a PO to voided, remove the REQ from the PO
      * 2) change a PO from voided to another status, remove all the PO items - have to start over.
      * 3) set up po_date if status is changed to 'approved' and po_date is not set
      */
     if (isset($baseUpdate['status_id'])) {
         if ($baseUpdate['status_id'] == 'po_status_voided') {
             //Changing to voided.
             $this->removeAllReqFromPo($baseCurrent['id']);
         } else {
             if ($baseCurrent['status_id'] == 'po_status_voided') {
                 //Coming out of voided.
                 $this->resetPoItems($baseCurrent['id']);
                 //Reset cost info
                 $baseUpdate['po_item_total'] = 0;
                 $baseUpdate['tax_charge'] = 0;
                 $baseUpdate['total_charge'] = 0;
             }
         }
         //Checking for po date
         if ($baseUpdate['status_id'] == 'po_status_approved' && !$baseUpdate['po_date'] && !$baseCurrent['po_date']) {
             $baseUpdate['po_date'] = CalemText::getServerDate();
         }
     }
     return $baseUpdate;
 }