Merge branch 'fronkdev' into 'master'

Updated preorder api / Delete Workorder

See merge request fronk/thetool!116
This commit is contained in:
Frank Schubert
2023-11-09 13:56:40 +00:00
18 changed files with 505 additions and 26 deletions

View File

@@ -313,21 +313,25 @@
<div class="col-6">
<h3>Workorder</h3>
<table class="table table-sm table-striped">
<tr>
<th>Name</th>
<td class="text-monospace"><?=$preorder->adb_wohneinheit->rimo_workorder->rimo_name?></td>
</tr><tr>
<th>External ID</th>
<td class="text-monospace"><?=$preorder->adb_wohneinheit->rimo_workorder->rimo_id?></td>
</tr><tr>
<th>Status</th>
<td><?=$preorder->adb_wohneinheit->rimo_workorder->rimo_status?></td>
</tr><tr>
<th>Erstellt</th>
<td class="text-monospace"><?=($preorder->adb_wohneinheit->rimo_workorder->id) ? date("d.m.Y H:i:s", $preorder->adb_wohneinheit->rimo_workorder->create) : ""?></td>
</tr>
</table>
<?php if(is_object($preorder->adb_wohneinheit->rimo_workorder) && $preorder->adb_wohneinheit->rimo_workorder->id): ?>
<small id="preorder-detail-<?=$preorder->id?>-workorder-del"><a href="#" onclick="if(confirm('Achtung: Löscht die Workorder in thetool, aber NICHT in RIMO!')) return deleteWorkorder(<?=$preorder->id?>)" class="text-danger"><i class="far fa-times-circle"></i> Workorder löschen</a></small>
<table class="table table-sm table-striped" id="preorder-detail-<?=$preorder->id?>-workorder">
<tr>
<th>Name</th>
<td class="text-monospace"><?=$preorder->adb_wohneinheit->rimo_workorder->rimo_name?></td>
</tr><tr>
<th>External ID</th>
<td class="text-monospace"><?=$preorder->adb_wohneinheit->rimo_workorder->rimo_id?></td>
</tr><tr>
<th>Status</th>
<td><?=$preorder->adb_wohneinheit->rimo_workorder->rimo_status?></td>
</tr><tr>
<th>Erstellt</th>
<td class="text-monospace"><?=(is_object($preorder->adb_wohneinheit->rimo_workorder)) ? date("d.m.Y H:i:s", $preorder->adb_wohneinheit->rimo_workorder->create) : ""?></td>
</tr>
</table>
<?php endif; ?>
</div>
@@ -388,9 +392,11 @@
}
if("building" in update) {
// update building status text
$("#preorder-detail-building-status-" + pid).text(update.building.status.code + " - " + update.building.status.text);
}
if("unit" in update) {
// update unit status text
$("#preorder-detail-unit-status-" + pid).text(update.unit.status.code + " - " + update.unit.status.text);
}
@@ -400,4 +406,29 @@
},
'json');
}
function deleteWorkorder(pid) {
console.log("in delete workorder");
if(!Number.isInteger(pid) || pid < 1) {
return false;
}
$.post("<?=self::getUrl("Preorder","Api")?>",
{
'do': "deleteWorkorder",
id: pid,
},
function(success) {
if(success.status == "OK") {
$("#preorder-detail-" + success.result.id + "-workorder td").each(function() {
$(this).html("<em class='text-monospace'>--gelöscht--</em>");
});
$("#preorder-detail-" + success.result.id + "-workorder-del").remove();
}
},
'json');
return false;
}
</script>

View File

