38 require 
'../../main.inc.php';
 
   39 require_once DOL_DOCUMENT_ROOT.
'/core/class/doleditor.class.php';
 
   40 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
 
   41 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formorder.class.php';
 
   42 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
 
   43 require_once DOL_DOCUMENT_ROOT.
'/core/lib/fourn.lib.php';
 
   44 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
 
   45 require_once DOL_DOCUMENT_ROOT.
'/core/modules/supplier_order/modules_commandefournisseur.php';
 
   46 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
 
   47 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.product.class.php';
 
   50   require_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
 
   53   require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
 
   56   require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
 
   57   require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
 
   59 require_once NUSOAP_PATH.
'/nusoap.php'; 
 
   62   require_once DOL_DOCUMENT_ROOT.
'/variants/class/ProductCombination.class.php';
 
   67 $langs->loadLangs(array(
'admin', 
'orders', 
'sendings', 
'companies', 
'bills', 
'propal', 
'receptions', 
'supplier_proposal', 
'deliveries', 
'products', 
'stocks', 
'productbatch'));
 
   69   $langs->load(
'incoterm');
 
   76 $action      = 
GETPOST(
'action', 
'alpha');
 
   77 $confirm     = 
GETPOST(
'confirm', 
'alpha');
 
   78 $contextpage = 
GETPOST(
'contextpage', 
'aZ') ? 
GETPOST(
'contextpage', 
'aZ') : 
'purchaseordercard'; 
 
   80 $backtopage = 
GETPOST(
'backtopage', 
'alpha');
 
   81 $backtopageforcancel = 
GETPOST(
'backtopageforcancel', 
'alpha');
 
   83 $socid     = 
GETPOST(
'socid', 
'int');
 
   84 $projectid = 
GETPOST(
'projectid', 
'int');
 
   85 $cancel    = 
GETPOST(
'cancel', 
'alpha');
 
   86 $lineid    = 
GETPOST(
'lineid', 
'int');
 
   87 $origin    = 
