37 require
'../main.inc.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
39 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
40 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmargin.class.php';
41 require_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
42 require_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
43 require_once DOL_DOCUMENT_ROOT.
'/core/modules/supplier_proposal/modules_supplier_proposal.php';
44 require_once DOL_DOCUMENT_ROOT.
'/core/lib/supplier_proposal.lib.php';
45 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
46 require_once DOL_DOCUMENT_ROOT.
'/core/class/extrafields.class.php';
47 if (!empty($conf->project->enabled)) {
48 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
49 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
53 $langs->loadLangs(array(
'companies',
'supplier_proposal',
'compta',
'bills',
'propal',
'orders',
'products',
'deliveries',
'sendings'));
54 if (!empty($conf->margin->enabled)) {
55 $langs->load(
'margins');
62 $socid =
GETPOST(
'socid',
'int');
63 $action =
GETPOST(
'action',
'aZ09');
65 $origin =
GETPOST(
'origin',
'alpha');
66 $originid =
GETPOST(
'originid',
'int');
67 $confirm =
GETPOST(
'confirm',
'alpha');
68 $projectid =
GETPOST(
'projectid',
'int');
69 $lineid =
GETPOST(
'lineid',
'int');
70 $contactid =
GETPOST(
'contactid',
'int');
71 $rank = (
GETPOST(
'rank',
'int') > 0) ?
GETPOST(
'rank',
'int') : -1;
74 $hidedetails = (
GETPOST(
'hidedetails',
'int') ?
GETPOST(
'hidedetails',
'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0));
75 $hidedesc = (
GETPOST(
'hidedesc',
'int') ?
GETPOST(
'hidedesc',
'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0));
76 $hideref = (
GETPOST(
'hideref',
'int') ?
GETPOST(
'hideref',
'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
82 if (!empty($user->socid)) {
83 $socid = $user->socid;
88 $hookmanager->initHooks(array(
'supplier_proposalcard',
'globalcard'));
94 $extrafields->fetch_name_optionals_label($object->table_element);
97 if ($id > 0 || !empty($ref)) {
98 $ret = $object->fetch($id, $ref);
100 $ret = $object->fetch_thirdparty();
108 $usercanread = $user->rights->supplier_proposal->lire;
109 $usercancreate = $user->rights->supplier_proposal->creer;
110 $usercandelete = $user->rights->supplier_proposal->supprimer;
113 $usercanvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($usercancreate)) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->supplier_proposal->validate_advance)));
114 $usercansend = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->supplier_proposal->send_advance);
117 $usercanclose = $user->rights->supplier_proposal->cloturer;
118 $usercancreateorder = ($user->rights->fournisseur->commande->creer || $user->rights->supplier_order->creer);
121 $permissionnote = $usercancreate;
122 $permissiondellink = $usercancreate;
123 $permissiontoedit = $usercancreate;
124 $permissiontoadd = $usercancreate;
132 $reshook = $hookmanager->executeHooks(
'doActions',
$parameters, $object, $action);
137 if (empty($reshook)) {
138 $backurlforlist = DOL_URL_ROOT.
'/supplier_proposal/list.php';
140 if (empty($backtopage) || ($cancel && empty($id))) {
141 if (empty($backtopage) || ($cancel && strpos($backtopage,
'__ID__'))) {
142 if (empty($id) && (($action !=
'add' && $action !=
'create') || $cancel)) {
143 $backtopage = $backurlforlist;
145 $backtopage = DOL_URL_ROOT.
'/supplier_proposal/card.php?id='.((!empty($id) && $id > 0) ? $id :
'__ID__');
151 if (!empty($backtopageforcancel)) {
152 header(
"Location: ".$backtopageforcancel);
154 } elseif (!empty($backtopage)) {
155 header(
"Location: ".$backtopage);
161 include DOL_DOCUMENT_ROOT.
'/core/actions_setnotes.inc.php';
163 include DOL_DOCUMENT_ROOT.
'/core/actions_dellink.inc.php';
165 include DOL_DOCUMENT_ROOT.
'/core/actions_lineupdown.inc.php';
168 if ($action ==
'confirm_clone' && $confirm ==
'yes') {
169 if (1 == 0 && !
GETPOST(
'clone_content') && !
GETPOST(
'clone_receivers')) {
172 if ($object->id > 0) {
173 $result = $object->createFromClone($user, $socid);
175 header(
"Location: ".$_SERVER[
'PHP_SELF'].
'?id='.$result);
183 } elseif ($action ==
'confirm_delete' && $confirm ==
'yes' && $usercandelete) {
185 $result = $object->delete($user);
187 header(
'Location: '.DOL_URL_ROOT.
'/supplier_proposal/list.php');
190 $langs->load(
"errors");
193 } elseif ($action ==
'confirm_deleteline' && $confirm ==
'yes' && $usercancreate) {
195 $result = $object->deleteline($lineid);
198 $object->line_order(
true);
201 if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
203 $outputlangs = $langs;
204 if (!empty($conf->global->MAIN_MULTILANGS)) {
206 $newlang = (
GETPOST(
'lang_id',
'aZ09') ?
GETPOST(
'lang_id',
'aZ09') : $object->thirdparty->default_lang);
207 $outputlangs->setDefaultLang($newlang);
209 $ret = $object->fetch($id);
210 $object->generateDocument($object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
213 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.$object->id);
215 } elseif ($action ==
'confirm_validate' && $confirm ==
'yes' && $usercanvalidate) {
217 $result = $object->valid($user);
219 if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
221 if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
222 $outputlangs = $langs;
224 if ($conf->global->MAIN_MULTILANGS && empty($newlang) &&
GETPOST(
'lang_id',
'aZ09')) {
225 $newlang =
GETPOST(
'lang_id',
'aZ09');
227 if ($conf->global->MAIN_MULTILANGS && empty($newlang)) {
228 $newlang = $object->thirdparty->default_lang;
230 if (!empty($newlang)) {
232 $outputlangs->setDefaultLang($newlang);
234 $model = $object->model_pdf;
235 $ret = $object->fetch($id);
237 $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
241 $langs->load(
"errors");
242 if (count($object->errors) > 0) {
248 } elseif ($action ==
'setdate_livraison' && $usercancreate) {
253 } elseif ($action ==
'add' && $usercancreate) {
255 $object->socid = $socid;
256 $object->fetch_thirdparty();
261 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Supplier")),
null,
'errors');
270 if (
GETPOST(
'createmode') ==
'copy' &&
GETPOST(
'copie_supplier_proposal')) {
271 if ($object->fetch(
GETPOST(
'copie_supplier_proposal')) > 0) {
273 $object->date_livraison = $date_delivery;
274 $object->delivery_date = $date_delivery;
275 $object->shipping_method_id =
GETPOST(
'shipping_method_id',
'int');
276 $object->cond_reglement_id =
GETPOST(
'cond_reglement_id');
277 $object->mode_reglement_id =
GETPOST(
'mode_reglement_id');
278 $object->fk_account =
GETPOST(
'fk_account',
'int');
281 $object->socid =
GETPOST(
'socid');
282 $object->fk_project =
GETPOST(
'projectid',
'int');
283 $object->model_pdf =
GETPOST(
'model');
284 $object->author = $user->id;
285 $object->note =
GETPOST(
'note',
'restricthtml');
286 $object->note_private =
GETPOST(
'note',
'restricthtml');
289 setEventMessages($langs->trans(
"ErrorFailedToCopyProposal",
GETPOST(
'copie_supplier_proposal')),
null,
'errors');
293 $object->date_livraison = $date_delivery;
294 $object->delivery_date = $date_delivery;
295 $object->demand_reason_id =
GETPOST(
'demand_reason_id');
296 $object->shipping_method_id =
GETPOST(
'shipping_method_id',
'int');
297 $object->cond_reglement_id =
GETPOST(
'cond_reglement_id');
298 $object->mode_reglement_id =
GETPOST(
'mode_reglement_id');
299 $object->fk_account =
GETPOST(
'fk_account',
'int');
300 $object->fk_project =
GETPOST(
'projectid',
'int');
301 $object->model_pdf =
GETPOST(
'model');
302 $object->author = $user->id;
303 $object->note =
GETPOST(
'note',
'restricthtml');
304 $object->note_private =
GETPOST(
'note',
'restricthtml');
306 $object->origin =
GETPOST(
'origin');
307 $object->origin_id =
GETPOST(
'originid');
310 if (!empty($conf->multicurrency->enabled)) {
311 $object->multicurrency_code =
GETPOST(
'multicurrency_code',
'alpha');
315 $ret = $extrafields->setOptionalsFromPost(
null, $object);
323 if ($origin && $originid) {
324 $element = $subelement = $origin;
325 if (preg_match(
'/^([^_]+)_([^_]+)/i', $origin, $regs)) {
327 $subelement = $regs[2];
331 if ($element ==
'order') {
332 $element = $subelement =
'commande';
334 if ($element ==
'propal') {
335 $element =
'comm/propal';
336 $subelement =
'propal';
339 $object->origin = $origin;
340 $object->origin_id = $originid;
343 $object->linked_objects [$object->origin] = $object->origin_id;
344 if (is_array($_POST[
'other_linked_objects']) && !empty($_POST[
'other_linked_objects'])) {
345 $object->linked_objects = array_merge($object->linked_objects, $_POST[
'other_linked_objects']);
348 $id = $object->create($user);
352 $classname = ucfirst($subelement);
353 $srcobject =
new $classname($db);
355 dol_syslog(
"Try to find source object origin=".$object->origin.
" originid=".$object->origin_id.
" to add lines");
356 $result = $srcobject->fetch($object->origin_id);
359 $lines = $srcobject->lines;
360 if (empty($lines) && method_exists($srcobject,
'fetch_lines')) {
361 $srcobject->fetch_lines();
362 $lines = $srcobject->lines;
366 $num = count($lines);
367 for ($i = 0; $i < $num; $i++) {
368 $label = (!empty($lines[$i]->label) ? $lines[$i]->label :
'');
369 $desc = (!empty($lines[$i]->desc) ? $lines[$i]->desc : $lines[$i]->libelle);
372 $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0);
375 if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
380 if (method_exists($lines[$i],
'fetch_optionals')) {
381 $lines[$i]->fetch_optionals();
382 $array_options = $lines[$i]->array_options;
385 $result = $object->addline(
387 $lines[$i]->subprice,
390 $lines[$i]->localtax1_tx,
391 $lines[$i]->localtax2_tx,
392 $lines[$i]->fk_product,
393 $lines[$i]->remise_percent,
396 $lines[$i]->info_bits,
399 $lines[$i]->special_code,
401 $lines[$i]->fk_fournprice,
405 $lines[$i]->ref_supplier,
418 if ($result > 0 && $lines[$i]->product_type == 9) {
419 $fk_parent_line = $result;
425 $reshook = $hookmanager->executeHooks(
'createFrom',
$parameters, $object, $action);
441 $id = $object->create($user);
449 if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
450 $outputlangs = $langs;
452 if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) &&
GETPOST(
'lang_id',
'aZ09')) {
453 $newlang =
GETPOST(
'lang_id',
'aZ09');
455 if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) {
456 $newlang = $object->thirdparty->default_lang;
458 if (!empty($newlang)) {
460 $outputlangs->setDefaultLang($newlang);
462 $model = $object->model_pdf;
464 $ret = $object->fetch($id);
465 $result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
471 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.$id);
484 } elseif ($action ==
'confirm_reopen' && $usercanclose && !
GETPOST(
'cancel',
'alpha')) {
490 } elseif ($action ==
'close' && $usercanclose && !
GETPOST(
'cancel',
'alpha')) {
496 } elseif ($action ==
'setstatut' && $usercanclose && !
GETPOST(
'cancel',
'alpha')) {
499 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"CloseAs")),
null,
'errors');
504 $object->cloture($user,
GETPOST(
'statut'),
GETPOST(
'note',
'restricthtml'));
510 include DOL_DOCUMENT_ROOT.
'/core/actions_printing.inc.php';
513 $triggersendname =
'PROPOSAL_SUPPLIER_SENTBYMAIL';
514 $autocopy =
'MAIN_MAIL_AUTOCOPY_SUPPLIER_PROPOSAL_TO';
515 $trackid =
'spro'.$object->id;
516 include DOL_DOCUMENT_ROOT.
'/core/actions_sendmails.inc.php';
519 $upload_dir = $conf->supplier_proposal->dir_output;
520 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
524 if ($action ==
'modif' && $usercancreate) {
525 $object->setDraft($user);
527 if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
529 $outputlangs = $langs;
530 if (!empty($conf->global->MAIN_MULTILANGS)) {
532 $newlang = (
GETPOST(
'lang_id',
'aZ09') ?
GETPOST(
'lang_id',
'aZ09') : $object->thirdparty->default_lang);
533 $outputlangs->setDefaultLang($newlang);
535 $ret = $object->fetch($id);
536 $object->generateDocument($object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
538 } elseif ($action ==
"setabsolutediscount" && $usercancreate) {
539 if (
GETPOST(
"remise_id",
'int')) {
540 if ($object->id > 0) {
541 $result = $object->insert_discount(
GETPOST(
"remise_id",
'int'));
550 if ($action ==
'addline' && $usercancreate) {
551 $langs->load(
'errors');
560 $ref_supplier =
GETPOST(
'fourn_ref',
'alpha');
562 $prod_entry_mode =
GETPOST(
'prod_entry_mode');
563 if ($prod_entry_mode ==
'free') {
566 $idprod =
GETPOST(
'idprod',
'int');
578 if (empty($remise_percent)) {
583 $extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
584 $array_options = $extrafields->getOptionalsFromPost($object->table_element_line, $predef);
586 if (is_array($extralabelsline)) {
588 foreach ($extralabelsline as $key => $value) {
589 unset($_POST[
"options_".$key]);
593 if ($prod_entry_mode ==
'free' &&
GETPOST(
'price_ht') < 0 && $qty < 0) {
594 setEventMessages($langs->trans(
'ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv(
'UnitPrice'), $langs->transnoentitiesnoconv(
'Qty')),
null,
'errors');
597 if ($prod_entry_mode ==
'free' && (empty($idprod) || $idprod < 0) &&
GETPOST(
'type') < 0) {
598 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Type")),
null,
'errors');
602 if ($prod_entry_mode ==
'free' && (empty($idprod) || $idprod < 0) &&
GETPOST(
'price_ht') ===
'' &&
GETPOST(
'price_ttc') ===
'' &&
GETPOST(
'multicurrency_price_ht') ===
'') {
603 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"UnitPrice")),
null,
'errors');
606 if ($prod_entry_mode ==
'free' && (empty($idprod) || $idprod < 0) && empty($product_desc)) {
607 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Description")),
null,
'errors');
610 if (!$error && ($qty >= 0)) {
614 $price_base_type = (
GETPOST(
'price_base_type',
'alpha') ?
GETPOST(
'price_base_type',
'alpha') :
'HT');
618 if ($prod_entry_mode !=
'free' && empty($error)) {
622 if (
GETPOST(
'idprodfournprice',
'alpha') == -1 ||
GETPOST(
'idprodfournprice',
'alpha') ==
'') {
627 if (preg_match(
'/^idprod_([0-9]+)$/',
GETPOST(
'idprodfournprice',
'alpha'), $reg)) {
629 $res = $productsupplier->fetch($idprod);
632 if (!empty($conf->global->SUPPLIER_TAKE_FIRST_PRICE_IF_NO_PRICE_FOR_CURRENT_SUPPLIER)) {
634 $productsupplier->get_buyprice(0, -1, $idprod,
'none', $fksoctosearch);
635 if ($productsupplier->fourn_socid != $socid) {
636 $productsupplier->ref_supplier =
'';
639 $fksoctosearch = $object->thirdparty->id;
640 $productsupplier->get_buyprice(0, -1, $idprod,
'none', $fksoctosearch);
642 } elseif (
GETPOST(
'idprodfournprice',
'alpha') > 0) {
645 $idprod = $productsupplier->get_buyprice(
GETPOST(
'idprodfournprice',
'alpha'), $qtytosearch);
646 $res = $productsupplier->fetch($idprod);
650 $label = $productsupplier->label;
653 if (!empty($conf->global->MAIN_MULTILANGS) && !empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
654 $outputlangs = $langs;
656 if (empty($newlang) &&
GETPOST(
'lang_id',
'aZ09')) {
657 $newlang =
GETPOST(
'lang_id',
'aZ09');
659 if (empty($newlang)) {
660 $newlang = $object->thirdparty->default_lang;
662 if (!empty($newlang)) {
664 $outputlangs->setDefaultLang($newlang);
666 $desc = (!empty($productsupplier->multilangs[$outputlangs->defaultlang][
"description"])) ? $productsupplier->multilangs[$outputlangs->defaultlang][
"description"] : $productsupplier->description;
668 $desc = $productsupplier->description;
671 if (!empty($productsupplier->desc_supplier) && !empty($conf->global->PRODUIT_FOURN_TEXTS)) {
672 $desc = $productsupplier->desc_supplier;
676 if (trim($product_desc) == trim($desc) && !empty($conf->global->PRODUIT_AUTOFILL_DESC)) {
680 if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) {
681 $desc = $product_desc;
683 if (!empty($product_desc) && trim($product_desc) != trim($desc)) {
684 $desc =
dol_concatdesc($desc, $product_desc,
'', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
687 $ref_supplier = $productsupplier->ref_supplier;
692 $tva_tx =
get_default_tva($object->thirdparty, $mysoc, $productsupplier->id,
GETPOST(
'idprodfournprice',
'alpha'));
693 $tva_npr =
get_default_npr($object->thirdparty, $mysoc, $productsupplier->id,
GETPOST(
'idprodfournprice',
'alpha'));
695 if (empty($tva_tx)) {
698 $localtax1_tx =
get_localtax($tva_tx, 1, $mysoc, $object->thirdparty, $tva_npr);
699 $localtax2_tx =
get_localtax($tva_tx, 2, $mysoc, $object->thirdparty, $tva_npr);
701 $type = $productsupplier->type;
702 if (
GETPOST(
'price_ht') !=
'' ||
GETPOST(
'price_ht_devise') !=
'') {
703 $price_base_type =
'HT';
705 $pu_devise =
price2num($price_ht_devise,
'CU');
706 } elseif (
GETPOST(
'price_ttc') !=
'' ||
GETPOST(
'price_ttc_devise') !=
'') {
707 $price_base_type =
'TTC';
709 $pu_devise =
price2num($price_ttc_devise,
'CU');
711 $price_base_type = ($productsupplier->fourn_price_base_type ? $productsupplier->fourn_price_base_type :
'HT');
712 if (empty($object->multicurrency_code) || ($productsupplier->fourn_multicurrency_code != $object->multicurrency_code)) {
713 $pu = $productsupplier->fourn_pu;
716 $pu = $productsupplier->fourn_pu;
717 $pu_devise = $productsupplier->fourn_multicurrency_unitprice;
726 $fournprice = (is_numeric(
GETPOST(
'idprodfournprice',
'alpha')) ?
GETPOST(
'idprodfournprice',
'alpha') : -1);
729 $result = $object->addline(
731 ($price_base_type ==
'HT' ? $pu : 0),
736 $productsupplier->id,
739 ($price_base_type ==
'TTC' ? $pu : 0),
742 min($rank, count($object->lines) + 1),
750 $productsupplier->fk_unit,
766 if ($idprod == -99 || $idprod == 0) {
769 $langs->load(
"errors");
770 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ProductOrService")).
' '.$langs->trans(
"or").
' '.$langs->trans(
"NoPriceDefinedForThisSupplier"),
null,
'errors');
775 $langs->load(
"errors");
776 setEventMessages($langs->trans(
"ErrorQtyTooLowForThisSupplier"),
null,
'errors');
778 } elseif ((
GETPOST(
'price_ht') !==
'' ||
GETPOST(
'price_ttc') !==
'' ||
GETPOST(
'multicurrency_price_ht') !=
'') && empty($error)) {
782 $tva_npr = (preg_match(
'/\*/', $tva_tx) ? 1 : 0);
783 $tva_tx = str_replace(
'*',
'', $tva_tx);
784 $label = (
GETPOST(
'product_label') ?
GETPOST(
'product_label') :
'');
785 $desc = $product_desc;
788 $fk_unit =
GETPOST(
'units',
'alpha');
790 if (!preg_match(
'/\((.*)\)/', $tva_tx)) {
795 $localtax1_tx =
get_localtax($tva_tx, 1, $mysoc, $object->thirdparty);
796 $localtax2_tx =
get_localtax($tva_tx, 2, $mysoc, $object->thirdparty);
798 if (
GETPOST(
'price_ht') !=
'' ||
GETPOST(
'price_ht_devise') !=
'') {
802 $pu_ht =
price2num($pu_ttc / (1 + ($tva_tx / 100)),
'MU');
804 $price_base_type =
'HT';
805 $pu_ht_devise =
price2num($price_ht_devise,
'CU');
808 $result = $object->addline(
837 if (!$error && $result > 0) {
840 $ret = $object->fetch($object->id);
843 if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
844 $outputlangs = $langs;
846 if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) &&
GETPOST(
'lang_id',
'aZ09')) {
847 $newlang =
GETPOST(
'lang_id',
'aZ09');
849 if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) {
850 $newlang = $object->thirdparty->default_lang;
852 if (!empty($newlang)) {
854 $outputlangs->setDefaultLang($newlang);
856 $model = $object->model_pdf;
857 $ret = $object->fetch($id);
859 $result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
865 unset($_POST[
'prod_entry_mode']);
867 unset($_POST[
'qty']);
868 unset($_POST[
'type']);
869 unset($_POST[
'remise_percent']);
871 unset($_POST[
'price_ht']);
872 unset($_POST[
'multicurrency_price_ht']);
873 unset($_POST[
'price_ttc']);
874 unset($_POST[
'fourn_ref']);
875 unset($_POST[
'tva_tx']);
876 unset($_POST[
'label']);
877 unset($_POST[
'product_ref']);
878 unset($_POST[
'product_label']);
879 unset($_POST[
'product_desc']);
880 unset($_POST[
'fournprice']);
881 unset($_POST[
'buying_price']);
882 unset($localtax1_tx);
883 unset($localtax2_tx);
884 unset($_POST[
'np_marginRate']);
885 unset($_POST[
'np_markRate']);
886 unset($_POST[
'dp_desc']);
887 unset($_POST[
'idprodfournprice']);
888 unset($_POST[
'units']);
890 unset($_POST[
'idprod']);
892 unset($_POST[
'date_starthour']);
893 unset($_POST[
'date_startmin']);
894 unset($_POST[
'date_startsec']);
895 unset($_POST[
'date_startday']);
896 unset($_POST[
'date_startmonth']);
897 unset($_POST[
'date_startyear']);
898 unset($_POST[
'date_endhour']);
899 unset($_POST[
'date_endmin']);
900 unset($_POST[
'date_endsec']);
901 unset($_POST[
'date_endday']);
902 unset($_POST[
'date_endmonth']);
903 unset($_POST[
'date_endyear']);
910 } elseif ($action ==
'updateline' && $usercancreate &&
GETPOST(
'save') == $langs->trans(
"Save")) {
916 if (preg_match(
'/\*/', $vat_rate)) {
924 $vat_rate = str_replace(
'*',
'', $vat_rate);
925 $localtax1_rate =
get_localtax($vat_rate, 1, $mysoc, $object->thirdparty);
926 $localtax2_rate =
get_localtax($vat_rate, 2, $mysoc, $object->thirdparty);
928 if (
GETPOST(
'price_ht') !=
'') {
929 $price_base_type =
'HT';
933 $vatratecleaned = $vat_rate;
934 if (preg_match(
'/^(.*)\s*\((.*)\)$/', $vat_rate, $reg)) {
935 $vatratecleaned = trim($reg[1]);
936 $vatratecode = $reg[2];
940 $ht = $ttc / (1 + ($vatratecleaned / 100));
941 $price_base_type =
'HT';
947 $fournprice = (
GETPOST(
'fournprice') ?
GETPOST(
'fournprice') :
'');
948 $buyingprice = (
GETPOST(
'buying_price') !=
'' ?
GETPOST(
'buying_price') :
'');
951 $extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
952 $array_options = $extrafields->getOptionalsFromPost($object->table_element_line);
954 if (is_array($extralabelsline)) {
955 foreach ($extralabelsline as $key => $value) {
956 unset($_POST[
"options_".$key]);
961 $special_code =
GETPOST(
'special_code');
967 $productid =
GETPOST(
'productid',
'int');
968 if (!empty($productid)) {
970 if (!empty($conf->global->SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY)) {
971 if ($productid > 0 && $productsupplier->get_buyprice(0,
price2num(
GETPOST(
'qty')), $productid,
'none',
GETPOST(
'socid',
'int')) < 0) {
972 setEventMessages($langs->trans(
"ErrorQtyTooLowForThisSupplier"),
null,
'warnings');
977 $res = $product->fetch($productid);
979 $type = $product->type;
981 $price_min = $product->price_min;
982 if (!empty($conf->global->PRODUIT_MULTIPRICES) && !empty($object->thirdparty->price_level)) {
983 $price_min = $product->multiprices_min [$object->thirdparty->price_level];
989 $label = (
GETPOST(
'product_label') ?
GETPOST(
'product_label') :
'');
993 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Type")),
null,
'errors');
1001 $ref_supplier =
GETPOST(
'fourn_ref',
'alpha');
1004 $result = $object->updateline(
1016 GETPOST(
'fk_parent_line',
'int'),
1031 if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
1033 $outputlangs = $langs;
1034 if (!empty($conf->global->MAIN_MULTILANGS)) {
1035 $outputlangs =
new Translate(
"", $conf);
1036 $newlang = (
GETPOST(
'lang_id',
'aZ09') ?
GETPOST(
'lang_id',
'aZ09') : $object->thirdparty->default_lang);
1037 $outputlangs->setDefaultLang($newlang);
1039 $ret = $object->fetch($id);
1040 $object->generateDocument($object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
1043 unset($_POST[
'qty']);
1044 unset($_POST[
'type']);
1045 unset($_POST[
'productid']);
1046 unset($_POST[
'remise_percent']);
1047 unset($_POST[
'price_ht']);
1048 unset($_POST[
'multicurrency_price_ht']);
1049 unset($_POST[
'price_ttc']);
1050 unset($_POST[
'tva_tx']);
1051 unset($_POST[
'product_ref']);
1052 unset($_POST[
'product_label']);
1053 unset($_POST[
'product_desc']);
1054 unset($_POST[
'fournprice']);
1055 unset($_POST[
'buying_price']);
1057 unset($_POST[
'date_starthour']);
1058 unset($_POST[
'date_startmin']);
1059 unset($_POST[
'date_startsec']);
1060 unset($_POST[
'date_startday']);
1061 unset($_POST[
'date_startmonth']);
1062 unset($_POST[
'date_startyear']);
1063 unset($_POST[
'date_endhour']);
1064 unset($_POST[
'date_endmin']);
1065 unset($_POST[
'date_endsec']);
1066 unset($_POST[
'date_endday']);
1067 unset($_POST[
'date_endmonth']);
1068 unset($_POST[
'date_endyear']);
1075 } elseif ($action ==
'updateline' && $usercancreate &&
GETPOST(
'cancel',
'alpha') == $langs->trans(
"Cancel")) {
1076 header(
'Location: '.$_SERVER[
'PHP_SELF'].
'?id='.$object->id);
1078 } elseif ($action ==
'classin' && $usercancreate) {
1080 $object->setProject(
GETPOST(
'projectid'),
'int');
1081 } elseif ($action ==
'setavailability' && $usercancreate) {
1083 $result = $object->availability(
GETPOST(
'availability_id'));
1084 } elseif ($action ==
'setconditions' && $usercancreate) {
1086 $result = $object->setPaymentTerms(
GETPOST(
'cond_reglement_id',
'int'));
1087 } elseif ($action ==
'setremisepercent' && $usercancreate) {
1088 $result = $object->set_remise_percent($user,
price2num(
GETPOST(
'remise_percent'),
'', 2));
1089 } elseif ($action ==
'setremiseabsolue' && $usercancreate) {
1090 $result = $object->set_remise_absolue($user,
price2num(
GETPOST(
'remise_absolue'),
'MU', 2));
1091 } elseif ($action ==
'setmode' && $usercancreate) {
1093 $result = $object->setPaymentMethods(
GETPOST(
'mode_reglement_id',
'int'));
1094 } elseif ($action ==
'setmulticurrencycode' && $usercancreate) {
1096 $result = $object->setMulticurrencyCode(
GETPOST(
'multicurrency_code',
'alpha'));
1097 } elseif ($action ==
'setmulticurrencyrate' && $usercancreate) {
1099 $result = $object->setMulticurrencyRate(
price2num(
GETPOST(
'multicurrency_tx')),
GETPOST(
'calculation_mode',
'int'));
1100 } elseif ($action ==
'update_extras') {
1104 $ret = $extrafields->setOptionalsFromPost(
null, $object,
GETPOST(
'attribute',
'restricthtml'));
1110 $result = $object->insertExtraFields(
'PROPOSAL_SUPPLIER_MODIFY');
1118 $action =
'edit_extras';
1127 $title = $langs->trans(
'CommRequest').
" - ".$langs->trans(
'Card');
1128 $help_url =
'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur';
1135 $companystatic =
new Societe($db);
1136 if (!empty($conf->project->enabled)) {
1143 if ($action ==
'create') {
1144 $currency_code = $conf->currency;
1146 print
load_fiche_titre($langs->trans(
"NewAskPrice"),
'',
'supplier_proposal');
1150 $res = $soc->fetch($socid);
1154 if (!empty($origin) && !empty($originid)) {
1155 $element = $subelement =
GETPOST(
'origin');
1156 if (preg_match(
'/^([^_]+)_([^_]+)/i',
GETPOST(
'origin'), $regs)) {
1157 $element = $regs[1];
1158 $subelement = $regs[2];
1162 if ($element ==
'order' || $element ==
'commande') {
1163 $element = $subelement =
'commande';
1165 if ($element ==
'propal') {
1166 $element =
'comm/propal';
1167 $subelement =
'propal';
1172 $classname = ucfirst($subelement);
1173 $objectsrc =
new $classname($db);
1174 $objectsrc->fetch($originid);
1175 if (empty($objectsrc->lines) && method_exists($objectsrc,
'fetch_lines')) {
1176 $objectsrc->fetch_lines();
1178 $objectsrc->fetch_thirdparty();
1180 $projectid = (!empty($objectsrc->fk_project) ? $objectsrc->fk_project :
'');
1181 $soc = $objectsrc->thirdparty;
1183 $cond_reglement_id = (!empty($objectsrc->cond_reglement_id) ? $objectsrc->cond_reglement_id : (!empty($soc->cond_reglement_id) ? $soc->cond_reglement_id : 0));
1184 $mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0));
1185 $remise_percent = (!empty($objectsrc->remise_percent) ? $objectsrc->remise_percent : (!empty($soc->remise_supplier_percent) ? $soc->remise_supplier_percent : 0));
1186 $remise_absolue = (!empty($objectsrc->remise_absolue) ? $objectsrc->remise_absolue : (!empty($soc->remise_absolue) ? $soc->remise_absolue : 0));
1189 $objectsrc->fetch_optionals();
1190 $object->array_options = $objectsrc->array_options;
1192 if (!empty($conf->multicurrency->enabled)) {
1193 if (!empty($objectsrc->multicurrency_code)) {
1194 $currency_code = $objectsrc->multicurrency_code;
1196 if (!empty($conf->global->MULTICURRENCY_USE_ORIGIN_TX) && !empty($objectsrc->multicurrency_tx)) {
1197 $currency_tx = $objectsrc->multicurrency_tx;
1201 $cond_reglement_id = $soc->cond_reglement_supplier_id;
1202 $mode_reglement_id = $soc->mode_reglement_supplier_id;
1203 if (!empty($conf->multicurrency->enabled) && !empty($soc->multicurrency_code)) {
1204 $currency_code = $soc->multicurrency_code;
1210 print
'<form name="addprop" action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">';
1211 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1212 print
'<input type="hidden" name="action" value="add">';
1213 if ($origin !=
'project' && $originid) {
1214 print
'<input type="hidden" name="origin" value="'.$origin.
'">';
1215 print
'<input type="hidden" name="originid" value="'.$originid.
'">';
1220 print
'<table class="border centpercent">';
1223 print
'<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans(
'Ref').
'</td><td colspan="2">'.$langs->trans(
"Draft").
'</td></tr>';
1227 print
'<td class="fieldrequired">'.$langs->trans(
'Supplier').
'</td>';
1229 print
'<td colspan="2">';
1230 print $soc->getNomUrl(1,
'supplier');
1231 print
'<input type="hidden" name="socid" value="'.$soc->id.
'">';
1234 print
'<td colspan="2">';
1235 print
img_picto(
'',
'company').$form->select_company(
'',
'socid',
's.fournisseur=1',
'SelectThirdParty', 0, 0,
null, 0,
'minwidth300');
1237 if (!empty($conf->global->RELOAD_PAGE_ON_SUPPLIER_CHANGE)) {
1239 $(document).ready(function() {
1240 $("#socid").change(function() {
1241 var socid = $(this).val();
1243 window.location.href = "'.$_SERVER[
"PHP_SELF"].
'?action=create&socid="+socid;
1248 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>';
1255 print
'<tr><td>'.$langs->trans(
'Discounts').
'</td><td>';
1257 $absolute_discount = $soc->getAvailableDiscounts(
'',
'', 0, 1);
1261 $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?socid='.$thirdparty->id.
'&action='.$action.
'&origin='.
GETPOST(
'origin').
'&originid='.
GETPOST(
'originid'));
1262 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
1268 print
'<tr><td class="nowrap">'.$langs->trans(
'PaymentConditionsShort').
'</td><td colspan="2">';
1269 $form->select_conditions_paiements(
GETPOST(
'cond_reglement_id') > 0 ?
GETPOST(
'cond_reglement_id') : $cond_reglement_id,
'cond_reglement_id', -1, 1);
1273 print
'<tr><td>'.$langs->trans(
'PaymentMode').
'</td><td colspan="2">';
1274 $form->select_types_paiements(
GETPOST(
'mode_reglement_id') > 0 ?
GETPOST(
'mode_reglement_id') : $mode_reglement_id,
'mode_reglement_id');
1278 if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && !empty($conf->banque->enabled)) {
1279 print
'<tr><td>'.$langs->trans(
'BankAccount').
'</td><td colspan="2">';
1280 $form->select_comptes(
GETPOST(
'fk_account') > 0 ?
GETPOST(
'fk_account',
'int') : $fk_account,
'fk_account', 0,
'', 1);
1285 if (!empty($conf->expedition->enabled)) {
1286 print
'<tr><td>'.$langs->trans(
'SendingMethod').
'</td><td colspan="2">';
1287 print
$form->selectShippingMethod(
GETPOST(
'shipping_method_id') > 0 ?
GETPOST(
'shipping_method_id',
'int') :
"",
'shipping_method_id',
'', 1);
1292 print
'<tr><td>'.$langs->trans(
"DeliveryDate").
'</td>';
1293 print
'<td colspan="2">';
1295 if (!empty($conf->global->DATE_LIVRAISON_WEEK_DELAY)) {
1296 $tmpdte = time() + ((7 * $conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60);
1297 $syear = date(
"Y", $tmpdte);
1298 $smonth = date(
"m", $tmpdte);
1299 $sday = date(
"d", $tmpdte);
1300 print
$form->selectDate($syear.
"-".$smonth.
"-".$sday,
'liv_',
'',
'',
'',
"addask");
1302 print
$form->selectDate($datedelivery ? $datedelivery : -1,
'liv_',
'',
'',
'',
"addask", 1, 1);
1309 print
'<td>'.$langs->trans(
"DefaultModel").
'</td>';
1310 print
'<td colspan="2">';
1312 $preselected = (!empty($conf->global->SUPPLIER_PROPOSAL_ADDON_PDF_ODT_DEFAULT) ? $conf->global->SUPPLIER_PROPOSAL_ADDON_PDF_ODT_DEFAULT : $conf->global->SUPPLIER_PROPOSAL_ADDON_PDF);
1313 print
$form->selectarray(
'model', $list, $preselected, 0, 0, 0,
'', 0, 0, 0,
'',
'', 1);
1317 if (!empty($conf->project->enabled)) {
1318 $langs->load(
"projects");
1322 if ($origin ==
'project') {
1323 $projectid = ($originid ? $originid : 0);
1327 print
'<td>'.$langs->trans(
"Project").
'</td><td colspan="2">';
1328 print
img_picto(
'',
'project').$formproject->select_projects(($soc->id > 0 ? $soc->id : -1), $projectid,
'projectid', 0, 0, 1, 1, 0, 0, 0,
'', 1, 0,
'maxwidth500');
1329 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>';
1336 if (!empty($conf->multicurrency->enabled)) {
1338 print
'<td>'.$form->editfieldkey(
'Currency',
'multicurrency_code',
'', $object, 0).
'</td>';
1339 print
'<td colspan="3" class="maxwidthonsmartphone">';
1340 print
$form->selectMultiCurrency($currency_code,
'multicurrency_code');
1345 $parameters = array(
'colspan' =>
' colspan="3"',
'cols' => 3);
1346 $reshook = $hookmanager->executeHooks(
'formObjectOptions',
$parameters, $object, $action);
1347 print $hookmanager->resPrint;
1348 if (empty($reshook)) {
1349 print $object->showOptionals($extrafields,
'create',
$parameters);
1354 if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
1356 if ($origin ==
'contrat') {
1358 $objectsrc->remise_absolue = $remise_absolue;
1359 $objectsrc->remise_percent = $remise_percent;
1360 $objectsrc->update_price(1, - 1, 1);
1363 print
"\n<!-- ".$classname.
" info -->";
1365 print
'<input type="hidden" name="amount" value="'.$objectsrc->total_ht.
'">'.
"\n";
1366 print
'<input type="hidden" name="total" value="'.$objectsrc->total_ttc.
'">'.
"\n";
1367 print
'<input type="hidden" name="tva" value="'.$objectsrc->total_tva.
'">'.
"\n";
1368 print
'<input type="hidden" name="origin" value="'.$objectsrc->element.
'">';
1369 print
'<input type="hidden" name="originid" value="'.$objectsrc->id.
'">';
1371 print
'<tr><td>'.$langs->trans(
'CommRequest').
'</td><td colspan="2">'.$objectsrc->getNomUrl(1).
'</td></tr>';
1372 print
'<tr><td>'.$langs->trans(
'AmountHT').
'</td><td colspan="2">'.
price($objectsrc->total_ht).
'</td></tr>';
1373 print
'<tr><td>'.$langs->trans(
'AmountVAT').
'</td><td colspan="2">'.
price($objectsrc->total_tva).
"</td></tr>";
1374 if ($mysoc->localtax1_assuj ==
"1" || $objectsrc->total_localtax1 != 0) {
1375 print
'<tr><td>'.$langs->transcountry(
"AmountLT1", $mysoc->country_code).
'</td><td colspan="2">'.
price($objectsrc->total_localtax1).
"</td></tr>";
1378 if ($mysoc->localtax2_assuj ==
"1" || $objectsrc->total_localtax2 != 0) {
1379 print
'<tr><td>'.$langs->transcountry(
"AmountLT2", $mysoc->country_code).
'</td><td colspan="2">'.
price($objectsrc->total_localtax2).
"</td></tr>";
1381 print
'<tr><td>'.$langs->trans(
'AmountTTC').
'</td><td colspan="2">'.
price($objectsrc->total_ttc).
"</td></tr>";
1383 if (!empty($conf->multicurrency->enabled)) {
1384 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountHT').
'</td><td colspan="2">'.
price($objectsrc->multicurrency_total_ht).
'</td></tr>';
1385 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountVAT').
'</td><td colspan="2">'.
price($objectsrc->multicurrency_total_tva).
"</td></tr>";
1386 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountTTC').
'</td><td colspan="2">'.
price($objectsrc->multicurrency_total_ttc).
"</td></tr>";
1397 if (empty($conf->global->SUPPLIER_PROPOSAL_CLONE_ON_CREATE_PAGE)) {
1398 print
'<input type="hidden" name="createmode" value="empty">';
1401 if (!empty($conf->global->SUPPLIER_PROPOSAL_CLONE_ON_CREATE_PAGE)) {
1402 print
'<br><table>';
1406 print
'<td><input type="radio" name="createmode" value="copy"></td>';
1407 print
'<td>'.$langs->trans(
"CopyAskFrom").
' </td>';
1409 $liste_ask = array();
1410 $liste_ask [0] =
'';
1412 $sql =
"SELECT p.rowid as id, p.ref, s.nom";
1413 $sql .=
" FROM ".MAIN_DB_PREFIX.
"supplier_proposal p";
1414 $sql .=
", ".MAIN_DB_PREFIX.
"societe s";
1415 $sql .=
" WHERE s.rowid = p.fk_soc";
1416 $sql .=
" AND p.entity = ".$conf->entity;
1417 $sql .=
" AND p.fk_statut <> ".SupplierProposal::STATUS_DRAFT;
1418 $sql .=
" ORDER BY Id";
1420 $resql = $db->query($sql);
1422 $num = $db->num_rows(
$resql);
1425 $row = $db->fetch_row(
$resql);
1426 $askPriceSupplierRefAndSocName = $row [1].
" - ".$row [2];
1427 $liste_ask [$row [0]] = $askPriceSupplierRefAndSocName;
1430 print
$form->selectarray(
"copie_supplier_proposal", $liste_ask, 0);
1436 print
'<tr><td class="tdtop"><input type="radio" name="createmode" value="empty" checked></td>';
1437 print
'<td valign="top" colspan="2">'.$langs->trans(
"CreateEmptyAsk").
'</td></tr>';
1440 if (!empty($conf->global->SUPPLIER_PROPOSAL_CLONE_ON_CREATE_PAGE)) {
1446 print
$form->buttonsSaveCancel(
"CreateDraft");
1452 if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
1455 $title = $langs->trans(
'ProductsAndServices');
1458 print
'<div class="div-table-responsive-no-min">';
1459 print
'<table class="noborder centpercent">';
1461 $objectsrc->printOriginLinesList();
1472 $soc->fetch($object->socid);
1474 $head = supplier_proposal_prepare_head($object);
1475 print
dol_get_fiche_head($head,
'comm', $langs->trans(
'CommRequest'), -1,
'supplier_proposal');
1480 if ($action ==
'clone') {
1482 $formquestion = array(
1490 'label' => $langs->trans(
"SelectThirdParty"),
1491 'value' =>
$form->select_company(
GETPOST(
'socid',
'int'),
'socid',
's.fournisseur=1'))
1494 $formconfirm =
$form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'ToClone'), $langs->trans(
'ConfirmCloneAsk', $object->ref),
'confirm_clone', $formquestion,
'yes', 1);
1495 } elseif ($action ==
'delete') {
1497 $formconfirm =
$form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'DeleteAsk'), $langs->trans(
'ConfirmDeleteAsk', $object->ref),
'confirm_delete',
'', 0, 1);
1498 } elseif ($action ==
'reopen') {
1500 $formconfirm =
$form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'ReOpen'), $langs->trans(
'ConfirmReOpenAsk', $object->ref),
'confirm_reopen',
'', 0, 1);
1501 } elseif ($action ==
'ask_deleteline') {
1503 $formconfirm =
$form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&lineid='.$lineid, $langs->trans(
'DeleteProductLine'), $langs->trans(
'ConfirmDeleteProductLine'),
'confirm_deleteline',
'', 0, 1);
1504 } elseif ($action ==
'validate') {
1509 $ref = substr($object->ref, 1, 4);
1510 if ($ref ==
'PROV') {
1511 $numref = $object->getNextNumRef($soc);
1512 if (empty($numref)) {
1517 $numref = $object->ref;
1520 $text = $langs->trans(
'ConfirmValidateAsk', $numref);
1521 if (!empty($conf->notification->enabled)) {
1522 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
1523 $notify =
new Notify($db);
1525 $text .= $notify->confirmMessage(
'PROPOSAL_SUPPLIER_VALIDATE', $object->socid, $object);
1529 $formconfirm =
$form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'ValidateAsk'), $text,
'confirm_validate',
'', 0, 1);
1535 $reshook = $hookmanager->executeHooks(
'formConfirm',
$parameters, $object, $action);
1536 if (empty($reshook)) {
1538 } elseif ($reshook > 0) {
1547 $linkback =
'<a href="'.DOL_URL_ROOT.
'/supplier_proposal/list.php?restore_lastsearch_values=1'.(!empty($socid) ?
'&socid='.$socid :
'').
'">'.$langs->trans(
"BackToList").
'</a>';
1550 $morehtmlref =
'<div class="refidno">';
1555 $morehtmlref .= $langs->trans(
'ThirdParty').
' : '.$object->thirdparty->getNomUrl(1,
'supplier');
1556 if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) {
1557 $morehtmlref .=
' (<a href="'.DOL_URL_ROOT.
'/supplier_proposal/list.php?socid='.$object->thirdparty->id.
'&search_societe='.urlencode($object->thirdparty->name).
'">'.$langs->trans(
"OtherProposals").
'</a>)';
1560 if (!empty($conf->project->enabled)) {
1561 $langs->load(
"projects");
1562 $morehtmlref .=
'<br>'.$langs->trans(
'Project').
' ';
1563 if ($usercancreate) {
1564 if ($action !=
'classify') {
1565 $morehtmlref .=
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=classify&token='.
newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetProject')).
'</a> : ';
1567 if ($action ==
'classify') {
1569 $morehtmlref .=
'<form method="post" action="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'">';
1570 $morehtmlref .=
'<input type="hidden" name="action" value="classin">';
1571 $morehtmlref .=
'<input type="hidden" name="token" value="'.newToken().
'">';
1572 $morehtmlref .= $formproject->select_projects((empty($conf->global->PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS) ? $object->socid : -1), $object->fk_project,
'projectid', $maxlength, 0, 1, 0, 1, 0, 0,
'', 1);
1573 $morehtmlref .=
'<input type="submit" class="button valignmiddle" value="'.$langs->trans(
"Modify").
'">';
1574 $morehtmlref .=
'</form>';
1576 $morehtmlref .=
$form->form_project($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->socid, $object->fk_project,
'none', 0, 0, 0, 1);
1579 if (!empty($object->fk_project)) {
1581 $proj->fetch($object->fk_project);
1582 $morehtmlref .=
' : '.$proj->getNomUrl(1);
1584 $morehtmlref .=
' - '.$proj->title;
1591 $morehtmlref .=
'</div>';
1594 dol_banner_tab($object,
'ref', $linkback, 1,
'ref',
'ref', $morehtmlref);
1597 print
'<div class="fichecenter">';
1598 print
'<div class="fichehalfleft">';
1599 print
'<div class="underbanner clearboth"></div>';
1601 print
'<table class="border tableforfield" width="100%">';
1604 if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
1605 $filterabsolutediscount =
"fk_invoice_supplier_source IS NULL";
1606 $filtercreditnote =
"fk_invoice_supplier_source IS NOT NULL";
1608 $filterabsolutediscount =
"fk_invoice_supplier_source IS NULL OR (description LIKE '(DEPOSIT)%' AND description NOT LIKE '(EXCESS PAID)%')";
1609 $filtercreditnote =
"fk_invoice_supplier_source IS NOT NULL AND (description NOT LIKE '(DEPOSIT)%' OR description LIKE '(EXCESS PAID)%')";
1612 print
'<tr><td class="titlefield">'.$langs->trans(
'Discounts').
'</td><td>';
1614 $absolute_discount = $soc->getAvailableDiscounts(
'', $filterabsolutediscount, 0, 1);
1615 $absolute_creditnote = $soc->getAvailableDiscounts(
'', $filtercreditnote, 0, 1);
1616 $absolute_discount =
price2num($absolute_discount,
'MT');
1617 $absolute_creditnote =
price2num($absolute_creditnote,
'MT');
1621 $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?id='.$object->id);
1622 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
1627 print
'<tr><td class="titlefield">';
1628 print
'<table class="nobordernopadding" width="100%"><tr><td>';
1629 print $langs->trans(
'PaymentConditionsShort');
1632 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>';
1634 print
'</tr></table>';
1635 print
'</td><td class="valuefield">';
1636 if ($action ==
'editconditions') {
1637 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->cond_reglement_id,
'cond_reglement_id', 1);
1639 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->cond_reglement_id,
'none', 1);
1645 $langs->load(
'deliveries');
1647 print
'<table class="nobordernopadding" width="100%"><tr><td>';
1648 print $langs->trans(
'DeliveryDate');
1651 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>';
1653 print
'</tr></table>';
1654 print
'</td><td class="valuefield">';
1655 if ($action ==
'editdate_livraison') {
1656 print
'<form name="editdate_livraison" action="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'" method="post" class="formconsumeproduce">';
1657 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1658 print
'<input type="hidden" name="action" value="setdate_livraison">';
1659 print
$form->selectDate($object->delivery_date,
'liv_',
'',
'',
'',
"editdate_livraison");
1660 print
'<input type="submit" class="button button-edit" value="'.$langs->trans(
'Modify').
'">';
1671 print
'<table class="nobordernopadding" width="100%"><tr><td>';
1672 print $langs->trans(
'PaymentMode');
1675 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>';
1677 print
'</tr></table>';
1678 print
'</td><td class="valuefield">';
1679 if ($action ==
'editmode') {
1680 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->mode_reglement_id,
'mode_reglement_id',
'DBIT', 1, 1);
1682 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->mode_reglement_id,
'none');
1687 if (!empty($conf->multicurrency->enabled)) {
1691 print
'<table class="nobordernopadding" width="100%"><tr><td>';
1692 print
$form->editfieldkey(
'Currency',
'multicurrency_code',
'', $object, 0);
1694 if ($action !=
'editmulticurrencycode' && $object->statut == $object::STATUS_VALIDATED) {
1695 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>';
1697 print
'</tr></table>';
1698 print
'</td><td class="valuefield">';
1699 if ($action ==
'editmulticurrencycode') {
1700 $form->form_multicurrency_code($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_code,
'multicurrency_code');
1702 $form->form_multicurrency_code($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_code,
'none');
1707 if ($object->multicurrency_code != $conf->currency || $object->multicurrency_tx != 1) {
1710 print
'<table class="nobordernopadding" width="100%"><tr><td>';
1711 print
$form->editfieldkey(
'CurrencyRate',
'multicurrency_tx',
'', $object, 0);
1713 if ($action !=
'editmulticurrencyrate' && $object->statut == $object::STATUS_VALIDATED && $object->multicurrency_code && $object->multicurrency_code != $conf->currency) {
1714 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>';
1716 print
'</tr></table>';
1717 print
'</td><td class="valuefield">';
1718 if ($action ==
'editmulticurrencyrate' || $action ==
'actualizemulticurrencyrate') {
1719 if ($action ==
'actualizemulticurrencyrate') {
1722 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_tx,
'multicurrency_tx', $object->multicurrency_code);
1724 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_tx,
'none', $object->multicurrency_code);
1725 if ($object->statut == $object::STATUS_DRAFT && $object->multicurrency_code && $object->multicurrency_code != $conf->currency) {
1726 print
'<div class="inline-block"> ';
1727 print
'<a href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=actualizemulticurrencyrate">'.$langs->trans(
"ActualizeCurrency").
'</a>';
1749 if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && !empty($conf->banque->enabled)) {
1752 print
'<table width="100%" class="nobordernopadding"><tr><td>';
1753 print $langs->trans(
'BankAccount');
1755 if ($action !=
'editbankaccount' && $usercancreate) {
1756 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>';
1758 print
'</tr></table>';
1759 print
'</td><td class="valuefield">';
1760 if ($action ==
'editbankaccount') {
1761 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->fk_account,
'fk_account', 1);
1763 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->fk_account,
'none');
1770 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
1775 print
'<div class="fichehalfright">';
1776 print
'<div class="underbanner clearboth"></div>';
1778 print
'<table class="border tableforfield centpercent">';
1780 if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency)) {
1782 print
'<tr><td class="titlefieldmiddle">'.$form->editfieldkey(
'MulticurrencyAmountHT',
'multicurrency_total_ht',
'', $object, 0).
'</td>';
1783 print
'<td class="valuefield nowrap right amountcard">'.price($object->multicurrency_total_ht,
'', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).
'</td>';
1787 print
'<tr><td>'.$form->editfieldkey(
'MulticurrencyAmountVAT',
'multicurrency_total_tva',
'', $object, 0).
'</td>';
1788 print
'<td class="valuefield nowrap right amountcard">'.price($object->multicurrency_total_tva,
'', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).
'</td>';
1792 print
'<tr><td>'.$form->editfieldkey(
'MulticurrencyAmountTTC',
'multicurrency_total_ttc',
'', $object, 0).
'</td>';
1793 print
'<td class="valuefield nowrap right amountcard">'.price($object->multicurrency_total_ttc,
'', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).
'</td>';
1798 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
'AmountHT').
'</td>';
1799 print
'<td class="valuefield nowrap right amountcard">'.price($object->total_ht,
'', $langs, 0, - 1, - 1, $conf->currency).
'</td>';
1803 print
'<tr><td>'.$langs->trans(
'AmountVAT').
'</td>';
1804 print
'<td class="valuefield nowrap right amountcard">'.price($object->total_tva,
'', $langs, 0, - 1, - 1, $conf->currency).
'</td>';
1808 if ($mysoc->localtax1_assuj ==
"1" || $object->total_localtax1 != 0) {
1809 print
'<tr><td>'.$langs->transcountry(
"AmountLT1", $mysoc->country_code).
'</td>';
1810 print
'<td class="valuefield nowrap right amountcard">'.price($object->total_localtax1,
'', $langs, 0, - 1, - 1, $conf->currency).
'</td>';
1813 if ($mysoc->localtax2_assuj ==
"1" || $object->total_localtax2 != 0) {
1814 print
'<tr><td height="10">'.$langs->transcountry(
"AmountLT2", $mysoc->country_code).
'</td>';
1815 print
'<td class="valuefield nowrap right amountcard">'.price($object->total_localtax2,
'', $langs, 0, - 1, - 1, $conf->currency).
'</td>';
1820 print
'<tr><td height="10">'.$langs->trans(
'AmountTTC').
'</td>';
1821 print
'<td class="valuefield nowrap right amountcard">'.price($object->total_ttc,
'', $langs, 0, - 1, - 1, $conf->currency).
'</td>';
1834 print
'<div class="clearboth"></div><br>';
1836 if (!empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) {
1837 $blocname =
'contacts';
1838 $title = $langs->trans(
'ContactsAddresses');
1839 include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
1842 if (!empty($conf->global->MAIN_DISABLE_NOTES_TAB)) {
1843 $blocname =
'notes';
1844 $title = $langs->trans(
'Notes');
1845 include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
1853 $result = $object->getLinesArray();
1855 print
' <form name="addproduct" id="addproduct" action="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.(($action !=
'editline') ?
'#add' :
'#line_'.
GETPOST(
'lineid',
'int')).
'" method="POST">
1856 <input type="hidden" name="token" value="' .
newToken().
'">
1857 <input type="hidden" name="action" value="' . (($action !=
'editline') ?
'addline' :
'updateline').
'">
1858 <input type="hidden" name="mode" value="">
1859 <input type="hidden" name="id" value="' . $object->id.
'">
1863 include DOL_DOCUMENT_ROOT.
'/core/tpl/ajaxrow.tpl.php';
1866 print
'<div class="div-table-responsive-no-min">';
1867 print
'<table id="tablelines" class="noborder noshadow" width="100%">';
1870 global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax;
1871 $forceall = 1; $dateSelector = 0; $inputalsopricewithtax = 1;
1872 $senderissupplier = 2;
1873 if (!empty($conf->global->SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY)) {
1874 $senderissupplier = 1;
1877 if (!empty($object->lines)) {
1878 $ret = $object->printObjectLines($action, $soc, $mysoc, $lineid, $dateSelector);
1883 if ($action !=
'editline') {
1887 $reshook = $hookmanager->executeHooks(
'formAddObjectLine',
$parameters, $object, $action);
1888 if ($reshook < 0)
setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
1889 if (empty($reshook))
1890 $object->formAddObjectLine($dateSelector, $soc, $mysoc);
1900 if ($action ==
'statut') {
1902 $form_close =
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'" method="POST" id="formacceptrefuse" class="formconsumeproduce paddingbottom paddingleft paddingright">';
1903 $form_close .=
'<input type="hidden" name="token" value="'.newToken().
'">';
1904 $form_close .=
'<input type="hidden" name="action" value="setstatut">';
1906 if (!empty($conf->global->SUPPLIER_PROPOSAL_UPDATE_PRICE_ON_SUPPlIER_PROPOSAL)) {
1907 $form_close .=
'<p class="notice">'.$langs->trans(
'SupplierProposalRefFournNotice').
'</p>';
1909 $form_close .=
'<table class="border centpercent marginleftonly marginrightonly">';
1910 $form_close .=
'<tr><td>'.$langs->trans(
"CloseAs").
'</td><td class="left">';
1911 $form_close .=
'<select id="statut" name="statut" class="flat">';
1912 $form_close .=
'<option value="0"> </option>';
1913 $form_close .=
'<option value="2">'.$langs->trans(
'SupplierProposalStatusSigned').
'</option>';
1914 $form_close .=
'<option value="3">'.$langs->trans(
'SupplierProposalStatusNotSigned').
'</option>';
1915 $form_close .=
'</select>';
1916 $form_close .=
'</td></tr>';
1917 $form_close .=
'<tr><td class="left">'.$langs->trans(
'Note').
'</td><td class="left"><textarea cols="70" rows="'.ROWS_3.
'" wrap="soft" name="note">';
1918 $form_close .= $object->note_private;
1919 $form_close .=
'</textarea></td></tr>';
1920 $form_close .=
'</table>';
1921 $form_close .=
$form->buttonsSaveCancel();
1922 $form_close .=
'<a id="acceptedrefused"> </a>';
1923 $form_close .=
'</form>';
1931 if ($action !=
'presend') {
1932 print
'<div class="tabsAction">';
1935 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons',
$parameters, $object, $action);
1937 if (empty($reshook)) {
1938 if ($action !=
'statut' && $action !=
'editline') {
1941 if (count($object->lines) > 0) {
1942 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=validate">'.$langs->trans(
'Validate').
'</a></div>';
1949 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>';
1954 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=reopen&token='.
newToken().(empty($conf->global->MAIN_JUMP_TAG) ?
'' :
'#reopen').
'"';
1955 print
'>'.$langs->trans(
'ReOpen').
'</a></div>';
1959 if (empty($user->socid)) {
1962 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>';
1964 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#">'.$langs->trans(
'SendMail').
'</a></div>';
1970 if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) && $object->statut ==
SupplierProposal::STATUS_SIGNED) {
1971 if ($usercancreateorder) {
1972 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>';
1978 print
'<div class="inline-block divButAction"><a class="butAction reposition" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&token='.
newToken().
'&action=statut'.(empty($conf->global->MAIN_JUMP_TAG) ?
'' :
'#acceptedrefused').
'"';
1979 print
'>'.$langs->trans(
'SetAcceptedRefused').
'</a></div>';
1984 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&token='.
newToken().
'&action=close'.(empty($conf->global->MAIN_JUMP_TAG) ?
'' :
'#close').
'"';
1985 print
'>'.$langs->trans(
'Close').
'</a></div>';
1989 if ($usercancreate) {
1990 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>';
1995 print
'<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=delete&token='.
newToken().
'"';
1996 print
'>'.$langs->trans(
'Delete').
'</a></div>';
2004 if ($action !=
'presend') {
2005 print
'<div class="fichecenter"><div class="fichehalfleft">';
2012 $urlsource = $_SERVER[
"PHP_SELF"].
"?id=".$object->id;
2013 $genallowed = $usercanread;
2014 $delallowed = $usercancreate;
2016 print $formfile->showdocuments(
'supplier_proposal', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0,
'', 0,
'', $soc->default_lang);
2020 $linktoelem =
$form->showLinkToObjectBlock($object,
null, array(
'supplier_proposal'));
2021 $somethingshown =
$form->showLinkedObjectBlock($object, $linktoelem);
2024 print
'</div><div class="fichehalfright">';
2027 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formactions.class.php';
2029 $somethingshown =
$formactions->showactions($object,
'supplier_proposal', $socid, 1);
2031 print
'</div></div>';
2035 if (
GETPOST(
'modelselected')) {
2036 $action =
'presend';
2040 $modelmail =
'supplier_proposal_send';
2041 $defaulttopic =
'SendAskRef';
2042 $diroutput = $conf->supplier_proposal->dir_output;
2043 $autocopy =
'MAIN_MAIL_AUTOCOPY_SUPPLIER_PROPOSAL_TO';
2044 $trackid =
'spro'.$object->id;
2046 include DOL_DOCUMENT_ROOT.
'/core/tpl/card_presend.tpl.php';