/htdocs/fourn/commande/fiche.php
PHP | 1841 lines | 1390 code | 234 blank | 217 comment | 418 complexity | 86e91cc064a66e1d0ccb8f26e6fd966c MD5 | raw file
Possible License(s): LGPL-3.0, LGPL-2.1, GPL-3.0, MIT
Large files files are truncated, but you can click here to view the full file
- <?php
- /* Copyright (C) 2004-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
- * Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com>
- * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
- * Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es>
- * Copyright (C) 2011 Philippe Grand <philippe.grand@atoo-net.com>
- * Copyright (C) 2012 Marcos García <marcosgdf@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * or see http://www.gnu.org/
- */
- /**
- * \file htdocs/fourn/commande/fiche.php
- * \ingroup supplier, order
- * \brief Card supplier order
- */
- require '../../main.inc.php';
- require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
- require_once DOL_DOCUMENT_ROOT.'/core/class/html.formorder.class.php';
- require_once DOL_DOCUMENT_ROOT.'/core/modules/supplier_order/modules_commandefournisseur.php';
- require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
- require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';
- require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php';
- require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
- if (! empty($conf->produit->enabled))
- require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
- if (! empty($conf->projet->enabled))
- require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
- $langs->load('orders');
- $langs->load('sendings');
- $langs->load('companies');
- $langs->load('bills');
- $langs->load('propal');
- $langs->load('deliveries');
- $langs->load('products');
- $langs->load('stocks');
- $id = GETPOST('id','int');
- $ref = GETPOST('ref','alpha');
- $action = GETPOST('action','alpha');
- $confirm = GETPOST('confirm','alpha');
- $comclientid = GETPOST('comid','int');
- $socid = GETPOST('socid','int');
- $projectid = GETPOST('projectid','int');
- //PDF
- $hidedetails = (GETPOST('hidedetails','int') ? GETPOST('hidedetails','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0));
- $hidedesc = (GETPOST('hidedesc','int') ? GETPOST('hidedesc','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0));
- $hideref = (GETPOST('hideref','int') ? GETPOST('hideref','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
- // Security check
- if ($user->societe_id) $socid=$user->societe_id;
- $result = restrictedArea($user, 'commande_fournisseur', $id,'');
- // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
- $hookmanager->initHooks(array('ordersuppliercard'));
- $mesg='';
- $errors=array();
- $object = new CommandeFournisseur($db);
- /*
- * Actions
- */
- if ($action == 'setref_supplier' && $user->rights->fournisseur->commande->creer)
- {
- $object->fetch($id);
- $result=$object->setValueFrom('ref_supplier',GETPOST('ref_supplier','alpha'));
- if ($result < 0) dol_print_error($db, $object->error);
- }
- // conditions de reglement
- if ($action == 'setconditions' && $user->rights->fournisseur->commande->creer)
- {
- $object->fetch($id);
- $result=$object->setPaymentTerms(GETPOST('cond_reglement_id','int'));
- }
- // mode de reglement
- else if ($action == 'setmode' && $user->rights->fournisseur->commande->creer)
- {
- $object->fetch($id);
- $result = $object->setPaymentMethods(GETPOST('mode_reglement_id','int'));
- }
- // date de livraison
- if ($action == 'setdate_livraison' && $user->rights->fournisseur->commande->creer)
- {
- $datelivraison=dol_mktime(0, 0, 0, GETPOST('liv_month','int'), GETPOST('liv_day','int'),GETPOST('liv_year','int'));
- $object->fetch($id);
- $result=$object->set_date_livraison($user,$datelivraison);
- if ($result < 0)
- {
- $mesg='<div class="error">'.$object->error.'</div>';
- }
- }
- // Set project
- else if ($action == 'classin' && $user->rights->fournisseur->commande->creer)
- {
- $object->fetch($id);
- $object->setProject($projectid);
- }
- else if ($action == 'setremisepercent' && $user->rights->fournisseur->commande->creer)
- {
- $object->fetch($id);
- $result = $object->set_remise($user, $_POST['remise_percent']);
- }
- else if ($action == 'setnote_public' && $user->rights->fournisseur->commande->creer)
- {
- $object->fetch($id);
- $result=$object->update_note_public(dol_html_entity_decode(GETPOST('note_public'), ENT_QUOTES));
- if ($result < 0) dol_print_error($db,$object->error);
- }
- else if ($action == 'setnote' && $user->rights->fournisseur->commande->creer)
- {
- $object->fetch($id);
- $result=$object->update_note(dol_html_entity_decode(GETPOST('note'), ENT_QUOTES));
- if ($result < 0) dol_print_error($db,$object->error);
- }
- else if ($action == 'reopen' && $user->rights->fournisseur->commande->approuver)
- {
- $order = new CommandeFournisseur($db);
- $result = $order->fetch($id);
- if ($order->statut == 5 || $order->statut == 6 || $order->statut == 7 || $order->statut == 9)
- {
- if ($order->statut == 5) $newstatus=4; // Received->Received partially
- if ($order->statut == 6) $newstatus=2; // Canceled->Approved
- if ($order->statut == 7) $newstatus=3; // Canceled->Process running
- if ($order->statut == 9) $newstatus=1; // Refused->Validated
- $result = $order->setStatus($user,$newstatus);
- if ($result > 0)
- {
- header('Location: '.$_SERVER["PHP_SELF"].'?id='.$_REQUEST['id']);
- exit;
- }
- else
- {
- $mesg='<div class="error">'.$order->error.'</div>';
- }
- }
- }
- /*
- * Add a line into product
- */
- else if ($action == 'addline' && $user->rights->fournisseur->commande->creer)
- {
- $langs->load('errors');
- $error = false;
- if ($_POST['pu'] < 0 && $_POST['qty'] < 0)
- {
- setEventMessage($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPrice'), $langs->transnoentitiesnoconv('Qty')), 'errors');
- $error = true;
- }
- if (empty($_POST['idprodfournprice']) && $_POST['type'] < 0)
- {
- setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), 'errors');
- $error = true;
- }
- if (empty($_POST['idprodfournprice']) && (! isset($_POST['pu']) || $_POST['pu']=='')) // Unit price can be 0 but not ''
- {
- setEventMessage($langs->trans($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('UnitPrice'))), 'errors');
- $error = true;
- }
- if (empty($_POST['idprodfournprice']) && empty($_POST['np_desc']) && empty($_POST['dp_desc']))
- {
- setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), 'errors');
- $error = true;
- }
- if (empty($_POST['idprodfournprice']) && (! isset($_POST['qty']) || $_POST['qty'] == '')
- || ! empty($_POST['idprodfournprice']) && (! isset($_POST['pqty']) || $_POST['pqty'] == ''))
- {
- setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), 'errors');
- $error = true;
- }
- if (! $error && (($_POST['qty'] || $_POST['pqty']) && (($_POST['pu'] && ($_POST['np_desc'] || $_POST['dp_desc'])) || $_POST['idprodfournprice'])))
- {
- if ($object->fetch($id) < 0) dol_print_error($db,$object->error);
- if ($object->fetch_thirdparty() < 0) dol_print_error($db,$object->error);
- // Ecrase $pu par celui du produit
- // Ecrase $desc par celui du produit
- // Ecrase $txtva par celui du produit
- if ($_POST["idprodfournprice"]) // >0 or -1
- {
- $qty = $_POST['qty'] ? $_POST['qty'] : $_POST['pqty'];
- $productsupplier = new ProductFournisseur($db);
- $idprod=$productsupplier->get_buyprice($_POST['idprodfournprice'], $qty); // Just to see if a price exists for the quantity. Not used to found vat
- if ($idprod > 0)
- {
- $res=$productsupplier->fetch($idprod);
- // cas special pour lequel on a les meme reference que le fournisseur
- // $label = '['.$nv_prod->ref.'] - '. $nv_prod->libelle;
- $label = $productsupplier->libelle;
- $desc = $productsupplier->description;
- $desc.= $productsupplier->description && $_POST['np_desc'] ? "\n" : "";
- $desc.= $_POST['np_desc'];
- $remise_percent = $_POST["remise_percent"] ? $_POST["remise_percent"] : $_POST["p_remise_percent"];
- $tva_tx = get_default_tva($object->thirdparty, $mysoc, $productsupplier->id, $_POST['idprodfournprice']);
- $type = $productsupplier->type;
- // Local Taxes
- $localtax1_tx= get_localtax($tva_tx, 1, $object->thirdparty);
- $localtax2_tx= get_localtax($tva_tx, 2, $object->thirdparty);
- $result=$object->addline(
- $desc,
- $pu,
- $qty,
- $tva_tx,
- $localtax1_tx,
- $localtax2_tx,
- $productsupplier->id,
- $_POST['idprodfournprice'],
- $productsupplier->fourn_ref,
- $remise_percent,
- 'HT',
- $type
- );
- }
- if ($idprod == -1)
- {
- // Quantity too low
- $mesg='<div class="error">'.$langs->trans("ErrorQtyTooLowForThisSupplier").'</div>';
- }
- }
- else
- {
- $type=$_POST["type"];
- $desc=$_POST['dp_desc'];
- $tva_tx = price2num($_POST['tva_tx']);
- // Local Taxes
- $localtax1_tx= get_localtax($tva_tx, 1, $object->thirdparty);
- $localtax2_tx= get_localtax($tva_tx, 2, $object->thirdparty);
- if (! $_POST['dp_desc'])
- {
- $mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Label")).'</div>';
- }
- else
- {
- if (!empty($_POST['pu']))
- {
- $price_base_type = 'HT';
- $ht = price2num($_POST['pu']);
- $result=$object->addline($desc, $ht, $_POST['qty'], $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $_POST['remise_percent'], $price_base_type, 0, $type);
- }
- else
- {
- $ttc = price2num($_POST['amountttc']);
- $ht = $ttc / (1 + ($tauxtva / 100));
- $price_base_type = 'HT';
- $result=$object->addline($desc, $ht, $_POST['qty'], $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $_POST['remise_percent'], $price_base_type, $ttc, $type);
- }
- }
- }
- //print "xx".$tva_tx; exit;
- if ($result > 0)
- {
- if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
- {
- // Define output language
- $outputlangs = $langs;
- $newlang=GETPOST('lang_id','alpha');
- if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
- if (! empty($newlang))
- {
- $outputlangs = new Translate();
- $outputlangs->setDefaultLang($newlang);
- }
- $ret=$object->fetch($id); // Reload to get new records
- supplier_order_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
- }
- unset($_POST['qty']);
- unset($_POST['type']);
- unset($_POST['idprodfournprice']);
- unset($_POST['remmise_percent']);
- unset($_POST['dp_desc']);
- unset($_POST['np_desc']);
- unset($_POST['pu']);
- unset($_POST['tva_tx']);
- unset($localtax1_tx);
- unset($localtax2_tx);
- }
- else
- {
- setEventMessage($object->error, 'errors');
- }
- }
- }
- /*
- * Mise a jour d'une ligne dans la commande
- */
- else if ($action == 'updateligne' && $user->rights->fournisseur->commande->creer && $_POST['save'] == $langs->trans('Save'))
- {
- $product=new Product($db);
- if ($_POST["elrowid"])
- {
- if ($product->fetch($_POST["elrowid"]) < 0) dol_print_error($db);
- }
- if ($object->fetch($id) < 0) dol_print_error($db,$object->error);
- if ($object->fetch_thirdparty() < 0) dol_print_error($db,$object->error);
- $localtax1_tx=get_localtax($_POST['tva_tx'],1,$object->thirdparty);
- $localtax2_tx=get_localtax($_POST['tva_tx'],2,$object->thirdparty);
- $result = $object->updateline(
- $_POST['elrowid'],
- $_POST['eldesc'],
- $_POST['pu'],
- $_POST['qty'],
- $_POST['remise_percent'],
- $_POST['tva_tx'],
- $localtax1_tx,
- $localtax2_tx,
- 'HT',
- 0,
- isset($_POST["type"])?$_POST["type"]:$product->type
- );
- if ($result >= 0)
- {
- $outputlangs = $langs;
- if (! empty($_REQUEST['lang_id']))
- {
- $outputlangs = new Translate();
- $outputlangs->setDefaultLang($_REQUEST['lang_id']);
- }
- if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
- {
- $ret=$object->fetch($id); // Reload to get new records
- supplier_order_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
- }
- }
- else
- {
- dol_print_error($db,$object->error);
- exit;
- }
- }
- else if ($action == 'confirm_deleteproductline' && $confirm == 'yes' && $user->rights->fournisseur->commande->creer)
- {
- $object->fetch($id);
- $result = $object->deleteline(GETPOST('lineid'));
- if ($result >= 0)
- {
- $outputlangs = $langs;
- if (! empty($_REQUEST['lang_id']))
- {
- $outputlangs = new Translate();
- $outputlangs->setDefaultLang($_REQUEST['lang_id']);
- }
- if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
- {
- $ret=$object->fetch($id); // Reload to get new records
- supplier_order_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
- }
- }
- else
- {
- $error++;
- $mesg=$object->error;
- }
- if (! $error)
- {
- header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
- exit;
- }
- }
- else if ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->fournisseur->commande->valider)
- {
- $object->fetch($id);
- $object->fetch_thirdparty();
- $object->date_commande=dol_now();
- $result = $object->valid($user);
- if ($result >= 0)
- {
- $outputlangs = $langs;
- if (! empty($_REQUEST['lang_id']))
- {
- $outputlangs = new Translate();
- $outputlangs->setDefaultLang($_REQUEST['lang_id']);
- }
- if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
- {
- $ret=$object->fetch($id); // Reload to get new records
- supplier_order_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
- }
- }
- else
- {
- $mesg=$object->error;
- }
- // If we have permission, and if we don't need to provide th idwarehouse, we go directly on approved step
- if ($user->rights->fournisseur->commande->approuver && ! (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER) && $object->hasProductsOrServices(1)))
- {
- $action='confirm_approve';
- }
- }
- else if ($action == 'confirm_approve' && $confirm == 'yes' && $user->rights->fournisseur->commande->approuver)
- {
- $idwarehouse=GETPOST('idwarehouse', 'int');
- $object->fetch($id);
- $object->fetch_thirdparty();
- // Check parameters
- if (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER) && $object->hasProductsOrServices(1))
- {
- if (! $idwarehouse || $idwarehouse == -1)
- {
- $error++;
- $errors[]=$langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("Warehouse"));
- $action='';
- }
- }
- if (! $error)
- {
- $result = $object->approve($user, $idwarehouse);
- if ($result > 0)
- {
- header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
- exit;
- }
- else
- {
- $mesg=$object->error;
- }
- }
- }
- else if ($action == 'confirm_refuse' && $confirm == 'yes' && $user->rights->fournisseur->commande->approuver)
- {
- $object->fetch($id);
- $result = $object->refuse($user);
- if ($result > 0)
- {
- header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
- exit;
- }
- else
- {
- $mesg=$object->error;
- }
- }
- else if ($action == 'confirm_commande' && $confirm == 'yes' && $user->rights->fournisseur->commande->commander)
- {
- $object->fetch($id);
- $result = $object->commande($user, $_REQUEST["datecommande"], $_REQUEST["methode"], $_REQUEST['comment']);
- if ($result > 0)
- {
- header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
- exit;
- }
- else
- {
- $mesg=$object->error;
- }
- }
- else if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->fournisseur->commande->supprimer)
- {
- $object->fetch($id);
- $object->fetch_thirdparty();
- $result=$object->delete($user);
- if ($result > 0)
- {
- header("Location: ".DOL_URL_ROOT.'/fourn/commande/liste.php');
- exit;
- }
- else
- {
- $mesg=$object->error;
- }
- }
- // Receive
- else if ($action == 'livraison' && $user->rights->fournisseur->commande->receptionner)
- {
- $object->fetch($id);
- if ($_POST["type"])
- {
- $date_liv = dol_mktime(0,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]);
- $result = $object->Livraison($user, $date_liv, $_POST["type"], $_POST["comment"]);
- if ($result > 0)
- {
- header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
- exit;
- }
- else if($result == -3)
- {
- $mesg='<div class="error">'.$langs->trans("NotAuthorized").'</div>';
- }
- else
- {
- dol_print_error($db,$object->error);
- exit;
- }
- }
- else
- {
- $mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Delivery")).'</div>';
- }
- }
- else if ($action == 'confirm_cancel' && $confirm == 'yes' && $user->rights->fournisseur->commande->commander)
- {
- $object->fetch($id);
- $result = $object->cancel($user);
- if ($result > 0)
- {
- header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
- exit;
- }
- else
- {
- $mesg=$object->error;
- }
- }
- // Line ordering
- else if ($action == 'up' && $user->rights->fournisseur->commande->creer)
- {
- $object->fetch($id);
- $object->line_up($_GET['rowid']);
- $outputlangs = $langs;
- if (! empty($_REQUEST['lang_id']))
- {
- $outputlangs = new Translate();
- $outputlangs->setDefaultLang($_REQUEST['lang_id']);
- }
- if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) supplier_order_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
- header('Location: '.$_SERVER["PHP_SELF"].'?id='.$id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#'.$_GET['rowid']));
- exit;
- }
- else if ($action == 'down' && $user->rights->fournisseur->commande->creer)
- {
- $object->fetch($id);
- $object->line_down($_GET['rowid']);
- $outputlangs = $langs;
- if (! empty($_REQUEST['lang_id']))
- {
- $outputlangs = new Translate();
- $outputlangs->setDefaultLang($_REQUEST['lang_id']);
- }
- if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) supplier_order_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
- header('Location: '.$_SERVER["PHP_SELF"].'?id='.$id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#'.$_GET['rowid']));
- exit;
- }
- else if ($action == 'builddoc' && $user->rights->fournisseur->commande->creer) // En get ou en post
- {
- // Build document
- // Sauvegarde le dernier module choisi pour generer un document
- $object->fetch($id);
- $object->fetch_thirdparty();
- if ($_REQUEST['model'])
- {
- $object->setDocModel($user, $_REQUEST['model']);
- }
- $outputlangs = $langs;
- if (! empty($_REQUEST['lang_id']))
- {
- $outputlangs = new Translate();
- $outputlangs->setDefaultLang($_REQUEST['lang_id']);
- }
- $result=supplier_order_pdf_create($db, $object,$object->modelpdf,$outputlangs, $hidedetails, $hidedesc, $hideref);
- if ($result <= 0)
- {
- dol_print_error($db,$result);
- exit;
- }
- else
- {
- header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc'));
- exit;
- }
- }
- // Delete file in doc form
- else if ($action == 'remove_file' && $user->rights->fournisseur->commande->creer)
- {
- require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
- if ($object->fetch($id))
- {
- $object->fetch_thirdparty();
- $langs->load("other");
- $upload_dir = $conf->fournisseur->commande->dir_output;
- $file = $upload_dir . '/' . GETPOST('file');
- $ret=dol_delete_file($file,0,0,0,$object);
- if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile')));
- else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors');
- }
- }
- /*
- * Create an order
- */
- else if ($action == 'create' && $user->rights->fournisseur->commande->creer)
- {
- $error=0;
- $fourn = new Fournisseur($db);
- $result=$fourn->fetch($socid);
- $object->socid = $fourn->id;
- $db->begin();
- $orderid=$object->create($user);
- if (! $orderid > 0)
- {
- $error++;
- $mesg=$object->error;
- }
- if (! $error)
- {
- if ($comclientid != '')
- {
- $object->updateFromCommandeClient($user, $orderid, $comclientid);
- }
- $id=$orderid;
- $db->commit();
- }
- else
- {
- $db->rollback();
- }
- }
- /*
- * Add file in email form
- */
- if (GETPOST('addfile'))
- {
- require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
- // Set tmp user directory TODO Use a dedicated directory for temp mails files
- $vardir=$conf->user->dir_output."/".$user->id;
- $upload_dir_tmp = $vardir.'/temp';
- dol_add_file_process($upload_dir_tmp,0,0);
- $action='presend';
- }
- /*
- * Remove file in email form
- */
- if (GETPOST('removedfile'))
- {
- require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
- // Set tmp user directory
- $vardir=$conf->user->dir_output."/".$user->id;
- $upload_dir_tmp = $vardir.'/temp';
- // TODO Delete only files that was uploaded from email form
- dol_remove_file_process($_POST['removedfile'],0);
- $action='presend';
- }
- /*
- * Send mail
- */
- if ($action == 'send' && ! GETPOST('addfile') && ! GETPOST('removedfile') && ! GETPOST('cancel'))
- {
- $langs->load('mails');
- $result=$object->fetch($_POST['orderid']);
- $result=$object->fetch_thirdparty();
- if ($result > 0)
- {
- // $ref = dol_sanitizeFileName($object->ref);
- // $file = $conf->fournisseur->commande->dir_output . '/' . $ref . '/' . $ref . '.pdf';
- // if (is_readable($file))
- // {
- if ($_POST['sendto'])
- {
- // Le destinataire a ete fourni via le champ libre
- $sendto = $_POST['sendto'];
- $sendtoid = 0;
- }
- elseif ($_POST['receiver'] != '-1')
- {
- // Recipient was provided from combo list
- if ($_POST['receiver'] == 'thirdparty') // Id of third party
- {
- $sendto = $object->client->email;
- $sendtoid = 0;
- }
- else // Id du contact
- {
- $sendto = $object->client->contact_get_property($_POST['receiver'],'email');
- $sendtoid = $_POST['receiver'];
- }
- }
- if (dol_strlen($sendto))
- {
- $langs->load("commercial");
- $from = $_POST['fromname'] . ' <' . $_POST['frommail'] .'>';
- $replyto = $_POST['replytoname']. ' <' . $_POST['replytomail'].'>';
- $message = $_POST['message'];
- $sendtocc = $_POST['sendtocc'];
- $deliveryreceipt = $_POST['deliveryreceipt'];
- if ($action == 'send')
- {
- if (dol_strlen($_POST['subject'])) $subject=$_POST['subject'];
- else $subject = $langs->transnoentities('CustomerOrder').' '.$object->ref;
- $actiontypecode='AC_SUP_ORD';
- $actionmsg = $langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto.".\n";
- if ($message)
- {
- $actionmsg.=$langs->transnoentities('MailTopic').": ".$subject."\n";
- $actionmsg.=$langs->transnoentities('TextUsedInTheMessageBody').":\n";
- $actionmsg.=$message;
- }
- $actionmsg2=$langs->transnoentities('Action'.$actiontypecode);
- }
- // Create form object
- include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
- $formmail = new FormMail($db);
- $attachedfiles=$formmail->get_attached_files();
- $filepath = $attachedfiles['paths'];
- $filename = $attachedfiles['names'];
- $mimetype = $attachedfiles['mimes'];
- // Send mail
- require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
- $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt);
- if ($mailfile->error)
- {
- $mesg='<div class="error">'.$mailfile->error.'</div>';
- }
- else
- {
- $result=$mailfile->sendfile();
- if ($result)
- {
- $mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain "
- $error=0;
- // Initialisation donnees
- $object->sendtoid = $sendtoid;
- $object->actiontypecode = $actiontypecode;
- $object->actionmsg = $actionmsg;
- $object->actionmsg2 = $actionmsg2;
- $object->fk_element = $object->id;
- $object->elementtype = $object->element;
- // Appel des triggers
- include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
- $interface=new Interfaces($db);
- $result=$interface->run_triggers('ORDER_SUPPLIER_SENTBYMAIL',$object,$user,$langs,$conf);
- if ($result < 0) { $error++; $errors=$interface->errors; }
- // Fin appel triggers
- if ($error)
- {
- dol_print_error($db);
- }
- else
- {
- // Redirect here
- // This avoid sending mail twice if going out and then back to page
- header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id.'&mesg='.urlencode($mesg));
- exit;
- }
- }
- else
- {
- $langs->load("other");
- $mesg='<div class="error">';
- if ($mailfile->error)
- {
- $mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
- $mesg.='<br>'.$mailfile->error;
- }
- else
- {
- $mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS';
- }
- $mesg.='</div>';
- }
- }
- /* }
- else
- {
- $langs->load("other");
- $mesg='<div class="error">'.$langs->trans('ErrorMailRecipientIsEmpty').' !</div>';
- $action='presend';
- dol_syslog('Recipient email is empty');
- }*/
- }
- else
- {
- $langs->load("errors");
- $mesg='<div class="error">'.$langs->trans('ErrorCantReadFile',$file).'</div>';
- dol_syslog('Failed to read file: '.$file);
- }
- }
- else
- {
- $langs->load("other");
- $mesg='<div class="error">'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'</div>';
- dol_syslog('Impossible de lire les donnees de la facture. Le fichier facture n\'a peut-etre pas ete genere.');
- }
- }
- if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->fournisseur->commande->creer)
- {
- if ($action == 'addcontact')
- {
- $result = $object->fetch($id);
- if ($result > 0 && $id > 0)
- {
- $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
- $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
- }
- if ($result >= 0)
- {
- header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
- exit;
- }
- else
- {
- if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
- {
- $langs->load("errors");
- $mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
- }
- else
- {
- $mesg = '<div class="error">'.$object->error.'</div>';
- }
- }
- }
- // bascule du statut d'un contact
- else if ($action == 'swapstatut')
- {
- if ($object->fetch($id))
- {
- $result=$object->swapContactStatus(GETPOST('ligne'));
- }
- else
- {
- dol_print_error($db);
- }
- }
- // Efface un contact
- else if ($action == 'deletecontact')
- {
- $object->fetch($id);
- $result = $object->delete_contact($_GET["lineid"]);
- if ($result >= 0)
- {
- header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
- exit;
- }
- else {
- dol_print_error($db);
- }
- }
- }
- /*
- * View
- */
- llxHeader('',$langs->trans("OrderCard"),"CommandeFournisseur");
- $form = new Form($db);
- $formfile = new FormFile($db);
- $formorder = new FormOrder($db);
- $productstatic = new Product($db);
- /* *************************************************************************** */
- /* */
- /* Mode vue et edition */
- /* */
- /* *************************************************************************** */
- $now=dol_now();
- if ($id > 0 || ! empty($ref))
- {
- //if ($mesg) print $mesg.'<br>';
- $result=$object->fetch($id,$ref);
- if ($result >= 0)
- {
- $soc = new Societe($db);
- $soc->fetch($object->socid);
- $author = new User($db);
- $author->fetch($object->user_author_id);
- $head = ordersupplier_prepare_head($object);
- $title=$langs->trans("SupplierOrder");
- dol_fiche_head($head, 'card', $title, 0, 'order');
- /*
- * Confirmation de la suppression de la commande
- */
- if ($action == 'delete')
- {
- $ret=$form->form_confirm($_SERVER["PHP_SELF"].'?id='.$id, $langs->trans('DeleteOrder'), $langs->trans('ConfirmDeleteOrder'), 'confirm_delete', '', 0, 2);
- if ($ret == 'html') print '<br>';
- }
- /*
- * Confirmation de la validation
- */
- if ($action == 'valid')
- {
- $object->date_commande=dol_now();
- // We check if number is temporary number
- if (preg_match('/^[\(]?PROV/i',$object->ref)) $newref = $object->getNextNumRef($soc);
- else $newref = $object->ref;
- $text=$langs->trans('ConfirmValidateOrder',$newref);
- if (! empty($conf->notification->enabled))
- {
- require_once DOL_DOCUMENT_ROOT .'/core/class/notify.class.php';
- $notify=new Notify($db);
- $text.='<br>';
- $text.=$notify->confirmMessage(3,$object->socid);
- }
- $ret=$form->form_confirm($_SERVER["PHP_SELF"].'?id='.$id, $langs->trans('ValidateOrder'), $text, 'confirm_valid', '', 0, 1);
- if ($ret == 'html') print '<br>';
- }
- /*
- * Confirmation de l'approbation
- */
- if ($action == 'approve')
- {
- $formquestion=array();
- if (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER) && $object->hasProductsOrServices(1))
- {
- $langs->load("stocks");
- require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
- $formproduct=new FormProduct($db);
- $formquestion=array(
- //'text' => $langs->trans("ConfirmClone"),
- //array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
- //array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
- array('type' => 'other', 'name' => 'idwarehouse', 'label' => $langs->trans("SelectWarehouseForStockDecrease"), 'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'),'idwarehouse','',1)));
- }
- $ret=$form->form_confirm("fiche.php?id=".$object->id,$langs->trans("ApproveThisOrder"),$langs->trans("ConfirmApproveThisOrder",$object->ref),"confirm_approve", $formquestion, 1, 1, 240);
- if ($ret == 'html') print '<br>';
- }
- /*
- * Confirmation de la desapprobation
- */
- if ($action == 'refuse')
- {
- $ret=$form->form_confirm("fiche.php?id=$object->id",$langs->trans("DenyingThisOrder"),$langs->trans("ConfirmDenyingThisOrder",$object->ref),"confirm_refuse", '', 0, 1);
- if ($ret == 'html') print '<br>';
- }
- /*
- * Confirmation de l'annulation
- */
- if ($action == 'cancel')
- {
- $ret=$form->form_confirm("fiche.php?id=$object->id",$langs->trans("Cancel"),$langs->trans("ConfirmCancelThisOrder",$object->ref),"confirm_cancel", '', 0, 1);
- if ($ret == 'html') print '<br>';
- }
- /*
- * Confirmation de l'envoi de la commande
- */
- if ($action == 'commande')
- {
- $date_com = dol_mktime(0,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]);
- $ret=$form->form_confirm("fiche.php?id=".$object->id."&datecommande=".$date_com."&methode=".$_POST["methodecommande"]."&comment=".urlencode($_POST["comment"]), $langs->trans("MakeOrder"),$langs->trans("ConfirmMakeOrder",dol_print_date($date_com,'day')),"confirm_commande",'',0,2);
- if ($ret == 'html') print '<br>';
- }
- /*
- * Confirmation de la suppression d'une ligne produit
- */
- if ($action == 'delete_product_line')
- {
- $ret=$form->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$_GET["lineid"], $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteproductline','',0,2);
- if ($ret == 'html') print '<br>';
- }
- /*
- * Commande
- */
- $nbrow=8;
- if (! empty($conf->projet->enabled)) $nbrow++;
- //Local taxes
- if ($mysoc->country_code=='ES')
- {
- if($mysoc->localtax1_assuj=="1") $nbrow++;
- if($mysoc->localtax2_assuj=="1") $nbrow++;
- }
- print '<table class="border" width="100%">';
- $linkback = '<a href="'.DOL_URL_ROOT.'/fourn/commande/liste.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
- // Ref
- print '<tr><td width="20%">'.$langs->trans("Ref").'</td>';
- print '<td colspan="2">';
- print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref');
- print '</td>';
- print '</tr>';
- // Ref supplier
- print '<tr><td>';
- print $form->editfieldkey("RefSupplier",'ref_supplier',$langs->trans($object->ref_supplier),$object,$user->rights->fournisseur->commande->creer);
- print '</td><td colspan="2">';
- print $form->editfieldval("RefSupplier",'ref_supplier',$langs->trans($object->ref_supplier),$object,$user->rights->fournisseur->commande->creer);
- print '</td></tr>';
- // Fournisseur
- print '<tr><td>'.$langs->trans("Supplier")."</td>";
- print '<td colspan="2">'.$soc->getNomUrl(1,'supplier').'</td>';
- print '</tr>';
- // Statut
- print '<tr>';
- print '<td>'.$langs->trans("Status").'</td>';
- print '<td colspan="2">';
- print $object->getLibStatut(4);
- print "</td></tr>";
- // Date
- if ($object->methode_commande_id > 0)
- {
- print '<tr><td>'.$langs->trans("Date").'</td><td colspan="2">';
- if ($object->date_commande)
- {
- print dol_print_date($object->date_commande,"dayhourtext")."\n";
- }
- print "</td></tr>";
- if ($object->methode_commande)
- {
- print '<tr><td>'.$langs->trans("Method").'</td><td colspan="2">'.$object->getInputMethod().'</td></tr>';
- }
- }
- // Author
- print '<tr><td>'.$langs->trans("AuthorRequest").'</td>';
- print '<td colspan="2">'.$author->getNomUrl(1).'</td>';
- print '</tr>';
- // Conditions de reglement par defaut
- $langs->load('bills');
- $form = new Form($db);
- print '<tr><td nowrap>';
- print '<table width="100%" class="nobordernopadding"><tr><td nowrap>';
- print $langs->trans('PaymentConditions');
- print '<td>';
- if ($action != 'editconditions') print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editconditions&id='.$object->id.'">'.img_edit($langs->trans('SetConditions'),1).'</a></td>';
- print '</tr></table>';
- print '</td><td colspan="2">';
- if ($action == 'editconditions')
- {
- $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id,'cond_reglement_id');
- }
- else
- {
- $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id,'none');
- }
- print "</td>";
- print '</tr>';
- // Mode of payment
- $langs->load('bills');
- $form = new Form($db);
- print '<tr><td nowrap>';
- print '<table width="100%" class="nobordernopadding"><tr><td nowrap>';
- print $langs->trans('PaymentMode');
- print '</td>';
- if ($action != 'editmode') print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editmode&id='.$object->id.'">'.img_edit($langs->trans('SetMode'),1).'</a></td>';
- print '</tr></table>';
- print '</td><td colspan="2">';
- if ($action == 'editmode')
- {
- $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->mode_reglement_id,'mode_reglement_id');
- }
- else
- {
- $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->mode_reglement_id,'none');
- }
- print '</td></tr>';
- // Delivery date planed
- print '<tr><td height="10">';
- print '<table class="nobordernopadding" width="100%"><tr><td>';
- print $langs->trans('DateDeliveryPlanned');
- print '</td>';
- if ($action != 'editdate_livraison') print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdate_livraison&id='.$object->id.'">'.img_edit($langs->trans('SetDeliveryDate'),1).'</a></td>';
- print '</tr></table>';
- print '</td><td colspan="2">';
- if ($action == 'editdate_livraison')
- {
- print '<form name="setdate_livraison" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'" method="post">';
- print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
- print '<input type="hidden" name="action" value="setdate_livraison">';
- $form->select_date($object->date_livraison?$object->date_livraison:-1,'liv_','','','',"setdate_livraison");
- print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
- print '</form>';
- }
- else
- {
- print $object->date_livraison ? dol_print_date($object->date_livraison,'daytext') : ' ';
- }
- print '</td>';
- // Project
- if (! empty($conf->projet->enabled))
- {
- $langs->load('projects');
- print '<tr><td height="10">';
- print '<table class="nobordernopadding" width="100%"><tr><td>';
- print $langs->trans('Project');
- print '</td>';
- if ($action != 'classify') print '<td align="right"><a href="'.$_SERVER['PHP_SELF'].'?action=classify&id='.$object->id.'">'.img_edit($langs->trans('SetProject')).'</a></td>';
- print '</tr></table>';
- print '</td><td colspan="2">';
- //print "$object->id, $object->socid, $object->fk_project";
- if ($action == 'classify')
- {
- $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, 'projectid');
- }
- else
- {
- $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none');
- }
- print '</td>';
- print '</tr>';
- }
- // Other attributes
- $parameters=array('socid'=>$socid, 'colspan' => ' colspan="3"');
- $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
- // Ligne de 3 colonnes
- print '<tr><td>'.$langs->trans("AmountHT").'</td>';
- print '<td align="right"><b>'.price($object->total_ht).'</b></td>';
- print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>';
- print '<tr><td>'.$langs->trans("AmountVAT").'</td><td align="right">'.price($object->total_tva).'</td>';
- print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>';
- // Amount Local Taxes
- if ($mysoc->country_code=='ES')
- {
- if ($mysoc->localtax1_assuj=="1") //Localtax1 RE
- {
- print '<tr><td>'.$langs->transcountry("AmountLT1",$mysoc->country_code).'</td>';
- print '<td align="right">'.price($object->total_localtax1).'</td>';
- print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>';
- }
- if ($mysoc->localtax2_assuj=="1") //Localtax2 IRPF
- {
- print '<tr><td>'.$langs->transcountry("AmountLT2",$mysoc->country_code).'</td>';
- print '<td align="right">'.price($object->total_localtax2).'</td>';
- print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>';
- }
- }
- print '<tr><td>'.$langs->trans("AmountTTC").'</td><td align="right">'.price($object->total_ttc).'</td>';
- print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>';
- print "</table><br>";
- if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
- {
- $blocname = 'contacts';
- $title = $langs->trans('ContactsAddresses');
- include DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php';
- }
- if (! empty($conf->global->MAIN_DISABLE_NOTES_TAB))
- {
- $blocname = 'notes';
- $title = $langs->trans('Notes');
- include DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php';
- }
- dol_htmloutput_mesg($mesg);
- dol_htmloutput_errors('',$errors);
- /*
- * Lines
- */
- print '<table class="noborder" width="100%">';
- $num = count($object->lines);
- $i = 0; $total = 0;
- if ($num)
- {
- print '<tr class="liste_titre">';
- print '<td>'.$langs->trans('Label').'</td>';
- print '<td align="right" width="50">'.$langs->trans('VAT').'</td>';
- print '<td align="right" width="80">'.$langs->trans('PriceUHT').'</td>';
- print '<td align="right" width="50">'.$langs->trans('Qty').'</td>';
- print '<td align="right" width="50">'.$langs->trans('ReductionShort').'</td>';
- print '<td align="right" width="50">'.$langs->trans('TotalHTShort').'</td>';
- print '<td width="48" colspan="3"> </td>';
- print "</tr>\n";
- }
- $var=true;
- while ($i < $num)
- {
- $line = $object->lines[$i];
- $var=!$var;
- // Show product and description
- $type=(! empty($line->product_type)?$line->product_type:(! empty($line->fk_product_type)?$line->fk_product_type:0));
- // Try to enhance type detection using date_start and date_end for free lines where type
- // was not saved.
- $date_start='';
- $date_end='';
- if (! empty($line->date_start))
- {
- $date_start=$line->date_start;
- $type=1;
- }
- if (! empty($line->date_end))
- {
- $date_end=$line->date_end;
- $type=1;
- }
- // Ligne en mode visu
- if ($action != 'editline' || $_GET['rowid'] != $line->id)
- {
- print '<tr '.$bc[$var].'>';
- // Show product and description
- print '<td>';
- if ($line->fk_product > 0)
- {
- print '<a name="'.$line->id.'"></a>'; // ancre pour retourner sur la ligne
- $product_static=new ProductFournisseur($db);
- $product_static->fetch($line->fk_product);
- $text=$product_static->getNomUrl(1,'supplier');
- $text.= ' - '.$product_static->libelle;
- $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($line->description));
- print $form->textwithtooltip($text,$description,3,'','',$i);
- // Show range
- print_date_range($date_start,$date_end);
- // Add description in form
- if (! empty($conf->global->PRODUIT_DESC_IN_FORM)) print ($line->description && $line->description!=$product_static->libelle)?'<br>'.dol_htmlentitiesbr($line->description):'';
- }
- // Description - Editor wysiwyg
- if (! $line->fk_product)
- {
- if ($type==1) $text = img_object($langs->trans('Service'),'service');
- else $text = img_object($langs->trans('Product'),'product');
- print $text.' '.nl2br($line->description);
- // Show range
- print_date_range($date_start,$date_end);
- }
- print '</td>';
- print '<td align="right" nowrap="nowrap">'.vatrate($line->tva_tx).'%</td>';
- print '<td align="right" nowrap="nowrap">'.price($line->subprice)."</td>\n";
- print '<td align="right" nowrap="nowrap">'.$line->qty.'</td>';
- if ($line->remise_percent > 0)
- {
- print '<td align="right" nowrap="nowrap">'.dol_print_reduction($line->remise_percent,$langs)."</td>\n";
- }
- else
- {
- print '<td> </td>';
- }
- print '<td align="right" nowrap="nowrap">'.price($line->total_ht).'</td>';
- if ($object->statut == 0 && $user->rights->fournisseur->commande->creer)
- {
- print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=editline&rowid='.$line->id.'#'.$line->id.'">';
- print img_edit();
- print '</a></td>';
- $actiondelete='delete_product_line';
- print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action='.$actiondelete.'&lineid='.$line->id.'">';
- …
Large files files are truncated, but you can click here to view the full file