26require_once DOL_DOCUMENT_ROOT .
'/expedition/class/expedition.class.php';
27require_once DOL_DOCUMENT_ROOT .
'/product/class/product.class.php';
28require_once DOL_DOCUMENT_ROOT .
'/product/stock/class/entrepot.class.php';
42 $langs->loadLangs(array(
"sendings"));
47 $head[$h][0] = DOL_URL_ROOT .
"/expedition/card.php?id=" .
$object->id;
48 $head[$h][1] = $langs->trans(
"SendingCard");
49 $head[$h][2] =
'shipping';
53 $head[$h][0] = DOL_URL_ROOT .
"/expedition/dispatch.php?id=" .
$object->id;
54 $head[$h][1] = $langs->trans(
"ShipmentDistribution");
55 $head[$h][2] =
'dispatch';
59 if (
getDolGlobalInt(
'MAIN_SUBMODULE_DELIVERY') && $user->hasRight(
'expedition',
'delivery',
'lire')) {
62 if (isset(
$object->linkedObjectsIds[
'delivery']) && is_array(
$object->linkedObjectsIds[
'delivery']) && count(
$object->linkedObjectsIds[
'delivery']) > 0) {
64 $tmp = reset(
$object->linkedObjectsIds[
'delivery']);
66 $head[$h][0] = DOL_URL_ROOT .
"/delivery/card.php?id=" . ((int) $tmp);
67 $head[$h][1] = $langs->trans(
"DeliveryCard");
68 $head[$h][2] =
'delivery';
77 $objectsrc->fetch(
$object->origin_id);
79 $nbContact = count($objectsrc->liste_contact(-1,
'internal')) + count($objectsrc->liste_contact(-1,
'external'));
80 $head[$h][0] = DOL_URL_ROOT .
"/expedition/contact.php?id=" . ((int)
$object->id);
81 $head[$h][1] = $langs->trans(
"ContactsAddresses");
83 $head[$h][1] .=
'<span class="badge marginleftonlyshort">' . $nbContact .
'</span>';
85 $head[$h][2] =
'contact';
90 require_once DOL_DOCUMENT_ROOT .
'/core/lib/files.lib.php';
91 require_once DOL_DOCUMENT_ROOT .
'/core/class/link.class.php';
93 $nbFiles = count(
dol_dir_list($upload_dir,
'files', 0,
'',
'(\.meta|_preview.*\.png)$'));
95 $head[$h][0] = DOL_URL_ROOT .
'/expedition/document.php?id=' .
$object->id;
96 $head[$h][1] = $langs->trans(
'Documents');
97 if (($nbFiles + $nbLinks) > 0) {
98 $head[$h][1] .=
'<span class="badge marginleftonlyshort">' . ($nbFiles + $nbLinks) .
'</span>';
100 $head[$h][2] =
'documents';
105 if (!empty(
$object->note_private)) {
108 if (!empty(
$object->note_public)) {
111 $head[$h][0] = DOL_URL_ROOT .
"/expedition/note.php?id=" .
$object->id;
112 $head[$h][1] = $langs->trans(
"Notes");
114 $head[$h][1] .=
'<span class="badge marginleftonlyshort">' . $nbNote .
'</span>';
116 $head[$h][2] =
'note';
120 $head[$h][0] = DOL_URL_ROOT .
'/expedition/agenda.php?id=' .
$object->id;
121 $head[$h][1] = $langs->trans(
"Events");
122 if (
isModEnabled(
'agenda') && ($user->hasRight(
'agenda',
'myactions',
'read') || $user->hasRight(
'agenda',
'allactions',
'read'))) {
125 require_once DOL_DOCUMENT_ROOT .
'/core/lib/memory.lib.php';
126 $cachekey =
'count_events_expedition_' .
$object->id;
128 if (!is_null($dataretrieved)) {
129 $nbEvent = $dataretrieved;
131 $sql =
"SELECT COUNT(id) as nb";
132 $sql .=
" FROM " . MAIN_DB_PREFIX .
"actioncomm";
133 $sql .=
" WHERE fk_element = " . ((int)
$object->id);
134 $sql .=
" AND elementtype = 'shipping'";
135 $resql =
$db->query($sql);
137 $obj =
$db->fetch_object($resql);
140 dol_syslog(
'Failed to count actioncomm ' .
$db->lasterror(), LOG_ERR);
146 $head[$h][1] .= $langs->trans(
"Agenda");
148 $head[$h][1] .=
'<span class="badge marginleftonlyshort">' . $nbEvent .
'</span>';
151 $head[$h][2] =
'agenda';
177 $langs->loadLangs(array(
"sendings"));
182 if (
getDolGlobalInt(
'MAIN_SUBMODULE_EXPEDITION') && $user->hasRight(
'expedition',
'lire')) {
183 $head[$h][0] = DOL_URL_ROOT .
"/expedition/card.php?id=" .
$object->origin_id;
184 $head[$h][1] = $langs->trans(
"SendingCard");
185 $head[$h][2] =
'shipping';
189 $head[$h][0] = DOL_URL_ROOT .
"/delivery/card.php?id=" .
$object->id;
190 $head[$h][1] = $langs->trans(
"DeliveryCard");
191 $head[$h][2] =
'delivery';
206 $tmpobject->fetch(
$object->origin_id);
212 $objectsrc = $tmpobject;
213 if ($tmpobject->origin_type ==
'commande' && $tmpobject->origin_id > 0) {
215 $objectsrc->fetch($tmpobject->origin_id);
217 $nbContact = count($objectsrc->liste_contact(-1,
'internal')) + count($objectsrc->liste_contact(-1,
'external'));
218 $head[$h][0] = DOL_URL_ROOT .
"/expedition/contact.php?id=" . $tmpobject->id;
219 $head[$h][1] = $langs->trans(
"ContactsAddresses");
220 if ($nbContact > 0) {
221 $head[$h][1] .=
'<span class="badge marginleftonlyshort">' . $nbContact .
'</span>';
223 $head[$h][2] =
'contact';
228 require_once DOL_DOCUMENT_ROOT .
'/core/lib/files.lib.php';
229 require_once DOL_DOCUMENT_ROOT .
'/core/class/link.class.php';
231 $nbFiles = count(
dol_dir_list($upload_dir,
'files', 0,
'',
'(\.meta|_preview.*\.png)$'));
233 $head[$h][0] = DOL_URL_ROOT .
'/expedition/document.php?id=' . $tmpobject->id;
234 $head[$h][1] = $langs->trans(
'Documents');
235 if (($nbFiles + $nbLinks) > 0) {
236 $head[$h][1] .=
'<span class="badge marginleftonlyshort">' . ($nbFiles + $nbLinks) .
'</span>';
238 $head[$h][2] =
'documents';
243 if (!empty($tmpobject->note_private)) {
246 if (!empty($tmpobject->note_public)) {
249 $head[$h][0] = DOL_URL_ROOT .
"/expedition/note.php?id=" . $tmpobject->id;
250 $head[$h][1] = $langs->trans(
"Notes");
252 $head[$h][1] .=
'<span class="badge marginleftonlyshort">' . $nbNote .
'</span>';
254 $head[$h][2] =
'note';
258 $head[$h][0] = DOL_URL_ROOT .
'/expedition/agenda.php?id=' . $tmpobject->id;
259 $head[$h][1] = $langs->trans(
"Events");
260 if (
isModEnabled(
'agenda') && ($user->hasRight(
'agenda',
'myactions',
'read') || $user->hasRight(
'agenda',
'allactions',
'read'))) {
263 require_once DOL_DOCUMENT_ROOT .
'/core/lib/memory.lib.php';
264 $cachekey =
'count_events_expedition_' . $tmpobject->id;
266 if (!is_null($dataretrieved)) {
267 $nbEvent = $dataretrieved;
269 $sql =
"SELECT COUNT(id) as nb";
270 $sql .=
" FROM " . MAIN_DB_PREFIX .
"actioncomm";
271 $sql .=
" WHERE fk_element = " . ((int) $tmpobject->id);
272 $sql .=
" AND elementtype = 'shipping'";
273 $resql =
$db->query($sql);
275 $obj =
$db->fetch_object($resql);
278 dol_syslog(
'Failed to count actioncomm ' .
$db->lasterror(), LOG_ERR);
284 $head[$h][1] .= $langs->trans(
"Agenda");
286 $head[$h][1] .=
'<span class="badge marginleftonlyshort">' . $nbEvent .
'</span>';
289 $head[$h][2] =
'agenda';
311function show_list_sending_receive($origin, $origin_id, $filter =
'')
320 $sql =
"SELECT obj.rowid, obj.fk_product, obj.label, obj.description, obj.product_type as fk_product_type, obj.qty as qty_asked, obj.date_start, obj.date_end, obj.special_code,";
321 $sql .=
" ed.rowid as edrowid, ed.qty as qty_shipped, ed.fk_expedition as expedition_id, ed.fk_elementdet, ed.fk_entrepot as warehouse_id,";
322 $sql .=
" e.rowid as sendingid, e.ref as exp_ref, e.date_creation, e.date_delivery, e.date_expedition, e.billed, e.fk_statut as status, e.signed_status,";
323 $sql .=
' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid, p.tobatch as product_tobatch,';
324 $sql .=
' p.description as product_desc';
325 $sql .=
" FROM " . MAIN_DB_PREFIX .
"expeditiondet as ed,";
326 $sql .=
" " . MAIN_DB_PREFIX .
"expedition as e,";
327 $sql .=
" " . MAIN_DB_PREFIX .
$db->sanitize($origin) .
"det as obj";
328 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"product as p ON obj.fk_product = p.rowid";
330 $sql .=
" WHERE e.entity IN (" .
getEntity(
'expedition') .
")";
331 $sql .=
" AND obj.fk_" .
$db->sanitize($origin) .
" = " . ((int) $origin_id);
332 $sql .=
" AND obj.rowid = ed.fk_elementdet";
334 $sql .=
" AND obj.special_code <> " . SUBTOTALS_SPECIAL_CODE;
336 $sql .=
" AND ed.fk_expedition = e.rowid";
340 $sql .=
" ORDER BY obj.rowid, obj.fk_product";
342 dol_syslog(
"show_list_sending_receive", LOG_DEBUG);
343 $resql =
$db->query($sql);
345 $num =
$db->num_rows($resql);
355 print
'<div class="div-table-responsive-no-min">';
356 print
'<table class="liste centpercent">';
357 print
'<tr class="liste_titre">';
359 print
'<td>' . $langs->trans(
"SendingSheet") .
'</td>';
360 print
'<td>' . $langs->trans(
"Description") .
'</td>';
361 print
'<td class="center">' . $langs->trans(
"DateCreation") .
'</td>';
362 print
'<td class="center">' . $langs->trans(
"DateDeliveryPlanned") .
'</td>';
363 print
'<td class="center">' . $langs->trans(
"QtyPreparedOrShipped") .
'</td>';
365 print
'<td>' . $langs->trans(
"Warehouse") .
'</td>';
374 print
'<td>' . $langs->trans(
"DeliveryOrder") .
'</td>';
376 print
'<td class="right">' . $langs->trans(
"DeliveryDate") .
'</td>';
381 $objp =
$db->fetch_object($resql);
383 $expedition->id = $objp->expedition_id;
384 $expedition->ref = $objp->exp_ref;
385 $expedition->billed = $objp->billed;
386 $expedition->statut = $objp->status;
387 $expedition->status = $objp->status;
388 $expedition->signed_status = $objp->signed_status;
390 print
'<tr class="oddeven">';
393 print
'<td class="tdoverflowmax125">';
394 print $expedition->getNomUrl(1);
399 if ($objp->fk_product > 0) {
403 '@phan-var-force CommonObject $object';
408 $prod->id = $objp->fk_product;
409 $prod->getMultiLangs();
411 $outputlangs = $langs;
413 if (empty($newlang) &&
GETPOST(
'lang_id',
'aZ09')) {
414 $newlang =
GETPOST(
'lang_id',
'aZ09');
416 if (empty($newlang)) {
417 $newlang =
$object->thirdparty->default_lang;
419 if (!empty($newlang)) {
421 $outputlangs->setDefaultLang($newlang);
424 $label = (!empty(
$prod->multilangs[$outputlangs->defaultlang][
"label"])) ?
$prod->multilangs[$outputlangs->defaultlang][
"label"] : $objp->product_label;
426 $label = (!empty($objp->label) ? $objp->label : $objp->product_label);
432 $product_static->type = $objp->fk_product_type;
433 $product_static->id = $objp->fk_product;
434 $product_static->ref = $objp->ref;
435 $product_static->status_batch = $objp->product_tobatch;
437 $text = $product_static->getNomUrl(1);
438 $text .=
' - ' . $label;
440 print $form->textwithtooltip($text, $description, 3, 0,
'', (
string) $i);
447 print(!empty($objp->description) ? ((empty($objp->product) || $objp->description != $objp->product) ?
'<br>' .
dol_htmlentitiesbr($objp->description) :
'') :
'');
453 if ($objp->fk_product_type == 1) {
454 $text =
img_object($langs->trans(
'Service'),
'service');
456 $text =
img_object($langs->trans(
'Product'),
'product');
459 if (!empty($objp->label)) {
460 $text .=
' <strong>' . $objp->label .
'</strong>';
461 print $form->textwithtooltip($text, $objp->description, 3, 0,
'', (
string) $i);
463 print $text .
' ' . nl2br($objp->description);
474 print
'<td class="nowrap center">' .
dol_print_date(
$db->jdate($objp->date_creation),
'day') .
'</td>';
477 print
'<td class="nowrap center">' .
dol_print_date(
$db->jdate($objp->date_delivery),
'day') .
'</td>';
480 print
'<td class="center">' . $objp->qty_shipped .
'</td>';
484 print
'<td class="tdoverflowmax125">';
485 if ($objp->warehouse_id > 0) {
486 $warehousestatic->fetch($objp->warehouse_id);
487 print $warehousestatic->getNomUrl(1);
526 include_once DOL_DOCUMENT_ROOT .
'/delivery/class/delivery.class.php';
527 $expedition->fetchObjectLinked($expedition->id, $expedition->element,
null,
'delivery');
531 if (!empty($expedition->linkedObjects[
'delivery'])) {
532 $receiving = reset($expedition->linkedObjects[
'delivery']);
535 if (!empty($receiving)) {
537 '@phan-var-force Delivery $receiving';
545 print $receiving->getNomUrl(1);
555 print
'<td class="right">';
560 print
'<td> </td>';
561 print
'<td> </td>';
if(! $sortfield) if(! $sortorder) $object
Class to manage customers orders.
Class to manage warehouses.
const STATUS_DRAFT
Draft status.
static count($dbs, $objecttype, $objectid)
Return nb of links.
Class to manage products or services.
Class to manage translations.
dol_dir_list($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $allowothertags=array())
Show a picto called object_picto (generic function)
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0, $allowdash=0)
Clean a string to use it as a file name.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
print_date_range($date_start, $date_end, $format='', $outputlangs=null)
Format output for start and end date.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
complete_head_from_modules($conf, $langs, $object, &$head, &$h, $type, $mode='add', $filterorigmodule='')
Complete or removed entries into a head array (used to build tabs).
dol_htmlentitiesbr($stringtoencode, $nl2brmode=0, $pagecodefrom='UTF-8', $removelasteolbr=1)
This function is called to encode a string into a HTML string but differs from htmlentities because a...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
getEntity($element, $shared=1, $currentobject=null)
Get list of entity id to use.
dol_setcache($memoryid, $data, $expire=0, $filecache=0, $replace=0)
Save data into a memory area shared by all users, all sessions on server.
dol_getcache($memoryid, $filecache=0)
Read a memory area shared by all users, all sessions on server.
delivery_prepare_head($object)
Prepare array with list of tabs.
shipping_prepare_head($object)
Prepare array with list of tabs.