From d6c6170e9d9801eb5201f277ee6600685b3109b1 Mon Sep 17 00:00:00 2001 From: Quentin VIAL-GOUTEYRON Date: Mon, 7 Jun 2021 16:01:58 +0200 Subject: [PATCH] fix multiple order linked to invoice --- htdocs/core/lib/pdf.lib.php | 120 ++++++++++++++++++++++++------------ 1 file changed, 79 insertions(+), 41 deletions(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 1babc31b4c2..9800f09b1f8 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -2122,7 +2122,7 @@ function pdf_getTotalQty($object, $type, $outputlangs) * @param Translate $outputlangs Object lang for output * @return array Linked objects */ -function pdf_getLinkedObjects($object, $outputlangs) +function pdf_getLinkedObjects(&$object, $outputlangs) { global $db, $hookmanager; @@ -2151,13 +2151,22 @@ function pdf_getLinkedObjects($object, $outputlangs) elseif ($objecttype == 'commande' || $objecttype == 'supplier_order') { $outputlangs->load('orders'); - foreach ($objects as $elementobject) - { - $linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefOrder"); + + if(count($objects) > 1) { + $object->note_public .= '
'.$outputlangs->transnoentities("RefOrder").' :
'; + 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 .= '
'; + } + } else if(count($objects) == 1) { + $elementobject = array_shift($objects); + $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]['date_title'] = $outputlangs->transnoentities("OrderDate"); $linkedobjects[$objecttype]['date_value'] = dol_print_date($elementobject->date, 'day', '', $outputlangs); - } + } } elseif ($objecttype == 'contrat') { @@ -2183,43 +2192,72 @@ function pdf_getLinkedObjects($object, $outputlangs) } elseif ($objecttype == 'shipping') { - $outputlangs->loadLangs(array("orders", "sendings")); + $outputlangs->loadLangs(array("orders", "sendings")); - foreach ($objects as $x => $elementobject) - { - $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"); - if (!empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'] .= ' / '; - $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 - { - $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.')' : ''); - $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) : ''); - } - } - } - } + if(count($objects) > 1) { + + $order = null; + if(empty($object->linkedObjects['commande']) && $object->element != 'commande') $object->note_public .= '
'.$outputlangs->transnoentities("RefOrder").' / '.$outputlangs->transnoentities("RefSending").' :
'; + else $object->note_public .= '
'.$outputlangs->transnoentities("RefSending").' :
'; + // We concat this record info into fields xxx_value. title is overwrote. + 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); + 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)) { + + $object->note_public .= $outputlangs->transnoentities($elementobject->ref); + $object->note_public .= '
'; + } + + else { + + $object->note_public .= $outputlangs->convToOutputCharset($order->ref).($order->ref_client ? ' ('.$order->ref_client.')' : ''); + $object->note_public .= ' / '.$outputlangs->transnoentities($elementobject->ref); + $object->note_public .= '
'; + } + } + } + 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"); + if(! empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'] .= ' / '; + $linkedobjects[$objecttype]['ref_value'] .= $outputlangs->transnoentities($elementobject->ref); + } + else { + $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.')' : ''); + $linkedobjects[$objecttype]['ref_value'] .= ' / '.$outputlangs->transnoentities($elementobject->ref); + } + } + } + } // For add external linked objects if (is_object($hookmanager))