Modul erweitert Kundenauftrag Lagerbestand eingefügt

This commit is contained in:
Eduard Wisch 2025-12-10 14:56:47 +01:00
parent 381358a7d4
commit 834a5204bc
3 changed files with 69 additions and 27 deletions

View file

@ -2,6 +2,5 @@
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="$PROJECT_DIR$/main" vcs="Git" />
</component>
</project>

View file

@ -389,7 +389,7 @@ class ActionsSupplierLink3 extends CommonHookActions
* @param HookManager $hookmanager Hook manager propagated to allow calling another hook
* @return int Return integer < 0 on error, 0 on success, 1 to replace standard code
*/
public function showLinkToObjectBlock($parameters, &$object, &$action, $hookmanager)
/*public function showLinkToObjectBlock($parameters, &$object, &$action, $hookmanager)
{
$myobject = new MyObject($object->db);
$this->results = array('myobject@supplierlink3' => array(
@ -399,20 +399,68 @@ class ActionsSupplierLink3 extends CommonHookActions
'sql' => "SELECT t.rowid, t.ref, t.ref as 'name' FROM " . $this->db->prefix() . $myobject->table_element. " as t "),);
return 1;
}
}*/
/* Add other hook methods here... */
public function printObjectLine($parameters, &$object, &$action, $hookmanager)
{
if ($parameters['currentcontext'] != 'ordersuppliercard') {
static $css_added = false;
$isSupplierOrder = ($parameters['currentcontext'] == 'ordersuppliercard');
$isCustomerOrder = ($parameters['currentcontext'] == 'ordercard');
if (!$isSupplierOrder && !$isCustomerOrder) {
return 0;
}
// CSS nur einmal hinzufügen
if (!$css_added) {
?>
<style>
/* Verstecke Info-Icons innerhalb der Lagerbestand-Anzeige */
.stock-display-wrapper .fa-info-circle {
display: none !important;
}
#tablelines tbody .fa-info-circle {
display: none !important;
}
</style>
<?php
$css_added = true;
}
$line = $parameters['line'];
$line = $parameters['line'];
// Lagerbestand und Wunschbestand abfragen
$sqlStock = "SELECT stock, desiredstock
FROM ".MAIN_DB_PREFIX."product
WHERE rowid = ".(int)$line->fk_product;
$resStock = $this->db->query($sqlStock);
$qtyStock = 0;
$desiredQty = 0;
if ($resStock && $this->db->num_rows($resStock) > 0) {
$objStock = $this->db->fetch_object($resStock);
$qtyStock = (float) $objStock->stock;
$desiredQty = (float) $objStock->desiredstock;
}
// Farbe setzen
$stockColor = 'ffffff';
if ($qtyStock < 1) {
$stockColor = 'red'; // ausverkauft
} elseif ($qtyStock < $desiredQty) {
$stockColor = 'orange'; // kleiner als Wunschbestand
}
// Lieferanten-ID aus dem Bestell-Objekt holen
if (!empty($object->socid)) {
if (!empty($object->socid) && $isSupplierOrder) {
$fk_supplier = $object->socid;
// Extrafeld-Wert vom Lieferanten laden
$sql = "SELECT shop_url FROM ".MAIN_DB_PREFIX."societe_extrafields";
$sql .= " WHERE fk_object = ".(int)$fk_supplier;
@ -428,28 +476,6 @@ class ActionsSupplierLink3 extends CommonHookActions
if (!empty($shop_url)) {
// Lagerbestand und Wunschbestand abfragen
$sqlStock = "SELECT stock, desiredstock
FROM ".MAIN_DB_PREFIX."product
WHERE rowid = ".(int)$line->fk_product;
$resStock = $this->db->query($sqlStock);
$qtyStock = 0;
$desiredQty = 0;
if ($resStock && $this->db->num_rows($resStock) > 0) {
$objStock = $this->db->fetch_object($resStock);
$qtyStock = (float) $objStock->stock;
$desiredQty = (float) $objStock->desiredstock;
}
// Farbe setzen
$stockColor = 'ffffff';
if ($qtyStock < 1) {
$stockColor = 'red'; // ausverkauft
} elseif ($qtyStock < $desiredQty) {
$stockColor = 'orange'; // kleiner als Wunschbestand
}
// Artikel-Link
$full_url = rtrim($shop_url, '/') . '/' . $line->ref_fourn;
$newref = '<a href="'.$full_url.'" target="_blank" class="classfortooltip" title="'.dol_escape_htmltag('Artikel im Shop ansehen').'">';
@ -464,6 +490,22 @@ class ActionsSupplierLink3 extends CommonHookActions
}
}
}
} elseif ($isCustomerOrder) {
// NUR für Produkte, NICHT für Dienstleistungen
if (!empty($line->fk_product) && $line->product_type == 0) {
// Lagerbestand rechtsbündig mit float
$stockInfo = '<span style="float: right; margin-left: 20px;">';
$stockInfo .= '<span class="fas fa-box-open" style="color: ' . $stockColor . ';"></span>';
$stockInfo .= '&nbsp;<span style="color: ' . $stockColor . '; font-weight: bold;">' . $qtyStock . '</span>';
$stockInfo .= '</span>';
// An verschiedene mögliche Felder anhängen
if (isset($line->product_label)) {
$line->product_label .= $stockInfo;
}
}
}
return 0;

View file

@ -122,6 +122,7 @@ class modSupplierLink3 extends DolibarrModules
'hooks' => array(
'data' => array(
'ordersuppliercard',
'ordercard',
),
'entity' => '0',
),