WIP Contract/Billing/Invoice 2024-06-28

This commit is contained in:
Frank Schubert
2024-07-01 11:44:19 +02:00
parent 4589e61ab8
commit ae298a0665
30 changed files with 1898 additions and 212 deletions

View File

@@ -350,9 +350,6 @@ class ContractController extends mfBaseController
}
}
/*
* TODO: alten Credit Vertag kündigen und neuen anlegen
*/
foreach (ContractLinkModel::search(['type' => "credit", 'contract_id' => $origin->id]) as $old_credit) {
// verlinkten Contract kündigen (wenn nicht schon gekündigt)
if ($old_credit->change_action == "recreate" && !$old_credit->contract->cancel_date) {
@@ -368,7 +365,6 @@ class ContractController extends mfBaseController
}
}
}
@@ -379,9 +375,12 @@ class ContractController extends mfBaseController
$this->redirect("Contract", "view", ['contract_id' => $id]);
}
/*
* bestehende Links übernehmen oder kündigen
*/
// create Journal
$journal = ContractjournalModel::create([
'contract_id' => $contract->id,
'type' => "contract_finished"
]);
$journal_id = $journal->save();
$this->layout()->setFlash("Contract erfolgreich fertiggestellt", "success");
$this->redirect("Contract", "view", ['contract_id' => $id]);
@@ -475,6 +474,8 @@ class ContractController extends mfBaseController
}
//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;
@@ -489,11 +490,34 @@ class ContractController extends mfBaseController
$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['order_date'] = ($r->order_date) ? $this->dateToTimestamp($r->order_date) : null;
$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;
if($r->order_date) {
$order_date = new DateTime("@" . $this->dateToTimestamp($r->order_date));
$order_date->setTimezone(new DateTimeZone("Europe/Vienna"));
$order_date->setTime(0, 0, 0);
$contract_data['order_date'] = $order_date->getTimestamp();
}
if($r->finish_date) {
$finish_date = new DateTime("@" . $this->dateToTimestamp($r->finish_date));
$finish_date->setTimezone(new DateTimeZone("Europe/Vienna"));
$finish_date->setTime(0, 0, 0);
$contract_data['finish_date'] = $finish_date->getTimestamp();
}
if($r->cancel_date) {
$cancel_date = new DateTime("@" . $this->dateToTimestamp($r->cancel_date));
$cancel_date->setTimezone(new DateTimeZone("Europe/Vienna"));
$cancel_date->setTime(0, 0, 0);
$contract_data['cancel_date'] = $cancel_date->getTimestamp();
}
//var_dump($contract_data);exit;
@@ -513,7 +537,7 @@ class ContractController extends mfBaseController
$this->layout()->setFlash("Bitte Produkt auswählen.", "error");
return $this->addAction();
}
if (!$contract_data['billing_period']) {
if (!in_array($contract_data['billing_period'], [0,1,12])) {
$this->layout()->setFlash("Bitte Rechnungsperiode auswählen.", "error");
return $this->addAction();
}