diff --git a/Layout/default/Preordercampaign/Form.php b/Layout/default/Preordercampaign/Form.php
index 2c1042d4f..569a6882a 100644
--- a/Layout/default/Preordercampaign/Form.php
+++ b/Layout/default/Preordercampaign/Form.php
@@ -132,6 +132,16 @@
+
+
@@ -222,5 +232,11 @@
placeholder: "",
closeOnSelect: false
});
+
+ $("#required_fields").select2({
+ allowClear: true,
+ placeholder: "",
+ closeOnSelect: false
+ });
\ No newline at end of file
diff --git a/Layout/default/Product/Form.php b/Layout/default/Product/Form.php
index 5d74d2685..9d6458aff 100644
--- a/Layout/default/Product/Form.php
+++ b/Layout/default/Product/Form.php
@@ -162,7 +162,7 @@
diff --git a/application/Api/v1/PreorderApicontroller.php b/application/Api/v1/PreorderApicontroller.php
index f54d70f0f..90e665fc6 100644
--- a/application/Api/v1/PreorderApicontroller.php
+++ b/application/Api/v1/PreorderApicontroller.php
@@ -250,23 +250,30 @@ class PreorderApicontroller extends mfBaseApicontroller {
if($type == "order") {
$product = $this->campaign->setup_products['activation'][0];
}
+ if($type == "reorder") {
+ $product = $this->campaign->setup_products['reorder'][0];
+ }
if($product) {
$preorder_data['setup_product_id'] = $product->id;
$preorder_data['price_setup'] = $product->price_setup;
if($connection_type == "multi-dwelling") {
if($preorder_data['connection_count'] == 2) {
- $preorder_data['price_setup'] = round($product->price_setup * 2 - (($product->price_setup * 2) / 100) * TT_PREORDER_DISCOUNT_2);
+ //$preorder_data['price_setup'] = round($product->price_setup * 2 - (($product->price_setup * 2) / 100) * TT_PREORDER_DISCOUNT_2);
+ $preorder_data['price_setup'] = ($product->attributes["presales_setup_price2"]->value) ? $product->attributes["presales_setup_price2"]->value : $product->price_setup;
}
if($connection_type == "multi-dwelling" && $preorder_data['connection_count'] == 3) {
- $preorder_data['price_setup'] = round($product->price_setup * 3 - (($product->price_setup * 3) / 100) * TT_PREORDER_DISCOUNT_3);
+ //$preorder_data['price_setup'] = round($product->price_setup * 3 - (($product->price_setup * 3) / 100) * TT_PREORDER_DISCOUNT_3);
+ $preorder_data['price_setup'] = ($product->attributes["presales_setup_price3"]->value) ? $product->attributes["presales_setup_price3"]->value : $product->price_setup;
}
}
if($connection_type == "apartment" && $type == "order") {
- $preorder_data['price_setup'] = round($product->price_setup - (($product->price_setup) / 100) * TT_PREORDER_DISCOUNT_APART);
+ //$preorder_data['price_setup'] = round($product->price_setup - (($product->price_setup) / 100) * TT_PREORDER_DISCOUNT_APART);
+ $preorder_data['price_setup'] = ($product->attributes["presales_setup_price4"]->value) ? $product->attributes["presales_setup_price4"]->value : $product->price_setup;
}
if($connection_type == "business") {
- $preorder_data['price_setup'] = round($product->price_setup - (($product->price_setup) / 100) * TT_PREORDER_DISCOUNT_BUSINESS);
+ //$preorder_data['price_setup'] = round($product->price_setup - (($product->price_setup) / 100) * TT_PREORDER_DISCOUNT_BUSINESS);
+ $preorder_data['price_setup'] = ($product->attributes["presales_setup_price_business"]->value) ? $product->attributes["presales_setup_price_business"]->value : $product->price_setup;
}
}
@@ -279,14 +286,22 @@ class PreorderApicontroller extends mfBaseApicontroller {
$preorder_data[$key] = $customer->$key;
}
}
+
/*
- if($customer->type == "tenant") {
- $preorder_data['contact_type'] = "tenant";
- } elseif($customer->type == "owner") {
- $preorder_data['contact_type'] = "owner";
- } else {
- return mfResponse::BadRequest(["message" => "customer type must be 'tenant' or 'owner'"]);
- }*/
+ * check optional required fields
+ */
+ if(is_array($this->campaign->required_fields) && count($this->campaign->required_fields)) {
+ if(in_array("contact_type", $this->campaign->required_fields)) {
+ if($customer->type == "tenant") {
+ $preorder_data['contact_type'] = "tenant";
+ } elseif($customer->type == "owner") {
+ $preorder_data['contact_type'] = "owner";
+ } else {
+ return mfResponse::BadRequest(["message" => "customer type must be 'tenant' or 'owner'"]);
+ }
+ }
+ }
+
/*
* create preorder record
diff --git a/application/Preordercampaign/Preordercampaign.php b/application/Preordercampaign/Preordercampaign.php
index 55dbb8e9e..97c93c1c1 100644
--- a/application/Preordercampaign/Preordercampaign.php
+++ b/application/Preordercampaign/Preordercampaign.php
@@ -5,11 +5,12 @@ class Preordercampaign extends mfBaseModel {
private $preorders;
private $active_preorders;
private $types;
- private $setup_products;
+ private $setup_products = [];
private $salesclusters;
private $apiusers;
private $corsorigins;
private $total_homes;
+ private $required_fields = [];
public function addTypes(Array $types) {
@@ -50,9 +51,11 @@ class Preordercampaign extends mfBaseModel {
public function getSetupProducts() {
$provision_products = [];
$activation_products = [];
+ $reorder_products = [];
$provisions = ProductModel::search(["attributename" => "presales", "attributevalue" => "provision"]);
$activations = ProductModel::search(["attributename" => "presales", "attributevalue" => "activation"]);
+ $reorders = ProductModel::search(["attributename" => "presales", "attributevalue" => "reorder"]);
foreach($provisions as $p) {
if(ProductNetworkModel::search(['product_id' => $p->id, "network_id" => $this->network_id])) {
@@ -64,8 +67,13 @@ class Preordercampaign extends mfBaseModel {
$activation_products[] = $p;
}
}
+ foreach($reorders as $p) {
+ if(ProductNetworkModel::search(['product_id' => $p->id, "network_id" => $this->network_id])) {
+ $reorder_products[] = $p;
+ }
+ }
- return ['activation' => $activation_products, 'provision' => $provision_products];
+ return ['activation' => $activation_products, 'provision' => $provision_products, 'reorder' => $reorder_products];
}
public function getProperty($name) {
@@ -81,6 +89,12 @@ class Preordercampaign extends mfBaseModel {
return $total;
}
+ if($name == "required_fields") {
+ if(!$this->required_preorder_fields) return [];
+ $this->required_fields = json_decode($this->required_preorder_fields);
+ return $this->required_fields;
+ }
+
if($name == "preorders") {
$this->preorders = PreorderModel::search(['preordercampaign_id' => $this->id]);
diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php
index 36ccab215..5689cb895 100644
--- a/application/Preordercampaign/PreordercampaignController.php
+++ b/application/Preordercampaign/PreordercampaignController.php
@@ -161,6 +161,18 @@ class PreordercampaignController extends mfBaseController {
$data['product_type'] = "all";
}
+ if(is_array($r->required_fields) && count($r->required_fields)) {
+ $rfields = [];
+ foreach(['contact_type'] as $afield) {
+ if(in_array($afield, $r->required_fields)) {
+ $rfields[] = "contact_type";
+ }
+ }
+ $data['required_preorder_fields'] = json_encode($rfields);
+ } else {
+ $data['required_preorder_fields'] = null;
+ }
+
$data['edit_by'] = $this->me->id;
diff --git a/application/Producttech/ProducttechController.php b/application/Producttech/ProducttechController.php
index 56f9bb200..1b385a6d2 100644
--- a/application/Producttech/ProducttechController.php
+++ b/application/Producttech/ProducttechController.php
@@ -88,10 +88,10 @@ class ProducttechController extends mfBaseController {
$a = [];
$a['name'] = $attribute['name'];
$a['producttech_id'] = $new_id;
- $a['displayname'] = $attribute['displayname'];
+ $a['displayname'] = htmlentities($attribute['displayname']);
$a['value'] = $attribute['value'];
- $a['description'] = $attribute['description'];
- $a['note'] = $attribute['note'];
+ $a['description'] = htmlentities($attribute['description']);
+ $a['note'] = htmlentities($attribute['note']);
$a['edit_by'] = $this->me->id;
if($aid == "new") {