preorder price now comes from preorder product's attributes

This commit is contained in:
Frank Schubert
2022-10-13 16:03:21 +02:00
parent f02791bdf8
commit 944784dc5c
6 changed files with 79 additions and 19 deletions

View File

@@ -132,6 +132,16 @@
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="adb_netzgebiet_ids">Erforderliche Zusatzfelder:</label>
<div class="col-lg-10">
<select class="select2 form-control select2-multiple" name="required_fields[]" id="required_fields" multiple="multiple" data-placeholder="Felder ...">
<option value="contact_type" <?=(is_array($campaign->required_fields) && in_array("contact_type", $campaign->required_fields)) ? "selected='selected'" : ""?>>Kontakttyp (Besitzer/Bewohner)</option>
</select>
<small>Diese Felder müssen beim Bestellen angegeben werden</small>
</div>
</div>
</div>
</div>
@@ -222,5 +232,11 @@
placeholder: "",
closeOnSelect: false
});
$("#required_fields").select2({
allowClear: true,
placeholder: "",
closeOnSelect: false
});
</script>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>

View File

@@ -162,7 +162,7 @@
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price">Setup Preis Netto (Einmalig) *</label>
<label class="col-lg-2 col-form-label" for="price_setup">Setup Preis Netto (Einmalig) *</label>
<div class="col-lg-10">
<input type="text" name="price_setup" id="price_setup" class="form-control" value="<?=$this::dotToComma($product->price_setup)?>" />
</div>
@@ -174,13 +174,13 @@
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="nne">Netznutzungsentgelt (NNE)</label>
<label class="col-lg-2 col-form-label" for="price_nne">Netznutzungsentgelt (NNE)</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price_nne" id="price_nne" value="<?=$this::dotToComma($product->price_nne)?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="nbe">Netzbetriebsentgelt (NBE)</label>
<label class="col-lg-2 col-form-label" for="price_nbe">Netzbetriebsentgelt (NBE)</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price_nbe" id="price_nbe" value="<?=$this::dotToComma($product->price_nbe)?>">
</div>
@@ -213,6 +213,9 @@
<label class="col-lg-2 col-form-label" for="attributes_<?=$attrib->producttechattribute_id?>"><?=$attrib->displayname?></label>
<div class="col-lg-10">
<input type="text" class="form-control" name="attributes[<?=$attrib->producttechattribute_id?>]" id="attributes_<?=$attrib->producttechattribute_id?>" value="<?=$attrib->value?>" />
<?php if($attrib->description): ?>
<small><?=$attrib->description?></small>
<?php endif; ?>
</div>
</div>
<?php endforeach; ?>

View File

@@ -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

View File

@@ -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]);

View File

@@ -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;

View File

@@ -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") {