Debug Netto STZ für Auftrag #".$order_id.""; // 1. Auftrag und Kunde prüfen $sqlOrder = "SELECT c.rowid, c.ref, c.fk_soc, s.nom as customer_name FROM ".MAIN_DB_PREFIX."commande c"; $sqlOrder .= " LEFT JOIN ".MAIN_DB_PREFIX."societe s ON s.rowid = c.fk_soc"; $sqlOrder .= " WHERE c.rowid = ".((int)$order_id); $resqlOrder = $db->query($sqlOrder); $order = $db->fetch_object($resqlOrder); echo "

Auftrag

"; echo "
Ref: ".$order->ref."\nKunde: ".$order->customer_name." (ID: ".$order->fk_soc.")
"; // 2. Standard-Leistung des Kunden $sqlService = "SELECT stundenzettel_default_service FROM ".MAIN_DB_PREFIX."societe_extrafields WHERE fk_object = ".((int)$order->fk_soc); $resqlService = $db->query($sqlService); $serviceObj = $db->fetch_object($resqlService); $defaultServiceId = $serviceObj ? (int)$serviceObj->stundenzettel_default_service : 0; echo "

Standard-Leistung beim Kunden

"; if ($defaultServiceId > 0) { $sqlProd = "SELECT rowid, ref, label, price FROM ".MAIN_DB_PREFIX."product WHERE rowid = ".((int)$defaultServiceId); $resqlProd = $db->query($sqlProd); $prod = $db->fetch_object($resqlProd); echo "
Service ID: ".$defaultServiceId."\nRef: ".$prod->ref."\nLabel: ".$prod->label."\nPreis: ".price($prod->price)." EUR
"; // Kundenspezifischer Preis? $priceInfo = getCustomerPrice($db, $defaultServiceId, $order->fk_soc); echo "
Effektiver Preis (mit Kundenpreis): ".price($priceInfo['price'])." EUR";
    echo " (".($priceInfo['is_customer_price'] ? "Kundenpreis" : "Standardpreis").")
"; } else { echo "
KEINE Standard-Leistung beim Kunden hinterlegt!
"; } // 3. Stundenzettel des Auftrags echo "

Stundenzettel des Auftrags

"; $sqlStz = "SELECT s.rowid, s.ref, s.status, s.hourly_rate, s.hourly_rate_is_custom,"; $sqlStz .= " (SELECT SUM(duration) FROM ".MAIN_DB_PREFIX."stundenzettel_leistung WHERE fk_stundenzettel = s.rowid) as total_minutes"; $sqlStz .= " FROM ".MAIN_DB_PREFIX."stundenzettel s"; $sqlStz .= " WHERE s.fk_commande = ".((int)$order_id); $resqlStz = $db->query($sqlStz); echo ""; echo ""; $totalNetto = 0; while ($stz = $db->fetch_object($resqlStz)) { $statusText = ($stz->status == 0) ? 'Entwurf' : 'Freigegeben'; // Leistungen dieses Stundenzettels laden $sqlLeist = "SELECT l.duration, l.fk_product, l.description, p.ref as product_ref, p.label as product_label, p.price as product_price"; $sqlLeist .= " FROM ".MAIN_DB_PREFIX."stundenzettel_leistung l"; $sqlLeist .= " LEFT JOIN ".MAIN_DB_PREFIX."product p ON p.rowid = l.fk_product"; $sqlLeist .= " WHERE l.fk_stundenzettel = ".((int)$stz->rowid); $resqlLeist = $db->query($sqlLeist); $leistungenHtml = "
IDRefStatusLeistungen
"; $leistungenHtml .= ""; $stzSubtotal = 0; while ($leist = $db->fetch_object($resqlLeist)) { $hours = $leist->duration / 60; $hourlyRate = 0; $rateSource = "KEINER!"; if ($leist->fk_product > 0) { $priceInfo = getCustomerPrice($db, $leist->fk_product, $order->fk_soc); $hourlyRate = $priceInfo['price']; $rateSource = $leist->product_ref." - ".$leist->product_label; if ($priceInfo['is_customer_price']) { $rateSource .= " (Kundenpreis)"; } } elseif ($stz->hourly_rate > 0) { $hourlyRate = (float)$stz->hourly_rate; $rateSource = "Stundenzettel-Rate"; } elseif ($defaultServiceId > 0) { $priceInfo = getCustomerPrice($db, $defaultServiceId, $order->fk_soc); $hourlyRate = $priceInfo['price']; $rateSource = "Kunden-Standard"; } $subtotal = ($stz->status >= 1) ? ($hourlyRate * $hours) : 0; if ($stz->status >= 1) { $stzSubtotal += $subtotal; } $calcText = ($stz->status >= 1) ? price($hourlyRate)." x ".$hours."h = ".price($subtotal)."" : "Nicht freigegeben"; $leistungenHtml .= ""; $leistungenHtml .= ""; $leistungenHtml .= ""; $leistungenHtml .= ""; $leistungenHtml .= ""; $leistungenHtml .= ""; } $leistungenHtml .= ""; $leistungenHtml .= "
DauerLeistungPreisBerechnung
".$hours."h".$rateSource."".price($hourlyRate)." EUR".$calcText."
Summe:".price($stzSubtotal)." EUR
"; $totalNetto += $stzSubtotal; echo ""; echo "".$stz->rowid.""; echo "".$stz->ref.""; echo "".$statusText.""; echo "".$leistungenHtml.""; echo ""; } echo ""; echo "

Ergebnis

"; echo "
Berechneter Netto STZ: ".price($totalNetto)." EUR
"; // 4. Aktueller Wert in der Datenbank $sqlCurrent = "SELECT stundenzettel_netto FROM ".MAIN_DB_PREFIX."commande_extrafields WHERE fk_object = ".((int)$order_id); $resqlCurrent = $db->query($sqlCurrent); $current = $db->fetch_object($resqlCurrent); $currentValue = $current ? $current->stundenzettel_netto : "NICHT GESETZT"; echo "
Aktueller Wert in DB: ".($currentValue !== "NICHT GESETZT" ? price($currentValue)." EUR" : $currentValue)."
"; echo "

Jetzt neu berechnen und speichern

"; if (GETPOST('update', 'int')) { $result = updateOrderNettoSTZ($db, $order_id); echo "

Berechnung durchgeführt! Ergebnis: ".price($result)." EUR

"; echo "

Seite neu laden

"; }