GETPOST(
'origin', 
'alpha');
 
   89 $rank      = (
GETPOST(
'rank', 
'int') > 0) ? 
GETPOST(
'rank', 
'int') : -1;
 
   92 $hidedetails = (
GETPOST(
'hidedetails', 
'int') ? 
GETPOST(
'hidedetails', 
'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0));
 
   93 $hidedesc = (
GETPOST(
'hidedesc', 
'int') ? 
GETPOST(
'hidedesc', 
'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0));
 
   94 $hideref = (
GETPOST(
'hideref', 
'int') ? 
GETPOST(
'hideref', 
'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
 
   96 $datelivraison = 
dol_mktime(
GETPOST(
'liv_hour', 
'int'), 
GETPOST(
'liv_min', 
'int'), 
GETPOST(
'liv_sec', 
'int'), 
GETPOST(
'liv_month', 
'int'), 
GETPOST(
'liv_day', 
'int'), 
GETPOST(
'liv_year', 
'int'));
 
  100 if (!empty($user->socid)) {
 
  101   $socid = $user->socid;
 
  105 $hookmanager->initHooks(array(
'ordersuppliercard', 
'globalcard'));
 
  111 $extrafields->fetch_name_optionals_label($object->table_element);
 
  114   $socid = $user->socid;
 
  118 if ($id > 0 || !empty($ref)) {
 
  119   $ret = $object->fetch($id, $ref);
 
  123   $ret = $object->fetch_thirdparty();
 
  127 } elseif (!empty($socid) && $socid > 0) {
 
  128   $object->socid = $socid;
 
  129   $ret = $object->fetch_thirdparty();
 
  136 $isdraft = (isset($object->statut) && ($object->statut == $object::STATUS_DRAFT) ? 1 : 0);
 
  137 $result = 
restrictedArea($user, 
'fournisseur', $id, 
'commande_fournisseur', 
'commande', 
'fk_soc', 
'rowid', $isdraft);
 
  140 $usercanread  = ($user->rights->fournisseur->commande->lire || $user->rights->supplier_order->lire);
 
  141 $usercancreate  = ($user->rights->fournisseur->commande->creer || $user->rights->supplier_order->creer);
 
  142 $usercandelete  = (($user->rights->fournisseur->commande->supprimer || $user->rights->supplier_order->supprimer) || ($usercancreate && isset($object->statut) && $object->statut == $object::STATUS_DRAFT));
 
  145 $usercanvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($usercancreate)) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->fournisseur->supplier_order_advance->validate)));
 
  148 $usercanapprove     = !empty($user->rights->fournisseur->commande->approuver) ? $user->rights->fournisseur->commande->approuver : 0;
 
  149 $usercanapprovesecond = !empty($user->rights->fournisseur->commande->approve2) ? $user->rights->fournisseur->commande->approve2 : 0;
 
  150 $usercanorder     = !empty($user->rights->fournisseur->commande->commander) ? $user->rights->fournisseur->commande->commander : 0;
 
  151 if (empty($conf->reception->enabled)) {
 
  152   $usercanreceive = $user->rights->fournisseur->commande->receptionner;
 
  154   $usercanreceive = $user->rights->reception->creer;
 
  158 $permissionnote   = $usercancreate; 
 
  159 $permissiondellink  = $usercancreate; 
 
  160 $permissiontoedit = $usercancreate; 
 
  161 $permissiontoadd  = $usercancreate; 
 
  164 $caneditproject = 
false;
 
  166   $caneditproject = empty($conf->global->SUPPLIER_ORDER_FORBID_EDIT_PROJECT) || ($object->statut == 
CommandeFournisseur::STATUS_DRAFT && preg_match(
'/^[\(]?PROV/i', $object->ref));
 
  177 $reshook = $hookmanager->executeHooks(
'doActions', 
$parameters, $object, $action); 
 
  182 if (empty($reshook)) {
 
  183   $backurlforlist = DOL_URL_ROOT.
'/fourn/commande/list.php'.($socid > 0 ? 
'?socid='.((int) $socid)  : 
'');
 
  185   if (empty($backtopage) || ($cancel && empty($id))) {
 
  186     if (empty($backtopage) || ($cancel && strpos($backtopage, 
'__ID__'))) {
 
  187       if (empty($id) && (($action != 
'add' && $action != 
'create') || $cancel)) {
 
  188         $backtopage = $backurlforlist;
 
  190         $backtopage = DOL_URL_ROOT.
'/fourn/commande/card.php?id='.((!empty($id) && $id > 0) ? $id : 
'__ID__');
 
  196     if (!empty($backtopageforcancel)) {
 
  197       header(
"Location: ".$backtopageforcancel);
 
  199     } elseif (!empty($backtopage)) {
 
  200       header(
"Location: ".$backtopage);
 
  206   include DOL_DOCUMENT_ROOT.
'/core/actions_setnotes.inc.php'; 
 
  208   include DOL_DOCUMENT_ROOT.
'/core/actions_dellink.inc.php'; 
 
  210   include DOL_DOCUMENT_ROOT.
'/core/actions_lineupdown.inc.php'; 
 
  212   if ($action == 
'setref_supplier' && $usercancreate) {
 
  213     $result = $object->setValueFrom(
'ref_supplier', 
GETPOST(
'ref_supplier', 
'alpha'), 
'', 
null, 
'text', 
'', $user, 
'ORDER_SUPPLIER_MODIFY');
 
  220   if ($action == 
'set_incoterms' && $usercancreate) {
 
  221     $result = $object->setIncoterms(
GETPOST(
'incoterm_id', 
'int'), 
GETPOST(
'location_incoterms', 
'alpha'));
 
  228   if ($action == 
'setconditions' && $usercancreate) {
 
  229     $result = $object->setPaymentTerms(
GETPOST(
'cond_reglement_id', 
'int'));
 
  236   if ($action == 
'setmode' && $usercancreate) {
 
  237     $result = $object->setPaymentMethods(
GETPOST(
'mode_reglement_id', 
'int'));
 
  241   } elseif ($action == 
'setmulticurrencycode' && $usercancreate) {
 
  243     $result = $object->setMulticurrencyCode(
GETPOST(
'multicurrency_code', 
'alpha'));
 
  244   } elseif ($action == 
'setmulticurrencyrate' && $usercancreate) {
 
  246     $result = $object->setMulticurrencyRate(
price2num(
GETPOST(
'multicurrency_tx')), 
GETPOST(
'calculation_mode', 
'int'));
 
  250   if ($action == 
'setbankaccount' && $usercancreate) {
 
  251     $result = $object->setBankAccount(
GETPOST(
'fk_account', 
'int'));
 
  258   if ($action == 
'setdate_livraison' && $usercancreate) {
 
  259     $result = $object->setDeliveryDate($user, $datelivraison);
 
  266   if ($action == 
'classin' && $usercancreate && $caneditproject) {
 
  267     $result = $object->setProject($projectid);
 
  274   if (!empty($conf->global->MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER) && $action == 
'set_thirdparty' && $usercancreate && $object->statut == 
CommandeFournisseur::STATUS_DRAFT) {
 
  275     $new_socid = 
GETPOST(
'new_socid', 
'int');
 
  276     if (!empty($new_socid) && $new_socid != $object->thirdparty->id) {
 
  280       $sql = 
'UPDATE '.MAIN_DB_PREFIX.
'commande_fournisseur';
 
  281       $sql .= 
' SET fk_soc = '.((int) $new_socid);
 
  282       $sql .= 
' WHERE fk_soc = '.((int) $object->thirdparty->id);
 
  283       $sql .= 
' AND rowid = '.((int) $object->id);
 
  285       $res = $db->query($sql);
 
  293         foreach ($object->lines as $l) {
 
  294           $sql = 
'SELECT price, unitprice, tva_tx, ref_fourn';
 
  295           $sql .= 
' FROM '.MAIN_DB_PREFIX.
'product_fournisseur_price';
 
  296           $sql .= 
' WHERE fk_product = '.((int) $l->fk_product);
 
  297           $sql .= 
' AND fk_soc = '.((int) $new_socid);
 
  298           $sql .= 
' ORDER BY unitprice ASC';
 
  300           $resql = $db->query($sql);
 
  302             $num_row = $db->num_rows(
$resql);
 
  303             if (empty($num_row)) {
 
  309               $l->ref_supplier = 
'';
 
  313               $obj = $db->fetch_object(
$resql);
 
  314               $l->subprice = $obj->unitprice;
 
  315               $l->total_ht = $obj->price;
 
  316               $l->tva_tx = $obj->tva_tx;
 
  317               $l->total_tva = $l->total_ht * ($obj->tva_tx / 100);
 
  318               $l->total_ttc = $l->total_ht + $l->total_tva;
 
  319               $l->ref_supplier = $obj->ref_fourn;
 
  327         $object->update_price();
 
  330     header(
'Location: '.$_SERVER[
'PHP_SELF'].
'?id='.$object->id);
 
  334   if ($action == 
'setremisepercent' && $usercancreate) {
 
  341   if ($action == 
'reopen') {  
 
  342     if (in_array($object->statut, array(1, 2, 3, 4, 5, 6, 7, 9))) {
 
  343       if ($object->statut == 1) {
 
  345       } elseif ($object->statut == 2) {
 
  347       } elseif ($object->statut == 3) {
 
  349       } elseif ($object->statut == 4) {
 
  351       } elseif ($object->statut == 5) {
 
  357       } elseif ($object->statut == 6) {
 
  359       } elseif ($object->statut == 7) {
 
  361       } elseif ($object->statut == 9) {
 
  370       $result = $object->setStatus($user, $newstatus);
 
  373         $sql = 
'UPDATE '.MAIN_DB_PREFIX.
'commande_fournisseur';
 
  374         $sql .= 
' SET billed = 0';
 
  375         $sql .= 
' WHERE rowid = '.((int) $object->id);
 
  377         $resql = $db->query($sql);
 
  379         if ($newstatus == 0) {
 
  380           $sql = 
'UPDATE '.MAIN_DB_PREFIX.
'commande_fournisseur';
 
  381           $sql .= 
' SET fk_user_approve = null, fk_user_approve2 = null, date_approve = null, date_approve2 = null';
 
  382           $sql .= 
' WHERE rowid = '.((int) $object->id);
 
  384           $resql = $db->query($sql);
 
  389         header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.$object->id);
 
  402   if ($action == 
'classifybilled' && $usercancreate) {
 
  403     $ret = $object->classifyBilled($user);
 
  410   if ($action == 
'addline' && 
GETPOST(
'submitforalllines', 
'aZ09') && 
GETPOST(
'vatforalllines', 
'alpha') && $usercancreate) {
 
  412     $vat_rate = (
GETPOST(
'vatforalllines') ? 
GETPOST(
'vatforalllines') : 0);
 
  413     $vat_rate = str_replace(
'*', 
'', $vat_rate);
 
  414     $localtax1_rate = 
get_localtax($vat_rate, 1, $object->thirdparty, $mysoc);
 
  415     $localtax2_rate = 
get_localtax($vat_rate, 2, $object->thirdparty, $mysoc);
 
  416     foreach ($object->lines as $line) {
 
  417       $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);
 
  419   } elseif ($action == 
'addline' && $usercancreate) {
 
  422     $langs->load(
'errors');
 
  431     $prod_entry_mode = 
GETPOST(
'prod_entry_mode');
 
  432     if ($prod_entry_mode == 
'free') {
 
  435       $idprod = 
GETPOST(
'idprod', 
'int');
 
  447     if (empty($remise_percent)) {
 
  452     $extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
 
  453     $array_options = $extrafields->getOptionalsFromPost($object->table_element_line, $predef);
 
  455     if (is_array($extralabelsline)) {
 
  457       foreach ($extralabelsline as $key => $value) {
 
  458         unset($_POST[
"options_".$key]);
 
  462     if ($prod_entry_mode == 
'free' && 
GETPOST(
'price_ht') < 0 && $qty < 0) {
 
  463       setEventMessages($langs->trans(
'ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv(
'UnitPrice'), $langs->transnoentitiesnoconv(
'Qty')), 
null, 
'errors');
 
  466     if ($prod_entry_mode == 
'free' && !
GETPOST(
'idprodfournprice') && 
GETPOST(
'type') < 0) {
 
  467       setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Type')), 
null, 
'errors');
 
  470     if ($prod_entry_mode == 
'free' && 
GETPOST(
'price_ht') === 
'' && 
GETPOST(
'price_ttc') === 
'' && $price_ht_devise === 
'') { 
 
  471       setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'UnitPrice')), 
null, 
'errors');
 
  474     if ($prod_entry_mode == 
'free' && !
GETPOST(
'dp_desc')) {
 
  475       setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Description')), 
null, 
'errors');
 
  478     if (
GETPOST(
'qty', 
'alpha') == 
'') {  
 
  479       setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'Qty')), 
null, 
'errors');
 
  483     if (!$error && 
isModEnabled(
'variants') && $prod_entry_mode != 
'free') {
 
  484       if ($combinations = 
GETPOST(
'combinations', 
'array')) {
 
  488         if ($res = $prodcomb->fetchByProductCombination2ValuePairs($idprod, $combinations)) {
 
  489           $idprod = $res->fk_product_child;
 
  491           setEventMessages($langs->trans(
'ErrorProductCombinationNotFound'), 
null, 
'errors');
 
  497     if ($prod_entry_mode != 
'free' && empty($error)) {  
 
  501       if (
GETPOST(
'idprodfournprice', 
'alpha') == -1 || 
GETPOST(
'idprodfournprice', 
'alpha') == 
'') {
 
  506       if (preg_match(
'/^idprod_([0-9]+)$/', 
GETPOST(
'idprodfournprice', 
'alpha'), $reg)) {
 
  508         $res = $productsupplier->fetch($idprod); 
 
  511         if (!empty($conf->global->SUPPLIER_TAKE_FIRST_PRICE_IF_NO_PRICE_FOR_CURRENT_SUPPLIER)) {
 
  513           $productsupplier->get_buyprice(0, -1, $idprod, 
'none', $fksoctosearch); 
 
  514           if ($productsupplier->fourn_socid != $socid) {  
 
  515             $productsupplier->ref_supplier = 
'';
 
  518           $fksoctosearch = $object->thirdparty->id;
 
  519           $productsupplier->get_buyprice(0, -1, $idprod, 
'none', $fksoctosearch); 
 
  521       } elseif (
GETPOST(
'idprodfournprice', 
'alpha') > 0) {
 
  524         $idprod = $productsupplier->get_buyprice(
GETPOST(
'idprodfournprice', 
'alpha'), $qtytosearch);
 
  525         $res = $productsupplier->fetch($idprod);
 
  529         $label = $productsupplier->label;
 
  532         if (
getDolGlobalInt(
'MAIN_MULTILANGS') && !empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
 
  533           $outputlangs = $langs;
 
  535           if (empty($newlang) && 
GETPOST(
'lang_id', 
'aZ09')) {
 
  536             $newlang = 
GETPOST(
'lang_id', 
'aZ09');
 
  538           if (empty($newlang)) {
 
  539             $newlang = $object->thirdparty->default_lang;
 
  541           if (!empty($newlang)) {
 
  543             $outputlangs->setDefaultLang($newlang);
 
  545           $desc = (!empty($productsupplier->multilangs[$outputlangs->defaultlang][
"description"])) ? $productsupplier->multilangs[$outputlangs->defaultlang][
"description"] : $productsupplier->description;
 
  547           $desc = $productsupplier->description;
 
  550         if (!empty($productsupplier->desc_supplier) && !empty($conf->global->PRODUIT_FOURN_TEXTS)) {
 
  551           $desc = $productsupplier->desc_supplier;
 
  555         if (trim($product_desc) == trim($desc) && !empty($conf->global->PRODUIT_AUTOFILL_DESC)) {
 
  559         if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) {
 
  560           $desc = $product_desc;
 
  562         if (!empty($product_desc) && trim($product_desc) != trim($desc)) {
 
  563           $desc = 
dol_concatdesc($desc, $product_desc, 
'', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
 
  566         $ref_supplier = $productsupplier->ref_supplier;
 
  571           $tva_tx = 
get_default_tva($object->thirdparty, $mysoc, $productsupplier->id, 
GETPOST(
'idprodfournprice', 
'alpha'));
 
  572           $tva_npr = 
get_default_npr($object->thirdparty, $mysoc, $productsupplier->id, 
GETPOST(
'idprodfournprice', 
'alpha'));
 
  573           if (empty($tva_tx)) {
 
  578         $localtax1_tx = 
get_localtax($tva_tx, 1, $mysoc, $object->thirdparty, $tva_npr);
 
  579         $localtax2_tx = 
get_localtax($tva_tx, 2, $mysoc, $object->thirdparty, $tva_npr);
 
  581         $type = $productsupplier->type;
 
  582         if (
GETPOST(
'price_ht') != 
'' || 
GETPOST(
'price_ht_devise') != 
'') {
 
  583           $price_base_type = 
'HT';
 
  585           $pu_devise = 
price2num($price_ht_devise, 
'CU');
 
  586         } elseif (
GETPOST(
'price_ttc') != 
'' || 
GETPOST(
'price_ttc_devise') != 
'') {
 
  587           $price_base_type = 
'TTC';
 
  589           $pu_devise = 
price2num($price_ttc_devise, 
'CU');
 
  591           $price_base_type = ($productsupplier->fourn_price_base_type ? $productsupplier->fourn_price_base_type : 
'HT');
 
  592           if (empty($object->multicurrency_code) || ($productsupplier->fourn_multicurrency_code != $object->multicurrency_code)) {  
 
  593             $pu = $productsupplier->fourn_pu;
 
  596             $pu = $productsupplier->fourn_pu;
 
  597             $pu_devise = $productsupplier->fourn_multicurrency_unitprice;
 
  605         $result = $object->addline(
 
  607           ($price_base_type == 
'HT' ? $pu : 0),
 
  613           $productsupplier->product_fourn_price_id,
 
  617           ($price_base_type == 
'TTC' ? $pu : 0),
 
  624           $productsupplier->fk_unit,
 
  628           min($rank, count($object->lines) + 1)
 
  631       if ($idprod == -99 || $idprod == 0) {
 
  634         $langs->load(
"errors");
 
  635         setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ProductOrService")), 
null, 
'errors');
 
  640         $langs->load(
"errors");
 
  641         setEventMessages($langs->trans(
"ErrorQtyTooLowForThisSupplier"), 
null, 
'errors');
 
  643     } elseif (empty($error)) { 
 
  644       $tva_npr = (preg_match(
'/\*/', $tva_tx) ? 1 : 0);
 
  645       $tva_tx = str_replace(
'*', 
'', $tva_tx);
 
  646       $label = (
GETPOST(
'product_label') ? 
GETPOST(
'product_label') : 
'');
 
  647       $desc = $product_desc;
 
  649       $ref_supplier = 
GETPOST(
'fourn_ref', 
'alpha');
 
  651       $fk_unit = 
GETPOST(
'units', 
'alpha');
 
  653       if (!preg_match(
'/\((.*)\)/', $tva_tx)) {
 
  658       $localtax1_tx = 
get_localtax($tva_tx, 1, $mysoc, $object->thirdparty);
 
  659       $localtax2_tx = 
get_localtax($tva_tx, 2, $mysoc, $object->thirdparty);
 
  661       if (
GETPOST(
'price_ht') != 
'' || 
GETPOST(
'price_ht_devise') != 
'') {
 
  665         $pu_ht = 
price2num($pu_ttc / (1 + ($tva_tx / 100)), 
'MU'); 
 
  667       $price_base_type = 
'HT';
 
  668       $pu_ht_devise = 
price2num($price_ht_devise, 
'CU');
 
  670       $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, 
'', 
'', $date_start, $date_end, $array_options, $fk_unit, $pu_ht_devise);
 
  674     if (!$error && $result > 0) {
 
  677       $ret = $object->fetch($object->id); 
 
  680       if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
 
  681         $outputlangs = $langs;
 
  684           $newlang = $object->thirdparty->default_lang;
 
  685           if (
GETPOST(
'lang_id', 
'aZ09'))
 
  686             $newlang = 
GETPOST(
'lang_id', 
'aZ09');
 
  688         if (!empty($newlang)) {
 
  690           $outputlangs->setDefaultLang($newlang);
 
  692         $model = $object->model_pdf;
 
  693         $ret = $object->fetch($id); 
 
  695         $result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
 
  701       unset($_POST [
'prod_entry_mode']);
 
  703       unset($_POST[
'qty']);
 
  704       unset($_POST[
'type']);
 
  705       unset($_POST[
'remise_percent']);
 
  707       unset($_POST[
'price_ht']);
 
  708       unset($_POST[
'multicurrency_price_ht']);
 
  709       unset($_POST[
'price_ttc']);
 
  710       unset($_POST[
'fourn_ref']);
 
  711       unset($_POST[
'tva_tx']);
 
  712       unset($_POST[
'label']);
 
  713       unset($localtax1_tx);
 
  714       unset($localtax2_tx);
 
  715       unset($_POST[
'np_marginRate']);
 
  716       unset($_POST[
'np_markRate']);
 
  717       unset($_POST[
'dp_desc']);
 
  718       unset($_POST[
'idprodfournprice']);
 
  719       unset($_POST[
'units']);
 
  721       unset($_POST[
'date_starthour']);
 
  722       unset($_POST[
'date_startmin']);
 
  723       unset($_POST[
'date_startsec']);
 
  724       unset($_POST[
'date_startday']);
 
  725       unset($_POST[
'date_startmonth']);
 
  726       unset($_POST[
'date_startyear']);
 
  727       unset($_POST[
'date_endhour']);
 
  728       unset($_POST[
'date_endmin']);
 
  729       unset($_POST[
'date_endsec']);
 
  730       unset($_POST[
'date_endday']);
 
  731       unset($_POST[
'date_endmonth']);
 
  732       unset($_POST[
'date_endyear']);
 
  744   if ($action == 
'updateline' && $usercancreate && !
GETPOST(
'cancel', 
'alpha')) {
 
  751       $res = $line->fetch($lineid);
 
  758     if (!empty($conf->global->SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY)) {
 
  759       if ($line->fk_product > 0 && $productsupplier->get_buyprice(0, 
price2num(
GETPOST(
'qty', 
'int')), $line->fk_product, 
'none', 
GETPOST(
'socid', 
'int')) < 0) {
 
  760         setEventMessages($langs->trans(
"ErrorQtyTooLowForThisSupplier"), 
null, 
'warnings');
 
  769     if (preg_match(
'/\*/', $vat_rate)) {
 
  774     $vat_rate = str_replace(
'*', 
'', $vat_rate);
 
  775     $localtax1_rate = 
get_localtax($vat_rate, 1, $mysoc, $object->thirdparty);
 
  776     $localtax2_rate = 
get_localtax($vat_rate, 2, $mysoc, $object->thirdparty);
 
  778     if (
GETPOST(
'price_ht') != 
'') {
 
  779       $price_base_type = 
'HT';
 
  783       $vatratecleaned = $vat_rate;
 
  784       if (preg_match(
'/^(.*)\s*\((.*)\)$/', $vat_rate, $reg)) {      
 
  785         $vatratecleaned = trim($reg[1]);
 
  786         $vatratecode = $reg[2];
 
  790       $ht = $ttc / (1 + ($vatratecleaned / 100));
 
  791       $price_base_type = 
'HT';
 
  797     $extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
 
  798     $array_options = $extrafields->getOptionalsFromPost($object->table_element_line);
 
  800     if (is_array($extralabelsline)) {
 
  801       foreach ($extralabelsline as $key => $value) {
 
  802         unset($_POST[
"options_".$key]);
 
  806     $result = $object->updateline(
 
  808       GETPOST(
'product_desc', 
'restricthtml'),
 
  826     unset($_POST[
'qty']);
 
  827     unset($_POST[
'type']);
 
  828     unset($_POST[
'idprodfournprice']);
 
  829     unset($_POST[
'remmise_percent']);
 
  830     unset($_POST[
'dp_desc']);
 
  831     unset($_POST[
'np_desc']);
 
  833     unset($_POST[
'fourn_ref']);
 
  834     unset($_POST[
'tva_tx']);
 
  835     unset($_POST[
'date_start']);
 
  836     unset($_POST[
'date_end']);
 
  837     unset($_POST[
'units']);
 
  838     unset($localtax1_tx);
 
  839     unset($localtax2_tx);
 
  841     unset($_POST[
'date_starthour']);
 
  842     unset($_POST[
'date_startmin']);
 
  843     unset($_POST[
'date_startsec']);
 
  844     unset($_POST[
'date_startday']);
 
  845     unset($_POST[
'date_startmonth']);
 
  846     unset($_POST[
'date_startyear']);
 
  847     unset($_POST[
'date_endhour']);
 
  848     unset($_POST[
'date_endmin']);
 
  849     unset($_POST[
'date_endsec']);
 
  850     unset($_POST[
'date_endday']);
 
  851     unset($_POST[
'date_endmonth']);
 
  852     unset($_POST[
'date_endyear']);
 
  856       if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
 
  857         $outputlangs = $langs;
 
  860           $newlang = 
GETPOST(
'lang_id', 
'aZ09');
 
  863           $newlang = $object->thirdparty->default_lang;
 
  865         if (!empty($newlang)) {
 
  867           $outputlangs->setDefaultLang($newlang);
 
  869         $model = $object->model_pdf;
 
  870         $ret = $object->fetch($id); 
 
  872         $result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
 
  887   if ($action == 
'confirm_deleteline' && $confirm == 
'yes' && $usercancreate) {
 
  890     $result = $object->deleteline($lineid);
 
  893       $object->line_order(
true);
 
  895       $outputlangs = $langs;
 
  898         $newlang = 
GETPOST(
'lang_id', 
'aZ09');
 
  901         $newlang = $object->thirdparty->default_lang;
 
  903       if (!empty($newlang)) {
 
  905         $outputlangs->setDefaultLang($newlang);
 
  907       if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
 
  908         $ret = $object->fetch($object->id); 
 
  909         $object->generateDocument($object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
 
  921       header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.$object->id);
 
  929   if ($action == 
'confirm_valid' && $confirm == 
'yes' && $usercanvalidate) {
 
  932     $object->date_commande = 
dol_now();
 
  933     $result = $object->valid($user);
 
  936       if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
 
  937         $outputlangs = $langs;
 
  940           $newlang = 
GETPOST(
'lang_id', 
'aZ09');
 
  943           $newlang = $object->thirdparty->default_lang;
 
  945         if (!empty($newlang)) {
 
  947           $outputlangs->setDefaultLang($newlang);
 
  949         $model = $object->model_pdf;
 
  950         $ret = $object->fetch($id); 
 
  952         $result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
 
  964     if (!$error && empty($conf->global->SUPPLIER_ORDER_NO_DIRECT_APPROVE) && $usercanapprove && !(!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER) && $object->hasProductsOrServices(1))) {
 
  965       $action = 
'confirm_approve'; 
 
  975   if (($action == 
'confirm_approve' || $action == 
'confirm_approve2') && $confirm == 
'yes' && $usercanapprove) {
 
  978     $idwarehouse = 
GETPOST(
'idwarehouse', 
'int');
 
  980     $qualified_for_stock_change = 0;
 
  981     if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) {
 
  982       $qualified_for_stock_change = $object->hasProductsOrServices(2);
 
  984       $qualified_for_stock_change = $object->hasProductsOrServices(1);
 
  988     if (
isModEnabled(
'stock') && !empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER) && $qualified_for_stock_change) {  
 
  989       if (!$idwarehouse || $idwarehouse == -1) {
 
  991         setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
"Warehouse")), 
null, 
'errors');
 
  997       $result = $object->approve($user, $idwarehouse, ($action == 
'confirm_approve2' ? 1 : 0));
 
  999         if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
 
 1000           $outputlangs = $langs;
 
 1003             $newlang = 
GETPOST(
'lang_id', 
'aZ09');
 
 1006             $newlang = $object->thirdparty->default_lang;
 
 1008           if (!empty($newlang)) {
 
 1009             $outputlangs = 
new Translate(
"", $conf);
 
 1010             $outputlangs->setDefaultLang($newlang);
 
 1012           $object->generateDocument($object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
 
 1023       header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".$object->id);
 
 1030   if ($action == 
'confirm_refuse' && $confirm == 
'yes' && $usercanapprove) {
 
 1032       $object->refuse_note = 
GETPOST(
'refuse_note');
 
 1034     $result = $object->refuse($user);
 
 1036       header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".$object->id);
 
 1044   if ($action == 
'commande') {
 
 1045     $methodecommande = 
GETPOST(
'methodecommande', 
'int');
 
 1049     } elseif ($methodecommande <= 0) {
 
 1050       setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"OrderMode")), 
null, 
'errors');
 
 1051       $action = 
'makeorder';
 
 1055   if ($action == 
'confirm_commande' && $confirm == 
'yes' && $usercanorder) {
 
 1058     $result = $object->commande($user, 
GETPOST(
"datecommande"), 
GETPOST(
"methode", 
'int'), 
GETPOST(
'comment', 
'alphanohtml'));
 
 1060       if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
 
 1061         $outputlangs = $langs;
 
 1064           $newlang = 
GETPOST(
'lang_id', 
'aZ09');
 
 1067           $newlang = $object->thirdparty->default_lang;
 
 1069         if (!empty($newlang)) {
 
 1070           $outputlangs = 
new Translate(
"", $conf);
 
 1071           $outputlangs->setDefaultLang($newlang);
 
 1073         $object->generateDocument($object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
 
 1084       header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".$object->id);
 
 1092   if ($action == 
'confirm_delete' && $confirm == 
'yes' && $usercandelete) {
 
 1093     $result = $object->delete($user);
 
 1095       header(
"Location: ".DOL_URL_ROOT.
'/fourn/commande/list.php?restore_lastsearch_values=1');
 
 1103   if ($action == 
'confirm_clone' && $confirm == 
'yes' && $usercancreate) {
 
 1104     if (1 == 0 && !
GETPOST(
'clone_content') && !
GETPOST(
'clone_receivers')) {
 
 1105       setEventMessages($langs->trans(
"NoCloneOptionsSpecified"), 
null, 
'errors');
 
 1107       if ($object->id > 0) {
 
 1108         $orig = clone $object;
 
 1110         $result = $object->createFromClone($user, $socid);
 
 1112           header(
"Location: ".$_SERVER[
'PHP_SELF'].
'?id='.$result);
 
 1124   if ($action == 
'livraison' && $usercanreceive) {
 
 1133         $result = $object->Livraison($user, $date_liv, 
GETPOST(
"type"), 
GETPOST(
"comment")); 
 
 1135           $langs->load(
"deliveries");
 
 1138         } elseif ($result == -3) {
 
 1147         setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Delivery")), 
null, 
'errors');
 
 1158   if ($action == 
'confirm_cancel' && $confirm == 
'yes' && $usercanorder) {
 
 1160       $object->cancel_note = 
GETPOST(
'cancel_note');
 
 1162     $result = $object->cancel($user);
 
 1164       header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?id=".$object->id);
 
 1172   include DOL_DOCUMENT_ROOT.
'/core/actions_printing.inc.php';
 
 1175   $triggersendname = 
'ORDER_SUPPLIER_SENTBYMAIL';
 
 1176   $autocopy = 
'MAIN_MAIL_AUTOCOPY_SUPPLIER_ORDER_TO';
 
 1177   $trackid = 
'sord'.$object->id;
 
 1178   include DOL_DOCUMENT_ROOT.
'/core/actions_sendmails.inc.php';
 
 1181   $upload_dir = $conf->fournisseur->commande->dir_output;
 
 1182   $permissiontoadd = $usercancreate;
 
 1183   include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
 
 1186   if ($action == 
'update_extras') {
 
 1190     $ret = $extrafields->setOptionalsFromPost(
null, $object, 
GETPOST(
'attribute', 
'restricthtml'));
 
 1198         $result = $object->insertExtraFields(
'ORDER_SUPPLIER_MODIFY');
 
 1207       $action = 
'edit_extras';
 
 1214   if ($action == 
'add' && $usercancreate) {
 
 1216     $selectedLines = 
GETPOST(
'toselect', 
'array');
 
 1218       setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentities(
'Supplier')), 
null, 
'errors');
 
 1227       $object->ref_supplier   = 
GETPOST(
'refsupplier');
 
 1228       $object->socid          = $socid;
 
 1229       $object->cond_reglement_id = 
GETPOST(
'cond_reglement_id', 
'int');
 
 1230       $object->mode_reglement_id = 
GETPOST(
'mode_reglement_id', 
'int');
 
 1231       $object->fk_account        = 
GETPOST(
'fk_account', 
'int');
 
 1232       $object->note_private = 
GETPOST(
'note_private', 
'restricthtml');
 
 1233       $object->note_public    = 
GETPOST(
'note_public', 
'restricthtml');
 
 1234       $object->date_livraison = $datelivraison; 
 
 1235       $object->delivery_date = $datelivraison;
 
 1236       $object->fk_incoterms = 
GETPOST(
'incoterm_id', 
'int');
 
 1237       $object->location_incoterms = 
GETPOST(
'location_incoterms', 
'alpha');
 
 1238       $object->multicurrency_code = 
GETPOST(
'multicurrency_code', 
'alpha');
 
 1239       $object->multicurrency_tx = 
price2num(
GETPOST(
'originmulticurrency_tx', 
'alpha'));
 
 1240       $object->fk_project       = 
GETPOST(
'projectid', 
'int');
 
 1244         $ret = $extrafields->setOptionalsFromPost(
null, $object);
 
 1252         if (!empty($origin) && !empty($originid)) {
 
 1253           $element = $subelement = $origin;
 
 1254           $classname = ucfirst($subelement);
 
 1255           if ($origin == 
'propal' || $origin == 
'proposal') {
 
 1256             $element = 
'comm/propal'; $subelement = 
'propal';
 
 1257             $classname = 
'Propal';
 
 1259           if ($origin == 
'order' || $origin == 
'commande') {
 
 1260             $element = $subelement = 
'commande';
 
 1261             $classname = 
'Commande';
 
 1263           if ($origin == 
'supplier_proposal') {
 
 1264             $classname = 
'SupplierProposal';
 
 1265             $element = 
'supplier_proposal';
 
 1266             $subelement = 
'supplier_proposal';
 
 1269           $object->origin = $origin;
 
 1270           $object->origin_id = $originid;
 
 1273           $object->linked_objects [$object->origin] = $object->origin_id;
 
 1274           $other_linked_objects = 
GETPOST(
'other_linked_objects', 
'array');
 
 1275           if (!empty($other_linked_objects)) {
 
 1276             $object->linked_objects = array_merge($object->linked_objects, $other_linked_objects);
 
 1279           $id = $object->create($user);
 
 1283             $srcobject = 
new $classname($db);
 
 1285             dol_syslog(
"Try to find source object origin=".$object->origin.
" originid=".$object->origin_id.
" to add lines");
 
 1286             $result = $srcobject->fetch($object->origin_id);
 
 1288               $tmpdate = ($srcobject->delivery_date ? $srcobject->delivery_date : $srcobject->date_livraison);
 
 1289               $object->setDeliveryDate($user, $tmpdate);
 
 1290               $object->set_id_projet($user, $srcobject->fk_project);
 
 1292               $lines = $srcobject->lines;
 
 1293               if (empty($lines) && method_exists($srcobject, 
'fetch_lines')) {
 
 1294                 $srcobject->fetch_lines();
 
 1295                 $lines = $srcobject->lines;
 
 1298               $fk_parent_line = 0;
 
 1299               $num = count($lines);
 
 1301               for ($i = 0; $i < $num; $i++) {
 
 1302                 if (empty($lines[$i]->subprice) || $lines[$i]->qty <= 0 || !in_array($lines[$i]->
id, $selectedLines)) {
 
 1306                 $label = (!empty($lines[$i]->label) ? $lines[$i]->label : 
'');
 
 1307                 $desc = (!empty($lines[$i]->desc) ? $lines[$i]->desc : $lines[$i]->product_desc);
 
 1308                 $product_type = (!empty($lines[$i]->product_type) ? $lines[$i]->product_type : 0);
 
 1311                 if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
 
 1312                   $fk_parent_line = 0;
 
 1316                 if (method_exists($lines[$i], 
'fetch_optionals')) {               
 
 1317                   $lines[$i]->fetch_optionals();
 
 1318                   $array_option = $lines[$i]->array_options;
 
 1322                 $product_fourn_price_id = 0;
 
 1323                 if ($origin == 
"commande") {
 
 1325                   $result = $productsupplier->find_min_price_product_fournisseur($lines[$i]->fk_product, $lines[$i]->qty, $srcobject->socid);
 
 1327                     $ref_supplier = $productsupplier->ref_supplier;
 
 1328                     $product_fourn_price_id = $productsupplier->product_fourn_price_id;
 
 1331                   $ref_supplier = $lines[$i]->ref_fourn;
 
 1332                   $product_fourn_price_id = 0;
 
 1335                 $tva_tx = $lines[$i]->tva_tx;
 
 1337                 if ($origin == 
"commande") {
 
 1338                   $soc = 
new societe($db);
 
 1339                   $soc->fetch($socid);
 
 1340                   $tva_tx = 
get_default_tva($soc, $mysoc, $lines[$i]->fk_product, $product_fourn_price_id);
 
 1343                 $object->special_code = $lines[$i]->special_code;
 
 1345                 $result = $object->addline(
 
 1347                   $lines[$i]->subprice,
 
 1350                   $lines[$i]->localtax1_tx,
 
 1351                   $lines[$i]->localtax2_tx,
 
 1352                   $lines[$i]->fk_product > 0 ? $lines[$i]->fk_product : 0,
 
 1353                   $product_fourn_price_id,
 
 1355                   $lines[$i]->remise_percent,
 
 1358                   $lines[$i]->product_type,
 
 1364                   $lines[$i]->fk_unit,
 
 1367                   !empty($lines[$i]->
id) ? $lines[$i]->
id : $lines[$i]->
rowid 
 1376                 if ($result > 0 && $lines[$i]->product_type == 9) {
 
 1377                   $fk_parent_line = $result;
 
 1386               $reshook = $hookmanager->executeHooks(
'createFrom', 
$parameters, $object, $action); 
 
 1400           $id = $object->create($user);
 
 1409         $langs->load(
"errors");
 
 1412         $_GET[
'socid'] = $_POST[
'socid'];
 
 1415         header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".urlencode($id));
 
 1421   if ($action == 
'webservice' && 
GETPOST(
'mode', 
'alpha') == 
"send" && !
GETPOST(
'cancel', 
'alpha')) {
 
 1422     $ws_url         = $object->thirdparty->webservices_url;
 
 1423     $ws_key         = $object->thirdparty->webservices_key;
 
 1424     $ws_user        = 
GETPOST(
'ws_user', 
'alpha');
 
 1425     $ws_password    = 
GETPOST(
'ws_password', 
'alpha');
 
 1426     $ws_entity      = 
GETPOST(
'ws_entity', 
'int');
 
 1427     $ws_thirdparty  = 
GETPOST(
'ws_thirdparty', 
'int');
 
 1430     $ws_ns = 
'http://www.dolibarr.org/ns/';
 
 1431     $ws_authentication = array(
 
 1432       'dolibarrkey'=>$ws_key,
 
 1433       'sourceapplication'=>
'DolibarrWebServiceClient',
 
 1435       'password'=>$ws_password,
 
 1436       'entity'=>$ws_entity
 
 1440     if (empty($conf->syncsupplierwebservices->enabled)) {
 
 1441       setEventMessages($langs->trans(
"WarningModuleNotActive", $langs->transnoentities(
"Module2650Name")), 
null, 
'mesgs');
 
 1442     } elseif (empty($ws_url) || empty($ws_key)) {
 
 1443       setEventMessages($langs->trans(
"ErrorWebServicesFieldsRequired"), 
null, 
'errors');
 
 1444     } elseif (empty($ws_user) || empty($ws_password) || empty($ws_thirdparty)) {
 
 1448       $soapclient_order = 
new nusoap_client($ws_url.
"/webservices/server_order.php");
 
 1449       $soapclient_order->soap_defencoding = 
'UTF-8';
 
 1450       $soapclient_order->decodeUTF8(
false);
 
 1453       $soapclient_product = 
new nusoap_client($ws_url.
"/webservices/server_productorservice.php");
 
 1454       $soapclient_product->soap_defencoding = 
'UTF-8';
 
 1455       $soapclient_product->decodeUTF8(
false);
 
 1458       $order_lines = array();
 
 1459       foreach ($object->lines as $line) {
 
 1460         $ws_parameters = array(
'authentication' => $ws_authentication, 
'id' => 
'', 
'ref' => $line->ref_supplier);
 
 1461         $result_product = $soapclient_product->call(
"getProductOrService", $ws_parameters, $ws_ns, 
'');
 
 1463         if ($result_product[
"result"][
"result_code"] == 
"OK") {
 
 1464           $order_lines[] = array(
 
 1465             'desc'          => $line->product_desc,
 
 1466             'type'          => $line->product_type,
 
 1467             'product_id'    => $result_product[
"product"][
"id"],
 
 1468             'vat_rate'      => $line->tva_tx,
 
 1469             'qty'           => $line->qty,
 
 1470             'price'         => $line->price,
 
 1471             'unitprice'     => $line->subprice,
 
 1472             'total_net'     => $line->total_ht,
 
 1473             'total_vat'     => $line->total_tva,
 
 1474             'total'         => $line->total_ttc,
 
 1475             'date_start'    => $line->date_start,
 
 1476             'date_end'      => $line->date_end,
 
 1483         'thirdparty_id' => $ws_thirdparty,
 
 1485         'total_net'     => $object->total_ht,
 
 1486         'total_var'     => $object->total_tva,
 
 1487         'total'         => $object->total_ttc,
 
 1488         'lines'         => $order_lines
 
 1491       $ws_parameters = array(
'authentication'=>$ws_authentication, 
'order' => $order);
 
 1492       $result_order = $soapclient_order->call(
"createOrder", $ws_parameters, $ws_ns, 
'');
 
 1494       if (empty($result_order[
"result"][
"result_code"])) { 
 
 1495         setEventMessages($langs->trans(
"SOAPError").
" '".$soapclient_order->error_str.
"'", 
null, 
'errors');
 
 1496       } elseif ($result_order[
"result"][
"result_code"] != 
"OK") { 
 
 1497         setEventMessages($langs->trans(
"SOAPError").
" '".$result_order[
"result"][
"result_code"].
"' - '".$result_order[
"result"][
"result_label"].
"'", 
null, 
'errors');
 
 1499         setEventMessages($langs->trans(
"RemoteOrderRef").
" ".$result_order[
"ref"], 
null, 
'mesgs');
 
 1504   if (!empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $usercancreate) {
 
 1505     if ($action == 
'addcontact') {
 
 1506       if ($object->id > 0) {
 
 1509         $result = $object->add_contact($contactid, $typeid, 
GETPOST(
"source", 
'aZ09'));
 
 1513         header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".$object->id);
 
 1516         if ($object->error == 
'DB_ERROR_RECORD_ALREADY_EXISTS') {
 
 1517           $langs->load(
"errors");
 
 1518           setEventMessages($langs->trans(
"ErrorThisContactIsAlreadyDefinedAsThisType"), 
null, 
'errors');
 
 1523     } elseif ($action == 
'swapstatut' && $object->id > 0) {
 
 1525       $result = $object->swapContactStatus(
GETPOST(
'ligne', 
'int'));
 
 1526     } elseif ($action == 
'deletecontact' && $object->id > 0) {
 
 1528       $result = $object->delete_contact(
GETPOST(
"lineid", 
'int'));
 
 1531         header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".$object->id);
 
 1548 $productstatic = 
new Product($db);
 
 1553 $title = $object->ref.
" - ".$langs->trans(
'Card');
 
 1554 if ($action == 
'create') {
 
 1555   $title = $langs->trans(
"NewOrderSupplier");
 
 1557 $help_url = 
'EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores';
 
 1562 if ($action == 
'create') {
 
 1563   print 
load_fiche_titre($langs->trans(
'NewOrderSupplier'), 
'', 
'supplier_order');
 
 1567   $currency_code = $conf->currency;
 
 1572     $societe->fetch($socid);
 
 1575   if (!empty($origin) && !empty($originid)) {
 
 1577     $element = $subelement = $origin;
 
 1578     $classname = ucfirst($subelement);
 
 1580     if (preg_match(
'/^([^_]+)_([^_]+)/i', $origin, $regs)) {
 
 1581       $element = $regs[1];
 
 1582       $subelement = $regs[2];
 
 1585     if ($origin == 
'propal' || $origin == 
'proposal') {
 
 1586       $classname = 
'Propal';
 
 1587       $element = 
'comm/propal'; $subelement = 
'propal';
 
 1589     if ($origin == 
'order' || $origin == 
'commande') {
 
 1590       $classname = 
'Commande';
 
 1591       $element = $subelement = 
'commande';
 
 1593     if ($origin == 
'supplier_proposal') {
 
 1594       $classname = 
'SupplierProposal';
 
 1595       $element = 
'supplier_proposal';
 
 1596       $subelement = 
'supplier_proposal';
 
 1603     $objectsrc = 
new $classname($db);
 
 1604     $objectsrc->fetch($originid);
 
 1605     if (empty($objectsrc->lines) && method_exists($objectsrc, 
'fetch_lines')) {
 
 1606       $objectsrc->fetch_lines();
 
 1608     $objectsrc->fetch_thirdparty();
 
 1611     $objectsrc->fetch_optionals();
 
 1612     $object->array_options = $objectsrc->array_options;
 
 1614     $projectid = (!empty($objectsrc->fk_project) ? $objectsrc->fk_project : 
'');
 
 1615     $ref_client = (!empty($objectsrc->ref_client) ? $objectsrc->ref_client : 
'');
 
 1617     $soc = $objectsrc->client;
 
 1618     $cond_reglement_id  = (!empty($objectsrc->cond_reglement_id) ? $objectsrc->cond_reglement_id : (!empty($soc->cond_reglement_id) ? $soc->cond_reglement_id : 0));
 
 1619     $mode_reglement_id  = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0));
 
 1620     $fk_account         = (!empty($objectsrc->fk_account) ? $objectsrc->fk_account : (!empty($soc->fk_account) ? $soc->fk_account : 0));
 
 1621     $availability_id  = (!empty($objectsrc->availability_id) ? $objectsrc->availability_id : (!empty($soc->availability_id) ? $soc->availability_id : 0));
 
 1622     $shipping_method_id = (!empty($objectsrc->shipping_method_id) ? $objectsrc->shipping_method_id : (!empty($soc->shipping_method_id) ? $soc->shipping_method_id : 0));
 
 1623     $demand_reason_id = (!empty($objectsrc->demand_reason_id) ? $objectsrc->demand_reason_id : (!empty($soc->demand_reason_id) ? $soc->demand_reason_id : 0));
 
 1624     $remise_percent   = (!empty($objectsrc->remise_percent) ? $objectsrc->remise_percent : (!empty($soc->remise_supplier_percent) ? $soc->remise_supplier_percent : 0));
 
 1625     $remise_absolue   = (!empty($objectsrc->remise_absolue) ? $objectsrc->remise_absolue : (!empty($soc->remise_absolue) ? $soc->remise_absolue : 0));
 
 1626     $dateinvoice    = empty($conf->global->MAIN_AUTOFILL_DATE) ?-1 : 
'';
 
 1628     $datedelivery = (!empty($objectsrc->date_livraison) ? $objectsrc->date_livraison : (!empty($objectsrc->delivery_date) ? $objectsrc->delivery_date : 
''));
 
 1631       if (!empty($objectsrc->multicurrency_code)) {
 
 1632         $currency_code = $objectsrc->multicurrency_code;
 
 1634       if (!empty($conf->global->MULTICURRENCY_USE_ORIGIN_TX) && !empty($objectsrc->multicurrency_tx)) {
 
 1635         $currency_tx = $objectsrc->multicurrency_tx;
 
 1639     $note_private = $object->getDefaultCreateValueFor(
'note_private', (!empty($objectsrc->note_private) ? $objectsrc->note_private : 
null));
 
 1640     $note_public = $object->getDefaultCreateValueFor(
'note_public', (!empty($objectsrc->note_public) ? $objectsrc->note_public : 
null));
 
 1643     $srccontactslist = $objectsrc->liste_contact(-1, 
'external', 1);
 
 1645     $cond_reglement_id  = !empty($societe->cond_reglement_supplier_id) ? $societe->cond_reglement_supplier_id : 0;
 
 1646     $mode_reglement_id  = !empty($societe->mode_reglement_supplier_id) ? $societe->mode_reglement_supplier_id : 0;
 
 1648     if (
isModEnabled(
"multicurrency") && !empty($societe->multicurrency_code)) {
 
 1649       $currency_code = $societe->multicurrency_code;
 
 1652     $note_private = $object->getDefaultCreateValueFor(
'note_private');
 
 1653     $note_public = $object->getDefaultCreateValueFor(
'note_public');
 
 1657   if (empty($cond_reglement_id) && !empty($conf->global->SUPPLIER_ORDER_DEFAULT_PAYMENT_TERM_ID)) {
 
 1658     $cond_reglement_id = $conf->global->SUPPLIER_ORDER_DEFAULT_PAYMENT_TERM_ID;
 
 1660   if (empty($mode_reglement_id) && !empty($conf->global->SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID)) {
 
 1661     $mode_reglement_id = $conf->global->SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID;
 
 1664   print 
'<form name="add" action="'.$_SERVER[
"PHP_SELF"].
'" method="post">';
 
 1665   print 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
 1666   print 
'<input type="hidden" name="action" value="add">';
 
 1667   print 
'<input type="hidden" name="remise_percent" value="'.(empty($soc->remise_supplier_percent) ? 
'' : $soc->remise_supplier_percent).
'">';
 
 1668   print 
'<input type="hidden" name="origin" value="'.$origin.
'">';
 
 1669   print 
'<input type="hidden" name="originid" value="'.$originid.
'">';
 
 1671     print 
'<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
 
 1673   if ($backtopageforcancel) {
 
 1674     print 
'<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.
'">';
 
 1677   if (!empty($currency_tx)) {
 
 1678     print 
'<input type="hidden" name="originmulticurrency_tx" value="'.$currency_tx.
'">';
 
 1683   print 
'<table class="border centpercent">';
 
 1686   print 
'<tr><td class="titlefieldcreate">'.$langs->trans(
'Ref').
'</td><td>'.$langs->trans(
'Draft').
'</td></tr>';
 
 1689   print 
'<tr><td class="fieldrequired">'.$langs->trans(
'Supplier').
'</td>';
 
 1692   if (!empty($societe->id) && $societe->id > 0) {
 
 1693     print $societe->getNomUrl(1, 
'supplier');
 
 1694     print 
'<input type="hidden" name="socid" value="'.$societe->id.
'">';
 
 1696     print 
img_picto(
'', 
'company').$form->select_company((empty($socid) ? 
'' : $socid), 
'socid', 
'(s.fournisseur=1 AND s.status=1)', 
'SelectThirdParty', 1, 0, 
null, 0, 
'minwidth175 maxwidth500 widthcentpercentminusxx');
 
 1698     if (!empty($conf->global->RELOAD_PAGE_ON_SUPPLIER_CHANGE)) {
 
 1700       $(document).ready(function() { 
 1701         $("#socid").change(function() { 
 1702           var socid = $(this).val(); 
 1703           var prjid = $("#projectid").val(); 
 1705           window.location.href = "'.$_SERVER[
"PHP_SELF"].
'?action=create&socid="+socid+"&projectid="+prjid 
 1710     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>';
 
 1714   if (!empty($societe->id) && $societe->id > 0) {
 
 1716     print 
'<tr><td>'.$langs->trans(
'Discounts').
'</td><td>';
 
 1718     $absolute_discount = $societe->getAvailableDiscounts(
'', 
'', 0, 1);
 
 1720     $thirdparty = $societe;
 
 1722     $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?socid='.$thirdparty->id.
'&action='.$action.
'&origin='.
GETPOST(
'origin').
'&originid='.
GETPOST(
'originid'));
 
 1723     include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
 
 1729   print 
'<tr><td>'.$langs->trans(
'RefSupplier').
'</td><td><input name="refsupplier" type="text"></td>';
 
 1733   print 
'<tr><td class="nowrap">'.$langs->trans(
'PaymentConditionsShort').
'</td><td>';
 
 1734   print 
$form->getSelectConditionsPaiements(
GETPOSTISSET(
'cond_reglement_id') ? 
GETPOST(
'cond_reglement_id') : $cond_reglement_id, 
'cond_reglement_id');
 
 1738   print 
'<tr><td>'.$langs->trans(
'PaymentMode').
'</td><td>';
 
 1739   $form->select_types_paiements(
GETPOSTISSET(
'mode_reglement_id') ? 
GETPOST(
'mode_reglement_id') : $mode_reglement_id, 
'mode_reglement_id');
 
 1744   print $langs->trans(
'DateDeliveryPlanned');
 
 1748   if (!empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) {
 
 1751   print 
$form->selectDate($datelivraison ? $datelivraison : -1, 
'liv_', $usehourmin, $usehourmin, 
'', 
"set");
 
 1755   if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && 
isModEnabled(
"banque")) {
 
 1756     $langs->load(
"bank");
 
 1757     print 
'<tr><td>'.$langs->trans(
'BankAccount').
'</td><td>';
 
 1758     print 
img_picto(
'', 
'bank_account', 
'class="paddingrightonly"');
 
 1759     $form->select_comptes($fk_account, 
'fk_account', 0, 
'', 1);
 
 1767     $langs->load(
'projects');
 
 1768     print 
'<tr><td>'.$langs->trans(
'Project').
'</td><td>';
 
 1769     print 
img_picto(
'', 
'project').$formproject->select_projects((empty($conf->global->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>';
 
 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 
$form->select_incoterms($fkincoterms, $locincoterms);
 
 1788     print 
'<td>'.$form->editfieldkey(
'Currency', 
'multicurrency_code', 
'', $object, 0).
'</td>';
 
 1789     print 
'<td class="maxwidthonsmartphone">';
 
 1790     print 
$form->selectMultiCurrency($currency_code, 
'multicurrency_code');
 
 1794   print 
'<tr><td>'.$langs->trans(
'NotePublic').
'</td>';
 
 1796   $doleditor = 
new DolEditor(
'note_public', isset($note_public) ? $note_public : 
GETPOST(
'note_public', 
'restricthtml'), 
'', 80, 
'dolibarr_notes', 
'In', 0, 
false, empty($conf->global->FCKEDITOR_ENABLE_NOTE_PUBLIC) ? 0 : 1, ROWS_3, 
'90%');
 
 1797   print $doleditor->Create(1);
 
 1802   print 
'<tr><td>'.$langs->trans(
'NotePrivate').
'</td>';
 
 1804   $doleditor = 
new DolEditor(
'note_private', isset($note_private) ? $note_private : 
GETPOST(
'note_private', 
'restricthtml'), 
'', 80, 
'dolibarr_notes', 
'In', 0, 
false, empty($conf->global->FCKEDITOR_ENABLE_NOTE_PRIVATE) ? 0 : 1, ROWS_3, 
'90%');
 
 1805   print $doleditor->Create(1);
 
 1810   if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
 
 1811     print 
"\n<!-- ".$classname.
" info -->";
 
 1813     print 
'<input type="hidden" name="amount"         value="'.$objectsrc->total_ht.
'">'.
"\n";
 
 1814     print 
'<input type="hidden" name="total"          value="'.$objectsrc->total_ttc.
'">'.
"\n";
 
 1815     print 
'<input type="hidden" name="tva"            value="'.$objectsrc->total_tva.
'">'.
"\n";
 
 1816     print 
'<input type="hidden" name="origin"         value="'.$objectsrc->element.
'">';
 
 1817     print 
'<input type="hidden" name="originid"       value="'.$objectsrc->id.
'">';
 
 1819     $newclassname = $classname;
 
 1820     print 
'<tr><td>'.$langs->trans($newclassname).
'</td><td>'.$objectsrc->getNomUrl(1, 
'supplier').
'</td></tr>';
 
 1821     print 
'<tr><td>'.$langs->trans(
'AmountHT').
'</td><td>'.
price($objectsrc->total_ht).
'</td></tr>';
 
 1822     print 
'<tr><td>'.$langs->trans(
'AmountVAT').
'</td><td>'.
price($objectsrc->total_tva).
"</td></tr>";
 
 1823     if ($mysoc->localtax1_assuj == 
"1" || $objectsrc->total_localtax1 != 0) {     
 
 1824       print 
'<tr><td>'.$langs->transcountry(
"AmountLT1", $mysoc->country_code).
'</td><td>'.
price($objectsrc->total_localtax1).
"</td></tr>";
 
 1827     if ($mysoc->localtax2_assuj == 
"1" || $objectsrc->total_localtax2 != 0) {     
 
 1828       print 
'<tr><td>'.$langs->transcountry(
"AmountLT2", $mysoc->country_code).
'</td><td>'.
price($objectsrc->total_localtax2).
"</td></tr>";
 
 1831     print 
'<tr><td>'.$langs->trans(
'AmountTTC').
'</td><td>'.
price($objectsrc->total_ttc).
"</td></tr>";
 
 1834       print 
'<tr><td>'.$langs->trans(
'MulticurrencyAmountHT').
'</td><td>'.
price($objectsrc->multicurrency_total_ht).
'</td></tr>';
 
 1835       print 
'<tr><td>'.$langs->trans(
'MulticurrencyAmountVAT').
'</td><td>'.
price($objectsrc->multicurrency_total_tva).
'</td></tr>';
 
 1836       print 
'<tr><td>'.$langs->trans(
'MulticurrencyAmountTTC').
'</td><td>'.
price($objectsrc->multicurrency_total_ttc).
'</td></tr>';
 
 1842   $reshook = $hookmanager->executeHooks(
'formObjectOptions', 
$parameters, $object, $action); 
 
 1843   print $hookmanager->resPrint;
 
 1845   if (empty($reshook)) {
 
 1846     print $object->showOptionals($extrafields, 
'create');
 
 1854   print 
$form->buttonsSaveCancel(
"CreateDraft");
 
 1857   if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
 
 1858     $title = $langs->trans(
'ProductsAndServices');
 
 1861     print 
'<div class="div-table-responsive-no-min">';
 
 1862     print 
'<table class="noborder centpercent">';
 
 1864     $objectsrc->printOriginLinesList(
'', $selectedLines);
 
 1870 } elseif (!empty($object->id)) {
 
 1871   $result = $object->fetch($id, $ref);
 
 1872   $object->fetch_thirdparty();
 
 1874   $societe = $object->thirdparty;
 
 1876   $author = 
new User($db);
 
 1877   $author->fetch($object->user_author_id);
 
 1881   $title = $langs->trans(
"SupplierOrder");
 
 1888   if ($action == 
'delete') {
 
 1889     $formconfirm = 
$form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'DeleteOrder'), $langs->trans(
'ConfirmDeleteOrder'), 
'confirm_delete', 
'', 0, 2);
 
 1893   if ($action == 
'clone') {
 
 1895     $formquestion = array(
 
 1896       array(
'type' => 
'other', 
'name' => 
'socid', 
'label' => $langs->trans(
"SelectThirdParty"), 
'value' => 
$form->select_company(
GETPOST(
'socid', 
'int'), 
'socid', 
'(s.fournisseur=1)'))
 
 1899     $formconfirm = 
$form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'ToClone'), $langs->trans(
'ConfirmCloneOrder', $object->ref), 
'confirm_clone', $formquestion, 
'yes', 1);
 
 1903   if ($action == 
'valid') {
 
 1904     $object->date_commande = 
dol_now();
 
 1907     if (preg_match(
'/^[\(]?PROV/i', $object->ref) || empty($object->ref)) { 
 
 1908       $newref = $object->getNextNumRef($object->thirdparty);
 
 1910       $newref = $object->ref;
 
 1917       $text = $langs->trans(
'ConfirmValidateOrder', $newref);
 
 1919         require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
 
 1920         $notify = 
new Notify($db);
 
 1922         $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_VALIDATE', $object->socid, $object);
 
 1925       $formconfirm = 
$form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'ValidateOrder'), $text, 
'confirm_valid', 
'', 0, 1);
 
 1930   if ($action == 
'approve' || $action == 
'approve2') {
 
 1931     $qualified_for_stock_change = 0;
 
 1932     if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) {
 
 1933       $qualified_for_stock_change = $object->hasProductsOrServices(2);
 
 1935       $qualified_for_stock_change = $object->hasProductsOrServices(1);
 
 1938     $formquestion = array();
 
 1939     if (
isModEnabled(
'stock') && !empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER) && $qualified_for_stock_change) {
 
 1940       $langs->load(
"stocks");
 
 1941       require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
 
 1944       if ($conf->browser->name == 
'ie') {
 
 1947       $formquestion = array(
 
 1951         array(
'type' => 
'other', 
'name' => 
'idwarehouse', 
'label' => $langs->trans(
"SelectWarehouseForStockIncrease"), 
'value' => $formproduct->selectWarehouses(
GETPOST(
'idwarehouse', 
'int'), 
'idwarehouse', 
'', 1, 0, 0, 
'', 0, $forcecombo))
 
 1954     $text = $langs->trans(
"ConfirmApproveThisOrder", $object->ref);
 
 1956       require_once DOL_DOCUMENT_ROOT.
'/core/class/notify.class.php';
 
 1957       $notify = 
new Notify($db);
 
 1959       $text .= $notify->confirmMessage(
'ORDER_SUPPLIER_APPROVE', $object->socid, $object);
 
 1962     $formconfirm = 
$form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=".$object->id, $langs->trans(
"ApproveThisOrder"), $text, 
"confirm_".$action, $formquestion, 1, 1, 240);
 
 1966   if ($action == 
'refuse') {
 
 1967     $formquestion = array(
 
 1970         'name' => 
'refuse_note',
 
 1971         'label' => $langs->trans(
"Reason"),
 
 1973         'morecss' => 
'minwidth300' 
 1976     $formconfirm  = 
$form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=$object->id", $langs->trans(
"DenyingThisOrder"), $langs->trans(
"ConfirmDenyingThisOrder", $object->ref), 
"confirm_refuse", $formquestion, 0, 1);
 
 1980   if ($action == 
'cancel') {
 
 1981     $formquestion = array(
 
 1984         'name' => 
'cancel_note',
 
 1985         'label' => $langs->trans(
"Reason"),
 
 1987         'morecss' => 
'minwidth300' 
 1990     $formconfirm = 
$form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=$object->id", $langs->trans(
"Cancel"), $langs->trans(
"ConfirmCancelThisOrder", $object->ref), 
"confirm_cancel", $formquestion, 0, 1);
 
 1994   if ($action == 
'commande') {
 
 1996     $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);
 
 2000   if ($action == 
'ask_deleteline') {
 
 2001      $formconfirm = 
$form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&lineid='.$lineid, $langs->trans(
'DeleteProductLine'), $langs->trans(
'ConfirmDeleteProductLine'), 
'confirm_deleteline', 
'', 0, 1);
 
 2005   $reshook = $hookmanager->executeHooks(
'formConfirm', 
$parameters, $object, $action); 
 
 2006   if (empty($reshook)) {
 
 2008   } elseif ($reshook > 0) {
 
 2018   $linkback = 
'<a href="'.DOL_URL_ROOT.
'/fourn/commande/list.php?restore_lastsearch_values=1'.(!empty($socid) ? 
'&socid='.$socid : 
'').
'">'.$langs->trans(
"BackToList").
'</a>';
 
 2020   $morehtmlref = 
'<div class="refidno">';
 
 2022   $morehtmlref .= 
$form->editfieldkey(
"RefSupplier", 
'ref_supplier', $object->ref_supplier, $object, $usercancreate, 
'string', 
'', 0, 1);
 
 2023   $morehtmlref .= 
$form->editfieldval(
"RefSupplier", 
'ref_supplier', $object->ref_supplier, $object, $usercancreate, 
'string'.(isset($conf->global->THIRDPARTY_REF_INPUT_SIZE) ? 
':'.$conf->global->THIRDPARTY_REF_INPUT_SIZE : 
''), 
'', 
null, 
null, 
'', 1);
 
 2025   $morehtmlref .= 
'<br>';
 
 2026   if (!empty($conf->global->MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER) && !empty($usercancreate) && $action == 
'edit_thirdparty') {
 
 2027     $morehtmlref .= 
'<form method="post" action="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'">';
 
 2028     $morehtmlref .= 
'<input type="hidden" name="action" value="set_thirdparty">';
 
 2029     $morehtmlref .= 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
 2030     $morehtmlref .= 
$form->select_company($object->thirdparty->id, 
'new_socid', 
's.fournisseur=1', 
'', 0, 0, array(), 0, 
'minwidth300');
 
 2031     $morehtmlref .= 
'<input type="submit" class="button valignmiddle" value="'.$langs->trans(
"Modify").
'">';
 
 2032     $morehtmlref .= 
'</form>';
 
 2034   if (empty($conf->global->MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER) || $action != 
'edit_thirdparty') {
 
 2036       $morehtmlref .= 
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=edit_thirdparty&token='.
newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetThirdParty')).
'</a>';
 
 2038     $morehtmlref .= $object->thirdparty->getNomUrl(1, 
'supplier');
 
 2039     if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) {
 
 2040       $morehtmlref .= 
' (<a href="'.DOL_URL_ROOT.
'/fourn/commande/list.php?socid='.$object->thirdparty->id.
'&search_company='.urlencode($object->thirdparty->name).
'">'.$langs->trans(
"OtherOrders").
'</a>)';
 
 2046     $langs->load(
"projects");
 
 2047     $morehtmlref .= 
'<br>';
 
 2048     if ($permissiontoadd) {
 
 2049       $morehtmlref .= 
img_picto($langs->trans(
"Project"), 
'project', 
'class="pictofixedwidth"');
 
 2050       if ($action != 
'classify' && $caneditproject) {
 
 2051         $morehtmlref .= 
'<a class="editfielda" href="'.$_SERVER[
'PHP_SELF'].
'?action=classify&token='.
newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetProject')).
'</a> ';
 
 2053       $morehtmlref .= 
$form->form_project($_SERVER[
'PHP_SELF'].
'?id='.$object->id, (empty($conf->global->PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS) ? $object->socid : -1), $object->fk_project, ($action == 
'classify' ? 
'projectid' : 
'none'), 0, ($action == 
'classify' ? 1 : 0), 0, 1, 
'');
 
 2055       if (!empty($object->fk_project)) {
 
 2057         $proj->fetch($object->fk_project);
 
 2058         $morehtmlref .= $proj->getNomUrl(1);
 
 2060           $morehtmlref .= 
'<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).
'</span>';
 
 2065   $morehtmlref .= 
'</div>';
 
 2068   dol_banner_tab($object, 
'ref', $linkback, 1, 
'ref', 
'ref', $morehtmlref);
 
 2071   print 
'<div class="fichecenter">';
 
 2072   print 
'<div class="fichehalfleft">';
 
 2073   print 
'<div class="underbanner clearboth"></div>';
 
 2075   print 
'<table class="border tableforfield centpercent">';
 
 2078   if ($object->methode_commande_id > 0) {
 
 2080     if (!empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) {
 
 2083     print 
'<tr><td class="titlefield">'.$langs->trans(
"Date").
'</td><td>';
 
 2084     print $object->date_commande ? 
dol_print_date($object->date_commande, $usehourmin ? 
'dayhour' : 
'day') : 
'';
 
 2085     if ($object->hasDelay() && !empty($object->date_delivery) && !empty($object->date_commande)) {
 
 2086       print 
' '.img_picto($langs->trans(
"Late").
' : '.$object->showDelay(), 
"warning");
 
 2090     if ($object->methode_commande) {
 
 2091       print 
'<tr><td>'.$langs->trans(
"Method").
'</td><td>'.$object->getInputMethod().
'</td></tr>';
 
 2096   print 
'<tr><td class="titlefield">'.$langs->trans(
"AuthorRequest").
'</td>';
 
 2097   print 
'<td>'.$author->getNomUrl(1, 
'', 0, 0, 0).
'</td>';
 
 2101   if (!empty($conf->global->FACTURE_SUPPLIER_DEPOSITS_ARE_JUST_PAYMENTS)) {
 
 2102     $filterabsolutediscount = 
"fk_invoice_supplier_source IS NULL"; 
 
 2103     $filtercreditnote = 
"fk_invoice_supplier_source IS NOT NULL"; 
 
 2105     $filterabsolutediscount = 
"fk_invoice_supplier_source IS NULL OR (description LIKE '(DEPOSIT)%' AND description NOT LIKE '(EXCESS PAID)%')";
 
 2106     $filtercreditnote = 
"fk_invoice_supplier_source IS NOT NULL AND (description NOT LIKE '(DEPOSIT)%' OR description LIKE '(EXCESS PAID)%')";
 
 2109   $absolute_discount = $societe->getAvailableDiscounts(
'', $filterabsolutediscount, 0, 1);
 
 2110   $absolute_creditnote = $societe->getAvailableDiscounts(
'', $filtercreditnote, 0, 1);
 
 2111   $absolute_discount = 
price2num($absolute_discount, 
'MT');
 
 2112   $absolute_creditnote = 
price2num($absolute_creditnote, 
'MT');
 
 2114   print 
'<tr><td class="titlefield">'.$langs->trans(
'Discounts').
'</td><td>';
 
 2116   $thirdparty = $societe;
 
 2118   $backtopage = urlencode($_SERVER[
"PHP_SELF"].
'?id='.$object->id);
 
 2119   include DOL_DOCUMENT_ROOT.
'/core/tpl/object_discounts.tpl.php';
 
 2124   $langs->load(
'bills');
 
 2125   print 
'<tr><td class="nowrap">';
 
 2126   print 
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
 
 2127   print $langs->trans(
'PaymentConditions');
 
 2129   if ($action != 
'editconditions') {
 
 2130     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>';
 
 2132   print 
'</tr></table>';
 
 2134   if ($action == 
'editconditions') {
 
 2135     $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->cond_reglement_id, 
'cond_reglement_id');
 
 2137     $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->cond_reglement_id, 
'none');
 
 2143   $langs->load(
'bills');
 
 2144   print 
'<tr><td class="nowrap">';
 
 2145   print 
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
 
 2146   print $langs->trans(
'PaymentMode');
 
 2148   if ($action != 
'editmode') {
 
 2149     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>';
 
 2151   print 
'</tr></table>';
 
 2153   if ($action == 
'editmode') {
 
 2154     $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->mode_reglement_id, 
'mode_reglement_id', 
'DBIT', 1, 1);
 
 2156     $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->mode_reglement_id, 
'none');
 
 2165     print 
'<table class="nobordernopadding centpercent"><tr><td>';
 
 2166     print 
$form->editfieldkey(
'Currency', 
'multicurrency_code', 
'', $object, 0);
 
 2168     if ($action != 
'editmulticurrencycode' && $object->statut == $object::STATUS_DRAFT) {
 
 2169       print 
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editmulticurrencycode&token='.
newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetMultiCurrencyCode'), 1).
'</a></td>';
 
 2171     print 
'</tr></table>';
 
 2173     if ($action == 
'editmulticurrencycode') {
 
 2174       $form->form_multicurrency_code($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_code, 
'multicurrency_code');
 
 2176       $form->form_multicurrency_code($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_code, 
'none');
 
 2181     if ($object->multicurrency_code != $conf->currency || $object->multicurrency_tx != 1) {
 
 2184       print 
'<table class="nobordernopadding centpercent"><tr>';
 
 2186       print 
$form->editfieldkey(
'CurrencyRate', 
'multicurrency_tx', 
'', $object, 0);
 
 2188       if ($action != 
'editmulticurrencyrate' && $object->statut == $object::STATUS_DRAFT && $object->multicurrency_code && $object->multicurrency_code != $conf->currency) {
 
 2189         print 
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editmulticurrencyrate&token='.
newToken().
'&id='.$object->id.
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetMultiCurrencyCode'), 1).
'</a></td>';
 
 2191       print 
'</tr></table>';
 
 2193       if ($action == 
'editmulticurrencyrate' || $action == 
'actualizemulticurrencyrate') {
 
 2194         if ($action == 
'actualizemulticurrencyrate') {
 
 2197         $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_tx, 
'multicurrency_tx', $object->multicurrency_code);
 
 2199         $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->multicurrency_tx, 
'none', $object->multicurrency_code);
 
 2200         if ($object->statut == $object::STATUS_DRAFT && $object->multicurrency_code && $object->multicurrency_code != $conf->currency) {
 
 2201           print 
'<div class="inline-block">         ';
 
 2202           print 
'<a href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=actualizemulticurrencyrate">'.$langs->trans(
"ActualizeCurrency").
'</a>';
 
 2211   if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && 
isModEnabled(
"banque")) {
 
 2212     print 
'<tr><td class="nowrap">';
 
 2213     print 
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
 
 2214     print $langs->trans(
'BankAccount');
 
 2216     if ($action != 
'editbankaccount' && $usercancreate) {
 
 2217       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>';
 
 2219     print 
'</tr></table>';
 
 2221     if ($action == 
'editbankaccount') {
 
 2222       $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->fk_account, 
'fk_account', 1);
 
 2224       $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->fk_account, 
'none');
 
 2232   print 
'<td>'.$langs->trans(
'NbDaysToDelivery').
' '.
img_picto($langs->trans(
'DescNbDaysToDelivery'), 
'info', 
'style="cursor:help"').
'</td>';
 
 2233   print 
'<td>'.$object->getMaxDeliveryTimeDay($langs).
'</td>';
 
 2238   print 
'<table class="nobordernopadding centpercent"><tr><td>';
 
 2239   print $langs->trans(
'DateDeliveryPlanned');
 
 2241   if ($action != 
'editdate_livraison') {
 
 2242     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>';
 
 2244   print 
'</tr></table>';
 
 2246   if ($action == 
'editdate_livraison') {
 
 2247     print 
'<form name="setdate_livraison" action="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'" method="post">';
 
 2248     print 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
 2249     print 
'<input type="hidden" name="action" value="setdate_livraison">';
 
 2251     if (!empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) {
 
 2254     print 
$form->selectDate($object->delivery_date ? $object->delivery_date : -1, 
'liv_', $usehourmin, $usehourmin, 
'', 
"setdate_livraison");
 
 2255     print 
'<input type="submit" class="button button-edit" value="'.$langs->trans(
'Modify').
'">';
 
 2258     $usehourmin = 
'day';
 
 2259     if (!empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) {
 
 2260       $usehourmin = 
'dayhour';
 
 2262     print $object->delivery_date ? 
dol_print_date($object->delivery_date, $usehourmin) : 
' ';
 
 2263     if ($object->hasDelay() && !empty($object->delivery_date)) {
 
 2264       print 
' '.img_picto($langs->trans(
"Late").
' : '.$object->showDelay(), 
"warning");
 
 2272     print 
'<table class="nobordernopadding centpercent"><tr><td>';
 
 2273     print $langs->trans(
'IncotermLabel');
 
 2274     print 
'<td><td class="right">';
 
 2275     if ($usercancreate) {
 
 2276       print 
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/fourn/commande/card.php?id='.$object->id.
'&action=editincoterm&token='.
newToken().
'">'.
img_edit().
'</a>';
 
 2280     print 
'</td></tr></table>';
 
 2283     if ($action != 
'editincoterm') {
 
 2286       print 
$form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : 
''), (!empty($object->location_incoterms) ? $object->location_incoterms : 
''), $_SERVER[
'PHP_SELF'].
'?id='.$object->id);
 
 2292   include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
 
 2297   print 
'<div class="fichehalfright">';
 
 2298   print 
'<div class="underbanner clearboth"></div>';
 
 2300   print 
'<table class="border tableforfield centpercent">';
 
 2302   if ($object->multicurrency_code != $conf->currency || $object->multicurrency_tx != 1) {
 
 2304     print 
'<tr><td class="titlefieldmiddle">'.$form->editfieldkey(
'MulticurrencyAmountHT', 
'multicurrency_total_ht', 
'', $object, 0).
'</td>';
 
 2305     print 
'<td class="nowrap right amountcard">'.price($object->multicurrency_total_ht, 
'', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).
'</td>';
 
 2309     print 
'<tr><td>'.$form->editfieldkey(
'MulticurrencyAmountVAT', 
'multicurrency_total_tva', 
'', $object, 0).
'</td>';
 
 2310     print 
'<td class="nowrap right amountcard">'.price($object->multicurrency_total_tva, 
'', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).
'</td>';
 
 2314     print 
'<tr><td>'.$form->editfieldkey(
'MulticurrencyAmountTTC', 
'multicurrency_total_ttc', 
'', $object, 0).
'</td>';
 
 2315     print 
'<td class="nowrap right amountcard">'.price($object->multicurrency_total_ttc, 
'', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).
'</td>';
 
 2321   if (!empty($conf->global->ORDER_MANAGE_MIN_AMOUNT) && $object->total_ht < $object->thirdparty->supplier_order_min_amount) {
 
 2322     $alert = 
' '.img_warning($langs->trans(
'OrderMinAmount').
': '.
price($object->thirdparty->supplier_order_min_amount));
 
 2324   print 
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"AmountHT").
'</td>';
 
 2325   print 
'<td class="nowrap right amountcard">'.price($object->total_ht, 
'', $langs, 1, -1, -1, $conf->currency).$alert.
'</td>';
 
 2329   print 
'<tr><td>'.$langs->trans(
"AmountVAT").
'</td>';
 
 2330   print 
'<td class="nowrap right amountcard">'.price($object->total_tva, 
'', $langs, 1, -1, -1, $conf->currency).
'</td>';
 
 2334   if ($mysoc->localtax1_assuj == 
"1" || $object->total_localtax1 != 0) { 
 
 2335     print 
'<tr><td>'.$langs->transcountry(
"AmountLT1", $mysoc->country_code).
'</td>';
 
 2336     print 
'<td class="nowrap right amountcard">'.price($object->total_localtax1, 
'', $langs, 1, -1, -1, $conf->currency).
'</td>';
 
 2339   if ($mysoc->localtax2_assuj == 
"1" || $object->total_localtax2 != 0) { 
 
 2340     print 
'<tr><td>'.$langs->transcountry(
"AmountLT2", $mysoc->country_code).
'</td>';
 
 2341     print 
'<td class="nowrap right amountcard">'.price($object->total_localtax2, 
'', $langs, 1, -1, -1, $conf->currency).
'</td>';
 
 2346   print 
'<tr><td>'.$langs->trans(
"AmountTTC").
'</td>';
 
 2347   print 
'<td class="nowrap right amountcard">'.price($object->total_ttc, 
'', $langs, 1, -1, -1, $conf->currency).
'</td>';
 
 2361   print 
'<div class="clearboth"></div><br>';
 
 2363   if (!empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) {
 
 2364     $blocname = 
'contacts';
 
 2365     $title = $langs->trans(
'ContactsAddresses');
 
 2366     include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
 
 2369   if (!empty($conf->global->MAIN_DISABLE_NOTES_TAB)) {
 
 2370     $blocname = 
'notes';
 
 2371     $title = $langs->trans(
'Notes');
 
 2372     include DOL_DOCUMENT_ROOT.
'/core/tpl/bloc_showhide.tpl.php';
 
 2381   print 
' <form name="addproduct" id="addproduct" action="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.(($action != 
'editline') ? 
'' : 
'#line_'.
GETPOST(
'lineid', 
'int')).
'" method="POST"> 
 2382   <input type="hidden" name="token" value="'.
newToken().
'"> 
 2383   <input type="hidden" name="action" value="' . (($action != 
'editline') ? 
'addline' : 
'updateline').
'"> 
 2384   <input type="hidden" name="mode" value=""> 
 2385   <input type="hidden" name="page_y" value=""> 
 2386   <input type="hidden" name="id" value="'.$object->id.
'"> 
 2387     <input type="hidden" name="socid" value="'.$societe->id.
'"> 
 2390   if (!empty($conf->use_javascript_ajax) && $object->statut == 0) {
 
 2391     include DOL_DOCUMENT_ROOT.
'/core/tpl/ajaxrow.tpl.php';
 
 2394   print 
'<div class="div-table-responsive-no-min">';
 
 2395   print 
'<table id="tablelines" class="noborder noshadow centpercent">';
 
 2398   global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax;
 
 2399   $forceall = 1; $dateSelector = 0; $inputalsopricewithtax = 1;
 
 2400   $senderissupplier = 2; 
 
 2401   if (!empty($conf->global->SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY)) {
 
 2402     $senderissupplier = 1;
 
 2406   if (!empty($object->lines)) {
 
 2407     $object->printObjectLines($action, $object->thirdparty, $mysoc, $lineid, 1);
 
 2410   $num = count($object->lines);
 
 2414     if ($action != 
'editline') {
 
 2418       $reshook = $hookmanager->executeHooks(
'formAddObjectLine', 
$parameters, $object, $action); 
 
 2419       if ($reshook < 0) 
setEventMessages($hookmanager->error, $hookmanager->errors, 
'errors');
 
 2420       if (empty($reshook))
 
 2421         $object->formAddObjectLine(1, $societe, $mysoc);
 
 2434   if ($user->socid == 0 && $action != 
'delete') {
 
 2435     if ($action != 
'makeorder' && $action != 
'presend' && $action != 
'editline') {
 
 2436       print 
'<div class="tabsAction">';
 
 2439       $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', 
$parameters, $object, $action); 
 
 2441       if (empty($reshook)) {
 
 2442         $object->fetchObjectLinked(); 
 
 2445         if ($object->statut == 0 && $num > 0) {
 
 2446           if ($usercanvalidate) {
 
 2447             $tmpbuttonlabel = $langs->trans(
'Validate');
 
 2448             if ($usercanapprove && empty($conf->global->SUPPLIER_ORDER_NO_DIRECT_APPROVE)) {
 
 2449               $tmpbuttonlabel = $langs->trans(
"ValidateAndApprove");
 
 2452             print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=valid">';
 
 2453             print $tmpbuttonlabel;
 
 2465           if ($usercanorder) {
 
 2466             print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Modify").
'</a>';
 
 2472           if ($usercanapprove) {
 
 2473             if (!empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) && $object->total_ht >= $conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED && !empty($object->user_approve_id)) {
 
 2474               print 
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"FirstApprovalAlreadyDone")).
'">'.$langs->trans(
"ApproveOrder").
'</a>';
 
 2476               print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=approve">'.$langs->trans(
"ApproveOrder").
'</a>';
 
 2479             print 
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"ApproveOrder").
'</a>';
 
 2484         if (!empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) && $object->total_ht >= $conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) {
 
 2486             if ($usercanapprovesecond) {
 
 2487               if (!empty($object->user_approve_id2)) {
 
 2488                 print 
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"SecondApprovalAlreadyDone")).
'">'.$langs->trans(
"Approve2Order").
'</a>';
 
 2490                 print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=approve2">'.$langs->trans(
"Approve2Order").
'</a>';
 
 2493               print 
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"Approve2Order").
'</a>';
 
 2500           if ($usercanapprove || $usercanapprovesecond) {
 
 2501             print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=refuse">'.$langs->trans(
"RefuseOrder").
'</a>';
 
 2503             print 
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$langs->trans(
"RefuseOrder").
'</a>';
 
 2508         if (empty($user->socid)) {
 
 2510             if ($usercanorder) {
 
 2511               print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=presend&mode=init#formmailbeforetitle">'.$langs->trans(
'SendMail').
'</a>';
 
 2519           if (!$buttonshown && $usercanapprove) {
 
 2520             if (empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER_ONLY)
 
 2521               || (!empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER_ONLY) && $user->id == $object->user_approve_id)) {
 
 2522               print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Disapprove").
'</a>';
 
 2526           if (!$buttonshown && $usercanapprovesecond && !empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED)) {
 
 2527             if (empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER2_ONLY)
 
 2528               || (!empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER2_ONLY) && $user->id == $object->user_approve_id2)) {
 
 2529               print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"Disapprove").
'</a>';
 
 2533         if (in_array($object->statut, array(3, 4, 5, 6, 7, 9))) {
 
 2534           if ($usercanorder) {
 
 2535             print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=reopen&token='.
newToken().
'">'.$langs->trans(
"ReOpen").
'</a>';
 
 2541         if (
isModEnabled(
'stock') && (!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE))) {
 
 2542           $labelofbutton = $langs->trans(
'ReceiveProducts');
 
 2543           if ($conf->reception->enabled) {
 
 2544             $labelofbutton = $langs->trans(
"CreateReception");
 
 2545             if (!empty($object->linkedObjects[
'reception'])) {
 
 2546               foreach ($object->linkedObjects[
'reception'] as $element) {
 
 2547                 if ($element->statut >= 0) {
 
 2555           if (in_array($object->statut, array(3, 4, 5))) {
 
 2556             if (((
isModEnabled(
"fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || 
isModEnabled(
"supplier_order")) && $usercanreceive) {
 
 2557               print 
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/fourn/commande/dispatch.php?id='.$object->id.
'">'.$labelofbutton.
'</a></div>';
 
 2559               print 
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"NotAllowed")).
'">'.$labelofbutton.
'</a></div>';
 
 2565           if ($usercanorder) {
 
 2566             print 
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=makeorder#makeorder">'.$langs->trans(
"MakeOrder").
'</a></div>';
 
 2568             print 
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#">'.$langs->trans(
"MakeOrder").
'</a></div>';
 
 2574           if ($usercanreceive) {
 
 2575             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>';
 
 2582         if (((
isModEnabled(
"fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || 
isModEnabled(
"supplier_invoice")) && ($object->statut >= 2 && $object->statut != 7 && $object->billed != 1)) {  
 
 2583           if ($user->rights->fournisseur->facture->creer || $user->rights->supplier_invoice->creer) {
 
 2584             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(
"CreateBill").
'</a>';
 
 2590         if ($usercancreate && $object->statut >= 2 && $object->statut != 7 && $object->billed != 1) {  
 
 2592             print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=classifybilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
 
 2594             if (!empty($object->linkedObjectsIds[
'invoice_supplier'])) {
 
 2595               if ($user->rights->fournisseur->facture->creer || $user->rights->supplier_invoice->creer) {
 
 2596                 print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=classifybilled&token='.
newToken().
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
 
 2599               print 
'<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans(
"NeedAtLeastOneInvoice")).
'">'.$langs->trans(
"ClassifyBilled").
'</a>';
 
 2605         if (!empty($conf->syncsupplierwebservices->enabled) && $object->statut >= 2) { 
 
 2606           print 
'<a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=webservice&token='.
newToken().
'&mode=init">'.$langs->trans(
'CreateRemoteOrder').
'</a>';
 
 2610         if ($usercancreate) {
 
 2611           print 
'<a class="butAction" href="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'&socid='.$object->socid.
'&action=clone&object=order">'.$langs->trans(
"ToClone").
'</a>';
 
 2616           if ($usercanorder) {
 
 2617             print 
'<a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=cancel">'.$langs->trans(
"CancelOrder").
'</a>';
 
 2622         if (!empty($usercandelete)) {
 
 2623           if ($hasreception) {
 
 2624             print 
'<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans(
"ReceptionExist").
'">'.$langs->trans(
"Delete").
'</a>';
 
 2626             print 
'<a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=delete&token='.
newToken().
'">'.$langs->trans(
"Delete").
'</a>';
 
 2636       print 
'<!-- form to record supplier order -->'.
"\n";
 
 2637       print 
'<form name="commande" id="makeorder" action="card.php?id='.$object->id.
'&action=commande" method="POST">';
 
 2639       print 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
 2640       print 
'<input type="hidden" name="action" value="commande">';
 
 2642       print 
'<table class="noborder centpercent">';
 
 2644       print 
'<tr><td class="fieldrequired">'.$langs->trans(
"OrderDate").
'</td><td>';
 
 2645       $date_com = 
dol_mktime(
GETPOST(
'rehour', 
'int'), 
GETPOST(
'remin', 
'int'), 
GETPOST(
'resec', 
'int'), 
GETPOST(
'remonth', 
'int'), 
GETPOST(
'reday', 
'int'), 
GETPOST(
'reyear', 
'int'));
 
 2646       if (empty($date_com)) {
 
 2649       print 
$form->selectDate($date_com, 
'', 1, 1, 
'', 
"commande", 1, 1);
 
 2653       print 
'<tr><td class="fieldrequired">'.$langs->trans(
"OrderMode").
'</td><td>';
 
 2654       $formorder->selectInputMethod(
GETPOST(
'methodecommande'), 
"methodecommande", 1);
 
 2657       print 
'<tr><td>'.$langs->trans(
"Comment").
'</td><td><input class="quatrevingtpercent" type="text" name="comment" value="'.
GETPOST(
'comment').
'"></td></tr>';
 
 2659       print 
'<tr><td class="center" colspan="2">';
 
 2660       print 
'<input type="submit" name="makeorder" class="button" value="'.$langs->trans(
"ToOrder").
'">';
 
 2661       print 
'     ';
 
 2662       print 
'<input type="submit" name="cancel" class="button button-cancel" value="'.$langs->trans(
"Cancel").
'">';
 
 2671     if (
GETPOST(
'modelselected')) {
 
 2672       $action = 
'presend';
 
 2675     if ($action != 
'makeorder' && $action != 
'presend' ) {
 
 2676       print 
'<div class="fichecenter"><div class="fichehalfleft">';
 
 2680       $file = $conf->fournisseur->dir_output.
'/commande/'.$objref.
'/'.$objref.
'.pdf';
 
 2681       $relativepath = $objref.
'/'.$objref.
'.pdf';
 
 2682       $filedir = $conf->fournisseur->dir_output.
'/commande/'.$objref;
 
 2683       $urlsource = $_SERVER[
"PHP_SELF"].
"?id=".$object->id;
 
 2684       $genallowed = $usercanread;
 
 2685       $delallowed = $usercancreate;
 
 2686       $modelpdf = (!empty($object->model_pdf) ? $object->model_pdf : (empty($conf->global->COMMANDE_SUPPLIER_ADDON_PDF) ? 
'' : $conf->global->COMMANDE_SUPPLIER_ADDON_PDF));
 
 2688       print $formfile->showdocuments(
'commande_fournisseur', $objref, $filedir, $urlsource, $genallowed, $delallowed, $modelpdf, 1, 0, 0, 0, 0, 
'', 
'', 
'', $object->thirdparty->default_lang, 
'', $object);
 
 2689       $somethingshown = $formfile->numoffiles;
 
 2692       $linktoelem = 
$form->showLinkToObjectBlock($object, 
null, array(
'supplier_order', 
'order_supplier'));
 
 2693       $somethingshown = 
$form->showLinkedObjectBlock($object, $linktoelem);
 
 2695       print 
'</div><div class="fichehalfright">';
 
 2697       if ($action == 
'classifyreception') {
 
 2700           print 
'<!-- form to record purchase order received -->'.
"\n";
 
 2701           print 
'<form id="classifyreception" action="card.php?id='.$object->id.
'" method="post">';
 
 2702           print 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
 2703           print 
'<input type="hidden" name="action" value="livraison">';
 
 2706           print 
'<table class="noborder centpercent">';
 
 2708           print 
'<tr><td>'.$langs->trans(
"DeliveryDate").
'</td><td>';
 
 2710           print 
$form->selectDate($datepreselected, 
'', 1, 1, 
'', 
"commande", 1, 1);
 
 2711           print 
"</td></tr>\n";
 
 2713           print 
'<tr><td class="fieldrequired">'.$langs->trans(
"Delivery").
"</td><td>\n";
 
 2715           $liv[
''] = 
' ';
 
 2716           $liv[
'tot'] = $langs->trans(
"CompleteOrNoMoreReceptionExpected");
 
 2717           $liv[
'par'] = $langs->trans(
"PartialWoman");
 
 2718           $liv[
'nev'] = $langs->trans(
"NeverReceived");
 
 2719           $liv[
'can'] = $langs->trans(
"Canceled");
 
 2721           print 
$form->selectarray(
"type", $liv);
 
 2724           print 
'<tr><td>'.$langs->trans(
"Comment").
'</td><td><input class="quatrevingtpercent" type="text" name="comment"></td></tr>';
 
 2725           print 
'<tr><td class="center" colspan="2">';
 
 2726           print 
'<input type="submit" name="receive" class="button" value="'.$langs->trans(
"Receive").
'">';
 
 2727           print 
'     ';
 
 2728           print 
'<input type="submit" name="cancel" class="button button-cancel" value="'.$langs->trans(
"Cancel").
'">';
 
 2737       include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formactions.class.php';
 
 2739       $somethingshown = 
$formactions->showactions($object, 
'order_supplier', $socid, 1, 
'listaction'.($genallowed ? 
'largetitle' : 
''));
 
 2741       print 
'</div></div>';
 
 2747     if ($action == 
'webservice' && 
GETPOST(
'mode', 
'alpha') != 
"send" && !
GETPOST(
'cancel', 
'alpha')) {
 
 2748       $mode        = 
GETPOST(
'mode', 
'alpha');
 
 2749       $ws_url      = $object->thirdparty->webservices_url;
 
 2750       $ws_key      = $object->thirdparty->webservices_key;
 
 2751       $ws_user     = 
GETPOST(
'ws_user', 
'alpha');
 
 2752       $ws_password = 
GETPOST(
'ws_password', 
'alpha');
 
 2755       $ws_ns = 
'http://www.dolibarr.org/ns/';
 
 2756       $ws_authentication = array(
 
 2757       'dolibarrkey'=>$ws_key,
 
 2758       'sourceapplication'=>
'DolibarrWebServiceClient',
 
 2760       'password'=>$ws_password,
 
 2767       if (empty($ws_url) || empty($ws_key)) {
 
 2768         setEventMessages($langs->trans(
"ErrorWebServicesFieldsRequired"), 
null, 
'errors');
 
 2770         $error_occurred = 
true; 
 
 2771       } elseif ($mode != 
"init" && (empty($ws_user) || empty($ws_password))) {
 
 2776       if ($mode == 
"init") {
 
 2778         print 
'<table class="border centpercent">';
 
 2779         print 
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'" method="post">';
 
 2780         print 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
 2781         print 
'<input type="hidden" name="action" value="webservice">';
 
 2782         print 
'<input type="hidden" name="mode" value="check">';
 
 2784         if ($error_occurred) {
 
 2785           print 
"<br>".$langs->trans(
"ErrorOccurredReviseAndRetry").
"<br>";
 
 2786           print 
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
 
 2789           print 
'<tr><td>'.$langs->trans(
"WebServiceURL").
'</td><td colspan="3">'.
dol_print_url($ws_url).
'</td></tr>';
 
 2791           print 
'<tr><td>'.$langs->trans(
"User").
'</td><td><input class="width100" type="text" name="ws_user"></td></tr>';
 
 2793           print 
'<tr><td>'.$langs->trans(
"Password").
'</td><td><input class="width100" type="text" name="ws_password"></td></tr>';
 
 2795           print 
'<tr><td class="center" colspan="2">';
 
 2796           print 
'<input type="submit" class="button" id="ws_submit" name="ws_submit" value="'.$langs->trans(
"CreateRemoteOrder").
'">';
 
 2797           print 
'     ';
 
 2799           print 
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
 
 2806       } elseif ($mode == 
"check") {
 
 2808         $ws_thirdparty = 
'';
 
 2809         $error_occurred = 
false;
 
 2812         $soapclient_user = 
new nusoap_client($ws_url.
"/webservices/server_user.php");
 
 2813         $soapclient_user->soap_defencoding = 
'UTF-8';
 
 2814         $soapclient_user->decodeUTF8(
false);
 
 2817         $ws_parameters = array(
'authentication'=>$ws_authentication, 
'id' => 
'', 
'ref'=>$ws_user);
 
 2818         $result_user = $soapclient_user->call(
"getUser", $ws_parameters, $ws_ns, 
'');
 
 2819         $user_status_code = $result_user[
"result"][
"result_code"];
 
 2821         if ($user_status_code == 
"OK") {
 
 2823           $ws_entity = $result_user[
"user"][
"entity"];
 
 2824           $ws_authentication[
'entity'] = $ws_entity;
 
 2825           $ws_thirdparty = $result_user[
"user"][
"fk_thirdparty"];
 
 2826           if (empty($ws_thirdparty)) {
 
 2827             setEventMessages($langs->trans(
"RemoteUserMissingAssociatedSoc"), 
null, 
'errors');
 
 2828             $error_occurred = 
true;
 
 2831             $soapclient_product = 
new nusoap_client($ws_url.
"/webservices/server_productorservice.php");
 
 2832             $soapclient_product->soap_defencoding = 
'UTF-8';
 
 2833             $soapclient_product->decodeUTF8(
false);
 
 2837             foreach ($object->lines as $line) {
 
 2839               $ref_supplier = $line->ref_supplier;
 
 2840               $line_id = $i.
"º) ".$line->product_ref.
": ";
 
 2841               if (empty($ref_supplier)) {
 
 2844               $ws_parameters = array(
'authentication' => $ws_authentication, 
'id' => 
'', 
'ref' => $ref_supplier);
 
 2845               $result_product = $soapclient_product->call(
"getProductOrService", $ws_parameters, $ws_ns, 
'');
 
 2846               if (!$result_product) {
 
 2847                 setEventMessages($line_id.$langs->trans(
"SOAPError").
" ".$soapclient_product->error_str.
" - ".$soapclient_product->response, 
null, 
'errors');
 
 2848                 $error_occurred = 
true;
 
 2853               $status_code = $result_product[
"result"][
"result_code"];
 
 2854               if (empty($status_code)) { 
 
 2855                 setEventMessages($langs->trans(
"SOAPError").
" '".$soapclient_order->error_str.
"'", 
null, 
'errors');
 
 2856               } elseif ($status_code != 
"OK") { 
 
 2857                 if ($status_code == 
"NOT_FOUND") {
 
 2858                   setEventMessages($line_id.$langs->trans(
"SupplierMissingRef").
" '".$ref_supplier.
"'", 
null, 
'warnings');
 
 2860                   setEventMessages($line_id.$langs->trans(
"ResponseNonOK").
" '".$status_code.
"' - '".$result_product[
"result"][
"result_label"].
"'", 
null, 
'errors');
 
 2861                   $error_occurred = 
true;
 
 2868               $supplier_price = 
price($result_product[
"product"][
"price_net"]); 
 
 2869               $local_price = 
null; 
 
 2872               $product_fourn_list = $product_fourn->list_product_fournisseur_price($line->fk_product);
 
 2873               if (count($product_fourn_list) > 0) {
 
 2874                 foreach ($product_fourn_list as $product_fourn_line) {
 
 2876                   if ($product_fourn_line->fourn_id == $object->socid && $product_fourn_line->fourn_ref == $ref_supplier) {
 
 2877                     $local_price = 
price($product_fourn_line->fourn_price);
 
 2882               if ($local_price != 
null && $local_price != $supplier_price) {
 
 2883                 setEventMessages($line_id.$langs->trans(
"RemotePriceMismatch").
" ".$supplier_price.
" - ".$local_price, 
null, 
'warnings');
 
 2887               if (empty($result_product[
"product"][
"status_tosell"])) {
 
 2888                 setEventMessages($line_id.$langs->trans(
"ProductStatusNotOnSellShort").
" '".$ref_supplier.
"'", 
null, 
'warnings');
 
 2892         } elseif ($user_status_code == 
"PERMISSION_DENIED") {
 
 2893           setEventMessages($langs->trans(
"RemoteUserNotPermission"), 
null, 
'errors');
 
 2894           $error_occurred = 
true;
 
 2895         } elseif ($user_status_code == 
"BAD_CREDENTIALS") {
 
 2896           setEventMessages($langs->trans(
"RemoteUserBadCredentials"), 
null, 
'errors');
 
 2897           $error_occurred = 
true;
 
 2899           setEventMessages($langs->trans(
"ResponseNonOK").
" '".$user_status_code.
"'", 
null, 
'errors');
 
 2900           $error_occurred = 
true;
 
 2904         print 
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'" method="post">';
 
 2905         print 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
 2906         print 
'<input type="hidden" name="action" value="webservice">';
 
 2907         print 
'<input type="hidden" name="mode" value="send">';
 
 2908         print 
'<input type="hidden" name="ws_user" value="'.$ws_user.
'">';
 
 2909         print 
'<input type="hidden" name="ws_password" value="'.$ws_password.
'">';
 
 2910         print 
'<input type="hidden" name="ws_entity" value="'.$ws_entity.
'">';
 
 2911         print 
'<input type="hidden" name="ws_thirdparty" value="'.$ws_thirdparty.
'">';
 
 2912         if ($error_occurred) {
 
 2913           print 
"<br>".$langs->trans(
"ErrorOccurredReviseAndRetry").
"<br>";
 
 2915           print 
'<input type="submit" class="button" id="ws_submit" name="ws_submit" value="'.$langs->trans(
"Confirm").
'">';
 
 2916           print 
'     ';
 
 2918         print 
'<input class="button button-cancel" type="submit" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
 
 2924     $modelmail = 
'order_supplier_send';
 
 2925     $defaulttopic = 
'SendOrderRef';
 
 2926     $diroutput = $conf->fournisseur->commande->dir_output;
 
 2927     $autocopy = 
'MAIN_MAIL_AUTOCOPY_SUPPLIER_ORDER_TO';
 
 2928     $trackid = 
'sord'.$object->id;
 
 2930     include DOL_DOCUMENT_ROOT.
'/core/tpl/card_presend.tpl.php';
 
if(GETPOST('button_removefilter_x', 'alpha')||GETPOST('button_removefilter.x', 'alpha')||GETPOST('button_removefilter', 'alpha')) if(GETPOST('button_search_x', 'alpha')||GETPOST('button_search.x', 'alpha')||GETPOST('button_search', 'alpha')) if($action=="save" &&empty($cancel)) $help_url
View.
 
if(preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) if(preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) if($action=='set') elseif($action=='specimen') elseif($action=='setmodel') elseif($action=='del') elseif($action=='setdoc') $formactions
View.
 
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
 
Class to manage predefined suppliers products.
 
const STATUS_RECEIVED_PARTIALLY
Received partially.
 
const STATUS_VALIDATED
Validated status.
 
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.
 
static getIdAndTxFromCode($dbs, $code, $date_document='')
Get id and rate of currency from code.
 
Class to manage notifications.
 
Class ProductCombination Used to represent a product combination.
 
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.
 
if(isModEnabled('facture') &&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') &&!empty($user->rights->don->lire)) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
 
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
 
print *****$script_file(".$version.") pid c cd cd cd description as p label as s rowid
 
ordersupplier_prepare_head(CommandeFournisseur $object)
Prepare array with list of tabs.
 
dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
Show tab footer of a card.
 
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed informations (by default a local PHP server timestamp) Re...
 
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
 
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='')
Show tabs of a record.
 
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields.
 
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
 
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
 
dol_get_fiche_end($notab=0)
Return tab footer of a card.
 
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='')
Set event messages in dol_events session object.
 
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
 
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
 
if(!function_exists('dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
 
dol_now($mode='auto')
Return date for now.
 
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
 
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
 
dol_print_url($url, $target='_blank', $max=32, $withpicto=0)
Show Url link.
 
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)
Fonction qui renvoie si tva doit etre tva percue recuperable.
 
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 formated 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.
 
get_localtax($vatrate, $local, $thirdparty_buyer="", $thirdparty_seller="", $vatnpr=0)
Return localtax rate for a particular vat, when selling a product with vat $vatrate,...
 
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
 
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
 
isModEnabled($module)
Is Dolibarr module enabled.
 
img_edit($titlealt='default', $float=0, $other='')
Show logo editer/modifier fiche.
 
get_default_tva(Societe $thirdparty_seller, Societe $thirdparty_buyer, $idprod=0, $idprodfournprice=0)
Function that return vat rate of a product line (according to seller, buyer and product vat rate) VAT...
 
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
 
$formconfirm
if ($action == 'delbookkeepingyear') {
 
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.