Exemple #1
0
 /**
  * Исполнитель соглашается с изменениями.
  *
  * @param integer $version   версия этапа на момент вызова (та, которую сейчас видит исполнитель).
  * @return boolean   успешно?
  */
 function agreeChanges($version, $sbr_version = NULL)
 {
     $this->v_data = $this->getVersion($this->frl_version, $this->data);
     $sql = "UPDATE sbr_stages SET frl_version = {$version} WHERE id = {$this->id} AND sbr_id = {$this->sbr->id} AND frl_version <> {$version}";
     if ($res = $this->_eventQuery($sql, false)) {
         if ($sbr_version) {
             $res = $this->sbr->agreeChanges($sbr_version);
         }
     }
     if ($res) {
         if ($this->sbr->scheme_type == sbr::SCHEME_LC) {
             $pskb = new pskb($this->sbr);
             $lc = $pskb->getLC();
             $v_day = intval($this->v_data['work_days']);
             $day = intval($this->data['work_days']);
             $add_day = $day - $v_day;
             if ($add_day > 0) {
                 $pskb->prolongLC($lc['lc_id'], $add_day);
             }
         }
         return $this->_commitXact();
     }
     $this->_abortXact();
     return false;
 }
Exemple #2
0
 /**
  * Продление сроков на сутки для приостановленных сделок (пауза/арбитраж)
  */
 public function prolongPaused(&$cntIn = 0, &$cntOut = 0)
 {
     $db = new DB('master');
     $sql = "SELECT lc.* FROM sbr_stages st \n                INNER JOIN sbr s ON s.id = st.sbr_id\n                INNER JOIN pskb_lc lc ON lc.sbr_id = s.id AND lc.lc_id IS NOT NULL\n                LEFT JOIN sbr_events se ON se.sbr_id = s.id AND se.own_id = st.id AND ev_code = 14 AND se.version = st.version AND se.version <= st.frl_version\n                LEFT JOIN sbr_versions sve ON sve.event_id = se.id AND sve.src_type_id = 6 AND sve.new_val = '2'\n                WHERE st.status = 3 OR ( st.status = 2 AND sve.event_id IS NOT NULL )";
     $data = $db->rows($sql);
     if (!$data) {
         return false;
     }
     $cntIn = count($data);
     $list = array();
     foreach ($data as $row) {
         $list[] = intval($row['lc_id']);
     }
     $pskb = new pskb();
     $resp = $pskb->_checks(json_encode(array('id' => $list)));
     foreach ($data as $row) {
         if (!$row['lc_id'] || !isset($resp[$row['lc_id']])) {
             continue;
         }
         $lc = $resp[$row['lc_id']];
         if (preg_match('/^exp/', $lc->state) || in_array($lc->state, array(pskb::STATE_END, pskb::STATE_ERR))) {
             continue;
         }
         $pskb = new pskb();
         $pskb->_lc = $row;
         $res = $pskb->prolongLC($lc->id, 1);
     }
 }