contracts can be added and saved

This commit is contained in:
Frank Schubert
2022-11-10 21:30:58 +01:00
parent e71126c8bf
commit e70adc0fa9
7 changed files with 391 additions and 25 deletions

View File

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