diff --git a/db/updateipdinstall.sql b/db/updateipdinstall.sql
new file mode 100644
index 0000000000..bfd085ec43
--- /dev/null
+++ b/db/updateipdinstall.sql
@@ -0,0 +1,171 @@
+CREATE TABLE `zt_demandpool` (
+ `id` int(8) NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL,
+ `desc` mediumtext NOT NULL,
+ `status` char(30) NOT NULL,
+ `createdBy` char(30) NOT NULL,
+ `createdDate` date NOT NULL,
+ `owner` text NOT NULL,
+ `reviewer` text NOT NULL,
+ `acl` char(30) NOT NULL,
+ `deleted` enum('0','1') NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `zt_demand` (
+ `id` int(8) NOT NULL AUTO_INCREMENT,
+ `pool` int(8) NOT NULL,
+ `module` int(8) NOT NULL,
+ `product` mediumint(8) NOT NULL,
+ `parent` mediumint(8) NOT NULL,
+ `pri` char(30) NOT NULL,
+ `category` char(30) NOT NULL,
+ `source` char(30) NOT NULL,
+ `sourceNote` varchar(255) NOT NULL,
+ `title` varchar(255) NOT NULL,
+ `feedbackedBy` varchar(255) NOT NULL,
+ `email` varchar(255) NOT NULL,
+ `assignedTo` char(30) NOT NULL,
+ `assignedDate` datetime NOT NULL,
+ `reviewedBy` text NOT NULL,
+ `reviewedDate` datetime NOT NULL,
+ `status` char(30) NOT NULL,
+ `duration` char(30) NOT NULL,
+ `BSA` char(30) NOT NULL,
+ `story` mediumint(8) NOT NULL,
+ `roadmap` mediumint(8) NOT NULL,
+ `createdBy` char(30) NOT NULL,
+ `createdDate` datetime NOT NULL,
+ `mailto` text NOT NULL,
+ `duplicateDemand` mediumint(8) NOT NULL,
+ `childDemands` varchar(255) NOT NULL,
+ `version` varchar(255) NOT NULL,
+ `vision` varchar(255) NOT NULL DEFAULT 'or',
+ `color` varchar(255) NOT NULL,
+ `changedBy` char(30) NOT NULL,
+ `changedDate` datetime NOT NULL,
+ `closedBy` char(30) NOT NULL,
+ `closedDate` datetime NOT NULL,
+ `closedReason` varchar(30) NOT NULL,
+ `submitedBy` varchar(30) NOT NULL,
+ `lastEditedBy` varchar(30) NOT NULL DEFAULT '',
+ `lastEditedDate` datetime NOT NULL,
+ `activatedDate` datetime NOT NULL,
+ `distributedBy` varchar(30) NOT NULL DEFAULT '',
+ `distributedDate` datetime NOT NULL,
+ `deleted` enum('0','1') NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `zt_demandspec` (
+ `demand` mediumint(9) NOT NULL,
+ `version` smallint(6) NOT NULL,
+ `title` varchar(255) NOT NULL,
+ `spec` mediumtext NOT NULL,
+ `verify` mediumtext NOT NULL,
+ `files` text NOT NULL,
+ UNIQUE KEY `demand` (`demand`,`version`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `zt_demandreview` (
+ `demand` mediumint(9) NOT NULL,
+ `version` smallint(6) NOT NULL,
+ `reviewer` varchar(30) NOT NULL,
+ `result` varchar(30) NOT NULL,
+ `reviewDate` datetime NOT NULL,
+ UNIQUE KEY `demand` (`demand`,`version`,`reviewer`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE `zt_charter` (
+ `id` int(8) NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL,
+ `level` int(8) NOT NULL,
+ `category` char(30) NOT NULL,
+ `market` varchar(30) NOT NULL,
+ `appliedBy` char(30) NOT NULL,
+ `appliedDate` datetime NOT NULL,
+ `budget` char(30) NOT NULL,
+ `budgetUnit` char(30) NOT NULL,
+ `product` mediumint(8) NOT NULL,
+ `roadmap` mediumint(8) NOT NULL,
+ `spec` mediumtext NOT NULL,
+ `status` char(30) NOT NULL,
+ `createdBy` char(30) NOT NULL,
+ `createdDate` datetime NOT NULL,
+ `charterFiles` text NOT NULL,
+ `reviewedBy` char(30) NOT NULL,
+ `reviewedResult` char(30) NOT NULL,
+ `reviewedDate` datetime NOT NULL,
+ `meetingDate` date NOT NULL,
+ `meetingLocation` varchar(255) NOT NULL,
+ `meetingMinutes` mediumtext NOT NULL,
+ `deleted` enum('0','1') NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+REPLACE INTO `zt_config` (`vision`, `owner`, `module`, `section`, `key`, `value`) VALUES ('or', 'system', 'demand', '', 'reviewRules', 'allpass');
+REPLACE INTO `zt_config` (`vision`, `owner`, `module`, `section`, `key`, `value`) VALUES ('or', 'system', 'demand', '', 'needReview', 1);
+
+ALTER TABLE `zt_story` ADD `BSA` char(30) NOT NULL AFTER `notifyEmail`;
+ALTER TABLE `zt_story` ADD `duration` char(30) NOT NULL AFTER `notifyEmail`;
+ALTER TABLE `zt_story` ADD `demand` mediumint(8) NOT NULL AFTER `notifyEmail`;
+ALTER TABLE `zt_product` ADD `PMT` text COLLATE 'utf8_general_ci' NOT NULL AFTER `reviewer`;
+ALTER TABLE `zt_story` ADD `submitedBy` varchar(30) NOT NULL AFTER `changedDate`;
+ALTER TABLE `zt_story` ADD `roadmap` VARCHAR(255) NOT NULL DEFAULT '' AFTER `plan`;
+ALTER TABLE `zt_charter` ADD `check` enum('0','1') NOT NULL DEFAULT '0';
+ALTER TABLE `zt_charter` modify column reviewedBy varchar(255);
+
+CREATE TABLE `zt_roadmap` (
+ `id` mediumint(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ `product` mediumint(8) NOT NULL,
+ `branch` mediumint(8) NOT NULL,
+ `name` varchar(255) NOT NULL,
+ `status` char(30) NOT NULL,
+ `begin` date NOT NULL,
+ `end` date NOT NULL,
+ `desc` longtext NOT NULL,
+ `createdBy` char(30) NOT NULL,
+ `createdDate` date NOT NULL,
+ `closedBy` char(30) NOT NULL,
+ `closedDate` datetime NOT NULL,
+ `closedReason` enum('done','canceled') DEFAULT NULL;
+ `deleted` enum('0','1') NOT NULL DEFAULT '0'
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `zt_roadmapstory` (
+ `roadmap` mediumint(8) unsigned NOT NULL,
+ `story` mediumint(8) unsigned NOT NULL,
+ `order` MEDIUMINT UNSIGNED NOT NULL,
+ UNIQUE KEY `roadmap_story` (`roadmap`,`story`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+ALTER TABLE `zt_story` MODIFY `status` enum('','changing','active','draft','closed','reviewing','launched','developing') NOT NULL DEFAULT '' AFTER `estimate`;
+
+ALTER TABLE `zt_project`
+ADD `charter` mediumint(8) NOT NULL DEFAULT 0 AFTER `project`,
+ADD `category` char(30) COLLATE 'utf8_general_ci' NOT NULL AFTER `type`;
+
+REPLACE INTO `zt_stage` (`name`, `percent`, `type`, `projectType`, `createdBy`, `createdDate`, `editedBy`, `editedDate`, `deleted`) VALUES
+('概念', '10', 'concept', 'ipd', 'admin', '2020-02-08 21:08:30', 'admin', '2020-02-12 13:50:27', '0'),
+('计划', '10', 'plan', 'ipd', 'admin', '2020-02-08 21:08:30', 'admin', '2020-02-12 13:50:27', '0'),
+('开发', '50', 'develop', 'ipd', 'admin', '2020-02-08 21:08:30', 'admin', '2020-02-12 13:50:27', '0'),
+('验证', '15', 'qualify', 'ipd', 'admin', '2020-02-08 21:08:30', 'admin', '2020-02-12 13:50:27', '0'),
+('发布', '10', 'launch', 'ipd', 'admin', '2020-02-08 21:08:30', 'admin', '2020-02-12 13:50:27', '0'),
+('全生命周期', '5', 'lifecycle', 'ipd', 'admin', '2020-02-08 21:08:45', 'admin', '2020-02-12 13:50:27', '0');
+
+ALTER TABLE `zt_review` ADD `begin` date NULL AFTER `createdDate`;
+ALTER TABLE `zt_review` MODIFY `doc` varchar(255);
+ALTER TABLE `zt_review` MODIFY `docVersion` varchar(255);
+
+ALTER TABLE `zt_object` ADD `end` date NULL AFTER `designEst`;
+
+ALTER TABLE `zt_roadmap` ADD `closedReason` enum('done','canceled') DEFAULT NULL AFTER `closedDate`;
+
+ALTER TABLE `zt_charter` ADD `closedBy` char(30) NULL;
+ALTER TABLE `zt_charter` ADD `closedDate` datetime NULL;
+ALTER TABLE `zt_charter` ADD `closedReason` varchar(255) NULL;
+ALTER TABLE `zt_charter` ADD `activatedBy` char(30) NULL;
+ALTER TABLE `zt_charter` ADD `activatedDate` datetime NULL;
+
+UPDATE `zt_priv` SET `vision` = ',rnd,or,' WHERE `module` = 'requirement' AND `method` = 'import';
+UPDATE `zt_priv` SET `vision` = ',rnd,or,' WHERE `module` = 'requirement' AND `method` = 'exportTemplate';
diff --git a/module/execution/model.php b/module/execution/model.php
index 7760562618..6cddc15fbd 100755
--- a/module/execution/model.php
+++ b/module/execution/model.php
@@ -5321,9 +5321,9 @@ class executionModel extends model
$title = '';
$disabled = '';
+ $this->app->loadLang('stage');
if($project and $project->model == 'ipd' and !$isChild)
{
- $this->app->loadLang('stage');
$title = $execution->ipdStage['canStart'] ? '' : sprintf($this->lang->execution->disabledTip->startTip, $this->lang->stage->ipdTypeList[$execution->ipdStage['preAttribute']], $this->lang->stage->ipdTypeList[$execution->attribute]);
$disabled = $execution->ipdStage['canStart'] ? '' : 'disabled';
}
diff --git a/module/index/view/index.html.php b/module/index/view/index.html.php
index 8b20f6060a..5b79d794cf 100644
--- a/module/index/view/index.html.php
+++ b/module/index/view/index.html.php
@@ -92,10 +92,8 @@ js::set('isIntranet', helper::isIntranet());
version;?>
pmsName . $config->version;?>
- systemMode != 'PLM'):?>
bizName;?>
-
diff --git a/module/upgrade/control.php b/module/upgrade/control.php
index 5a4a9cbefe..595286c518 100644
--- a/module/upgrade/control.php
+++ b/module/upgrade/control.php
@@ -96,14 +96,6 @@ class upgrade extends control
$this->config->version = ($this->config->edition == 'biz' ? 'LiteVIP' : 'Lite') . $this->config->liteVersion;
}
- if($this->config->edition == 'ipd')
- {
- foreach($this->lang->upgrade->fromVersions as $key => $value)
- {
- if(strpos($key, 'ipd') === false) unset($this->lang->upgrade->fromVersions[$key]);
- }
- }
-
if($_POST) return print(js::locate(helper::createLink('upgrade', 'confirm', "fromVersion={$this->post->fromVersion}")));
$this->view->title = $this->lang->upgrade->common . $this->lang->colon . $this->lang->upgrade->selectVersion;
diff --git a/module/upgrade/model.php b/module/upgrade/model.php
index 7edec9e420..64601f416a 100644
--- a/module/upgrade/model.php
+++ b/module/upgrade/model.php
@@ -43,7 +43,7 @@ class upgradeModel extends model
{
if(!is_numeric($version[0])) continue;
if(version_compare(str_replace('_', '.', $version), str_replace('_', '.', $openVersion)) < 0) continue;
- $versions[$version] = array('pro' => array(), 'biz' => array(), 'max' => array());
+ $versions[$version] = array('pro' => array(), 'biz' => array(), 'max' => array(), 'ipd' => array());
}
if($fromEdition == 'open') return $versions;
@@ -67,6 +67,11 @@ class upgradeModel extends model
if(isset($versions[$open])) $versions[$open]['max'][] = $max;
}
+ /* Update ipd sql only from ipd. */
+ foreach($this->config->upgrade->ipdVersion as $ipd => $open)
+ {
+ if(isset($versions[$open])) $versions[$open]['ipd'][] = $ipd;
+ }
return $versions;
}
@@ -126,6 +131,15 @@ class upgradeModel extends model
$this->execSQL($this->getUpgradeFile(str_replace('_', '.', $maxVersion)));
$this->executeMax($maxVersion);
}
+
+ /* Execute ipd. */
+ foreach($chargedVersions['ipd'] as $ipdVersion)
+ {
+ $ipdVersion = array_search($openVersion, $this->config->upgrade->ipdVersion);
+ $this->saveLogs("Execute $ipdVersion");
+ $this->execSQL($this->getUpgradeFile(str_replace('_', '.', $ipdVersion)));
+ $this->executeIpd($ipdVersion);
+ }
}
/* Means open source/pro upgrade to biz or max. */
@@ -656,6 +670,9 @@ class upgradeModel extends model
$this->fixMissedFlowField();
}
break;
+ case '18_5':
+ $this->execSQL($this->getUpgradeFile('ipdinstall'));
+ break;
}
$this->deletePatch();
@@ -814,6 +831,17 @@ class upgradeModel extends model
}
}
+ /**
+ * Process data for ipd.
+ *
+ * @param int $ipdVersion
+ * @access public
+ * @return void
+ */
+ public function executeIpd($ipdVersion)
+ {
+ }
+
/**
* Create the confirm contents.
*