db = $db; } /** * Hook completeTabsHead: Reiter „Aufmaß" an der Kundenkarte — nur bei * vorhandenen Aufträgen. * * @param array $parameters Hook-Parameter (context, head, mode, filterorigmodule) * @param CommonObject $object Societe * @param string $action Aktuelle Aktion * @param HookManager $hookmanager Hook-Verwaltung * @return int 0 = weiter */ public function completeTabsHead($parameters, &$object, &$action, $hookmanager) { global $langs, $user; $contexts = explode(':', $parameters['context'] ?? ''); if (!in_array('thirdpartycard', $contexts, true)) { return 0; } if (empty($object->id) || !isset($parameters['head']) || !is_array($parameters['head'])) { return 0; } if (($parameters['mode'] ?? '') !== 'add' || ($parameters['filterorigmodule'] ?? '') !== 'external') { return 0; } if (!$user->hasRight('eplan', 'read')) { return 0; } $anzahl = $this->zaehleAuftraege((int) $object->id); if ($anzahl < 1) { return 0; } $langs->load('eplan@eplan'); $head = &$parameters['head']; $pos = count($head); $head[$pos][0] = DOL_URL_ROOT.'/custom/eplan/aufmass_thirdparty.php?socid='.((int) $object->id); $head[$pos][1] = $langs->trans('Aufmaß').' '.$anzahl.''; $head[$pos][2] = 'aufmass'; return 0; } /** * Wie viele Aufträge hat dieser Kunde? (Grundlage: der Reiter listet Aufträge, * kein eigenes Messdaten-Schema.) * * @param int $socId Kunde * @return int Anzahl */ private function zaehleAuftraege($socId) { if ($socId <= 0) { return 0; } $sql = "SELECT COUNT(*) AS anzahl FROM ".MAIN_DB_PREFIX."commande"; $sql .= " WHERE fk_soc = ".((int) $socId); $resql = $this->db->query($sql); if (!$resql) { return 0; } $obj = $this->db->fetch_object($resql); return $obj ? (int) $obj->anzahl : 0; } }