-
diff --git a/application/Preorder/PreorderModel.php b/application/Preorder/PreorderModel.php
index 842cb3f8e..3f4a1be80 100644
--- a/application/Preorder/PreorderModel.php
+++ b/application/Preorder/PreorderModel.php
@@ -441,6 +441,13 @@ class PreorderModel {
}
}
+ if(array_key_exists("workorder_export_date", $filter)) {
+ $workorder_export_date = $filter['workorder_export_date'];
+ if($workorder_export_date === null || $workorder_export_date === false) {
+ $where .= " AND (tt_preorder.workorder_export_date IS NULL OR tt_preorder.workorder_export_date = 0)";
+ }
+ }
+
if(array_key_exists("gemeinde", $filter)) {
$gemeinde = FronkDB::singleton()->escape($filter['gemeinde']);
if($gemeinde) {
diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php
index 5c260a560..576804b1e 100644
--- a/application/Preordercampaign/PreordercampaignController.php
+++ b/application/Preordercampaign/PreordercampaignController.php
@@ -130,24 +130,6 @@ class PreordercampaignController extends mfBaseController {
return $owners;
}
- protected function adminAction() {
- $this->layout()->setTemplate("Preordercampaign/Admin");
-
- $id = $this->request->id;
- if(!is_numeric($id) || !$id) {
- $this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error");
- $this->redirect("Preordercampaign");
- }
-
- $campaign = new Preordercampaign($id);
- if(!$campaign->id) {
- $this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error");
- $this->redirect("Preordercampaign");
- }
-
- $this->layout()->set("campaign", $campaign);
- }
-
protected function addAction() {
if(!$this->me->is("Admin")) {
$this->redirect("Preordercampaign");
@@ -425,4 +407,148 @@ class PreordercampaignController extends mfBaseController {
}
}
+
+ protected function adminAction() {
+ $this->layout()->setTemplate("Preordercampaign/Admin");
+
+ $id = $this->request->id;
+ if(!is_numeric($id) || !$id) {
+ $this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error");
+ $this->redirect("Preordercampaign");
+ }
+
+ $campaign = new Preordercampaign($id);
+ if(!$campaign->id) {
+ $this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error");
+ $this->redirect("Preordercampaign");
+ }
+
+ $this->layout()->set("campaign", $campaign);
+ }
+
+
+ protected function createRimoWorkordersAction() {
+ $this->layout()->setTemplate("Preordercampaign/Admin");
+
+ $id = $this->request->id;
+ if(!is_numeric($id) || !$id) {
+ $this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error");
+ $this->redirect("Preordercampaign");
+ }
+
+ $campaign = new Preordercampaign($id);
+ if(!$campaign->id) {
+ $this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error");
+ $this->redirect("Preordercampaign");
+ }
+
+ $missing_units = [];
+ $missing_extrefs = [];
+ $workorders_created = 0;
+ $workorders_failed = 0;
+
+ foreach(PreorderModel::search(["preordercampaign_id" => $id, "workorder_export_date" => null]) as $preorder) {
+ if($preorder->workorder_export_date) {
+ $this->log->warning(__METHOD__.": workorder_export_date not null");
+ }
+
+ if(!$preorder->adb_wohneinheit_id) {
+ //echo "Keine Wohneinheit in Preorder (".$preorder->id.") ".$preorder->ucode." ".$preorder->oaid."\n";
+ $missing_units[] = $preorder;
+ continue;
+ }
+ $wohneinheit = new ADBWohneinheit($preorder->adb_wohneinheit_id);
+ if(!$wohneinheit->id) {
+ $this->log->error(__METHOD__.": Wohneinheit nicht gefunden (Preorder ".$preorder->id." ".$preorder->ucode." ".$preorder->oaid.")");
+ continue;
+ }
+
+ if(!$wohneinheit->extref) {
+ $missing_extrefs[] = $preorder;
+ continue;
+ }
+
+ if(!$preorder->oaid) {
+ if(!$wohneinheit->oaid) {
+ $wohneinheit->oaid = $wohneinheit->getNewOAID();
+ $wohneinheit->save();
+ }
+ $preorder->oaid = $wohneinheit->oaid;
+ $preorder->save();
+ }
+
+ $params['apiKey'] = RIMO_API_JSON_APIKEY;
+ $params["homeId"] = $wohneinheit->extref;
+ $params["firstName"] = trim($preorder->firstname);
+ $params["lastName"] = trim($preorder->lastname);
+ $params["company"] = trim($preorder->company);
+ $params["phone"] = trim($preorder->phone);
+ $params["email"] = trim($preorder->email);
+ $params["orderId"] = $preorder->ucode;
+ //$params["openAccessId"] = $preorder->oaid; // TODO: flag in campaign to include OAID or not
+
+ $ctx_opts = [
+ 'http' => [
+ 'method' => 'POST',
+ 'header' => 'accept: application/json'
+ ]
+ ];
+
+ $qs = http_build_query($params);
+ //echo $qs."\n";
+
+ $createOrderEp = RIMO_API_JSON_URL.RIMO_API_JSON_EP_CREATE_WORKORDER;
+ $post_url = $createOrderEp."?".$qs;
+ $ctx = stream_context_create($ctx_opts);
+ $this->log->debug(__METHOD__.": Creating Workorder: $post_url");
+
+ $response = file_get_contents($post_url, false, $ctx);
+
+ if($response === false) {
+ echo "Fehler beim Exportieren der Workorder für Preorder ".$preorder->id." ".$preorder->ucode." ".$preorder->oaid."\n";
+ $workorders_failed++;
+ continue;
+ }
+ $preorder->workorder_export_date = date('U');
+ $preorder->workorder_export_data = $response;
+ $preorder->save();
+ $workorders_created++;
+
+ }
+
+ $errors = [];
+ $warnings = [];
+
+ if(count($missing_units)) {
+ $warnings[] = count($missing_units)." Vobestellungen ohne Wohneinheit";
+ }
+ if(count($missing_extrefs)) {
+ $warnings[] = count($missing_extrefs)." Wohneinheiten ohne extref (SDIHome_)";
+ }
+
+
+ if($workorders_failed) {
+ $errors[] = "$workorders_failed Workorders konnten nicht erstellt werden.";
+ }
+
+
+ if(count($errors)) {
+ $this->layout()->setFlash(implode("
\n", $errors), "error");
+ }
+ if(count($warnings)) {
+ $this->layout()->setFlash(implode("
\n", $warnings), "warning");
+ }
+
+ if($workorders_created) {
+ $this->layout()->setFlash("$workorders_created Workorders erfolgreich erstellt", "success");
+ } else {
+ $this->layout()->setFlash("Es konnten keine Workorders erstellt werden", "info");
+ }
+
+
+
+
+ $this->redirect("Preordercampaign", "Admin", ["id" => $id]);
+
+ }
}
\ No newline at end of file
diff --git a/scripts/preorder/test-export-preorders-rimo-workorders.php b/scripts/preorder/test-export-preorders-rimo-workorders.php
index 7569e9e83..7c42a568e 100755
--- a/scripts/preorder/test-export-preorders-rimo-workorders.php
+++ b/scripts/preorder/test-export-preorders-rimo-workorders.php
@@ -30,7 +30,7 @@ $ctx_opts = [
$missing_units = [];
$missing_extrefs = [];
-foreach(PreorderModel::search(["preordercampaign_id" => $campaign_prem_sued ]) as $preorder) {
+foreach(PreorderModel::search(["preordercampaign_id" => $campaign_prem_sued]) as $preorder) {
if(in_array($preorder->id, $ignore_preorders)) continue;
if($preorder->workorder_export_date) continue;