fix multiple order linked to invoice

This commit is contained in:
Quentin VIAL-GOUTEYRON 2021-06-07 16:01:58 +02:00
parent 17cb441569
commit d6c6170e9d

View File

@ -2122,7 +2122,7 @@ function pdf_getTotalQty($object, $type, $outputlangs)
* @param Translate $outputlangs Object lang for output * @param Translate $outputlangs Object lang for output
* @return array Linked objects * @return array Linked objects
*/ */
function pdf_getLinkedObjects($object, $outputlangs) function pdf_getLinkedObjects(&$object, $outputlangs)
{ {
global $db, $hookmanager; global $db, $hookmanager;
@ -2151,8 +2151,17 @@ function pdf_getLinkedObjects($object, $outputlangs)
elseif ($objecttype == 'commande' || $objecttype == 'supplier_order') elseif ($objecttype == 'commande' || $objecttype == 'supplier_order')
{ {
$outputlangs->load('orders'); $outputlangs->load('orders');
foreach ($objects as $elementobject)
{ if(count($objects) > 1) {
$object->note_public .= '<br/>'.$outputlangs->transnoentities("RefOrder").' : <br/>';
foreach($objects as $elementobject) {
$object->note_public .= $outputlangs->transnoentities($elementobject->ref).($elementobject->ref_client ? ' ('.$elementobject->ref_client.')' : '').($elementobject->ref_supplier ? ' ('.$elementobject->ref_supplier.')' : '').' ';
$object->note_public .= $outputlangs->transnoentities("OrderDate").' : ';
$object->note_public .= dol_print_date($elementobject->date, 'day', '', $outputlangs);
$object->note_public .= '<br/>';
}
} else if(count($objects) == 1) {
$elementobject = array_shift($objects);
$linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefOrder"); $linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefOrder");
$linkedobjects[$objecttype]['ref_value'] = $outputlangs->transnoentities($elementobject->ref).($elementobject->ref_client ? ' ('.$elementobject->ref_client.')' : '').($elementobject->ref_supplier ? ' ('.$elementobject->ref_supplier.')' : ''); $linkedobjects[$objecttype]['ref_value'] = $outputlangs->transnoentities($elementobject->ref).($elementobject->ref_client ? ' ('.$elementobject->ref_client.')' : '').($elementobject->ref_supplier ? ' ('.$elementobject->ref_supplier.')' : '');
$linkedobjects[$objecttype]['date_title'] = $outputlangs->transnoentities("OrderDate"); $linkedobjects[$objecttype]['date_title'] = $outputlangs->transnoentities("OrderDate");
@ -2185,37 +2194,66 @@ function pdf_getLinkedObjects($object, $outputlangs)
{ {
$outputlangs->loadLangs(array("orders", "sendings")); $outputlangs->loadLangs(array("orders", "sendings"));
foreach ($objects as $x => $elementobject) if(count($objects) > 1) {
{
$order = null; $order = null;
if(empty($object->linkedObjects['commande']) && $object->element != 'commande') $object->note_public .= '<br/>'.$outputlangs->transnoentities("RefOrder").' / '.$outputlangs->transnoentities("RefSending").' : <br/>';
else $object->note_public .= '<br/>'.$outputlangs->transnoentities("RefSending").' : <br/>';
// We concat this record info into fields xxx_value. title is overwrote. // We concat this record info into fields xxx_value. title is overwrote.
if (empty($object->linkedObjects['commande']) && $object->element != 'commande') // There is not already a link to order and object is not the order, so we show also info with order foreach($objects as $elementobject) {
if(empty($object->linkedObjects['commande']) && $object->element != 'commande') // There is not already a link to order and object is not the order, so we show also info with order
{ {
$elementobject->fetchObjectLinked(null, '', null, '', 'OR', 1, 'sourcetype', 0); $elementobject->fetchObjectLinked(null, '', null, '', 'OR', 1, 'sourcetype', 0);
if (! empty($elementobject->linkedObjectsIds['commande'])){ if(! empty($elementobject->linkedObjectsIds['commande'])) {
include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
$order = new Commande($db); $order = new Commande($db);
$ret = $order->fetch(reset($elementobject->linkedObjectsIds['commande'])); $ret = $order->fetch(reset($elementobject->linkedObjectsIds['commande']));
if ($ret < 1) { $order=null; } if($ret < 1) {
$order = null;
} }
} }
if (!is_object($order)) }
if(! is_object($order)) {
$object->note_public .= $outputlangs->transnoentities($elementobject->ref);
$object->note_public .= '<br/>';
}
else {
$object->note_public .= $outputlangs->convToOutputCharset($order->ref).($order->ref_client ? ' ('.$order->ref_client.')' : '');
$object->note_public .= ' / '.$outputlangs->transnoentities($elementobject->ref);
$object->note_public .= '<br/>';
}
}
}
else if(count($objects) == 1) {
$elementobject = array_shift($objects);
$order = null;
// We concat this record info into fields xxx_value. title is overwrote.
if(empty($object->linkedObjects['commande']) && $object->element != 'commande') // There is not already a link to order and object is not the order, so we show also info with order
{ {
$elementobject->fetchObjectLinked(null, '', null, '', 'OR', 1, 'sourcetype', 0);
if(! empty($elementobject->linkedObjectsIds['commande'])) {
include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
$order = new Commande($db);
$ret = $order->fetch(reset($elementobject->linkedObjectsIds['commande']));
if($ret < 1) {
$order = null;
}
}
}
if(! is_object($order)) {
$linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefSending"); $linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefSending");
if (!empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'] .= ' / '; if(! empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'] .= ' / ';
$linkedobjects[$objecttype]['ref_value'] .= $outputlangs->transnoentities($elementobject->ref); $linkedobjects[$objecttype]['ref_value'] .= $outputlangs->transnoentities($elementobject->ref);
//$linkedobjects[$objecttype]['date_title'] = $outputlangs->transnoentities("DateShipment");
//if (! empty($linkedobjects[$objecttype]['date_value'])) $linkedobjects[$objecttype]['date_value'].=' / ';
//$linkedobjects[$objecttype]['date_value'].= dol_print_date($elementobject->date_delivery,'day','',$outputlangs);
} }
else else {
{
$linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefOrder").' / '.$outputlangs->transnoentities("RefSending"); $linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefOrder").' / '.$outputlangs->transnoentities("RefSending");
if (empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'] = $outputlangs->convToOutputCharset($order->ref).($order->ref_client ? ' ('.$order->ref_client.')' : ''); if(empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'] = $outputlangs->convToOutputCharset($order->ref).($order->ref_client ? ' ('.$order->ref_client.')' : '');
$linkedobjects[$objecttype]['ref_value'] .= ' / '.$outputlangs->transnoentities($elementobject->ref); $linkedobjects[$objecttype]['ref_value'] .= ' / '.$outputlangs->transnoentities($elementobject->ref);
//$linkedobjects[$objecttype]['date_title'] = $outputlangs->transnoentities("OrderDate") . ($elementobject->date_delivery ? ' / ' . $outputlangs->transnoentities("DateShipment") : '');
//if (empty($linkedobjects[$objecttype]['date_value'])) $linkedobjects[$objecttype]['date_value'] = dol_print_date($order->date,'day','',$outputlangs);
//$linkedobjects[$objecttype]['date_value'].= ($elementobject->date_delivery ? ' / ' . dol_print_date($elementobject->date_delivery,'day','',$outputlangs) : '');
} }
} }
} }