diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index ab2d99692..b3e19e1f9 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -49,6 +49,81 @@ class Derivation { var $case; + /** + * prepareInformationTaskDerivation + * + * @param array $arrayDerivation Derivation + * + * return array Return array + */ + public function prepareInformationTaskDerivation(array $arrayDerivation) + { + try { + $task = new Task(); + + $taskFields = $task->load($arrayDerivation["TAS_UID"]); + + $arrayDerivation = G::array_merges($arrayDerivation, $taskFields); + + //2. if next case is an special case + if ((int)($arrayDerivation["ROU_NEXT_TASK"]) < 0) { + $arrayDerivation["NEXT_TASK"]["TAS_UID"] = (int)($arrayDerivation["ROU_NEXT_TASK"]); + $arrayDerivation["NEXT_TASK"]["TAS_ASSIGN_TYPE"] = "nobody"; + $arrayDerivation["NEXT_TASK"]["TAS_PRIORITY_VARIABLE"] = ""; + $arrayDerivation["NEXT_TASK"]["TAS_DEF_PROC_CODE"] = ""; + $arrayDerivation["NEXT_TASK"]["TAS_PARENT"] = ""; + $arrayDerivation["NEXT_TASK"]["TAS_TRANSFER_FLY"] = ""; + + switch ($arrayDerivation["ROU_NEXT_TASK"]) { + case -1: + $arrayDerivation["NEXT_TASK"]["TAS_TITLE"] = G::LoadTranslation("ID_END_OF_PROCESS"); + break; + case -2: + $arrayDerivation["NEXT_TASK"]["TAS_TITLE"] = G::LoadTranslation("ID_TAREA_COLGANTE"); + break; + } + + $arrayDerivation["NEXT_TASK"]["USR_UID"] = ""; + $arrayDerivation["NEXT_TASK"]["USER_ASSIGNED"] = array("USR_UID" => ""); + } else { + //3. load the task information of normal NEXT_TASK + $arrayDerivation["NEXT_TASK"] = $task->load($arrayDerivation["ROU_NEXT_TASK"]); //print $arrayDerivation["ROU_NEXT_TASK"]." **** ".$arrayDerivation["NEXT_TASK"]["TAS_TYPE"]."
true if all validations pass;
+ * @return mixed true if all validations pass;
array of ValidationFailed objects otherwise.
*/
protected function doValidate($columns = null)
@@ -671,10 +671,10 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi
*
* @deprecated
*/
- public function setPrimaryKey($pk)
- {
- // do nothing, because this object doesn't have any primary keys
- }
+ public function setPrimaryKey($pk)
+ {
+ // do nothing, because this object doesn't have any primary keys
+ }
/**
* Sets contents of passed object to values from current object.
diff --git a/workflow/engine/classes/model/om/BaseRoute.php b/workflow/engine/classes/model/om/BaseRoute.php
index 52efc60d8..82f456c2f 100755
--- a/workflow/engine/classes/model/om/BaseRoute.php
+++ b/workflow/engine/classes/model/om/BaseRoute.php
@@ -69,6 +69,12 @@ abstract class BaseRoute extends BaseObject implements Persistent
*/
protected $rou_type = 'SEQUENTIAL';
+ /**
+ * The value for the rou_default field.
+ * @var int
+ */
+ protected $rou_default = 0;
+
/**
* The value for the rou_condition field.
* @var string
@@ -220,6 +226,17 @@ abstract class BaseRoute extends BaseObject implements Persistent
return $this->rou_type;
}
+ /**
+ * Get the [rou_default] column value.
+ *
+ * @return int
+ */
+ public function getRouDefault()
+ {
+
+ return $this->rou_default;
+ }
+
/**
* Get the [rou_condition] column value.
*
@@ -484,6 +501,28 @@ abstract class BaseRoute extends BaseObject implements Persistent
} // setRouType()
+ /**
+ * Set the value of [rou_default] column.
+ *
+ * @param int $v new value
+ * @return void
+ */
+ public function setRouDefault($v)
+ {
+
+ // Since the native PHP type for this column is integer,
+ // we will cast the input value to an int (if it is not).
+ if ($v !== null && !is_int($v) && is_numeric($v)) {
+ $v = (int) $v;
+ }
+
+ if ($this->rou_default !== $v || $v === 0) {
+ $this->rou_default = $v;
+ $this->modifiedColumns[] = RoutePeer::ROU_DEFAULT;
+ }
+
+ } // setRouDefault()
+
/**
* Set the value of [rou_condition] column.
*
@@ -735,32 +774,34 @@ abstract class BaseRoute extends BaseObject implements Persistent
$this->rou_type = $rs->getString($startcol + 6);
- $this->rou_condition = $rs->getString($startcol + 7);
+ $this->rou_default = $rs->getInt($startcol + 7);
- $this->rou_to_last_user = $rs->getString($startcol + 8);
+ $this->rou_condition = $rs->getString($startcol + 8);
- $this->rou_optional = $rs->getString($startcol + 9);
+ $this->rou_to_last_user = $rs->getString($startcol + 9);
- $this->rou_send_email = $rs->getString($startcol + 10);
+ $this->rou_optional = $rs->getString($startcol + 10);
- $this->rou_sourceanchor = $rs->getInt($startcol + 11);
+ $this->rou_send_email = $rs->getString($startcol + 11);
- $this->rou_targetanchor = $rs->getInt($startcol + 12);
+ $this->rou_sourceanchor = $rs->getInt($startcol + 12);
- $this->rou_to_port = $rs->getInt($startcol + 13);
+ $this->rou_targetanchor = $rs->getInt($startcol + 13);
- $this->rou_from_port = $rs->getInt($startcol + 14);
+ $this->rou_to_port = $rs->getInt($startcol + 14);
- $this->rou_evn_uid = $rs->getString($startcol + 15);
+ $this->rou_from_port = $rs->getInt($startcol + 15);
- $this->gat_uid = $rs->getString($startcol + 16);
+ $this->rou_evn_uid = $rs->getString($startcol + 16);
+
+ $this->gat_uid = $rs->getString($startcol + 17);
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
- return $startcol + 17; // 17 = RoutePeer::NUM_COLUMNS - RoutePeer::NUM_LAZY_LOAD_COLUMNS).
+ return $startcol + 18; // 18 = RoutePeer::NUM_COLUMNS - RoutePeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating Route object", $e);
@@ -986,33 +1027,36 @@ abstract class BaseRoute extends BaseObject implements Persistent
return $this->getRouType();
break;
case 7:
- return $this->getRouCondition();
+ return $this->getRouDefault();
break;
case 8:
- return $this->getRouToLastUser();
+ return $this->getRouCondition();
break;
case 9:
- return $this->getRouOptional();
+ return $this->getRouToLastUser();
break;
case 10:
- return $this->getRouSendEmail();
+ return $this->getRouOptional();
break;
case 11:
- return $this->getRouSourceanchor();
+ return $this->getRouSendEmail();
break;
case 12:
- return $this->getRouTargetanchor();
+ return $this->getRouSourceanchor();
break;
case 13:
- return $this->getRouToPort();
+ return $this->getRouTargetanchor();
break;
case 14:
- return $this->getRouFromPort();
+ return $this->getRouToPort();
break;
case 15:
- return $this->getRouEvnUid();
+ return $this->getRouFromPort();
break;
case 16:
+ return $this->getRouEvnUid();
+ break;
+ case 17:
return $this->getGatUid();
break;
default:
@@ -1042,16 +1086,17 @@ abstract class BaseRoute extends BaseObject implements Persistent
$keys[4] => $this->getRouNextTask(),
$keys[5] => $this->getRouCase(),
$keys[6] => $this->getRouType(),
- $keys[7] => $this->getRouCondition(),
- $keys[8] => $this->getRouToLastUser(),
- $keys[9] => $this->getRouOptional(),
- $keys[10] => $this->getRouSendEmail(),
- $keys[11] => $this->getRouSourceanchor(),
- $keys[12] => $this->getRouTargetanchor(),
- $keys[13] => $this->getRouToPort(),
- $keys[14] => $this->getRouFromPort(),
- $keys[15] => $this->getRouEvnUid(),
- $keys[16] => $this->getGatUid(),
+ $keys[7] => $this->getRouDefault(),
+ $keys[8] => $this->getRouCondition(),
+ $keys[9] => $this->getRouToLastUser(),
+ $keys[10] => $this->getRouOptional(),
+ $keys[11] => $this->getRouSendEmail(),
+ $keys[12] => $this->getRouSourceanchor(),
+ $keys[13] => $this->getRouTargetanchor(),
+ $keys[14] => $this->getRouToPort(),
+ $keys[15] => $this->getRouFromPort(),
+ $keys[16] => $this->getRouEvnUid(),
+ $keys[17] => $this->getGatUid(),
);
return $result;
}
@@ -1105,33 +1150,36 @@ abstract class BaseRoute extends BaseObject implements Persistent
$this->setRouType($value);
break;
case 7:
- $this->setRouCondition($value);
+ $this->setRouDefault($value);
break;
case 8:
- $this->setRouToLastUser($value);
+ $this->setRouCondition($value);
break;
case 9:
- $this->setRouOptional($value);
+ $this->setRouToLastUser($value);
break;
case 10:
- $this->setRouSendEmail($value);
+ $this->setRouOptional($value);
break;
case 11:
- $this->setRouSourceanchor($value);
+ $this->setRouSendEmail($value);
break;
case 12:
- $this->setRouTargetanchor($value);
+ $this->setRouSourceanchor($value);
break;
case 13:
- $this->setRouToPort($value);
+ $this->setRouTargetanchor($value);
break;
case 14:
- $this->setRouFromPort($value);
+ $this->setRouToPort($value);
break;
case 15:
- $this->setRouEvnUid($value);
+ $this->setRouFromPort($value);
break;
case 16:
+ $this->setRouEvnUid($value);
+ break;
+ case 17:
$this->setGatUid($value);
break;
} // switch()
@@ -1186,43 +1234,47 @@ abstract class BaseRoute extends BaseObject implements Persistent
}
if (array_key_exists($keys[7], $arr)) {
- $this->setRouCondition($arr[$keys[7]]);
+ $this->setRouDefault($arr[$keys[7]]);
}
if (array_key_exists($keys[8], $arr)) {
- $this->setRouToLastUser($arr[$keys[8]]);
+ $this->setRouCondition($arr[$keys[8]]);
}
if (array_key_exists($keys[9], $arr)) {
- $this->setRouOptional($arr[$keys[9]]);
+ $this->setRouToLastUser($arr[$keys[9]]);
}
if (array_key_exists($keys[10], $arr)) {
- $this->setRouSendEmail($arr[$keys[10]]);
+ $this->setRouOptional($arr[$keys[10]]);
}
if (array_key_exists($keys[11], $arr)) {
- $this->setRouSourceanchor($arr[$keys[11]]);
+ $this->setRouSendEmail($arr[$keys[11]]);
}
if (array_key_exists($keys[12], $arr)) {
- $this->setRouTargetanchor($arr[$keys[12]]);
+ $this->setRouSourceanchor($arr[$keys[12]]);
}
if (array_key_exists($keys[13], $arr)) {
- $this->setRouToPort($arr[$keys[13]]);
+ $this->setRouTargetanchor($arr[$keys[13]]);
}
if (array_key_exists($keys[14], $arr)) {
- $this->setRouFromPort($arr[$keys[14]]);
+ $this->setRouToPort($arr[$keys[14]]);
}
if (array_key_exists($keys[15], $arr)) {
- $this->setRouEvnUid($arr[$keys[15]]);
+ $this->setRouFromPort($arr[$keys[15]]);
}
if (array_key_exists($keys[16], $arr)) {
- $this->setGatUid($arr[$keys[16]]);
+ $this->setRouEvnUid($arr[$keys[16]]);
+ }
+
+ if (array_key_exists($keys[17], $arr)) {
+ $this->setGatUid($arr[$keys[17]]);
}
}
@@ -1264,6 +1316,10 @@ abstract class BaseRoute extends BaseObject implements Persistent
$criteria->add(RoutePeer::ROU_TYPE, $this->rou_type);
}
+ if ($this->isColumnModified(RoutePeer::ROU_DEFAULT)) {
+ $criteria->add(RoutePeer::ROU_DEFAULT, $this->rou_default);
+ }
+
if ($this->isColumnModified(RoutePeer::ROU_CONDITION)) {
$criteria->add(RoutePeer::ROU_CONDITION, $this->rou_condition);
}
@@ -1370,6 +1426,8 @@ abstract class BaseRoute extends BaseObject implements Persistent
$copyObj->setRouType($this->rou_type);
+ $copyObj->setRouDefault($this->rou_default);
+
$copyObj->setRouCondition($this->rou_condition);
$copyObj->setRouToLastUser($this->rou_to_last_user);
diff --git a/workflow/engine/classes/model/om/BaseRoutePeer.php b/workflow/engine/classes/model/om/BaseRoutePeer.php
index b7a6d6bd8..bceac65c0 100755
--- a/workflow/engine/classes/model/om/BaseRoutePeer.php
+++ b/workflow/engine/classes/model/om/BaseRoutePeer.php
@@ -25,7 +25,7 @@ abstract class BaseRoutePeer
const CLASS_DEFAULT = 'classes.model.Route';
/** The total number of columns. */
- const NUM_COLUMNS = 17;
+ const NUM_COLUMNS = 18;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -52,6 +52,9 @@ abstract class BaseRoutePeer
/** the column name for the ROU_TYPE field */
const ROU_TYPE = 'ROUTE.ROU_TYPE';
+ /** the column name for the ROU_DEFAULT field */
+ const ROU_DEFAULT = 'ROUTE.ROU_DEFAULT';
+
/** the column name for the ROU_CONDITION field */
const ROU_CONDITION = 'ROUTE.ROU_CONDITION';
@@ -93,10 +96,10 @@ abstract class BaseRoutePeer
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
private static $fieldNames = array (
- BasePeer::TYPE_PHPNAME => array ('RouUid', 'RouParent', 'ProUid', 'TasUid', 'RouNextTask', 'RouCase', 'RouType', 'RouCondition', 'RouToLastUser', 'RouOptional', 'RouSendEmail', 'RouSourceanchor', 'RouTargetanchor', 'RouToPort', 'RouFromPort', 'RouEvnUid', 'GatUid', ),
- BasePeer::TYPE_COLNAME => array (RoutePeer::ROU_UID, RoutePeer::ROU_PARENT, RoutePeer::PRO_UID, RoutePeer::TAS_UID, RoutePeer::ROU_NEXT_TASK, RoutePeer::ROU_CASE, RoutePeer::ROU_TYPE, RoutePeer::ROU_CONDITION, RoutePeer::ROU_TO_LAST_USER, RoutePeer::ROU_OPTIONAL, RoutePeer::ROU_SEND_EMAIL, RoutePeer::ROU_SOURCEANCHOR, RoutePeer::ROU_TARGETANCHOR, RoutePeer::ROU_TO_PORT, RoutePeer::ROU_FROM_PORT, RoutePeer::ROU_EVN_UID, RoutePeer::GAT_UID, ),
- BasePeer::TYPE_FIELDNAME => array ('ROU_UID', 'ROU_PARENT', 'PRO_UID', 'TAS_UID', 'ROU_NEXT_TASK', 'ROU_CASE', 'ROU_TYPE', 'ROU_CONDITION', 'ROU_TO_LAST_USER', 'ROU_OPTIONAL', 'ROU_SEND_EMAIL', 'ROU_SOURCEANCHOR', 'ROU_TARGETANCHOR', 'ROU_TO_PORT', 'ROU_FROM_PORT', 'ROU_EVN_UID', 'GAT_UID', ),
- BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, )
+ BasePeer::TYPE_PHPNAME => array ('RouUid', 'RouParent', 'ProUid', 'TasUid', 'RouNextTask', 'RouCase', 'RouType', 'RouDefault', 'RouCondition', 'RouToLastUser', 'RouOptional', 'RouSendEmail', 'RouSourceanchor', 'RouTargetanchor', 'RouToPort', 'RouFromPort', 'RouEvnUid', 'GatUid', ),
+ BasePeer::TYPE_COLNAME => array (RoutePeer::ROU_UID, RoutePeer::ROU_PARENT, RoutePeer::PRO_UID, RoutePeer::TAS_UID, RoutePeer::ROU_NEXT_TASK, RoutePeer::ROU_CASE, RoutePeer::ROU_TYPE, RoutePeer::ROU_DEFAULT, RoutePeer::ROU_CONDITION, RoutePeer::ROU_TO_LAST_USER, RoutePeer::ROU_OPTIONAL, RoutePeer::ROU_SEND_EMAIL, RoutePeer::ROU_SOURCEANCHOR, RoutePeer::ROU_TARGETANCHOR, RoutePeer::ROU_TO_PORT, RoutePeer::ROU_FROM_PORT, RoutePeer::ROU_EVN_UID, RoutePeer::GAT_UID, ),
+ BasePeer::TYPE_FIELDNAME => array ('ROU_UID', 'ROU_PARENT', 'PRO_UID', 'TAS_UID', 'ROU_NEXT_TASK', 'ROU_CASE', 'ROU_TYPE', 'ROU_DEFAULT', 'ROU_CONDITION', 'ROU_TO_LAST_USER', 'ROU_OPTIONAL', 'ROU_SEND_EMAIL', 'ROU_SOURCEANCHOR', 'ROU_TARGETANCHOR', 'ROU_TO_PORT', 'ROU_FROM_PORT', 'ROU_EVN_UID', 'GAT_UID', ),
+ BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, )
);
/**
@@ -106,10 +109,10 @@ abstract class BaseRoutePeer
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/
private static $fieldKeys = array (
- BasePeer::TYPE_PHPNAME => array ('RouUid' => 0, 'RouParent' => 1, 'ProUid' => 2, 'TasUid' => 3, 'RouNextTask' => 4, 'RouCase' => 5, 'RouType' => 6, 'RouCondition' => 7, 'RouToLastUser' => 8, 'RouOptional' => 9, 'RouSendEmail' => 10, 'RouSourceanchor' => 11, 'RouTargetanchor' => 12, 'RouToPort' => 13, 'RouFromPort' => 14, 'RouEvnUid' => 15, 'GatUid' => 16, ),
- BasePeer::TYPE_COLNAME => array (RoutePeer::ROU_UID => 0, RoutePeer::ROU_PARENT => 1, RoutePeer::PRO_UID => 2, RoutePeer::TAS_UID => 3, RoutePeer::ROU_NEXT_TASK => 4, RoutePeer::ROU_CASE => 5, RoutePeer::ROU_TYPE => 6, RoutePeer::ROU_CONDITION => 7, RoutePeer::ROU_TO_LAST_USER => 8, RoutePeer::ROU_OPTIONAL => 9, RoutePeer::ROU_SEND_EMAIL => 10, RoutePeer::ROU_SOURCEANCHOR => 11, RoutePeer::ROU_TARGETANCHOR => 12, RoutePeer::ROU_TO_PORT => 13, RoutePeer::ROU_FROM_PORT => 14, RoutePeer::ROU_EVN_UID => 15, RoutePeer::GAT_UID => 16, ),
- BasePeer::TYPE_FIELDNAME => array ('ROU_UID' => 0, 'ROU_PARENT' => 1, 'PRO_UID' => 2, 'TAS_UID' => 3, 'ROU_NEXT_TASK' => 4, 'ROU_CASE' => 5, 'ROU_TYPE' => 6, 'ROU_CONDITION' => 7, 'ROU_TO_LAST_USER' => 8, 'ROU_OPTIONAL' => 9, 'ROU_SEND_EMAIL' => 10, 'ROU_SOURCEANCHOR' => 11, 'ROU_TARGETANCHOR' => 12, 'ROU_TO_PORT' => 13, 'ROU_FROM_PORT' => 14, 'ROU_EVN_UID' => 15, 'GAT_UID' => 16, ),
- BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, )
+ BasePeer::TYPE_PHPNAME => array ('RouUid' => 0, 'RouParent' => 1, 'ProUid' => 2, 'TasUid' => 3, 'RouNextTask' => 4, 'RouCase' => 5, 'RouType' => 6, 'RouDefault' => 7, 'RouCondition' => 8, 'RouToLastUser' => 9, 'RouOptional' => 10, 'RouSendEmail' => 11, 'RouSourceanchor' => 12, 'RouTargetanchor' => 13, 'RouToPort' => 14, 'RouFromPort' => 15, 'RouEvnUid' => 16, 'GatUid' => 17, ),
+ BasePeer::TYPE_COLNAME => array (RoutePeer::ROU_UID => 0, RoutePeer::ROU_PARENT => 1, RoutePeer::PRO_UID => 2, RoutePeer::TAS_UID => 3, RoutePeer::ROU_NEXT_TASK => 4, RoutePeer::ROU_CASE => 5, RoutePeer::ROU_TYPE => 6, RoutePeer::ROU_DEFAULT => 7, RoutePeer::ROU_CONDITION => 8, RoutePeer::ROU_TO_LAST_USER => 9, RoutePeer::ROU_OPTIONAL => 10, RoutePeer::ROU_SEND_EMAIL => 11, RoutePeer::ROU_SOURCEANCHOR => 12, RoutePeer::ROU_TARGETANCHOR => 13, RoutePeer::ROU_TO_PORT => 14, RoutePeer::ROU_FROM_PORT => 15, RoutePeer::ROU_EVN_UID => 16, RoutePeer::GAT_UID => 17, ),
+ BasePeer::TYPE_FIELDNAME => array ('ROU_UID' => 0, 'ROU_PARENT' => 1, 'PRO_UID' => 2, 'TAS_UID' => 3, 'ROU_NEXT_TASK' => 4, 'ROU_CASE' => 5, 'ROU_TYPE' => 6, 'ROU_DEFAULT' => 7, 'ROU_CONDITION' => 8, 'ROU_TO_LAST_USER' => 9, 'ROU_OPTIONAL' => 10, 'ROU_SEND_EMAIL' => 11, 'ROU_SOURCEANCHOR' => 12, 'ROU_TARGETANCHOR' => 13, 'ROU_TO_PORT' => 14, 'ROU_FROM_PORT' => 15, 'ROU_EVN_UID' => 16, 'GAT_UID' => 17, ),
+ BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, )
);
/**
@@ -224,6 +227,8 @@ abstract class BaseRoutePeer
$criteria->addSelectColumn(RoutePeer::ROU_TYPE);
+ $criteria->addSelectColumn(RoutePeer::ROU_DEFAULT);
+
$criteria->addSelectColumn(RoutePeer::ROU_CONDITION);
$criteria->addSelectColumn(RoutePeer::ROU_TO_LAST_USER);
@@ -589,6 +594,9 @@ abstract class BaseRoutePeer
if ($obj->isNew() || $obj->isColumnModified(RoutePeer::ROU_TYPE))
$columns[RoutePeer::ROU_TYPE] = $obj->getRouType();
+ if ($obj->isNew() || $obj->isColumnModified(RoutePeer::ROU_DEFAULT))
+ $columns[RoutePeer::ROU_DEFAULT] = $obj->getRouDefault();
+
if ($obj->isNew() || $obj->isColumnModified(RoutePeer::ROU_TO_LAST_USER))
$columns[RoutePeer::ROU_TO_LAST_USER] = $obj->getRouToLastUser();
diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml
index 372637222..d6cb61027 100755
--- a/workflow/engine/config/schema.xml
+++ b/workflow/engine/config/schema.xml
@@ -1020,6 +1020,7 @@