@@ -0,0 +1,154 @@
<?php
$pagination_baseurl = $this->getUrl($Mod,"Index");
$pagination_baseurl_params = ["filter" => $filter];
$pagination_entity_name = "Bestellungen";
?>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("Preordercampaign")?>">Vorbestellkampagnen</a></li>
<li class="breadcrumb-item active">Vorbestellungen</li>
</ol>
</div>
<h4 class="page-title">Vorbestellungen<?=(isset($campaign) && $campaign) ? " - ".$campaign->name : ""?></h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body mb-3">
<h4 class="header-title mb-3">Filter</h4>
<form method="get" action="<?=self::getUrl("Preorderlogistics")?>">
<div class="row mt-2">
<div class="col-1">
<label class="form-label" for="filter_ucode">Bestellcode</label>
<input type="text" class="form-control" name="filter[ucode]" id="filter_ucode" value="<?=$filter['ucode'] ?? ""?>" />
</div>
<div class="col-1">
<label class="form-label" for="filter_oaid">OAID</label>
<input type="text" class="form-control" name="filter[oaid]" id="filter_oaid" value="<?=$filter['oaid'] ?? ""?>" />
</div>
<div class="col-2">
<label class="form-label" for="filter_address">Anschlussadresse</label>
<input type="text" class="form-control" name="filter[address]" id="filter_address" value="<?=$filter['address'] ?? ""?>" />
</div>
<div class="col-2">
<label class="form-label" for="filter_kunde">Kunde</label>
<input type="text" class="form-control" name="filter[kunde]" id="filter_kunde" value="<?=$filter['kunde'] ?? ""?>" />
</div>
</div>
<div class="row mt-2">
<div class="col">
<button type="submit" class="btn btn-primary">Filter anwenden</button>
<?php if(isset($campaign) && $campaign->id): ?>
<a class="btn btn-secondary" href="<?=self::getUrl("Preorderlogistics", "Index", ['filter' => ['preordercampaign_id' => $campaign->id], "resetFilter" => 1])?>">Filter zurücksetzen</a>
<?php else: ?>
<a class="btn btn-secondary" href="<?=self::getUrl("Preorderlogistics")?>">Filter zurücksetzen</a>
<?php endif; ?>
</div>
</div>
</form>
</div>
</div>
<div class="card">
<div class="card-body mb-3">
<div class="row">
<div class="col-12">
<div class="float-left">
<h4 class="header-title">Bestellungen</h4>
</div>
</div>
</div>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<table class="table table-striped table-hover">
<tr>
<th></th>
<th></th>
<th>Bestelltyp<br />Bestellcode</th>
<th>OAID</th>
<th>Anschlussadresse</th>
<th>Kunde</th>
<th>Kontakt</th>
<th></th>
</tr>
<?php foreach($preorders as $preorder): ?>
<tr class="preorder-list-tr" id="preorder-<?=$preorder->id?>">
<td><button type="button" class="btn btn-sm btn-success" onclick="printShippingSlip(<?=$preorder->id?>)">Versandetikett und<br />Beipackzettel drucken</button> </td>
<td>
<label>Versandt <i class="fas fa-check text-success hidden"></i><input type="checkbox" class="form-control pointer" name="sent" value="1" id="sent-<?=$preorder->id?>" /></label>
</td>
<td>
<?=__($preorder->type, "preorder")?><br />
<?=$preorder->ucode?><br />
</td>
<td class="text-pink"><span><?=$preorder->oaid?></span></td>
<?php if($preorder->building_id): ?>
<td><?=$preorder->building->street?><br /><?=$preorder->building->zip?> <?=$preorder->building->city?></td>
<?php elseif($preorder->adb_hausnummer_id): ?>
<td <?=($preorder->address_created) ? "class='alert-warning' title='Adresse manuell angelegt'" : ""?>">
<?=$preorder->adb_hausnummer->strasse->name?>
<?=$preorder->adb_hausnummer->hausnummer?><br />
<?=($preorder->adb_wohneinheit_id) ? ((string)$preorder->adb_wohneinheit ? $preorder->adb_wohneinheit."<br />" : "") : "<i class='text-pink'>&lt;keine Wohneinheit&gt;</i><br />"?>
<?=$preorder->adb_hausnummer->plz->plz?>
<?=$preorder->adb_hausnummer->ortschaft->name?><br />
<?=$preorder->adb_hausnummer->strasse->gemeinde->name?>
</td>
<?php else: ?>
<td></td>
<?php endif; ?>
<td>
<?=($preorder->company) ? $preorder->company : $preorder->firstname." ".$preorder->lastname?><br />
<?=$preorder->street?><?=($preorder->housenumber) ? " ".$preorder->housenumber : ""?><br />
<?=$preorder->zip?> <?=$preorder->city?>
</td>
<td>
<?=($preorder->phone) ? $preorder->phone."<br />" : ""?>
<?=($preorder->email) ? $preorder->email : ""?>
</td>
<td style="text-align: left; letter-spacing: 4px; font-size: 1.1em;">
</td>
</tr>
<?php endforeach; ?>
</table>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
</div>
</div>
</div>
</div>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>

