contracts can be added and saved
This commit is contained in:
@@ -2,11 +2,14 @@
|
||||
|
||||
class Contract extends mfBaseModel {
|
||||
private $owner;
|
||||
private $creator;
|
||||
private $billingaddress;
|
||||
private $product;
|
||||
private $orderproduct;
|
||||
private $termination;
|
||||
private $sla;
|
||||
private $finisher;
|
||||
private $canceler;
|
||||
private $creator;
|
||||
private $editor;
|
||||
|
||||
|
||||
@@ -29,6 +32,7 @@ class Contract extends mfBaseModel {
|
||||
}
|
||||
|
||||
if($name == "billingaddress") {
|
||||
|
||||
$this->billingaddress = mfValuecache::singleton()->get("mfObjectmodel-Address-".$this->billingaddress_id);
|
||||
if($this->billingaddress === null) {
|
||||
$this->billingaddress = new Address($this->billingaddress_id);
|
||||
@@ -61,6 +65,28 @@ class Contract extends mfBaseModel {
|
||||
return $this->orderproduct;
|
||||
}
|
||||
|
||||
if($name == "finisher") {
|
||||
$this->finisher = mfValuecache::singleton()->get("Worker-id-".$this->finish_date_by);
|
||||
if($this->finisher === null) {
|
||||
$this->finisher = new User($this->finish_date_by);
|
||||
if($this->finisher->id) {
|
||||
mfValuecache::singleton()->set("Worker-id-".$this->finish_date_by, $this->finisher);
|
||||
}
|
||||
}
|
||||
return $this->finisher;
|
||||
}
|
||||
|
||||
if($name == "canceler") {
|
||||
$this->canceler = mfValuecache::singleton()->get("Worker-id-".$this->cancel_date_by);
|
||||
if($this->canceler === null) {
|
||||
$this->canceler = new User($this->cancel_date_by);
|
||||
if($this->canceler->id) {
|
||||
mfValuecache::singleton()->set("Worker-id-".$this->cancel_date_by, $this->canceler);
|
||||
}
|
||||
}
|
||||
return $this->canceler;
|
||||
}
|
||||
|
||||
if($name == "creator") {
|
||||
$this->creator = mfValuecache::singleton()->get("Worker-id-".$this->create_by);
|
||||
if($this->creator === null) {
|
||||
|
||||
@@ -56,6 +56,32 @@ class ContractController extends mfBaseController {
|
||||
return $new_filter;
|
||||
}
|
||||
|
||||
protected function viewAction() {
|
||||
$this->layout()->setTemplate("Contract/View");
|
||||
|
||||
$id = $this->request->id;
|
||||
if(!is_numeric($id) || !$id) {
|
||||
$this->layout()->setFlash("Vertrag nicht gefunden", "error");
|
||||
$this->redirect("Contract");
|
||||
}
|
||||
|
||||
$contract = new Contract($id);
|
||||
if(!$contract->id) {
|
||||
$this->layout()->setFlash("Vertrag nicht gefunden", "error");
|
||||
$this->redirect("Contract");
|
||||
}
|
||||
|
||||
$this->layout()->set("contract", $contract);
|
||||
|
||||
if($this->request->filter) {
|
||||
$this->layout()->set("filter", $this->request->filter);
|
||||
}
|
||||
if($this->request->s) {
|
||||
$this->layout()->set("filter", $this->request->s);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected function addAction() {
|
||||
$this->layout()->setTemplate("Contract/Form");
|
||||
}
|
||||
@@ -75,11 +101,125 @@ class ContractController extends mfBaseController {
|
||||
|
||||
$this->layout()->set("contract", $contract);
|
||||
|
||||
if($this->request->f == "view") $this->layout()->set("f", "view");
|
||||
if($this->request->f != "view") $this->layout()->set("f", "index");
|
||||
|
||||
if($this->request->filter) {
|
||||
$this->layout()->set("filter", $this->request->filter);
|
||||
}
|
||||
if($this->request->s) {
|
||||
$this->layout()->set("filter", $this->request->s);
|
||||
}
|
||||
|
||||
return $this->addAction();
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected function saveAction() {
|
||||
$r = $this->request;
|
||||
//var_dump($r);
|
||||
|
||||
/*
|
||||
* add or edit
|
||||
*/
|
||||
$id = $r->id;
|
||||
if(is_numeric($id) && $id > 0) {
|
||||
$mode = "edit";
|
||||
$contract = new Contract($id);
|
||||
if(!$contract->id) {
|
||||
$this->layout()->setFlash("Vertrag nicht gefunden", "error");
|
||||
$this->redirect("Contract");
|
||||
}
|
||||
} else {
|
||||
$id = false;
|
||||
$mode = "add";
|
||||
}
|
||||
|
||||
//var_dump($r->get());exit;
|
||||
$contract_data = [];
|
||||
$contract_data["owner_id"] = (int)$r->owner_id;
|
||||
$contract_data["billingaddress_id"] = ($r->billingaddress_id) ? (int)$r->billingaddress_id : null;
|
||||
$contract_data["product_id"] = (int)$r->product_id;
|
||||
$contract_data["matchcode"] = $r->matchcode;
|
||||
$contract_data["product_name"] = $r->product_name;
|
||||
$contract_data["product_info"] = $r->product_info;
|
||||
$contract_data['amount'] = ($r->amount) ? (float)$r->amount : 1;
|
||||
$contract_data['price'] = (float)$r->price;
|
||||
$contract_data['price_setup'] = (float)$r->price_setup;
|
||||
$contract_data['price_nne'] = (float)$r->price_nne;
|
||||
$contract_data['price_nbe'] = (float)$r->price_nbe;
|
||||
$contract_data['billing_period'] = (int)$r->billing_period;
|
||||
$contract_data['billing_delay'] = (int)$r->billing_delay;
|
||||
$contract_data['finish_date'] = ($r->finish_date) ? $this->dateToTimestamp($r->finish_date) : null;
|
||||
$contract_data['cancel_date'] = ($r->cancel_date) ? $this->dateToTimestamp($r->cancel_date) : null;
|
||||
$contract_data['note'] = $r->note;
|
||||
|
||||
|
||||
//var_dump($contract_data);exit;
|
||||
|
||||
if($mode == "add") {
|
||||
$contract = ContractModel::create($contract_data);
|
||||
} else {
|
||||
$contract->update($contract_data);
|
||||
}
|
||||
|
||||
$this->layout()->set("contract", $contract);
|
||||
|
||||
if(!$contract_data["owner_id"]) {
|
||||
$this->layout()->setFlash("Bitte Vertragsinhaber auswählen.", "error");
|
||||
return $this->addAction();
|
||||
}
|
||||
if(!$contract_data["product_id"]) {
|
||||
$this->layout()->setFlash("Bitte Produkt auswählen.", "error");
|
||||
return $this->addAction();
|
||||
}
|
||||
if(!$contract_data['billing_period']) {
|
||||
$this->layout()->setFlash("Bitte Rechnungsperiode auswählen.", "error");
|
||||
return $this->addAction();
|
||||
}
|
||||
|
||||
if(!$contract->product_name) {
|
||||
$product = new Product($contract_data["product_id"]);
|
||||
if(!$product->id) {
|
||||
$this->layout()->setFlash("Ungültiges Produkt.", "error");
|
||||
return $this->addAction();
|
||||
}
|
||||
$contract->product_name = $product->name;
|
||||
}
|
||||
|
||||
//var_dump($contract);exit;
|
||||
|
||||
$contract_id = $contract->save();
|
||||
if(!$contract_id) {
|
||||
$this->layout()->setFlash("Fehler beim Speichern.", "error");
|
||||
$this->layout()->set("contract", $contract);
|
||||
return $this->addAction();
|
||||
}
|
||||
|
||||
$this->layout()->setFlash("Vertrag erfolgreich gespeichert.", "success");
|
||||
|
||||
|
||||
|
||||
|
||||
$query = [];
|
||||
if($r->s) {
|
||||
$query['s'] = $r->s;
|
||||
}
|
||||
if($r->filter) {
|
||||
$query["filter"] = $r->filter;
|
||||
}
|
||||
if($r->return != "index") {
|
||||
$query['id'] = $contract_id;
|
||||
}
|
||||
|
||||
$qs = http_build_query($query);
|
||||
|
||||
if($mode == "add" || $r->f == "view") {
|
||||
$this->redirect("Contract", "view", $qs, "contract=$contract_id");
|
||||
} else {
|
||||
$this->redirect("Contract", "Index", $qs);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected function apiAction() {
|
||||
if(!$this->me->is(["Admin"])) {
|
||||
|
||||
@@ -1,20 +1,29 @@
|
||||
<?php
|
||||
|
||||
class ContractModel {
|
||||
public $name = null;
|
||||
public $description = null;
|
||||
public $orderproduct_id;
|
||||
public $owner_id;
|
||||
public $billingaddress_id;
|
||||
public $termination_id;
|
||||
public $product_id;
|
||||
public $product_name;
|
||||
public $product_info;
|
||||
public $matchcode;
|
||||
public $amount;
|
||||
public $sla_id = null;
|
||||
public $external = null;
|
||||
public $external_id;
|
||||
public $productgroup_id = null;
|
||||
public $producttech_id = null;
|
||||
public $product_external;
|
||||
public $product_external_id;
|
||||
public $price = null;
|
||||
public $price_setup = null;
|
||||
public $price_nne = null;
|
||||
public $price_nbe = null;
|
||||
public $billing_delay = null;
|
||||
public $billing_period = null;
|
||||
public $ivt_id = null;
|
||||
public $order_date;
|
||||
public $finish_date;
|
||||
public $finish_date_by;
|
||||
public $cancel_date;
|
||||
public $cancel_date_by;
|
||||
|
||||
public $note = null;
|
||||
public $create_by = null;
|
||||
|
||||
Reference in New Issue
Block a user