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 $delivery_date =
'';
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 $datedelivery = (!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"');
1751 print $form->selectDate($datelivraison ? $datelivraison : -1,
'liv_', $usehourmin, $usehourmin, 0,
"set");
1755 if (
getDolGlobalString(
'BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER') && isModEnabled(
"bank")) {
1756 $langs->load(
"bank");
1757 print
'<tr><td>'.$langs->trans(
'BankAccount').
'</td><td>';
1758 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
1759 $form->select_comptes($fk_account,
'fk_account', 0,
'', 1);
1764 if (isModEnabled(
'project')) {
1767 $langs->load(
'projects');
1768 print
'<tr><td>'.$langs->trans(
'Project').
'</td><td>';
1769 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');
1770 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>';
1775 if (isModEnabled(
'incoterm')) {
1776 $fkincoterms = (!empty(
$object->fk_incoterms) ?
$object->fk_incoterms : ($socid > 0 ? $societe->fk_incoterms :
''));
1777 $locincoterms = (!empty(
$object->location_incoterms) ?
$object->location_incoterms : ($socid > 0 ? $societe->location_incoterms :
''));
1779 print
'<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans(
"IncotermLabel"),
$object->label_incoterms, 1).
'</label></td>';
1780 print
'<td class="maxwidthonsmartphone">';
1781 print
img_picto(
'',
'incoterm',
'class="pictofixedwidth"');
1782 print $form->select_incoterms($fkincoterms, $locincoterms);
1787 if (isModEnabled(
"multicurrency")) {
1789 print
'<td>'.$form->editfieldkey(
'Currency',
'multicurrency_code',
'',
$object, 0).
'</td>';
1790 print
'<td class="maxwidthonsmartphone">';
1791 print
img_picto(
'',
'currency',
'class="pictofixedwidth"');
1792 print $form->selectMultiCurrency($currency_code,
'multicurrency_code');
1796 print
'<tr><td>'.$langs->trans(
'NotePublic').
'</td>';
1798 $doleditor =
new DolEditor(
'note_public', isset($note_public) ? $note_public :
GETPOST(
'note_public',
'restricthtml'),
'', 80,
'dolibarr_notes',
'In', 0, false, !
getDolGlobalString(
'FCKEDITOR_ENABLE_NOTE_PUBLIC') ? 0 : 1, ROWS_3,
'90%');
1799 print $doleditor->Create(1);
1804 print
'<tr><td>'.$langs->trans(
'NotePrivate').
'</td>';
1806 $doleditor =
new DolEditor(
'note_private', isset($note_private) ? $note_private :
GETPOST(
'note_private',
'restricthtml'),
'', 80,
'dolibarr_notes',
'In', 0, false, !
getDolGlobalString(
'FCKEDITOR_ENABLE_NOTE_PRIVATE') ? 0 : 1, ROWS_3,
'90%');
1807 print $doleditor->Create(1);
1812 if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
1813 print
"\n<!-- ".$classname.
" info -->";
1815 print
'<input type="hidden" name="amount" value="'.$objectsrc->total_ht.
'">'.
"\n";
1816 print
'<input type="hidden" name="total" value="'.$objectsrc->total_ttc.
'">'.
"\n";
1817 print
'<input type="hidden" name="tva" value="'.$objectsrc->total_tva.
'">'.
"\n";
1818 print
'<input type="hidden" name="origin" value="'.$objectsrc->element.
'">';
1819 print
'<input type="hidden" name="originid" value="'.$objectsrc->id.
'">';
1821 $newclassname = $classname;
1822 print
'<tr><td>'.$langs->trans($newclassname).
'</td><td>'.$objectsrc->getNomUrl(1,
'supplier').
'</td></tr>';
1823 print
'<tr><td>'.$langs->trans(
'AmountHT').
'</td><td>'.
price($objectsrc->total_ht).
'</td></tr>';
1824 print
'<tr><td>'.$langs->trans(
'AmountVAT').
'</td><td>'.
price($objectsrc->total_tva).
"</td></tr>";
1825 if ($mysoc->localtax1_assuj ==
"1" || $objectsrc->total_localtax1 != 0) {
1826 print
'<tr><td>'.$langs->transcountry(
"AmountLT1", $mysoc->country_code).
'</td><td>'.
price($objectsrc->total_localtax1).
"</td></tr>";
1829 if ($mysoc->localtax2_assuj ==
"1" || $objectsrc->total_localtax2 != 0) {
1830 print
'<tr><td>'.$langs->transcountry(
"AmountLT2", $mysoc->country_code).
'</td><td>'.
price($objectsrc->total_localtax2).
"</td></tr>";
1833 print
'<tr><td>'.$langs->trans(
'AmountTTC').
'</td><td>'.
price($objectsrc->total_ttc).
"</td></tr>";
1835 if (isModEnabled(
"multicurrency")) {
1836 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountHT').
'</td><td>'.
price($objectsrc->multicurrency_total_ht).
'</td></tr>';
1837 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountVAT').
'</td><td>'.
price($objectsrc->multicurrency_total_tva).
'</td></tr>';
1838 print
'<tr><td>'.$langs->trans(
'MulticurrencyAmountTTC').
'</td><td>'.
price($objectsrc->multicurrency_total_ttc).
'</td></tr>';
1843 $parameters = array();
1844 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters,
$object, $action);
1845 print $hookmanager->resPrint;
1847 if (empty($reshook)) {
1848 print
$object->showOptionals($extrafields,
'create');
1856 print $form->buttonsSaveCancel(
"CreateDraft");
1859 if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
1860 $title = $langs->trans(
'ProductsAndServices');
1863 print
'<div class="div-table-responsive-no-min">';
1864 print
'<table class="noborder centpercent">';
1866 $selectedLines = array();
1868 $objectsrc->printOriginLinesList(
'', $selectedLines);
1874} elseif (!empty(
$object->id)) {
1876 $result =
$object->fetch($id, $ref);
1879 $societe =
$object->thirdparty;
1881 $author =
new User($db);
1882 $author->fetch(
$object->user_author_id);
1886 $title = $langs->trans(
"SupplierOrder");
1893 if ($action ==
'delete') {
1894 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id, $langs->trans(
'DeleteOrder'), $langs->trans(
'ConfirmDeleteOrder'),
'confirm_delete',
'', 0, 2);
1898 if ($action ==
'clone') {
1899 $filter =
'(s.fournisseur:=:1)';
1901 $formquestion = array(
1902 array(
'type' =>
'other',
'name' =>
'socid',
'label' => $langs->trans(
"SelectThirdParty"),
'value' => $form->select_company(
GETPOSTINT(
'socid'),
'socid', $filter))
1905 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id, $langs->trans(
'ToClone'), $langs->trans(
'ConfirmCloneOrder',
$object->ref),
'confirm_clone', $formquestion,
'yes', 1);
1909 if ($action ==
'valid') {
1913 if (preg_match(
'/^[\(]?PROV/i',
$object->ref) || empty(
$object->ref)) {
1923 $text = $langs->trans(
'ConfirmValidateOrder', $newref);
1924 if (isModEnabled(
'notification')) {
1925 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
1926 $notify =
new Notify($db);
1928 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_VALIDATE',
$object->socid,
$object);
1931 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id, $langs->trans(
'ValidateOrder'), $text,
'confirm_valid',
'', 0, 1);
1936 if ($action ==
'approve' || $action ==
'approve2') {
1937 $qualified_for_stock_change = 0;
1939 $qualified_for_stock_change =
$object->hasProductsOrServices(2);
1941 $qualified_for_stock_change =
$object->hasProductsOrServices(1);
1944 $formquestion = array();
1945 if (isModEnabled(
'stock') &&
getDolGlobalString(
'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER') && $qualified_for_stock_change) {
1946 $langs->load(
"stocks");
1947 require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
1950 if ($conf->browser->name ==
'ie') {
1953 $formquestion = array(
1957 array(
'type' =>
'other',
'name' =>
'idwarehouse',
'label' => $langs->trans(
"SelectWarehouseForStockIncrease"),
'value' => $formproduct->selectWarehouses(
GETPOSTINT(
'idwarehouse'),
'idwarehouse',
'', 1, 0, 0,
'', 0, $forcecombo))
1960 $text = $langs->trans(
"ConfirmApproveThisOrder",
$object->ref);
1961 if (isModEnabled(
'notification')) {
1962 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
1963 $notify =
new Notify($db);
1965 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_APPROVE',
$object->socid,
$object);
1968 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=".
$object->id, $langs->trans(
"ApproveThisOrder"), $text,
"confirm_".$action, $formquestion, 1, 1, 240);
1972 if ($action ==
'refuse') {
1973 $formquestion = array(
1976 'name' =>
'refuse_note',
1977 'label' => $langs->trans(
"Reason"),
1979 'morecss' =>
'minwidth300'
1982 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=$object->id", $langs->trans(
"DenyingThisOrder"), $langs->trans(
"ConfirmDenyingThisOrder",
$object->ref),
"confirm_refuse", $formquestion, 0, 1);
1986 if ($action ==
'cancel') {
1987 $formquestion = array(
1990 'name' =>
'cancel_note',
1991 'label' => $langs->trans(
"Reason"),
1993 'morecss' =>
'minwidth300'
1996 if (!empty($conf->notification->enabled)) {
1997 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
1998 $notify =
new Notify($db);
2000 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_CANCEL',
$object->socid,
$object);
2002 $formconfirm = $form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=$object->id", $langs->trans(
"Cancel"), $langs->trans(
"ConfirmCancelThisOrder",
$object->ref),
"confirm_cancel", $formquestion, 0, 1);
2006 if ($action ==
'commande') {
2008 if (!empty($conf->notification->enabled)) {
2009 require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
2010 $notify =
new Notify($db);
2012 $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_SUBMIT',
$object->socid,
$object);
2014 $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);
2018 if ($action ==
'ask_deleteline') {
2019 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&lineid='.$lineid, $langs->trans(
'DeleteProductLine'), $langs->trans(
'ConfirmDeleteProductLine'),
'confirm_deleteline',
'', 0, 1);
2022 $parameters = array(
'formConfirm' => $formconfirm,
'lineid' => $lineid);
2023 $reshook = $hookmanager->executeHooks(
'formConfirm', $parameters,
$object, $action);
2024 if (empty($reshook)) {
2025 $formconfirm .= $hookmanager->resPrint;
2026 } elseif ($reshook > 0) {
2027 $formconfirm = $hookmanager->resPrint;
2036 $linkback =
'<a href="'.DOL_URL_ROOT.
'/fourn/commande/list.php?restore_lastsearch_values=1'.(!empty($socid) ?
'&socid='.$socid :
'').
'">'.$langs->trans(
"BackToList").
'</a>';
2038 $morehtmlref =
'<div class="refidno">';
2040 $morehtmlref .= $form->editfieldkey(
"RefSupplier",
'ref_supplier',
$object->ref_supplier,
$object, $usercancreate,
'string',
'', 0, 1);
2041 $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);
2043 $morehtmlref .=
'<br>';
2044 if (
getDolGlobalString(
'MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER') && !empty($usercancreate) && $action ==
'edit_thirdparty') {
2045 $morehtmlref .=
'<form method="post" action="'.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id.
'">';
2046 $morehtmlref .=
'<input type="hidden" name="action" value="set_thirdparty">';
2047 $morehtmlref .=
'<input type="hidden" name="token" value="'.newToken().
'">';
2048 $filter =
'(s.fournisseur:=:1)';
2049 $morehtmlref .= $form->select_company(
$object->thirdparty->id,
'new_socid', $filter,
'', 0, 0, array(), 0,
'minwidth300');
2050 $morehtmlref .=
'<input type="submit" class="button valignmiddle" value="'.$langs->trans(
"Modify").
'">';
2051 $morehtmlref .=
'</form>';
2053 if (!
getDolGlobalString(
'MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER') || $action !=
'edit_thirdparty') {
2055 $morehtmlref .=
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=edit_thirdparty&token='.
newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetThirdParty')).
'</a>';
2057 $morehtmlref .=
$object->thirdparty->getNomUrl(1,
'supplier');
2059 $morehtmlref .=
' (<a href="'.DOL_URL_ROOT.
'/fourn/commande/list.php?socid='.
$object->thirdparty->id.
'&search_company='.urlencode(
$object->thirdparty->name).
'">'.$langs->trans(
"OtherOrders").
'</a>)';
2064 if (isModEnabled(
'project')) {
2065 $langs->load(
"projects");
2066 $morehtmlref .=
'<br>';
2067 if ($permissiontoadd) {
2068 $morehtmlref .=
img_picto($langs->trans(
"Project"),
'project',
'class="pictofixedwidth"');
2069 if ($action !=
'classify' && $caneditproject) {
2070 $morehtmlref .=
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=classify&token='.
newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetProject')).
'</a> ';
2072 $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');
2074 if (!empty(
$object->fk_project)) {
2076 $proj->fetch(
$object->fk_project);
2077 $morehtmlref .= $proj->getNomUrl(1);
2079 $morehtmlref .=
'<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).
'</span>';
2084 $morehtmlref .=
'</div>';
2087 dol_banner_tab(
$object,
'ref', $linkback, 1,
'ref',
'ref', $morehtmlref);
2090 $parameters = array();
2092 $reshook = $hookmanager->executeHooks(
'tabContentViewSupplierOrder', $parameters,
$object, $action);
2093 if (empty($reshook)) {
2094 print
'<div class="fichecenter">';
2095 print
'<div class="fichehalfleft">';
2096 print
'<div class="underbanner clearboth"></div>';
2098 print
'<table class="border tableforfield centpercent">';
2101 if (
$object->methode_commande_id > 0) {
2106 print
'<tr><td class="titlefield">'.$langs->trans(
"Date").
'</td><td>';
2109 print
' '.img_picto($langs->trans(
"Late").
' : '.
$object->showDelay(),
"warning");
2113 if (
$object->methode_commande) {
2114 print
'<tr><td>'.$langs->trans(
"Method").
'</td><td>'.
$object->getInputMethod().
'</td></tr>';
2119 print
'<tr><td class="titlefield">'.$langs->trans(
"AuthorRequest").
'</td>';
2120 print
'<td>'.$author->getNomUrl(-1,
'', 0, 0, 0).
'</td>';
2125 $filterabsolutediscount =
"fk_invoice_supplier_source IS NULL";
2126 $filtercreditnote =
"fk_invoice_supplier_source IS NOT NULL";
2128 $filterabsolutediscount =
"fk_invoice_supplier_source IS NULL OR (description LIKE '(DEPOSIT)%' AND description NOT LIKE '(EXCESS PAID)%')";
2129 $filtercreditnote =
"fk_invoice_supplier_source IS NOT NULL AND (description NOT LIKE '(DEPOSIT)%' OR description LIKE '(EXCESS PAID)%')";
2132 $absolute_discount = $societe->getAvailableDiscounts(
null, $filterabsolutediscount, 0, 1);
2133 $absolute_creditnote = $societe->getAvailableDiscounts(
null, $filtercreditnote, 0, 1);
2134 $absolute_discount =
price2num($absolute_discount,
'MT');
2135 $absolute_creditnote =
price2num($absolute_creditnote,
'MT');
2137 print
'<tr><td class="titlefield">'.$langs->trans(
'Discounts').
'</td><td>';
2139 $thirdparty = $societe;
2141 $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?id='.
$object->id);
2142 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
2147 $langs->load(
'bills');
2148 print
'<tr><td class="nowrap">';
2149 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
2150 print $langs->trans(
'PaymentConditions');
2152 if ($action !=
'editconditions' && $permissiontoadd) {
2153 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>';
2155 print
'</tr></table>';
2157 if ($action ==
'editconditions') {
2158 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->cond_reglement_id,
'cond_reglement_id');
2160 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->cond_reglement_id,
'none');
2166 $langs->load(
'bills');
2167 print
'<tr><td class="nowrap">';
2168 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
2169 print $langs->trans(
'PaymentMode');
2171 if ($action !=
'editmode' && $permissiontoadd) {
2172 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>';
2174 print
'</tr></table>';
2176 if ($action ==
'editmode') {
2177 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->mode_reglement_id,
'mode_reglement_id',
'DBIT', 1, 1);
2179 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->mode_reglement_id,
'none');
2184 if (
getDolGlobalString(
'BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER') && isModEnabled(
"bank")) {
2185 print
'<tr><td class="nowrap">';
2186 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
2187 print $langs->trans(
'BankAccount');
2189 if ($action !=
'editbankaccount' && $permissiontoadd) {
2190 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>';
2192 print
'</tr></table>';
2194 if ($action ==
'editbankaccount') {
2195 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->fk_account,
'fk_account', 1);
2197 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.
$object->id,
$object->fk_account,
'none');
2205 print
'<td>'.$langs->trans(
'NbDaysToDelivery').
' '.
img_picto($langs->trans(
'DescNbDaysToDelivery'),
'info',
'style="cursor:help"').
'</td>';
2206 print
'<td>'.$object->getMaxDeliveryTimeDay($langs).
'</td>';
2211 print
'<table class="nobordernopadding centpercent"><tr><td>';
2212 print $langs->trans(
'DateDeliveryPlanned');
2214 if ($action !=
'editdate_livraison') {
2215 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editdate_livraison&token='.
newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->trans(
'SetDeliveryDate'), 1).
'</a></td>';
2217 print
'</tr></table>';
2219 if ($action ==
'editdate_livraison') {
2220 print
'<form name="setdate_livraison" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
2221 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2222 print
'<input type="hidden" name="action" value="setdate_livraison">';
2227 print $form->selectDate(
$object->delivery_date ?
$object->delivery_date : -1,
'liv_', $usehourmin, $usehourmin, 0,
"setdate_livraison");
2228 print
'<input type="submit" class="button button-edit smallpaddingimp valign middle" value="'.$langs->trans(
'Modify').
'">';
2231 $usehourmin =
'day';
2233 $usehourmin =
'dayhour';
2236 if (
$object->hasDelay() && !empty(
$object->delivery_date) && (
$object->statut == $object::STATUS_ORDERSENT ||
$object->statut == $object::STATUS_RECEIVED_PARTIALLY)) {
2237 print
' '.img_picto($langs->trans(
"Late").
' : '.
$object->showDelay(),
"warning");
2243 if (isModEnabled(
'incoterm')) {
2245 print
'<table class="nobordernopadding centpercent"><tr><td>';
2246 print $langs->trans(
'IncotermLabel');
2247 print
'<td><td class="right">';
2248 if ($usercancreate) {
2249 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/fourn/commande/card.php?id='.
$object->id.
'&action=editincoterm&token='.
newToken().
'">'.
img_edit().
'</a>';
2253 print
'</td></tr></table>';
2256 if ($action !=
'editincoterm') {
2259 print $form->select_incoterms((!empty(
$object->fk_incoterms) ?
$object->fk_incoterms :
''), (!empty(
$object->location_incoterms) ?
$object->location_incoterms :
''), $_SERVER[
'PHP_SELF'].
'?id='.
$object->id);
2265 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
2270 print
'<div class="fichehalfright">';
2271 print
'<div class="underbanner clearboth"></div>';
2273 print
'<table class="border tableforfield centpercent">';
2275 include DOL_DOCUMENT_ROOT.
'/core/tpl/object_currency_amount.tpl.php';
2279 print
'<td class="titlefieldmiddle">' . $langs->trans(
'AmountHT') .
'</td>';
2280 print
'<td class="nowrap amountcard right">' .
price(
$object->total_ht, 0, $langs, 0, -1, -1, $conf->currency) .
'</td>';
2281 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code != $conf->currency)) {
2283 print
'<td class="nowrap amountcard right">' .
price(
$object->multicurrency_total_ht, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2289 print
'<td class="titlefieldmiddle">' . $langs->trans(
'AmountVAT') .
'</td>';
2290 print
'<td class="nowrap amountcard right">' .
price(
$object->total_tva, 0, $langs, 0, -1, -1, $conf->currency) .
'</td>';
2291 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code != $conf->currency)) {
2293 print
'<td class="nowrap amountcard right">' .
price(
$object->multicurrency_total_tva, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2298 if ($mysoc->localtax1_assuj ==
"1" ||
$object->total_localtax1 != 0) {
2300 print
'<td class="titlefieldmiddle">' . $langs->transcountry(
"AmountLT1", $mysoc->country_code) .
'</td>';
2301 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax1, 0, $langs, 0, -1, -1, $conf->currency) .
'</td>';
2302 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code != $conf->currency)) {
2303 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax1, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2307 if ($mysoc->localtax2_assuj ==
"1" ||
$object->total_localtax2 != 0) {
2309 print
'<td>' . $langs->transcountry(
"AmountLT2", $mysoc->country_code) .
'</td>';
2310 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax2, 0, $langs, 0, -1, -1, $conf->currency) .
'</td>';
2311 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code != $conf->currency)) {
2312 print
'<td class="nowrap amountcard right">' .
price(
$object->total_localtax2, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2320 $alert =
' ' .
img_warning($langs->trans(
'OrderMinAmount') .
': ' .
price(
$object->thirdparty->supplier_order_min_amount));
2325 print
'<td>' . $langs->trans(
'AmountTTC') .
'</td>';
2326 print
'<td class="nowrap amountcard right">' .
price(
$object->total_ttc, 0, $langs, 0, -1, -1, $conf->currency) . $alert .
'</td>';
2327 if (isModEnabled(
"multicurrency") && (
$object->multicurrency_code &&
$object->multicurrency_code != $conf->currency)) {
2329 print
'<td class="nowrap amountcard right">' .
price(
$object->multicurrency_total_ttc, 0, $langs, 0, -1, -1,
$object->multicurrency_code) .
'</td>';
2344 print
'<div class="clearboth"></div><br>';
2347 $blocname =
'contacts';
2348 $title = $langs->trans(
'ContactsAddresses');
2349 include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
2353 $blocname =
'notes';
2354 $title = $langs->trans(
'Notes');
2355 include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
2364 print
' <form name="addproduct" id="addproduct" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.(($action !=
'editline') ?
'' :
'#line_'.
GETPOSTINT(
'lineid')).
'" method="POST">
2365 <input type="hidden" name="token" value="'.
newToken().
'">
2366 <input type="hidden" name="action" value="' . (($action !=
'editline') ?
'addline' :
'updateline').
'">
2367 <input type="hidden" name="mode" value="">
2368 <input type="hidden" name="page_y" value="">
2369 <input type="hidden" name="id" value="'.
$object->id.
'">
2370 <input type="hidden" name="socid" value="'.$societe->id.
'">
2373 if (!empty($conf->use_javascript_ajax) &&
$object->statut == 0) {
2374 include DOL_DOCUMENT_ROOT.
'/core/tpl/ajaxrow.tpl.php';
2377 print
'<div class="div-table-responsive-no-min">';
2378 print
'<table id="tablelines" class="noborder noshadow centpercent">';
2381 global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax;
2384 $inputalsopricewithtax = 1;
2385 $senderissupplier = 2;
2387 $senderissupplier = 1;
2392 $object->printObjectLines($action,
$object->thirdparty, $mysoc, $lineid, 1);
2399 if ($action !=
'editline') {
2402 $parameters = array();
2403 $reshook = $hookmanager->executeHooks(
'formAddObjectLine', $parameters,
$object, $action);
2407 if (empty($reshook)) {
2408 $object->formAddObjectLine(1, $societe, $mysoc);
2423 if ($user->socid == 0 && $action !=
'delete') {
2424 if ($action !=
'createorder' && $action !=
'presend' && $action !=
'editline') {
2425 print
'<div class="tabsAction">';
2427 $parameters = array();
2428 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters,
$object, $action);
2430 if (empty($reshook)) {
2434 if (
$object->statut == 0 && $num > 0) {
2435 if ($usercanvalidate) {
2436 $tmpbuttonlabel = $langs->trans(
'Validate');
2438 $tmpbuttonlabel = $langs->trans(
"ValidateAndApprove");
2441 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=valid&token='.
newToken().
'">';
2442 print $tmpbuttonlabel;
2454 if ($usercanorder) {
2455 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Modify").
'</a>';
2461 if ($usercanapprove) {
2462 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)) {
2463 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"FirstApprovalAlreadyDone")).
'">'.$langs->trans(
"ApproveOrder").
'</a>';
2465 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=approve">'.$langs->trans(
"ApproveOrder").
'</a>';
2468 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"ApproveOrder").
'</a>';
2473 if (
getDolGlobalString(
'SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED') &&
$object->total_ht >= $conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) {
2475 if ($usercanapprovesecond) {
2476 if (!empty(
$object->user_approve_id2)) {
2477 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"SecondApprovalAlreadyDone")).
'">'.$langs->trans(
"Approve2Order").
'</a>';
2479 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=approve2">'.$langs->trans(
"Approve2Order").
'</a>';
2482 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"Approve2Order").
'</a>';
2489 if ($usercanapprove || $usercanapprovesecond) {
2490 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=refuse">'.$langs->trans(
"RefuseOrder").
'</a>';
2492 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"RefuseOrder").
'</a>';
2497 if (empty($user->socid)) {
2499 if ($usercanorder) {
2500 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=presend&mode=init#formmailbeforetitle">'.$langs->trans(
'SendMail').
'</a>';
2508 if (!$buttonshown && $usercanapprove) {
2511 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Disapprove").
'</a>';
2515 if (!$buttonshown && $usercanapprovesecond &&
getDolGlobalString(
'SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED')) {
2518 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Disapprove").
'</a>';
2522 if (in_array(
$object->statut, array(3, 4, 5, 6, 7, 9))) {
2523 if ($usercanorder) {
2524 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"ReOpen").
'</a>';
2531 $labelofbutton = $langs->trans(
'ReceiveProducts');
2532 if (isModEnabled(
'reception')) {
2533 $labelofbutton = $langs->trans(
"CreateReception");
2534 if (!empty(
$object->linkedObjects[
'reception'])) {
2535 foreach (
$object->linkedObjects[
'reception'] as $element) {
2536 if ($element->statut >= 0) {
2544 if (in_array(
$object->statut, array(3, 4, 5))) {
2545 if (isModEnabled(
"supplier_order") && $usercanreceive) {
2546 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/fourn/commande/dispatch.php?id='.
$object->id.
'">'.$labelofbutton.
'</a></div>';
2548 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$labelofbutton.
'</a></div>';
2554 if ($usercanorder) {
2555 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>';
2557 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#">'.$langs->trans(
"MakeOrder").
'</a></div>';
2563 if ($usercanreceive) {
2564 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>';
2571 if (isModEnabled(
"supplier_invoice") && (
$object->statut >= 2 &&
$object->statut != 7 &&
$object->billed != 1)) {
2572 if ($user->hasRight(
'fournisseur',
'facture',
'creer') || $user->hasRight(
"supplier_invoice",
"creer")) {
2573 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>';
2580 if (!isModEnabled(
'invoice')) {
2581 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifybilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
2583 if (!empty(
$object->linkedObjectsIds[
'invoice_supplier']) || (empty(
$object->linkedObjectsIds[
'invoice_supplier']) && !
getDolGlobalInt(
'SUPPLIER_ORDER_DISABLE_CLASSIFY_BILLED_FROM_SUPPLIER_ORDER'))) {
2584 if ($user->hasRight(
'fournisseur',
'facture',
'creer') || $user->hasRight(
"supplier_invoice",
"creer")) {
2585 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifybilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
2588 print
'<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans(
"NeedAtLeastOneInvoice")).
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
2594 if ($usercancreate &&
$object->billed > 0 &&
$object->statut > $object::STATUS_DRAFT) {
2595 print
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=classifyunbilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyUnbilled").
'</a>';
2599 if ($usercancreate) {
2600 print
'<a class="butAction" href="'.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id.
'&socid='.
$object->socid.
'&action=clone&token='.
newToken().
'&object=order">'.$langs->trans(
"ToClone").
'</a>';
2605 if ($usercanorder) {
2606 print
'<a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=cancel&token='.
newToken().
'">'.$langs->trans(
"CancelOrder").
'</a>';
2611 if (!empty($usercandelete)) {
2612 if ($hasreception) {
2613 print
'<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans(
"ReceptionExist").
'">'.$langs->trans(
"Delete").
'</a>';
2615 print
'<a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=delete&token='.
newToken().
'">'.$langs->trans(
"Delete").
'</a>';
2625 print
'<!-- form to record supplier order -->'.
"\n";
2626 print
'<form name="commande" id="makeorder" action="card.php?id='.$object->id.
'&action=commande" method="POST">';
2628 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2629 print
'<input type="hidden" name="action" value="commande">';
2631 print
'<table class="noborder centpercent">';
2633 print
'<tr><td class="fieldrequired">'.$langs->trans(
"OrderDate").
'</td><td>';
2635 print $form->selectDate($date_com ?:
'',
'', 0, 0, 0,
"commande", 1, 1);
2639 print
'<tr><td class="fieldrequired">'.$langs->trans(
"OrderMode").
'</td><td>';
2640 $formorder->selectInputMethod(
GETPOST(
'methodecommande'),
"methodecommande", 1);
2643 print
'<tr><td>'.$langs->trans(
"Comment").
'</td><td><input class="quatrevingtpercent" type="text" name="comment" value="'.
GETPOST(
'comment').
'"></td></tr>';
2645 print
'<tr><td class="center" colspan="2">';
2646 print
'<input type="submit" name="makeorder" class="button" value="'.$langs->trans(
"ToOrder").
'">';
2647 print
' ';
2648 print
'<input type="submit" name="cancel" class="button button-cancel" value="'.$langs->trans(
"Cancel").
'">';
2657 if (
GETPOST(
'modelselected')) {
2658 $action =
'presend';
2661 if ($action !=
'createorder' && $action !=
'presend') {
2662 print
'<div class="fichecenter"><div class="fichehalfleft">';
2666 $file = $conf->fournisseur->dir_output.
'/commande/'.$objref.
'/'.$objref.
'.pdf';
2667 $relativepath = $objref.
'/'.$objref.
'.pdf';
2668 $filedir = $conf->fournisseur->dir_output.
'/commande/'.$objref;
2669 $urlsource = $_SERVER[
"PHP_SELF"].
"?id=".
$object->id;
2670 $genallowed = $usercanread;
2671 $delallowed = $usercancreate;
2672 $modelpdf = (!empty(
$object->model_pdf) ?
$object->model_pdf : (!
getDolGlobalString(
'COMMANDE_SUPPLIER_ADDON_PDF') ?
'' : $conf->global->COMMANDE_SUPPLIER_ADDON_PDF));
2674 print $formfile->showdocuments(
'commande_fournisseur', $objref, $filedir, $urlsource, $genallowed, $delallowed, $modelpdf, 1, 0, 0, 0, 0,
'',
'',
'',
$object->thirdparty->default_lang,
'',
$object);
2675 $somethingshown = $formfile->numoffiles;
2678 $linktoelem = $form->showLinkToObjectBlock(
$object, array(), array(
'supplier_order',
'order_supplier'));
2679 $somethingshown = $form->showLinkedObjectBlock(
$object, $linktoelem);
2681 print
'</div><div class="fichehalfright">';
2683 if ($action ==
'classifyreception') {
2686 print
'<!-- form to record purchase order received -->'.
"\n";
2687 print
'<form id="classifyreception" action="card.php?id='.$object->id.
'" method="post">';
2688 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2689 print
'<input type="hidden" name="action" value="livraison">';
2692 print
'<table class="noborder centpercent">';
2694 print
'<tr><td>'.$langs->trans(
"DeliveryDate").
'</td><td>';
2696 print $form->selectDate($datepreselected,
'', 1, 1, 0,
"commande", 1, 1);
2697 print
"</td></tr>\n";
2699 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Delivery").
"</td><td>\n";
2701 $liv[
''] =
' ';
2702 $liv[
'tot'] = $langs->trans(
"CompleteOrNoMoreReceptionExpected");
2703 $liv[
'par'] = $langs->trans(
"PartialWoman");
2704 $liv[
'nev'] = $langs->trans(
"NeverReceived");
2705 $liv[
'can'] = $langs->trans(
"Canceled");
2707 print $form->selectarray(
"type", $liv);
2710 print
'<tr><td>'.$langs->trans(
"Comment").
'</td><td><input class="quatrevingtpercent" type="text" name="comment"></td></tr>';
2711 print
'<tr><td class="center" colspan="2">';
2712 print
'<input type="submit" name="receive" class="button" value="'.$langs->trans(
"Receive").
'">';
2713 print
' ';
2714 print
'<input type="submit" name="cancel" class="button button-cancel" value="'.$langs->trans(
"Cancel").
'">';
2723 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formactions.class.php';
2725 $somethingshown = $formactions->showactions(
$object,
'order_supplier', $socid, 1,
'listaction'.($genallowed ?
'largetitle' :
''));
2727 print
'</div></div>';
2733 if ($action ==
'webservice' &&
GETPOST(
'mode',
'alpha') !=
"send" && !
GETPOST(
'cancel',
'alpha')) {
2734 $mode =
GETPOST(
'mode',
'alpha');
2735 $ws_url =
$object->thirdparty->webservices_url;
2736 $ws_key =
$object->thirdparty->webservices_key;
2737 $ws_user =
GETPOST(
'ws_user',
'alpha');
2738 $ws_password =
GETPOST(
'ws_password',
'alpha');
2739 $error_occurred =
false;
2742 $ws_ns =
'http://www.dolibarr.org/ns/';
2743 $ws_authentication = array(
2744 'dolibarrkey' => $ws_key,
2745 'sourceapplication' =>
'DolibarrWebServiceClient',
2746 'login' => $ws_user,
2747 'password' => $ws_password,
2754 if (empty($ws_url) || empty($ws_key)) {
2755 setEventMessages($langs->trans(
"ErrorWebServicesFieldsRequired"),
null,
'errors');
2757 $error_occurred =
true;
2758 } elseif ($mode !=
"init" && (empty($ws_user) || empty($ws_password))) {
2763 if ($mode ==
"init") {
2765 print
'<table class="border centpercent">';
2766 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
2767 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2768 print
'<input type="hidden" name="action" value="webservice">';
2769 print
'<input type="hidden" name="mode" value="check">';
2771 if ($error_occurred) {
2772 print
"<br>".$langs->trans(
"ErrorOccurredReviseAndRetry").
"<br>";
2773 print
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
2776 print
'<tr><td>'.$langs->trans(
"WebServiceURL").
'</td><td colspan="3">'.
dol_print_url($ws_url).
'</td></tr>';
2778 print
'<tr><td>'.$langs->trans(
"User").
'</td><td><input class="width100" type="text" name="ws_user"></td></tr>';
2780 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td><input class="width100" type="text" name="ws_password"></td></tr>';
2782 print
'<tr><td class="center" colspan="2">';
2783 print
'<input type="submit" class="button" id="ws_submit" name="ws_submit" value="'.$langs->trans(
"CreateRemoteOrder").
'">';
2784 print
' ';
2786 print
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
2793 } elseif ($mode ==
"check") {
2795 $ws_thirdparty =
'';
2796 $error_occurred =
false;
2799 $soapclient_user =
new nusoap_client($ws_url.
"/webservices/server_user.php");
2800 $soapclient_user->soap_defencoding =
'UTF-8';
2801 $soapclient_user->decodeUTF8(
false);
2804 $ws_parameters = array(
'authentication' => $ws_authentication,
'id' =>
'',
'ref' => $ws_user);
2805 $result_user = $soapclient_user->call(
"getUser", $ws_parameters, $ws_ns,
'');
2806 $user_status_code = $result_user[
"result"][
"result_code"];
2808 if ($user_status_code ==
"OK") {
2810 $ws_entity = $result_user[
"user"][
"entity"];
2811 $ws_authentication[
'entity'] = $ws_entity;
2812 $ws_thirdparty = $result_user[
"user"][
"fk_thirdparty"];
2813 if (empty($ws_thirdparty)) {
2814 setEventMessages($langs->trans(
"RemoteUserMissingAssociatedSoc"),
null,
'errors');
2815 $error_occurred =
true;
2818 $soapclient_product =
new nusoap_client($ws_url.
"/webservices/server_productorservice.php");
2819 $soapclient_product->soap_defencoding =
'UTF-8';
2820 $soapclient_product->decodeUTF8(
false);
2824 foreach (
$object->lines as $line) {
2826 $ref_supplier = $line->ref_supplier;
2827 $line_id = $i.
"º) ".$line->product_ref.
": ";
2828 if (empty($ref_supplier)) {
2831 $ws_parameters = array(
'authentication' => $ws_authentication,
'id' =>
'',
'ref' => $ref_supplier);
2832 $result_product = $soapclient_product->call(
"getProductOrService", $ws_parameters, $ws_ns,
'');
2833 if (!$result_product) {
2834 setEventMessages($line_id.$langs->trans(
"Error").
" SOAP ".$soapclient_product->error_str.
" - ".$soapclient_product->response,
null,
'errors');
2835 $error_occurred =
true;
2840 $status_code = $result_product[
"result"][
"result_code"];
2841 if (empty($status_code)) {
2842 setEventMessages($langs->trans(
"Error").
" SOAP '".$soapclient_product->error_str.
"'",
null,
'errors');
2843 } elseif ($status_code !=
"OK") {
2844 if ($status_code ==
"NOT_FOUND") {
2845 setEventMessages($line_id.$langs->trans(
"SupplierMissingRef").
" '".$ref_supplier.
"'",
null,
'warnings');
2847 setEventMessages($line_id.$langs->trans(
"ResponseNonOK").
" '".$status_code.
"' - '".$result_product[
"result"][
"result_label"].
"'",
null,
'errors');
2848 $error_occurred =
true;
2855 $supplier_price =
price($result_product[
"product"][
"price_net"]);
2856 $local_price =
null;
2859 $product_fourn_list = $product_fourn->list_product_fournisseur_price($line->fk_product);
2860 if (count($product_fourn_list) > 0) {
2861 foreach ($product_fourn_list as $product_fourn_line) {
2863 if ($product_fourn_line->fourn_id ==
$object->socid && $product_fourn_line->fourn_ref == $ref_supplier) {
2864 $local_price =
price($product_fourn_line->fourn_price);
2869 if ($local_price !=
null && $local_price != $supplier_price) {
2870 setEventMessages($line_id.$langs->trans(
"RemotePriceMismatch").
" ".$supplier_price.
" - ".$local_price,
null,
'warnings');
2874 if (empty($result_product[
"product"][
"status_tosell"])) {
2875 setEventMessages($line_id.$langs->trans(
"ProductStatusNotOnSellShort").
" '".$ref_supplier.
"'",
null,
'warnings');
2879 } elseif ($user_status_code ==
"PERMISSION_DENIED") {
2880 setEventMessages($langs->trans(
"RemoteUserNotPermission"),
null,
'errors');
2881 $error_occurred =
true;
2882 } elseif ($user_status_code ==
"BAD_CREDENTIALS") {
2883 setEventMessages($langs->trans(
"RemoteUserBadCredentials"),
null,
'errors');
2884 $error_occurred =
true;
2886 setEventMessages($langs->trans(
"ResponseNonOK").
" '".$user_status_code.
"'",
null,
'errors');
2887 $error_occurred =
true;
2891 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
2892 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2893 print
'<input type="hidden" name="action" value="webservice">';
2894 print
'<input type="hidden" name="mode" value="send">';
2895 print
'<input type="hidden" name="ws_user" value="'.$ws_user.
'">';
2896 print
'<input type="hidden" name="ws_password" value="'.$ws_password.
'">';
2897 print
'<input type="hidden" name="ws_entity" value="'.$ws_entity.
'">';
2898 print
'<input type="hidden" name="ws_thirdparty" value="'.$ws_thirdparty.
'">';
2899 if ($error_occurred) {
2900 print
"<br>".$langs->trans(
"ErrorOccurredReviseAndRetry").
"<br>";
2902 print
'<input type="submit" class="button" id="ws_submit" name="ws_submit" value="'.$langs->trans(
"Confirm").
'">';
2903 print
' ';
2905 print
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
2911 $modelmail =
'order_supplier_send';
2912 $defaulttopic =
'SendOrderRef';
2913 $diroutput = $conf->fournisseur->commande->dir_output;
2914 $autocopy =
'MAIN_MAIL_AUTOCOPY_SUPPLIER_ORDER_TO';
2915 $trackid =
'sord'.$object->id;
2917 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.
publicphonebutton2 phonegreen basiclayout basiclayout TotalHT VATCode TotalVAT TotalLT1 TotalLT2 TotalTTC TotalHT clearboth nowraponall TAKEPOS_SHOW_SUBPRICE right right right takeposterminal SELECT e rowid