40require
'../main.inc.php';
49require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/reception/class/reception.class.php';
51require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
52require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
53require_once DOL_DOCUMENT_ROOT.
'/core/lib/product.lib.php';
54require_once DOL_DOCUMENT_ROOT.
'/core/lib/reception.lib.php';
55require_once DOL_DOCUMENT_ROOT.
'/core/modules/reception/modules_reception.php';
56require_once DOL_DOCUMENT_ROOT.
'/core/class/doleditor.class.php';
57require_once DOL_DOCUMENT_ROOT.
'/core/class/extrafields.class.php';
58require_once DOL_DOCUMENT_ROOT.
'/product/stock/class/entrepot.class.php';
59require_once DOL_DOCUMENT_ROOT.
'/product/stock/class/productlot.class.php';
61 require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
64 require_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
66require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
67require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.orderline.class.php';
68require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.dispatch.class.php';
70 require_once DOL_DOCUMENT_ROOT.
'/product/class/productbatch.class.php';
73 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
74 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
77$langs->loadLangs(array(
"receptions",
"companies",
"bills",
'orders',
'stocks',
'other',
'propal',
'sendings'));
80 $langs->load(
'incoterm');
83 $langs->load(
'productbatch');
86$origin =
GETPOST(
'origin',
'alpha');
89if (empty($origin_id) && !empty($origin)) {
92if (empty($origin_id) && !empty($origin)) {
95if (empty($origin_id) && !empty($origin)) {
102$action =
GETPOST(
'action',
'alpha');
107$confirm =
GETPOST(
'confirm',
'alpha');
108$cancel =
GETPOST(
'cancel',
'alpha');
109$backtopage =
GETPOST(
'backtopage',
'alpha');
110$backtopageforcancel =
GETPOST(
'backtopageforcancel',
'alpha');
116$cancel =
GETPOST(
'cancel',
'alpha');
119$backtopage =
GETPOST(
'backtopage',
'alpha');
130$extrafields->fetch_name_optionals_label(
$object->table_element);
131$extrafields->fetch_name_optionals_label(
$object->table_element_line);
132$extrafields->fetch_name_optionals_label($objectorder->table_element_line);
135include DOL_DOCUMENT_ROOT.
'/core/actions_fetchobject.inc.php';
147 if (empty($origin)) {
148 if (!empty(
$object->origin_type)) {
149 $origin =
$object->origin_type;
154 if (empty($origin_id)) {
155 $origin_id =
$object->origin_id;
160$hookmanager->initHooks(array(
'receptioncard',
'globalcard'));
167 $socid = $user->socid;
171if (
isModEnabled(
"reception") || $origin ==
'reception' || empty($origin)) {
175 if ($origin ==
'supplierorder' || $origin ==
'order_supplier') {
176 $result =
restrictedArea($user,
'fournisseur', $origin_id,
'commande_fournisseur',
'commande');
177 } elseif (!$user->hasRight($origin,
'lire') && !$user->hasRight($origin,
'read')) {
183 $permissiontoread = $user->hasRight(
'reception',
'lire');
184 $permissiontoadd = $user->hasRight(
'reception',
'creer');
185 $permissiontoedit = $user->hasRight(
'reception',
'creer');
186 $permissiondellink = $user->hasRight(
'reception',
'creer');
187 $permissiontovalidate = ((!
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && $user->hasRight(
'reception',
'creer')) || (
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && $user->hasRight(
'reception',
'reception_advance',
'validate')));
188 $permissiontodelete = $user->hasRight(
'reception',
'supprimer');
190 $permissiontoread = $user->hasRight(
'fournisseur',
'commande',
'receptionner');
191 $permissiontoadd = $user->hasRight(
'fournisseur',
'commande',
'receptionner');
192 $permissiondellink = $user->hasRight(
'fournisseur',
'commande',
'receptionner');
193 $permissiontovalidate = ((!
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && $user->hasRight(
'fournisseur',
'commande',
'receptionner')) || (
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && $user->hasRight(
'fournisseur',
'commande_advance',
'check')));
194 $permissiontodelete = $user->hasRight(
'fournisseur',
'commande',
'receptionner');
196$permissiontoeditextra = $permissiontoadd;
197if (
GETPOST(
'attribute',
'aZ09') && isset($extrafields->attributes[
$object->table_element][
'perms'][
GETPOST(
'attribute',
'aZ09')])) {
199 $permissiontoeditextra =
dol_eval((
string) $extrafields->attributes[
$object->table_element][
'perms'][
GETPOST(
'attribute',
'aZ09')]);
206$shipping_method_id =
null;
217$parameters = array();
218$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
223if (empty($reshook)) {
224 $backurlforlist = DOL_URL_ROOT.
'/reception/list.php';
226 if (empty($backtopage) || ($cancel && empty($id))) {
227 if (empty($backtopage) || ($cancel && strpos($backtopage,
'__ID__'))) {
228 if (empty($id) && (($action !=
'add' && $action !=
'create') || $cancel)) {
229 $backtopage = $backurlforlist;
231 $backtopage = DOL_URL_ROOT.
'/reception/card.php?id='.((!empty($id) &&
$id > 0) ? $id :
'__ID__');
237 if (!empty($backtopageforcancel)) {
238 header(
"Location: ".$backtopageforcancel);
240 } elseif (!empty($backtopage)) {
241 header(
"Location: ".$backtopage);
255 include DOL_DOCUMENT_ROOT.
'/core/actions_dellink.inc.php';
258 if ($action ==
'reopen' && $permissiontoadd) {
266 if ($action ==
'modif' && $permissiontoadd) {
267 $result =
$object->setDraft($user);
271 $outputlangs = $langs;
274 $newlang =
GETPOST(
'lang_id',
'aZ09');
277 $newlang =
$object->thirdparty->default_lang;
279 if (!empty($newlang)) {
281 $outputlangs->setDefaultLang($newlang);
285 $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
293 if ($action ==
'set_incoterms' &&
isModEnabled(
'incoterm') && $permissiontoadd) {
297 if ($action ==
'setref_supplier' && $permissiontoadd) {
302 $result =
$object->setValueFrom(
'ref_supplier',
GETPOST(
'ref_supplier',
'alpha'),
'',
null,
'text',
'', $user,
'RECEPTION_MODIFY');
305 $action =
'editref_supplier';
307 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".
$object->id);
312 if ($action ==
'update_extras' && $permissiontoeditextra) {
315 $attribute_name =
GETPOST(
'attribute',
'aZ09');
318 $ret = $extrafields->setOptionalsFromPost(
null, $object, $attribute_name);
324 $result =
$object->updateExtraField($attribute_name,
'RECEPTION_MODIFY');
332 $action =
'edit_extras';
337 if ($action ==
'add' && $permissiontoadd) {
343 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ThirdParty")),
null,
'errors');
352 $object->origin_type = $origin;
353 $object->origin_id = $origin_id;
363 $object->date_delivery = $date_delivery;
364 $object->date_reception = $date_reception;
370 $object->location_incoterms =
GETPOST(
'location_incoterms',
'alpha');
375 $ret = $extrafields->setOptionalsFromPost(
null, $object);
388 if ($origin && $origin_id > 0) {
392 $object->origin_type = $origin;
393 $object->origin_id = $origin_id;
404 $object->date_delivery = $date_delivery;
405 $object->date_reception = $date_reception;
411 $object->location_incoterms =
GETPOST(
'location_incoterms',
'alpha');
413 if (
$object->origin ==
"supplierorder") {
414 $object->origin =
'order_supplier';
415 $object->origin_type =
'order_supplier';
416 $classname =
'CommandeFournisseur';
418 $classname = ucfirst(
$object->origin_type);
420 $objectsrc =
new $classname(
$db);
421 $objectsrc->fetch(
$object->origin_id);
423 $object->socid = $objectsrc->socid;
426 $batch_line = array();
427 $stockLine = array();
428 $array_options = array();
433 foreach ($_POST as $key => $value) {
436 if (strpos($key,
'qtyasked') !==
false) {
442 for ($i = 1; $i <= $num; $i++) {
454 if (
GETPOST($qty,
'alpha') > 0) {
459 $array_options[$i] = $extrafields->getOptionalsFromPost(
$object->table_element_line, (
string) $i);
464 for ($i = 1; $i <= $num; $i++) {
468 foreach ($objectsrc->lines as $linesrc) {
469 if ($linesrc->id == $lineId) {
470 $lineToTest = $linesrc;
474 if (empty($lineToTest)) {
478 $comment =
"comment".$i;
483 $cost_price =
"cost_price".$i;
502 if ($entrepot_id < 0) {
509 $eatby =
GETPOST($eatby,
'alpha');
510 $sellby =
GETPOST($sellby,
'alpha');
511 $eatbydate = str_replace(
'/',
'-', $eatby);
512 $sellbydate = str_replace(
'/',
'-', $sellby);
515 $ret =
$object->addline($entrepot_id,
GETPOSTINT($idl), (
float)
price2num(
GETPOST($qty),
'MS'), $array_options[$i],
GETPOST($comment), strtotime($eatbydate), strtotime($sellbydate),
GETPOST($batch),
GETPOSTFLOAT($cost_price,
'MU'));
527 $ret = $extrafields->setOptionalsFromPost(
null, $object);
541 $outputlangs = $langs;
544 $newlang =
GETPOST(
'lang_id',
'aZ09');
547 $newlang =
$object->thirdparty->default_lang;
549 if (!empty($newlang)) {
551 $outputlangs->setDefaultLang($newlang);
556 $result =
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
564 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"QtyToReceive").
'/'.$langs->transnoentitiesnoconv(
"Warehouse")),
null,
'errors');
570 header(
"Location: card.php?id=" .
$object->id);
577 } elseif ($action ==
'confirm_valid' && $confirm ==
'yes' && $permissiontovalidate) {
580 $result =
$object->valid($user);
583 $langs->load(
"errors");
588 $outputlangs = $langs;
591 $newlang =
GETPOST(
'lang_id',
'aZ09');
594 $newlang =
$object->thirdparty->default_lang;
596 if (!empty($newlang)) {
598 $outputlangs->setDefaultLang($newlang);
603 $result =
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
609 } elseif ($action ==
'confirm_delete' && $confirm ==
'yes' && $permissiontodelete) {
610 $result =
$object->delete($user);
612 header(
"Location: ".DOL_URL_ROOT.
'/reception/index.php');
624 } elseif ($action ==
'setdate_livraison' && $permissiontoadd) {
628 $result =
$object->setDeliveryDate($user, $datedelivery);
632 } elseif ($action ==
'setdate_reception' && $user->hasRight(
'reception',
'creer')) {
636 $result =
$object->setReceptionDate($user, $datereception);
640 } elseif ($action ==
'confirm_deleteline' && $confirm ==
'yes' && $permissiontoadd) {
642 $result =
$object->deleteLine($user, $lineid);
647 $outputlangs = $langs;
650 $newlang =
GETPOST(
'lang_id',
'aZ09');
653 $newlang =
$object->thirdparty->default_lang;
655 if (!empty($newlang)) {
657 $outputlangs->setDefaultLang($newlang);
661 $object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
664 header(
'Location: ' . $_SERVER[
"PHP_SELF"] .
'?id=' .
$object->id);
669 } elseif (in_array($action, array(
'settracking_number',
'settracking_url',
'settrueWeight',
'settrueWidth',
'settrueHeight',
'settrueDepth',
'setshipping_method_id')) && $permissiontoadd) {
673 if ($action ==
'settracking_number') {
674 $object->tracking_number = trim(
GETPOST(
'tracking_number',
'alpha'));
676 if ($action ==
'settracking_url') {
677 $object->tracking_url = trim(
GETPOST(
'tracking_url',
'restricthtml'));
679 if ($action ==
'settrueWeight') {
683 if ($action ==
'settrueWidth') {
686 if ($action ==
'settrueHeight') {
690 if ($action ==
'settrueDepth') {
693 if ($action ==
'setshipping_method_id') {
697 if (
$object->update($user) >= 0) {
698 header(
"Location: card.php?id=" .
$object->id);
704 } elseif ($action ==
'builddoc' && $permissiontoread) {
713 $outputlangs = $langs;
716 $newlang =
GETPOST(
'lang_id',
'aZ09');
719 $newlang = $reception->thirdparty->default_lang;
721 if (!empty($newlang)) {
723 $outputlangs->setDefaultLang($newlang);
725 $result =
$object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
730 } elseif ($action ==
'remove_file' && $permissiontoadd) {
732 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
734 $upload_dir =
$conf->reception->dir_output;
735 $file = $upload_dir.
'/'.
GETPOST(
'file');
742 } elseif ($action ==
'classifybilled' && $permissiontoadd) {
743 $result =
$object->setBilled();
745 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id);
751 } elseif ($action ==
'classifyclosed' && $permissiontoread) {
752 $result =
$object->setClosed();
754 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id);
760 } elseif ($action ==
'deleteline' && !empty($line_id) && $permissiontoread) {
765 $num_prod = count($lines);
766 for ($i = 0; $i < $num_prod; $i++) {
767 if ($lines[$i]->
id == $line_id) {
769 $line->id = $line_id;
770 if (!$error && $line->delete($user) < 0) {
774 unset($_POST[
"lineid"]);
778 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id);
783 } elseif ($action ==
'updateline' &&
GETPOST(
'save') && $permissiontoadd) {
788 if (!
$object->fetch($id) > 0) {
793 $qty =
GETPOST(
'qty',
'alpha');
795 $element_type =
'reception';
801 $extralabelsline = $extrafields->fetch_name_optionals_label(
$object->table_element_line);
802 $array_options = $extrafields->getOptionalsFromPost(
$object->table_element_line);
804 if (is_array($extralabelsline)) {
806 foreach ($extralabelsline as $key => $value) {
807 unset($_POST[
"options_" . $key]);
816 $result =
$object->updatelinefree(
GETPOSTINT(
'lineid'), (
float) $qty, $element_type, $fk_product,
GETPOSTINT(
'units'), $rang, $description, 0, $array_options);
821 $outputlangs = $langs;
824 $newlang =
GETPOST(
'lang_id',
'aZ09');
827 $newlang =
$object->thirdparty->default_lang;
829 if (!empty($newlang)) {
831 $outputlangs->setDefaultLang($newlang);
832 $outputlangs->load(
'products');
836 $object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
838 unset($_POST[
'qty']);
839 unset($_POST[
'units']);
844 } elseif ($origin && $origin_id > 0) {
852 $num_prod = count($lines);
853 for ($i = 0; $i < $num_prod; $i++) {
854 if ($lines[$i]->
id == $line_id) {
856 $line->fetch($line_id);
858 $extrafields->fetch_name_optionals_label(
$object->table_element_line);
859 $line->array_options = $extrafields->getOptionalsFromPost(
$object->table_element_line);
861 $line->fk_product = $lines[$i]->fk_product;
863 if ($lines[$i]->fk_product > 0) {
865 $stockLocation =
"entl".$line_id;
866 $qty =
"qtyl".$line_id;
867 $comment =
"comment".$line_id;
869 $line->id = $line_id;
870 $line->fk_entrepot =
GETPOSTINT($stockLocation);
872 $line->comment =
GETPOST($comment,
'alpha');
875 $batch =
"batch".$line_id;
876 $dlc =
"dlc".$line_id;
877 $dluo =
"dluo".$line_id;
879 $eatby =
GETPOST($dluo,
'alpha');
880 $eatbydate = str_replace(
'/',
'-', $eatby);
882 $sellby =
GETPOST($dlc,
'alpha');
883 $sellbydate = str_replace(
'/',
'-', $sellby);
884 $line->batch =
GETPOST($batch,
'alpha');
885 $line->eatby = strtotime($eatbydate);
886 $line->sellby = strtotime($sellbydate);
889 if ($line->update($user) < 0) {
894 $qty =
"qtyl".$line_id;
895 $line->id = $line_id;
897 $line->fk_entrepot = 0;
898 if ($line->update($user) < 0) {
907 unset($_POST[
"lineid"]);
912 $outputlangs = $langs;
915 $newlang =
GETPOST(
'lang_id',
'aZ09');
918 $newlang =
$object->thirdparty->default_lang;
920 if (!empty($newlang)) {
922 $outputlangs->setDefaultLang($newlang);
926 $object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
932 header(
'Location: '.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id);
935 header(
'Location: '.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id);
939 } elseif ($action ==
'updateline' && $permissiontoadd &&
GETPOST(
'cancel',
'alpha') == $langs->trans(
"Cancel")) {
940 header(
'Location: '.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id);
942 } elseif ($action ==
'addline' && !$origin &&
getDolGlobalString(
'RECEPTION_STANDALONE') && $permissiontoadd) {
943 $langs->load(
'errors');
945 $line_desc = (GETPOSTISSET(
'dp_desc') ?
GETPOST(
'dp_desc',
'restricthtml') :
'');
949 $element_type =
'reception';
955 $prod_entry_mode =
GETPOST(
'prod_entry_mode',
'aZ09');
956 if ($prod_entry_mode ==
'free') {
961 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ProductOrService")),
null,
'errors');
969 $extralabelsline = $extrafields->fetch_name_optionals_label(
$object->table_element_line);
970 $array_options = $extrafields->getOptionalsFromPost(
$object->table_element_line, $predef);
972 if (is_array($extralabelsline)) {
974 foreach ($extralabelsline as $key => $value) {
975 unset($_POST[
"options_".$key]);
979 if ($prod_entry_mode ==
'free' && (empty($idprod) || $idprod < 0) &&
GETPOST(
'type') < 0) {
980 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Type')),
null,
'errors');
985 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Qty')),
null,
'errors');
989 setEventMessages($langs->trans(
'FieldCannotBeNegative', $langs->transnoentitiesnoconv(
'Qty')),
null,
'errors');
992 if ($prod_entry_mode ==
'free' && (empty($idprod) || $idprod < 0) && empty($line_desc)) {
993 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Description')),
null,
'errors');
997 if (!$error &&
isModEnabled(
'variants') && $prod_entry_mode !=
'free') {
998 if ($combinations =
GETPOST(
'combinations',
'array')) {
1002 if ($res = $prodcomb->fetchByProductCombination2ValuePairs($idprod, $combinations)) {
1003 $idprod = $res->fk_product_child;
1004 $fk_product = $idprod;
1006 setEventMessages($langs->trans(
'ErrorProductCombinationNotFound'),
null,
'errors');
1012 if (!$error && ($qty >= 0) && (!empty($line_desc) || (!empty($idprod) && $idprod > 0))) {
1014 if (!empty($idprod) && $idprod > 0) {
1016 $prod->fetch($idprod);
1017 $desc =
$prod->label;
1018 $description = $desc;
1021 $outputlangs = $langs;
1023 if (
GETPOST(
'lang_id',
'aZ09')) {
1024 $newlang =
GETPOST(
'lang_id',
'aZ09');
1026 if (empty($newlang)) {
1027 $newlang =
$object->thirdparty->default_lang;
1029 if (!empty($newlang)) {
1031 $outputlangs->setDefaultLang($newlang);
1034 $description = (!empty(
$prod->multilangs[$outputlangs->defaultlang][
"description"])) ?
$prod->multilangs[$outputlangs->defaultlang][
"description"] :
$prod->
description;
1036 $description =
$prod->description;
1041 $description = $line_desc;
1048 $outputlangs = $langs;
1050 if (
GETPOST(
'lang_id',
'alpha')) {
1051 $newlang =
GETPOST(
'lang_id',
'alpha');
1053 if (empty($newlang)) {
1054 $newlang =
$object->thirdparty->default_lang;
1056 if (!empty($newlang)) {
1058 $outputlangs->setDefaultLang($newlang);
1059 $outputlangs->load(
'products');
1061 if (!empty(
$prod->customcode)) {
1062 $tmptxt .= $outputlangs->transnoentitiesnoconv(
"CustomsCode").
': '.
$prod->customcode;
1064 if (!empty(
$prod->customcode) && !empty(
$prod->country_code)) {
1067 if (!empty(
$prod->country_code)) {
1068 $tmptxt .= $outputlangs->transnoentitiesnoconv(
"CountryOrigin").
': '.
getCountry(
$prod->country_code,
'',
$db, $outputlangs, 0);
1071 if (!empty(
$prod->customcode)) {
1072 $tmptxt .= $langs->transnoentitiesnoconv(
"CustomsCode").
': '.
$prod->customcode;
1074 if (!empty(
$prod->customcode) && !empty(
$prod->country_code)) {
1077 if (!empty(
$prod->country_code)) {
1078 $tmptxt .= $langs->transnoentitiesnoconv(
"CountryOrigin").
': '.
getCountry(
$prod->country_code,
'',
$db, $langs, 0);
1084 $type =
$prod->type;
1085 $fk_unit =
$prod->fk_unit;
1087 $label = (
GETPOST(
'product_label') ?
GETPOST(
'product_label') :
'');
1090 $fk_unit =
GETPOST(
'units',
'alpha');
1091 $description = $desc;
1092 $fk_elementdet =
'';
1098 $result =
$object->addlinefree((
float) $qty, $element_type, $idprod, $fk_unit, min($rank, count(
$object->lines) + 1), $description, $array_options);
1105 $outputlangs = $langs;
1106 $newlang =
GETPOST(
'lang_id',
'alpha');
1108 $newlang =
$object->thirdparty->default_lang;
1110 if (!empty($newlang)) {
1112 $outputlangs->setDefaultLang($newlang);
1114 $object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
1117 header(
'Location: '.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id);
1124 include DOL_DOCUMENT_ROOT.
'/core/actions_printing.inc.php';
1130 $triggersendname =
'RECEPTION_SENTBYMAIL';
1132 $mode =
'emailfromreception';
1133 $autocopy =
'MAIN_MAIL_AUTOCOPY_RECEPTION_TO';
1134 $trackid =
'rec'.$object->id;
1135 include DOL_DOCUMENT_ROOT.
'/core/actions_sendmails.inc.php';
1143$title =
$object->ref.
' - '.$langs->trans(
'Reception');
1144if ($action ==
'create') {
1145 $title = $langs->trans(
"NewReception");
1147llxHeader(
'', $title,
'Reception',
'', 0, 0,
'',
'',
'',
'mod-reception page-card');
1156 $formproject =
null;
1163if ($action ==
'create' && $origin !=
'supplierorder' && !
getDolGlobalString(
'RECEPTION_STANDALONE')) {
1164 print
load_fiche_titre($langs->trans(
"CreateReception"),
'',
'dollyrevert');
1166 print
'<br>'.$langs->trans(
"ReceptionCreationIsDoneFromOrder");
1173if ($action ==
'create' && $permissiontoadd) {
1180 $res = $soc->fetch($socid);
1183 $note_private =
$object->getDefaultCreateValueFor(
'note_private');
1184 $note_public =
$object->getDefaultCreateValueFor(
'note_public');
1186 print
'<form name="crea_reception" action="' . $_SERVER[
"PHP_SELF"] .
'" method="POST">';
1187 print
'<input type="hidden" name="token" value="' . newToken() .
'">';
1188 print
'<input type="hidden" name="action" value="add">';
1189 print
'<input type="hidden" name="changecompany" value="0">';
1190 print
'<input type="hidden" name="originid" value="' .
$id .
'">';
1191 print
'<input type="hidden" name="backtopage" value="' . $backtopage .
'">';
1195 print
'<table class="border centpercent">';
1200 print
'<td class="fieldrequired">' . $langs->trans(
'ThirdParty') .
'</td>';
1203 print $soc->getNomUrl(1);
1204 print
'<input type="hidden" name="socid" value="' . $soc->id .
'">';
1207 print
'<td class="valuefieldcreate">';
1208 print
img_picto(
'',
'company',
'class="pictofixedwidth"').$form->select_company(
'',
'socid',
'',
'SelectThirdParty', 1, 0, array(), 0,
'minwidth175 maxwidth500 widthcentpercentminusxx');
1212 $(document).ready(function() {
1213 $("#socid").change(function() {
1214 console.log("We have changed the company - Reload page");
1215 var socid = $(this).val();
1217 $("input[name=action]").val("create");
1218 $("input[name=changecompany]").val("1");
1219 $("form[name=crea_reception]").submit();
1224 print
' <a href="'.DOL_URL_ROOT.
'/societe/card.php?action=create&client=3&fournisseur=0&backtopage='.urlencode($_SERVER[
"PHP_SELF"].
'?action=create').
'"><span class="fa fa-plus-circle valignmiddle paddingleft" title="'.$langs->trans(
"AddThirdParty").
'"></span></a>';
1230 if (
isModEnabled(
'project') && is_object($formproject)) {
1232 if (empty($projectid) && !empty(
$object->fk_project)) {
1233 $projectid = (int)
$object->fk_project;
1235 $langs->load(
"projects");
1237 print
'<td>' . $langs->trans(
"Project") .
'</td><td colspan="2">';
1238 print
img_picto(
'',
'project',
'class="pictofixedwidth"');
1239 print $formproject->select_projects($soc->id, $projectid,
'projectid', 0, 0, 1, 0, 0, 0, 0,
'', 1, 0,
'widthcentpercentminusxx');
1240 print
' <a class="paddingleft" href="' . DOL_URL_ROOT .
'/projet/card.php?socid=' . $soc->id .
'&action=create&status=1&backtopage=' . urlencode($_SERVER[
"PHP_SELF"] .
'?action=create&socid=' . $soc->id) .
'"><span class="fa fa-plus-circle valignmiddle"></span></a>';
1246 print
'<tr><td>'.$langs->trans(
"DateReception").
'</td>';
1247 print
'<td colspan="3">';
1248 print
img_picto(
'',
'action',
'class="pictofixedwidth"');
1249 $date_reception = ($date_reception ? $date_reception :
$object->date_reception);
1250 print $form->selectDate($date_reception ? $date_reception : -1,
'date_reception', 1, 1, 1);
1255 print
'<tr><td>'.$langs->trans(
"DateDeliveryPlanned").
'</td>';
1256 print
'<td colspan="3">';
1257 print
img_picto(
'',
'action',
'class="pictofixedwidth"');
1258 $date_delivery = ($date_delivery ? $date_delivery :
$object->delivery_date);
1259 print $form->selectDate($date_delivery ? $date_delivery : -1,
'date_delivery', 1, 1, 1);
1265 print $langs->trans(
"Weight");
1266 print
'</td><td colspan="3">';
1267 print
img_picto(
'',
'fa-balance-scale',
'class="pictofixedwidth"');
1268 print
'<input name="weight" size="4" value="'.GETPOST(
'weight').
'"> ';
1269 $text = $formproduct->selectMeasuringUnits(
"weight_units",
"weight", (
string)
GETPOSTINT(
'weight_units'), 0, 2);
1270 $htmltext = $langs->trans(
"KeepEmptyForAutoCalculation");
1271 print $form->textwithpicto($text, $htmltext);
1276 print $langs->trans(
"Width").
' x '.$langs->trans(
"Height").
' x '.$langs->trans(
"Depth");
1277 print
' </td><td colspan="3">';
1278 print
img_picto(
'',
'fa-ruler',
'class="pictofixedwidth"');
1279 print
'<input name="sizeW" size="4" value="'.GETPOST(
'sizeW').
'">';
1280 print
' x <input name="sizeH" size="4" value="'.GETPOST(
'sizeH').
'">';
1281 print
' x <input name="sizeS" size="4" value="'.GETPOST(
'sizeS').
'">';
1283 $text = $formproduct->selectMeasuringUnits(
"size_units",
"size", (
string)
GETPOSTINT(
'size_units'), 0, 2);
1284 $htmltext = $langs->trans(
"KeepEmptyForAutoCalculation");
1285 print $form->textwithpicto($text, $htmltext);
1289 print
"<tr><td>".$langs->trans(
"ReceptionMethod").
"</td>";
1290 print
'<td colspan="3">';
1291 $recept->fetch_delivery_methods();
1292 print $form->selectarray(
"shipping_method_id", $recept->meths,
GETPOSTINT(
'shipping_method_id'), 1, 0, 0,
"", 1);
1294 print
info_admin($langs->trans(
"YouCanChangeValuesForThisListFromDictionarySetup"), 1);
1296 print
"</td></tr>\n";
1299 print
"<tr><td>".$langs->trans(
"TrackingNumber").
"</td>";
1300 print
'<td colspan="3">';
1301 print
img_picto(
'',
'barcode',
'class="pictofixedwidth"');
1302 print
'<input name="tracking_number" size="20" value="'.GETPOST(
'tracking_number',
'alpha').
'">';
1303 print
"</td></tr>\n";
1306 $extrafields->fetch_name_optionals_label(
$object->table_element);
1307 if (empty($reshook) && !empty($extrafields->attributes[
$object->table_element][
'label'])) {
1309 if ($objectsrc->fetch_optionals() > 0) {
1310 $recept->array_options = array_merge($recept->array_options, $objectsrc->array_options);
1312 print $recept->showOptionals($extrafields,
'create', $parameters);
1318 print
'<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans(
"IncotermLabel"),
$object->label_incoterms, 1).
'</label></td>';
1319 print
'<td colspan="3" class="maxwidthonsmartphone">';
1320 print
img_picto(
'',
'incoterm',
'class="pictofixedwidth"');
1321 print $form->select_incoterms((!empty(
$object->fk_incoterms) ?
$object->fk_incoterms :
''), (!empty(
$object->location_incoterms) ?
$object->location_incoterms :
''));
1327 if (is_countable($list) && count($list) > 0) {
1328 print
'<tr><td>'.$langs->trans(
'Model').
'</td>';
1329 print
'<td colspan="2">';
1330 print
img_picto(
'',
'pdf',
'class="pictofixedwidth"');
1331 include_once DOL_DOCUMENT_ROOT.
'/core/modules/reception/modules_reception.php';
1332 print $form->selectarray(
'model', $list,
getDolGlobalString(
'RECEPTION_ADDON_PDF'), 0, 0, 0,
'', 0, 0, 0,
'',
'maxwidth200 widthcentpercentminusx', 1);
1339 print
'<td class="tdtop">';
1340 print $form->textwithpicto($langs->trans(
'NotePublic'), $htmltext);
1342 print
'<td valign="top" colspan="2">';
1343 $doleditor =
new DolEditor(
'note_public', (
string) $note_public,
'', 80,
'dolibarr_notes',
'In',
false,
false, !
getDolGlobalString(
'FCKEDITOR_ENABLE_NOTE_PUBLIC') ? 0 : 1, ROWS_3,
'90%');
1344 print $doleditor->Create(1);
1347 if (!$user->socid) {
1349 print
'<td class="tdtop">';
1350 print $form->textwithpicto($langs->trans(
'NotePrivate'), $htmltext);
1352 print
'<td valign="top" colspan="2">';
1353 $doleditor =
new DolEditor(
'note_private', (
string) $note_private,
'', 80,
'dolibarr_notes',
'In',
false,
false, !
getDolGlobalString(
'FCKEDITOR_ENABLE_NOTE_PRIVATE') ? 0 : 1, ROWS_3,
'90%');
1354 print $doleditor->Create(1);
1362 print $form->buttonsSaveCancel(
"CreateDraft");
1365 } elseif ($origin) {
1366 if ($origin ==
'supplierorder') {
1367 $classname =
'CommandeFournisseur';
1369 $classname = ucfirst($origin);
1372 $objectsrc =
new $classname(
$db);
1373 if ($objectsrc->fetch($origin_id)) {
1375 $soc->fetch($objectsrc->socid);
1378 $author->fetch($objectsrc->user_author_id);
1384 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="post">';
1385 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1386 print
'<input type="hidden" name="action" value="add">';
1387 print
'<input type="hidden" name="origin" value="'.$origin.
'">';
1388 print
'<input type="hidden" name="origin_id" value="'.$objectsrc->id.
'">';
1389 print
'<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.
'">';
1390 print
'<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
1392 print
'<input type="hidden" name="entrepot_id" value="'.GETPOSTINT(
'entrepot_id').
'">';
1397 print
'<table class="border centpercent">';
1400 print
'<tr><td class="titlefieldcreate fieldrequired">';
1401 if ($origin ==
'supplierorder' &&
isModEnabled(
"supplier_order")) {
1402 print $langs->trans(
"RefOrder").
'</td><td colspan="3"><a href="'.DOL_URL_ROOT.
'/fourn/commande/card.php?id='.$objectsrc->id.
'">'.
img_object($langs->trans(
"ShowOrder"),
'order').
' '.$objectsrc->ref;
1405 print $langs->trans(
"RefProposal").
'</td><td colspan="3"><a href="'.DOL_URL_ROOT.
'/comm/card.php?id='.$objectsrc->id.
'">'.
img_object($langs->trans(
"ShowProposal"),
'propal').
' '.$objectsrc->ref;
1412 if ($origin ==
'supplier_order') {
1413 print $langs->trans(
'SupplierOrder');
1415 print $langs->trans(
'RefSupplier');
1417 print
'</td><td colspan="3">';
1418 print
'<input type="text" name="ref_supplier" value="'.$objectsrc->ref_supplier.
'" />';
1423 print
'<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans(
'Company').
'</td>';
1424 print
'<td colspan="3">'.$soc->getNomUrl(1).
'</td>';
1428 if (
isModEnabled(
'project') && $formproject !==
null) {
1430 if (empty($projectid) && !empty($objectsrc->fk_project)) {
1431 $projectid = $objectsrc->fk_project;
1433 if ($origin ==
'project') {
1434 $projectid = ($origin_id ? $origin_id : 0);
1437 $langs->load(
"projects");
1439 print
'<td>'.$langs->trans(
"Project").
'</td><td colspan="2">';
1440 print
img_picto(
'',
'project',
'class="paddingright"');
1441 print $formproject->select_projects((!
getDolGlobalString(
'PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS') ? $soc->id : -1), (
string) $projectid,
'projectid', 0, 0, 1, 0, 1, 0, 0,
'', 1, 0,
'maxwidth500');
1442 print
' <a href="'.DOL_URL_ROOT.
'/projet/card.php?socid='.$soc->id.
'&action=create&status=1&backtopage='.urlencode($_SERVER[
"PHP_SELF"].
'?action=create&socid='.$soc->id).
'"><span class="fa fa-plus-circle valignmiddle" title="'.$langs->trans(
"AddProject").
'"></span></a>';
1448 print
'<tr><td>'.$langs->trans(
"DateReception").
'</td>';
1449 print
'<td colspan="3">';
1450 print
img_picto(
'',
'action',
'class="pictofixedwidth"');
1451 $date_reception = ($date_reception ? $date_reception :
$object->date_reception);
1452 print $form->selectDate($date_reception ? $date_reception : -1,
'date_reception', 1, 1, 1);
1457 print
'<tr><td>'.$langs->trans(
"DateDeliveryPlanned").
'</td>';
1458 print
'<td colspan="3">';
1459 print
img_picto(
'',
'action',
'class="pictofixedwidth"');
1460 $date_delivery = ($date_delivery ? $date_delivery : $objectsrc->delivery_date);
1461 print $form->selectDate($date_delivery ? $date_delivery : -1,
'date_delivery', 1, 1, 1);
1466 print
'<tr><td>'.$langs->trans(
"NotePublic").
'</td>';
1467 print
'<td colspan="3">';
1468 $doleditor =
new DolEditor(
'note_public', $objectsrc->note_public,
'', 60,
'dolibarr_notes',
'In',
false,
false, !
getDolGlobalString(
'FCKEDITOR_ENABLE_NOTE_PUBLIC') ? 0 : 1, ROWS_3,
'90%');
1469 print $doleditor->Create(1);
1473 if ($objectsrc->note_private && !$user->socid) {
1474 print
'<tr><td>'.$langs->trans(
"NotePrivate").
'</td>';
1475 print
'<td colspan="3">';
1476 $doleditor =
new DolEditor(
'note_private', $objectsrc->note_private,
'', 60,
'dolibarr_notes',
'In',
false,
false, !
getDolGlobalString(
'FCKEDITOR_ENABLE_NOTE_PRIVATE') ? 0 : 1, ROWS_3,
'90%');
1477 print $doleditor->Create(1);
1483 print $langs->trans(
"Weight");
1484 print
'</td><td colspan="3"><input name="weight" size="4" value="'.GETPOST(
'weight').
'"> ';
1485 $text = $formproduct->selectMeasuringUnits(
"weight_units",
"weight", (
string)
GETPOSTINT(
'weight_units'), 0, 2);
1486 $htmltext = $langs->trans(
"KeepEmptyForAutoCalculation");
1487 print $form->textwithpicto($text, $htmltext);
1491 print $langs->trans(
"Width").
' x '.$langs->trans(
"Height").
' x '.$langs->trans(
"Depth");
1492 print
' </td><td colspan="3"><input name="trueWidth" size="4" value="'.GETPOST(
'trueWidth').
'">';
1493 print
' x <input name="trueHeight" size="4" value="'.GETPOST(
'trueHeight').
'">';
1494 print
' x <input name="trueDepth" size="4" value="'.GETPOST(
'trueDepth').
'">';
1496 $text = $formproduct->selectMeasuringUnits(
"size_units",
"size", (
string)
GETPOSTINT(
'size_units'), 0, 2);
1497 $htmltext = $langs->trans(
"KeepEmptyForAutoCalculation");
1498 print $form->textwithpicto($text, $htmltext);
1502 print
"<tr><td>".$langs->trans(
"ReceptionMethod").
"</td>";
1503 print
'<td colspan="3">';
1504 $recept->fetch_delivery_methods();
1505 print $form->selectarray(
"shipping_method_id", $recept->meths,
GETPOSTINT(
'shipping_method_id'), 1, 0, 0,
"", 1);
1507 print
info_admin($langs->trans(
"YouCanChangeValuesForThisListFromDictionarySetup"), 1);
1509 print
"</td></tr>\n";
1512 print
"<tr><td>".$langs->trans(
"TrackingNumber").
"</td>";
1513 print
'<td colspan="3">';
1514 print
'<input name="tracking_number" size="20" value="'.GETPOST(
'tracking_number',
'alpha').
'">';
1515 print
"</td></tr>\n";
1518 $parameters = array(
'objectsrc' => $objectsrc,
'colspan' =>
' colspan="3"',
'cols' =>
'3',
'socid' => $socid);
1519 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters, $recept, $action);
1520 print $hookmanager->resPrint;
1523 $extrafields->fetch_name_optionals_label(
$object->table_element);
1524 if (empty($reshook) && !empty($extrafields->attributes[
$object->table_element][
'label'])) {
1526 if ($objectsrc->fetch_optionals() > 0) {
1527 $recept->array_options = array_merge($recept->array_options, $objectsrc->array_options);
1529 print $recept->showOptionals($extrafields,
'create', $parameters);
1535 print
'<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans(
"IncotermLabel"), $objectsrc->label_incoterms, 1).
'</label></td>';
1536 print
'<td colspan="3" class="maxwidthonsmartphone">';
1537 print $form->select_incoterms((!empty($objectsrc->fk_incoterms) ? $objectsrc->fk_incoterms :
''), (!empty($objectsrc->location_incoterms) ? $objectsrc->location_incoterms :
''));
1542 include_once DOL_DOCUMENT_ROOT.
'/core/modules/reception/modules_reception.php';
1545 if (is_array($list) && count($list) > 1) {
1546 print
"<tr><td>".$langs->trans(
"DefaultModel").
"</td>";
1547 print
'<td colspan="3">';
1549 print
"</td></tr>\n";
1563 $suffix2numAsked = array();
1564 $dispatchLines = array();
1566 foreach ($_POST as $key => $value) {
1571 if (preg_match(
'/^product_([0-9]+)_([0-9]+)$/i', $key, $reg)) {
1573 $paramSuffix = $reg[1] .
'_' . $reg[2];
1574 $suffix2numAsked[$paramSuffix] = $numAsked;
1577 $numline = $numAsked;
1579 $prod =
"product_" . $paramSuffix;
1580 $qty =
"qty_" . $paramSuffix;
1581 $ent =
"entrepot_" . $paramSuffix;
1582 $pu =
"pu_" . $paramSuffix;
1583 $fk_commandefourndet =
"fk_commandefourndet_" . $paramSuffix;
1588 if (preg_match(
'/^product_batch_([0-9]+)_([0-9]+)$/i', $key, $reg)) {
1590 $paramSuffix = $reg[1] .
'_' . $reg[2];
1591 $suffix2numAsked[$paramSuffix] = $numAsked;
1595 $numline = $numAsked;
1597 $prod =
'product_batch_' . $paramSuffix;
1598 $qty =
'qty_' . $paramSuffix;
1599 $ent =
'entrepot_' . $paramSuffix;
1600 $pu =
'pu_' . $paramSuffix;
1601 $lot =
'lot_number_' . $paramSuffix;
1604 $fk_commandefourndet =
'fk_commandefourndet_'.$paramSuffix;
1605 $dispatchLines[$numAsked] = array(
'paramSuffix' => $paramSuffix,
'prod' =>
GETPOSTINT(
$prod),
'qty' =>
price2num(
GETPOST($qty),
'MS'),
'ent' =>
GETPOSTINT($ent),
'pu' =>
price2num(
GETPOST($pu),
'MU'),
'comment' =>
GETPOST(
'comment'),
'fk_commandefourndet' =>
GETPOSTINT($fk_commandefourndet),
'DLC' => $dDLC,
'DLUO' => $dDLUO,
'lot' =>
GETPOST($lot));
1609 if (preg_match(
'/^productl([0-9]+)$/i', $key, $reg)) {
1611 $paramSuffix = $reg[1];
1612 $suffix2numAsked[$paramSuffix] = $numAsked;
1616 $numline = $numAsked;
1618 $prod =
'productid'.$paramSuffix;
1619 $comment =
'comment'.$paramSuffix;
1620 $qty =
'qtyl'.$paramSuffix;
1621 $ent =
'entl'.$paramSuffix;
1622 $pu =
'pul'.$paramSuffix;
1623 $lot =
'batch'.$paramSuffix;
1626 $fk_commandefourndet =
'fk_commandefournisseurdet'.$paramSuffix;
1627 $dispatchLines[$numAsked] = array(
'prod' =>
GETPOSTINT(
$prod),
'qty' =>
price2num(
GETPOST($qty),
'MS'),
'ent' =>
GETPOSTINT($ent),
'pu' =>
price2num(
GETPOST($pu),
'MU'),
'comment' =>
GETPOST($comment),
'fk_commandefourndet' =>
GETPOSTINT($fk_commandefourndet),
'DLC' => $dDLC,
'DLUO' => $dDLUO,
'lot' =>
GETPOSTINT($lot));
1634 foreach ($suffix2numAsked as $suffix => $n) {
1635 $dispatchLines[$n][
'array_options'] = $extrafields->getOptionalsFromPost(
'receptiondet_batch',
'_' . $suffix,
'');
1638 $reshook = $hookmanager->executeHooks(
'dataProcessing', $parameters, $object, $action);
1641 } elseif (empty($reshook)) {
1643 if (is_array($hookmanager->resArray) && !empty($hookmanager->resArray)) {
1645 $tempMerged = array_merge($dispatchLines, $hookmanager->resArray);
1649 foreach ($dispatchLines as $idx => $val) {
1650 if (!is_array($tempMerged[$idx]) || !isset($tempMerged[$idx][
'fk_commandefourndet'])) {
1657 $dispatchLines = $tempMerged;
1660 error_log(
"WARNING: Hook dataProcessing returned invalid data, ignoring merge.");
1663 } elseif ($reshook > 0) {
1665 $dispatchLines = $hookmanager->resArray;
1666 array_unshift($dispatchLines,
null);
1667 unset($dispatchLines[0]);
1668 $numAsked = count($dispatchLines);
1671 print
'<script type="text/javascript">
1672 jQuery(document).ready(function() {
1673 jQuery("#autofill").click(function(event) {
1674 event.preventDefault();';
1676 while ($i <= $numAsked) {
1677 print
'jQuery("#qtyl'.$i.
'").val(jQuery("#qtyasked'.$i.
'").val() - jQuery("#qtydelivered'.$i.
'").val());'.
"\n";
1681 jQuery("#autoreset").click(function(event) {
1682 event.preventDefault();';
1684 while ($i <= $numAsked) {
1685 print
'jQuery("#qtyl'.$i.
'").val(0);'.
"\n";
1694 print
'<table class="noborder centpercent">';
1697 $objectsrc->loadReceptions();
1700 print
'<tr class="liste_titre">';
1701 print
'<td>'.$langs->trans(
"Description").
'</td>';
1702 print
'<td>'.$langs->trans(
"Comment").
'</td>';
1703 print
'<td class="center">'.$langs->trans(
"QtyOrdered").
'</td>';
1704 print
'<td class="center">'.$langs->trans(
"QtyReceived").
'</td>';
1705 print
'<td class="center">'.$langs->trans(
"QtyToReceive");
1707 print
'<td>'.$langs->trans(
"BuyingPrice").
'</td>';
1710 print
' <br><center><a href="#" id="autofill"><span class="fas fa-fill pictofixedwidth" style=""></span> '.$langs->trans(
"Fill").
'</a>';
1711 print
' <a href="#" id="autoreset"><span class="fas fa-eraser pictofixedwidth" style=""></span>'.$langs->trans(
"Reset").
'</a></center><br>';
1715 print
'<td class="left">'.$langs->trans(
"Warehouse").
' ('.$langs->trans(
"Stock").
')</td>';
1718 print
'<td class="left">'.$langs->trans(
"batch_number").
'</td>';
1720 print
'<td class="left">'.$langs->trans(
"SellByDate").
'</td>';
1723 print
'<td class="left">'.$langs->trans(
"EatByDate").
'</td>';
1727 $parameters = array();
1728 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
1732 print $hookmanager->resPrint;
1740 $arrayofpurchaselinealreadyoutput = array();
1744 while ($indiceAsked <= $numAsked) {
1749 foreach ($objectsrc->lines as $supplierLine) {
1750 if ($dispatchLines[$indiceAsked][
'fk_commandefourndet'] == $supplierLine->id) {
1751 $line = $supplierLine;
1759 $type = $line->product_type ? $line->product_type : $line->fk_product_type;
1761 if (!empty($line->date_start)) {
1764 if (!empty($line->date_end)) {
1768 print
'<!-- line fk_commandefourndet='.$line->id.
' for product='.$line->fk_product.
' -->'.
"\n";
1769 print
'<tr class="oddeven">'.
"\n";
1772 if ($line->fk_product > 0) {
1773 $product->fetch($line->fk_product);
1774 $product->load_stock(
'warehouseopen');
1779 print
'<a name="'.$line->id.
'"></a>';
1781 print
'<input type="hidden" name="productl'.$indiceAsked.
'" value="'.$line->fk_product.
'">';
1783 if (! array_key_exists($line->id, $arrayofpurchaselinealreadyoutput)) {
1784 print
'<input type="hidden" name="productid'.$indiceAsked.
'" value="'.$line->fk_product.
'">';
1787 $product_static = $product;
1789 $text = $product_static->getNomUrl(1);
1790 $text .=
' - '.(!empty($line->label) ? $line->label : $line->product_label);
1792 print $form->textwithtooltip($text, $description, 3, 0,
'', (
string) $i);
1799 print ($line->desc && $line->desc != $line->product_label) ?
'<br>'.dol_htmlentitiesbr($line->desc) :
'';
1805 if (! array_key_exists($line->id, $arrayofpurchaselinealreadyoutput)) {
1807 $text =
img_object($langs->trans(
'Service'),
'service');
1809 $text =
img_object($langs->trans(
'Product'),
'product');
1812 if (!empty($line->label)) {
1813 $text .=
' <strong>'.$line->label.
'</strong>';
1814 print $form->textwithtooltip($text, $line->desc, 3, 0,
'', (
string) $i);
1816 print $text.
' '.nl2br($line->desc);
1827 $defaultcomment = $dispatchLines[$indiceAsked][
'comment'];
1829 print
'<input type="text" class="maxwidth100" name="comment'.$indiceAsked.
'" value="'.$defaultcomment.
'">';
1833 print
'<td class="center">';
1834 if (! array_key_exists($line->id, $arrayofpurchaselinealreadyoutput)) {
1837 print
'<input type="hidden" name="fk_commandefournisseurdet'.$indiceAsked.
'" value="'.$line->id.
'">';
1838 print
'<input type="hidden" name="pul'.$indiceAsked.
'" value="'.$line->subprice.
'">';
1839 print
'<input name="qtyasked'.$indiceAsked.
'" id="qtyasked'.$indiceAsked.
'" type="hidden" value="'.$line->qty.
'">';
1841 $qtyProdCom = $line->qty;
1844 print
'<td class="center">';
1845 $quantityDelivered = isset($objectsrc->receptions[$line->id]) ? $objectsrc->receptions[$line->id] : 0;
1846 if (! array_key_exists($line->id, $arrayofpurchaselinealreadyoutput)) {
1847 print $quantityDelivered;
1849 print
'<input name="qtydelivered'.$indiceAsked.
'" id="qtydelivered'.$indiceAsked.
'" type="hidden" value="'.$quantityDelivered.
'">';
1854 $quantityToBeDelivered = 0;
1856 $quantityToBeDelivered = $dispatchLines[$indiceAsked][
'qty'];
1858 $warehouse_id = $dispatchLines[$indiceAsked][
'ent'];
1861 $warehouseObject =
null;
1864 print
'<!-- Case warehouse already known or product not a predefined product -->';
1865 if (array_key_exists($dispatchLines[$indiceAsked][
'ent'], $product->stock_warehouse)) {
1866 $stock = +$product->stock_warehouse[$dispatchLines[$indiceAsked][
'ent']]->real;
1868 $deliverableQty = $dispatchLines[$indiceAsked][
'qty'];
1869 $cost_price = $dispatchLines[$indiceAsked][
'pu'];
1872 print
'<td class="center">';
1875 $defaultqty =
GETPOSTINT(
'qtyl'.$indiceAsked);
1877 print
'<input name="idl'.$indiceAsked.
'" type="hidden" value="'.$line->id.
'">';
1878 print
'<input class="right" name="qtyl'.$indiceAsked.
'" id="qtyl'.$indiceAsked.
'" type="text" size="4" value="'.$deliverableQty.
'">';
1880 print $langs->trans(
"NA");
1886 print
'<input class="width75 right" name="cost_price'.$indiceAsked.
'" id="cost_price'.$indiceAsked.
'" value="'.
price($cost_price).
'">';
1892 print
'<td class="left">';
1895 $ent =
"entl".$indiceAsked;
1896 $idl =
"idl".$indiceAsked;
1898 if ($line->fk_product > 0) {
1899 print
'<!-- Show warehouse selection -->';
1900 print $formproduct->selectWarehouses($tmpentrepot_id,
'entl'.$indiceAsked,
'', 0, 0, $line->fk_product,
'', 1);
1903 print $langs->trans(
"Service");
1909 if (!empty($product->status_batch)) {
1910 print
'<td><input name="batch'.$indiceAsked.
'" value="'.$dispatchLines[$indiceAsked][
'lot'].
'"></td>';
1912 print
'<td class="nowraponall">';
1913 print $form->selectDate($dispatchLines[$indiceAsked][
'DLC'],
'dlc'.$indiceAsked, 0, 0, 1,
"");
1917 print
'<td class="nowraponall">';
1918 print $form->selectDate($dispatchLines[$indiceAsked][
'DLUO'],
'dluo'.$indiceAsked, 0, 0, 1,
"");
1922 print
'<td colspan="3"></td>';
1926 $parameters = array();
1927 $parameters[
'dispatchLine'] = $dispatchLines[$indiceAsked];
1928 $parameters[
'indiceAsked'] = $indiceAsked;
1929 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
1933 print $hookmanager->resPrint;
1937 $arrayofpurchaselinealreadyoutput[$line->id] = $line->id;
1943 if (!empty($extrafields)) {
1957 $srcLine->id = $line->id;
1958 $srcLine->fetch_optionals();
1960 if (empty($recLine->array_options) && !empty($dispatchLines[$indiceAsked][
'array_options'])) {
1961 $recLine->array_options = $dispatchLines[$indiceAsked][
'array_options'];
1963 $recLine->array_options = array_merge($recLine->array_options, $srcLine->array_options);
1965 print $recLine->showOptionals($extrafields,
'edit', array(
'style' =>
'class="oddeven"',
'colspan' => $colspan), (
string) $indiceAsked,
'',
'1');
1975 print $form->buttonsSaveCancel(
"Create");
1992 $num_prod = count($lines);
1996 print $langs->trans(
"NoRecordFound");
2003 $typeobject =
$object->origin;
2005 $origin_id =
$object->origin_id;
2012 $res =
$object->fetch_optionals();
2015 print
dol_get_fiche_head($head,
'reception', $langs->trans(
"Reception"), -1,
'dollyrevert');
2020 if ($action ==
'delete') {
2021 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
'?id='.
$object->id, $langs->trans(
'DeleteReception'), $langs->trans(
"ConfirmDeleteReception",
$object->ref),
'confirm_delete',
'', 0, 1);
2025 if ($action ==
'valid') {
2026 $objectref = substr(
$object->ref, 1, 4);
2027 if ($objectref ==
'PROV') {
2028 $numref =
$object->getNextNumRef($soc);
2033 $text = $langs->trans(
"ConfirmValidateReception", $numref);
2035 $text .=
'<br>'.img_picto(
'',
'movement',
'class="pictofixedwidth"').$langs->trans(
"StockMovementWillBeRecorded").
'.';
2037 $text .=
'<br>'.img_picto(
'',
'movement',
'class="pictofixedwidth"').$langs->trans(
"StockMovementNotYetRecorded").
'.';
2041 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
2044 $text .= $notify->confirmMessage(
'RECEPTION_VALIDATE',
$object->socid, $object);
2047 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
'?id='.
$object->id, $langs->trans(
'ValidateReception'), $text,
'confirm_valid',
'', 0, 1, 250);
2051 if ($action ==
'annuler') {
2052 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
'?id='.
$object->id, $langs->trans(
'CancelReception'), $langs->trans(
"ConfirmCancelReception",
$object->ref),
'confirm_cancel',
'', 0, 1);
2055 if (!$formconfirm) {
2056 $parameters = array(
'formConfirm' => $formconfirm);
2057 $reshook = $hookmanager->executeHooks(
'formConfirm', $parameters, $object, $action);
2058 if (empty($reshook)) {
2059 $formconfirm .= $hookmanager->resPrint;
2060 } elseif ($reshook > 0) {
2061 $formconfirm = $hookmanager->resPrint;
2071 $tmparray =
$object->getTotalWeightVolume();
2072 $totalWeight = $tmparray[
'weight'];
2073 $totalVolume = $tmparray[
'volume'];
2078 $objectsrc->fetch(
$object->origin_object->id);
2082 $objectsrc->fetch(
$object->origin_object->id);
2084 if (($typeobject ==
'supplier_order' || $typeobject ==
'CommandeFournisseur') &&
$object->origin_object->id &&
isModEnabled(
"supplier_order")) {
2086 $objectsrc->fetch(
$object->origin_object->id);
2089 $linkback =
'<a href="'.DOL_URL_ROOT.
'/reception/list.php?restore_lastsearch_values=1'.(!empty($socid) ?
'&socid='.$socid :
'').
'">'.$langs->trans(
"BackToList").
'</a>';
2090 $morehtmlref =
'<div class="refidno">';
2093 $morehtmlref .= $form->editfieldkey(
"RefSupplier",
'ref_supplier',
$object->ref_supplier, $object, $user->hasRight(
'reception',
'creer'),
'string',
'', 0, 1);
2094 $morehtmlref .= $form->editfieldval(
"RefSupplier",
'ref_supplier',
$object->ref_supplier, $object, $user->hasRight(
'reception',
'creer'),
'string',
'',
null,
null,
'', 1);
2097 $morehtmlref .=
'<br>'.$object->thirdparty->getNomUrl(1);
2099 if ($origin && $origin_id > 0) {
2101 $langs->load(
"projects");
2102 $morehtmlref .=
'<br>';
2104 $morehtmlref .=
img_picto($langs->trans(
"Project"),
'project',
'class="pictofixedwidth"');
2105 if ($action !=
'classify') {
2106 $morehtmlref .=
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=classify&token='.newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetProject')).
'</a> ';
2108 $morehtmlref .= $form->form_project($_SERVER[
'PHP_SELF'].
'?id='.
$object->id, $objectsrc->socid, (
string) $objectsrc->fk_project, ($action ==
'classify' ?
'projectid' :
'none'), 0, 0, 0, 1,
'',
'maxwidth300');
2110 if (!empty($objectsrc) && !empty($objectsrc->fk_project)) {
2112 $proj->fetch($objectsrc->fk_project);
2113 $morehtmlref .= $proj->getNomUrl(1);
2115 $morehtmlref .=
'<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).
'</span>';
2123 $langs->load(
"projects");
2124 $morehtmlref .=
'<br>';
2125 if ($permissiontoadd) {
2126 $morehtmlref .=
img_picto($langs->trans(
"Project"),
'project',
'class="pictofixedwidth"');
2127 if ($action !=
'classify') {
2128 $morehtmlref .=
'<a class="editfielda" href="' . $_SERVER[
'PHP_SELF'] .
'?action=classify&token=' . newToken() .
'&id=' .
$object->id .
'">' .
img_edit($langs->transnoentitiesnoconv(
'SetProject')) .
'</a> ';
2130 $morehtmlref .= $form->form_project($_SERVER[
'PHP_SELF'] .
'?id=' .
$object->id,
$object->socid, (
string)
$object->fk_project, ($action ==
'classify' ?
'projectid' :
'none'), 0, 0, 0, 1,
'',
'maxwidth300');
2132 if (!empty(
$object->fk_project)) {
2134 $proj->fetch(
$object->fk_project);
2135 $morehtmlref .= $proj->getNomUrl(1);
2137 $morehtmlref .=
'<span class="opacitymedium"> - ' .
dol_escape_htmltag($proj->title) .
'</span>';
2143 $morehtmlref .=
'</div>';
2145 dol_banner_tab($object,
'ref', $linkback, 1,
'ref',
'ref', $morehtmlref);
2148 print
'<div class="fichecenter">';
2149 print
'<div class="fichehalfleft">';
2150 print
'<div class="underbanner clearboth"></div>';
2152 print
'<table class="border centpercent tableforfield">';
2157 print $langs->trans(
"RefOrder").
'</td>';
2158 print
'<td colspan="3">';
2159 print $objectsrc->getNomUrl(1,
'commande');
2165 print $langs->trans(
"RefProposal").
'</td>';
2166 print
'<td colspan="3">';
2167 print $objectsrc->getNomUrl(1,
'reception');
2171 if (($typeobject ==
'supplier_order' || $typeobject ==
'CommandeFournisseur') &&
$object->origin_object->id &&
isModEnabled(
"propal")) {
2173 print $langs->trans(
"SupplierOrder").
'</td>';
2174 print
'<td colspan="3">';
2175 print $objectsrc->getNomUrl(1,
'reception');
2181 print
'<tr><td class="titlefield">'.$langs->trans(
"DateCreation").
'</td>';
2182 print
'<td colspan="3">'.dol_print_date(
$object->date_creation,
"dayhour",
"tzuserrel").
"</td>\n";
2186 print
'<tr><td height="10">';
2187 print
'<table class="nobordernopadding centpercent"><tr><td>';
2188 print $langs->trans(
'DateReception');
2190 if ($action !=
'editdate_reception') {
2191 print
'<td class="right"><a class="editfielda" href="' . $_SERVER[
"PHP_SELF"] .
'?action=editdate_reception&token=' . newToken() .
'&id=' .
$object->id .
'">' .
img_edit($langs->trans(
'SetReceptionDate'), 1) .
'</a></td>';
2193 print
'</tr></table>';
2195 if ($action ==
'editdate_reception') {
2196 print
'<form name="setdate_reception" action="' . $_SERVER[
"PHP_SELF"] .
'?id=' .
$object->id .
'" method="post">';
2197 print
'<input type="hidden" name="token" value="' . newToken() .
'">';
2198 print
'<input type="hidden" name="action" value="setdate_reception">';
2199 print $form->selectDate(
$object->date_reception ?
$object->date_reception : -1,
'recep_', 1, 1, 0,
"setdate_reception", 1, 0);
2200 print
'<input type="submit" class="button button-edit smallpaddingimp" value="' . $langs->trans(
'Modify') .
'">';
2209 print
'<tr><td height="10">';
2210 print
'<table class="nobordernopadding" width="100%"><tr><td>';
2211 print $langs->trans(
'DateDeliveryPlanned');
2214 if ($action !=
'editdate_livraison' && $permissiontoadd) {
2215 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editdate_livraison&token='.newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->trans(
'SetDeliveryDate'), 1).
'</a></td>';
2217 print
'</tr></table>';
2218 print
'</td><td colspan="2">';
2219 if ($action ==
'editdate_livraison') {
2220 print
'<form name="setdate_livraison" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
2221 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2222 print
'<input type="hidden" name="action" value="setdate_livraison">';
2223 print $form->selectDate(
$object->date_delivery ?
$object->date_delivery : -1,
'liv_', 1, 1, 0,
"setdate_livraison", 1, 0);
2224 print
'<input type="submit" class="button button-edit" value="'.$langs->trans(
'Modify').
'">';
2234 print $form->editfieldkey(
"Weight",
'trueWeight', (
string)
$object->trueWeight, $object, $user->hasRight(
'reception',
'creer'));
2235 print
'</td><td colspan="3">';
2237 if ($action ==
'edittrueWeight') {
2238 print
'<form name="settrueweight" action="'.$_SERVER[
"PHP_SELF"].
'" method="post">';
2239 print
'<input name="action" value="settrueWeight" type="hidden">';
2240 print
'<input name="id" value="'.$object->id.
'" type="hidden">';
2241 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2242 print
'<input id="trueWeight" name="trueWeight" value="'.$object->trueWeight.
'" type="text">';
2243 print $formproduct->selectMeasuringUnits(
"weight_units",
"weight", (
string)
$object->weight_units, 0, 2);
2244 print
' <input class="button" name="modify" value="'.$langs->trans(
"Modify").
'" type="submit">';
2245 print
' <input class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'" type="submit">';
2249 print (
$object->trueWeight &&
$object->weight_units !=
'') ?
' '.measuringUnitString(0,
"weight",
$object->weight_units) :
'';
2253 if ($totalWeight > 0) {
2254 if (!empty(
$object->trueWeight)) {
2255 print
' ('.$langs->trans(
"SumOfProductWeights").
': ';
2258 if (!empty(
$object->trueWeight)) {
2265 print
'<tr><td>'.$form->editfieldkey(
"Width",
'trueWidth', (
string)
$object->trueWidth, $object, $user->hasRight(
'reception',
'creer')).
'</td><td colspan="3">';
2266 print $form->editfieldval(
"Width",
'trueWidth',
$object->trueWidth, $object, $user->hasRight(
'reception',
'creer'));
2267 print (
$object->trueWidth &&
$object->width_units !=
'') ?
' '.measuringUnitString(0,
"size",
$object->width_units) :
'';
2271 print
'<tr><td>'.$form->editfieldkey(
"Height",
'trueHeight', (
string)
$object->trueHeight, $object, $user->hasRight(
'reception',
'creer')).
'</td><td colspan="3">';
2272 if ($action ==
'edittrueHeight') {
2273 print
'<form name="settrueHeight" action="'.$_SERVER[
"PHP_SELF"].
'" method="post">';
2274 print
'<input name="action" value="settrueHeight" type="hidden">';
2275 print
'<input name="id" value="'.$object->id.
'" type="hidden">';
2276 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2277 print
'<input id="trueHeight" name="trueHeight" value="'.$object->trueHeight.
'" type="text">';
2278 print $formproduct->selectMeasuringUnits(
"size_units",
"size",
$object->size_units, 0, 2);
2279 print
' <input class="button" name="modify" value="'.$langs->trans(
"Modify").
'" type="submit">';
2280 print
' <input class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'" type="submit">';
2284 print (
$object->trueHeight &&
$object->height_units !=
'') ?
' '.measuringUnitString(0,
"size",
$object->height_units) :
'';
2290 print
'<tr><td>'.$form->editfieldkey(
"Depth",
'trueDepth', (
string)
$object->trueDepth, $object, $user->hasRight(
'reception',
'creer')).
'</td><td colspan="3">';
2291 print $form->editfieldval(
"Depth",
'trueDepth',
$object->trueDepth, $object, $user->hasRight(
'reception',
'creer'));
2292 print (
$object->trueDepth &&
$object->depth_units !=
'') ?
' '.measuringUnitString(0,
"size",
$object->depth_units) :
'';
2297 print $langs->trans(
"Volume");
2299 print
'<td colspan="3">';
2300 $calculatedVolume = 0;
2304 $volumeUnit =
$object->size_units * 3;
2307 if ($calculatedVolume > 0) {
2308 if ($volumeUnit < 50) {
2314 if ($totalVolume > 0) {
2315 if ($calculatedVolume) {
2316 print
' ('.$langs->trans(
"SumOfProductVolumes").
': ';
2320 if ($calculatedVolume) {
2330 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
2335 print
'<div class="fichehalfright">';
2336 print
'<div class="underbanner clearboth"></div>';
2338 print
'<table class="border centpercent tableforfield">';
2341 print
'<tr><td height="10">';
2342 print
'<table class="nobordernopadding centpercent"><tr><td>';
2343 print $langs->trans(
'ReceptionMethod');
2346 if ($action !=
'editshipping_method_id' && $permissiontoadd) {
2347 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editshipping_method_id&token='.newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->trans(
'SetReceptionMethod'), 1).
'</a></td>';
2349 print
'</tr></table>';
2350 print
'</td><td colspan="2">';
2351 if ($action ==
'editshipping_method_id') {
2352 print
'<form name="setshipping_method_id" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
2353 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2354 print
'<input type="hidden" name="action" value="setshipping_method_id">';
2355 $object->fetch_delivery_methods();
2356 print $form->selectarray(
"shipping_method_id",
$object->meths,
$object->shipping_method_id, 1, 0, 0,
"", 1);
2358 print
info_admin($langs->trans(
"YouCanChangeValuesForThisListFromDictionarySetup"), 1);
2360 print
'<input type="submit" class="button button-edit" value="'.$langs->trans(
'Modify').
'">';
2363 if (
$object->shipping_method_id > 0) {
2365 $code = $langs->getLabelFromKey(
$db, (
string)
$object->shipping_method_id,
'c_shipment_mode',
'rowid',
'code');
2366 print $langs->trans(
"SendingMethod".strtoupper($code));
2373 print
'<tr><td class="titlefield">'.$form->editfieldkey(
"TrackingNumber",
'tracking_number',
$object->tracking_number, $object, $user->hasRight(
'reception',
'creer')).
'</td><td colspan="3">';
2374 print $form->editfieldval(
"TrackingNumber",
'tracking_number',
$object->tracking_url, $object, $user->hasRight(
'reception',
'creer'),
'safehtmlstring',
$object->tracking_number);
2380 print
'<table width="100%" class="nobordernopadding"><tr><td>';
2381 print $langs->trans(
'IncotermLabel');
2382 print
'<td><td class="right">';
2383 if ($user->hasRight(
'reception',
'creer')) {
2384 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/reception/card.php?id='.
$object->id.
'&action=editincoterm&token='.newToken().
'">'.
img_edit().
'</a>';
2388 print
'</td></tr></table>';
2390 print
'<td colspan="3">';
2391 if ($action !=
'editincoterm') {
2392 print $form->textwithpicto(
$object->display_incoterms(),
$object->label_incoterms, 1);
2394 print $form->select_incoterms((!empty(
$object->fk_incoterms) ?
$object->fk_incoterms :
''), (!empty(
$object->location_incoterms) ?
$object->location_incoterms :
''), $_SERVER[
'PHP_SELF'].
'?id='.
$object->id);
2404 print
'<div class="clearboth"></div>';
2410 if (!empty(
$object->table_element_line)) {
2412 $result =
$object->getLinesArray();
2414 print
' <form name="addproduct" id="addproduct" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.(($action !=
'editline') ?
'' :
'#line_'.
GETPOSTINT(
'lineid')).
'" method="POST">
2415 <input type="hidden" name="token" value="' . newToken().
'">
2416 <input type="hidden" name="action" value="' . (($action !=
'editline') ?
'addline' :
'updateline').
'">
2417 <input type="hidden" name="mode" value="">
2418 <input type="hidden" name="page_y" value="">
2419 <input type="hidden" name="id" value="' .
$object->id.
'">
2422 if (!empty(
$conf->use_javascript_ajax) &&
$object->status == $object::STATUS_DRAFT) {
2423 include DOL_DOCUMENT_ROOT.
'/core/tpl/ajaxrow.tpl.php';
2426 print
'<div class="div-table-responsive-no-min">';
2427 if (!empty(
$object->lines) || (
$object->status == $object::STATUS_DRAFT && $permissiontoadd && $action !=
'selectlines' && $action !=
'editline')) {
2428 print
'<table id="tablelines" class="noborder noshadow" width="100%">';
2436 if (
$object->status == $object::STATUS_DRAFT && $permissiontoadd && $action !=
'selectlines') {
2437 if ($action !=
'editline') {
2440 $parameters = array();
2441 $reshook = $hookmanager->executeHooks(
'formAddObjectLine', $parameters, $object, $action);
2445 if (empty($reshook)) {
2451 if (!empty(
$object->lines) || (
$object->status == Reception::STATUS_DRAFT && $permissiontoadd && $action !=
'selectlines' && $action !=
'editline')) {
2460 if ($action ==
'editline') {
2461 print
'<form name="updateline" id="updateline" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&lineid='.$line_id.
'" method="POST">
2462 <input type="hidden" name="token" value="' . newToken().
'">
2463 <input type="hidden" name="action" value="updateline">
2464 <input type="hidden" name="mode" value="">
2465 <input type="hidden" name="id" value="' .
$object->id.
'">';
2469 print
'<div class="div-table-responsive-no-min">';
2470 print
'<table id="tablelines" class="noborder centpercent">';
2472 print
'<tr class="liste_titre">';
2475 print
'<td width="5" class="center"> </td>';
2478 print
'<td>'.$langs->trans(
"Products").
'</td>';
2480 print
'<td>'.$langs->trans(
"Comment").
'</td>';
2482 print
'<td class="center">'.$langs->trans(
"QtyOrdered").
'</td>';
2483 if ($origin && $origin_id > 0) {
2484 print
'<td class="center">'.$langs->trans(
"QtyInOtherReceptions").
'</td>';
2488 if ($action ==
'editline') {
2492 if (empty(
$conf->productbatch->enabled)) {
2495 print
'<td class="center" colspan="'.$editColspan.
'">';
2497 print $langs->trans(
"QtyToReceive").
' - ';
2499 print $langs->trans(
"QtyReceived").
' - ';
2502 print $langs->trans(
"WarehouseTarget").
' - ';
2505 print $langs->trans(
"Batch");
2509 $parameters = array();
2510 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
2514 print $hookmanager->resPrint;
2517 $statusreceived = $object::STATUS_CLOSED;
2519 $statusreceived = $object::STATUS_VALIDATED;
2522 $statusreceived = $object::STATUS_CLOSED;
2524 if (
$object->statut < $statusreceived) {
2525 print
'<td class="center">'.$langs->trans(
"QtyToReceive").
'</td>';
2527 print
'<td class="center">'.$langs->trans(
"QtyReceived").
'</td>';
2530 print
'<td class="left">'.$langs->trans(
"WarehouseTarget").
'</td>';
2534 print
'<td class="left">'.$langs->trans(
"Batch").
'</td>';
2537 $parameters = array();
2538 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
2542 print $hookmanager->resPrint;
2545 print
'<td class="center">'.$langs->trans(
"CalculatedWeight").
'</td>';
2546 print
'<td class="center">'.$langs->trans(
"CalculatedVolume").
'</td>';
2549 print
'<td class="linecoledit"></td>';
2550 print
'<td class="linecoldelete" width="10"></td>';
2557 $outputlangs = $langs;
2561 if (
GETPOST(
'lang_id',
'aZ09')) {
2562 $newlang =
GETPOST(
'lang_id',
'aZ09');
2564 if (empty($newlang)) {
2565 $newlang =
$object->thirdparty->default_lang;
2567 if (!empty($newlang)) {
2569 $outputlangs->setDefaultLang($newlang);
2574 $alreadysent = array();
2576 if (empty($origin) || $origin ==
'order_supplier') {
2577 $origin =
'supplier_order';
2580 if ($origin_id > 0) {
2581 $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";
2582 $sql .=
", ed.rowid as receptionline_id, ed.qty, ed.fk_reception as reception_id, ed.fk_entrepot";
2583 $sql .=
", e.rowid as reception_id, e.ref as reception_ref, e.date_creation, e.date_valid, e.date_delivery, e.date_reception";
2584 $sql .=
', p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid, p.tobatch as product_tobatch';
2585 $sql .=
', p.description as product_desc';
2586 $sql .=
" FROM ".MAIN_DB_PREFIX.
"receptiondet_batch as ed";
2587 $sql .=
", ".MAIN_DB_PREFIX.
"reception as e";
2588 $sql .=
", ".MAIN_DB_PREFIX.(($origin ==
'supplier_order') ?
'commande_fournisseur' : $origin).
"det as obj";
2589 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p ON obj.fk_product = p.rowid";
2590 $sql .=
" WHERE e.entity IN (".getEntity(
'reception').
")";
2591 $sql .=
" AND obj.fk_commande = ".((int) $origin_id);
2592 $sql .=
" AND obj.rowid = ed.fk_elementdet";
2593 $sql .=
" AND ed.fk_reception = e.rowid";
2594 $sql .=
" AND ed.fk_reception !=".((int)
$object->id);
2595 $sql .=
" ORDER BY obj.fk_product";
2597 dol_syslog(
"get list of reception lines", LOG_DEBUG);
2598 $resql =
$db->query($sql);
2600 $num =
$db->num_rows($resql);
2604 $obj =
$db->fetch_object($resql);
2607 $alreadysent[$obj->rowid][$obj->receptionline_id] = array(
'reception_ref' => $obj->reception_ref,
'reception_id' => $obj->reception_id,
'warehouse' => $obj->fk_entrepot,
'qty' => $obj->qty,
'date_valid' => $obj->date_valid,
'date_delivery' => $obj->date_delivery);
2615 $arrayofpurchaselinealreadyoutput = array();
2619 for ($i = 0; $i < $num_prod; $i++) {
2620 print
'<!-- origin line id = '.(!empty($lines[$i]->origin_line_id) ? $lines[$i]->origin_line_id : 0).
' -->';
2621 print
'<tr class="oddeven" id="row-'.$lines[$i]->id.
'" data-id="'.$lines[$i]->id.
'" data-element="'.$lines[$i]->element.
'">';
2625 print
'<td class="center">'.($i + 1).
'</td>';
2629 if ($lines[$i]->fk_product > 0) {
2633 $prod->fetch($lines[$i]->fk_product);
2634 $label = (!empty(
$prod->multilangs[$outputlangs->defaultlang][
"label"])) ?
$prod->multilangs[$outputlangs->defaultlang][
"label"] : $lines[$i]->product->label;
2636 $label = (!empty($lines[$i]->product->label) ? $lines[$i]->product->label : $lines[$i]->product->product_label);
2639 print
'<td class="linecoldescription">';
2640 if (!array_key_exists($lines[$i]->fk_commandefourndet, $arrayofpurchaselinealreadyoutput)) {
2641 $text = $lines[$i]->product->getNomUrl(1);
2642 $text .=
' - '.$label;
2644 print $form->textwithtooltip($text, $description, 3, 0,
'', (
string) $i);
2645 print_date_range(!empty($lines[$i]->date_start) ? $lines[$i]->date_start : 0, !empty($lines[$i]->date_end) ? $lines[$i]->date_end : 0);
2652 print
'<td class="linecoldescription">';
2653 if (!array_key_exists($lines[$i]->fk_commandefourndet, $arrayofpurchaselinealreadyoutput)) {
2655 $text =
img_object($langs->trans(
'Service'),
'service');
2657 $text =
img_object($langs->trans(
'Product'),
'product');
2660 if (!empty($lines[$i]->label)) {
2661 $text .=
' <strong>'.$lines[$i]->label.
'</strong>';
2662 print $form->textwithtooltip($text, $lines[$i]->
description, 3, 0,
'', (
string) $i);
2672 if ($action ==
'editline' && $lines[$i]->
id == $line_id) {
2673 print
'<td><input name="comment'.$line_id.
'" id="comment'.$line_id.
'" value="'.
dol_escape_htmltag($lines[$i]->comment).
'"></td>';
2675 print
'<td style="white-space: pre-wrap; max-width: 200px;">'.dol_escape_htmltag($lines[$i]->comment).
'</td>';
2680 print
'<td class="center linecolqty">';
2681 if (!array_key_exists($lines[$i]->fk_commandefourndet, $arrayofpurchaselinealreadyoutput)) {
2682 print $lines[$i]->qty_asked;
2687 if ($origin && $origin_id > 0) {
2688 print
'<td class="center nowrap linecolqtyinotherreceptions">';
2690 $qtyalreadyreceived = 0;
2691 if (!array_key_exists($lines[$i]->fk_commandefourndet, $arrayofpurchaselinealreadyoutput)) {
2692 foreach ($alreadysent as $key => $val) {
2693 if ($lines[$i]->fk_commandefourndet == $key) {
2695 foreach ($val as $receptionline_id => $receptionline_var) {
2696 if ($receptionline_var[
'reception_id'] == $lines[$i]->fk_reception) {
2702 $htmltooltip .=
'<br>';
2704 $reception_static->fetch($receptionline_var[
'reception_id']);
2705 $htmltooltip .= $reception_static->getNomUrl(1,
'nolink', 0, 0, 1);
2706 $htmltooltip .=
' - '.$receptionline_var[
'qty'];
2708 $htmltext = $langs->trans(
"DateValidation").
' : '.(empty($receptionline_var[
'date_valid']) ? $langs->trans(
"Draft") :
dol_print_date($receptionline_var[
'date_valid'],
'dayhour'));
2709 if (
isModEnabled(
'stock') && $receptionline_var[
'warehouse'] > 0) {
2710 $warehousestatic->fetch($receptionline_var[
'warehouse']);
2711 $htmltext .=
'<br>'.$langs->trans(
"From").
' : '.$warehousestatic->getNomUrl(1,
'', 0, 1);
2713 $htmltooltip .=
' '.$form->textwithpicto(
'', $htmltext, 1);
2715 $qtyalreadyreceived += $receptionline_var[
'qty'];
2718 $htmltooltip = $langs->trans(
"QtyInOtherReceptions").
'...<br><br>'.$htmltooltip.
'<br><input type="submit" name="dummyhiddenbuttontogetfocus" style="display:none" autofocus>';
2723 print $form->textwithpicto((
string) $qtyalreadyreceived, $htmltooltip, 1,
'info',
'', 0, 3,
'tooltip'.$lines[$i]->
id);
2727 if ($action ==
'editline' && $lines[$i]->
id == $line_id) {
2729 print
'<td colspan="'.$editColspan.
'" class="center"><table class="nobordernopadding">';
2731 if ($lines[$i]->fk_product > 0) {
2732 print
'<!-- case edit 1 -->';
2735 print
'<td><input name="qtyl'.$line_id.
'" id="qtyl'.$line_id.
'" type="text" size="4" value="'.$lines[$i]->qty.
'"></td>';
2737 print
'<td>'.$formproduct->selectWarehouses($lines[$i]->fk_entrepot,
'entl'.$line_id,
'', 1, 0, $lines[$i]->fk_product,
'', 1).
'</td>';
2739 if (
$conf->productbatch->enabled && !empty($lines[$i]->product->status_batch)) {
2740 print
'<td class="nowraponall left"><input name="batch'.$line_id.
'" id="batch'.$line_id.
'" type="text" value="'.$lines[$i]->batch.
'"><br>';
2742 print $langs->trans(
'SellByDate').
' : ';
2743 print $form->selectDate($lines[$i]->sellby,
'dlc'.$line_id, 0, 0, 1,
"").
'</br>';
2746 print $langs->trans(
'EatByDate').
' : ';
2747 print $form->selectDate($lines[$i]->eatby,
'dluo'.$line_id, 0, 0, 1,
"");
2753 print
'<!-- case edit 2 -->';
2756 print
'<td><input name="qtyl'.$line_id.
'" id="qtyl'.$line_id.
'" type="text" size="4" value="'.$lines[$i]->qty.
'"></td>';
2764 print
'</table></td>';
2766 $parameters = array();
2767 $parameters[
'line'] = $lines[$i];
2768 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
2772 print $hookmanager->resPrint;
2776 print
'<td class="center linecolqtytoreceive">'.$lines[$i]->qty.
'</td>';
2780 if ($lines[$i]->fk_entrepot > 0) {
2782 $entrepot->fetch($lines[$i]->fk_entrepot);
2784 print
'<td class="left tdoverflowmax150" title="'.dol_escape_htmltag($entrepot->label).
'">';
2785 print $entrepot->getNomUrl(1);
2794 if (isset($lines[$i]->batch)) {
2795 print
'<!-- Detail of lot -->';
2796 print
'<td class="linecolbatch nowrap">';
2797 $detail = $langs->trans(
"NA");
2798 if ($lines[$i]->product->status_batch > 0 && $lines[$i]->fk_product > 0) {
2799 require_once DOL_DOCUMENT_ROOT.
'/product/stock/class/productlot.class.php';
2801 $reslot = $productlot->fetch(0, $lines[$i]->fk_product, $lines[$i]->batch);
2803 $detail = $productlot->getNomUrl(1);
2806 $batchinfo = $langs->trans(
"Batch").
': '.$lines[$i]->batch;
2808 $batchinfo .=
' - '.$langs->trans(
"SellByDate").
': '.
dol_print_date($lines[$i]->sellby,
"day");
2811 $batchinfo .=
' - '.$langs->trans(
"EatByDate").
': '.
dol_print_date($lines[$i]->eatby,
"day");
2813 $detail = $form->textwithtooltip(
img_picto(
'',
'object_barcode').
' '.$langs->trans(
"DetailBatchNumber"), $batchinfo);
2816 print $detail .
'</td>';
2822 $parameters = array();
2823 $parameters[
'line'] = $lines[$i];
2824 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
2828 print $hookmanager->resPrint;
2833 print
'<td class="center linecolweight">';
2835 print $lines[$i]->product->weight * $lines[$i]->qty.
' '.
measuringUnitString(0,
"weight", $lines[$i]->product->weight_units);
2842 print
'<td class="center linecolvolume">';
2844 print $lines[$i]->product->volume * $lines[$i]->qty.
' '.
measuringUnitString(0,
"volume", $lines[$i]->product->volume_units);
2851 if ($action ==
'editline' && $lines[$i]->
id == $line_id) {
2852 print
'<td class="center valignmiddle" colspan="2">';
2853 print
'<input type="submit" class="button small button-save" id="savelinebutton marginbottomonly" name="save" value="'.$langs->trans(
"Save").
'"><br>';
2854 print
'<input type="submit" class="button small button-cancel" id="cancellinebutton" name="cancel" value="'.$langs->trans(
"Cancel").
'"><br>';
2856 } elseif (
$object->statut == Reception::STATUS_DRAFT) {
2858 print
'<td class="linecoledit center">';
2859 print
'<a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=editline&token='.newToken().
'&lineid='.$lines[$i]->id.
'">'.
img_edit().
'</a>';
2861 print
'<td class="linecoldelete" width="10">';
2862 print
'<a class="reposition" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=deleteline&token='.newToken().
'&lineid='.$lines[$i]->id.
'">'.
img_delete().
'</a>';
2866 if (isset($rowExtrafieldsStart, $rowExtrafieldsView, $rowEnd)) {
2867 print $rowExtrafieldsStart;
2868 print $rowExtrafieldsView;
2874 $arrayofpurchaselinealreadyoutput[$lines[$i]->fk_commandefourndet] = $lines[$i]->fk_commandefourndet;
2876 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters, $object, $action);
2880 print $hookmanager->resPrint;
2884 $extralabelslines = $extrafields->attributes[$lines[$i]->table_element];
2885 if (!empty($extralabelslines) && is_array($extralabelslines) && count($extralabelslines) > 0) {
2895 $line->id = $lines[$i]->id;
2896 $line->fetch_optionals();
2898 if ($action ==
'editline' && $lines[$i]->
id == $line_id) {
2899 print $line->showOptionals($extrafields,
'edit', array(
'colspan' => $colspan),
'');
2901 print $line->showOptionals($extrafields,
'view', array(
'colspan' => $colspan),
'');
2923 if (($user->socid == 0) && ($action !=
'presend')) {
2924 print
'<div class="tabsAction">';
2926 $parameters = array();
2927 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
2928 if (empty($reshook)) {
2929 if (
$object->statut == Reception::STATUS_DRAFT && $num_prod > 0) {
2930 if ((!
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && $user->hasRight(
'reception',
'creer'))
2931 || (
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && $user->hasRight(
'reception',
'reception_advance',
'validate'))) {
2932 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=valid&token='.newToken().
'">'.$langs->trans(
"Validate").
'</a>';
2934 print
'<a class="butActionRefused" href="#" title="'.$langs->trans(
"NotAllowed").
'">'.$langs->trans(
"Validate").
'</a>';
2938 if (
$object->statut == Reception::STATUS_VALIDATED && $user->hasRight(
'reception',
'creer')) {
2939 print
'<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.
'&action=modif&token='.newToken().
'">'.$langs->trans(
'SetToDraft').
'</a></div>';
2944 if (
$object->statut == Reception::STATUS_CLOSED && $user->hasRight(
'reception',
'creer')) {
2945 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.newToken().
'">'.$langs->trans(
"ReOpen").
'</a>';
2949 if (empty($user->socid)) {
2951 if (!
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') || $user->hasRight(
'reception',
'reception_advance',
'send')) {
2952 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=presend&mode=init#formmailbeforetitle">'.$langs->trans(
'SendByMail').
'</a>';
2954 print
'<a class="butActionRefused" href="#">'.$langs->trans(
'SendByMail').
'</a>';
2961 if ($user->hasRight(
'fournisseur',
'facture',
'creer') || $user->hasRight(
'supplier_invoice',
'creer')) {
2963 print
'<a class="butAction" href="'.DOL_URL_ROOT.
'/fourn/facture/card.php?action=create&origin='.
$object->element.
'&originid='.
$object->id.
'&socid='.
$object->socid.
'">'.$langs->trans(
"CreateBill").
'</a>';
2970 if (
$object->statut == Reception::STATUS_VALIDATED) {
2971 if ($user->hasRight(
'reception',
'creer') &&
$object->statut > 0) {
2973 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifybilled&token='.newToken().
'">'.$langs->trans(
'ClassifyBilled').
'</a>';
2975 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifyclosed&token='.newToken().
'">'.$langs->trans(
"Close").
'</a>';
2979 if ($user->hasRight(
'reception',
'supprimer')) {
2980 print
'<a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=delete&token='.newToken().
'">'.$langs->trans(
"Delete").
'</a>';
2992 if ($action !=
'presend' && $action !=
'editline') {
2993 print
'<div class="fichecenter"><div class="fichehalfleft">';
2996 $filedir =
$conf->reception->dir_output.
"/".$objectref;
2998 $urlsource = $_SERVER[
"PHP_SELF"].
"?id=".
$object->id;
3000 $genallowed = $user->hasRight(
'reception',
'lire');
3001 $delallowed = $user->hasRight(
'reception',
'creer');
3003 print $formfile->showdocuments(
'reception', $objectref, $filedir, $urlsource, $genallowed, $delallowed,
$object->model_pdf, 1, 0, 0, 28, 0,
'',
'',
'', $soc->default_lang);
3007 $somethingshown = $form->showLinkedObjectBlock($object,
'');
3009 print
'</div><div class="fichehalfright">';
3011 print
'</div></div>';
3015 $modelmail =
'reception_send';
3016 $defaulttopic =
'SendReceptionRef';
3017 $diroutput =
$conf->reception->dir_output;
3018 $trackid =
'rec'.$object->id;
3020 include DOL_DOCUMENT_ROOT.
'/core/tpl/card_presend.tpl.php';
$id
Support class for third parties, contacts, members, users or resources.
if(! $sortfield) if(! $sortorder) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage table ReceptionLineBatch.
Class to manage predefined suppliers products.
Class to manage line orders.
Class to manage customers orders.
Class to manage a WYSIWYG editor.
Class to manage warehouses.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
Class to manage the table of subscription to notifications.
Class ProductCombination Used to represent the relation between a product and one of its variants.
Class to manage products or services.
const TYPE_PRODUCT
Regular product.
const TYPE_SERVICE
Service.
Class with list of lots and properties.
Class to manage projects.
Class to manage proposals.
Class to manage receptions.
Class to manage table commandefournisseurdispatch.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage translations.
Class to manage Dolibarr users.
getCountry($searchkey, $withcode='', $dbtouse=null, $outputlangs=null, $entconv=1, $searchlabel='')
Return country label, code or id from an id, code or label.
print $script_file $mode $langs defaultlang(is_numeric($duration_value) ? " delay=". $duration_value :"").(is_numeric($duration_value2) ? " after cd cd cd description as description
Only used if Module[ID]Desc translation string is not found.
dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $object=null, $allowdotdot=false, $indexdatabase=1, $nolog=0)
Remove a file or several files with a mask.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='', $textonpictotooltip='')
Show information in HTML for admin users or standard users.
img_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dol_eval($s, $returnvalue=1, $hideerrors=1, $onlysimplestring='1')
Replace eval function to add more security.
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.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
showDimensionInBestUnit($dimension, $unit, $type, $outputlangs, $round=-1, $forceunitoutput='no', $use_short_label=0)
Output a dimension with best unit.
GETPOSTFLOAT($paramname, $rounding='', $option=2)
Return the value of a $_GET or $_POST supervariable, converted into float.
dol_htmlcleanlastbr($stringtodecode)
This function remove all ending and br at end.
dol_concatdesc($text1, $text2, $forxml=false, $invert=false)
Concat 2 descriptions with a new line between them (second operand after first one with appropriate n...
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_clone($srcobject, $native=2)
Create a clone of instance of object (new instance with same value for each properties) With native =...
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.
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.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify fiche.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
print $langs trans("Show") . '< td style="' . $timeColor . '" align="center"> s</td > badge status0 badge status4 badge status3 Error badge status8< td align="center">< span class="badge ' . $badge . '"></span ></td >< td align="center">< a href="#" class="button button-small" onclick="openLogModal(this)" data-req="' . dol_escape_htmltag($reqSafe) . '" data-res="' . dol_escape_htmltag($resSafe) . '" data-err="' . dol_escape_htmltag($errSafe) . '">< span class="fa fa-search-plus"></span ></a ></td ></tr >< tr >< td colspan="' . $colspan . '" class="opacitymedium"></td ></tr ></table ></div ></form > logModal none logModal none s a JSON string
buildzip.php
measuringUnitString($unitid, $measuring_style='', $unitscale=null, $use_short_label=0, $outputlangs=null)
Return translation label of a unit key.
reception_prepare_head(Reception $object)
Prepare array with list of tabs.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.