41require
'../../main.inc.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/class/doleditor.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formorder.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
46require_once DOL_DOCUMENT_ROOT.
'/core/lib/fourn.lib.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
48require_once DOL_DOCUMENT_ROOT.
'/core/modules/supplier_order/modules_commandefournisseur.php';
49require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.product.class.php';
52if (isModEnabled(
'supplier_proposal')) {
53 require_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
55if (isModEnabled(
"product")) {
56 require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
58if (isModEnabled(
'project')) {
59 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
60 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
62require_once NUSOAP_PATH.
'/nusoap.php';
64if (isModEnabled(
'variants')) {
65 require_once DOL_DOCUMENT_ROOT.
'/variants/class/ProductCombination.class.php';
68if (isModEnabled(
'stock')) {
69 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.dispatch.class.php';
70 require_once DOL_DOCUMENT_ROOT.
'/product/stock/class/mouvementstock.class.php';
83$langs->loadLangs(array(
'admin',
'orders',
'sendings',
'companies',
'bills',
'propal',
'receptions',
'supplier_proposal',
'deliveries',
'products',
'stocks',
'productbatch'));
84if (isModEnabled(
'incoterm')) {
85 $langs->load(
'incoterm');
90$action =
GETPOST(
'action',
'alpha');
91$confirm =
GETPOST(
'confirm',
'alpha');
92$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'purchaseordercard';
93$cancel =
GETPOST(
'cancel',
'alpha');
94$backtopage =
GETPOST(
'backtopage',
'alpha');
95$backtopageforcancel =
GETPOST(
'backtopageforcancel',
'alpha');
102$origin =
GETPOST(
'origin',
'alpha');
105$stockDelete =
GETPOST(
'stockDelete',
'int');
116if (!empty($user->socid)) {
117 $socid = $user->socid;
121$hookmanager->initHooks(array(
'ordersuppliercard',
'globalcard'));
127$extrafields->fetch_name_optionals_label(
$object->table_element);
130 $socid = $user->socid;
134if ($id > 0 || !empty($ref)) {
135 $ret =
$object->fetch($id, $ref);
139 $ret =
$object->fetch_thirdparty();
143} elseif (!empty($socid) && $socid > 0) {
145 $ret =
$object->fetch_thirdparty();
152$isdraft = (isset(
$object->statut) && (
$object->statut == $object::STATUS_DRAFT) ? 1 : 0);
153$result =
restrictedArea($user,
'fournisseur',
$object,
'commande_fournisseur',
'commande',
'fk_soc',
'rowid', $isdraft);
156$usercanread = ($user->hasRight(
"fournisseur",
"commande",
"lire") || $user->hasRight(
"supplier_order",
"lire"));
157$usercancreate = ($user->hasRight(
"fournisseur",
"commande",
"creer") || $user->hasRight(
"supplier_order",
"creer"));
158$usercandelete = (($user->hasRight(
"fournisseur",
"commande",
"supprimer") || $user->hasRight(
"supplier_order",
"supprimer")) || ($usercancreate && isset(
$object->statut) &&
$object->statut == $object::STATUS_DRAFT));
161$usercanvalidate = ((!
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && !empty($usercancreate)) || (
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && $user->hasRight(
"fournisseur",
"supplier_order_advance",
"validate")));
164$usercanapprove = $user->hasRight(
"fournisseur",
"commande",
"approuver");
165$usercanapprovesecond = $user->hasRight(
"fournisseur",
"commande",
"approve2");
166$usercanorder = $user->hasRight(
"fournisseur",
"commande",
"commander");
167if (!isModEnabled(
'reception')) {
168 $usercanreceive = $user->hasRight(
"fournisseur",
"commande",
"receptionner");
170 $usercanreceive = $user->hasRight(
"reception",
"creer");
174$permissionnote = $usercancreate;
175$permissiondellink = $usercancreate;
176$permissiontoedit = $usercancreate;
177$permissiontoadd = $usercancreate;
180$caneditproject =
false;
181if (isModEnabled(
'project')) {
192$parameters = array(
'socid' => $socid);
193$reshook = $hookmanager->executeHooks(
'doActions', $parameters,
$object, $action);
198if (empty($reshook)) {
199 $backurlforlist = DOL_URL_ROOT.
'/fourn/commande/list.php'.($socid > 0 ?
'?socid='.((int) $socid) :
'');
201 if (empty($backtopage) || ($cancel && empty($id))) {
202 if (empty($backtopage) || ($cancel && strpos($backtopage,
'__ID__'))) {
203 if (empty($id) && (($action !=
'add' && $action !=
'create') || $cancel)) {
204 $backtopage = $backurlforlist;
206 $backtopage = DOL_URL_ROOT.
'/fourn/commande/card.php?id='.((!empty($id) &&
$id > 0) ? $id :
'__ID__');
212 if (!empty($backtopageforcancel)) {
213 header(
"Location: ".$backtopageforcancel);
215 } elseif (!empty($backtopage)) {
216 header(
"Location: ".$backtopage);
222 include DOL_DOCUMENT_ROOT.
'/core/actions_setnotes.inc.php';
224 include DOL_DOCUMENT_ROOT.
'/core/actions_dellink.inc.php';
226 include DOL_DOCUMENT_ROOT.
'/core/actions_lineupdown.inc.php';
228 if ($action ==
'setref_supplier' && $usercancreate) {
229 $result =
$object->setValueFrom(
'ref_supplier',
GETPOST(
'ref_supplier',
'alpha'),
'',
null,
'text',
'', $user,
'ORDER_SUPPLIER_MODIFY');
236 if ($action ==
'set_incoterms' && $usercancreate) {
244 if ($action ==
'setconditions' && $usercancreate) {
252 if ($action ==
'setmode' && $usercancreate) {
257 } elseif ($action ==
'setmulticurrencycode' && $usercancreate) {
259 $result =
$object->setMulticurrencyCode(
GETPOST(
'multicurrency_code',
'alpha'));
260 } elseif ($action ==
'setmulticurrencyrate' && $usercancreate) {
266 if ($action ==
'setbankaccount' && $usercancreate) {
274 if ($action ==
'setdate_livraison' && $usercancreate) {
275 $result =
$object->setDeliveryDate($user, $datelivraison);
282 if ($action ==
'classin' && $usercancreate && $caneditproject) {
283 $result =
$object->setProject($projectid);
292 if (!empty($new_socid) && $new_socid !=
$object->thirdparty->id) {
296 $sql =
'UPDATE '.MAIN_DB_PREFIX.
'commande_fournisseur';
297 $sql .=
' SET fk_soc = '.((int) $new_socid);
298 $sql .=
' WHERE fk_soc = '.((int)
$object->thirdparty->id);
299 $sql .=
' AND rowid = '.((int)
$object->id);
301 $res = $db->query($sql);
309 foreach (
$object->lines as $l) {
310 $sql =
'SELECT price, unitprice, tva_tx, ref_fourn';
311 $sql .=
' FROM '.MAIN_DB_PREFIX.
'product_fournisseur_price';
312 $sql .=
' WHERE fk_product = '.((int) $l->fk_product);
313 $sql .=
' AND fk_soc = '.((int) $new_socid);
314 $sql .=
' ORDER BY unitprice ASC';
316 $resql = $db->query($sql);
318 $num_row = $db->num_rows($resql);
319 if (empty($num_row)) {
325 $l->ref_supplier =
'';
329 $obj = $db->fetch_object($resql);
330 $l->subprice = $obj->unitprice;
331 $l->total_ht = $obj->price;
332 $l->tva_tx = $obj->tva_tx;
333 $l->total_tva = $l->total_ht * ($obj->tva_tx / 100);
334 $l->total_ttc = $l->total_ht + $l->total_tva;
335 $l->ref_supplier = $obj->ref_fourn;
346 header(
'Location: '.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id);
350 if ($action ==
'setremisepercent' && $usercancreate) {
357 if ($action ==
'reopen' && $permissiontoadd) {
358 if (in_array(
$object->statut, array(1, 2, 3, 4, 5, 6, 7, 9))) {
361 } elseif (
$object->statut == 2) {
363 } elseif (
$object->statut == 3) {
365 } elseif (
$object->statut == 4) {
367 } elseif (
$object->statut == 5) {
373 } elseif (
$object->statut == 6) {
375 } elseif (
$object->statut == 7) {
377 } elseif (
$object->statut == 9) {
386 $result =
$object->setStatus($user, $newstatus);
388 if ($newstatus == 0) {
389 $sql =
'UPDATE '.MAIN_DB_PREFIX.
'commande_fournisseur';
390 $sql .=
' SET fk_user_approve = null, fk_user_approve2 = null, date_approve = null, date_approve2 = null';
391 $sql .=
' WHERE rowid = '.((int)
$object->id);
393 $resql = $db->query($sql);
398 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id);
411 if ($action ==
'classifybilled' && $usercancreate) {
412 $ret =
$object->classifyBilled($user);
418 if ($action ==
'classifyunbilled' && $usercancreate) {
419 $ret =
$object->classifyUnBilled($user);
426 if ($action ==
'addline' &&
GETPOST(
'submitforalllines',
'aZ09') && (
GETPOST(
'alldate_start',
'alpha') ||
GETPOST(
'alldate_end',
'alpha')) && $usercancreate) {
430 foreach (
$object->lines as $line) {
431 if ($line->product_type == 1) {
432 $result =
$object->updateline($line->id, $line->desc, $line->subprice, $line->qty, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx,
'HT', $line->info_bits, $line->product_type, 0, $alldate_start, $alldate_end, $line->array_options, $line->fk_unit, $line->multicurrency_subprice, $line->ref_supplier);
435 } elseif ($action ==
'addline' &&
GETPOST(
'submitforalllines',
'aZ09') &&
GETPOST(
'vatforalllines',
'alpha') !==
'' && $usercancreate) {
437 $vat_rate = (
GETPOST(
'vatforalllines') ?
GETPOST(
'vatforalllines') : 0);
438 $vat_rate = str_replace(
'*',
'', $vat_rate);
441 foreach (
$object->lines as $line) {
442 $result =
$object->updateline($line->id, $line->desc, $line->subprice, $line->qty, $line->remise_percent, $vat_rate, $localtax1_rate, $localtax2_rate,
'HT', $line->info_bits, $line->product_type, 0, $line->date_start, $line->date_end, $line->array_options, $line->fk_unit, $line->multicurrency_subprice, $line->ref_supplier);
444 } elseif ($action ==
'addline' && $usercancreate) {
447 $langs->load(
'errors');
452 $product_desc = (GETPOSTISSET(
'dp_desc') ?
GETPOST(
'dp_desc',
'restricthtml') :
'');
456 $prod_entry_mode =
GETPOST(
'prod_entry_mode');
457 if ($prod_entry_mode ==
'free') {
471 $remise_percent = (GETPOSTISSET(
'remise_percent'.$predef) ?
price2num(
GETPOST(
'remise_percent'.$predef,
'alpha'),
'', 2) : 0);
472 if (empty($remise_percent)) {
477 $extralabelsline = $extrafields->fetch_name_optionals_label(
$object->table_element_line);
478 $array_options = $extrafields->getOptionalsFromPost(
$object->table_element_line, $predef);
480 if (is_array($extralabelsline)) {
482 foreach ($extralabelsline as $key => $value) {
483 unset($_POST[
"options_".$key]);
487 if ($prod_entry_mode ==
'free' &&
GETPOST(
'price_ht') < 0 && $qty < 0) {
488 setEventMessages($langs->trans(
'ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv(
'UnitPrice'), $langs->transnoentitiesnoconv(
'Qty')),
null,
'errors');
491 if ($prod_entry_mode ==
'free' && !
GETPOST(
'idprodfournprice') &&
GETPOST(
'type') < 0) {
492 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Type')),
null,
'errors');
495 if ($prod_entry_mode ==
'free' &&
GETPOST(
'price_ht') ===
'' &&
GETPOST(
'price_ttc') ===
'' && $price_ht_devise ===
'') {
496 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'UnitPrice')),
null,
'errors');
499 if ($prod_entry_mode ==
'free' && !
GETPOST(
'dp_desc')) {
500 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Description')),
null,
'errors');
503 if (
GETPOST(
'qty',
'alpha') ==
'') {
504 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Qty')),
null,
'errors');
508 if (!$error && isModEnabled(
'variants') && $prod_entry_mode !=
'free') {
509 if ($combinations =
GETPOST(
'combinations',
'array')) {
513 if ($res = $prodcomb->fetchByProductCombination2ValuePairs($idprod, $combinations)) {
514 $idprod = $res->fk_product_child;
516 setEventMessages($langs->trans(
'ErrorProductCombinationNotFound'),
null,
'errors');
522 if ($prod_entry_mode !=
'free' && empty($error)) {
526 if (
GETPOST(
'idprodfournprice',
'alpha') == -1 ||
GETPOST(
'idprodfournprice',
'alpha') ==
'') {
531 if (preg_match(
'/^idprod_([0-9]+)$/',
GETPOST(
'idprodfournprice',
'alpha'), $reg)) {
533 $res = $productsupplier->fetch($idprod);
536 if (
getDolGlobalString(
'SUPPLIER_TAKE_FIRST_PRICE_IF_NO_PRICE_FOR_CURRENT_SUPPLIER')) {
538 $productsupplier->get_buyprice(0, -1, $idprod,
'none', $fksoctosearch);
539 if ($productsupplier->fourn_socid != $socid) {
540 $productsupplier->ref_supplier =
'';
543 $fksoctosearch =
$object->thirdparty->id;
544 $productsupplier->get_buyprice(0, -1, $idprod,
'none', $fksoctosearch);
546 } elseif (
GETPOST(
'idprodfournprice',
'alpha') > 0) {
549 $idprod = $productsupplier->get_buyprice(
GETPOST(
'idprodfournprice',
'alpha'), $qtytosearch);
550 $res = $productsupplier->fetch($idprod);
554 $label = $productsupplier->label;
558 $outputlangs = $langs;
560 if (empty($newlang) &&
GETPOST(
'lang_id',
'aZ09')) {
561 $newlang =
GETPOST(
'lang_id',
'aZ09');
563 if (empty($newlang)) {
564 $newlang =
$object->thirdparty->default_lang;
566 if (!empty($newlang)) {
568 $outputlangs->setDefaultLang($newlang);
570 $desc = (!empty($productsupplier->multilangs[$outputlangs->defaultlang][
"description"])) ? $productsupplier->multilangs[$outputlangs->defaultlang][
"description"] : $productsupplier->
description;
572 $desc = $productsupplier->description;
575 if (!empty($productsupplier->desc_supplier) &&
getDolGlobalString(
'PRODUIT_FOURN_TEXTS')) {
576 $desc = $productsupplier->desc_supplier;
580 if (trim($product_desc) == trim($desc) &&
getDolGlobalString(
'PRODUIT_AUTOFILL_DESC')) {
585 $desc = $product_desc;
587 if (!empty($product_desc) && trim($product_desc) != trim($desc)) {
591 $ref_supplier = $productsupplier->ref_supplier;
595 if (!GETPOSTISSET(
'tva_tx')) {
596 $tmpidprodfournprice =
GETPOST(
'idprodfournprice',
'alpha');
597 if (is_numeric($tmpidprodfournprice) && (
int) $tmpidprodfournprice > 0) {
598 $tmpidprodfournprice = (int) $tmpidprodfournprice;
600 $tmpidprodfournprice = 0;
604 if (empty($tva_tx)) {
612 $type = $productsupplier->type;
613 if (
GETPOST(
'price_ht') !=
'' ||
GETPOST(
'multicurrency_price_ht') !=
'') {
614 $price_base_type =
'HT';
616 $pu_devise =
price2num($price_ht_devise,
'CU');
617 } elseif (
GETPOST(
'price_ttc') !=
'' ||
GETPOST(
'multicurrency_price_ttc') !=
'') {
618 $price_base_type =
'TTC';
620 $pu_devise =
price2num($price_ttc_devise,
'CU');
622 $price_base_type = ($productsupplier->fourn_price_base_type ? $productsupplier->fourn_price_base_type :
'HT');
623 if (empty(
$object->multicurrency_code) || ($productsupplier->fourn_multicurrency_code !=
$object->multicurrency_code)) {
624 $pu = $productsupplier->fourn_pu;
627 $pu = $productsupplier->fourn_pu;
628 $pu_devise = $productsupplier->fourn_multicurrency_unitprice;
638 ($price_base_type ==
'HT' ? $pu : 0),
644 $productsupplier->product_fourn_price_id,
648 ($price_base_type ==
'TTC' ? $pu : 0),
655 $productsupplier->fk_unit,
659 min($rank, count(
$object->lines) + 1)
662 if ($idprod == -99 || $idprod == 0) {
665 $langs->load(
"errors");
666 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ProductOrService")),
null,
'errors');
671 $langs->load(
"errors");
672 setEventMessages($langs->trans(
"ErrorQtyTooLowForThisSupplier"),
null,
'errors');
674 } elseif (empty($error)) {
675 $tva_npr = (preg_match(
'/\*/', $tva_tx) ? 1 : 0);
676 $tva_tx = str_replace(
'*',
'', $tva_tx);
677 $label = (
GETPOST(
'product_label') ?
GETPOST(
'product_label') :
'');
678 $desc = $product_desc;
680 $ref_supplier =
GETPOST(
'fourn_ref',
'alpha');
682 $fk_unit =
GETPOST(
'units',
'alpha');
684 if (!preg_match(
'/\((.*)\)/', $tva_tx)) {
692 if (
GETPOST(
'price_ht') !=
'' ||
GETPOST(
'multicurrency_price_ht') !=
'') {
697 $pu_ht =
price2num((
float) $pu_ttc / (1 + ((
float) $tva_tx / 100)),
'MU');
699 $price_base_type =
'HT';
700 $pu_ht_devise =
price2num($price_ht_devise,
'CU');
702 $result =
$object->addline($desc, $pu_ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, $ref_supplier, $remise_percent, $price_base_type, $pu_ttc, $type, 0, 0, $date_start, $date_end, $array_options, $fk_unit, $pu_ht_devise);
706 if (!$error && $result > 0) {
713 $outputlangs = $langs;
716 $newlang =
$object->thirdparty->default_lang;
717 if (
GETPOST(
'lang_id',
'aZ09')) {
718 $newlang =
GETPOST(
'lang_id',
'aZ09');
721 if (!empty($newlang)) {
723 $outputlangs->setDefaultLang($newlang);
728 $result =
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
734 unset($_POST [
'prod_entry_mode']);
736 unset($_POST[
'qty']);
737 unset($_POST[
'type']);
738 unset($_POST[
'remise_percent']);
740 unset($_POST[
'price_ht']);
741 unset($_POST[
'multicurrency_price_ht']);
742 unset($_POST[
'price_ttc']);
743 unset($_POST[
'fourn_ref']);
744 unset($_POST[
'tva_tx']);
745 unset($_POST[
'label']);
746 unset($localtax1_tx);
747 unset($localtax2_tx);
748 unset($_POST[
'np_marginRate']);
749 unset($_POST[
'np_markRate']);
750 unset($_POST[
'dp_desc']);
751 unset($_POST[
'idprodfournprice']);
752 unset($_POST[
'units']);
754 unset($_POST[
'date_starthour']);
755 unset($_POST[
'date_startmin']);
756 unset($_POST[
'date_startsec']);
757 unset($_POST[
'date_startday']);
758 unset($_POST[
'date_startmonth']);
759 unset($_POST[
'date_startyear']);
760 unset($_POST[
'date_endhour']);
761 unset($_POST[
'date_endmin']);
762 unset($_POST[
'date_endsec']);
763 unset($_POST[
'date_endday']);
764 unset($_POST[
'date_endmonth']);
765 unset($_POST[
'date_endyear']);
777 if ($action ==
'updateline' && $usercancreate && !
GETPOST(
'cancel',
'alpha')) {
784 $res = $line->fetch($lineid);
791 if (
getDolGlobalInt(
'SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY') == 1) {
792 if ($line->fk_product > 0 && $productsupplier->get_buyprice(0,
price2num(
GETPOSTINT(
'qty')), $line->fk_product,
'none',
GETPOSTINT(
'socid')) < 0) {
793 setEventMessages($langs->trans(
"ErrorQtyTooLowForThisSupplier"),
null,
'warnings');
802 if (preg_match(
'/\*/', $vat_rate)) {
807 $vat_rate = str_replace(
'*',
'', $vat_rate);
811 if (
GETPOST(
'price_ht') !=
'') {
812 $price_base_type =
'HT';
816 $vatratecleaned = $vat_rate;
817 if (preg_match(
'/^(.*)\s*\((.*)\)$/', $vat_rate, $reg)) {
818 $vatratecleaned = trim($reg[1]);
819 $vatratecode = $reg[2];
823 $ht = (float) $ttc / (1 + ((
float) $vatratecleaned / 100));
824 $price_base_type =
'HT';
830 $extralabelsline = $extrafields->fetch_name_optionals_label(
$object->table_element_line);
831 $array_options = $extrafields->getOptionalsFromPost(
$object->table_element_line);
833 if (is_array($extralabelsline)) {
834 foreach ($extralabelsline as $key => $value) {
835 unset($_POST[
"options_".$key]);
841 GETPOST(
'product_desc',
'restricthtml'),
850 GETPOSTISSET(
"type") ?
GETPOST(
"type") : $line->product_type,
859 unset($_POST[
'qty']);
860 unset($_POST[
'type']);
861 unset($_POST[
'idprodfournprice']);
862 unset($_POST[
'remmise_percent']);
863 unset($_POST[
'dp_desc']);
864 unset($_POST[
'np_desc']);
866 unset($_POST[
'fourn_ref']);
867 unset($_POST[
'tva_tx']);
868 unset($_POST[
'date_start']);
869 unset($_POST[
'date_end']);
870 unset($_POST[
'units']);
871 unset($localtax1_tx);
872 unset($localtax2_tx);
874 unset($_POST[
'date_starthour']);
875 unset($_POST[
'date_startmin']);
876 unset($_POST[
'date_startsec']);
877 unset($_POST[
'date_startday']);
878 unset($_POST[
'date_startmonth']);
879 unset($_POST[
'date_startyear']);
880 unset($_POST[
'date_endhour']);
881 unset($_POST[
'date_endmin']);
882 unset($_POST[
'date_endsec']);
883 unset($_POST[
'date_endday']);
884 unset($_POST[
'date_endmonth']);
885 unset($_POST[
'date_endyear']);
890 $outputlangs = $langs;
893 $newlang =
GETPOST(
'lang_id',
'aZ09');
896 $newlang =
$object->thirdparty->default_lang;
898 if (!empty($newlang)) {
900 $outputlangs->setDefaultLang($newlang);
905 $result =
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
920 if ($action ==
'confirm_deleteline' && $confirm ==
'yes' && $usercancreate) {
923 $result =
$object->deleteLine($lineid);
928 $outputlangs = $langs;
931 $newlang =
GETPOST(
'lang_id',
'aZ09');
934 $newlang =
$object->thirdparty->default_lang;
936 if (!empty($newlang)) {
938 $outputlangs->setDefaultLang($newlang);
942 $object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
964 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id);
972 if ($action ==
'confirm_valid' && $confirm ==
'yes' && $usercanvalidate) {
976 $result =
$object->valid($user);
980 $outputlangs = $langs;
983 $newlang =
GETPOST(
'lang_id',
'aZ09');
986 $newlang =
$object->thirdparty->default_lang;
988 if (!empty($newlang)) {
990 $outputlangs->setDefaultLang($newlang);
995 $result =
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
1008 $action =
'confirm_approve';
1018 if (($action ==
'confirm_approve' || $action ==
'confirm_approve2') && $confirm ==
'yes' && $usercanapprove) {
1023 $qualified_for_stock_change = 0;
1025 $qualified_for_stock_change =
$object->hasProductsOrServices(2);
1027 $qualified_for_stock_change =
$object->hasProductsOrServices(1);
1031 if (isModEnabled(
'stock') &&
getDolGlobalString(
'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER') && $qualified_for_stock_change) {
1032 if (!$idwarehouse || $idwarehouse == -1) {
1034 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
"Warehouse")),
null,
'errors');
1040 $result =
$object->approve($user, $idwarehouse, ($action ==
'confirm_approve2' ? 1 : 0));
1043 $outputlangs = $langs;
1046 $newlang =
GETPOST(
'lang_id',
'aZ09');
1049 $newlang =
$object->thirdparty->default_lang;
1051 if (!empty($newlang)) {
1053 $outputlangs->setDefaultLang($newlang);
1055 $object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
1066 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".
$object->id);
1073 if ($action ==
'confirm_refuse' && $confirm ==
'yes' && $usercanapprove) {
1077 $result =
$object->refuse($user);
1079 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".
$object->id);
1087 if ($action ==
'commande') {
1088 $methodecommande =
GETPOSTINT(
'methodecommande');
1092 } elseif ($methodecommande <= 0 && !
getDolGlobalInt(
'SUPPLIER_ORDER_MODE_OPTIONAL')) {
1093 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"OrderMode")),
null,
'errors');
1094 $action =
'createorder';
1098 if ($action ==
'confirm_commande' && $confirm ==
'yes' && $usercanorder) {
1104 $outputlangs = $langs;
1107 $newlang =
GETPOST(
'lang_id',
'aZ09');
1110 $newlang =
$object->thirdparty->default_lang;
1112 if (!empty($newlang)) {
1114 $outputlangs->setDefaultLang($newlang);
1116 $object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
1127 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".
$object->id);
1135 if ($action ==
'confirm_delete' && $confirm ==
'yes' && $usercandelete) {
1138 $errorsOnDelete = array();
1193 if (empty($errOnDelete)) {
1194 $result =
$object->delete($user);
1197 header(
"Location: " . DOL_URL_ROOT .
'/fourn/commande/list.php?restore_lastsearch_values=1');
1210 if ($action ==
'confirm_clone' && $confirm ==
'yes' && $usercancreate) {
1212 if (1 == 0 && !
GETPOST(
'clone_content') && !
GETPOST(
'clone_receivers')) {
1213 setEventMessages($langs->trans(
"NoCloneOptionsSpecified"),
null,
'errors');
1218 $result =
$object->createFromClone($user, $socid);
1220 header(
"Location: ".$_SERVER[
'PHP_SELF'].
'?id='.$result);
1232 if ($action ==
'livraison' && $usercanreceive) {
1243 $langs->load(
"deliveries");
1253 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Delivery")),
null,
'errors');
1264 if ($action ==
'confirm_cancel' && $confirm ==
'yes' && $usercanorder) {
1268 $result =
$object->cancel($user);
1270 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".
$object->id);
1278 include DOL_DOCUMENT_ROOT.
'/core/actions_printing.inc.php';
1281 $triggersendname =
'ORDER_SUPPLIER_SENTBYMAIL';
1282 $autocopy =
'MAIN_MAIL_AUTOCOPY_SUPPLIER_ORDER_TO';
1283 $trackid =
'sord'.$object->id;
1284 include DOL_DOCUMENT_ROOT.
'/core/actions_sendmails.inc.php';
1287 $upload_dir =
$conf->fournisseur->commande->dir_output;
1288 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
1291 if ($action ==
'update_extras' && $permissiontoadd) {
1295 $ret = $extrafields->setOptionalsFromPost(
null,
$object,
GETPOST(
'attribute',
'restricthtml'));
1303 $result =
$object->insertExtraFields(
'ORDER_SUPPLIER_MODIFY');
1312 $action =
'edit_extras';
1319 if ($action ==
'add' && $permissiontoadd) {
1321 $selectedLines =
GETPOST(
'toselect',
'array');
1323 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentities(
'Supplier')),
null,
'errors');
1339 $object->delivery_date = $datelivraison;
1341 $object->location_incoterms =
GETPOST(
'location_incoterms',
'alpha');
1342 $object->multicurrency_code =
GETPOST(
'multicurrency_code',
'alpha');
1348 $ret = $extrafields->setOptionalsFromPost(
null,
$object);
1356 if (!empty($origin) && !empty($originid)) {
1357 $element = $subelement = $origin;
1358 $classname = ucfirst($subelement);
1359 if ($origin ==
'propal' || $origin ==
'proposal') {
1360 $element =
'comm/propal';
1361 $subelement =
'propal';
1362 $classname =
'Propal';
1364 if ($origin ==
'order' || $origin ==
'commande') {
1365 $element = $subelement =
'commande';
1366 $classname =
'Commande';
1368 if ($origin ==
'supplier_proposal') {
1369 $classname =
'SupplierProposal';
1370 $element =
'supplier_proposal';
1371 $subelement =
'supplier_proposal';
1375 $object->origin_id = $originid;
1379 $other_linked_objects =
GETPOST(
'other_linked_objects',
'array');
1380 if (!empty($other_linked_objects)) {
1381 $object->linked_objects = array_merge(
$object->linked_objects, $other_linked_objects);
1388 $srcobject =
new $classname($db);
1391 $result = $srcobject->fetch(
$object->origin_id);
1393 $tmpdate = $srcobject->delivery_date;
1394 $object->setDeliveryDate($user, $tmpdate);
1395 $object->set_id_projet($user, $srcobject->fk_project);
1397 $lines = $srcobject->lines;
1398 if (empty($lines) && method_exists($srcobject,
'fetch_lines')) {
1399 $srcobject->fetch_lines();
1400 $lines = $srcobject->lines;
1403 $fk_parent_line = 0;
1404 $num = count($lines);
1406 for ($i = 0; $i < $num; $i++) {
1407 if (empty($lines[$i]->subprice) || $lines[$i]->qty <= 0 || !in_array($lines[$i]->
id, $selectedLines)) {
1411 $label = (!empty($lines[$i]->label) ? $lines[$i]->label :
'');
1412 $desc = (!empty($lines[$i]->desc) ? $lines[$i]->desc :
'');
1413 $product_type = (!empty($lines[$i]->product_type) ? $lines[$i]->product_type : 0);
1416 if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
1417 $fk_parent_line = 0;
1421 if (method_exists($lines[$i],
'fetch_optionals')) {
1422 $lines[$i]->fetch_optionals();
1423 $array_option = $lines[$i]->array_options;
1427 $product_fourn_price_id = 0;
1428 if ($origin ==
"commande") {
1430 $result = $productsupplier->find_min_price_product_fournisseur($lines[$i]->fk_product, $lines[$i]->qty,
$object->socid);
1431 $lines[$i]->subprice = 0;
1433 $ref_supplier = $productsupplier->ref_supplier;
1434 $product_fourn_price_id = $productsupplier->product_fourn_price_id;
1436 foreach ($srcobject->lines as $li) {
1437 $sql =
'SELECT price, unitprice, tva_tx, remise_percent, entity, ref_fourn';
1438 $sql .=
' FROM '.MAIN_DB_PREFIX.
'product_fournisseur_price';
1439 $sql .=
' WHERE fk_product = '.((int) $li->fk_product);
1440 $sql .=
' AND entity IN ('.getEntity(
'product_fournisseur_price').
')';
1441 $sql .=
' AND fk_soc = '.((int)
$object->socid);
1442 $sql .=
' ORDER BY unitprice ASC';
1444 $resql = $db->query($sql);
1446 $num_row = $db->num_rows($resql);
1447 if (empty($num_row)) {
1448 $li->remise_percent = 0;
1450 $obj = $db->fetch_object($resql);
1451 $li->subprice = $obj->unitprice;
1452 $li->remise_percent = $obj->remise_percent;
1461 $ref_supplier = $lines[$i]->ref_fourn;
1462 $product_fourn_price_id = 0;
1465 $tva_tx = $lines[$i]->tva_tx;
1467 if ($origin ==
"commande") {
1469 $soc->fetch($socid);
1470 $tva_tx =
get_default_tva($soc, $mysoc, $lines[$i]->fk_product, $product_fourn_price_id);
1475 $lines[$i]->subprice,
1478 $lines[$i]->localtax1_tx,
1479 $lines[$i]->localtax2_tx,
1480 $lines[$i]->fk_product > 0 ? $lines[$i]->fk_product : 0,
1481 $product_fourn_price_id,
1483 $lines[$i]->remise_percent,
1486 $lines[$i]->product_type,
1492 $lines[$i]->fk_unit,
1495 !empty($lines[$i]->id) ? $lines[$i]->id : $lines[$i]->rowid,
1497 $lines[$i]->special_code
1507 if ($result > 0 && $lines[$i]->product_type == 9) {
1508 $fk_parent_line = $result;
1516 $parameters = array(
'objFrom' => $srcobject);
1517 $reshook = $hookmanager->executeHooks(
'createFrom', $parameters,
$object, $action);
1541 $langs->load(
"errors");
1546 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".urlencode((
string) ($id)));
1553 if ($action ==
'addcontact' && $permissiontoadd) {
1557 $result =
$object->add_contact($contactid, $typeid,
GETPOST(
"source",
'aZ09'));
1561 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".
$object->id);
1564 if (
$object->error ==
'DB_ERROR_RECORD_ALREADY_EXISTS') {
1565 $langs->load(
"errors");
1566 setEventMessages($langs->trans(
"ErrorThisContactIsAlreadyDefinedAsThisType"),
null,
'errors');
1571 } elseif ($action ==
'swapstatut' &&
$object->id > 0 && $permissiontoadd) {
1574 } elseif ($action ==
'deletecontact' &&
$object->id > 0 && $permissiontoadd) {
1579 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".
$object->id);
1593$form =
new Form($db);
1596$productstatic =
new Product($db);
1597if (isModEnabled(
'project')) {
1601$title =
$object->ref.
" - ".$langs->trans(
'Card');
1602if ($action ==
'create') {
1603 $title = $langs->trans(
"NewOrderSupplier");
1605$help_url =
'EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores';
1606llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-supplier-order page-card');
1610if ($action ==
'create') {
1611 print
load_fiche_titre($langs->trans(
'NewOrderSupplier'),
'',
'supplier_order');
1615 $currency_code =
$conf->currency;
1622 $societe->fetch($socid);
1625 if (!empty($origin) && !empty($originid)) {
1627 $element = $subelement = $origin;
1628 $classname = ucfirst($subelement);
1630 if (preg_match(
'/^([^_]+)_([^_]+)/i', $origin, $regs)) {
1631 $element = $regs[1];
1632 $subelement = $regs[2];
1635 if ($origin ==
'propal' || $origin ==
'proposal') {
1636 $classname =
'Propal';
1637 $element =
'comm/propal';
1638 $subelement =
'propal';
1640 if ($origin ==
'order' || $origin ==
'commande') {
1641 $classname =
'Commande';
1642 $element = $subelement =
'commande';
1644 if ($origin ==
'supplier_proposal') {
1645 $classname =
'SupplierProposal';
1646 $element =
'supplier_proposal';
1647 $subelement =
'supplier_proposal';
1653 $objectsrc =
new $classname($db);
1654 $objectsrc->fetch($originid);
1655 if (empty($objectsrc->lines) && method_exists($objectsrc,
'fetch_lines')) {
1656 $objectsrc->fetch_lines();
1658 $objectsrc->fetch_thirdparty();
1661 $objectsrc->fetch_optionals();
1662 $object->array_options = $objectsrc->array_options;
1664 $projectid = (!empty($objectsrc->fk_project) ? $objectsrc->fk_project :
'');
1665 $ref_client = (!empty($objectsrc->ref_client) ? $objectsrc->ref_client :
'');
1667 if ($origin ==
"commande") {
1668 $cond_reglement_id = 0;
1669 $mode_reglement_id = 0;
1670 $datelivraison =
'';
1671 $objectsrc->note_private =
'';
1672 $objectsrc->note_public =
'';
1673 if ($societe =
$object->thirdparty) {
1674 $cond_reglement_id = $societe->cond_reglement_supplier_id;
1675 $mode_reglement_id = $societe->mode_reglement_supplier_id;
1676 if (isModEnabled(
"multicurrency")) {
1677 $currency_code = $societe->multicurrency_code;
1679 $currency_tx = $societe->multicurrency_tx;
1684 $soc = $objectsrc->thirdparty;
1686 $cond_reglement_id = (!empty($objectsrc->cond_reglement_id) ? $objectsrc->cond_reglement_id : (!empty($soc->cond_reglement_id) ? $soc->cond_reglement_id : 0));
1687 $mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0));
1688 $fk_account = (!empty($objectsrc->fk_account) ? $objectsrc->fk_account : (!empty($soc->fk_account) ? $soc->fk_account : 0));
1689 $availability_id = (!empty($objectsrc->availability_id) ? $objectsrc->availability_id : (!empty($soc->availability_id) ? $soc->availability_id : 0));
1690 $shipping_method_id = (!empty($objectsrc->shipping_method_id) ? $objectsrc->shipping_method_id : (!empty($soc->shipping_method_id) ? $soc->shipping_method_id : 0));
1691 $demand_reason_id = (!empty($objectsrc->demand_reason_id) ? $objectsrc->demand_reason_id : (!empty($soc->demand_reason_id) ? $soc->demand_reason_id : 0));
1696 $datelivraison = (!empty($objectsrc->delivery_date) ? $objectsrc->delivery_date :
'');
1698 if (isModEnabled(
"multicurrency")) {
1699 if (!empty($objectsrc->multicurrency_code)) {
1700 $currency_code = $objectsrc->multicurrency_code;
1702 if (
getDolGlobalString(
'MULTICURRENCY_USE_ORIGIN_TX') && !empty($objectsrc->multicurrency_tx)) {
1703 $currency_tx = $objectsrc->multicurrency_tx;
1707 $note_private =
$object->getDefaultCreateValueFor(
'note_private', (!empty($objectsrc->note_private) ? $objectsrc->note_private : null));
1708 $note_public =
$object->getDefaultCreateValueFor(
'note_public', (!empty($objectsrc->note_public) ? $objectsrc->note_public : null));
1711 $srccontactslist = $objectsrc->liste_contact(-1,
'external', 1);
1714 $cond_reglement_id = !empty($societe->cond_reglement_supplier_id) ? $societe->cond_reglement_supplier_id : 0;
1715 $mode_reglement_id = !empty($societe->mode_reglement_supplier_id) ? $societe->mode_reglement_supplier_id : 0;
1717 if (isModEnabled(
"multicurrency") && !empty($societe->multicurrency_code)) {
1718 $currency_code = $societe->multicurrency_code;
1721 $note_private =
$object->getDefaultCreateValueFor(
'note_private');
1722 $note_public =
$object->getDefaultCreateValueFor(
'note_public');
1726 if (empty($cond_reglement_id) &&
getDolGlobalString(
'SUPPLIER_ORDER_DEFAULT_PAYMENT_TERM_ID')) {
1729 if (empty($mode_reglement_id) &&
getDolGlobalString(
'SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID')) {
1733 print
'<form name="add" action="'.$_SERVER[
"PHP_SELF"].
'" method="post">';
1734 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1735 print
'<input type="hidden" name="action" value="add">';
1736 print
'<input type="hidden" name="remise_percent" value="'.(empty($soc->remise_supplier_percent) ?
'' : $soc->remise_supplier_percent).
'">';
1737 print
'<input type="hidden" name="origin" value="'.$origin.
'">';
1738 print
'<input type="hidden" name="originid" value="'.$originid.
'">';
1740 print
'<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
1742 if ($backtopageforcancel) {
1743 print
'<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.
'">';
1746 if (!empty($currency_tx)) {
1747 print
'<input type="hidden" name="originmulticurrency_tx" value="'.$currency_tx.
'">';
1753 $parameters = array();
1755 $reshook = $hookmanager->executeHooks(
'tabContentCreateSupplierOrder', $parameters,
$object, $action);
1756 if (empty($reshook)) {
1757 print
'<table class="border centpercent">';
1760 print
'<tr><td class="titlefieldcreate">'.$langs->trans(
'Ref').
'</td><td>'.$langs->trans(
'Draft').
'</td></tr>';
1763 print
'<tr><td class="fieldrequired">'.$langs->trans(
'Supplier').
'</td>';
1766 if (!empty($societe->id) && $societe->id > 0) {
1767 print $societe->getNomUrl(1,
'supplier');
1768 print
'<input type="hidden" name="socid" value="'.$societe->id.
'">';
1770 $filter =
'((s.fournisseur:=:1) AND (s.status:=:1))';
1771 print
img_picto(
'',
'company',
'class="pictofixedwidth"').$form->select_company((empty($socid) ?
'' : $socid),
'socid', $filter,
'SelectThirdParty', 1, 0, array(), 0,
'minwidth175 maxwidth500 widthcentpercentminusxx');
1775 $(document).ready(function() {
1776 $("#socid").change(function() {
1777 console.log("We have changed the company - Reload page");
1779 $("input[name=action]").val("create");
1780 $("form[name=add]").submit();
1785 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>';
1789 if (!empty($societe->id) && $societe->id > 0) {
1791 print
'<tr><td>'.$langs->trans(
'Discounts').
'</td><td>';
1793 $absolute_discount = $societe->getAvailableDiscounts(
null,
'', 0, 1);
1795 $thirdparty = $societe;
1797 $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?socid='.$thirdparty->id.
'&action='.$action.
'&origin='.
GETPOST(
'origin').
'&originid='.
GETPOST(
'originid'));
1798 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
1804 print
'<tr><td>'.$langs->trans(
'RefSupplier').
'</td><td><input name="refsupplier" type="text"></td>';
1808 print
'<tr><td class="nowrap">'.$langs->trans(
'PaymentConditionsShort').
'</td><td>';
1809 print
img_picto(
'',
'payment',
'class="pictofixedwidth"');
1810 print $form->getSelectConditionsPaiements((GETPOSTISSET(
'cond_reglement_id') &&
GETPOST(
'cond_reglement_id') != 0) ?
GETPOST(
'cond_reglement_id') : $cond_reglement_id,
'cond_reglement_id', -1, 1);
1814 print
'<tr><td>'.$langs->trans(
'PaymentMode').
'</td><td>';
1815 print
img_picto(
'',
'bank',
'class="pictofixedwidth"');
1816 $form->select_types_paiements((GETPOSTISSET(
'mode_reglement_id') &&
GETPOSTINT(
'mode_reglement_id') != 0) ?
GETPOST(
'mode_reglement_id') : $mode_reglement_id,
'mode_reglement_id');
1821 print $langs->trans(
'DateDeliveryPlanned');
1828 print
img_picto(
'',
'action',
'class="pictofixedwidth"');
1830 print $form->selectDate($datelivraison ? $datelivraison : -1,
'liv_', $usehourmin, $usehourmin, 0,
"set");
1835 if (
getDolGlobalString(
'BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER') && isModEnabled(
"bank")) {
1836 $langs->load(
"bank");
1837 print
'<tr><td>'.$langs->trans(
'BankAccount').
'</td><td>';
1838 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
1839 $form->select_comptes($fk_account,
'fk_account', 0,
'', 1);
1844 if (isModEnabled(
'project')) {
1847 $langs->load(
'projects');
1848 print
'<tr><td>'.$langs->trans(
'Project').
'</td><td>';
1849 print
img_picto(
'',
'project',
'class="pictofixedwidth"').$formproject->select_projects((!
getDolGlobalString(
'PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS') ? $societe->id : -1), $projectid,
'projectid', 0, 0, 1, 1, 0, 0, 0,
'', 1, 0,
'maxwidth500');
1850 print
' <a href="'.DOL_URL_ROOT.
'/projet/card.php?action=create&status=1'.(!empty($societe->id) ?
'&socid='.$societe->id :
"").
'&backtopage='.urlencode($_SERVER[
"PHP_SELF"].
'?action=create'.(!empty($societe->id) ?
'&socid='.$societe->id :
"")).
'"><span class="fa fa-plus-circle valignmiddle" title="'.$langs->trans(
"AddProject").
'"></span></a>';
1855 if (isModEnabled(
'incoterm')) {
1856 $fkincoterms = (!empty(
$object->fk_incoterms) ?
$object->fk_incoterms : ($socid > 0 ? $societe->fk_incoterms :
''));
1857 $locincoterms = (!empty(
$object->location_incoterms) ?
$object->location_incoterms : ($socid > 0 ? $societe->location_incoterms :
''));
1859 print
'<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans(
"IncotermLabel"),
$object->label_incoterms, 1).
'</label></td>';
1860 print
'<td class="maxwidthonsmartphone">';
1861 print
img_picto(
'',
'incoterm',
'class="pictofixedwidth"');
1862 print $form->select_incoterms($fkincoterms, $locincoterms);
1867 if (isModEnabled(
"multicurrency")) {
1869 print
'<td>'.$form->editfieldkey(
'Currency',
'multicurrency_code',
'',
$object, 0).
'</td>';
1870 print
'<td class="maxwidthonsmartphone">';
1871 print
img_picto(
'',
'currency',
'class="pictofixedwidth"');
1872 print $form->selectMultiCurrency($currency_code,
'multicurrency_code');
1876 print
'<tr><td>'.$langs->trans(
'NotePublic').
'</td>';
1878 $doleditor =
new DolEditor(
'note_public', isset($note_public) ? $note_public :
GETPOST(
'note_public',
'restricthtml'),
'', 80,
'dolibarr_notes',
'In', false, false, !
getDolGlobalString(
'FCKEDITOR_ENABLE_NOTE_PUBLIC') ? 0 : 1, ROWS_3,
'90%');
1879 print $doleditor->Create(1);
1884 print
'<tr><td>'.$langs->trans(
'NotePrivate').
'</td>';
1886 $doleditor =
new DolEditor(
'note_private', isset($note_private) ? $note_private :
GETPOST(
'note_private',
'restricthtml'),
'', 80,
'dolibarr_notes',
'In', false, false, !
getDolGlobalString(
'FCKEDITOR_ENABLE_NOTE_PRIVATE') ? 0 : 1, ROWS_3,
'90%');
1887 print $doleditor->Create(1);
1892 if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
1893 print
"\n<!-- ".$classname.
" info -->";
1895 print
'<input type="hidden" name="amount" value="'.$objectsrc->total_ht.
'">'.
"\n";
1896 print
'<input type="hidden" name="total" value="'.$objectsrc->total_ttc.
'">'.
"\n";
1897 print
'<input type="hidden" name="tva" value="'.$objectsrc->total_tva.
'">'.
"\n";
1898 print
'<input type="hidden" name="origin" value="'.$objectsrc->element.
'">';
1899 print
'<input type="hidden" name="originid" value="'.$objectsrc->id.
'">';
1901 $newclassname = $classname;
1902 print
'<tr><td>'.$langs->trans($newclassname).
'</td><td>'.$objectsrc->getNomUrl(1,
'supplier').
'</td></tr>';
1903 print
'<tr><td>'.$langs->trans(
'AmountHT').
'</td><td>'.
price($objectsrc->total_ht).
'</td></tr>';
1904 print
'<tr><td>'.$langs->trans(
'AmountVAT').
'</td><td>'.
price($objectsrc->total_tva).
"</td></tr>";
1905 if ($mysoc->localtax1_assuj ==
"1" || $objectsrc->total_localtax1 != 0) {
1906 print
'<tr><td>'.$langs->transcountry(
"AmountLT1", $mysoc->country_code).
'</td><td>'.
price($objectsrc->total_localtax1).
"</td></tr>";
1909 if ($mysoc->localtax2_assuj ==
"1" || $objectsrc->total_localtax2 != 0) {
1910 print
'<tr><td>'.$langs->transcountry(
"AmountLT2", $mysoc->country_code).
'</td><td>'.
price($objectsrc->total_localtax2).
"</td></tr>";
1913 print
'<tr><td>'.$langs->trans(
'AmountTTC').
'</td><td>'.
price($objectsrc->total_ttc).
"</td></tr>";
1915 if (isModEnabled(
"multicurrency")) {
1916 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountHT').
'</td><td>'.
price($objectsrc->multicurrency_total_ht).
'</td></tr>';
1917 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountVAT').
'</td><td>'.
price($objectsrc->multicurrency_total_tva).
'</td></tr>';
1918 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountTTC').
'</td><td>'.
price($objectsrc->multicurrency_total_ttc).
'</td></tr>';
1923 $parameters = array();
1924 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters,
$object, $action);
1925 print $hookmanager->resPrint;
1927 if (empty($reshook)) {
1928 print
$object->showOptionals($extrafields,
'create');
1936 print $form->buttonsSaveCancel(
"CreateDraft");
1939 if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
1940 $title = $langs->trans(
'ProductsAndServices');
1943 print
'<div class="div-table-responsive-no-min">';
1944 print
'<table class="noborder centpercent">';
1946 $selectedLines = array();
1948 $objectsrc->printOriginLinesList(
'', $selectedLines);
1954} elseif (!empty(
$object->id)) {
1956 $result =
$object->fetch($id, $ref);
1959 $societe =
$object->thirdparty;
1961 $author =
new User($db);
1962 $author->fetch(
$object->user_author_id);
1966 $title = $langs->trans(
"SupplierOrder");
1973 if ($action ==
'delete') {
1974 $arrayAjouts = array();
2005 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.((
int)
$object->id), $langs->trans(
'DeleteOrder'), $langs->trans(
'ConfirmDeleteOrder'),
'confirm_delete', $arrayAjouts, 0, 2, $heightModal, $widthModal);
2009 if ($action ==
'clone') {
2010 $filter =
'(s.fournisseur:=:1)';
2012 $formquestion = array(
2013 array(
'type' =>
'other',
'name' =>
'socid',
'label' => $langs->trans(
"SelectThirdParty"),
'value' => $form->select_company(
GETPOSTINT(
'socid'),
'socid', $filter))
2016 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id, $langs->trans(
'ToClone'), $langs->trans(
'ConfirmCloneOrder',
$object->ref),
'confirm_clone', $formquestion,
'yes', 1);
2020 if ($action ==
'valid') {
2024 if (preg_match(
'/^[\(]?PROV/i',
$object->ref) || empty(
$object->ref)) {
2034 $text = $langs->trans(
'ConfirmValidateOrder', $newref);
2035 if (isModEnabled(
'notification')) {
2036 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
2037 $notify =
new Notify($db);
2039 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_VALIDATE',
$object->socid,
$object);
2042 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id, $langs->trans(
'ValidateOrder'), $text,
'confirm_valid',
'', 0, 1);
2047 if ($action ==
'approve' || $action ==
'approve2') {
2048 $qualified_for_stock_change = 0;
2050 $qualified_for_stock_change =
$object->hasProductsOrServices(2);
2052 $qualified_for_stock_change =
$object->hasProductsOrServices(1);
2055 $formquestion = array();
2056 if (isModEnabled(
'stock') &&
getDolGlobalString(
'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER') && $qualified_for_stock_change) {
2057 $langs->load(
"stocks");
2058 require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
2061 if (
$conf->browser->name ==
'ie') {
2064 $formquestion = array(
2068 array(
'type' =>
'other',
'name' =>
'idwarehouse',
'label' => $langs->trans(
"SelectWarehouseForStockIncrease"),
'value' => $formproduct->selectWarehouses(
GETPOSTINT(
'idwarehouse'),
'idwarehouse',
'', 1, 0, 0,
'', 0, $forcecombo))
2071 $text = $langs->trans(
"ConfirmApproveThisOrder",
$object->ref);
2072 if (isModEnabled(
'notification')) {
2073 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
2074 $notify =
new Notify($db);
2076 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_APPROVE',
$object->socid,
$object);
2079 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=".
$object->id, $langs->trans(
"ApproveThisOrder"), $text,
"confirm_".$action, $formquestion, 1, 1, 240);
2083 if ($action ==
'refuse') {
2084 $formquestion = array(
2087 'name' =>
'refuse_note',
2088 'label' => $langs->trans(
"Reason"),
2090 'morecss' =>
'minwidth300'
2093 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=$object->id", $langs->trans(
"DenyingThisOrder"), $langs->trans(
"ConfirmDenyingThisOrder",
$object->ref),
"confirm_refuse", $formquestion, 0, 1);
2097 if ($action ==
'cancel') {
2098 $formquestion = array(
2101 'name' =>
'cancel_note',
2102 'label' => $langs->trans(
"Reason"),
2104 'morecss' =>
'minwidth300'
2107 if (isModEnabled(
'notification')) {
2108 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
2109 $notify =
new Notify($db);
2112 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_CANCEL',
$object->socid,
$object);
2114 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=$object->id", $langs->trans(
"Cancel"), $langs->trans(
"ConfirmCancelThisOrder",
$object->ref),
"confirm_cancel", $formquestion, 0, 1);
2118 if ($action ==
'commande') {
2120 if (isModEnabled(
'notification')) {
2121 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
2122 $notify =
new Notify($db);
2125 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_SUBMIT',
$object->socid,
$object);
2127 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=".
$object->id.
"&datecommande=".$date_com.
"&methode=".
GETPOST(
"methodecommande").
"&comment=".urlencode(
GETPOST(
"comment")), $langs->trans(
"MakeOrder"), $langs->trans(
"ConfirmMakeOrder",
dol_print_date($date_com,
'day')),
"confirm_commande",
'', 0, 2);
2131 if ($action ==
'ask_deleteline') {
2132 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&lineid='.$lineid, $langs->trans(
'DeleteProductLine'), $langs->trans(
'ConfirmDeleteProductLine'),
'confirm_deleteline',
'', 0, 1);
2135 $parameters = array(
'formConfirm' => $formconfirm,
'lineid' => $lineid);
2136 $reshook = $hookmanager->executeHooks(
'formConfirm', $parameters,
$object, $action);
2137 if (empty($reshook)) {
2138 $formconfirm .= $hookmanager->resPrint;
2139 } elseif ($reshook > 0) {
2140 $formconfirm = $hookmanager->resPrint;
2149 $linkback =
'<a href="'.DOL_URL_ROOT.
'/fourn/commande/list.php?restore_lastsearch_values=1'.(!empty($socid) ?
'&socid='.$socid :
'').
'">'.$langs->trans(
"BackToList").
'</a>';
2151 $morehtmlref =
'<div class="refidno">';
2153 $morehtmlref .= $form->editfieldkey(
"RefSupplier",
'ref_supplier',
$object->ref_supplier,
$object, $usercancreate,
'string',
'', 0, 1);
2154 $morehtmlref .= $form->editfieldval(
"RefSupplier",
'ref_supplier',
$object->ref_supplier,
$object, $usercancreate,
'string'.(isset(
$conf->global->THIRDPARTY_REF_INPUT_SIZE) ?
':' .
getDolGlobalString(
'THIRDPARTY_REF_INPUT_SIZE') :
''),
'', null, null,
'', 1);
2156 $morehtmlref .=
'<br>';
2157 if (
getDolGlobalString(
'MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER') && !empty($usercancreate) && $action ==
'edit_thirdparty') {
2158 $morehtmlref .=
'<form method="post" action="'.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id.
'">';
2159 $morehtmlref .=
'<input type="hidden" name="action" value="set_thirdparty">';
2160 $morehtmlref .=
'<input type="hidden" name="token" value="'.newToken().
'">';
2161 $filter =
'(s.fournisseur:=:1)';
2162 $morehtmlref .= $form->select_company(
$object->thirdparty->id,
'new_socid', $filter,
'', 0, 0, array(), 0,
'minwidth300');
2163 $morehtmlref .=
'<input type="submit" class="button valignmiddle" value="'.$langs->trans(
"Modify").
'">';
2164 $morehtmlref .=
'</form>';
2166 if (!
getDolGlobalString(
'MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER') || $action !=
'edit_thirdparty') {
2168 $morehtmlref .=
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=edit_thirdparty&token='.
newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetThirdParty')).
'</a>';
2170 $morehtmlref .=
$object->thirdparty->getNomUrl(1,
'supplier');
2172 $morehtmlref .=
' (<a href="'.DOL_URL_ROOT.
'/fourn/commande/list.php?socid='.
$object->thirdparty->id.
'&search_company='.urlencode(
$object->thirdparty->name).
'">'.$langs->trans(
"OtherOrders").
'</a>)';
2177 if (isModEnabled(
'project')) {
2178 $langs->load(
"projects");
2179 $morehtmlref .=
'<br>';
2180 if ($permissiontoadd) {
2181 $morehtmlref .=
img_picto($langs->trans(
"Project"),
'project',
'class="pictofixedwidth"');
2182 if ($action !=
'classify' && $caneditproject) {
2183 $morehtmlref .=
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=classify&token='.
newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetProject')).
'</a> ';
2185 $morehtmlref .= $form->form_project($_SERVER[
'PHP_SELF'].
'?id='.
$object->id, (!
getDolGlobalString(
'PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS') ?
$object->socid : -1),
$object->fk_project, ($action ==
'classify' ?
'projectid' :
'none'), 1, 0, 0, 1,
'',
'maxwidth300');
2187 if (!empty(
$object->fk_project)) {
2189 $proj->fetch(
$object->fk_project);
2190 $morehtmlref .= $proj->getNomUrl(1);
2192 $morehtmlref .=
'<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).
'</span>';
2197 $morehtmlref .=
'</div>';
2200 dol_banner_tab(
$object,
'ref', $linkback, 1,
'ref',
'ref', $morehtmlref);
2203 $parameters = array();
2205 $reshook = $hookmanager->executeHooks(
'tabContentViewSupplierOrder', $parameters,
$object, $action);
2206 if (empty($reshook)) {
2207 print
'<div class="fichecenter">';
2208 print
'<div class="fichehalfleft">';
2209 print
'<div class="underbanner clearboth"></div>';
2211 print
'<table class="border tableforfield centpercent">';
2214 if (
$object->methode_commande_id > 0) {
2219 print
'<tr><td class="titlefield">'.$langs->trans(
"Date").
'</td><td>';
2222 print
' '.img_picto($langs->trans(
"Late").
' : '.
$object->showDelay(),
"warning");
2226 if (
$object->methode_commande) {
2227 print
'<tr><td>'.$langs->trans(
"Method").
'</td><td>'.
$object->getInputMethod().
'</td></tr>';
2232 print
'<tr><td class="titlefield">'.$langs->trans(
"AuthorRequest").
'</td>';
2233 print
'<td>'.$author->getNomUrl(-1,
'', 0, 0, 0).
'</td>';
2238 $filterabsolutediscount =
"fk_invoice_supplier_source IS NULL";
2239 $filtercreditnote =
"fk_invoice_supplier_source IS NOT NULL";
2241 $filterabsolutediscount =
"fk_invoice_supplier_source IS NULL OR (description LIKE '(DEPOSIT)%' AND description NOT LIKE '(EXCESS PAID)%')";
2242 $filtercreditnote =
"fk_invoice_supplier_source IS NOT NULL AND (description NOT LIKE '(DEPOSIT)%' OR description LIKE '(EXCESS PAID)%')";
2245 $absolute_discount = $societe->getAvailableDiscounts(
null, $filterabsolutediscount, 0, 1);
2246 $absolute_creditnote = $societe->getAvailableDiscounts(
null, $filtercreditnote, 0, 1);
2247 $absolute_discount =
price2num($absolute_discount,
'MT');
2248 $absolute_creditnote =
price2num($absolute_creditnote,
'MT');
2250 print
'<tr><td class="titlefield">'.$langs->trans(
'Discounts').
'</td><td>';
2252 $thirdparty = $societe;
2254 $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?id='.
$object->id);
2255 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
2260 $langs->load(
'bills');
2261 print
'<tr><td class="nowrap">';
2262 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
2263 print $langs->trans(
'PaymentConditions');
2265 if ($action !=
'editconditions' && $permissiontoadd) {
2266 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editconditions&token='.
newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->trans(
'SetConditions'), 1).
'</a></td>';
2268 print
'</tr></table>';
2270 if ($action ==
'editconditions') {
2271 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->cond_reglement_id,
'cond_reglement_id');
2273 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->cond_reglement_id,
'none');
2279 $langs->load(
'bills');
2280 print
'<tr><td class="nowrap">';
2281 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
2282 print $langs->trans(
'PaymentMode');
2284 if ($action !=
'editmode' && $permissiontoadd) {
2285 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editmode&token='.
newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->trans(
'SetMode'), 1).
'</a></td>';
2287 print
'</tr></table>';
2289 if ($action ==
'editmode') {
2290 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->mode_reglement_id,
'mode_reglement_id',
'DBIT', 1, 1);
2292 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->mode_reglement_id,
'none');
2297 if (
getDolGlobalString(
'BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER') && isModEnabled(
"bank")) {
2298 print
'<tr><td class="nowrap">';
2299 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
2300 print $langs->trans(
'BankAccount');
2302 if ($action !=
'editbankaccount' && $permissiontoadd) {
2303 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>';
2305 print
'</tr></table>';
2307 if ($action ==
'editbankaccount') {
2308 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->fk_account,
'fk_account', 1);
2310 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->fk_account,
'none');
2318 print
'<td>'.$langs->trans(
'NbDaysToDelivery').
' '.
img_picto($langs->trans(
'DescNbDaysToDelivery'),
'info',
'style="cursor:help"').
'</td>';
2319 print
'<td>'.$object->getMaxDeliveryTimeDay($langs).
'</td>';
2324 print
'<table class="nobordernopadding centpercent"><tr><td>';
2325 print $langs->trans(
'DateDeliveryPlanned');
2327 if ($action !=
'editdate_livraison') {
2328 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editdate_livraison&token='.
newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->trans(
'SetDeliveryDate'), 1).
'</a></td>';
2330 print
'</tr></table>';
2332 if ($action ==
'editdate_livraison') {
2333 print
'<form name="setdate_livraison" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
2334 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2335 print
'<input type="hidden" name="action" value="setdate_livraison">';
2340 print $form->selectDate(
$object->delivery_date ?
$object->delivery_date : -1,
'liv_', $usehourmin, $usehourmin, 0,
"setdate_livraison");
2341 print
'<input type="submit" class="button button-edit smallpaddingimp valign middle" value="'.$langs->trans(
'Modify').
'">';
2344 $usehourmin =
'day';
2346 $usehourmin =
'dayhour';
2349 if (
$object->hasDelay() && !empty(
$object->delivery_date) && (
$object->statut == $object::STATUS_ORDERSENT ||
$object->statut == $object::STATUS_RECEIVED_PARTIALLY)) {
2350 print
' '.img_picto($langs->trans(
"Late").
' : '.
$object->showDelay(),
"warning");
2356 if (isModEnabled(
'incoterm')) {
2358 print
'<table class="nobordernopadding centpercent"><tr><td>';
2359 print $langs->trans(
'IncotermLabel');
2360 print
'<td><td class="right">';
2361 if ($usercancreate) {
2362 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/fourn/commande/card.php?id='.
$object->id.
'&action=editincoterm&token='.
newToken().
'">'.
img_edit().
'</a>';
2366 print
'</td></tr></table>';
2369 if ($action !=
'editincoterm') {
2372 print $form->select_incoterms((!empty(
$object->fk_incoterms) ?
$object->fk_incoterms :
''), (!empty(
$object->location_incoterms) ?
$object->location_incoterms :
''), $_SERVER[
'PHP_SELF'].
'?id='.
$object->id);
2378 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
2383 print
'<div class="fichehalfright">';
2384 print
'<div class="underbanner clearboth"></div>';
2386 print
'<table class="border tableforfield centpercent">';
2388 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_currency_amount.tpl.php';
2392 print
'<td class="titlefieldmiddle">' . $langs->trans(
'AmountHT') .
'</td>';
2393 print
'<td class="nowrap amountcard right">' .
price(
$object->total_ht, 0, $langs, 0, -1, -1,
$conf->currency) .
'</td>';
2394 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code !=
$conf->currency)) {
2396 print
'<td class="nowrap amountcard right">' .
price(
$object->multicurrency_total_ht, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2402 print
'<td class="titlefieldmiddle">' . $langs->trans(
'AmountVAT') .
'</td>';
2403 print
'<td class="nowrap amountcard right">' .
price(
$object->total_tva, 0, $langs, 0, -1, -1,
$conf->currency) .
'</td>';
2404 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code !=
$conf->currency)) {
2406 print
'<td class="nowrap amountcard right">' .
price(
$object->multicurrency_total_tva, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2411 if ($mysoc->localtax1_assuj ==
"1" ||
$object->total_localtax1 != 0) {
2413 print
'<td class="titlefieldmiddle">' . $langs->transcountry(
"AmountLT1", $mysoc->country_code) .
'</td>';
2414 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax1, 0, $langs, 0, -1, -1,
$conf->currency) .
'</td>';
2415 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code !=
$conf->currency)) {
2416 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax1, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2420 if ($mysoc->localtax2_assuj ==
"1" ||
$object->total_localtax2 != 0) {
2422 print
'<td>' . $langs->transcountry(
"AmountLT2", $mysoc->country_code) .
'</td>';
2423 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax2, 0, $langs, 0, -1, -1,
$conf->currency) .
'</td>';
2424 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code !=
$conf->currency)) {
2425 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax2, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2433 $alert =
' ' .
img_warning($langs->trans(
'OrderMinAmount') .
': ' .
price(
$object->thirdparty->supplier_order_min_amount));
2438 print
'<td>' . $langs->trans(
'AmountTTC') .
'</td>';
2439 print
'<td class="nowrap amountcard right">' .
price(
$object->total_ttc, 0, $langs, 0, -1, -1,
$conf->currency) . $alert .
'</td>';
2440 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code !=
$conf->currency)) {
2442 print
'<td class="nowrap amountcard right">' .
price(
$object->multicurrency_total_ttc, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2457 print
'<div class="clearboth"></div><br>';
2460 $blocname =
'contacts';
2461 $title = $langs->trans(
'ContactsAddresses');
2462 include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
2466 $blocname =
'notes';
2467 $title = $langs->trans(
'Notes');
2468 include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
2477 print
' <form name="addproduct" id="addproduct" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.(($action !=
'editline') ?
'' :
'#line_'.
GETPOSTINT(
'lineid')).
'" method="POST">
2478 <input type="hidden" name="token" value="'.
newToken().
'">
2479 <input type="hidden" name="action" value="' . (($action !=
'editline') ?
'addline' :
'updateline').
'">
2480 <input type="hidden" name="mode" value="">
2481 <input type="hidden" name="page_y" value="">
2482 <input type="hidden" name="id" value="'.
$object->id.
'">
2483 <input type="hidden" name="socid" value="'.$societe->id.
'">
2486 if (!empty(
$conf->use_javascript_ajax) &&
$object->statut == 0) {
2487 include DOL_DOCUMENT_ROOT.
'/core/tpl/ajaxrow.tpl.php';
2490 print
'<div class="div-table-responsive-no-min">';
2491 print
'<table id="tablelines" class="noborder noshadow centpercent">';
2494 global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax;
2497 $inputalsopricewithtax = 1;
2498 $senderissupplier = 2;
2500 $senderissupplier =
getDolGlobalInt(
'SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY');
2505 $object->printObjectLines($action,
$object->thirdparty, $mysoc, $lineid, 1);
2512 if ($action !=
'editline') {
2515 $parameters = array();
2516 $reshook = $hookmanager->executeHooks(
'formAddObjectLine', $parameters,
$object, $action);
2520 if (empty($reshook)) {
2521 $object->formAddObjectLine(1, $societe, $mysoc);
2536 if ($user->socid == 0 && $action !=
'delete') {
2537 if ($action !=
'createorder' && $action !=
'presend' && $action !=
'editline') {
2538 print
'<div class="tabsAction">';
2540 $parameters = array();
2541 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters,
$object, $action);
2543 if (empty($reshook)) {
2547 if (
$object->statut == 0 && $num > 0) {
2548 if ($usercanvalidate) {
2549 $tmpbuttonlabel = $langs->trans(
'Validate');
2551 $tmpbuttonlabel = $langs->trans(
"ValidateAndApprove");
2554 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=valid&token='.
newToken().
'">';
2555 print $tmpbuttonlabel;
2567 if ($usercanorder) {
2568 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Modify").
'</a>';
2574 if ($usercanapprove) {
2576 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"FirstApprovalAlreadyDone")).
'">'.$langs->trans(
"ApproveOrder").
'</a>';
2578 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=approve">'.$langs->trans(
"ApproveOrder").
'</a>';
2581 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"ApproveOrder").
'</a>';
2588 if ($usercanapprovesecond) {
2589 if (!empty(
$object->user_approve_id2)) {
2590 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"SecondApprovalAlreadyDone")).
'">'.$langs->trans(
"Approve2Order").
'</a>';
2592 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=approve2">'.$langs->trans(
"Approve2Order").
'</a>';
2595 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"Approve2Order").
'</a>';
2602 if ($usercanapprove || $usercanapprovesecond) {
2603 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=refuse">'.$langs->trans(
"RefuseOrder").
'</a>';
2605 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"RefuseOrder").
'</a>';
2610 if (empty($user->socid)) {
2612 if ($usercanorder) {
2613 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=presend&mode=init#formmailbeforetitle">'.$langs->trans(
'SendMail').
'</a>';
2621 if (!$buttonshown && $usercanapprove) {
2624 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Disapprove").
'</a>';
2628 if (!$buttonshown && $usercanapprovesecond &&
getDolGlobalString(
'SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED')) {
2631 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Disapprove").
'</a>';
2635 if (in_array(
$object->statut, array(3, 4, 5, 6, 7, 9))) {
2636 if ($usercanorder) {
2637 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"ReOpen").
'</a>';
2644 $labelofbutton = $langs->trans(
'ReceiveProducts');
2645 if (isModEnabled(
'reception')) {
2646 $labelofbutton = $langs->trans(
"CreateReception");
2647 if (!empty(
$object->linkedObjects[
'reception'])) {
2648 foreach (
$object->linkedObjects[
'reception'] as $element) {
2649 if ($element->statut >= 0) {
2657 if (in_array(
$object->statut, array(3, 4, 5))) {
2658 if (isModEnabled(
"supplier_order") && $usercanreceive) {
2659 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/fourn/commande/dispatch.php?id='.
$object->id.
'">'.$labelofbutton.
'</a></div>';
2661 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$labelofbutton.
'</a></div>';
2667 if ($usercanorder) {
2668 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=createorder&token='.
newToken().
'#makeorder">'.$langs->trans(
"MakeOrder").
'</a></div>';
2670 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#">'.$langs->trans(
"MakeOrder").
'</a></div>';
2676 if ($usercanreceive) {
2677 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&token='.
newToken().
'&action=classifyreception#classifyreception">'.$langs->trans(
"ClassifyReception").
'</a></div>';
2684 if (isModEnabled(
"supplier_invoice") && (
$object->statut >= 2 &&
$object->statut != 7 &&
$object->billed != 1)) {
2685 if ($user->hasRight(
'fournisseur',
'facture',
'creer') || $user->hasRight(
"supplier_invoice",
"creer")) {
2686 print
'<a class="butAction" href="'.DOL_URL_ROOT.
'/fourn/facture/card.php?action=create&origin='.
$object->element.
'&originid='.
$object->id.
'&socid='.
$object->socid.
'">'.$langs->trans(
"SupplierOrderCreateBill").
'</a>';
2693 if (!isModEnabled(
'invoice')) {
2694 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifybilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
2696 if (!empty(
$object->linkedObjectsIds[
'invoice_supplier']) || (empty(
$object->linkedObjectsIds[
'invoice_supplier']) && !
getDolGlobalInt(
'SUPPLIER_ORDER_DISABLE_CLASSIFY_BILLED_FROM_SUPPLIER_ORDER'))) {
2697 if ($user->hasRight(
'fournisseur',
'facture',
'creer') || $user->hasRight(
"supplier_invoice",
"creer")) {
2698 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifybilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
2701 print
'<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans(
"NeedAtLeastOneInvoice")).
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
2707 if ($usercancreate &&
$object->billed > 0 &&
$object->statut > $object::STATUS_DRAFT) {
2708 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifyunbilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyUnbilled").
'</a>';
2712 if ($usercancreate) {
2713 print
'<a class="butAction" href="'.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id.
'&socid='.
$object->socid.
'&action=clone&token='.
newToken().
'&object=order">'.$langs->trans(
"ToClone").
'</a>';
2718 if ($usercanorder) {
2719 print
'<a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=cancel&token='.
newToken().
'">'.$langs->trans(
"CancelOrder").
'</a>';
2724 if (!empty($usercandelete)) {
2725 if ($hasreception) {
2726 print
'<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans(
"ReceptionExist").
'">'.$langs->trans(
"Delete").
'</a>';
2728 print
'<a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=delete&token='.
newToken().
'">'.$langs->trans(
"Delete").
'</a>';
2738 print
'<!-- form to record supplier order -->'.
"\n";
2739 print
'<form name="commande" id="makeorder" action="card.php?id='.$object->id.
'&action=commande" method="POST">';
2741 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2742 print
'<input type="hidden" name="action" value="commande">';
2744 print
'<table class="noborder centpercent">';
2746 print
'<tr><td class="fieldrequired">'.$langs->trans(
"OrderDate").
'</td><td>';
2748 print $form->selectDate($date_com ?:
'',
'', 0, 0, 0,
"commande", 1, 1);
2752 print
'<tr><td class="fieldrequired">'.$langs->trans(
"OrderMode").
'</td><td>';
2753 $formorder->selectInputMethod(
GETPOST(
'methodecommande'),
"methodecommande", 1);
2756 print
'<tr><td>'.$langs->trans(
"Comment").
'</td><td><input class="quatrevingtpercent" type="text" name="comment" value="'.
GETPOST(
'comment').
'"></td></tr>';
2758 print
'<tr><td class="center" colspan="2">';
2759 print
'<input type="submit" name="makeorder" class="button" value="'.$langs->trans(
"ToOrder").
'">';
2760 print
' ';
2761 print
'<input type="submit" name="cancel" class="button button-cancel" value="'.$langs->trans(
"Cancel").
'">';
2770 if (
GETPOST(
'modelselected')) {
2771 $action =
'presend';
2774 if ($action !=
'createorder' && $action !=
'presend') {
2775 print
'<div class="fichecenter"><div class="fichehalfleft">';
2779 $file =
$conf->fournisseur->dir_output.
'/commande/'.$objref.
'/'.$objref.
'.pdf';
2780 $relativepath = $objref.
'/'.$objref.
'.pdf';
2781 $filedir =
$conf->fournisseur->dir_output.
'/commande/'.$objref;
2782 $urlsource = $_SERVER[
"PHP_SELF"].
"?id=".
$object->id;
2783 $genallowed = $usercanread;
2784 $delallowed = $usercancreate;
2787 print $formfile->showdocuments(
'commande_fournisseur', $objref, $filedir, $urlsource, $genallowed, $delallowed, $modelpdf, 1, 0, 0, 0, 0,
'',
'',
'',
$object->thirdparty->default_lang,
'',
$object);
2788 $somethingshown = $formfile->numoffiles;
2791 $tmparray = $form->showLinkToObjectBlock(
$object, array(), array(
'supplier_order',
'order_supplier'), 1);
2792 $linktoelem = $tmparray[
'linktoelem'];
2793 $htmltoenteralink = $tmparray[
'htmltoenteralink'];
2794 print $htmltoenteralink;
2796 $somethingshown = $form->showLinkedObjectBlock(
$object, $linktoelem);
2798 print
'</div><div class="fichehalfright">';
2800 if ($action ==
'classifyreception') {
2803 print
'<!-- form to record purchase order received -->'.
"\n";
2804 print
'<form id="classifyreception" action="card.php?id='.$object->id.
'" method="post">';
2805 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2806 print
'<input type="hidden" name="action" value="livraison">';
2809 print
'<table class="noborder centpercent">';
2811 print
'<tr><td>'.$langs->trans(
"DeliveryDate").
'</td><td>';
2813 print $form->selectDate($datepreselected,
'', 1, 1, 0,
"commande", 1, 1);
2814 print
"</td></tr>\n";
2816 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Delivery").
"</td><td>\n";
2818 $liv[
''] =
' ';
2819 $liv[
'tot'] = $langs->trans(
"CompleteOrNoMoreReceptionExpected");
2820 $liv[
'par'] = $langs->trans(
"PartialWoman");
2821 $liv[
'nev'] = $langs->trans(
"NeverReceived");
2822 $liv[
'can'] = $langs->trans(
"Canceled");
2824 print $form->selectarray(
"type", $liv);
2827 print
'<tr><td>'.$langs->trans(
"Comment").
'</td><td><input class="quatrevingtpercent" type="text" name="comment"></td></tr>';
2828 print
'<tr><td class="center" colspan="2">';
2829 print
'<input type="submit" name="receive" class="button" value="'.$langs->trans(
"Receive").
'">';
2830 print
' ';
2831 print
'<input type="submit" name="cancel" class="button button-cancel" value="'.$langs->trans(
"Cancel").
'">';
2840 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formactions.class.php';
2842 $somethingshown = $formactions->showactions(
$object,
'order_supplier', $socid, 1,
'listaction'.($genallowed ?
'largetitle' :
''));
2844 print
'</div></div>';
2850 if ($action ==
'webservice' &&
GETPOST(
'mode',
'alpha') !=
"send" && !
GETPOST(
'cancel',
'alpha')) {
2851 $mode =
GETPOST(
'mode',
'alpha');
2852 $ws_url =
$object->thirdparty->webservices_url;
2853 $ws_key =
$object->thirdparty->webservices_key;
2854 $ws_user =
GETPOST(
'ws_user',
'alpha');
2855 $ws_password =
GETPOST(
'ws_password',
'alpha');
2856 $error_occurred =
false;
2859 $ws_ns =
'http://www.dolibarr.org/ns/';
2860 $ws_authentication = array(
2861 'dolibarrkey' => $ws_key,
2862 'sourceapplication' =>
'DolibarrWebServiceClient',
2863 'login' => $ws_user,
2864 'password' => $ws_password,
2871 if (empty($ws_url) || empty($ws_key)) {
2872 setEventMessages($langs->trans(
"ErrorWebServicesFieldsRequired"),
null,
'errors');
2874 $error_occurred =
true;
2875 } elseif ($mode !=
"init" && (empty($ws_user) || empty($ws_password))) {
2880 if ($mode ==
"init") {
2882 print
'<table class="border centpercent">';
2883 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
2884 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2885 print
'<input type="hidden" name="action" value="webservice">';
2886 print
'<input type="hidden" name="mode" value="check">';
2888 if ($error_occurred) {
2889 print
"<br>".$langs->trans(
"ErrorOccurredReviseAndRetry").
"<br>";
2890 print
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
2893 print
'<tr><td>'.$langs->trans(
"WebServiceURL").
'</td><td colspan="3">'.
dol_print_url($ws_url).
'</td></tr>';
2895 print
'<tr><td>'.$langs->trans(
"User").
'</td><td><input class="width100" type="text" name="ws_user"></td></tr>';
2897 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td><input class="width100" type="text" name="ws_password"></td></tr>';
2899 print
'<tr><td class="center" colspan="2">';
2900 print
'<input type="submit" class="button" id="ws_submit" name="ws_submit" value="'.$langs->trans(
"CreateRemoteOrder").
'">';
2901 print
' ';
2903 print
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
2910 } elseif ($mode ==
"check") {
2912 $ws_thirdparty =
'';
2913 $error_occurred =
false;
2916 $soapclient_user =
new nusoap_client($ws_url.
"/webservices/server_user.php");
2917 $soapclient_user->soap_defencoding =
'UTF-8';
2918 $soapclient_user->decodeUTF8(
false);
2921 $ws_parameters = array(
'authentication' => $ws_authentication,
'id' =>
'',
'ref' => $ws_user);
2922 $result_user = $soapclient_user->call(
"getUser", $ws_parameters, $ws_ns,
'');
2923 $user_status_code = $result_user[
"result"][
"result_code"];
2925 if ($user_status_code ==
"OK") {
2927 $ws_entity = $result_user[
"user"][
"entity"];
2928 $ws_authentication[
'entity'] = $ws_entity;
2929 $ws_thirdparty = $result_user[
"user"][
"fk_thirdparty"];
2930 if (empty($ws_thirdparty)) {
2931 setEventMessages($langs->trans(
"RemoteUserMissingAssociatedSoc"),
null,
'errors');
2932 $error_occurred =
true;
2935 $soapclient_product =
new nusoap_client($ws_url.
"/webservices/server_productorservice.php");
2936 $soapclient_product->soap_defencoding =
'UTF-8';
2937 $soapclient_product->decodeUTF8(
false);
2941 foreach (
$object->lines as $line) {
2943 $ref_supplier = $line->ref_supplier;
2944 $line_id = $i.
"º) ".$line->product_ref.
": ";
2945 if (empty($ref_supplier)) {
2948 $ws_parameters = array(
'authentication' => $ws_authentication,
'id' =>
'',
'ref' => $ref_supplier);
2949 $result_product = $soapclient_product->call(
"getProductOrService", $ws_parameters, $ws_ns,
'');
2950 if (!$result_product) {
2951 setEventMessages($line_id.$langs->trans(
"Error").
" SOAP ".$soapclient_product->error_str.
" - ".$soapclient_product->response,
null,
'errors');
2952 $error_occurred =
true;
2957 $status_code = $result_product[
"result"][
"result_code"];
2958 if (empty($status_code)) {
2959 setEventMessages($langs->trans(
"Error").
" SOAP '".$soapclient_product->error_str.
"'",
null,
'errors');
2960 } elseif ($status_code !=
"OK") {
2961 if ($status_code ==
"NOT_FOUND") {
2962 setEventMessages($line_id.$langs->trans(
"SupplierMissingRef").
" '".$ref_supplier.
"'",
null,
'warnings');
2964 setEventMessages($line_id.$langs->trans(
"ResponseNonOK").
" '".$status_code.
"' - '".$result_product[
"result"][
"result_label"].
"'",
null,
'errors');
2965 $error_occurred =
true;
2972 $supplier_price =
price($result_product[
"product"][
"price_net"]);
2973 $local_price =
null;
2976 $product_fourn_list = $product_fourn->list_product_fournisseur_price($line->fk_product);
2977 if (count($product_fourn_list) > 0) {
2978 foreach ($product_fourn_list as $product_fourn_line) {
2980 if ($product_fourn_line->fourn_id ==
$object->socid && $product_fourn_line->fourn_ref == $ref_supplier) {
2981 $local_price =
price($product_fourn_line->fourn_price);
2986 if ($local_price !=
null && $local_price != $supplier_price) {
2987 setEventMessages($line_id.$langs->trans(
"RemotePriceMismatch").
" ".$supplier_price.
" - ".$local_price,
null,
'warnings');
2991 if (empty($result_product[
"product"][
"status_tosell"])) {
2992 setEventMessages($line_id.$langs->trans(
"ProductStatusNotOnSellShort").
" '".$ref_supplier.
"'",
null,
'warnings');
2996 } elseif ($user_status_code ==
"PERMISSION_DENIED") {
2997 setEventMessages($langs->trans(
"RemoteUserNotPermission"),
null,
'errors');
2998 $error_occurred =
true;
2999 } elseif ($user_status_code ==
"BAD_CREDENTIALS") {
3000 setEventMessages($langs->trans(
"RemoteUserBadCredentials"),
null,
'errors');
3001 $error_occurred =
true;
3003 setEventMessages($langs->trans(
"ResponseNonOK").
" '".$user_status_code.
"'",
null,
'errors');
3004 $error_occurred =
true;
3008 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
3009 print
'<input type="hidden" name="token" value="'.newToken().
'">';
3010 print
'<input type="hidden" name="action" value="webservice">';
3011 print
'<input type="hidden" name="mode" value="send">';
3012 print
'<input type="hidden" name="ws_user" value="'.$ws_user.
'">';
3013 print
'<input type="hidden" name="ws_password" value="'.$ws_password.
'">';
3014 print
'<input type="hidden" name="ws_entity" value="'.$ws_entity.
'">';
3015 print
'<input type="hidden" name="ws_thirdparty" value="'.$ws_thirdparty.
'">';
3016 if ($error_occurred) {
3017 print
"<br>".$langs->trans(
"ErrorOccurredReviseAndRetry").
"<br>";
3019 print
'<input type="submit" class="button" id="ws_submit" name="ws_submit" value="'.$langs->trans(
"Confirm").
'">';
3020 print
' ';
3022 print
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
3028 $modelmail =
'order_supplier_send';
3029 $defaulttopic =
'SendOrderRef';
3030 $diroutput =
$conf->fournisseur->commande->dir_output;
3031 $autocopy =
'MAIN_MAIL_AUTOCOPY_SUPPLIER_ORDER_TO';
3032 $trackid =
'sord'.$object->id;
3034 include DOL_DOCUMENT_ROOT.
'/core/tpl/card_presend.tpl.php';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage predefined suppliers products.
const STATUS_RECEIVED_PARTIALLY
Received partially.
const STATUS_VALIDATED
Validated status.
const STATUS_RECEIVED_COMPLETELY
Received completely.
const STATUS_DRAFT
Draft status.
const STATUS_ACCEPTED
Accepted.
const STATUS_ORDERSENT
Order sent, shipment on process.
Class to manage line orders.
Class to manage a WYSIWYG editor.
Class to manage the table of subscription to notifications.
Class ProductCombination Used to represent the relation between a product and one of its variants.
Class to manage 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 translations.
Class to manage Dolibarr users.
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.
ordersupplier_prepare_head(CommandeFournisseur $object)
Prepare array with list of tabs.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dol_print_url($url, $target='_blank', $max=32, $withpicto=0, $morecss='')
Show Url link.
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_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
if(!function_exists( 'dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
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...
dol_htmloutput_events($disabledoutputofmessages=0)
Print formatted messages to output (Used to show messages on html output).
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_clone($object, $native=2)
Create a clone of instance of object (new instance with same value for each properties) With native =...
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify 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...
get_localtax($vatrate, $local, $thirdparty_buyer=null, $thirdparty_seller=null, $vatnpr=0)
Return localtax rate for a particular vat, when selling a product with vat $vatrate,...
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
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.