View File

@@ -85,6 +85,14 @@
<small>z.B. Meridiam</small>
</div>
<div class="form-group" id="preorderlogistics-container">
<label for="preorderlogistics">Preorder Logistikpartner:</label>
<select name="preorderlogistics" class="form-control">
<option value="false" <?=(isset($user) && !$user->is("preorderlogistics")) ? "selected='selected'" : ""?>>No</option>
<option value="true" <?=(isset($user) && $user->is("preorderlogistics")) ? "selected='selected'" : ""?>>Yes</option>
</select>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" id="password" name="password" class="form-control" value="" />

View File

@@ -105,13 +105,13 @@
</li>
<?php endif; ?>
<?php if($me->is(["Admin","netowner","salespartner"]) && $me->can(["Order", "Preorder"])): ?>
<?php if($me->is(["Admin","netowner","salespartner"]) || $me->can(["Order", "Preorder"])): ?>
<li class="has-submenu">
<a href="#">
<i class="fal fa-fw fa-money-bill-wave"></i>Verkauf <div class="arrow-down"></div>
</a>
<ul class="submenu">
<?php if($me->is(["Admin","netowner","salespartner"]) && $me->can("Preorder")): ?>
<?php if($me->is(["Admin","netowner","salespartner"]) || $me->can("Preorder")): ?>
<li><a href="<?=self::getUrl("Preordercampaign")?>"><i class="far fa-fw fa-calendar-lines text-info"></i> Vorbestellung</a></li>
<?php endif; ?>
<?php if($me->is(["Admin","salespartner"]) && $me->can("Order")): ?>

View File

@@ -168,7 +168,10 @@ class ADBWohneinheit extends mfBaseModel {
}
if($name == "rimo_workorder") {
$this->rimo_workorder = RimoWorkorderModel::getFirst(['adb_wohneinheit_id' => $this->id]);
$this->rimo_workorder = new RimoWorkorder();
if($this->id) {
$this->rimo_workorder = RimoWorkorderModel::getFirst(['adb_wohneinheit_id' => $this->id]);
}
return $this->rimo_workorder;
}

View File

