140 lines
6.8 KiB
PHP
Executable file
140 lines
6.8 KiB
PHP
Executable file
<?php
|
|
|
|
function deliveryinvoiceaddress_completesubstitutionarray(&$substitutionarray,$langs,$object)
|
|
{
|
|
global $conf,$db;
|
|
|
|
// Prüfe ob $object existiert und eine gültige ID hat
|
|
if (!is_object($object) || empty($object->id)) {
|
|
dol_syslog("DeliveryInvoiceAddress: Object ist null oder hat keine ID - überspringe", LOG_DEBUG);
|
|
return;
|
|
}
|
|
|
|
dol_syslog("DeliveryInvoiceAddress: START - Object class: ".get_class($object).", ID: ".$object->id, LOG_DEBUG);
|
|
|
|
// Bestimme den Element-Typ basierend auf dem Objekt
|
|
$elementType = isset($object->element) ? $object->element : '';
|
|
|
|
if (empty($elementType)) {
|
|
dol_syslog("DeliveryInvoiceAddress: Kein Element-Typ gefunden - überspringe", LOG_DEBUG);
|
|
return;
|
|
}
|
|
|
|
dol_syslog("DeliveryInvoiceAddress: Element-Typ: ".$elementType, LOG_DEBUG);
|
|
|
|
// Initialisiere alle Felder
|
|
$substitutionarray['billing_contact_firstname'] = '';
|
|
$substitutionarray['billing_contact_name'] = '';
|
|
$substitutionarray['billing_contact_address'] = '';
|
|
$substitutionarray['billing_contact_zip'] = '';
|
|
$substitutionarray['billing_contact_town'] = '';
|
|
$substitutionarray['billing_contact_country'] = '';
|
|
|
|
$substitutionarray['service_contact_firstname'] = '';
|
|
$substitutionarray['service_contact_name'] = '';
|
|
$substitutionarray['service_contact_address'] = '';
|
|
$substitutionarray['service_contact_zip'] = '';
|
|
$substitutionarray['service_contact_town'] = '';
|
|
$substitutionarray['service_contact_country'] = '';
|
|
|
|
$substitutionarray['delivery_contact_firstname'] = '';
|
|
$substitutionarray['delivery_contact_name'] = '';
|
|
$substitutionarray['delivery_contact_address'] = '';
|
|
$substitutionarray['delivery_contact_zip'] = '';
|
|
$substitutionarray['delivery_contact_town'] = '';
|
|
$substitutionarray['delivery_contact_country'] = '';
|
|
|
|
// Lade Kontakte direkt aus der DB - mit korrektem element-Typ!
|
|
$sql = "SELECT ec.rowid, ec.fk_socpeople, tc.code";
|
|
$sql .= " FROM ".MAIN_DB_PREFIX."element_contact as ec";
|
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_type_contact as tc ON ec.fk_c_type_contact = tc.rowid";
|
|
$sql .= " WHERE ec.element_id = ".((int) $object->id);
|
|
$sql .= " AND tc.element = '".$db->escape($elementType)."'";
|
|
$sql .= " AND tc.code IN ('BILLING', 'SERVICE', 'SHIPPING', 'CUSTOMER')";
|
|
|
|
dol_syslog("DeliveryInvoiceAddress: SQL: ".$sql, LOG_DEBUG);
|
|
|
|
$resql = $db->query($sql);
|
|
if (!$resql) {
|
|
dol_syslog("DeliveryInvoiceAddress: SQL ERROR: ".$db->lasterror(), LOG_ERR);
|
|
return;
|
|
}
|
|
|
|
$num = $db->num_rows($resql);
|
|
dol_syslog("DeliveryInvoiceAddress: ".$num." Kontakte gefunden", LOG_DEBUG);
|
|
|
|
if ($num == 0) {
|
|
dol_syslog("DeliveryInvoiceAddress: Keine Kontakte gefunden - ENDE", LOG_DEBUG);
|
|
return;
|
|
}
|
|
|
|
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
|
|
|
|
while ($obj = $db->fetch_object($resql)) {
|
|
dol_syslog("DeliveryInvoiceAddress: Verarbeite Kontakt - ID: ".$obj->fk_socpeople.", Code: ".$obj->code, LOG_DEBUG);
|
|
|
|
$contactobj = new Contact($db);
|
|
$result = $contactobj->fetch($obj->fk_socpeople);
|
|
|
|
if ($result > 0) {
|
|
$firstname = isset($contactobj->firstname) ? $contactobj->firstname : '';
|
|
$lastname = isset($contactobj->lastname) ? $contactobj->lastname : '';
|
|
$address = isset($contactobj->address) ? $contactobj->address : '';
|
|
$zip = isset($contactobj->zip) ? $contactobj->zip : '';
|
|
$town = isset($contactobj->town) ? $contactobj->town : '';
|
|
$country = isset($contactobj->country) ? $contactobj->country : '';
|
|
|
|
// Name-Logik: Vorname falls vorhanden, sonst Nachname
|
|
$name = !empty($firstname) ? $firstname : $lastname;
|
|
|
|
dol_syslog("DeliveryInvoiceAddress: Kontakt geladen - Vorname: ".$firstname.", Nachname: ".$lastname.", Code: ".$obj->code, LOG_DEBUG);
|
|
|
|
// BILLING und CUSTOMER werden beide als Rechnungskontakt behandelt
|
|
// BILLING hat Priorität, CUSTOMER nur wenn BILLING noch leer ist
|
|
if ($obj->code == 'BILLING') {
|
|
$substitutionarray['billing_contact_firstname'] = $firstname;
|
|
$substitutionarray['billing_contact_name'] = $name;
|
|
$substitutionarray['billing_contact_address'] = $address;
|
|
$substitutionarray['billing_contact_zip'] = $zip;
|
|
$substitutionarray['billing_contact_town'] = $town;
|
|
$substitutionarray['billing_contact_country'] = $country;
|
|
dol_syslog("DeliveryInvoiceAddress: BILLING gesetzt: ".$name." - ".$address, LOG_DEBUG);
|
|
}
|
|
elseif ($obj->code == 'CUSTOMER' && empty($substitutionarray['billing_contact_name'])) {
|
|
// CUSTOMER als Fallback für billing_contact (bei Angeboten/Aufträgen)
|
|
$substitutionarray['billing_contact_firstname'] = $firstname;
|
|
$substitutionarray['billing_contact_name'] = $name;
|
|
$substitutionarray['billing_contact_address'] = $address;
|
|
$substitutionarray['billing_contact_zip'] = $zip;
|
|
$substitutionarray['billing_contact_town'] = $town;
|
|
$substitutionarray['billing_contact_country'] = $country;
|
|
dol_syslog("DeliveryInvoiceAddress: CUSTOMER als BILLING gesetzt: ".$name." - ".$address, LOG_DEBUG);
|
|
}
|
|
elseif ($obj->code == 'SERVICE') {
|
|
$substitutionarray['service_contact_firstname'] = $firstname;
|
|
$substitutionarray['service_contact_name'] = $name;
|
|
$substitutionarray['service_contact_address'] = $address;
|
|
$substitutionarray['service_contact_zip'] = $zip;
|
|
$substitutionarray['service_contact_town'] = $town;
|
|
$substitutionarray['service_contact_country'] = $country;
|
|
dol_syslog("DeliveryInvoiceAddress: SERVICE gesetzt: ".$name." - ".$address, LOG_DEBUG);
|
|
}
|
|
elseif ($obj->code == 'SHIPPING') {
|
|
$substitutionarray['delivery_contact_firstname'] = $firstname;
|
|
$substitutionarray['delivery_contact_name'] = $name;
|
|
$substitutionarray['delivery_contact_address'] = $address;
|
|
$substitutionarray['delivery_contact_zip'] = $zip;
|
|
$substitutionarray['delivery_contact_town'] = $town;
|
|
$substitutionarray['delivery_contact_country'] = $country;
|
|
dol_syslog("DeliveryInvoiceAddress: SHIPPING gesetzt: ".$name." - ".$address, LOG_DEBUG);
|
|
}
|
|
} else {
|
|
dol_syslog("DeliveryInvoiceAddress: FEHLER beim Laden von Kontakt ID ".$obj->fk_socpeople, LOG_ERR);
|
|
}
|
|
}
|
|
|
|
$db->free($resql);
|
|
|
|
dol_syslog("DeliveryInvoiceAddress: ENDE - Alle Substitutionen gesetzt", LOG_DEBUG);
|
|
}
|
|
?>
|