diff --git a/Layout/default/PreorderProduct/Form.php b/Layout/default/PreorderProduct/Form.php index 67cfb0251..8d4a7a33b 100644 --- a/Layout/default/PreorderProduct/Form.php +++ b/Layout/default/PreorderProduct/Form.php @@ -1,180 +1,5 @@ - -
-

Preorder Product Management

-

Create Preorder

-
-
- - -
- -
- -

Create Preorder Product

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- -
- -

Create Preorder Product Price

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- -
- -

Create Preorder Product Marketshare Discount

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- -
-
\ No newline at end of file diff --git a/Layout/default/PreorderProduct/Index.php b/Layout/default/PreorderProduct/Index.php new file mode 100644 index 000000000..a23651dd5 --- /dev/null +++ b/Layout/default/PreorderProduct/Index.php @@ -0,0 +1,87 @@ + + + +
+
+
+
+ +
+

Preise

+
+
+
+ + +
+
+ + +
+
+
+
+

Preise

+
+
+ +
+
+ +

getCompanyOrName()?> (id?>)

+
+
+
"> +

Produkte

+ + setNetoperatorId($netoperator->id) ?> + id, $product->prices)) ? $product->prices[$netoperator->id] : false; ?> + +
+
+

Preiseinstellungen für name?>

+ type == "operator_setup"): ?> + + type == "enduser_setup"): ?> + + type == "operatr_usage"): ?> + + +
+
+
+ + + + +
+
+
+ + + +
+
+ + +
+
+ +
+
+ + + \ No newline at end of file diff --git a/Layout/default/PreorderProduct/include/enduser-prices-setup.php b/Layout/default/PreorderProduct/include/enduser-prices-setup.php new file mode 100644 index 000000000..b3d9bbc7f --- /dev/null +++ b/Layout/default/PreorderProduct/include/enduser-prices-setup.php @@ -0,0 +1 @@ + +
+ + + +
+ Derzeit gültiger Preis: current_price->price_setup?> + current_price->end_date): ?> + (bis current_price->end_date))->format("d.m.Y")?>) + +
+ Derzeit regulärer Preis: current_regular_price->price_setup?>
+ Originalpreis: first_price->price_setup?> + +
+ +
+ +
+ + + + +

Neuer Preis

