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';
70$langs->loadLangs(array(
'admin',
'orders',
'sendings',
'companies',
'bills',
'propal',
'receptions',
'supplier_proposal',
'deliveries',
'products',
'stocks',
'productbatch'));
71if (isModEnabled(
'incoterm')) {
72 $langs->load(
'incoterm');
79$action =
GETPOST(
'action',
'alpha');
80$confirm =
GETPOST(
'confirm',
'alpha');
81$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'purchaseordercard';
82$backtopage =
GETPOST(
'backtopage',
'alpha');
83$backtopageforcancel =
GETPOST(
'backtopageforcancel',
'alpha');
87$cancel =
GETPOST(
'cancel',
'alpha');
89$origin =
GETPOST(
'origin',
'alpha');
102if (!empty($user->socid)) {
103 $socid = $user->socid;
107$hookmanager->initHooks(array(
'ordersuppliercard',
'globalcard'));
113$extrafields->fetch_name_optionals_label(
$object->table_element);
116 $socid = $user->socid;
120if ($id > 0 || !empty($ref)) {
121 $ret =
$object->fetch($id, $ref);
125 $ret =
$object->fetch_thirdparty();
129} elseif (!empty($socid) && $socid > 0) {
131 $ret =
$object->fetch_thirdparty();
138$isdraft = (isset(
$object->statut) && (
$object->statut == $object::STATUS_DRAFT) ? 1 : 0);
139$result =
restrictedArea($user,
'fournisseur',
$object,
'commande_fournisseur',
'commande',
'fk_soc',
'rowid', $isdraft);
142$usercanread = ($user->hasRight(
"fournisseur",
"commande",
"lire") || $user->hasRight(
"supplier_order",
"lire"));
143$usercancreate = ($user->hasRight(
"fournisseur",
"commande",
"creer") || $user->hasRight(
"supplier_order",
"creer"));
144$usercandelete = (($user->hasRight(
"fournisseur",
"commande",
"supprimer") || $user->hasRight(
"supplier_order",
"supprimer")) || ($usercancreate && isset(
$object->statut) &&
$object->statut == $object::STATUS_DRAFT));
147$usercanvalidate = ((!
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && !empty($usercancreate)) || (
getDolGlobalString(
'MAIN_USE_ADVANCED_PERMS') && $user->hasRight(
"fournisseur",
"supplier_order_advance",
"validate")));
150$usercanapprove = $user->hasRight(
"fournisseur",
"commande",
"approuver");
151$usercanapprovesecond = $user->hasRight(
"fournisseur",
"commande",
"approve2");
152$usercanorder = $user->hasRight(
"fournisseur",
"commande",
"commander");
153if (!isModEnabled(
'reception')) {
154 $usercanreceive = $user->hasRight(
"fournisseur",
"commande",
"receptionner");
156 $usercanreceive = $user->hasRight(
"reception",
"creer");
160$permissionnote = $usercancreate;
161$permissiondellink = $usercancreate;
162$permissiontoedit = $usercancreate;
163$permissiontoadd = $usercancreate;
166$caneditproject =
false;
167if (isModEnabled(
'project')) {
178$parameters = array(
'socid' => $socid);
179$reshook = $hookmanager->executeHooks(
'doActions', $parameters,
$object, $action);
184if (empty($reshook)) {
185 $backurlforlist = DOL_URL_ROOT.
'/fourn/commande/list.php'.($socid > 0 ?
'?socid='.((int) $socid) :
'');
187 if (empty($backtopage) || ($cancel && empty($id))) {
188 if (empty($backtopage) || ($cancel && strpos($backtopage,
'__ID__'))) {
189 if (empty($id) && (($action !=
'add' && $action !=
'create') || $cancel)) {
190 $backtopage = $backurlforlist;
192 $backtopage = DOL_URL_ROOT.
'/fourn/commande/card.php?id='.((!empty($id) &&
$id > 0) ? $id :
'__ID__');
198 if (!empty($backtopageforcancel)) {
199 header(
"Location: ".$backtopageforcancel);
201 } elseif (!empty($backtopage)) {
202 header(
"Location: ".$backtopage);
208 include DOL_DOCUMENT_ROOT.
'/core/actions_setnotes.inc.php';
210 include DOL_DOCUMENT_ROOT.
'/core/actions_dellink.inc.php';
212 include DOL_DOCUMENT_ROOT.
'/core/actions_lineupdown.inc.php';
214 if ($action ==
'setref_supplier' && $usercancreate) {
215 $result =
$object->setValueFrom(
'ref_supplier',
GETPOST(
'ref_supplier',
'alpha'),
'',
null,
'text',
'', $user,
'ORDER_SUPPLIER_MODIFY');
222 if ($action ==
'set_incoterms' && $usercancreate) {
230 if ($action ==
'setconditions' && $usercancreate) {
238 if ($action ==
'setmode' && $usercancreate) {
243 } elseif ($action ==
'setmulticurrencycode' && $usercancreate) {
245 $result =
$object->setMulticurrencyCode(
GETPOST(
'multicurrency_code',
'alpha'));
246 } elseif ($action ==
'setmulticurrencyrate' && $usercancreate) {
252 if ($action ==
'setbankaccount' && $usercancreate) {
260 if ($action ==
'setdate_livraison' && $usercancreate) {
261 $result =
$object->setDeliveryDate($user, $datelivraison);
268 if ($action ==
'classin' && $usercancreate && $caneditproject) {
269 $result =
$object->setProject($projectid);
278 if (!empty($new_socid) && $new_socid !=
$object->thirdparty->id) {
282 $sql =
'UPDATE '.MAIN_DB_PREFIX.
'commande_fournisseur';
283 $sql .=
' SET fk_soc = '.((int) $new_socid);
284 $sql .=
' WHERE fk_soc = '.((int)
$object->thirdparty->id);
285 $sql .=
' AND rowid = '.((int)
$object->id);
287 $res = $db->query($sql);
295 foreach (
$object->lines as $l) {
296 $sql =
'SELECT price, unitprice, tva_tx, ref_fourn';
297 $sql .=
' FROM '.MAIN_DB_PREFIX.
'product_fournisseur_price';
298 $sql .=
' WHERE fk_product = '.((int) $l->fk_product);
299 $sql .=
' AND fk_soc = '.((int) $new_socid);
300 $sql .=
' ORDER BY unitprice ASC';
302 $resql = $db->query($sql);
304 $num_row = $db->num_rows($resql);
305 if (empty($num_row)) {
311 $l->ref_supplier =
'';
315 $obj = $db->fetch_object($resql);
316 $l->subprice = $obj->unitprice;
317 $l->total_ht = $obj->price;
318 $l->tva_tx = $obj->tva_tx;
319 $l->total_tva = $l->total_ht * ($obj->tva_tx / 100);
320 $l->total_ttc = $l->total_ht + $l->total_tva;
321 $l->ref_supplier = $obj->ref_fourn;
332 header(
'Location: '.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id);
336 if ($action ==
'setremisepercent' && $usercancreate) {
343 if ($action ==
'reopen' && $permissiontoadd) {
344 if (in_array(
$object->statut, array(1, 2, 3, 4, 5, 6, 7, 9))) {
347 } elseif (
$object->statut == 2) {
349 } elseif (
$object->statut == 3) {
351 } elseif (
$object->statut == 4) {
353 } elseif (
$object->statut == 5) {
359 } elseif (
$object->statut == 6) {
361 } elseif (
$object->statut == 7) {
363 } elseif (
$object->statut == 9) {
372 $result =
$object->setStatus($user, $newstatus);
374 if ($newstatus == 0) {
375 $sql =
'UPDATE '.MAIN_DB_PREFIX.
'commande_fournisseur';
376 $sql .=
' SET fk_user_approve = null, fk_user_approve2 = null, date_approve = null, date_approve2 = null';
377 $sql .=
' WHERE rowid = '.((int)
$object->id);
379 $resql = $db->query($sql);
384 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id);
397 if ($action ==
'classifybilled' && $usercancreate) {
398 $ret =
$object->classifyBilled($user);
404 if ($action ==
'classifyunbilled' && $usercancreate) {
405 $ret =
$object->classifyUnBilled($user);
412 if ($action ==
'addline' &&
GETPOST(
'submitforalllines',
'aZ09') && (
GETPOST(
'alldate_start',
'alpha') ||
GETPOST(
'alldate_end',
'alpha')) && $usercancreate) {
416 foreach (
$object->lines as $line) {
417 if ($line->product_type == 1) {
418 $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);
421 } elseif ($action ==
'addline' &&
GETPOST(
'submitforalllines',
'aZ09') &&
GETPOST(
'vatforalllines',
'alpha') !==
'' && $usercancreate) {
423 $vat_rate = (
GETPOST(
'vatforalllines') ?
GETPOST(
'vatforalllines') : 0);
424 $vat_rate = str_replace(
'*',
'', $vat_rate);
427 foreach (
$object->lines as $line) {
428 $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);
430 } elseif ($action ==
'addline' && $usercancreate) {
433 $langs->load(
'errors');
438 $product_desc = (GETPOSTISSET(
'dp_desc') ?
GETPOST(
'dp_desc',
'restricthtml') :
'');
442 $prod_entry_mode =
GETPOST(
'prod_entry_mode');
443 if ($prod_entry_mode ==
'free') {
457 $remise_percent = (GETPOSTISSET(
'remise_percent'.$predef) ?
price2num(
GETPOST(
'remise_percent'.$predef,
'alpha'),
'', 2) : 0);
458 if (empty($remise_percent)) {
463 $extralabelsline = $extrafields->fetch_name_optionals_label(
$object->table_element_line);
464 $array_options = $extrafields->getOptionalsFromPost(
$object->table_element_line, $predef);
466 if (is_array($extralabelsline)) {
468 foreach ($extralabelsline as $key => $value) {
469 unset($_POST[
"options_".$key]);
473 if ($prod_entry_mode ==
'free' &&
GETPOST(
'price_ht') < 0 && $qty < 0) {
474 setEventMessages($langs->trans(
'ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv(
'UnitPrice'), $langs->transnoentitiesnoconv(
'Qty')),
null,
'errors');
477 if ($prod_entry_mode ==
'free' && !
GETPOST(
'idprodfournprice') &&
GETPOST(
'type') < 0) {
478 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Type')),
null,
'errors');
481 if ($prod_entry_mode ==
'free' &&
GETPOST(
'price_ht') ===
'' &&
GETPOST(
'price_ttc') ===
'' && $price_ht_devise ===
'') {
482 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'UnitPrice')),
null,
'errors');
485 if ($prod_entry_mode ==
'free' && !
GETPOST(
'dp_desc')) {
486 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Description')),
null,
'errors');
489 if (
GETPOST(
'qty',
'alpha') ==
'') {
490 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Qty')),
null,
'errors');
494 if (!$error && isModEnabled(
'variants') && $prod_entry_mode !=
'free') {
495 if ($combinations =
GETPOST(
'combinations',
'array')) {
499 if ($res = $prodcomb->fetchByProductCombination2ValuePairs($idprod, $combinations)) {
500 $idprod = $res->fk_product_child;
502 setEventMessages($langs->trans(
'ErrorProductCombinationNotFound'),
null,
'errors');
508 if ($prod_entry_mode !=
'free' && empty($error)) {
512 if (
GETPOST(
'idprodfournprice',
'alpha') == -1 ||
GETPOST(
'idprodfournprice',
'alpha') ==
'') {
517 if (preg_match(
'/^idprod_([0-9]+)$/',
GETPOST(
'idprodfournprice',
'alpha'), $reg)) {
519 $res = $productsupplier->fetch($idprod);
522 if (
getDolGlobalString(
'SUPPLIER_TAKE_FIRST_PRICE_IF_NO_PRICE_FOR_CURRENT_SUPPLIER')) {
524 $productsupplier->get_buyprice(0, -1, $idprod,
'none', $fksoctosearch);
525 if ($productsupplier->fourn_socid != $socid) {
526 $productsupplier->ref_supplier =
'';
529 $fksoctosearch =
$object->thirdparty->id;
530 $productsupplier->get_buyprice(0, -1, $idprod,
'none', $fksoctosearch);
532 } elseif (
GETPOST(
'idprodfournprice',
'alpha') > 0) {
535 $idprod = $productsupplier->get_buyprice(
GETPOST(
'idprodfournprice',
'alpha'), $qtytosearch);
536 $res = $productsupplier->fetch($idprod);
540 $label = $productsupplier->label;
544 $outputlangs = $langs;
546 if (empty($newlang) &&
GETPOST(
'lang_id',
'aZ09')) {
547 $newlang =
GETPOST(
'lang_id',
'aZ09');
549 if (empty($newlang)) {
550 $newlang =
$object->thirdparty->default_lang;
552 if (!empty($newlang)) {
554 $outputlangs->setDefaultLang($newlang);
556 $desc = (!empty($productsupplier->multilangs[$outputlangs->defaultlang][
"description"])) ? $productsupplier->multilangs[$outputlangs->defaultlang][
"description"] : $productsupplier->
description;
558 $desc = $productsupplier->description;
561 if (!empty($productsupplier->desc_supplier) &&
getDolGlobalString(
'PRODUIT_FOURN_TEXTS')) {
562 $desc = $productsupplier->desc_supplier;
566 if (trim($product_desc) == trim($desc) &&
getDolGlobalString(
'PRODUIT_AUTOFILL_DESC')) {
571 $desc = $product_desc;
573 if (!empty($product_desc) && trim($product_desc) != trim($desc)) {
577 $ref_supplier = $productsupplier->ref_supplier;
581 if (!GETPOSTISSET(
'tva_tx')) {
582 $tmpidprodfournprice =
GETPOST(
'idprodfournprice',
'alpha');
583 if (is_numeric($tmpidprodfournprice) && (
int) $tmpidprodfournprice > 0) {
584 $tmpidprodfournprice = (int) $tmpidprodfournprice;
586 $tmpidprodfournprice = 0;
590 if (empty($tva_tx)) {
598 $type = $productsupplier->type;
599 if (
GETPOST(
'price_ht') !=
'' ||
GETPOST(
'multicurrency_price_ht') !=
'') {
600 $price_base_type =
'HT';
602 $pu_devise =
price2num($price_ht_devise,
'CU');
603 } elseif (
GETPOST(
'price_ttc') !=
'' ||
GETPOST(
'multicurrency_price_ttc') !=
'') {
604 $price_base_type =
'TTC';
606 $pu_devise =
price2num($price_ttc_devise,
'CU');
608 $price_base_type = ($productsupplier->fourn_price_base_type ? $productsupplier->fourn_price_base_type :
'HT');
609 if (empty(
$object->multicurrency_code) || ($productsupplier->fourn_multicurrency_code !=
$object->multicurrency_code)) {
610 $pu = $productsupplier->fourn_pu;
613 $pu = $productsupplier->fourn_pu;
614 $pu_devise = $productsupplier->fourn_multicurrency_unitprice;
624 ($price_base_type ==
'HT' ? $pu : 0),
630 $productsupplier->product_fourn_price_id,
634 ($price_base_type ==
'TTC' ? $pu : 0),
641 $productsupplier->fk_unit,
645 min($rank, count(
$object->lines) + 1)
648 if ($idprod == -99 || $idprod == 0) {
651 $langs->load(
"errors");
652 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ProductOrService")),
null,
'errors');
657 $langs->load(
"errors");
658 setEventMessages($langs->trans(
"ErrorQtyTooLowForThisSupplier"),
null,
'errors');
660 } elseif (empty($error)) {
661 $tva_npr = (preg_match(
'/\*/', $tva_tx) ? 1 : 0);
662 $tva_tx = str_replace(
'*',
'', $tva_tx);
663 $label = (
GETPOST(
'product_label') ?
GETPOST(
'product_label') :
'');
664 $desc = $product_desc;
666 $ref_supplier =
GETPOST(
'fourn_ref',
'alpha');
668 $fk_unit =
GETPOST(
'units',
'alpha');
670 if (!preg_match(
'/\((.*)\)/', $tva_tx)) {
678 if (
GETPOST(
'price_ht') !=
'' ||
GETPOST(
'multicurrency_price_ht') !=
'') {
683 $pu_ht =
price2num((
float) $pu_ttc / (1 + ((
float) $tva_tx / 100)),
'MU');
685 $price_base_type =
'HT';
686 $pu_ht_devise =
price2num($price_ht_devise,
'CU');
688 $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);
692 if (!$error && $result > 0) {
699 $outputlangs = $langs;
702 $newlang =
$object->thirdparty->default_lang;
703 if (
GETPOST(
'lang_id',
'aZ09')) {
704 $newlang =
GETPOST(
'lang_id',
'aZ09');
707 if (!empty($newlang)) {
709 $outputlangs->setDefaultLang($newlang);
714 $result =
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
720 unset($_POST [
'prod_entry_mode']);
722 unset($_POST[
'qty']);
723 unset($_POST[
'type']);
724 unset($_POST[
'remise_percent']);
726 unset($_POST[
'price_ht']);
727 unset($_POST[
'multicurrency_price_ht']);
728 unset($_POST[
'price_ttc']);
729 unset($_POST[
'fourn_ref']);
730 unset($_POST[
'tva_tx']);
731 unset($_POST[
'label']);
732 unset($localtax1_tx);
733 unset($localtax2_tx);
734 unset($_POST[
'np_marginRate']);
735 unset($_POST[
'np_markRate']);
736 unset($_POST[
'dp_desc']);
737 unset($_POST[
'idprodfournprice']);
738 unset($_POST[
'units']);
740 unset($_POST[
'date_starthour']);
741 unset($_POST[
'date_startmin']);
742 unset($_POST[
'date_startsec']);
743 unset($_POST[
'date_startday']);
744 unset($_POST[
'date_startmonth']);
745 unset($_POST[
'date_startyear']);
746 unset($_POST[
'date_endhour']);
747 unset($_POST[
'date_endmin']);
748 unset($_POST[
'date_endsec']);
749 unset($_POST[
'date_endday']);
750 unset($_POST[
'date_endmonth']);
751 unset($_POST[
'date_endyear']);
763 if ($action ==
'updateline' && $usercancreate && !
GETPOST(
'cancel',
'alpha')) {
770 $res = $line->fetch($lineid);
778 if ($line->fk_product > 0 && $productsupplier->get_buyprice(0,
price2num(
GETPOSTINT(
'qty')), $line->fk_product,
'none',
GETPOSTINT(
'socid')) < 0) {
779 setEventMessages($langs->trans(
"ErrorQtyTooLowForThisSupplier"),
null,
'warnings');
788 if (preg_match(
'/\*/', $vat_rate)) {
793 $vat_rate = str_replace(
'*',
'', $vat_rate);
797 if (
GETPOST(
'price_ht') !=
'') {
798 $price_base_type =
'HT';
802 $vatratecleaned = $vat_rate;
803 if (preg_match(
'/^(.*)\s*\((.*)\)$/', $vat_rate, $reg)) {
804 $vatratecleaned = trim($reg[1]);
805 $vatratecode = $reg[2];
809 $ht = (float) $ttc / (1 + ((
float) $vatratecleaned / 100));
810 $price_base_type =
'HT';
816 $extralabelsline = $extrafields->fetch_name_optionals_label(
$object->table_element_line);
817 $array_options = $extrafields->getOptionalsFromPost(
$object->table_element_line);
819 if (is_array($extralabelsline)) {
820 foreach ($extralabelsline as $key => $value) {
821 unset($_POST[
"options_".$key]);
827 GETPOST(
'product_desc',
'restricthtml'),
836 GETPOSTISSET(
"type") ?
GETPOST(
"type") : $line->product_type,
845 unset($_POST[
'qty']);
846 unset($_POST[
'type']);
847 unset($_POST[
'idprodfournprice']);
848 unset($_POST[
'remmise_percent']);
849 unset($_POST[
'dp_desc']);
850 unset($_POST[
'np_desc']);
852 unset($_POST[
'fourn_ref']);
853 unset($_POST[
'tva_tx']);
854 unset($_POST[
'date_start']);
855 unset($_POST[
'date_end']);
856 unset($_POST[
'units']);
857 unset($localtax1_tx);
858 unset($localtax2_tx);
860 unset($_POST[
'date_starthour']);
861 unset($_POST[
'date_startmin']);
862 unset($_POST[
'date_startsec']);
863 unset($_POST[
'date_startday']);
864 unset($_POST[
'date_startmonth']);
865 unset($_POST[
'date_startyear']);
866 unset($_POST[
'date_endhour']);
867 unset($_POST[
'date_endmin']);
868 unset($_POST[
'date_endsec']);
869 unset($_POST[
'date_endday']);
870 unset($_POST[
'date_endmonth']);
871 unset($_POST[
'date_endyear']);
876 $outputlangs = $langs;
879 $newlang =
GETPOST(
'lang_id',
'aZ09');
882 $newlang =
$object->thirdparty->default_lang;
884 if (!empty($newlang)) {
886 $outputlangs->setDefaultLang($newlang);
891 $result =
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
906 if ($action ==
'confirm_deleteline' && $confirm ==
'yes' && $usercancreate) {
909 $result =
$object->deleteLine($lineid);
914 $outputlangs = $langs;
917 $newlang =
GETPOST(
'lang_id',
'aZ09');
920 $newlang =
$object->thirdparty->default_lang;
922 if (!empty($newlang)) {
924 $outputlangs->setDefaultLang($newlang);
928 $object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
950 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id);
958 if ($action ==
'confirm_valid' && $confirm ==
'yes' && $usercanvalidate) {
962 $result =
$object->valid($user);
966 $outputlangs = $langs;
969 $newlang =
GETPOST(
'lang_id',
'aZ09');
972 $newlang =
$object->thirdparty->default_lang;
974 if (!empty($newlang)) {
976 $outputlangs->setDefaultLang($newlang);
981 $result =
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
994 $action =
'confirm_approve';
1004 if (($action ==
'confirm_approve' || $action ==
'confirm_approve2') && $confirm ==
'yes' && $usercanapprove) {
1009 $qualified_for_stock_change = 0;
1011 $qualified_for_stock_change =
$object->hasProductsOrServices(2);
1013 $qualified_for_stock_change =
$object->hasProductsOrServices(1);
1017 if (isModEnabled(
'stock') &&
getDolGlobalString(
'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER') && $qualified_for_stock_change) {
1018 if (!$idwarehouse || $idwarehouse == -1) {
1020 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
"Warehouse")),
null,
'errors');
1026 $result =
$object->approve($user, $idwarehouse, ($action ==
'confirm_approve2' ? 1 : 0));
1029 $outputlangs = $langs;
1032 $newlang =
GETPOST(
'lang_id',
'aZ09');
1035 $newlang =
$object->thirdparty->default_lang;
1037 if (!empty($newlang)) {
1038 $outputlangs =
new Translate(
"", $conf);
1039 $outputlangs->setDefaultLang($newlang);
1041 $object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
1052 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".
$object->id);
1059 if ($action ==
'confirm_refuse' && $confirm ==
'yes' && $usercanapprove) {
1063 $result =
$object->refuse($user);
1065 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".
$object->id);
1073 if ($action ==
'commande') {
1074 $methodecommande =
GETPOSTINT(
'methodecommande');
1078 } elseif ($methodecommande <= 0 && !
getDolGlobalInt(
'SUPPLIER_ORDER_MODE_OPTIONAL')) {
1079 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"OrderMode")),
null,
'errors');
1080 $action =
'createorder';
1084 if ($action ==
'confirm_commande' && $confirm ==
'yes' && $usercanorder) {
1090 $outputlangs = $langs;
1093 $newlang =
GETPOST(
'lang_id',
'aZ09');
1096 $newlang =
$object->thirdparty->default_lang;
1098 if (!empty($newlang)) {
1099 $outputlangs =
new Translate(
"", $conf);
1100 $outputlangs->setDefaultLang($newlang);
1102 $object->generateDocument(
$object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
1113 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".
$object->id);
1121 if ($action ==
'confirm_delete' && $confirm ==
'yes' && $usercandelete) {
1122 $result =
$object->delete($user);
1124 header(
"Location: ".DOL_URL_ROOT.
'/fourn/commande/list.php?restore_lastsearch_values=1');
1132 if ($action ==
'confirm_clone' && $confirm ==
'yes' && $usercancreate) {
1134 if (1 == 0 && !
GETPOST(
'clone_content') && !
GETPOST(
'clone_receivers')) {
1135 setEventMessages($langs->trans(
"NoCloneOptionsSpecified"),
null,
'errors');
1140 $result =
$object->createFromClone($user, $socid);
1142 header(
"Location: ".$_SERVER[
'PHP_SELF'].
'?id='.$result);
1154 if ($action ==
'livraison' && $usercanreceive) {
1165 $langs->load(
"deliveries");
1175 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Delivery")),
null,
'errors');
1186 if ($action ==
'confirm_cancel' && $confirm ==
'yes' && $usercanorder) {
1190 $result =
$object->cancel($user);
1192 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".
$object->id);
1200 include DOL_DOCUMENT_ROOT.
'/core/actions_printing.inc.php';
1203 $triggersendname =
'ORDER_SUPPLIER_SENTBYMAIL';
1204 $autocopy =
'MAIN_MAIL_AUTOCOPY_SUPPLIER_ORDER_TO';
1205 $trackid =
'sord'.$object->id;
1206 include DOL_DOCUMENT_ROOT.
'/core/actions_sendmails.inc.php';
1209 $upload_dir = $conf->fournisseur->commande->dir_output;
1210 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
1213 if ($action ==
'update_extras' && $permissiontoadd) {
1217 $ret = $extrafields->setOptionalsFromPost(
null,
$object,
GETPOST(
'attribute',
'restricthtml'));
1225 $result =
$object->insertExtraFields(
'ORDER_SUPPLIER_MODIFY');
1234 $action =
'edit_extras';
1241 if ($action ==
'add' && $permissiontoadd) {
1243 $selectedLines =
GETPOST(
'toselect',
'array');
1245 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentities(
'Supplier')),
null,
'errors');
1261 $object->delivery_date = $datelivraison;
1263 $object->location_incoterms =
GETPOST(
'location_incoterms',
'alpha');
1264 $object->multicurrency_code =
GETPOST(
'multicurrency_code',
'alpha');
1270 $ret = $extrafields->setOptionalsFromPost(
null,
$object);
1278 if (!empty($origin) && !empty($originid)) {
1279 $element = $subelement = $origin;
1280 $classname = ucfirst($subelement);
1281 if ($origin ==
'propal' || $origin ==
'proposal') {
1282 $element =
'comm/propal';
1283 $subelement =
'propal';
1284 $classname =
'Propal';
1286 if ($origin ==
'order' || $origin ==
'commande') {
1287 $element = $subelement =
'commande';
1288 $classname =
'Commande';
1290 if ($origin ==
'supplier_proposal') {
1291 $classname =
'SupplierProposal';
1292 $element =
'supplier_proposal';
1293 $subelement =
'supplier_proposal';
1297 $object->origin_id = $originid;
1301 $other_linked_objects =
GETPOST(
'other_linked_objects',
'array');
1302 if (!empty($other_linked_objects)) {
1303 $object->linked_objects = array_merge(
$object->linked_objects, $other_linked_objects);
1310 $srcobject =
new $classname($db);
1313 $result = $srcobject->fetch(
$object->origin_id);
1315 $tmpdate = $srcobject->delivery_date;
1316 $object->setDeliveryDate($user, $tmpdate);
1317 $object->set_id_projet($user, $srcobject->fk_project);
1319 $lines = $srcobject->lines;
1320 if (empty($lines) && method_exists($srcobject,
'fetch_lines')) {
1321 $srcobject->fetch_lines();
1322 $lines = $srcobject->lines;
1325 $fk_parent_line = 0;
1326 $num = count($lines);
1328 for ($i = 0; $i < $num; $i++) {
1329 if (empty($lines[$i]->subprice) || $lines[$i]->qty <= 0 || !in_array($lines[$i]->
id, $selectedLines)) {
1333 $label = (!empty($lines[$i]->label) ? $lines[$i]->label :
'');
1334 $desc = (!empty($lines[$i]->desc) ? $lines[$i]->desc :
'');
1335 $product_type = (!empty($lines[$i]->product_type) ? $lines[$i]->product_type : 0);
1338 if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
1339 $fk_parent_line = 0;
1343 if (method_exists($lines[$i],
'fetch_optionals')) {
1344 $lines[$i]->fetch_optionals();
1345 $array_option = $lines[$i]->array_options;
1349 $product_fourn_price_id = 0;
1350 if ($origin ==
"commande") {
1352 $result = $productsupplier->find_min_price_product_fournisseur($lines[$i]->fk_product, $lines[$i]->qty,
$object->socid);
1353 $lines[$i]->subprice = 0;
1355 $ref_supplier = $productsupplier->ref_supplier;
1356 $product_fourn_price_id = $productsupplier->product_fourn_price_id;
1358 foreach ($srcobject->lines as $li) {
1359 $sql =
'SELECT price, unitprice, tva_tx, remise_percent, entity, ref_fourn';
1360 $sql .=
' FROM '.MAIN_DB_PREFIX.
'product_fournisseur_price';
1361 $sql .=
' WHERE fk_product = '.((int) $li->fk_product);
1362 $sql .=
' AND entity IN ('.getEntity(
'product_fournisseur_price').
')';
1363 $sql .=
' AND fk_soc = '.((int)
$object->socid);
1364 $sql .=
' ORDER BY unitprice ASC';
1366 $resql = $db->query($sql);
1368 $num_row = $db->num_rows($resql);
1369 if (empty($num_row)) {
1370 $li->remise_percent = 0;
1372 $obj = $db->fetch_object($resql);
1373 $li->subprice = $obj->unitprice;
1374 $li->remise_percent = $obj->remise_percent;
1383 $ref_supplier = $lines[$i]->ref_fourn;
1384 $product_fourn_price_id = 0;
1387 $tva_tx = $lines[$i]->tva_tx;
1389 if ($origin ==
"commande") {
1391 $soc->fetch($socid);
1392 $tva_tx =
get_default_tva($soc, $mysoc, $lines[$i]->fk_product, $product_fourn_price_id);
1397 $lines[$i]->subprice,
1400 $lines[$i]->localtax1_tx,
1401 $lines[$i]->localtax2_tx,
1402 $lines[$i]->fk_product > 0 ? $lines[$i]->fk_product : 0,
1403 $product_fourn_price_id,
1405 $lines[$i]->remise_percent,
1408 $lines[$i]->product_type,
1414 $lines[$i]->fk_unit,
1417 !empty($lines[$i]->id) ? $lines[$i]->id : $lines[$i]->rowid,
1419 $lines[$i]->special_code
1429 if ($result > 0 && $lines[$i]->product_type == 9) {
1430 $fk_parent_line = $result;
1438 $parameters = array(
'objFrom' => $srcobject);
1439 $reshook = $hookmanager->executeHooks(
'createFrom', $parameters,
$object, $action);
1463 $langs->load(
"errors");
1468 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".urlencode((
string) ($id)));
1475 if ($action ==
'addcontact' && $permissiontoadd) {
1479 $result =
$object->add_contact($contactid, $typeid,
GETPOST(
"source",
'aZ09'));
1483 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".
$object->id);
1486 if (
$object->error ==
'DB_ERROR_RECORD_ALREADY_EXISTS') {
1487 $langs->load(
"errors");
1488 setEventMessages($langs->trans(
"ErrorThisContactIsAlreadyDefinedAsThisType"),
null,
'errors');
1493 } elseif ($action ==
'swapstatut' &&
$object->id > 0 && $permissiontoadd) {
1496 } elseif ($action ==
'deletecontact' &&
$object->id > 0 && $permissiontoadd) {
1501 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".
$object->id);
1515$form =
new Form($db);
1518$productstatic =
new Product($db);
1519if (isModEnabled(
'project')) {
1523$title =
$object->ref.
" - ".$langs->trans(
'Card');
1524if ($action ==
'create') {
1525 $title = $langs->trans(
"NewOrderSupplier");
1527$help_url =
'EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores';
1528llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-supplier-order page-card');
1532if ($action ==
'create') {
1533 print
load_fiche_titre($langs->trans(
'NewOrderSupplier'),
'',
'supplier_order');
1537 $currency_code = $conf->currency;
1544 $societe->fetch($socid);
1547 if (!empty($origin) && !empty($originid)) {
1549 $element = $subelement = $origin;
1550 $classname = ucfirst($subelement);
1552 if (preg_match(
'/^([^_]+)_([^_]+)/i', $origin, $regs)) {
1553 $element = $regs[1];
1554 $subelement = $regs[2];
1557 if ($origin ==
'propal' || $origin ==
'proposal') {
1558 $classname =
'Propal';
1559 $element =
'comm/propal';
1560 $subelement =
'propal';
1562 if ($origin ==
'order' || $origin ==
'commande') {
1563 $classname =
'Commande';
1564 $element = $subelement =
'commande';
1566 if ($origin ==
'supplier_proposal') {
1567 $classname =
'SupplierProposal';
1568 $element =
'supplier_proposal';
1569 $subelement =
'supplier_proposal';
1575 $objectsrc =
new $classname($db);
1576 $objectsrc->fetch($originid);
1577 if (empty($objectsrc->lines) && method_exists($objectsrc,
'fetch_lines')) {
1578 $objectsrc->fetch_lines();
1580 $objectsrc->fetch_thirdparty();
1583 $objectsrc->fetch_optionals();
1584 $object->array_options = $objectsrc->array_options;
1586 $projectid = (!empty($objectsrc->fk_project) ? $objectsrc->fk_project :
'');
1587 $ref_client = (!empty($objectsrc->ref_client) ? $objectsrc->ref_client :
'');
1589 if ($origin ==
"commande") {
1590 $cond_reglement_id = 0;
1591 $mode_reglement_id = 0;
1592 $datelivraison =
'';
1593 $objectsrc->note_private =
'';
1594 $objectsrc->note_public =
'';
1595 if ($societe =
$object->thirdparty) {
1596 $cond_reglement_id = $societe->cond_reglement_supplier_id;
1597 $mode_reglement_id = $societe->mode_reglement_supplier_id;
1598 if (isModEnabled(
"multicurrency")) {
1599 $currency_code = $societe->multicurrency_code;
1601 $currency_tx = $societe->multicurrency_tx;
1606 $soc = $objectsrc->thirdparty;
1608 $cond_reglement_id = (!empty($objectsrc->cond_reglement_id) ? $objectsrc->cond_reglement_id : (!empty($soc->cond_reglement_id) ? $soc->cond_reglement_id : 0));
1609 $mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0));
1610 $fk_account = (!empty($objectsrc->fk_account) ? $objectsrc->fk_account : (!empty($soc->fk_account) ? $soc->fk_account : 0));
1611 $availability_id = (!empty($objectsrc->availability_id) ? $objectsrc->availability_id : (!empty($soc->availability_id) ? $soc->availability_id : 0));
1612 $shipping_method_id = (!empty($objectsrc->shipping_method_id) ? $objectsrc->shipping_method_id : (!empty($soc->shipping_method_id) ? $soc->shipping_method_id : 0));
1613 $demand_reason_id = (!empty($objectsrc->demand_reason_id) ? $objectsrc->demand_reason_id : (!empty($soc->demand_reason_id) ? $soc->demand_reason_id : 0));
1618 $datelivraison = (!empty($objectsrc->delivery_date) ? $objectsrc->delivery_date :
'');
1620 if (isModEnabled(
"multicurrency")) {
1621 if (!empty($objectsrc->multicurrency_code)) {
1622 $currency_code = $objectsrc->multicurrency_code;
1624 if (
getDolGlobalString(
'MULTICURRENCY_USE_ORIGIN_TX') && !empty($objectsrc->multicurrency_tx)) {
1625 $currency_tx = $objectsrc->multicurrency_tx;
1629 $note_private =
$object->getDefaultCreateValueFor(
'note_private', (!empty($objectsrc->note_private) ? $objectsrc->note_private : null));
1630 $note_public =
$object->getDefaultCreateValueFor(
'note_public', (!empty($objectsrc->note_public) ? $objectsrc->note_public : null));
1633 $srccontactslist = $objectsrc->liste_contact(-1,
'external', 1);
1636 $cond_reglement_id = !empty($societe->cond_reglement_supplier_id) ? $societe->cond_reglement_supplier_id : 0;
1637 $mode_reglement_id = !empty($societe->mode_reglement_supplier_id) ? $societe->mode_reglement_supplier_id : 0;
1639 if (isModEnabled(
"multicurrency") && !empty($societe->multicurrency_code)) {
1640 $currency_code = $societe->multicurrency_code;
1643 $note_private =
$object->getDefaultCreateValueFor(
'note_private');
1644 $note_public =
$object->getDefaultCreateValueFor(
'note_public');
1648 if (empty($cond_reglement_id) &&
getDolGlobalString(
'SUPPLIER_ORDER_DEFAULT_PAYMENT_TERM_ID')) {
1651 if (empty($mode_reglement_id) &&
getDolGlobalString(
'SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID')) {
1655 print
'<form name="add" action="'.$_SERVER[
"PHP_SELF"].
'" method="post">';
1656 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1657 print
'<input type="hidden" name="action" value="add">';
1658 print
'<input type="hidden" name="remise_percent" value="'.(empty($soc->remise_supplier_percent) ?
'' : $soc->remise_supplier_percent).
'">';
1659 print
'<input type="hidden" name="origin" value="'.$origin.
'">';
1660 print
'<input type="hidden" name="originid" value="'.$originid.
'">';
1662 print
'<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
1664 if ($backtopageforcancel) {
1665 print
'<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.
'">';
1668 if (!empty($currency_tx)) {
1669 print
'<input type="hidden" name="originmulticurrency_tx" value="'.$currency_tx.
'">';
1675 $parameters = array();
1677 $reshook = $hookmanager->executeHooks(
'tabContentCreateSupplierOrder', $parameters,
$object, $action);
1678 if (empty($reshook)) {
1679 print
'<table class="border centpercent">';
1682 print
'<tr><td class="titlefieldcreate">'.$langs->trans(
'Ref').
'</td><td>'.$langs->trans(
'Draft').
'</td></tr>';
1685 print
'<tr><td class="fieldrequired">'.$langs->trans(
'Supplier').
'</td>';
1688 if (!empty($societe->id) && $societe->id > 0) {
1689 print $societe->getNomUrl(1,
'supplier');
1690 print
'<input type="hidden" name="socid" value="'.$societe->id.
'">';
1692 $filter =
'((s.fournisseur:=:1) AND (s.status:=:1))';
1693 print
img_picto(
'',
'company',
'class="pictofixedwidth"').$form->select_company((empty($socid) ?
'' : $socid),
'socid', $filter,
'SelectThirdParty', 1, 0, array(), 0,
'minwidth175 maxwidth500 widthcentpercentminusxx');
1697 $(document).ready(function() {
1698 $("#socid").change(function() {
1699 console.log("We have changed the company - Reload page");
1701 $("input[name=action]").val("create");
1702 $("form[name=add]").submit();
1707 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>';
1711 if (!empty($societe->id) && $societe->id > 0) {
1713 print
'<tr><td>'.$langs->trans(
'Discounts').
'</td><td>';
1715 $absolute_discount = $societe->getAvailableDiscounts(
null,
'', 0, 1);
1717 $thirdparty = $societe;
1719 $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?socid='.$thirdparty->id.
'&action='.$action.
'&origin='.
GETPOST(
'origin').
'&originid='.
GETPOST(
'originid'));
1720 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
1726 print
'<tr><td>'.$langs->trans(
'RefSupplier').
'</td><td><input name="refsupplier" type="text"></td>';
1730 print
'<tr><td class="nowrap">'.$langs->trans(
'PaymentConditionsShort').
'</td><td>';
1731 print
img_picto(
'',
'payment',
'class="pictofixedwidth"');
1732 print $form->getSelectConditionsPaiements((GETPOSTISSET(
'cond_reglement_id') &&
GETPOST(
'cond_reglement_id') != 0) ?
GETPOST(
'cond_reglement_id') : $cond_reglement_id,
'cond_reglement_id', -1, 1);
1736 print
'<tr><td>'.$langs->trans(
'PaymentMode').
'</td><td>';
1737 print
img_picto(
'',
'bank',
'class="pictofixedwidth"');
1738 $form->select_types_paiements((GETPOSTISSET(
'mode_reglement_id') &&
GETPOSTINT(
'mode_reglement_id') != 0) ?
GETPOST(
'mode_reglement_id') : $mode_reglement_id,
'mode_reglement_id');
1743 print $langs->trans(
'DateDeliveryPlanned');
1750 print
img_picto(
'',
'action',
'class="pictofixedwidth"');
1752 print $form->selectDate($datelivraison ? $datelivraison : -1,
'liv_', $usehourmin, $usehourmin, 0,
"set");
1757 if (
getDolGlobalString(
'BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER') && isModEnabled(
"bank")) {
1758 $langs->load(
"bank");
1759 print
'<tr><td>'.$langs->trans(
'BankAccount').
'</td><td>';
1760 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
1761 $form->select_comptes($fk_account,
'fk_account', 0,
'', 1);
1766 if (isModEnabled(
'project')) {
1769 $langs->load(
'projects');
1770 print
'<tr><td>'.$langs->trans(
'Project').
'</td><td>';
1771 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');
1772 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>';
1777 if (isModEnabled(
'incoterm')) {
1778 $fkincoterms = (!empty(
$object->fk_incoterms) ?
$object->fk_incoterms : ($socid > 0 ? $societe->fk_incoterms :
''));
1779 $locincoterms = (!empty(
$object->location_incoterms) ?
$object->location_incoterms : ($socid > 0 ? $societe->location_incoterms :
''));
1781 print
'<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans(
"IncotermLabel"),
$object->label_incoterms, 1).
'</label></td>';
1782 print
'<td class="maxwidthonsmartphone">';
1783 print
img_picto(
'',
'incoterm',
'class="pictofixedwidth"');
1784 print $form->select_incoterms($fkincoterms, $locincoterms);
1789 if (isModEnabled(
"multicurrency")) {
1791 print
'<td>'.$form->editfieldkey(
'Currency',
'multicurrency_code',
'',
$object, 0).
'</td>';
1792 print
'<td class="maxwidthonsmartphone">';
1793 print
img_picto(
'',
'currency',
'class="pictofixedwidth"');
1794 print $form->selectMultiCurrency($currency_code,
'multicurrency_code');
1798 print
'<tr><td>'.$langs->trans(
'NotePublic').
'</td>';
1800 $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%');
1801 print $doleditor->Create(1);
1806 print
'<tr><td>'.$langs->trans(
'NotePrivate').
'</td>';
1808 $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%');
1809 print $doleditor->Create(1);
1814 if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
1815 print
"\n<!-- ".$classname.
" info -->";
1817 print
'<input type="hidden" name="amount" value="'.$objectsrc->total_ht.
'">'.
"\n";
1818 print
'<input type="hidden" name="total" value="'.$objectsrc->total_ttc.
'">'.
"\n";
1819 print
'<input type="hidden" name="tva" value="'.$objectsrc->total_tva.
'">'.
"\n";
1820 print
'<input type="hidden" name="origin" value="'.$objectsrc->element.
'">';
1821 print
'<input type="hidden" name="originid" value="'.$objectsrc->id.
'">';
1823 $newclassname = $classname;
1824 print
'<tr><td>'.$langs->trans($newclassname).
'</td><td>'.$objectsrc->getNomUrl(1,
'supplier').
'</td></tr>';
1825 print
'<tr><td>'.$langs->trans(
'AmountHT').
'</td><td>'.
price($objectsrc->total_ht).
'</td></tr>';
1826 print
'<tr><td>'.$langs->trans(
'AmountVAT').
'</td><td>'.
price($objectsrc->total_tva).
"</td></tr>";
1827 if ($mysoc->localtax1_assuj ==
"1" || $objectsrc->total_localtax1 != 0) {
1828 print
'<tr><td>'.$langs->transcountry(
"AmountLT1", $mysoc->country_code).
'</td><td>'.
price($objectsrc->total_localtax1).
"</td></tr>";
1831 if ($mysoc->localtax2_assuj ==
"1" || $objectsrc->total_localtax2 != 0) {
1832 print
'<tr><td>'.$langs->transcountry(
"AmountLT2", $mysoc->country_code).
'</td><td>'.
price($objectsrc->total_localtax2).
"</td></tr>";
1835 print
'<tr><td>'.$langs->trans(
'AmountTTC').
'</td><td>'.
price($objectsrc->total_ttc).
"</td></tr>";
1837 if (isModEnabled(
"multicurrency")) {
1838 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountHT').
'</td><td>'.
price($objectsrc->multicurrency_total_ht).
'</td></tr>';
1839 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountVAT').
'</td><td>'.
price($objectsrc->multicurrency_total_tva).
'</td></tr>';
1840 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountTTC').
'</td><td>'.
price($objectsrc->multicurrency_total_ttc).
'</td></tr>';
1845 $parameters = array();
1846 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters,
$object, $action);
1847 print $hookmanager->resPrint;
1849 if (empty($reshook)) {
1850 print
$object->showOptionals($extrafields,
'create');
1858 print $form->buttonsSaveCancel(
"CreateDraft");
1861 if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
1862 $title = $langs->trans(
'ProductsAndServices');
1865 print
'<div class="div-table-responsive-no-min">';
1866 print
'<table class="noborder centpercent">';
1868 $selectedLines = array();
1870 $objectsrc->printOriginLinesList(
'', $selectedLines);
1876} elseif (!empty(
$object->id)) {
1878 $result =
$object->fetch($id, $ref);
1881 $societe =
$object->thirdparty;
1883 $author =
new User($db);
1884 $author->fetch(
$object->user_author_id);
1888 $title = $langs->trans(
"SupplierOrder");
1895 if ($action ==
'delete') {
1896 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id, $langs->trans(
'DeleteOrder'), $langs->trans(
'ConfirmDeleteOrder'),
'confirm_delete',
'', 0, 2);
1900 if ($action ==
'clone') {
1901 $filter =
'(s.fournisseur:=:1)';
1903 $formquestion = array(
1904 array(
'type' =>
'other',
'name' =>
'socid',
'label' => $langs->trans(
"SelectThirdParty"),
'value' => $form->select_company(
GETPOSTINT(
'socid'),
'socid', $filter))
1907 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id, $langs->trans(
'ToClone'), $langs->trans(
'ConfirmCloneOrder',
$object->ref),
'confirm_clone', $formquestion,
'yes', 1);
1911 if ($action ==
'valid') {
1915 if (preg_match(
'/^[\(]?PROV/i',
$object->ref) || empty(
$object->ref)) {
1925 $text = $langs->trans(
'ConfirmValidateOrder', $newref);
1926 if (isModEnabled(
'notification')) {
1927 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
1928 $notify =
new Notify($db);
1930 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_VALIDATE',
$object->socid,
$object);
1933 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id, $langs->trans(
'ValidateOrder'), $text,
'confirm_valid',
'', 0, 1);
1938 if ($action ==
'approve' || $action ==
'approve2') {
1939 $qualified_for_stock_change = 0;
1941 $qualified_for_stock_change =
$object->hasProductsOrServices(2);
1943 $qualified_for_stock_change =
$object->hasProductsOrServices(1);
1946 $formquestion = array();
1947 if (isModEnabled(
'stock') &&
getDolGlobalString(
'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER') && $qualified_for_stock_change) {
1948 $langs->load(
"stocks");
1949 require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
1952 if ($conf->browser->name ==
'ie') {
1955 $formquestion = array(
1959 array(
'type' =>
'other',
'name' =>
'idwarehouse',
'label' => $langs->trans(
"SelectWarehouseForStockIncrease"),
'value' => $formproduct->selectWarehouses(
GETPOSTINT(
'idwarehouse'),
'idwarehouse',
'', 1, 0, 0,
'', 0, $forcecombo))
1962 $text = $langs->trans(
"ConfirmApproveThisOrder",
$object->ref);
1963 if (isModEnabled(
'notification')) {
1964 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
1965 $notify =
new Notify($db);
1967 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_APPROVE',
$object->socid,
$object);
1970 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=".
$object->id, $langs->trans(
"ApproveThisOrder"), $text,
"confirm_".$action, $formquestion, 1, 1, 240);
1974 if ($action ==
'refuse') {
1975 $formquestion = array(
1978 'name' =>
'refuse_note',
1979 'label' => $langs->trans(
"Reason"),
1981 'morecss' =>
'minwidth300'
1984 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=$object->id", $langs->trans(
"DenyingThisOrder"), $langs->trans(
"ConfirmDenyingThisOrder",
$object->ref),
"confirm_refuse", $formquestion, 0, 1);
1988 if ($action ==
'cancel') {
1989 $formquestion = array(
1992 'name' =>
'cancel_note',
1993 'label' => $langs->trans(
"Reason"),
1995 'morecss' =>
'minwidth300'
1998 if (isModEnabled(
'notification')) {
1999 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
2000 $notify =
new Notify($db);
2002 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_CANCEL',
$object->socid,
$object);
2004 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=$object->id", $langs->trans(
"Cancel"), $langs->trans(
"ConfirmCancelThisOrder",
$object->ref),
"confirm_cancel", $formquestion, 0, 1);
2008 if ($action ==
'commande') {
2010 if (isModEnabled(
'notification')) {
2011 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
2012 $notify =
new Notify($db);
2014 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_SUBMIT',
$object->socid,
$object);
2016 $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);
2020 if ($action ==
'ask_deleteline') {
2021 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&lineid='.$lineid, $langs->trans(
'DeleteProductLine'), $langs->trans(
'ConfirmDeleteProductLine'),
'confirm_deleteline',
'', 0, 1);
2024 $parameters = array(
'formConfirm' => $formconfirm,
'lineid' => $lineid);
2025 $reshook = $hookmanager->executeHooks(
'formConfirm', $parameters,
$object, $action);
2026 if (empty($reshook)) {
2027 $formconfirm .= $hookmanager->resPrint;
2028 } elseif ($reshook > 0) {
2029 $formconfirm = $hookmanager->resPrint;
2038 $linkback =
'<a href="'.DOL_URL_ROOT.
'/fourn/commande/list.php?restore_lastsearch_values=1'.(!empty($socid) ?
'&socid='.$socid :
'').
'">'.$langs->trans(
"BackToList").
'</a>';
2040 $morehtmlref =
'<div class="refidno">';
2042 $morehtmlref .= $form->editfieldkey(
"RefSupplier",
'ref_supplier',
$object->ref_supplier,
$object, $usercancreate,
'string',
'', 0, 1);
2043 $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);
2045 $morehtmlref .=
'<br>';
2046 if (
getDolGlobalString(
'MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER') && !empty($usercancreate) && $action ==
'edit_thirdparty') {
2047 $morehtmlref .=
'<form method="post" action="'.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id.
'">';
2048 $morehtmlref .=
'<input type="hidden" name="action" value="set_thirdparty">';
2049 $morehtmlref .=
'<input type="hidden" name="token" value="'.newToken().
'">';
2050 $filter =
'(s.fournisseur:=:1)';
2051 $morehtmlref .= $form->select_company(
$object->thirdparty->id,
'new_socid', $filter,
'', 0, 0, array(), 0,
'minwidth300');
2052 $morehtmlref .=
'<input type="submit" class="button valignmiddle" value="'.$langs->trans(
"Modify").
'">';
2053 $morehtmlref .=
'</form>';
2055 if (!
getDolGlobalString(
'MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER') || $action !=
'edit_thirdparty') {
2057 $morehtmlref .=
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=edit_thirdparty&token='.
newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetThirdParty')).
'</a>';
2059 $morehtmlref .=
$object->thirdparty->getNomUrl(1,
'supplier');
2061 $morehtmlref .=
' (<a href="'.DOL_URL_ROOT.
'/fourn/commande/list.php?socid='.
$object->thirdparty->id.
'&search_company='.urlencode(
$object->thirdparty->name).
'">'.$langs->trans(
"OtherOrders").
'</a>)';
2066 if (isModEnabled(
'project')) {
2067 $langs->load(
"projects");
2068 $morehtmlref .=
'<br>';
2069 if ($permissiontoadd) {
2070 $morehtmlref .=
img_picto($langs->trans(
"Project"),
'project',
'class="pictofixedwidth"');
2071 if ($action !=
'classify' && $caneditproject) {
2072 $morehtmlref .=
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=classify&token='.
newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetProject')).
'</a> ';
2074 $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');
2076 if (!empty(
$object->fk_project)) {
2078 $proj->fetch(
$object->fk_project);
2079 $morehtmlref .= $proj->getNomUrl(1);
2081 $morehtmlref .=
'<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).
'</span>';
2086 $morehtmlref .=
'</div>';
2089 dol_banner_tab(
$object,
'ref', $linkback, 1,
'ref',
'ref', $morehtmlref);
2092 $parameters = array();
2094 $reshook = $hookmanager->executeHooks(
'tabContentViewSupplierOrder', $parameters,
$object, $action);
2095 if (empty($reshook)) {
2096 print
'<div class="fichecenter">';
2097 print
'<div class="fichehalfleft">';
2098 print
'<div class="underbanner clearboth"></div>';
2100 print
'<table class="border tableforfield centpercent">';
2103 if (
$object->methode_commande_id > 0) {
2108 print
'<tr><td class="titlefield">'.$langs->trans(
"Date").
'</td><td>';
2111 print
' '.img_picto($langs->trans(
"Late").
' : '.
$object->showDelay(),
"warning");
2115 if (
$object->methode_commande) {
2116 print
'<tr><td>'.$langs->trans(
"Method").
'</td><td>'.
$object->getInputMethod().
'</td></tr>';
2121 print
'<tr><td class="titlefield">'.$langs->trans(
"AuthorRequest").
'</td>';
2122 print
'<td>'.$author->getNomUrl(-1,
'', 0, 0, 0).
'</td>';
2127 $filterabsolutediscount =
"fk_invoice_supplier_source IS NULL";
2128 $filtercreditnote =
"fk_invoice_supplier_source IS NOT NULL";
2130 $filterabsolutediscount =
"fk_invoice_supplier_source IS NULL OR (description LIKE '(DEPOSIT)%' AND description NOT LIKE '(EXCESS PAID)%')";
2131 $filtercreditnote =
"fk_invoice_supplier_source IS NOT NULL AND (description NOT LIKE '(DEPOSIT)%' OR description LIKE '(EXCESS PAID)%')";
2134 $absolute_discount = $societe->getAvailableDiscounts(
null, $filterabsolutediscount, 0, 1);
2135 $absolute_creditnote = $societe->getAvailableDiscounts(
null, $filtercreditnote, 0, 1);
2136 $absolute_discount =
price2num($absolute_discount,
'MT');
2137 $absolute_creditnote =
price2num($absolute_creditnote,
'MT');
2139 print
'<tr><td class="titlefield">'.$langs->trans(
'Discounts').
'</td><td>';
2141 $thirdparty = $societe;
2143 $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?id='.
$object->id);
2144 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
2149 $langs->load(
'bills');
2150 print
'<tr><td class="nowrap">';
2151 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
2152 print $langs->trans(
'PaymentConditions');
2154 if ($action !=
'editconditions' && $permissiontoadd) {
2155 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>';
2157 print
'</tr></table>';
2159 if ($action ==
'editconditions') {
2160 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->cond_reglement_id,
'cond_reglement_id');
2162 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->cond_reglement_id,
'none');
2168 $langs->load(
'bills');
2169 print
'<tr><td class="nowrap">';
2170 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
2171 print $langs->trans(
'PaymentMode');
2173 if ($action !=
'editmode' && $permissiontoadd) {
2174 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>';
2176 print
'</tr></table>';
2178 if ($action ==
'editmode') {
2179 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->mode_reglement_id,
'mode_reglement_id',
'DBIT', 1, 1);
2181 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->mode_reglement_id,
'none');
2186 if (
getDolGlobalString(
'BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER') && isModEnabled(
"bank")) {
2187 print
'<tr><td class="nowrap">';
2188 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
2189 print $langs->trans(
'BankAccount');
2191 if ($action !=
'editbankaccount' && $permissiontoadd) {
2192 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>';
2194 print
'</tr></table>';
2196 if ($action ==
'editbankaccount') {
2197 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->fk_account,
'fk_account', 1);
2199 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->fk_account,
'none');
2207 print
'<td>'.$langs->trans(
'NbDaysToDelivery').
' '.
img_picto($langs->trans(
'DescNbDaysToDelivery'),
'info',
'style="cursor:help"').
'</td>';
2208 print
'<td>'.$object->getMaxDeliveryTimeDay($langs).
'</td>';
2213 print
'<table class="nobordernopadding centpercent"><tr><td>';
2214 print $langs->trans(
'DateDeliveryPlanned');
2216 if ($action !=
'editdate_livraison') {
2217 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>';
2219 print
'</tr></table>';
2221 if ($action ==
'editdate_livraison') {
2222 print
'<form name="setdate_livraison" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
2223 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2224 print
'<input type="hidden" name="action" value="setdate_livraison">';
2229 print $form->selectDate(
$object->delivery_date ?
$object->delivery_date : -1,
'liv_', $usehourmin, $usehourmin, 0,
"setdate_livraison");
2230 print
'<input type="submit" class="button button-edit smallpaddingimp valign middle" value="'.$langs->trans(
'Modify').
'">';
2233 $usehourmin =
'day';
2235 $usehourmin =
'dayhour';
2238 if (
$object->hasDelay() && !empty(
$object->delivery_date) && (
$object->statut == $object::STATUS_ORDERSENT ||
$object->statut == $object::STATUS_RECEIVED_PARTIALLY)) {
2239 print
' '.img_picto($langs->trans(
"Late").
' : '.
$object->showDelay(),
"warning");
2245 if (isModEnabled(
'incoterm')) {
2247 print
'<table class="nobordernopadding centpercent"><tr><td>';
2248 print $langs->trans(
'IncotermLabel');
2249 print
'<td><td class="right">';
2250 if ($usercancreate) {
2251 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/fourn/commande/card.php?id='.
$object->id.
'&action=editincoterm&token='.
newToken().
'">'.
img_edit().
'</a>';
2255 print
'</td></tr></table>';
2258 if ($action !=
'editincoterm') {
2261 print $form->select_incoterms((!empty(
$object->fk_incoterms) ?
$object->fk_incoterms :
''), (!empty(
$object->location_incoterms) ?
$object->location_incoterms :
''), $_SERVER[
'PHP_SELF'].
'?id='.
$object->id);
2267 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
2272 print
'<div class="fichehalfright">';
2273 print
'<div class="underbanner clearboth"></div>';
2275 print
'<table class="border tableforfield centpercent">';
2277 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_currency_amount.tpl.php';
2281 print
'<td class="titlefieldmiddle">' . $langs->trans(
'AmountHT') .
'</td>';
2282 print
'<td class="nowrap amountcard right">' .
price(
$object->total_ht, 0, $langs, 0, -1, -1, $conf->currency) .
'</td>';
2283 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code != $conf->currency)) {
2285 print
'<td class="nowrap amountcard right">' .
price(
$object->multicurrency_total_ht, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2291 print
'<td class="titlefieldmiddle">' . $langs->trans(
'AmountVAT') .
'</td>';
2292 print
'<td class="nowrap amountcard right">' .
price(
$object->total_tva, 0, $langs, 0, -1, -1, $conf->currency) .
'</td>';
2293 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code != $conf->currency)) {
2295 print
'<td class="nowrap amountcard right">' .
price(
$object->multicurrency_total_tva, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2300 if ($mysoc->localtax1_assuj ==
"1" ||
$object->total_localtax1 != 0) {
2302 print
'<td class="titlefieldmiddle">' . $langs->transcountry(
"AmountLT1", $mysoc->country_code) .
'</td>';
2303 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax1, 0, $langs, 0, -1, -1, $conf->currency) .
'</td>';
2304 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code != $conf->currency)) {
2305 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax1, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2309 if ($mysoc->localtax2_assuj ==
"1" ||
$object->total_localtax2 != 0) {
2311 print
'<td>' . $langs->transcountry(
"AmountLT2", $mysoc->country_code) .
'</td>';
2312 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax2, 0, $langs, 0, -1, -1, $conf->currency) .
'</td>';
2313 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code != $conf->currency)) {
2314 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax2, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2322 $alert =
' ' .
img_warning($langs->trans(
'OrderMinAmount') .
': ' .
price(
$object->thirdparty->supplier_order_min_amount));
2327 print
'<td>' . $langs->trans(
'AmountTTC') .
'</td>';
2328 print
'<td class="nowrap amountcard right">' .
price(
$object->total_ttc, 0, $langs, 0, -1, -1, $conf->currency) . $alert .
'</td>';
2329 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code != $conf->currency)) {
2331 print
'<td class="nowrap amountcard right">' .
price(
$object->multicurrency_total_ttc, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2346 print
'<div class="clearboth"></div><br>';
2349 $blocname =
'contacts';
2350 $title = $langs->trans(
'ContactsAddresses');
2351 include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
2355 $blocname =
'notes';
2356 $title = $langs->trans(
'Notes');
2357 include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
2366 print
' <form name="addproduct" id="addproduct" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.(($action !=
'editline') ?
'' :
'#line_'.
GETPOSTINT(
'lineid')).
'" method="POST">
2367 <input type="hidden" name="token" value="'.
newToken().
'">
2368 <input type="hidden" name="action" value="' . (($action !=
'editline') ?
'addline' :
'updateline').
'">
2369 <input type="hidden" name="mode" value="">
2370 <input type="hidden" name="page_y" value="">
2371 <input type="hidden" name="id" value="'.
$object->id.
'">
2372 <input type="hidden" name="socid" value="'.$societe->id.
'">
2375 if (!empty($conf->use_javascript_ajax) &&
$object->statut == 0) {
2376 include DOL_DOCUMENT_ROOT.
'/core/tpl/ajaxrow.tpl.php';
2379 print
'<div class="div-table-responsive-no-min">';
2380 print
'<table id="tablelines" class="noborder noshadow centpercent">';
2383 global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax;
2386 $inputalsopricewithtax = 1;
2387 $senderissupplier = 2;
2389 $senderissupplier = 1;
2394 $object->printObjectLines($action,
$object->thirdparty, $mysoc, $lineid, 1);
2401 if ($action !=
'editline') {
2404 $parameters = array();
2405 $reshook = $hookmanager->executeHooks(
'formAddObjectLine', $parameters,
$object, $action);
2409 if (empty($reshook)) {
2410 $object->formAddObjectLine(1, $societe, $mysoc);
2425 if ($user->socid == 0 && $action !=
'delete') {
2426 if ($action !=
'createorder' && $action !=
'presend' && $action !=
'editline') {
2427 print
'<div class="tabsAction">';
2429 $parameters = array();
2430 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters,
$object, $action);
2432 if (empty($reshook)) {
2436 if (
$object->statut == 0 && $num > 0) {
2437 if ($usercanvalidate) {
2438 $tmpbuttonlabel = $langs->trans(
'Validate');
2440 $tmpbuttonlabel = $langs->trans(
"ValidateAndApprove");
2443 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=valid&token='.
newToken().
'">';
2444 print $tmpbuttonlabel;
2456 if ($usercanorder) {
2457 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Modify").
'</a>';
2463 if ($usercanapprove) {
2464 if (
getDolGlobalString(
'SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED') &&
$object->total_ht >= $conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED && !empty(
$object->user_approve_id)) {
2465 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"FirstApprovalAlreadyDone")).
'">'.$langs->trans(
"ApproveOrder").
'</a>';
2467 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=approve">'.$langs->trans(
"ApproveOrder").
'</a>';
2470 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"ApproveOrder").
'</a>';
2475 if (
getDolGlobalString(
'SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED') &&
$object->total_ht >= $conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) {
2477 if ($usercanapprovesecond) {
2478 if (!empty(
$object->user_approve_id2)) {
2479 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"SecondApprovalAlreadyDone")).
'">'.$langs->trans(
"Approve2Order").
'</a>';
2481 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=approve2">'.$langs->trans(
"Approve2Order").
'</a>';
2484 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"Approve2Order").
'</a>';
2491 if ($usercanapprove || $usercanapprovesecond) {
2492 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=refuse">'.$langs->trans(
"RefuseOrder").
'</a>';
2494 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"RefuseOrder").
'</a>';
2499 if (empty($user->socid)) {
2501 if ($usercanorder) {
2502 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=presend&mode=init#formmailbeforetitle">'.$langs->trans(
'SendMail').
'</a>';
2510 if (!$buttonshown && $usercanapprove) {
2513 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Disapprove").
'</a>';
2517 if (!$buttonshown && $usercanapprovesecond &&
getDolGlobalString(
'SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED')) {
2520 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Disapprove").
'</a>';
2524 if (in_array(
$object->statut, array(3, 4, 5, 6, 7, 9))) {
2525 if ($usercanorder) {
2526 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"ReOpen").
'</a>';
2533 $labelofbutton = $langs->trans(
'ReceiveProducts');
2534 if (isModEnabled(
'reception')) {
2535 $labelofbutton = $langs->trans(
"CreateReception");
2536 if (!empty(
$object->linkedObjects[
'reception'])) {
2537 foreach (
$object->linkedObjects[
'reception'] as $element) {
2538 if ($element->statut >= 0) {
2546 if (in_array(
$object->statut, array(3, 4, 5))) {
2547 if (isModEnabled(
"supplier_order") && $usercanreceive) {
2548 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/fourn/commande/dispatch.php?id='.
$object->id.
'">'.$labelofbutton.
'</a></div>';
2550 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$labelofbutton.
'</a></div>';
2556 if ($usercanorder) {
2557 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>';
2559 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#">'.$langs->trans(
"MakeOrder").
'</a></div>';
2565 if ($usercanreceive) {
2566 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>';
2573 if (isModEnabled(
"supplier_invoice") && (
$object->statut >= 2 &&
$object->statut != 7 &&
$object->billed != 1)) {
2574 if ($user->hasRight(
'fournisseur',
'facture',
'creer') || $user->hasRight(
"supplier_invoice",
"creer")) {
2575 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>';
2582 if (!isModEnabled(
'invoice')) {
2583 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifybilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
2585 if (!empty(
$object->linkedObjectsIds[
'invoice_supplier']) || (empty(
$object->linkedObjectsIds[
'invoice_supplier']) && !
getDolGlobalInt(
'SUPPLIER_ORDER_DISABLE_CLASSIFY_BILLED_FROM_SUPPLIER_ORDER'))) {
2586 if ($user->hasRight(
'fournisseur',
'facture',
'creer') || $user->hasRight(
"supplier_invoice",
"creer")) {
2587 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifybilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
2590 print
'<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans(
"NeedAtLeastOneInvoice")).
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
2596 if ($usercancreate &&
$object->billed > 0 &&
$object->statut > $object::STATUS_DRAFT) {
2597 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifyunbilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyUnbilled").
'</a>';
2601 if ($usercancreate) {
2602 print
'<a class="butAction" href="'.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id.
'&socid='.
$object->socid.
'&action=clone&token='.
newToken().
'&object=order">'.$langs->trans(
"ToClone").
'</a>';
2607 if ($usercanorder) {
2608 print
'<a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=cancel&token='.
newToken().
'">'.$langs->trans(
"CancelOrder").
'</a>';
2613 if (!empty($usercandelete)) {
2614 if ($hasreception) {
2615 print
'<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans(
"ReceptionExist").
'">'.$langs->trans(
"Delete").
'</a>';
2617 print
'<a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=delete&token='.
newToken().
'">'.$langs->trans(
"Delete").
'</a>';
2627 print
'<!-- form to record supplier order -->'.
"\n";
2628 print
'<form name="commande" id="makeorder" action="card.php?id='.$object->id.
'&action=commande" method="POST">';
2630 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2631 print
'<input type="hidden" name="action" value="commande">';
2633 print
'<table class="noborder centpercent">';
2635 print
'<tr><td class="fieldrequired">'.$langs->trans(
"OrderDate").
'</td><td>';
2637 print $form->selectDate($date_com ?:
'',
'', 0, 0, 0,
"commande", 1, 1);
2641 print
'<tr><td class="fieldrequired">'.$langs->trans(
"OrderMode").
'</td><td>';
2642 $formorder->selectInputMethod(
GETPOST(
'methodecommande'),
"methodecommande", 1);
2645 print
'<tr><td>'.$langs->trans(
"Comment").
'</td><td><input class="quatrevingtpercent" type="text" name="comment" value="'.
GETPOST(
'comment').
'"></td></tr>';
2647 print
'<tr><td class="center" colspan="2">';
2648 print
'<input type="submit" name="makeorder" class="button" value="'.$langs->trans(
"ToOrder").
'">';
2649 print
' ';
2650 print
'<input type="submit" name="cancel" class="button button-cancel" value="'.$langs->trans(
"Cancel").
'">';
2659 if (
GETPOST(
'modelselected')) {
2660 $action =
'presend';
2663 if ($action !=
'createorder' && $action !=
'presend') {
2664 print
'<div class="fichecenter"><div class="fichehalfleft">';
2668 $file = $conf->fournisseur->dir_output.
'/commande/'.$objref.
'/'.$objref.
'.pdf';
2669 $relativepath = $objref.
'/'.$objref.
'.pdf';
2670 $filedir = $conf->fournisseur->dir_output.
'/commande/'.$objref;
2671 $urlsource = $_SERVER[
"PHP_SELF"].
"?id=".
$object->id;
2672 $genallowed = $usercanread;
2673 $delallowed = $usercancreate;
2674 $modelpdf = (!empty(
$object->model_pdf) ?
$object->model_pdf : (!
getDolGlobalString(
'COMMANDE_SUPPLIER_ADDON_PDF') ?
'' : $conf->global->COMMANDE_SUPPLIER_ADDON_PDF));
2676 print $formfile->showdocuments(
'commande_fournisseur', $objref, $filedir, $urlsource, $genallowed, $delallowed, $modelpdf, 1, 0, 0, 0, 0,
'',
'',
'',
$object->thirdparty->default_lang,
'',
$object);
2677 $somethingshown = $formfile->numoffiles;
2680 $tmparray = $form->showLinkToObjectBlock(
$object, array(), array(
'supplier_order',
'order_supplier'), 1);
2681 $linktoelem = $tmparray[
'linktoelem'];
2682 $htmltoenteralink = $tmparray[
'htmltoenteralink'];
2683 print $htmltoenteralink;
2685 $somethingshown = $form->showLinkedObjectBlock(
$object, $linktoelem);
2687 print
'</div><div class="fichehalfright">';
2689 if ($action ==
'classifyreception') {
2692 print
'<!-- form to record purchase order received -->'.
"\n";
2693 print
'<form id="classifyreception" action="card.php?id='.$object->id.
'" method="post">';
2694 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2695 print
'<input type="hidden" name="action" value="livraison">';
2698 print
'<table class="noborder centpercent">';
2700 print
'<tr><td>'.$langs->trans(
"DeliveryDate").
'</td><td>';
2702 print $form->selectDate($datepreselected,
'', 1, 1, 0,
"commande", 1, 1);
2703 print
"</td></tr>\n";
2705 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Delivery").
"</td><td>\n";
2707 $liv[
''] =
' ';
2708 $liv[
'tot'] = $langs->trans(
"CompleteOrNoMoreReceptionExpected");
2709 $liv[
'par'] = $langs->trans(
"PartialWoman");
2710 $liv[
'nev'] = $langs->trans(
"NeverReceived");
2711 $liv[
'can'] = $langs->trans(
"Canceled");
2713 print $form->selectarray(
"type", $liv);
2716 print
'<tr><td>'.$langs->trans(
"Comment").
'</td><td><input class="quatrevingtpercent" type="text" name="comment"></td></tr>';
2717 print
'<tr><td class="center" colspan="2">';
2718 print
'<input type="submit" name="receive" class="button" value="'.$langs->trans(
"Receive").
'">';
2719 print
' ';
2720 print
'<input type="submit" name="cancel" class="button button-cancel" value="'.$langs->trans(
"Cancel").
'">';
2729 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formactions.class.php';
2731 $somethingshown = $formactions->showactions(
$object,
'order_supplier', $socid, 1,
'listaction'.($genallowed ?
'largetitle' :
''));
2733 print
'</div></div>';
2739 if ($action ==
'webservice' &&
GETPOST(
'mode',
'alpha') !=
"send" && !
GETPOST(
'cancel',
'alpha')) {
2740 $mode =
GETPOST(
'mode',
'alpha');
2741 $ws_url =
$object->thirdparty->webservices_url;
2742 $ws_key =
$object->thirdparty->webservices_key;
2743 $ws_user =
GETPOST(
'ws_user',
'alpha');
2744 $ws_password =
GETPOST(
'ws_password',
'alpha');
2745 $error_occurred =
false;
2748 $ws_ns =
'http://www.dolibarr.org/ns/';
2749 $ws_authentication = array(
2750 'dolibarrkey' => $ws_key,
2751 'sourceapplication' =>
'DolibarrWebServiceClient',
2752 'login' => $ws_user,
2753 'password' => $ws_password,
2760 if (empty($ws_url) || empty($ws_key)) {
2761 setEventMessages($langs->trans(
"ErrorWebServicesFieldsRequired"),
null,
'errors');
2763 $error_occurred =
true;
2764 } elseif ($mode !=
"init" && (empty($ws_user) || empty($ws_password))) {
2769 if ($mode ==
"init") {
2771 print
'<table class="border centpercent">';
2772 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
2773 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2774 print
'<input type="hidden" name="action" value="webservice">';
2775 print
'<input type="hidden" name="mode" value="check">';
2777 if ($error_occurred) {
2778 print
"<br>".$langs->trans(
"ErrorOccurredReviseAndRetry").
"<br>";
2779 print
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
2782 print
'<tr><td>'.$langs->trans(
"WebServiceURL").
'</td><td colspan="3">'.
dol_print_url($ws_url).
'</td></tr>';
2784 print
'<tr><td>'.$langs->trans(
"User").
'</td><td><input class="width100" type="text" name="ws_user"></td></tr>';
2786 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td><input class="width100" type="text" name="ws_password"></td></tr>';
2788 print
'<tr><td class="center" colspan="2">';
2789 print
'<input type="submit" class="button" id="ws_submit" name="ws_submit" value="'.$langs->trans(
"CreateRemoteOrder").
'">';
2790 print
' ';
2792 print
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
2799 } elseif ($mode ==
"check") {
2801 $ws_thirdparty =
'';
2802 $error_occurred =
false;
2805 $soapclient_user =
new nusoap_client($ws_url.
"/webservices/server_user.php");
2806 $soapclient_user->soap_defencoding =
'UTF-8';
2807 $soapclient_user->decodeUTF8(
false);
2810 $ws_parameters = array(
'authentication' => $ws_authentication,
'id' =>
'',
'ref' => $ws_user);
2811 $result_user = $soapclient_user->call(
"getUser", $ws_parameters, $ws_ns,
'');
2812 $user_status_code = $result_user[
"result"][
"result_code"];
2814 if ($user_status_code ==
"OK") {
2816 $ws_entity = $result_user[
"user"][
"entity"];
2817 $ws_authentication[
'entity'] = $ws_entity;
2818 $ws_thirdparty = $result_user[
"user"][
"fk_thirdparty"];
2819 if (empty($ws_thirdparty)) {
2820 setEventMessages($langs->trans(
"RemoteUserMissingAssociatedSoc"),
null,
'errors');
2821 $error_occurred =
true;
2824 $soapclient_product =
new nusoap_client($ws_url.
"/webservices/server_productorservice.php");
2825 $soapclient_product->soap_defencoding =
'UTF-8';
2826 $soapclient_product->decodeUTF8(
false);
2830 foreach (
$object->lines as $line) {
2832 $ref_supplier = $line->ref_supplier;
2833 $line_id = $i.
"º) ".$line->product_ref.
": ";
2834 if (empty($ref_supplier)) {
2837 $ws_parameters = array(
'authentication' => $ws_authentication,
'id' =>
'',
'ref' => $ref_supplier);
2838 $result_product = $soapclient_product->call(
"getProductOrService", $ws_parameters, $ws_ns,
'');
2839 if (!$result_product) {
2840 setEventMessages($line_id.$langs->trans(
"Error").
" SOAP ".$soapclient_product->error_str.
" - ".$soapclient_product->response,
null,
'errors');
2841 $error_occurred =
true;
2846 $status_code = $result_product[
"result"][
"result_code"];
2847 if (empty($status_code)) {
2848 setEventMessages($langs->trans(
"Error").
" SOAP '".$soapclient_product->error_str.
"'",
null,
'errors');
2849 } elseif ($status_code !=
"OK") {
2850 if ($status_code ==
"NOT_FOUND") {
2851 setEventMessages($line_id.$langs->trans(
"SupplierMissingRef").
" '".$ref_supplier.
"'",
null,
'warnings');
2853 setEventMessages($line_id.$langs->trans(
"ResponseNonOK").
" '".$status_code.
"' - '".$result_product[
"result"][
"result_label"].
"'",
null,
'errors');
2854 $error_occurred =
true;
2861 $supplier_price =
price($result_product[
"product"][
"price_net"]);
2862 $local_price =
null;
2865 $product_fourn_list = $product_fourn->list_product_fournisseur_price($line->fk_product);
2866 if (count($product_fourn_list) > 0) {
2867 foreach ($product_fourn_list as $product_fourn_line) {
2869 if ($product_fourn_line->fourn_id ==
$object->socid && $product_fourn_line->fourn_ref == $ref_supplier) {
2870 $local_price =
price($product_fourn_line->fourn_price);
2875 if ($local_price !=
null && $local_price != $supplier_price) {
2876 setEventMessages($line_id.$langs->trans(
"RemotePriceMismatch").
" ".$supplier_price.
" - ".$local_price,
null,
'warnings');
2880 if (empty($result_product[
"product"][
"status_tosell"])) {
2881 setEventMessages($line_id.$langs->trans(
"ProductStatusNotOnSellShort").
" '".$ref_supplier.
"'",
null,
'warnings');
2885 } elseif ($user_status_code ==
"PERMISSION_DENIED") {
2886 setEventMessages($langs->trans(
"RemoteUserNotPermission"),
null,
'errors');
2887 $error_occurred =
true;
2888 } elseif ($user_status_code ==
"BAD_CREDENTIALS") {
2889 setEventMessages($langs->trans(
"RemoteUserBadCredentials"),
null,
'errors');
2890 $error_occurred =
true;
2892 setEventMessages($langs->trans(
"ResponseNonOK").
" '".$user_status_code.
"'",
null,
'errors');
2893 $error_occurred =
true;
2897 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
2898 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2899 print
'<input type="hidden" name="action" value="webservice">';
2900 print
'<input type="hidden" name="mode" value="send">';
2901 print
'<input type="hidden" name="ws_user" value="'.$ws_user.
'">';
2902 print
'<input type="hidden" name="ws_password" value="'.$ws_password.
'">';
2903 print
'<input type="hidden" name="ws_entity" value="'.$ws_entity.
'">';
2904 print
'<input type="hidden" name="ws_thirdparty" value="'.$ws_thirdparty.
'">';
2905 if ($error_occurred) {
2906 print
"<br>".$langs->trans(
"ErrorOccurredReviseAndRetry").
"<br>";
2908 print
'<input type="submit" class="button" id="ws_submit" name="ws_submit" value="'.$langs->trans(
"Confirm").
'">';
2909 print
' ';
2911 print
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
2917 $modelmail =
'order_supplier_send';
2918 $defaulttopic =
'SendOrderRef';
2919 $diroutput = $conf->fournisseur->commande->dir_output;
2920 $autocopy =
'MAIN_MAIL_AUTOCOPY_SUPPLIER_ORDER_TO';
2921 $trackid =
'sord'.$object->id;
2923 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'.
dol_clone($object, $native=0)
Create a clone of instance of object (new instance with same value for each properties) With native =...
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_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...
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.