38require
'../main.inc.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmargin.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/core/modules/supplier_proposal/modules_supplier_proposal.php';
45require_once DOL_DOCUMENT_ROOT.
'/core/lib/supplier_proposal.lib.php';
46require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/class/extrafields.class.php';
48if (isModEnabled(
'project')) {
49 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
50 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
54$langs->loadLangs(array(
'companies',
'supplier_proposal',
'compta',
'bills',
'propal',
'orders',
'products',
'deliveries',
'sendings'));
55if (isModEnabled(
'margin')) {
56 $langs->load(
'margins');
63$socid =
GETPOST(
'socid',
'int');
64$action =
GETPOST(
'action',
'aZ09');
65$cancel =
GETPOST(
'cancel',
'alpha');
66$backtopage =
GETPOST(
'backtopage',
'alpha');
67$backtopageforcancel =
GETPOST(
'backtopageforcancel',
'alpha');
69$origin =
GETPOST(
'origin',
'alpha');
70$originid =
GETPOST(
'originid',
'int');
71$confirm =
GETPOST(
'confirm',
'alpha');
72$lineid =
GETPOST(
'lineid',
'int');
73$contactid =
GETPOST(
'contactid',
'int');
74$projectid =
GETPOST(
'projectid',
'int');
86$hookmanager->initHooks(array(
'supplier_proposalcard',
'globalcard'));
92$extrafields->fetch_name_optionals_label($object->table_element);
95if ($id > 0 || !empty($ref)) {
96 $ret = $object->fetch($id, $ref);
98 $ret = $object->fetch_thirdparty();
107$usercanread = $user->rights->supplier_proposal->lire;
108$usercancreate = $user->rights->supplier_proposal->creer;
109$usercandelete = $user->rights->supplier_proposal->supprimer;
112$usercanvalidate = ((!
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && !empty($usercancreate)) || (
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && !empty($user->rights->supplier_proposal->validate_advance)));
113$usercansend = (!
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') || $user->rights->supplier_proposal->send_advance);
116$usercanclose = $user->rights->supplier_proposal->cloturer;
117$usercancreateorder = ($user->rights->fournisseur->commande->creer || $user->rights->supplier_order->creer);
120$permissionnote = $usercancreate;
121$permissiondellink = $usercancreate;
122$permissiontoedit = $usercancreate;
123$permissiontoadd = $usercancreate;
126if (!empty($user->socid)) {
127 $socid = $user->socid;
136$parameters = array(
'socid' => $socid);
137$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
142if (empty($reshook)) {
143 $backurlforlist = DOL_URL_ROOT.
'/supplier_proposal/list.php';
145 if (empty($backtopage) || ($cancel && empty($id))) {
146 if (empty($backtopage) || ($cancel && strpos($backtopage,
'__ID__'))) {
147 if (empty($id) && (($action !=
'add' && $action !=
'create') || $cancel)) {
148 $backtopage = $backurlforlist;
150 $backtopage = DOL_URL_ROOT.
'/supplier_proposal/card.php?id='.((!empty($id) && $id > 0) ? $id :
'__ID__');
156 if (!empty($backtopageforcancel)) {
157 header(
"Location: ".$backtopageforcancel);
159 } elseif (!empty($backtopage)) {
160 header(
"Location: ".$backtopage);
166 include DOL_DOCUMENT_ROOT.
'/core/actions_setnotes.inc.php';
168 include DOL_DOCUMENT_ROOT.
'/core/actions_dellink.inc.php';
170 include DOL_DOCUMENT_ROOT.
'/core/actions_lineupdown.inc.php';
173 if ($action ==
'confirm_clone' && $confirm ==
'yes' && $usercancreate) {
174 if (1 == 0 && !
GETPOST(
'clone_content') && !
GETPOST(
'clone_receivers')) {
177 if ($object->id > 0) {
178 $result = $object->createFromClone($user, $socid);
180 header(
"Location: ".$_SERVER[
'PHP_SELF'].
'?id='.$result);
188 } elseif ($action ==
'confirm_delete' && $confirm ==
'yes' && $usercandelete) {
190 $result = $object->delete($user);
192 header(
'Location: '.DOL_URL_ROOT.
'/supplier_proposal/list.php');
195 $langs->load(
"errors");
198 } elseif ($action ==
'confirm_deleteline' && $confirm ==
'yes' && $usercancreate) {
200 $result = $object->deleteline($lineid);
203 $object->line_order(
true);
205 $langs->load(
"errors");
211 $outputlangs = $langs;
214 $newlang = (
GETPOST(
'lang_id',
'aZ09') ?
GETPOST(
'lang_id',
'aZ09') : $object->thirdparty->default_lang);
215 $outputlangs->setDefaultLang($newlang);
217 $ret = $object->fetch($id);
219 $object->fetch_thirdparty();
221 $object->generateDocument($object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
224 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.$object->id);
226 } elseif ($action ==
'confirm_validate' && $confirm ==
'yes' && $usercanvalidate) {
228 $result = $object->valid($user);
231 $outputlangs = $langs;
234 $newlang =
GETPOST(
'lang_id',
'aZ09');
237 $newlang = $object->thirdparty->default_lang;
239 if (!empty($newlang)) {
241 $outputlangs->setDefaultLang($newlang);
243 $model = $object->model_pdf;
244 $ret = $object->fetch($id);
246 $object->fetch_thirdparty();
249 $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
252 $langs->load(
"errors");
253 if (count($object->errors) > 0) {
259 } elseif ($action ==
'setdate_livraison' && $usercancreate) {
264 } elseif ($action ==
'add' && $usercancreate) {
266 $object->socid = $socid;
267 $object->fetch_thirdparty();
272 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Supplier")),
null,
'errors');
281 if (
GETPOST(
'createmode') ==
'copy' &&
GETPOST(
'copie_supplier_proposal')) {
282 if ($object->fetch(
GETPOST(
'copie_supplier_proposal')) > 0) {
284 $object->delivery_date = $date_delivery;
285 $object->shipping_method_id =
GETPOST(
'shipping_method_id',
'int');
286 $object->cond_reglement_id =
GETPOST(
'cond_reglement_id');
287 $object->mode_reglement_id =
GETPOST(
'mode_reglement_id');
288 $object->fk_account =
GETPOST(
'fk_account',
'int');
289 $object->socid =
GETPOST(
'socid');
290 $object->fk_project =
GETPOST(
'projectid',
'int');
291 $object->model_pdf =
GETPOST(
'model');
292 $object->author = $user->id;
293 $object->note =
GETPOST(
'note',
'restricthtml');
294 $object->note_private =
GETPOST(
'note',
'restricthtml');
297 setEventMessages($langs->trans(
"ErrorFailedToCopyProposal",
GETPOST(
'copie_supplier_proposal')),
null,
'errors');
301 $object->delivery_date = $date_delivery;
302 $object->demand_reason_id =
GETPOST(
'demand_reason_id');
303 $object->shipping_method_id =
GETPOST(
'shipping_method_id',
'int');
304 $object->cond_reglement_id =
GETPOST(
'cond_reglement_id');
305 $object->mode_reglement_id =
GETPOST(
'mode_reglement_id');
306 $object->fk_account =
GETPOST(
'fk_account',
'int');
307 $object->fk_project =
GETPOST(
'projectid',
'int');
308 $object->model_pdf =
GETPOST(
'model');
309 $object->author = $user->id;
310 $object->note =
GETPOST(
'note',
'restricthtml');
311 $object->note_private =
GETPOST(
'note',
'restricthtml');
313 $object->origin =
GETPOST(
'origin');
314 $object->origin_id =
GETPOST(
'originid');
317 if (isModEnabled(
"multicurrency")) {
318 $object->multicurrency_code =
GETPOST(
'multicurrency_code',
'alpha');
322 $ret = $extrafields->setOptionalsFromPost(
null, $object);
330 if ($origin && $originid) {
332 $element = $subelement = $origin;
333 if (preg_match(
'/^([^_]+)_([^_]+)/i', $origin, $regs)) {
335 $subelement = $regs[2];
339 if ($element ==
'order') {
340 $element = $subelement =
'commande';
342 if ($element ==
'propal') {
343 $element =
'comm/propal';
344 $subelement =
'propal';
346 if ($element ==
'contract') {
347 $element = $subelement =
'contrat';
349 if ($element ==
'inter') {
350 $element = $subelement =
'ficheinter';
352 if ($element ==
'shipping') {
353 $element = $subelement =
'expedition';
356 $object->origin = $origin;
357 $object->origin_id = $originid;
360 $object->linked_objects [$object->origin] = $object->origin_id;
361 if (is_array($_POST[
'other_linked_objects']) && !empty($_POST[
'other_linked_objects'])) {
362 $object->linked_objects = array_merge($object->linked_objects, $_POST[
'other_linked_objects']);
365 $id = $object->create($user);
369 $classname = ucfirst($subelement);
370 $srcobject =
new $classname($db);
372 dol_syslog(
"Try to find source object origin=".$object->origin.
" originid=".$object->origin_id.
" to add lines");
373 $result = $srcobject->fetch($object->origin_id);
376 $lines = $srcobject->lines;
377 if (empty($lines) && method_exists($srcobject,
'fetch_lines')) {
378 $srcobject->fetch_lines();
379 $lines = $srcobject->lines;
383 $num = count($lines);
384 for ($i = 0; $i < $num; $i++) {
385 $label = (!empty($lines[$i]->label) ? $lines[$i]->label :
'');
386 $desc = (!empty($lines[$i]->desc) ? $lines[$i]->desc : $lines[$i]->libelle);
389 $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0);
392 if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
397 if (method_exists($lines[$i],
'fetch_optionals')) {
398 $lines[$i]->fetch_optionals();
399 $array_options = $lines[$i]->array_options;
402 $result = $object->addline(
404 $lines[$i]->subprice,
407 $lines[$i]->localtax1_tx,
408 $lines[$i]->localtax2_tx,
409 $lines[$i]->fk_product,
410 $lines[$i]->remise_percent,
413 $lines[$i]->info_bits,
416 $lines[$i]->special_code,
418 $lines[$i]->fk_fournprice,
422 $lines[$i]->ref_supplier,
435 if ($result > 0 && $lines[$i]->product_type == 9) {
436 $fk_parent_line = $result;
441 $parameters = array(
'objFrom' => $srcobject);
442 $reshook = $hookmanager->executeHooks(
'createFrom', $parameters, $object, $action);
458 $id = $object->create($user);
467 $outputlangs = $langs;
470 $newlang =
GETPOST(
'lang_id',
'aZ09');
473 $newlang = $object->thirdparty->default_lang;
475 if (!empty($newlang)) {
477 $outputlangs->setDefaultLang($newlang);
479 $model = $object->model_pdf;
481 $ret = $object->fetch($id);
482 $result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
488 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.$id);
501 } elseif ($action ==
'confirm_reopen' && $usercanclose && !
GETPOST(
'cancel',
'alpha')) {
507 } elseif ($action ==
'close' && $usercanclose && !
GETPOST(
'cancel',
'alpha')) {
513 } elseif ($action ==
'setstatut' && $usercanclose && !
GETPOST(
'cancel',
'alpha')) {
516 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"CloseAs")),
null,
'errors');
521 $object->cloture($user,
GETPOST(
'statut'),
GETPOST(
'note',
'restricthtml'));
527 include DOL_DOCUMENT_ROOT.
'/core/actions_printing.inc.php';
530 $triggersendname =
'PROPOSAL_SUPPLIER_SENTBYMAIL';
531 $autocopy =
'MAIN_MAIL_AUTOCOPY_SUPPLIER_PROPOSAL_TO';
532 $trackid =
'spro'.$object->id;
533 include DOL_DOCUMENT_ROOT.
'/core/actions_sendmails.inc.php';
536 $upload_dir = $conf->supplier_proposal->dir_output;
537 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
541 if ($action ==
'modif' && $usercancreate) {
542 $object->setDraft($user);
546 $outputlangs = $langs;
549 $newlang = (
GETPOST(
'lang_id',
'aZ09') ?
GETPOST(
'lang_id',
'aZ09') : $object->thirdparty->default_lang);
550 $outputlangs->setDefaultLang($newlang);
552 $ret = $object->fetch($id);
554 $object->fetch_thirdparty();
556 $object->generateDocument($object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
558 } elseif ($action ==
"setabsolutediscount" && $usercancreate) {
559 if (
GETPOST(
"remise_id",
'int')) {
560 if ($object->id > 0) {
561 $result = $object->insert_discount(
GETPOST(
"remise_id",
'int'));
570 if ($action ==
'addline' &&
GETPOST(
'submitforalllines',
'aZ09') &&
GETPOST(
'vatforalllines',
'alpha') && $usercancreate) {
572 $vat_rate = (
GETPOST(
'vatforalllines') ?
GETPOST(
'vatforalllines') : 0);
573 $vat_rate = str_replace(
'*',
'', $vat_rate);
574 $localtax1_rate =
get_localtax($vat_rate, 1, $object->thirdparty, $mysoc);
575 $localtax2_rate =
get_localtax($vat_rate, 2, $object->thirdparty, $mysoc);
576 foreach ($object->lines as $line) {
577 $result = $object->updateline($line->id, $line->subprice, $line->qty, $line->remise_percent, $vat_rate, $localtax1_rate, $localtax2_rate, $line->desc,
'HT', $line->info_bits, $line->special_code, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->product_type, $line->array_options, $line->fk_unit, $line->multicurrency_subprice);
579 } elseif ($action ==
'addline' && $usercancreate) {
580 $langs->load(
'errors');
585 $product_desc = (GETPOSTISSET(
'dp_desc') ?
GETPOST(
'dp_desc',
'restricthtml') :
'');
589 $ref_supplier =
GETPOST(
'fourn_ref',
'alpha');
591 $prod_entry_mode =
GETPOST(
'prod_entry_mode',
'aZ09');
592 if ($prod_entry_mode ==
'free') {
595 $idprod =
GETPOST(
'idprod',
'int');
607 $remise_percent = (GETPOSTISSET(
'remise_percent'.$predef) ?
price2num(
GETPOST(
'remise_percent'.$predef,
'alpha'),
'', 2) : 0);
608 if (empty($remise_percent)) {
613 $extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
614 $array_options = $extrafields->getOptionalsFromPost($object->table_element_line, $predef);
616 if (is_array($extralabelsline)) {
618 foreach ($extralabelsline as $key => $value) {
619 unset($_POST[
"options_".$key]);
623 if ($prod_entry_mode ==
'free' &&
GETPOST(
'price_ht') < 0 && $qty < 0) {
624 setEventMessages($langs->trans(
'ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv(
'UnitPrice'), $langs->transnoentitiesnoconv(
'Qty')),
null,
'errors');
627 if ($prod_entry_mode ==
'free' && (empty($idprod) || $idprod < 0) &&
GETPOST(
'type') < 0) {
628 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Type")),
null,
'errors');
632 if ($prod_entry_mode ==
'free' && (empty($idprod) || $idprod < 0) &&
GETPOST(
'price_ht') ===
'' &&
GETPOST(
'price_ttc') ===
'' &&
GETPOST(
'multicurrency_price_ht') ===
'') {
633 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"UnitPrice")),
null,
'errors');
636 if ($prod_entry_mode ==
'free' && (empty($idprod) || $idprod < 0) && empty($product_desc)) {
637 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Description")),
null,
'errors');
640 if (!$error && ($qty >= 0)) {
644 $price_base_type = (
GETPOST(
'price_base_type',
'alpha') ?
GETPOST(
'price_base_type',
'alpha') :
'HT');
648 if ($prod_entry_mode !=
'free' && empty($error)) {
652 if (
GETPOST(
'idprodfournprice',
'alpha') == -1 ||
GETPOST(
'idprodfournprice',
'alpha') ==
'') {
657 if (preg_match(
'/^idprod_([0-9]+)$/',
GETPOST(
'idprodfournprice',
'alpha'), $reg)) {
659 $res = $productsupplier->fetch($idprod);
662 if (
getDolGlobalString(
'SUPPLIER_TAKE_FIRST_PRICE_IF_NO_PRICE_FOR_CURRENT_SUPPLIER')) {
664 $productsupplier->get_buyprice(0, -1, $idprod,
'none', $fksoctosearch);
665 if ($productsupplier->fourn_socid != $socid) {
666 $productsupplier->ref_supplier =
'';
669 $fksoctosearch = $object->thirdparty->id;
670 $productsupplier->get_buyprice(0, -1, $idprod,
'none', $fksoctosearch);
672 } elseif (
GETPOST(
'idprodfournprice',
'alpha') > 0) {
675 $idprod = $productsupplier->get_buyprice(
GETPOST(
'idprodfournprice',
'alpha'), $qtytosearch);
676 $res = $productsupplier->fetch($idprod);
680 $label = $productsupplier->label;
684 $outputlangs = $langs;
686 if (empty($newlang) &&
GETPOST(
'lang_id',
'aZ09')) {
687 $newlang =
GETPOST(
'lang_id',
'aZ09');
689 if (empty($newlang)) {
690 $newlang = $object->thirdparty->default_lang;
692 if (!empty($newlang)) {
694 $outputlangs->setDefaultLang($newlang);
696 $desc = (!empty($productsupplier->multilangs[$outputlangs->defaultlang][
"description"])) ? $productsupplier->multilangs[$outputlangs->defaultlang][
"description"] : $productsupplier->
description;
698 $desc = $productsupplier->description;
701 if (!empty($productsupplier->desc_supplier) &&
getDolGlobalString(
'PRODUIT_FOURN_TEXTS')) {
702 $desc = $productsupplier->desc_supplier;
706 if (trim($product_desc) == trim($desc) &&
getDolGlobalString(
'PRODUIT_AUTOFILL_DESC')) {
711 $desc = $product_desc;
713 if (!empty($product_desc) && trim($product_desc) != trim($desc)) {
717 $ref_supplier = $productsupplier->ref_supplier;
721 if (!GETPOSTISSET(
'tva_tx')) {
722 $tva_tx =
get_default_tva($object->thirdparty, $mysoc, $productsupplier->id,
GETPOST(
'idprodfournprice',
'alpha'));
723 $tva_npr =
get_default_npr($object->thirdparty, $mysoc, $productsupplier->id,
GETPOST(
'idprodfournprice',
'alpha'));
725 if (empty($tva_tx)) {
728 $localtax1_tx =
get_localtax($tva_tx, 1, $mysoc, $object->thirdparty, $tva_npr);
729 $localtax2_tx =
get_localtax($tva_tx, 2, $mysoc, $object->thirdparty, $tva_npr);
731 $type = $productsupplier->type;
732 if (
GETPOST(
'price_ht') !=
'' ||
GETPOST(
'multicurrency_price_ht') !=
'') {
733 $price_base_type =
'HT';
735 $pu_devise =
price2num($price_ht_devise,
'CU');
736 } elseif (
GETPOST(
'price_ttc') !=
'' ||
GETPOST(
'multicurrency_price_ttc') !=
'') {
737 $price_base_type =
'TTC';
739 $pu_devise =
price2num($price_ttc_devise,
'CU');
741 $price_base_type = ($productsupplier->fourn_price_base_type ? $productsupplier->fourn_price_base_type :
'HT');
742 if (empty($object->multicurrency_code) || ($productsupplier->fourn_multicurrency_code != $object->multicurrency_code)) {
743 $pu = $productsupplier->fourn_pu;
746 $pu = $productsupplier->fourn_pu;
747 $pu_devise = $productsupplier->fourn_multicurrency_unitprice;
756 $fournprice = (is_numeric(
GETPOST(
'idprodfournprice',
'alpha')) ?
GETPOST(
'idprodfournprice',
'alpha') : -1);
759 $result = $object->addline(
761 ($price_base_type ==
'HT' ? $pu : 0),
766 $productsupplier->id,
769 ($price_base_type ==
'TTC' ? $pu : 0),
772 min($rank, count($object->lines) + 1),
780 $productsupplier->fk_unit,
796 if ($idprod == -99 || $idprod == 0) {
799 $langs->load(
"errors");
800 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ProductOrService")).
' '.$langs->trans(
"or").
' '.$langs->trans(
"NoPriceDefinedForThisSupplier"),
null,
'errors');
805 $langs->load(
"errors");
806 setEventMessages($langs->trans(
"ErrorQtyTooLowForThisSupplier"),
null,
'errors');
808 } elseif ((
GETPOST(
'price_ht') !==
'' ||
GETPOST(
'price_ttc') !==
'' ||
GETPOST(
'multicurrency_price_ht') !=
'') && empty($error)) {
812 $tva_npr = (preg_match(
'/\*/', $tva_tx) ? 1 : 0);
813 $tva_tx = str_replace(
'*',
'', $tva_tx);
814 $label = (
GETPOST(
'product_label') ?
GETPOST(
'product_label') :
'');
815 $desc = $product_desc;
818 $fk_unit =
GETPOST(
'units',
'alpha');
820 if (!preg_match(
'/\((.*)\)/', $tva_tx)) {
825 $localtax1_tx =
get_localtax($tva_tx, 1, $mysoc, $object->thirdparty);
826 $localtax2_tx =
get_localtax($tva_tx, 2, $mysoc, $object->thirdparty);
828 if (
GETPOST(
'price_ht') !=
'' ||
GETPOST(
'multicurrency_price_ht') !=
'') {
832 $pu_ht =
price2num($pu_ttc / (1 + ($tva_tx / 100)),
'MU');
834 $price_base_type =
'HT';
835 $pu_ht_devise =
price2num($price_ht_devise,
'CU');
838 $result = $object->addline(
867 if (!$error && $result > 0) {
870 $ret = $object->fetch($object->id);
874 $outputlangs = $langs;
877 $newlang =
GETPOST(
'lang_id',
'aZ09');
880 $newlang = $object->thirdparty->default_lang;
882 if (!empty($newlang)) {
884 $outputlangs->setDefaultLang($newlang);
886 $model = $object->model_pdf;
887 $ret = $object->fetch($id);
889 $object->fetch_thirdparty();
892 $result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
898 unset($_POST[
'prod_entry_mode']);
900 unset($_POST[
'qty']);
901 unset($_POST[
'type']);
902 unset($_POST[
'remise_percent']);
904 unset($_POST[
'price_ht']);
905 unset($_POST[
'multicurrency_price_ht']);
906 unset($_POST[
'price_ttc']);
907 unset($_POST[
'fourn_ref']);
908 unset($_POST[
'tva_tx']);
909 unset($_POST[
'label']);
910 unset($_POST[
'product_ref']);
911 unset($_POST[
'product_label']);
912 unset($_POST[
'product_desc']);
913 unset($_POST[
'fournprice']);
914 unset($_POST[
'buying_price']);
915 unset($localtax1_tx);
916 unset($localtax2_tx);
917 unset($_POST[
'np_marginRate']);
918 unset($_POST[
'np_markRate']);
919 unset($_POST[
'dp_desc']);
920 unset($_POST[
'idprodfournprice']);
921 unset($_POST[
'units']);
923 unset($_POST[
'idprod']);
925 unset($_POST[
'date_starthour']);
926 unset($_POST[
'date_startmin']);
927 unset($_POST[
'date_startsec']);
928 unset($_POST[
'date_startday']);
929 unset($_POST[
'date_startmonth']);
930 unset($_POST[
'date_startyear']);
931 unset($_POST[
'date_endhour']);
932 unset($_POST[
'date_endmin']);
933 unset($_POST[
'date_endsec']);
934 unset($_POST[
'date_endday']);
935 unset($_POST[
'date_endmonth']);
936 unset($_POST[
'date_endyear']);
943 } elseif ($action ==
'updateline' && $usercancreate &&
GETPOST(
'save') == $langs->trans(
"Save")) {
949 if (preg_match(
'/\*/', $vat_rate)) {
957 $vat_rate = str_replace(
'*',
'', $vat_rate);
958 $localtax1_rate =
get_localtax($vat_rate, 1, $mysoc, $object->thirdparty);
959 $localtax2_rate =
get_localtax($vat_rate, 2, $mysoc, $object->thirdparty);
961 if (
GETPOST(
'price_ht') !=
'') {
962 $price_base_type =
'HT';
966 $vatratecleaned = $vat_rate;
967 if (preg_match(
'/^(.*)\s*\((.*)\)$/', $vat_rate, $reg)) {
968 $vatratecleaned = trim($reg[1]);
969 $vatratecode = $reg[2];
973 $ht = (float) $ttc / (1 + ((
float) $vatratecleaned / 100));
974 $price_base_type =
'HT';
980 $fournprice = (
GETPOST(
'fournprice') ?
GETPOST(
'fournprice') :
'');
981 $buyingprice = (
GETPOST(
'buying_price') !=
'' ?
GETPOST(
'buying_price') :
'');
984 $extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
985 $array_options = $extrafields->getOptionalsFromPost($object->table_element_line);
987 if (is_array($extralabelsline)) {
988 foreach ($extralabelsline as $key => $value) {
989 unset($_POST[
"options_".$key]);
994 $special_code =
GETPOST(
'special_code');
1000 $productid =
GETPOST(
'productid',
'int');
1001 if (!empty($productid)) {
1004 if ($productid > 0 && $productsupplier->get_buyprice(0,
price2num(
GETPOST(
'qty')), $productid,
'none',
GETPOST(
'socid',
'int')) < 0) {
1005 setEventMessages($langs->trans(
"ErrorQtyTooLowForThisSupplier"),
null,
'warnings');
1010 $res = $product->fetch($productid);
1012 $type = $product->type;
1014 $price_min = $product->price_min;
1015 if (
getDolGlobalString(
'PRODUIT_MULTIPRICES') && !empty($object->thirdparty->price_level)) {
1016 $price_min = $product->multiprices_min [$object->thirdparty->price_level];
1022 $label = (
GETPOST(
'product_label') ?
GETPOST(
'product_label') :
'');
1026 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Type")),
null,
'errors');
1034 $ref_supplier =
GETPOST(
'fourn_ref',
'alpha');
1037 $result = $object->updateline(
1049 GETPOST(
'fk_parent_line',
'int'),
1066 $outputlangs = $langs;
1068 $outputlangs =
new Translate(
"", $conf);
1069 $newlang = (
GETPOST(
'lang_id',
'aZ09') ?
GETPOST(
'lang_id',
'aZ09') : $object->thirdparty->default_lang);
1070 $outputlangs->setDefaultLang($newlang);
1072 $ret = $object->fetch($id);
1073 $object->generateDocument($object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
1076 unset($_POST[
'qty']);
1077 unset($_POST[
'type']);
1078 unset($_POST[
'productid']);
1079 unset($_POST[
'remise_percent']);
1080 unset($_POST[
'price_ht']);
1081 unset($_POST[
'multicurrency_price_ht']);
1082 unset($_POST[
'price_ttc']);
1083 unset($_POST[
'tva_tx']);
1084 unset($_POST[
'product_ref']);
1085 unset($_POST[
'product_label']);
1086 unset($_POST[
'product_desc']);
1087 unset($_POST[
'fournprice']);
1088 unset($_POST[
'buying_price']);
1090 unset($_POST[
'date_starthour']);
1091 unset($_POST[
'date_startmin']);
1092 unset($_POST[
'date_startsec']);
1093 unset($_POST[
'date_startday']);
1094 unset($_POST[
'date_startmonth']);
1095 unset($_POST[
'date_startyear']);
1096 unset($_POST[
'date_endhour']);
1097 unset($_POST[
'date_endmin']);
1098 unset($_POST[
'date_endsec']);
1099 unset($_POST[
'date_endday']);
1100 unset($_POST[
'date_endmonth']);
1101 unset($_POST[
'date_endyear']);
1108 } elseif ($action ==
'updateline' && $usercancreate &&
GETPOST(
'cancel',
'alpha') == $langs->trans(
"Cancel")) {
1109 header(
'Location: '.$_SERVER[
'PHP_SELF'].
'?id='.$object->id);
1111 } elseif ($action ==
'classin' && $usercancreate) {
1113 $object->setProject(
GETPOST(
'projectid'),
'int');
1114 } elseif ($action ==
'setavailability' && $usercancreate) {
1116 $result = $object->availability(
GETPOST(
'availability_id'));
1117 } elseif ($action ==
'setconditions' && $usercancreate) {
1119 $result = $object->setPaymentTerms(
GETPOST(
'cond_reglement_id',
'int'));
1124 } elseif ($action ==
'setmode' && $usercancreate) {
1126 $result = $object->setPaymentMethods(
GETPOST(
'mode_reglement_id',
'int'));
1127 } elseif ($action ==
'setmulticurrencycode' && $usercancreate) {
1129 $result = $object->setMulticurrencyCode(
GETPOST(
'multicurrency_code',
'alpha'));
1130 } elseif ($action ==
'setmulticurrencyrate' && $usercancreate) {
1132 $result = $object->setMulticurrencyRate(
price2num(
GETPOST(
'multicurrency_tx')),
GETPOST(
'calculation_mode',
'int'));
1133 } elseif ($action ==
'update_extras') {
1134 $object->oldcopy =
dol_clone($object, 2);
1137 $ret = $extrafields->setOptionalsFromPost(
null, $object,
GETPOST(
'attribute',
'restricthtml'));
1143 $result = $object->insertExtraFields(
'PROPOSAL_SUPPLIER_MODIFY');
1151 $action =
'edit_extras';
1161$title = $object->ref.
" - ".$langs->trans(
'Card');
1162if ($action ==
'create') {
1163 $title = $langs->trans(
"SupplierProposalNew");
1165$help_url =
'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur';
1169$form =
new Form($db);
1173$companystatic =
new Societe($db);
1174if (isModEnabled(
'project')) {
1181if ($action ==
'create') {
1182 $currency_code = $conf->currency;
1184 print
load_fiche_titre($langs->trans(
"SupplierProposalNew"),
'',
'supplier_proposal');
1188 $res = $soc->fetch($socid);
1192 if (!empty($origin) && !empty($originid)) {
1193 $element = $subelement =
GETPOST(
'origin');
1194 if (preg_match(
'/^([^_]+)_([^_]+)/i',
GETPOST(
'origin'), $regs)) {
1195 $element = $regs[1];
1196 $subelement = $regs[2];
1200 if ($element ==
'order' || $element ==
'commande') {
1201 $element = $subelement =
'commande';
1203 if ($element ==
'propal') {
1204 $element =
'comm/propal';
1205 $subelement =
'propal';
1210 $classname = ucfirst($subelement);
1211 $objectsrc =
new $classname($db);
1212 $objectsrc->fetch($originid);
1213 if (empty($objectsrc->lines) && method_exists($objectsrc,
'fetch_lines')) {
1214 $objectsrc->fetch_lines();
1216 $objectsrc->fetch_thirdparty();
1218 $projectid = (!empty($objectsrc->fk_project) ? $objectsrc->fk_project :
'');
1219 $soc = $objectsrc->thirdparty;
1221 $cond_reglement_id = (!empty($objectsrc->cond_reglement_id) ? $objectsrc->cond_reglement_id : (!empty($soc->cond_reglement_id) ? $soc->cond_reglement_id : 0));
1222 $mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0));
1225 $objectsrc->fetch_optionals();
1226 $object->array_options = $objectsrc->array_options;
1228 if (isModEnabled(
"multicurrency")) {
1229 if (!empty($objectsrc->multicurrency_code)) {
1230 $currency_code = $objectsrc->multicurrency_code;
1232 if (
getDolGlobalString(
'MULTICURRENCY_USE_ORIGIN_TX') && !empty($objectsrc->multicurrency_tx)) {
1233 $currency_tx = $objectsrc->multicurrency_tx;
1237 $cond_reglement_id = $soc->cond_reglement_supplier_id;
1238 $mode_reglement_id = $soc->mode_reglement_supplier_id;
1239 if (isModEnabled(
"multicurrency") && !empty($soc->multicurrency_code)) {
1240 $currency_code = $soc->multicurrency_code;
1246 print
'<form name="addprop" action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">';
1247 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1248 print
'<input type="hidden" name="action" value="add">';
1249 if ($origin !=
'project' && $originid) {
1250 print
'<input type="hidden" name="origin" value="'.$origin.
'">';
1251 print
'<input type="hidden" name="originid" value="'.$originid.
'">';
1253 print
'<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
1258 $parameters = array();
1260 $reshook = $hookmanager->executeHooks(
'tabContentCreateSupplierProposal', $parameters, $object, $action);
1261 if (empty($reshook)) {
1262 print
'<table class="border centpercent">';
1265 print
'<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans(
'Ref').
'</td><td colspan="2">'.$langs->trans(
"Draft").
'</td></tr>';
1269 print
'<td class="fieldrequired">'.$langs->trans(
'Supplier').
'</td>';
1271 print
'<td colspan="2">';
1272 print $soc->getNomUrl(1,
'supplier');
1273 print
'<input type="hidden" name="socid" value="'.$soc->id.
'">';
1276 print
'<td colspan="2">';
1277 $filter =
'((s.fournisseur:=:1) AND (s.status:=:1))';
1278 print
img_picto(
'',
'company',
'class="pictofixedwidth"').$form->select_company((empty($socid) ?
'' : $socid),
'socid', $filter,
'SelectThirdParty', 1, 0, null, 0,
'minwidth175 maxwidth500 widthcentpercentminusxx');
1282 $(document).ready(function() {
1283 $("#socid").change(function() {
1284 console.log("We have changed the company - Reload page");
1286 $("input[name=action]").val("create");
1287 $("form[name=add]").submit();
1292 print
' <a href="'.DOL_URL_ROOT.
'/societe/card.php?action=create&client=0&fournisseur=1&backtopage='.urlencode($_SERVER[
"PHP_SELF"].
'?action=create').
'"><span class="fa fa-plus-circle valignmiddle paddingleft" title="'.$langs->trans(
"AddThirdParty").
'"></span></a>';
1299 print
'<tr><td>'.$langs->trans(
'Discounts').
'</td><td>';
1301 $absolute_discount = $soc->getAvailableDiscounts(
'',
'', 0, 1);
1305 $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?socid='.$thirdparty->id.
'&action='.$action.
'&origin='.
GETPOST(
'origin').
'&originid='.
GETPOST(
'originid'));
1306 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
1312 print
'<tr><td class="nowrap">'.$langs->trans(
'PaymentConditionsShort').
'</td><td colspan="2">';
1313 print
img_picto(
'',
'payment',
'class="pictofixedwidth"');
1314 print $form->getSelectConditionsPaiements(
GETPOST(
'cond_reglement_id') > 0 ?
GETPOST(
'cond_reglement_id') : $cond_reglement_id,
'cond_reglement_id', -1, 1);
1318 print
'<tr><td>'.$langs->trans(
'PaymentMode').
'</td><td colspan="2">';
1319 print
img_picto(
'',
'bank',
'class="pictofixedwidth"');
1320 $form->select_types_paiements(
GETPOST(
'mode_reglement_id') > 0 ?
GETPOST(
'mode_reglement_id') : $mode_reglement_id,
'mode_reglement_id');
1324 if (
getDolGlobalString(
'BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL') && isModEnabled(
"banque")) {
1325 print
'<tr><td>'.$langs->trans(
'BankAccount').
'</td><td colspan="2">';
1326 $form->select_comptes(
GETPOST(
'fk_account') > 0 ?
GETPOST(
'fk_account',
'int') : $fk_account,
'fk_account', 0,
'', 1);
1331 if (isModEnabled(
"expedition")) {
1332 print
'<tr><td>'.$langs->trans(
'SendingMethod').
'</td><td colspan="2">';
1333 print
img_picto(
'',
'dolly',
'class="pictofixedwidth"');
1334 $form->selectShippingMethod(
GETPOST(
'shipping_method_id') > 0 ?
GETPOST(
'shipping_method_id',
'int') :
"",
'shipping_method_id',
'', 1);
1339 print
'<tr><td>'.$langs->trans(
"DeliveryDate").
'</td>';
1340 print
'<td colspan="2">';
1341 print
img_picto(
'',
'action',
'class="pictofixedwidth"');
1344 $tmpdte = time() + (7 *
getDolGlobalInt(
'DATE_LIVRAISON_WEEK_DELAY') * 24 * 60 * 60);
1345 $syear = date(
"Y", $tmpdte);
1346 $smonth = date(
"m", $tmpdte);
1347 $sday = date(
"d", $tmpdte);
1348 print $form->selectDate($syear.
"-".$smonth.
"-".$sday,
'liv_',
'',
'',
'',
"addask");
1350 print $form->selectDate($datedelivery ? $datedelivery : -1,
'liv_',
'',
'',
'',
"addask", 1, 1);
1357 print
'<td>'.$langs->trans(
"DefaultModel").
'</td>';
1358 print
'<td colspan="2">';
1359 print
img_picto(
'',
'pdf',
'class="pictofixedwidth"');
1361 $preselected = (
getDolGlobalString(
'SUPPLIER_PROPOSAL_ADDON_PDF_ODT_DEFAULT') ? $conf->global->SUPPLIER_PROPOSAL_ADDON_PDF_ODT_DEFAULT : $conf->global->SUPPLIER_PROPOSAL_ADDON_PDF);
1362 print $form->selectarray(
'model', $list, $preselected, 0, 0, 0,
'', 0, 0, 0,
'',
'', 1);
1366 if (isModEnabled(
'project')) {
1367 $langs->load(
"projects");
1371 if ($origin ==
'project') {
1372 $projectid = ($originid ? $originid : 0);
1376 print
'<td>'.$langs->trans(
"Project").
'</td><td colspan="2">';
1377 print
img_picto(
'',
'project',
'class="pictofixedwidth"').$formproject->select_projects(($soc->id > 0 ? $soc->id : -1), $projectid,
'projectid', 0, 0, 1, 1, 0, 0, 0,
'', 1, 0,
'maxwidth500');
1378 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>';
1385 if (isModEnabled(
"multicurrency")) {
1387 print
'<td>'.$form->editfieldkey(
'Currency',
'multicurrency_code',
'', $object, 0).
'</td>';
1388 print
'<td colspan="3" class="maxwidthonsmartphone">';
1389 print
img_picto(
'',
'currency',
'class="pictofixedwidth"');
1390 print $form->selectMultiCurrency($currency_code,
'multicurrency_code');
1395 $parameters = array(
'colspan' =>
' colspan="3"',
'cols' => 3);
1396 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters, $object, $action);
1397 print $hookmanager->resPrint;
1398 if (empty($reshook)) {
1399 print $object->showOptionals($extrafields,
'create', $parameters);
1404 if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
1406 if ($origin ==
'contrat') {
1410 $objectsrc->update_price(1,
'auto', 1);
1413 print
"\n<!-- ".$classname.
" info -->";
1415 print
'<input type="hidden" name="amount" value="'.$objectsrc->total_ht.
'">'.
"\n";
1416 print
'<input type="hidden" name="total" value="'.$objectsrc->total_ttc.
'">'.
"\n";
1417 print
'<input type="hidden" name="tva" value="'.$objectsrc->total_tva.
'">'.
"\n";
1418 print
'<input type="hidden" name="origin" value="'.$objectsrc->element.
'">';
1419 print
'<input type="hidden" name="originid" value="'.$objectsrc->id.
'">';
1421 print
'<tr><td>'.$langs->trans(
'CommRequest').
'</td><td colspan="2">'.$objectsrc->getNomUrl(1).
'</td></tr>';
1422 print
'<tr><td>'.$langs->trans(
'AmountHT').
'</td><td colspan="2">'.
price($objectsrc->total_ht).
'</td></tr>';
1423 print
'<tr><td>'.$langs->trans(
'AmountVAT').
'</td><td colspan="2">'.
price($objectsrc->total_tva).
"</td></tr>";
1424 if ($mysoc->localtax1_assuj ==
"1" || $objectsrc->total_localtax1 != 0) {
1425 print
'<tr><td>'.$langs->transcountry(
"AmountLT1", $mysoc->country_code).
'</td><td colspan="2">'.
price($objectsrc->total_localtax1).
"</td></tr>";
1428 if ($mysoc->localtax2_assuj ==
"1" || $objectsrc->total_localtax2 != 0) {
1429 print
'<tr><td>'.$langs->transcountry(
"AmountLT2", $mysoc->country_code).
'</td><td colspan="2">'.
price($objectsrc->total_localtax2).
"</td></tr>";
1431 print
'<tr><td>'.$langs->trans(
'AmountTTC').
'</td><td colspan="2">'.
price($objectsrc->total_ttc).
"</td></tr>";
1433 if (isModEnabled(
"multicurrency")) {
1434 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountHT').
'</td><td colspan="2">'.
price($objectsrc->multicurrency_total_ht).
'</td></tr>';
1435 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountVAT').
'</td><td colspan="2">'.
price($objectsrc->multicurrency_total_tva).
"</td></tr>";
1436 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountTTC').
'</td><td colspan="2">'.
price($objectsrc->multicurrency_total_ttc).
"</td></tr>";
1448 print
'<input type="hidden" name="createmode" value="empty">';
1452 print
'<br><table>';
1456 print
'<td><input type="radio" name="createmode" value="copy"></td>';
1457 print
'<td>'.$langs->trans(
"CopyAskFrom").
' </td>';
1459 $liste_ask = array();
1460 $liste_ask [0] =
'';
1462 $sql =
"SELECT p.rowid as id, p.ref, s.nom";
1463 $sql .=
" FROM ".MAIN_DB_PREFIX.
"supplier_proposal p";
1464 $sql .=
", ".MAIN_DB_PREFIX.
"societe s";
1465 $sql .=
" WHERE s.rowid = p.fk_soc";
1466 $sql .=
" AND p.entityy IN (".getEntity(
'supplier_proposal').
")";
1467 $sql .=
" AND p.fk_statut <> ".SupplierProposal::STATUS_DRAFT;
1468 $sql .=
" ORDER BY Id";
1470 $resql = $db->query($sql);
1472 $num = $db->num_rows($resql);
1475 $row = $db->fetch_row($resql);
1476 $askPriceSupplierRefAndSocName = $row[1].
" - ".$row[2];
1477 $liste_ask[$row[0]] = $askPriceSupplierRefAndSocName;
1480 print $form->selectarray(
"copie_supplier_proposal", $liste_ask, 0);
1486 print
'<tr><td class="tdtop"><input type="radio" name="createmode" value="empty" checked></td>';
1487 print
'<td valign="top" colspan="2">'.$langs->trans(
"CreateEmptyAsk").
'</td></tr>';
1497 print $form->buttonsSaveCancel(
"CreateDraft");
1503 if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
1506 $title = $langs->trans(
'ProductsAndServices');
1509 print
'<div class="div-table-responsive-no-min">';
1510 print
'<table class="noborder centpercent">';
1512 $objectsrc->printOriginLinesList();
1523 $soc->fetch($object->socid);
1525 $head = supplier_proposal_prepare_head($object);
1526 print
dol_get_fiche_head($head,
'comm', $langs->trans(
'CommRequest'), -1,
'supplier_proposal');
1531 if ($action ==
'clone') {
1532 $filter =
'(s.fournisseur:=:1)';
1534 $formquestion = array(
1542 'label' => $langs->trans(
"SelectThirdParty"),
1543 'value' => $form->select_company(
GETPOST(
'socid',
'int'),
'socid', $filter))
1546 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'ToClone'), $langs->trans(
'ConfirmCloneAsk', $object->ref),
'confirm_clone', $formquestion,
'yes', 1);
1547 } elseif ($action ==
'delete') {
1549 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'DeleteAsk'), $langs->trans(
'ConfirmDeleteAsk', $object->ref),
'confirm_delete',
'', 0, 1);
1550 } elseif ($action ==
'reopen') {
1552 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'ReOpen'), $langs->trans(
'ConfirmReOpenAsk', $object->ref),
'confirm_reopen',
'', 0, 1);
1553 } elseif ($action ==
'ask_deleteline') {
1555 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&lineid='.$lineid, $langs->trans(
'DeleteProductLine'), $langs->trans(
'ConfirmDeleteProductLine'),
'confirm_deleteline',
'', 0, 1);
1556 } elseif ($action ==
'validate') {
1561 $ref = substr($object->ref, 1, 4);
1562 if ($ref ==
'PROV') {
1563 $numref = $object->getNextNumRef($soc);
1564 if (empty($numref)) {
1569 $numref = $object->ref;
1572 $text = $langs->trans(
'ConfirmValidateAsk', $numref);
1573 if (isModEnabled(
'notification')) {
1574 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
1575 $notify =
new Notify($db);
1577 $text .= $notify->confirmMessage(
'PROPOSAL_SUPPLIER_VALIDATE', $object->socid, $object);
1581 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'ValidateAsk'), $text,
'confirm_validate',
'', 0, 1);
1586 $parameters = array(
'formConfirm' => $formconfirm,
'lineid' => $lineid);
1587 $reshook = $hookmanager->executeHooks(
'formConfirm', $parameters, $object, $action);
1588 if (empty($reshook)) {
1589 $formconfirm .= $hookmanager->resPrint;
1590 } elseif ($reshook > 0) {
1591 $formconfirm = $hookmanager->resPrint;
1599 $linkback =
'<a href="'.DOL_URL_ROOT.
'/supplier_proposal/list.php?restore_lastsearch_values=1'.(!empty($socid) ?
'&socid='.$socid :
'').
'">'.$langs->trans(
"BackToList").
'</a>';
1602 $morehtmlref =
'<div class="refidno">';
1607 $morehtmlref .= $object->thirdparty->getNomUrl(1,
'supplier');
1609 $morehtmlref .=
' (<a href="'.DOL_URL_ROOT.
'/supplier_proposal/list.php?socid='.$object->thirdparty->id.
'&search_societe='.urlencode($object->thirdparty->name).
'">'.$langs->trans(
"OtherProposals").
'</a>)';
1612 if (isModEnabled(
'project')) {
1613 $langs->load(
"projects");
1614 $morehtmlref .=
'<br>';
1615 if ($usercancreate) {
1616 $morehtmlref .=
img_picto($langs->trans(
"Project"),
'project',
'class="pictofixedwidth"');
1617 if ($action !=
'classify') {
1618 $morehtmlref .=
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=classify&token='.newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetProject')).
'</a> ';
1620 $morehtmlref .= $form->form_project($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->socid, $object->fk_project, ($action ==
'classify' ?
'projectid' :
'none'), 0, 0, 0, 1,
'',
'maxwidth300');
1622 if (!empty($object->fk_project)) {
1624 $proj->fetch($object->fk_project);
1625 $morehtmlref .= $proj->getNomUrl(1);
1627 $morehtmlref .=
'<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).
'</span>';
1632 $morehtmlref .=
'</div>';
1635 dol_banner_tab($object,
'ref', $linkback, 1,
'ref',
'ref', $morehtmlref);
1638 $parameters = array();
1640 $reshook = $hookmanager->executeHooks(
'tabContentViewSupplierProposal', $parameters, $object, $action);
1641 if (empty($reshook)) {
1642 print
'<div class="fichecenter">';
1643 print
'<div class="fichehalfleft">';
1644 print
'<div class="underbanner clearboth"></div>';
1646 print
'<table class="border tableforfield centpercent">';
1650 $filterabsolutediscount =
"fk_invoice_supplier_source IS NULL";
1651 $filtercreditnote =
"fk_invoice_supplier_source IS NOT NULL";
1653 $filterabsolutediscount =
"fk_invoice_supplier_source IS NULL OR (description LIKE '(DEPOSIT)%' AND description NOT LIKE '(EXCESS PAID)%')";
1654 $filtercreditnote =
"fk_invoice_supplier_source IS NOT NULL AND (description NOT LIKE '(DEPOSIT)%' OR description LIKE '(EXCESS PAID)%')";
1657 print
'<tr><td class="titlefield">'.$langs->trans(
'Discounts').
'</td><td>';
1659 $absolute_discount = $soc->getAvailableDiscounts(
'', $filterabsolutediscount, 0, 1);
1660 $absolute_creditnote = $soc->getAvailableDiscounts(
'', $filtercreditnote, 0, 1);
1661 $absolute_discount =
price2num($absolute_discount,
'MT');
1662 $absolute_creditnote =
price2num($absolute_creditnote,
'MT');
1666 $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?id='.$object->id);
1667 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
1672 print
'<tr><td class="titlefield">';
1673 print
'<table class="nobordernopadding" width="100%"><tr><td>';
1674 print $langs->trans(
'PaymentConditionsShort');
1677 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editconditions&token='.newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetConditions'), 1).
'</a></td>';
1679 print
'</tr></table>';
1680 print
'</td><td class="valuefield">';
1681 if ($action ==
'editconditions') {
1682 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->cond_reglement_id,
'cond_reglement_id', 1);
1684 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->cond_reglement_id,
'none', 1);
1690 $langs->load(
'deliveries');
1692 print
'<table class="nobordernopadding" width="100%"><tr><td>';
1693 print $langs->trans(
'DeliveryDate');
1696 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editdate_livraison&token='.newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetDeliveryDate'), 1).
'</a></td>';
1698 print
'</tr></table>';
1699 print
'</td><td class="valuefield">';
1700 if ($action ==
'editdate_livraison') {
1701 print
'<form name="editdate_livraison" action="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'" method="post" class="formconsumeproduce">';
1702 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1703 print
'<input type="hidden" name="action" value="setdate_livraison">';
1704 print
'<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
1705 print $form->selectDate($object->delivery_date,
'liv_',
'',
'',
'',
"editdate_livraison");
1706 print
'<input type="submit" class="button button-edit" value="'.$langs->trans(
'Modify').
'">';
1717 print
'<table class="nobordernopadding" width="100%"><tr><td>';
1718 print $langs->trans(
'PaymentMode');
1721 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editmode&token='.newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetMode'), 1).
'</a></td>';
1723 print
'</tr></table>';
1724 print
'</td><td class="valuefield">';
1725 if ($action ==
'editmode') {
1726 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->mode_reglement_id,
'mode_reglement_id',
'DBIT', 1, 1);
1728 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->mode_reglement_id,
'none');
1733 if (isModEnabled(
"multicurrency")) {
1737 print
'<table class="nobordernopadding" width="100%"><tr><td>';
1738 print $form->editfieldkey(
'Currency',
'multicurrency_code',
'', $object, 0);
1740 if ($action !=
'editmulticurrencycode' && $object->statut == $object::STATUS_VALIDATED) {
1741 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editmulticurrencycode&token='.newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetMultiCurrencyCode'), 1).
'</a></td>';
1743 print
'</tr></table>';
1744 print
'</td><td class="valuefield">';
1745 if ($action ==
'editmulticurrencycode') {
1746 $form->form_multicurrency_code($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_code,
'multicurrency_code');
1748 $form->form_multicurrency_code($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_code,
'none');
1753 if ($object->multicurrency_code != $conf->currency || $object->multicurrency_tx != 1) {
1756 print
'<table class="nobordernopadding" width="100%"><tr><td>';
1757 print $form->editfieldkey(
'CurrencyRate',
'multicurrency_tx',
'', $object, 0);
1759 if ($action !=
'editmulticurrencyrate' && $object->statut == $object::STATUS_VALIDATED && $object->multicurrency_code && $object->multicurrency_code != $conf->currency) {
1760 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editmulticurrencyrate&token='.newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetMultiCurrencyCode'), 1).
'</a></td>';
1762 print
'</tr></table>';
1763 print
'</td><td class="valuefield">';
1764 if ($action ==
'editmulticurrencyrate' || $action ==
'actualizemulticurrencyrate') {
1765 if ($action ==
'actualizemulticurrencyrate') {
1768 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_tx,
'multicurrency_tx', $object->multicurrency_code);
1770 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_tx,
'none', $object->multicurrency_code);
1771 if ($object->statut == $object::STATUS_DRAFT && $object->multicurrency_code && $object->multicurrency_code != $conf->currency) {
1772 print
'<div class="inline-block"> ';
1773 print
'<a href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=actualizemulticurrencyrate">'.$langs->trans(
"ActualizeCurrency").
'</a>';
1794 if (
getDolGlobalString(
'BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL') && isModEnabled(
"banque")) {
1797 print
'<table width="100%" class="nobordernopadding"><tr><td>';
1798 print $langs->trans(
'BankAccount');
1800 if ($action !=
'editbankaccount' && $usercancreate) {
1801 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editbankaccount&token='.newToken().
'&id='.$object->id.
'">'.
img_edit($langs->trans(
'SetBankAccount'), 1).
'</a></td>';
1803 print
'</tr></table>';
1804 print
'</td><td class="valuefield">';
1805 if ($action ==
'editbankaccount') {
1806 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->fk_account,
'fk_account', 1);
1808 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->fk_account,
'none');
1815 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
1820 print
'<div class="fichehalfright">';
1821 print
'<div class="underbanner clearboth"></div>';
1823 print
'<table class="border tableforfield centpercent">';
1827 print
'<td class="titlefieldmiddle">' . $langs->trans(
'AmountHT') .
'</td>';
1828 print
'<td class="nowrap amountcard right">' .
price($object->total_ht,
'', $langs, 0, -1, -1, $conf->currency) .
'</td>';
1829 if (isModEnabled(
"multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
1831 print
'<td class="nowrap amountcard right">' .
price($object->multicurrency_total_ht,
'', $langs, 0, -1, -1, $object->multicurrency_code) .
'</td>';
1837 print
'<td class="titlefieldmiddle">' . $langs->trans(
'AmountVAT') .
'</td>';
1838 print
'<td class="nowrap amountcard right">' .
price($object->total_tva,
'', $langs, 0, -1, -1, $conf->currency) .
'</td>';
1839 if (isModEnabled(
"multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
1841 print
'<td class="nowrap amountcard right">' .
price($object->multicurrency_total_tva,
'', $langs, 0, -1, -1, $object->multicurrency_code) .
'</td>';
1846 if ($mysoc->localtax1_assuj ==
"1" || $object->total_localtax1 != 0) {
1848 print
'<td class="titlefieldmiddle">' . $langs->transcountry(
"AmountLT1", $mysoc->country_code) .
'</td>';
1849 print
'<td class="nowrap amountcard right">' .
price($object->total_localtax1,
'', $langs, 0, -1, -1, $conf->currency) .
'</td>';
1850 if (isModEnabled(
"multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
1851 print
'<td class="nowrap amountcard right">' .
price($object->total_localtax1,
'', $langs, 0, -1, -1, $object->multicurrency_code) .
'</td>';
1855 if ($mysoc->localtax2_assuj ==
"1" || $object->total_localtax2 != 0) {
1857 print
'<td>' . $langs->transcountry(
"AmountLT2", $mysoc->country_code) .
'</td>';
1858 print
'<td class="nowrap amountcard right">' .
price($object->total_localtax2,
'', $langs, 0, -1, -1, $conf->currency) .
'</td>';
1859 if (isModEnabled(
"multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
1860 print
'<td class="nowrap amountcard right">' .
price($object->total_localtax2,
'', $langs, 0, -1, -1, $object->multicurrency_code) .
'</td>';
1868 print
'<td>' . $langs->trans(
'AmountTTC') .
'</td>';
1869 print
'<td class="nowrap amountcard right">' .
price($object->total_ttc,
'', $langs, 0, -1, -1, $conf->currency) .
'</td>';
1870 if (isModEnabled(
"multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
1872 print
'<td class="nowrap amountcard right">' .
price($object->multicurrency_total_ttc,
'', $langs, 0, -1, -1, $object->multicurrency_code) .
'</td>';
1886 print
'<div class="clearboth"></div><br>';
1889 $blocname =
'contacts';
1890 $title = $langs->trans(
'ContactsAddresses');
1891 include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
1895 $blocname =
'notes';
1896 $title = $langs->trans(
'Notes');
1897 include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
1905 $result = $object->getLinesArray();
1907 print
' <form name="addproduct" id="addproduct" action="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.(($action !=
'editline') ?
'#add' :
'').
'" method="POST">
1908 <input type="hidden" name="token" value="' . newToken().
'">
1909 <input type="hidden" name="action" value="' . (($action !=
'editline') ?
'addline' :
'updateline').
'">
1910 <input type="hidden" name="mode" value="">
1911 <input type="hidden" name="id" value="' . $object->id.
'">
1912 <input type="hidden" name="backtopage" value="'.$backtopage.
'">
1916 include DOL_DOCUMENT_ROOT.
'/core/tpl/ajaxrow.tpl.php';
1919 print
'<div class="div-table-responsive-no-min">';
1920 print
'<table id="tablelines" class="noborder noshadow" width="100%">';
1923 global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax;
1926 $inputalsopricewithtax = 1;
1927 $senderissupplier = 2;
1929 $senderissupplier = 1;
1932 if (!empty($object->lines)) {
1933 $object->printObjectLines($action, $soc, $mysoc, $lineid, $dateSelector);
1938 if ($action !=
'editline') {
1941 $parameters = array();
1942 $reshook = $hookmanager->executeHooks(
'formAddObjectLine', $parameters, $object, $action);
1946 if (empty($reshook)) {
1947 $object->formAddObjectLine($dateSelector, $soc, $mysoc);
1959 if ($action ==
'statut') {
1961 $form_close =
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'" method="POST" id="formacceptrefuse" class="formconsumeproduce paddingbottom paddingleft paddingright">';
1962 $form_close .=
'<input type="hidden" name="token" value="'.newToken().
'">';
1963 $form_close .=
'<input type="hidden" name="action" value="setstatut">';
1966 $form_close .=
'<p class="notice">'.$langs->trans(
'SupplierProposalRefFournNotice').
'</p>';
1968 $form_close .=
'<table class="border centpercent marginleftonly marginrightonly">';
1969 $form_close .=
'<tr><td>'.$langs->trans(
"CloseAs").
'</td><td class="left">';
1970 $form_close .=
'<select id="statut" name="statut" class="flat">';
1971 $form_close .=
'<option value="0"> </option>';
1972 $form_close .=
'<option value="2">'.$langs->trans(
'SupplierProposalStatusSigned').
'</option>';
1973 $form_close .=
'<option value="3">'.$langs->trans(
'SupplierProposalStatusNotSigned').
'</option>';
1974 $form_close .=
'</select>';
1975 $form_close .=
'</td></tr>';
1976 $form_close .=
'<tr><td class="left">'.$langs->trans(
'Note').
'</td><td class="left"><textarea cols="70" rows="'.ROWS_3.
'" wrap="soft" name="note">';
1977 $form_close .= $object->note_private;
1978 $form_close .=
'</textarea></td></tr>';
1979 $form_close .=
'</table>';
1980 $form_close .= $form->buttonsSaveCancel();
1981 $form_close .=
'<a id="acceptedrefused"> </a>';
1982 $form_close .=
'</form>';
1990 if ($action !=
'presend') {
1991 print
'<div class="tabsAction">';
1993 $parameters = array();
1994 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
1996 if (empty($reshook)) {
1997 if ($action !=
'statut' && $action !=
'editline') {
2000 if (count($object->lines) > 0) {
2001 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=validate">'.$langs->trans(
'Validate').
'</a></div>';
2008 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=modif&token='.newToken().
'">'.$langs->trans(
'Modify').
'</a></div>';
2013 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=reopen&token='.newToken().(!
getDolGlobalString(
'MAIN_JUMP_TAG') ?
'' :
'#reopen').
'"';
2014 print
'>'.$langs->trans(
'ReOpen').
'</a></div>';
2018 if (empty($user->socid)) {
2021 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=presend&token='.newToken().
'&mode=init#formmailbeforetitle">'.$langs->trans(
'SendMail').
'</a></div>';
2023 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#">'.$langs->trans(
'SendMail').
'</a></div>';
2030 if ($usercancreateorder) {
2031 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/fourn/commande/card.php?action=create&origin='.$object->element.
'&originid='.$object->id.
'&socid='.$object->socid.
'&token='.newToken().
'">'.$langs->trans(
"AddSupplierOrderShort").
'</a></div>';
2037 print
'<div class="inline-block divButAction"><a class="butAction reposition" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&token='.newToken().
'&action=statut'.(!
getDolGlobalString(
'MAIN_JUMP_TAG') ?
'' :
'#acceptedrefused').
'"';
2038 print
'>'.$langs->trans(
'SetAcceptedRefused').
'</a></div>';
2043 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&token='.newToken().
'&action=close'.(!
getDolGlobalString(
'MAIN_JUMP_TAG') ?
'' :
'#close').
'"';
2044 print
'>'.$langs->trans(
'Close').
'</a></div>';
2048 if ($usercancreate) {
2049 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'&socid='.$object->socid.
'&action=clone&object='.$object->element.
'&token='.newToken().
'">'.$langs->trans(
"ToClone").
'</a></div>';
2053 print
dolGetButtonAction($langs->trans(
"Delete"),
'',
'delete', $_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=delete&token='.newToken(),
'delete', (($object->statut ==
SupplierProposal::STATUS_DRAFT && $usercancreate) || $usercandelete));
2060 if ($action !=
'presend') {
2061 print
'<div class="fichecenter"><div class="fichehalfleft">';
2068 $urlsource = $_SERVER[
"PHP_SELF"].
"?id=".$object->id;
2069 $genallowed = $usercanread;
2070 $delallowed = $usercancreate;
2072 print $formfile->showdocuments(
'supplier_proposal', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0,
'', 0,
'', $soc->default_lang);
2076 $linktoelem = $form->showLinkToObjectBlock($object,
null, array(
'supplier_proposal'));
2077 $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
2080 print
'</div><div class="fichehalfright">';
2083 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formactions.class.php';
2085 $somethingshown =
$formactions->showactions($object,
'supplier_proposal', $socid, 1);
2087 print
'</div></div>';
2091 if (
GETPOST(
'modelselected')) {
2092 $action =
'presend';
2096 $modelmail =
'supplier_proposal_send';
2097 $defaulttopic =
'SendAskRef';
2098 $diroutput = $conf->supplier_proposal->dir_output;
2099 $autocopy =
'MAIN_MAIL_AUTOCOPY_SUPPLIER_PROPOSAL_TO';
2100 $trackid =
'spro'.$object->id;
2102 include DOL_DOCUMENT_ROOT.
'/core/tpl/card_presend.tpl.php';
if(preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) if(preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) if($action=='set') elseif( $action=='specimen') elseif($action=='setmodel') elseif( $action=='del') elseif($action=='setdoc') $formactions
View.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static getIdAndTxFromCode($dbs, $code, $date_document='')
Get id and rate of currency from code.
Class to manage notifications.
Class to manage predefined suppliers products.
Class to manage products or services.
Class to manage projects.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage price ask supplier.
const STATUS_NOTSIGNED
Not signed quote, canceled.
const STATUS_DRAFT
Draft status.
const STATUS_VALIDATED
Validated status.
const STATUS_SIGNED
Signed quote.
const STATUS_CLOSE
Billed or closed/processed quote.
Class to manage translations.
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_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
Show tab footer of a card.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed informations (by default a local PHP server timestamp) Re...
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_get_fiche_end($notab=0)
Return tab footer of a card.
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.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
if(!function_exists( 'dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
dol_clone($object, $native=0)
Create a clone of instance of object (new instance with same value for each properties) With native =...
dolGetButtonAction($label, $text='', $actionType='default', $url='', $id='', $userRight=1, $params=array())
Function dolGetButtonAction.
dol_htmlcleanlastbr($stringtodecode)
This function remove all ending and br at end.
get_default_npr(Societe $thirdparty_seller, Societe $thirdparty_buyer, $idprod=0, $idprodfournprice=0)
Function that returns whether VAT must be recoverable collected VAT (e.g.: VAT NPR in France)
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...
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
get_localtax($vatrate, $local, $thirdparty_buyer="", $thirdparty_seller="", $vatnpr=0)
Return localtax rate for a particular vat, when selling a product with vat $vatrate,...
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
img_edit($titlealt='default', $float=0, $other='')
Show logo editer/modifier fiche.
get_default_tva(Societe $thirdparty_seller, Societe $thirdparty_buyer, $idprod=0, $idprodfournprice=0)
Function that return vat rate of a product line (according to seller, buyer and product vat rate) VAT...
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
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.