+
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+
+
+ Preis gültig von +
+ +
+
+ +
+
+
+ Preis gültig bis +
+ +
+ +
+
+ + + Ohne Gültig-Bis-Datum gilt der neue Preis für immer, bis ein neuer Preis eingetragen wird.
+ Mit Gültig-Bis-Datum gilt der neue Preis bis einschließlich dem Gültig-Bis-Datum, danach gilt der vorige Preis wieder. +
+
+ +
+ diff --git a/Layout/default/PreorderProduct/include/netoperator-prices-usage.php b/Layout/default/PreorderProduct/include/netoperator-prices-usage.php new file mode 100644 index 000000000..b3d9bbc7f --- /dev/null +++ b/Layout/default/PreorderProduct/include/netoperator-prices-usage.php @@ -0,0 +1 @@ +filter_netowner_id = null; + return true; + } + $this->filter_netowner_id = $netowner_id; + return true; + } + + public function setNetoperatorId($netoperator_id) { + if(!$netoperator_id) { + $this->filter_netoperator_id = null; + return true; + } + $this->filter_netoperator_id = $netoperator_id; + return true; + } + public function getProperty($name) { if($this->$name == null) { - - if($name == "preorder") { - $preorder = PreorderModel::getFirst(["id" => $this->preorder_id]); - if(!$preorder) { - $this->log->debug(__METHOD__ . ": Preorder " . $this->preorder_id . " not found"); - return null; + + if($name == "prices") { + $prices = PreorderProductPrice::search(["netowner_id" => $this->filter_netowner_id, "preorderproduct_id" => $this->id]); + if(count($prices)) { + foreach($prices as $price) { + $this->prices[$price->netoperator_id] = $price; + } + return $this->prices; } - $this->preorder = $preorder; - return $this->preorder; + return []; } - + + if($name == "first_price") { + $price = PreorderProductPrice::getFirst([ + "netowner_id" => $this->filter_netowner_id, + "netoperator_id" => $this->filter_netoperator_id, + "preorderproduct_id" => $this->id, + "start_date>=" => null, + "end_date>" => null, + ], "`create` ASC"); + if(!$price) { + $price = PreorderProductPrice::getFirst([ + "netowner_id" => $this->filter_netowner_id, + "preorderproduct_id" => $this->id, + "start_date>=" => null, + "end_date>" => null, + ], "`create` ASC"); + } + if($price) { + $this->current_price = $price; + return $this->current_price; + } + return null; + } + + if($name == "current_regular_price") { + $price = PreorderProductPrice::getFirst([ + "netowner_id" => $this->filter_netowner_id, + "netoperator_id" => $this->filter_netoperator_id, + "preorderproduct_id" => $this->id, + "start_date<=" => date("Y-m-d"), + "end_date>" => null, + ], "`create` ASC"); + + if($price) { + $this->current_price = $price; + return $this->current_price; + } else { + return $this->getProperty("first_price"); + } + return null; + } + + if($name == "current_price") { + $price = PreorderProductPrice::getFirst([ + "netowner_id" => $this->filter_netowner_id, + "netoperator_id" => $this->filter_netoperator_id, + "preorderproduct_id" => $this->id, + "start_date<=" => date("Y-m-d"), + "end_date>" => date("Y-m-d"), + ], "start_date"); + if(!$price) { + $price = PreorderProductPrice::getFirst([ + "netowner_id" => $this->filter_netowner_id, + "netoperator_id" => $this->filter_netoperator_id, + "preorderproduct_id" => $this->id, + "start_date<=" => date("Y-m-d"), + "end_date" => null, + ], "start_date"); + } + if(!$price) { + $price = PreorderProductPrice::getFirst([ + "netowner_id" => $this->filter_netowner_id, + "netoperator_id" => $this->filter_netoperator_id, + "preorderproduct_id" => $this->id, + "start_date" => null, + "end_date" => null, + ], "start_date"); + } + + if($price) { + $this->current_price = $price; + return $this->current_price; + } + return null; + } + if($name == "creator") { $creator = mfValuecache::singleton()->get("Worker-id-".$this->create_by); if($creator) { @@ -47,18 +148,24 @@ class PreorderProduct extends mfBaseModel { mfValuecache::singleton()->set("Worker-id-".$this->edit_by, $this->editor); return $this->editor; } - - if($name == "product") { - $product = ProductModel::getFirst(["id" => $this->product_id]); - if(!$product) { - $this->log->debug(__METHOD__ . ": Product " . $this->product_id . " not found"); - return null; - } - $this->product = $product; - return $this->product; + + $classname = ucfirst($name); + $idfield = $name . "_id"; + $this->$name = mfValuecache::singleton()->get("mfObjectmodel-$name-" . $this->$idfield); + if(!$this->$name) { + $this->$name = new $classname($this->$idfield); + } + + if($this->$name->id) { + mfValuecache::singleton()->set("mfObjectmodel-$name-" . $this->$name->id, $this->$name); + return $this->$name; + } else { + return null; } } - return parent::getProperty($name); + + return $this->$name; + } /******************************** @@ -66,10 +173,10 @@ class PreorderProduct extends mfBaseModel { */ public static function create(Array $data) { - $model = new ConstructionConsent(); + $model = new PreorderProduct(); $table_fields = [ - "type", "name", "vatgroup_id", "price", "price_setup", + "type", "name", "vatgroup_id", "price_inet", "price_inet_tv", "price_catv", "price_passive", "create_by","edit_by","create","edit" ]; @@ -92,15 +199,34 @@ class PreorderProduct extends mfBaseModel { return $model; } + public static function getWithTypes($netowner_id = false) { + $types = []; + + foreach(self::$types as $type) { + $types[$type] = null; + } + + foreach(self::getAll() as $product) { + if(array_key_exists($product->type, $types)) { + if($netowner_id) { + $product->setNetownerId($netowner_id); + } + $types[$product->type] = $product; + } + } + + return $types; + } + public static function getAll() { $items = []; $db = FronkDB::singleton(); - $res = $db->select("ConstructionConsent", "*", "1 = 1 ORDER BY adb_hausnummer_id"); + $res = $db->select("PreorderProduct", "*", "1 = 1 ORDER BY type"); if($db->num_rows($res)) { while($data = $db->fetch_object($res)) { - $items[] = new ConstructionConsent($data); + $items[] = new PreorderProduct($data); } } return $items; @@ -111,14 +237,14 @@ class PreorderProduct extends mfBaseModel { $db = FronkDB::singleton(); $where = self::getSqlFilter($filter); - $sql = "SELECT * FROM ConstructionConsent + $sql = "SELECT * FROM PreorderProduct WHERE $where - ORDER BY adb_hausnummer_id LIMIT 1"; + ORDER BY type LIMIT 1"; //var_dump($sql);exit; $res = $db->query($sql); if($db->num_rows($res)) { $data = $db->fetch_object($res); - $item = new ConstructionConsent($data); + $item = new PreorderProduct($data); if($item->id) { return $item; } else { @@ -132,8 +258,7 @@ class PreorderProduct extends mfBaseModel { $db = FronkDB::singleton(); $where = self::getSqlFilter($filter); - $sql = "SELECT COUNT(*) as cnt FROM ConstructionConsent - LEFT JOIN ".ADDRESSDB_DBNAME.".view_hausnummer ON (ConstructionConsent.adb_hausnummer_id = view_hausnummer.hausnummer_id) + $sql = "SELECT COUNT(*) as cnt FROM PreorderProduct WHERE $where"; //mfLoghandler::singleton()->debug($sql); @@ -151,14 +276,13 @@ class PreorderProduct extends mfBaseModel { $items = []; if(!$order) { - $order = "adb_hausnummer_id ASC"; + $order = "type ASC"; } $db = FronkDB::singleton(); $where = self::getSqlFilter($filter); - $sql = "SELECT * FROM ConstructionConsent - LEFT JOIN ".ADDRESSDB_DBNAME.".view_hausnummer ON (ConstructionConsent.adb_hausnummer_id = view_hausnummer.hausnummer_id) + $sql = "SELECT * FROM PreorderProduct WHERE $where ORDER BY $order"; @@ -175,7 +299,7 @@ class PreorderProduct extends mfBaseModel { $res = $db->query($sql); if($db->num_rows($res)) { while($data = $db->fetch_object($res)) { - $items[$data->id] = new ConstructionConsent($data); + $items[$data->id] = new PreorderProduct($data); } } @@ -188,28 +312,28 @@ class PreorderProduct extends mfBaseModel { if(array_key_exists("project_id", $filter)) { $project_id = $filter['project_id']; if(is_numeric($project_id)) { - $where .= " AND ConstructionConsent.constructionconsentproject_id=$project_id"; + $where .= " AND PreorderProduct.preorderProductproject_id=$project_id"; } } - if(array_key_exists("constructionconsentproject_id", $filter)) { - $constructionconsentproject_id = $filter['constructionconsentproject_id']; - if(is_numeric($constructionconsentproject_id)) { - $where .= " AND ConstructionConsent.constructionconsentproject_id=$constructionconsentproject_id"; + if(array_key_exists("preorderProductproject_id", $filter)) { + $preorderProductproject_id = $filter['preorderProductproject_id']; + if(is_numeric($preorderProductproject_id)) { + $where .= " AND PreorderProduct.preorderProductproject_id=$preorderProductproject_id"; } } if(array_key_exists("adb_wohneinheit_id", $filter)) { $adb_wohneinheit_id = $filter['adb_wohneinheit_id']; if(is_numeric($adb_wohneinheit_id)) { - $where .= " AND ConstructionConsent.adb_wohneinheit_id=$adb_wohneinheit_id"; + $where .= " AND PreorderProduct.adb_wohneinheit_id=$adb_wohneinheit_id"; } } if(array_key_exists("termination_id", $filter)) { $termination_id = $filter['termination_id']; if(is_numeric($termination_id)) { - $where .= " AND ConstructionConsent.termination_id=$termination_id"; + $where .= " AND PreorderProduct.termination_id=$termination_id"; } } diff --git a/application/PreorderProduct/PreorderProductController.php b/application/PreorderProduct/PreorderProductController.php index 4f519e3f5..e421c4413 100644 --- a/application/PreorderProduct/PreorderProductController.php +++ b/application/PreorderProduct/PreorderProductController.php @@ -17,6 +17,98 @@ class PreorderProductController extends mfBaseController { protected function indexAction() { $this->layout()->setTemplate("PreorderProduct/Index"); - //$product = + $netowner_id = 4807; // $this->me->address_id; + $netowner = new Address($netowner_id); + + $products = PreorderProduct::getWithTypes($netowner_id); + $this->layout()->set("products", $products); + + $netoperators = []; + foreach(PreordercampaignModel::search(["owner_id" => $netowner_id]) as $campaign) { + foreach($campaign->active_operators as $op) { + if(!array_key_exists($op->operator_id, $netoperators)) { + $nop = new Address($op->operator_id); + if($nop->id) { + $netoperators[$nop->id] = $nop; + } + + } + } + foreach($campaign->passive_operators as $op) { + if(!array_key_exists($op->operator_id, $netoperators)) { + $nop = new Address($op->operator_id); + if($nop->id) { + $netoperators[$nop->id] = $nop; + } + } + } + } + + $this->layout()->set("netoperators", $netoperators); + $this->layout()->set("netowner", $netowner); + } + + protected function saveAction() { + $r = $this->request; + //var_dump($r->get());exit; + + $netowner_id = 4807; // $this->me->address_id; + + foreach($r->netoperators as $netoperator_id => $product_data) { + $netoperator = new Address($netoperator_id); + if(!$netoperator->id) { + $this->layout()->setFlash("Betzbetreiber nicht gefunden", "error"); + $this->layout()->redirect("PreorderProduct"); + } + foreach($product_data as $product_id => $price_data) { + var_dump($price_data); + $product = new PreorderProduct($product_id); + if(!$product->id) { + $this->layout()->setFlash("Produkt $product_id nicht gefunden", "error"); + $this->layout()->redirect("PreorderProduct"); + } + + // create new PreorderProductPrice + $price = PreorderProductPrice::create([ + "netowner_id" => $netowner_id, + "preorderproduct_id" => $product->id, + "netoperator_id" => $netoperator_id, + ]); + if($price_data["price_setup"]) $price->price_setup = $price_data["price_setup"]; + + if(!$price_data["start_date"]) { + $this->layout()->setFlash("Von-datum fehlt bei Produkt '".$product->name."' für '".$netoperator->getCompanyOrName()."'", "error"); + $this->redirect("PreorderProduct"); + } else { + try { + $start_date = new DateTime("@" . $this->dateToTimestamp($price_data["start_date"])); + $start_date->setTimezone(new DateTimeZone("Europe/Vienna")); + $price->start_date = $start_date->format("Y-m-d"); + } catch(Exception $e) { + $this->layout()->setFlash("Fehler im Von-datum bei Produkt '".$product->name."' für '".$netoperator->getCompanyOrName()."'", "error"); + $this->redirect("PreorderProduct"); + } + } + if($price_data["end_date"]) { + try { + $end_date = new DateTime("@" . $this->dateToTimestamp($price_data["end_date"])); + $end_date->setTimezone(new DateTimeZone("Europe/Vienna")); + $price->end_date = $end_date->format("Y-m-d"); + } catch(Exception $e) { + $this->layout()->setFlash("Fehler im Bis-Datum bei Produkt '".$product->name."' für '".$netoperator->getCompanyOrName()."'", "error"); + $this->redirect("PreorderProduct"); + } + } + + + //var_dump($product, $price); + + $price->save(); + } + } + + $this->layout()->setFlash("Neue Preise erflgreich gespeichert", "success"); + $this->redirect("PreorderProduct"); + } } \ No newline at end of file diff --git a/application/PreorderProductPrice/PreorderProductPrice.php b/application/PreorderProductPrice/PreorderProductPrice.php new file mode 100644 index 000000000..91878175d --- /dev/null +++ b/application/PreorderProductPrice/PreorderProductPrice.php @@ -0,0 +1,335 @@ +$name == null) { + + if($name == "preorderproduct") { + $product = new PreorderProduct($this->preorderprduct_id); + if(!$product->id) { + return null; + } + $this->preorderprduct = $product; + return $this->preorderprduct; + } + + if($name == "netowner") { + $netowner = new Address($this->netowner_id); + if(!$netowner->id) { + return null; + } + $this->netowner = $netowner; + return $this->netowner; + } + + if($name == "preordercampaign" || $name == "campaign") { + $campaign = new PreorderCampaign($this->preordercampgin_id); + if(!$campaign->id) { + return null; + } + $this->preorderprduct = $campaign; + $this->campaign = $campaign; + return $this->preordercampaign; + } + + + if($name == "creator") { + $creator = mfValuecache::singleton()->get("Worker-id-".$this->create_by); + if($creator) { + $this->creator = $creator; + return $this->creator; + } + $this->creator = new User($this->create_by); + + if(!$this->creator->id) { + return null; + } + mfValuecache::singleton()->set("Worker-id-".$this->create_by, $this->creator); + return $this->creator; + } + + if($name == "editor") { + $editor = mfValuecache::singleton()->get("Worker-id-".$this->edit_by); + if($editor) { + $this->editor = $editor; + return $this->editor; + } + $this->editor = new User($this->edit_by); + if(!$this->editor->id) { + return null; + } + mfValuecache::singleton()->set("Worker-id-".$this->edit_by, $this->editor); + return $this->editor; + } + + $classname = ucfirst($name); + $idfield = $name . "_id"; + $this->$name = mfValuecache::singleton()->get("mfObjectmodel-$name-" . $this->$idfield); + if(!$this->$name) { + $this->$name = new $classname($this->$idfield); + } + + if($this->$name->id) { + mfValuecache::singleton()->set("mfObjectmodel-$name-" . $this->$name->id, $this->$name); + return $this->$name; + } else { + return null; + } + + } + return $this->$name; + } + + /******************************** + * Begin static Model functions + */ + + public static function create(Array $data) { + $model = new PreorderProductPrice(); + + $table_fields = [ + "preorderproduct_id", "netowner_id", "netoperator_id", "preordercampaign_id", "description", + "start_date", "end_date", "price_inet", "price_inet_tv", "price_catv", "price_passive", + "billing_delay", "billing_period", "contract_term", "note", + "create_by","edit_by","create","edit" + ]; + + foreach($data as $field => $value) { + if(in_array($field, $table_fields)) { + $model->$field = $value; + } + } + + $me = new User(); + $me->loadMe(); + + if($model->create_by === null) { + $model->create_by = $me->id; + } + if($model->edit_by === null) { + $model->edit_by = $me->id; + } + + return $model; + } + + public static function getAll() { + $items = []; + + $db = FronkDB::singleton(); + + $res = $db->select("PreorderProductPrice", "*", "1 = 1 ORDER BY start_date"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new PreorderProductPrice($data); + } + } + return $items; + + } + + public static function getFirst($filter = [], $order = false) { + $db = FronkDB::singleton(); + + if(!$order) { + $order = "start_date ASC"; + } + + $where = self::getSqlFilter($filter); + $sql = "SELECT * FROM PreorderProductPrice + WHERE $where + ORDER BY $order LIMIT 1"; + + mfLoghandler::singleton()->debug($sql); + + $res = $db->query($sql); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new PreorderProductPrice($data); + if($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + + public static function count($filter) { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $sql = "SELECT COUNT(*) as cnt FROM PreorderProductPrice + WHERE $where"; + + //mfLoghandler::singleton()->debug($sql); + + $res = $db->query($sql); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + return $data->cnt; + } + return 0; + } + + public static function search($filter, $limit = false, $order = false) { + //var_dump($filter);exit; + $items = []; + + if(!$order) { + $order = "start_date ASC"; + } + + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $sql = "SELECT * FROM PreorderProductPrice + WHERE $where + ORDER BY $order"; + + if(is_array($limit) && count($limit)) { + if(is_numeric($limit['start']) && is_numeric($limit['count'])) { + $sql .= " LIMIT ".$limit['start'].", ".$limit['count']; + } elseif(is_numeric($limit['count'])) { + $sql .= " LIMIT ".$limit['count']; + } + } + + mfLoghandler::singleton()->debug($sql); + + $res = $db->query($sql); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[$data->id] = new PreorderProductPrice($data); + } + } + + return $items; + } + + private static function getSqlFilter($filter) { + $where = "1=1 "; + + if(array_key_exists("preorderproduct_id", $filter)) { + $preorderproduct_id = $filter['preorderproduct_id']; + if(is_numeric($preorderproduct_id)) { + $where .= " AND PreorderProductPrice.preorderproduct_id=$preorderproduct_id"; + } + } + + if(array_key_exists("netowner_id", $filter)) { + $netowner_id = $filter['netowner_id']; + if(is_numeric($netowner_id)) { + $where .= " AND PreorderProductPrice.netowner_id=$netowner_id"; + } + } + + if(array_key_exists("netoperator_id", $filter)) { + $netoperator_id = $filter['netoperator_id']; + if(is_numeric($netoperator_id)) { + $where .= " AND PreorderProductPrice.netoperator_id=$netoperator_id"; + } + } + + if(array_key_exists("preordercampaign_id", $filter)) { + $preordercampaign_id = $filter['preordercampaign_id']; + if(is_numeric($preordercampaign_id)) { + $where .= " AND PreorderProductPrice.preordercampaign_id=$preordercampaign_id"; + } + } + + + if(array_key_exists("start_date", $filter)) { + $start_date = $filter["start_date"]; + if($start_date === null || $start_date === false) { + $where .= " AND PreorderProductPrice.start_date IS NULL"; + } elseif($start_date) { + $start_date = FronkDB::singleton()->escape($filter["start_date"]); + $where .= " AND PreorderProductPrice.start_date='$start_date'"; + } + } + + if(array_key_exists("start_date>", $filter)) { + $start_date = FronkDB::singleton()->escape($filter['start_date>']); + if($start_date) { + $where .= " AND PreorderProductPrice.start_date > '$start_date'"; + } + } + + if(array_key_exists("start_date<", $filter)) { + $start_date = FronkDB::singleton()->escape($filter['start_date<']); + if($start_date) { + $where .= " AND PreorderProductPrice.start_date < '$start_date'"; + } + } + + if(array_key_exists("start_date>=", $filter)) { + $start_date = FronkDB::singleton()->escape($filter['start_date>=']); + if($start_date) { + $where .= " AND PreorderProductPrice.start_date >= '$start_date'"; + } + } + + if(array_key_exists("start_date<=", $filter)) { + $start_date = FronkDB::singleton()->escape($filter['start_date<=']); + if($start_date) { + $where .= " AND PreorderProductPrice.start_date <= '$start_date'"; + } + } + + if(array_key_exists("end_date", $filter)) { + $end_date = $filter["end_date"]; + if($end_date === null || $end_date === false) { + $where .= " AND PreorderProductPrice.end_date IS NULL"; + } elseif($end_date) { + $end_date = FronkDB::singleton()->escape($filter["end_date"]); + $where .= " AND PreorderProductPrice.end_date='$end_date'"; + } + } + + if(array_key_exists("end_date>", $filter)) { + $end_date = FronkDB::singleton()->escape($filter['end_date>']); + if($end_date) { + $where .= " AND PreorderProductPrice.end_date > '$end_date'"; + } + } + + if(array_key_exists("end_date<", $filter)) { + $end_date = FronkDB::singleton()->escape($filter['end_date<']); + if($end_date) { + $where .= " AND PreorderProductPrice.end_date < '$end_date'"; + } + } + + if(array_key_exists("end_date>=", $filter)) { + $end_date = FronkDB::singleton()->escape($filter['end_date>=']); + if($end_date) { + $where .= " AND PreorderProductPrice.end_date >= '$end_date'"; + } + } + + if(array_key_exists("end_date<=", $filter)) { + $end_date = FronkDB::singleton()->escape($filter['end_date<=']); + if($end_date) { + $where .= " AND PreorderProductPrice.end_date <= '$end_date'"; + } + } + + + + if(array_key_exists("add-where", $filter)) { + $where .= " ".$filter['add-where']; + } + + //var_dump($filter, $where);exit; + return $where; + } + +} \ No newline at end of file diff --git a/db/migrations/20250129155121_create_preorder_product.php b/db/migrations/20250129155121_create_preorder_product.php new file mode 100644 index 000000000..9dcac3699 --- /dev/null +++ b/db/migrations/20250129155121_create_preorder_product.php @@ -0,0 +1,86 @@ +getEnvironment() == "thetool") { + $po = $this->table("Preorder"); + $po->addColumn("rimo_service_id", "integer", ["null" => true, "default" => null]); + $po->update(); + + $pp = $this->table("PreorderProduct"); + $pp->addColumn("type", "enum", ["null" => false, "values" => "enduser_setup, provider_setup, provider_usage"]); + $pp->addColumn("name", "string", ["null" => true, "default" => null, "length" => 64]); + $pp->addColumn("vatgroup_id", "integer", ["null" => true, "default" => null]); + $pp->addColumn("price_inet", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $pp->addColumn("price_inet_tv", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $pp->addColumn("price_catv", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $pp->addColumn("price_passive", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $pp->addColumn("create_by", "integer", ["null" => false]); + $pp->addColumn("edit_by", "integer", ["null" => false]); + $pp->addColumn("create", "integer", ["null" => false]); + $pp->addColumn("edit", "integer", ["null" => false]); + $pp->create(); + + $ppp = $this->table("PreorderProductPrice"); + $ppp->addColumn("preorderproduct_id", "integer", ["null" => false]); + $ppp->addColumn("netowner_id", "integer", ["null" => false]); + $ppp->addColumn("preordercampaign_id", "integer", ["null" => true, "default" => null]); + $ppp->addColumn("description", "text", ["null" => true, "default" => null]); + $ppp->addColumn("start_date", "date", ["null" => true, "default" => null]); + $ppp->addColumn("end_date", "date", ["null" => true, "default" => null]); + $ppp->addColumn("price_inet", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppp->addColumn("price_inet_tv", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppp->addColumn("price_catv", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppp->addColumn("price_passive", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppp->addColumn("billing_delay", "integer", ["null" => false, "default" => 0]); + $ppp->addColumn("billing_period", "integer", ["null" => true, "default" => null]); + $ppp->addColumn("contract_term", "integer", ["null" => true, "default" => null]); + $ppp->addColumn("note", "text", ["null" => true, "default" => null]); + $ppp->addColumn("create_by", "integer", ["null" => false]); + $ppp->addColumn("edit_by", "integer", ["null" => false]); + $ppp->addColumn("create", "integer", ["null" => false]); + $ppp->addColumn("edit", "integer", ["null" => false]); + $ppp->create(); + + $ppmd = $this->table("PreorderProductMarketshareDiscount"); + $ppmd->addColumn("preorderproductprice_id", "integer", ["null" => false]); + $ppmd->addColumn("price_15", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppmd->addColumn("price_20", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppmd->addColumn("price_25", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppmd->addColumn("price_30", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppmd->addColumn("price_35", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppmd->addColumn("price_40", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppmd->addColumn("price_45", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppmd->addColumn("price_50", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4]); + $ppmd->addColumn("create_by", "integer", ["null" => false]); + $ppmd->addColumn("edit_by", "integer", ["null" => false]); + $ppmd->addColumn("create", "integer", ["null" => false]); + $ppmd->addColumn("edit", "integer", ["null" => false]); + $ppmd->create(); + } + + if($this->getEnvironment() == "addressdb") { + + } + } + + public function down(): void + { + if($this->getEnvironment() == "thetool") { + $this->table("PreorderProductMarketshareDiscount")->drop()->save(); + $this->table("PreorderProductPrice")->drop()->save(); + $this->table("PreorderProduct")->drop()->save(); + $this->table("Preorder")->removeColumn("rimo_service_id")->update(); + } + + if($this->getEnvironment() == "addressdb") { + + } + } +} + diff --git a/db/migrations/20250217133744_preorder_product_change.php b/db/migrations/20250217133744_preorder_product_change.php new file mode 100644 index 000000000..914c3f574 --- /dev/null +++ b/db/migrations/20250217133744_preorder_product_change.php @@ -0,0 +1,37 @@ +getEnvironment() == "thetool") { + $pp = $this->table("PreorderProduct"); + //$pp->changeColumn("type", "enum", ["null" => false, "values" => "enduser_setup, operator_setup, operator_usage"]); + //$pp->addColumn("price_setup", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4, "after" => "vatgroup_id"]); + $pp->update(); + + $ppp = $this->table("PreorderProductPrice"); + $ppp->addColumn("netoperator_id", "integer", ["null" => false, "after" => "netowner_id"]); + //$ppp->addColumn("price_setup", "decimal", ["null" => false, "default" => 0, "precision" => 14, "scale" => 4, "after" => "end_date"]); + $ppp->update(); + } + + if($this->getEnvironment() == "addressdb") { + + } + } + + public function down(): void + { + if($this->getEnvironment() == "thetool") { + + } + + if($this->getEnvironment() == "addressdb") { + + } + } +}