eplan/aufmass_thirdparty.php
Eduard Wisch b2393b0385
All checks were successful
Deploy Eplan / deploy (push) Successful in 1s
feat: Tabs Aufmaß auf Auftrag + Kundenkarte [deploy]
- Tab "Aufmaß" auf Auftragskarte: PWA-Link mit Auftrags-Kontext,
  Grundriss-Liste (Platzhalter für Backend-Anbindung)
- Tab "Aufmaß" auf Kundenkarte: Aufträge des Kunden mit Aufmaß-Button
- Neue Rechte: read, write, admin
- Konstanten: EPLAN_TAB_ON_ORDER, EPLAN_TAB_ON_THIRDPARTY
- Standard Dolibarr Include-Pattern für Container-Kompatibilität

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 18:32:21 +02:00

92 lines
3.4 KiB
PHP

<?php
/* Copyright (C) 2026 Eduard Wisch <data@data-it-solution.de>
* GPL v3+
*
* Tab "Aufmaß" auf der Kundenkarte
*/
$res = 0;
if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php";
$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1;
while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { $i--; $j--; }
if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php";
if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php";
if (!$res && file_exists("../main.inc.php")) $res = @include "../main.inc.php";
if (!$res && file_exists("../../main.inc.php")) $res = @include "../../main.inc.php";
if (!$res) die("Include of main fails");
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
$langs->loadLangs(array('companies', 'eplan@eplan'));
$socid = GETPOSTINT('socid');
$object = new Societe($db);
if ($socid > 0) {
$object->fetch($socid);
}
if (!$object->id) {
llxHeader('', 'Aufmaß');
print '<div class="error">Kunde nicht gefunden</div>';
llxFooter();
exit;
}
if (!$user->hasRight('eplan', 'read')) accessforbidden();
$pwa_url = getDolGlobalString('EPLAN_PWA_URL');
llxHeader('', 'Aufmaß — '.$object->name, '', '', 0, 0, '', '', '', 'mod-eplan');
$head = societe_prepare_head($object);
print dol_get_fiche_head($head, 'aufmass', $langs->trans("ThirdParty"), -1, 'company');
dol_banner_tab($object, 'socid', '', ($user->socid ? 0 : 1), 'rowid', 'nom');
print '<div class="fichecenter">';
print '<div class="underbanner clearboth"></div>';
// Aufträge des Kunden mit Aufmaß-Status
print '<table class="noborder centpercent">';
print '<tr class="liste_titre">';
print '<td>Auftrag</td><td>Datum</td><td>Aufmaße</td><td></td>';
print '</tr>';
// Aufträge des Kunden laden
$sql = "SELECT c.rowid, c.ref, c.date_commande FROM ".MAIN_DB_PREFIX."commande as c";
$sql .= " WHERE c.fk_soc = ".((int)$object->id);
$sql .= " ORDER BY c.date_commande DESC";
$sql .= " LIMIT 20";
$resql = $db->query($sql);
$num = 0;
if ($resql) {
$num = $db->num_rows($resql);
while ($obj = $db->fetch_object($resql)) {
print '<tr class="oddeven">';
print '<td><a href="'.DOL_URL_ROOT.'/commande/card.php?id='.$obj->rowid.'">'.dol_escape_htmltag($obj->ref).'</a></td>';
print '<td>'.dol_print_date($db->jdate($obj->date_commande), 'day').'</td>';
print '<td class="opacitymedium">—</td>';
print '<td class="right">';
if (!empty($pwa_url)) {
$link = $pwa_url.'/?auftrag='.urlencode($obj->ref).'&kunde='.urlencode($object->name).'&auftrag_id='.$obj->rowid;
print '<a href="'.dol_escape_htmltag($link).'" target="_blank" class="butAction butActionSmall">Aufmaß</a>';
}
print '</td>';
print '</tr>';
}
}
if ($num == 0) {
print '<tr class="oddeven"><td colspan="4" class="opacitymedium" style="text-align: center; padding: 16px;">';
print 'Keine Aufträge für diesen Kunden.';
print '</td></tr>';
}
print '</table>';
print '</div>';
print dol_get_fiche_end();
llxFooter();
$db->close();