@@ -54,7 +54,7 @@ class ADBWohneinheitModel {
ORDER BY hausnummer_id,block,stiege,LENGTH(stock),stock,LENGTH(tuer),tuer,num
LIMIT 1";
mfLoghandler::singleton()->debug($sql);
//mfLoghandler::singleton()->debug($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
@@ -96,7 +96,7 @@ class ADBWohneinheitModel {
) as tbl
";
mfLoghandler::singleton()->debug($sql);
//mfLoghandler::singleton()->debug($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);

View File

@@ -14,6 +14,9 @@ class DashboardController extends mfBaseController {
if($this->me->is("preorderfront")) {
$this->redirect("Preorder");
}
if($this->me->is("Preorderlogistics")) {
$this->redirect("Preorderlogistics");
}
$newss = NewsModel::getAll();
$this->layout()->set("newss", $newss);

View File

@@ -82,7 +82,7 @@ class OpenAccessIdModel {
if(!$oaid) return null;
$where = self::getSqlFilter(["oaid" => $oaid]);
mfLoghandler::singleton()->debug($where);
//mfLoghandler::singleton()->debug($where);
$res = $db->select("OpenAccessId", "*", "$where ORDER BY id");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);

View File

@@ -359,7 +359,11 @@ class Preorder extends mfBaseModel {
$a['cifurl'] = $this->cifurl;
$a['oaid'] = $this->oaid;
$a['extref'] = $this->extref;
$a['orderDate'] = ($this->order_date) ? date("Y-m-d",$this->order_date) : null;
$a['status'] = $this->getProperty("status")->getApiArray();
$a['ciftoken'] = ($this->ciftoken) ? $this->ciftoken : null;
$a['cifurl'] = ($this->cifurl) ? $this->cifurl : null;
$a['installationDate'] = ($this->installation_date) ? date("c", $this->installation_date) : null;
$a['connectionType'] = $this->connection_type;
$a['connectionCount'] = ($this->connection_count) ? (int)$this->connection_count : 1;
$a['isAdditionalOrder'] = ($this->is_additional_order) ? true : false;

View File

@@ -797,6 +797,9 @@ class PreorderController extends mfBaseController {
case "updateStatus":
$return = $this->updateStatusApi();
break;
case "deleteWorkorder":
$return = $this->deleteWorkorderApi();
break;
default:
$return = false;
}
@@ -997,4 +1000,33 @@ class PreorderController extends mfBaseController {
return ["message" => "Status saved successfully", "id" => $preorder_id, "update" => $update];
}
private function deleteWorkorderApi() {
if(!$this->me->is("Admin")) {
return false;
}
$preorder_id = $this->request->id;
if(!is_numeric($preorder_id) || $preorder_id < 1) {
return false;
}
$preorder = new Preorder($preorder_id);
if(!$preorder->id) {
return false;
}
if(!$preorder->adb_wohneinheit_id) {
return false;
}
$workorder = RimoWorkorderModel::getFirst(["adb_wohneinheit_id" => $preorder->adb_wohneinheit_id]);
if(!$workorder) {
return false;
}
$workorder->delete();
return ["Message" => "Workorder deleted successfully", "id" => $preorder->id];
}
}

View File

@@ -9,12 +9,17 @@ class PreordercampaignController extends mfBaseController {
$this->me = $me;
$this->layout()->set("me",$me);
if(!$me->is(["Admin", "netowner", "salespartner"])) {
if(!$me->is(["Admin", "netowner", "salespartner"]) && !$me->can("Preorder")) {
$this->redirect("Dashboard");
}
}
protected function indexAction() {
if($this->me->is("Preorderlogistics")) {
$this->redirect("Preorderlogistics");
}
$this->layout()->setTemplate("Preordercampaign/Index");
$this->layout->set("filter", $this->request->filter);

View File

@@ -0,0 +1,149 @@
<?php
class PreorderlogisticsController extends mfBaseController {
protected function init() {
$this->needlogin=true;
$me = new User();
$me->loadMe();
$this->me = $me;
$this->layout()->set("me",$me);
if(!$me->is(["Preorderlogistics"])) {
$this->redirect("Dashboard");
}
}
protected function indexAction() {
$this->layout()->setTemplate("Preorderlogistics/Index");
$this->layout->set("filter", $this->request->filter);
$filter = [];
if($this->request->filter) {
$filter = $this->getPreparedFilter($this->request->filter);
} else {
$filter = $this->getPreparedFilter([]);
}
// pagination defaults
$pagination = [];
$pagination['start'] = 0;
$pagination['count'] = 25;
$pagination['maxItems'] = 0;
if(is_numeric($this->request->s)) {
$pagination['start'] = intval($this->request->s);
}
$my_networks = [];
$my_network_ids = [];
$my_campaign_ids = [];
$user_network_ids = $this->me->getFlag("preorder_networks")->value();
if($user_network_ids) {
$user_network_ids = json_decode($user_network_ids);
}
if(is_array($user_network_ids) && count($user_network_ids)) {
foreach($user_network_ids as $mnid) {
$my_networks[] = new Network($mnid);
}
}
foreach($my_networks as $network) {
$my_network_ids[] = $network->id;
}
foreach($my_networks as $network) {
foreach(PreordercampaignModel::search(['network_id' => $network->id]) as $campaign) {
$my_campaigns[] = $campaign;
if(!in_array($campaign->id, $my_campaign_ids)) $my_campaign_ids[] = $campaign->id;
}
}
//var_dump($my_network_ids,$my_campaign_ids);exit;
$this->layout()->set("my_campaigns", $my_campaigns);
if($filter['preordercampaign_id'] && in_array($filter['preordercampaign_id'], $my_campaign_ids)) {
$campaign_id = $filter['preordercampaign_id'];
if(is_numeric($campaign_id) && $campaign_id > 0) {
$campaign = new Preordercampaign($campaign_id);
$this->layout()->set("campaign", $campaign);
}
} else {
$filter['preordercampaign_id'] = $my_campaign_ids;
}
$filter['network_id'] = $my_network_ids;
$filter[">status_code"] = 139;
$filter["<status_code"] = 300;
$pagination['maxItems'] = PreorderModel::count($filter);
$preorders = PreorderModel::search($filter, $pagination);
$this->layout()->set("pagination", $pagination);
$this->layout()->set("preorders", $preorders);
}
private function getPreparedFilter($filter) {
$new_filter = [];
$new_filter['add-where'] = "";
if(array_key_exists("name", $filter) && $filter['name']) {
$new_filter['name%'] = "%".$filter['name'];
unset($filter['name']);
}
if(array_key_exists("area", $filter) && $filter['area']) {
$new_filter['area%'] = "%".$filter['area'];
unset($filter['area']);
}
if(array_key_exists("search",$filter) && trim($filter['search'])) {
$search = trim($filter['search']);
$new_filter['add-where'] .= " AND (";
$new_filter['add-where'] .= " adb_hausnummer.gemeinde like '%$search%' OR adb_hausnummer.plz like '%$search%' OR adb_hausnummer.strasse like '%$search%'";
$new_filter['add-where'] .= " OR company like '%$search%' OR firstname like '%$search%' OR lastname like '%$search%' OR concat(firstname, ' ', lastname) like '%$search%' OR concat(lastname, ' ', firstname) like '%$search%' OR street like '%$search%' OR zip like '%$search%' OR city like '%$search%' OR email like '%$search' OR phone like '%$search'";
$new_filter['add-where'] .= " OR ucode like '%$search' OR oaid like '%$search'";
}
if(array_key_exists("address", $filter) && $filter["address"]) {
$address = $this->db()->escape($filter['address']);
$new_filter['add-where'] .= " AND (adb_hausnummer.gemeinde like '%$address%' OR adb_hausnummer.plz like '%$address%' OR adb_hausnummer.strasse like '%$address%'
OR adb_hausnummer.hausnummer like '%$address%' OR CONCAT (adb_hausnummer.strasse, ' ', adb_hausnummer.hausnummer) like '%$address%'
OR CONCAT (adb_hausnummer.strasse, ' ', adb_hausnummer.hausnummer) like '%".str_replace(" ", "%", $address)."%')";
}
if(array_key_exists("hausnummer", $filter) && $filter["hausnummer"]) {
$hausnummer = $this->db()->escape($filter['hausnummer']);
$new_filter['hausnummer'] = $hausnummer;
}
if(array_key_exists("kunde", $filter) && $filter["kunde"]) {
$kunde = $this->db()->escape($filter['kunde']);
$new_filter['add-where'] .= " AND (company like '%$kunde%' OR firstname like '%$kunde%' OR lastname like '%$kunde%' OR concat(firstname, ' ', lastname) like '%$kunde%' OR concat(lastname, ' ', firstname) like '%$kunde%' OR street like '%$kunde%' OR zip like '%$kunde%' OR city like '%$kunde%' OR phone like '%$kunde%' OR email like '%$kunde%')";
}
if(array_key_exists("ucode", $filter) && $filter['ucode']) {
$new_filter['ucode'] = "%".$filter['ucode']."%";
unset($filter['ucode']);
}
if(array_key_exists("oaid", $filter) && $filter['oaid']) {
$new_filter['oaid'] = "%".$filter['oaid']."%";
unset($filter['oaid']);
}
$new_filter['deleted'] = 0;
foreach($filter as $name => $value) {
$new_filter[$name] = $value;
}
return $new_filter;
}
}

View File

@@ -54,7 +54,7 @@ class RimoWorkorderModel {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
mfLoghandler::singleton()->debug($where);
//mfLoghandler::singleton()->debug($where);
$res = $db->select("RimoWorkorder", "*", "$where ORDER BY `create`");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);

View File

@@ -153,14 +153,16 @@ class UserController extends mfBaseController
$user->mobile = NULL;
}
if ($r->address_id) {
if ($this->isAdmin()) {
if ($this->isAdmin()) {
if ($r->address_id) {
$user->address_id = intval($r->address_id);
//var_dump($user);exit;
$address = new Address($user->address_id);
if (!$address->id) {
throw new Exception("Unbekannte Firma/Person");
}
} else {
$user->address_id = null;
}
}
@@ -198,6 +200,11 @@ class UserController extends mfBaseController
$user->permissions->preorderfront = "false";
}
if ($r->preorderlogistics == "true") {
$user->permissions->preorderlogistics = "true";
} else {
$user->permissions->preorderlogistics = "false";
}
// set can permissions

View File

@@ -6,6 +6,7 @@ class WorkerPermission extends mfBaseModel {
public $isTechnician = false;
public $isPreorderfront = false;
public $isPreorderaddressreporting = false;
public $isPreorderlogistics = false;
public function loadByUserId($userid) {
$res = $this->db->select($this->table,"*","worker_id=$userid");
@@ -37,6 +38,9 @@ class WorkerPermission extends mfBaseModel {
if($this->preorderaddressreporting == 'true') {
$this->isPreorderaddressreporting= true;
}
if($this->preorderlogistics == 'true') {
$this->isPreorderlogistics = true;
}
}
}

View File

@@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
final class AddPreorderlogisticsPermission extends AbstractMigration
{
public function up(): void
{
if($this->getEnvironment() == "thetool") {
$table = $this->table("WorkerPermission");
$table->addColumn("preorderlogistics", "enum", ["values" => 'false,true', "default" => "false", "after" => "preorderaddressreporting"]);
$table->update();
}
if($this->getEnvironment() == "addressdb") {
}
}
public function down(): void
{
if($this->getEnvironment() == "thetool") {
$this->table("WorkerPermission")->removeColumn("preorderlogistics")->update();
}
if($this->getEnvironment() == "addressdb") {
}
}
}

View File

@@ -0,0 +1,33 @@
<?php
declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
final class PreorderAddInstallationAndOrderDates extends AbstractMigration
{
public function up(): void
{
if($this->getEnvironment() == "thetool") {
$table = $this->table("Preorder");
$table->addColumn("installation_date", "integer", ["null" => true, "default" => null, "after" => "submit_request"]);
$table->addColumn("order_date", "integer", ["null" => true, "default" => null, "after" => "note"]);
$table->update();
}
if($this->getEnvironment() == "addressdb") {
}
}
public function down(): void
{
if($this->getEnvironment() == "thetool") {
$this->table("Preorder")->removeColumn("installation_date")->save();
$this->table("Preorder")->removeColumn("order_date")->save();
}
if($this->getEnvironment() == "addressdb") {
}
}
}

View File

@@ -760,7 +760,7 @@ paths:
description: Unauthorized
'404':
description: Vorbestellung nicht gefunden
/preorder/{id}/inhouseInstallationFinished:
/preorder/{id}/serviceActivated:
post:
tags:
- preorder
@@ -1137,6 +1137,11 @@ components:
extref:
type: string
description: Providereigener Identifikationsstring. Wird unverändert gespeichert und kann statt `code` in `GET /preorder` und `DELETE /preorder` angegeben werden. **Darf nicht mit Dateiendung wie z.B. `.json`, `.csv` enden, da diese als Ausgabeformat interpretiert werden können**
orderDate:
type: string
format: date
description: Bestell- oder Vertragsdatum ISO 8601 Format
example: "2023-02-01"
preorderType:
type: string
enum: [interest, provision, order]
@@ -1402,6 +1407,11 @@ components:
extref:
type: string
description: Providereigener Identifikationsstring. Wird unverändert gespeichert und kann statt `code` in `GET /preorder` und `DELETE /preorder` angegeben werden. **Darf nicht mit Dateiendung wie z.B. `.json`, `.csv` enden, da diese als Ausgabeformat interpretiert werden können**
orderDate:
type: string
format: date
description: Bestell- oder Vertragsdatum ISO 8601 Format
example: "2023-02-01"
status:
type: object
properties:
@@ -1421,6 +1431,11 @@ components:
type: string
description: Customer Installation Feedback Url
example: "https://pro.ichwillglasfaser.at/ClientSubmit/finishedInstallationWork?c=XArjnWQXGq4a8JWF"
installationDate:
type: string
format: date-time
description: Installationstermin in ISO 8601 Format
example: "2023-02-01T00:00:00+01:00"
connectionType:
type: string
enum: [single-dwelling, multi-dwelling, apartment-building, apartment, business]