* Copyright (C) 2005-2010 Laurent Destailleur * Copyright (C) 2005 Simon TOSSER * Copyright (C) 2005-2011 Regis Houssin * Copyright (C) 2011 Juanjo Menent * * 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 . */ // Code identique a /expedition/shipment.php /** * \file htdocs/expedition/fiche.php * \ingroup expedition * \brief Fiche descriptive d'une expedition * \version $Id$ */ require("../main.inc.php"); require_once(DOL_DOCUMENT_ROOT."/expedition/class/expedition.class.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/expedition/pdf/ModelePdfExpedition.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/product/class/html.formproduct.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/product.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/sendings.lib.php"); if ($conf->product->enabled || $conf->service->enabled) require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php"); if ($conf->propal->enabled) require_once(DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php"); if ($conf->commande->enabled) require_once(DOL_DOCUMENT_ROOT."/commande/class/commande.class.php"); if ($conf->stock->enabled) require_once(DOL_DOCUMENT_ROOT."/product/stock/class/entrepot.class.php"); $langs->load("sendings"); $langs->load("companies"); $langs->load("bills"); $langs->load('deliveries'); $langs->load('orders'); $langs->load('stocks'); $langs->load('other'); $langs->load('propal'); $action = GETPOST("action"); $origin = GETPOST("origin")?GETPOST("origin"):'expedition'; // Example: commande, propal $origin_id = GETPOST("id")?GETPOST("id"):''; if (empty($origin_id)) $origin_id = GETPOST("origin_id"); // Id of order or propal if (empty($origin_id)) $origin_id = GETPOST("object_id"); // Id of order or propal $id = $origin_id; // Security check if ($user->societe_id) $socid=$user->societe_id; $result=restrictedArea($user,$origin,$origin_id); $object = new Expedition($db); /* * Actions */ if ($action == 'add') { $db->begin(); $object->note = $_POST["note"]; $object->origin = $origin; $object->origin_id = $origin_id; $object->weight = $_POST["weight"]==""?"NULL":$_POST["weight"]; $object->sizeH = $_POST["sizeH"]==""?"NULL":$_POST["sizeH"]; $object->sizeW = $_POST["sizeW"]==""?"NULL":$_POST["sizeW"]; $object->sizeS = $_POST["sizeS"]==""?"NULL":$_POST["sizeS"]; $object->size_units = $_POST["size_units"]; $object->weight_units = $_POST["weight_units"]; $date_delivery = dol_mktime($_POST["date_deliveryhour"], $_POST["date_deliverymin"], 0, $_POST["date_deliverymonth"], $_POST["date_deliveryday"], $_POST["date_deliveryyear"]); // On va boucler sur chaque ligne du document d'origine pour completer objet expedition // avec info diverses + qte a livrer $classname = ucfirst($object->origin); $objectsrc = new $classname($db); $objectsrc->fetch($object->origin_id); //$object->fetch_lines(); $object->socid = $objectsrc->socid; $object->ref_customer = $objectsrc->ref_client; $object->date_delivery = $date_delivery; // Date delivery planed $object->fk_delivery_address = $objectsrc->fk_delivery_address; $object->expedition_method_id = $_POST["expedition_method_id"]; $object->tracking_number = $_POST["tracking_number"]; $object->ref_int = $_POST["ref_int"]; //var_dump($_POST);exit; for ($i = 0 ; $i < sizeof($objectsrc->lines) ; $i++) { $qty = "qtyl".$i; if ($_POST[$qty] > 0) { $ent = "entl".$i; $idl = "idl".$i; $entrepot_id = isset($_POST[$ent])?$_POST[$ent]:$_POST["entrepot_id"]; $object->addline($entrepot_id,$_POST[$idl],$_POST[$qty]); } } $ret=$object->create($user); if ($ret > 0) { $db->commit(); Header("Location: fiche.php?id=".$object->id); exit; } else { $db->rollback(); $mesg='
'.$object->error.'
'; $_GET["commande_id"]=$_POST["commande_id"]; $_GET["action"]='create'; } } /* * Build a receiving receipt */ if ($action == 'create_delivery' && $conf->livraison_bon->enabled && $user->rights->expedition->livraison->creer) { $object->fetch($_GET["id"]); $result = $object->create_delivery($user); if ($result > 0) { Header("Location: ".DOL_URL_ROOT.'/livraison/fiche.php?id='.$result); exit; } else { $mesg=$object->error; } } if ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->expedition->valider) { $object->fetch($_GET["id"]); $object->fetch_thirdparty(); $result = $object->valid($user); // Define output language $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); $outputlangs->setDefaultLang($newlang); } $result=expedition_pdf_create($db,$object,$object->modelpdf,$outputlangs); if ($result <= 0) { dol_print_error($db,$result); exit; } } if ($action == 'confirm_delete' && $confirm == 'yes') { if ($user->rights->expedition->supprimer ) { $object->fetch($_GET["id"]); $result = $object->delete(); if ($result > 0) { Header("Location: ".DOL_URL_ROOT.'/expedition/index.php'); exit; } else { $mesg = $object->error; } } } if ($action == 'open') { if ($user->rights->expedition->valider ) { $object->fetch($_GET["id"]); $result = $object->setStatut(0); if ($result < 0) { $mesg = $object->error; } } } if ($_POST['action'] == 'setdate_livraison' && $user->rights->expedition->creer) { //print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; $datelivraison=dol_mktime($_POST['liv_hour'], $_POST['liv_min'], 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']); $shipping = new Expedition($db); $shipping->fetch($_GET['id']); $result=$shipping->set_date_livraison($user,$datelivraison); if ($result < 0) { $mesg='
'.$shipping->error.'
'; } } // Action update description of emailing if ($_REQUEST["action"] == 'settrackingnumber' || $_REQUEST["action"] == 'settrackingurl' || $_REQUEST["action"] == 'settrueWeight' || $_REQUEST["action"] == 'settrueWidth' || $_REQUEST["action"] == 'settrueHeight' || $_REQUEST["action"] == 'settrueDepth' || $_REQUEST["action"] == 'setexpedition_method_id') { $error=0; $shipping = new Expedition($db); $result=$shipping->fetch($_REQUEST['id']); if ($result < 0) dol_print_error($db,$shipping->error); if ($_REQUEST["action"] == 'settrackingnumber') $shipping->tracking_number = trim($_REQUEST["trackingnumber"]); if ($_REQUEST["action"] == 'settrackingurl') $shipping->tracking_url = trim($_REQUEST["trackingurl"]); if ($_REQUEST["action"] == 'settrueWeight') $shipping->trueWeight = trim($_REQUEST["trueWeight"]); if ($_REQUEST["action"] == 'settrueWidth') $shipping->trueWidth = trim($_REQUEST["trueWidth"]); if ($_REQUEST["action"] == 'settrueHeight') $shipping->trueHeight = trim($_REQUEST["trueHeight"]); if ($_REQUEST["action"] == 'settrueDepth') $shipping->trueDepth = trim($_REQUEST["trueDepth"]); if ($_REQUEST["action"] == 'setexpedition_method_id') $shipping->expedition_method_id = trim($_REQUEST["expedition_method_id"]); if (! $error) { if ($shipping->update($user) >= 0) { Header("Location: fiche.php?id=".$shipping->id); exit; } $mesg=$shipping->error; } $mesg='
'.$mesg.'
'; $_GET["action"]=""; $_GET["id"]=$_REQUEST["id"]; } /* * Build doc */ if ($_REQUEST['action'] == 'builddoc') // En get ou en post { require_once(DOL_DOCUMENT_ROOT."/includes/modules/expedition/pdf/ModelePdfExpedition.class.php"); // Sauvegarde le dernier modele choisi pour generer un document $shipment = new Expedition($db); $shipment->fetch($_REQUEST['id']); $shipment->fetch_thirdparty(); if ($_REQUEST['model']) { $shipment->setDocModel($user, $_REQUEST['model']); } // Define output language $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$shipment->client->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); $outputlangs->setDefaultLang($newlang); } $result=expedition_pdf_create($db,$shipment,$_REQUEST['model'],$outputlangs); if ($result <= 0) { dol_print_error($db,$result); exit; } } /* * View */ llxHeader('',$langs->trans('Sending'),'Expedition'); $html = new Form($db); $formfile = new FormFile($db); $formproduct = new FormProduct($db); /********************************************************************* * * Mode creation * *********************************************************************/ if ($_GET["action"] == 'create') { $expe = new Expedition($db); print_fiche_titre($langs->trans("CreateASending")); if (! $origin) { $mesg='
'.$langs->trans("ErrorBadParameters").'
'; } if ($mesg) { print $mesg.'
'; } if ($origin) { $classname = ucfirst($origin); $object = new $classname($db); if ($object->fetch($origin_id)) // This include the fetch_lines { //var_dump($object); $soc = new Societe($db); $soc->fetch($object->socid); $author = new User($db); $author->fetch($object->user_author_id); if ($conf->stock->enabled) $entrepot = new Entrepot($db); /* * Document source */ print '
'; print ''; print ''; print ''; print ''; print ''; if ($_GET["entrepot_id"]) { print ''; } print ''; // Ref print ''; print "\n"; // Ref client print ''; print ''; // Tiers print ''; print ''; print ''; // Date delivery planned print ''; print '\n"; print ''; // Delivery address if (($origin == 'commande' && $conf->global->COMMANDE_ADD_DELIVERY_ADDRESS) || ($origin == 'propal' && $conf->global->PROPAL_ADD_DELIVERY_ADDRESS)) { print ''; print ''."\n"; } // Note if ($object->note && ! $user->societe_id) { print ''; print '"; } // Weight print ''; print ''; print ''; // Delivery method print ""; print '\n"; // Tracking number print ""; print '\n"; print "
'; if ($origin == 'commande' && $conf->commande->enabled) { print $langs->trans("RefOrder").''.img_object($langs->trans("ShowOrder"),'order').' '.$object->ref; } if ($origin == 'propal' && $conf->propal->enabled) { print $langs->trans("RefProposal").''.img_object($langs->trans("ShowProposal"),'propal').' '.$object->ref; } print '
'; print $langs->trans('RefCustomer').''; print $object->ref_client; print '
'.$langs->trans('Company').''.$soc->getNomUrl(1).'
'.$langs->trans("DateDeliveryPlanned").''; //print dol_print_date($object->date_livraison,"day"); // date_livraison come from order and will be stored into date_delivery planed. print $html->select_date($object->date_livraison?$object->date_livraison:-1,'date_delivery',1,1); print "
'.$langs->trans('DeliveryAddress').''; if (!empty($object->fk_delivery_address)) { $html->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$_GET['socid'],'none','commande',$object->id); } print '
'.$langs->trans("NotePrivate").''.nl2br($object->note)."
'; print $langs->trans("Weight"); print ''; print $formproduct->select_measuring_units("weight_units","weight",$_POST["weight_units"]); print '
'; print $langs->trans("Width"); print ' '; print $formproduct->select_measuring_units("size_units","size"); print '
'; print $langs->trans("Height"); print '
'; print $langs->trans("Depth"); print '
".$langs->trans("DeliveryMethod")."'; $expe->fetch_delivery_methods(); print $html->selectarray("expedition_method_id",$expe->meths,$_POST["expedition_method_id"],1,0,0,"",1); print "
".$langs->trans("TrackingNumber")."'; print ''; print "
"; /* * Lignes de commandes * */ print '
'; //$lines = $object->fetch_lines(1); $numAsked = sizeof($object->lines); /* Lecture des expeditions deja effectuees */ $object->loadExpeditions(); if ($numAsked) { print ''; print ''; print ''; print ''; print ''; if ($conf->stock->enabled) { print ''; } print "\n"; } $product_static = new Product($db); $var=true; $indiceAsked = 0; while ($indiceAsked < $numAsked) { $product = new Product($db); $line = $object->lines[$indiceAsked]; $var=!$var; // Show product and description $type=$line->product_type?$line->product_type:$line->fk_product_type; // Try to enhance type detection using date_start and date_end for free lines where type // was not saved. if (! empty($line->date_start)) $type=1; if (! empty($line->date_end)) $type=1; print "\n"; // Product label if ($line->fk_product > 0) { $product->fetch($line->fk_product); $product->load_stock(); print ''; } else { print "\n"; } // Qty print ''; $qtyProdCom=$line->qty; // Qty already sent print ''; $quantityAsked = $line->qty; $quantityToBeDelivered = $quantityAsked - $quantityDelivered; $defaultqty=0; if ($_REQUEST["entrepot_id"]) { //var_dump($product); $stock = $product->stock_warehouse[$_REQUEST["entrepot_id"]]->real; $stock+=0; // Convertit en numerique $defaultqty=min($quantityToBeDelivered, $stock); if (($line->product_type == 1 && empty($conf->global->STOCK_SUPPORTS_SERVICES)) || $defaultqty < 0) $defaultqty=0; } // Quantity to send print ''; // Stock if ($conf->stock->enabled) { print ''; } /*else { // Quantity print ''; if ($line->product_type == 1) print ''; }*/ print "\n"; // Show subproducts of product if (! empty($conf->global->PRODUIT_SOUSPRODUITS) && $line->fk_product > 0) { $product->get_sousproduits_arbo (); $prods_arbo = $product->get_arbo_each_prod($qtyProdCom); if(sizeof($prods_arbo) > 0) { foreach($prods_arbo as $key => $value) { //print $value[0]; $img=''; if ($value['stock'] < $value['stock_alert']) { $img=img_warning($langs->trans("StockTooLow")); } print ""; } } } $indiceAsked++; } print ''; print "
'.$langs->trans("Description").''.$langs->trans("QtyOrdered").''.$langs->trans("QtyShipped").''.$langs->trans("QtyToShip").''.$langs->trans("Warehouse").' / '.$langs->trans("Stock").'
'; print ''; // ancre pour retourner sur la ligne // Show product and description $product_static->type=$line->fk_product_type; $product_static->id=$line->fk_product; $product_static->ref=$line->ref; $product_static->libelle=$line->product_label; $text=$product_static->getNomUrl(1); $text.= ' - '.$line->product_label; $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($line->desc)); print $html->textwithtooltip($text,$description,3,'','',$i); // Show range print_date_range($db->jdate($line->date_start),$db->jdate($line->date_end)); // Add description in form if ($conf->global->PRODUIT_DESC_IN_FORM) { print ($line->desc && $line->desc!=$line->product_label)?'
'.dol_htmlentitiesbr($line->desc):''; } print '
"; if ($type==1) $text = img_object($langs->trans('Service'),'service'); else $text = img_object($langs->trans('Product'),'product'); print $text.' '.nl2br($line->desc); // Show range print_date_range($db->jdate($line->date_start),$db->jdate($line->date_end)); print "'.$line->qty.''; $quantityDelivered = $object->expeditions[$line->id]; print $quantityDelivered; print ''; if ($line->product_type == 0 || ! empty($conf->global->STOCK_SUPPORTS_SERVICES)) { print ''; print ''; } else print '0'; print ''; if ($line->product_type == 0 || ! empty($conf->global->STOCK_SUPPORTS_SERVICES)) { // Show warehous if ($_REQUEST["entrepot_id"]) { $formproduct->selectWarehouses($_REQUEST["entrepot_id"],'entl'.$indiceAsked,'',1,0,$line->fk_product); //print $stock.' '.$quantityToBeDelivered; //if ($stock >= 0 && $stock < $quantityToBeDelivered) if ($stock < $quantityToBeDelivered) { print ' '.img_warning($langs->trans("StockTooLow")); } } else { $formproduct->selectWarehouses('','entl'.$indiceAsked,'',1,0,$line->fk_product); } } else { print $langs->trans("Service"); } print ''; print ''; print ''; print ' 
      -> ".$value['fullpath']." (".$value['nb'].") ".$value['nb_total']."   ".$value['stock']." ".$img."

"; print '
'; } else { dol_print_error($db); } } } else /* *************************************************************************** */ /* */ /* Edit and view mode */ /* */ /* *************************************************************************** */ { if (! empty($id) || ! empty($ref)) { $result = $object->fetch($id,$ref); if ($result < 0) { dol_print_error($db,$object->error); exit -1; } $lines = $object->lines; $num_prod = sizeof($lines); if ($object->id > 0) { if ($mesg) { print '
'.$mesg.'
'; } if (!empty($object->origin)) { $typeobject = $object->origin; $origin = $object->origin; $object->fetch_origin(); } $soc = new Societe($db); $soc->fetch($object->socid); // delivery link $object->fetchObjectLinked($object->id,$object->element,-1,-1); $head=shipping_prepare_head($object); dol_fiche_head($head, 'shipping', $langs->trans("Sending"), 0, 'sending'); if ($mesg) print $mesg; /* * Confirmation de la suppression */ if ($action == 'delete') { $ret=$html->form_confirm($_SERVER['PHP_SELF'].'?id='.$object->id,$langs->trans('DeleteSending'),$langs->trans("ConfirmDeleteSending",$object->ref),'confirm_delete','',0,1); if ($ret == 'html') print '
'; } /* * Confirmation de la validation */ if ($action == 'valid') { $objectref = substr($object->ref, 1, 4); if ($objectref == 'PROV') { $numref = $object->getNextNumRef($soc); } else { $numref = $object->ref; } $ret=$html->form_confirm($_SERVER['PHP_SELF'].'?id='.$object->id,$langs->trans('ValidateSending'),$langs->trans("ConfirmValidateSending",$numref),'confirm_valid','',0,1); if ($ret == 'html') print '
'; } /* * Confirmation de l'annulation */ if ($action == 'annuler') { $ret=$html->form_confirm($_SERVER['PHP_SELF'].'?id='.$object->id,$langs->trans('CancelSending'),$langs->trans("ConfirmCancelSending",$object->ref),'confirm_cancel','',0,1); if ($ret == 'html') print '
'; } // Calculate ture totalVeight and totalVolume for all products // by adding weight and volume of each line. $totalWeight = ''; $totalVolume = ''; $weightUnit=0; $volumeUnit=0; for ($i = 0 ; $i < $num_prod ; $i++) { $weightUnit=0; $volumeUnit=0; if (! empty($lines[$i]->weight_units)) $weightUnit = $lines[$i]->weight_units; if (! empty($lines[$i]->volume_units)) $volumeUnit = $lines[$i]->volume_units; // TODO Use a function addvalueunits(val1,unit1,val2,unit2)=>(val,unit) if ($lines[$i]->weight_units < 50) { $trueWeightUnit=pow(10,$weightUnit); $totalWeight += $lines[$i]->weight*$lines[$i]->qty_shipped*$trueWeightUnit; } else { $trueWeightUnit=$weightUnit; $totalWeight += $lines[$i]->weight*$lines[$i]->qty_shipped; } if ($lines[$i]->volume_units < 50) { //print $lines[$i]->volume."x".$lines[$i]->volume_units."x".($lines[$i]->volume_units < 50)."x".$volumeUnit; $trueVolumeUnit=pow(10,$volumeUnit); //print $lines[$i]->volume; $totalVolume += $lines[$i]->volume*$lines[$i]->qty_shipped*$trueVolumeUnit; } else { $trueVolumeUnit=$volumeUnit; $totalVolume += $lines[$i]->volume*$lines[$i]->qty_shipped; } } $totalVolume=$totalVolume; //print "totalVolume=".$totalVolume." volumeUnit=".$volumeUnit; print ''; // Ref print ''; print ''; // Customer print ''; print ''; print ""; // Linked documents if ($typeobject == 'commande' && $object->$typeobject->id && $conf->commande->enabled) { print ''; print '\n"; print ''; } if ($typeobject == 'propal' && $object->$typeobject->id && $conf->propal->enabled) { print ''; print '\n"; print ''; } // Ref customer print ''; print '\n"; print ''; // Date creation print ''; print '\n"; print ''; // Delivery date planed print ''; print ''; // Delivery address if (($origin == 'commande' && $conf->global->COMMANDE_ADD_DELIVERY_ADDRESS) || ($origin == 'propal' && $conf->global->PROPAL_ADD_DELIVERY_ADDRESS)) { print ''; print ''."\n"; } // Weight print ''; // Volume Total print ''; print '\n"; print ''; // Width print ''; // Height print ''; // Depth print ''; // Status print ''; print '\n"; print ''; // Sending method print ''; print ''; // Tracking Number $object->GetUrlTrackingStatus($object->tracking_number); print ''; print "
'.$langs->trans("Ref").''; print $html->showrefnav($object,'ref','',1,'ref','ref'); print '
'.$langs->trans("Customer").''.$soc->getNomUrl(1).'
'; $objectsrc=new Commande($db); $objectsrc->fetch($object->$typeobject->id); print $langs->trans("RefOrder").''; print $objectsrc->getNomUrl(1,'commande'); print "
'; $objectsrc=new Propal($db); $objectsrc->fetch($object->$typeobject->id); print $langs->trans("RefProposal").''; print $objectsrc->getNomUrl(1,'expedition'); print "
'.$langs->trans("RefCustomer").''.$object->ref_customer."
'.$langs->trans("DateCreation").''.dol_print_date($object->date_creation,"daytext")."
'; print ''; if ($_GET['action'] != 'editdate_livraison') print ''; print '
'; print $langs->trans('DateDeliveryPlanned'); print 'id.'">'.img_edit($langs->trans('SetDeliveryDate'),1).'
'; print '
'; if ($_GET['action'] == 'editdate_livraison') { print '
'; print ''; print ''; $html->select_date($object->date_delivery?$object->date_delivery:-1,'liv_',1,1,'',"setdate_livraison"); print ''; print '
'; } else { print $object->date_delivery ? dol_print_date($object->date_delivery,'dayhourtext') : ' '; } print '
'.$langs->trans('DeliveryAddress').''; if (!empty($object->fk_delivery_address)) { $html->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->deliveryaddress->socid,'none','shipment',$object->id); } print '
'.$html->editfieldkey("Weight",'trueWeight',$object->trueWeight,'id',$object->id,$user->rights->expedition->creer).''; print $html->editfieldval("Weight",'trueWeight',$object->trueWeight,'id',$object->id,$user->rights->expedition->creer); print $object->weight_units?measuring_units_string($object->weight_units,"weight"):''; print '
'.$langs->trans("Volume").''; if ($object->trueVolume) { // If sending volume defined print $object->trueVolume.' '.measuring_units_string($object->volumeUnit,"volume"); } else { // If sending volume not defined we use sum of products if ($totalVolume > 0) { print $totalVolume.' '; if ($volumeUnit < 50) print measuring_units_string(0,"volume"); else print measuring_units_string($volumeUnit,"volume"); } else print ' '; } print "
'.$html->editfieldkey("Width",'trueWidth',$object->trueWidth,'id',$object->id,$user->rights->expedition->creer).''; print $html->editfieldval("Width",'trueWidth',$object->trueWidth,'id',$object->id,$user->rights->expedition->creer); print $object->trueWidth?measuring_units_string($object->width_units,"size"):''; print '
'.$html->editfieldkey("Height",'trueHeight',$object->trueHeight,'id',$object->id,$user->rights->expedition->creer).''; print $html->editfieldval("Height",'trueHeight',$object->trueHeight,'id',$object->id,$user->rights->expedition->creer); print $object->trueHeight?measuring_units_string($object->height_units,"size"):''; print '
'.$html->editfieldkey("Depth",'trueDepth',$object->trueDepth,'id',$object->id,$user->rights->expedition->creer).''; print $html->editfieldval("Depth",'trueDepth',$object->trueDepth,'id',$object->id,$user->rights->expedition->creer); print $object->trueDepth?measuring_units_string($object->depth_units,"size"):''; print '
'.$langs->trans("Status").''.$object->getLibStatut(4)."
'; print ''; if ($_GET['action'] != 'editexpedition_method_id') print ''; print '
'; print $langs->trans('SendingMethod'); print 'id.'">'.img_edit($langs->trans('SetSendingMethod'),1).'
'; print '
'; if ($_GET['action'] == 'editexpedition_method_id') { print '
'; print ''; print ''; $object->fetch_delivery_methods(); print $html->selectarray("expedition_method_id",$object->meths,$object->expedition_method_id,1,0,0,"",1); print ''; print '
'; } else { if ($object->expedition_method_id > 0) { // Get code using getLabelFromKey $code=$langs->getLabelFromKey($db,$object->expedition_method_id,'c_shipment_mode','rowid','code'); print $langs->trans("SendingMethod".strtoupper($code)); } } print '
'.$html->editfieldkey("TrackingNumber",'trackingnumber',$object->tracking_number,'id',$object->id,$user->rights->expedition->creer).''; print $html->editfieldval("TrackingNumber",'trackingnumber',$object->tracking_url,'id',$object->id,$user->rights->expedition->creer,'string',$object->tracking_number); print '
\n"; /* * Lignes produits */ print '
'; print ''; print ''; print ''; if ($object->fk_statut <= 1) { print ''; } else { print ''; } print ''; print ''; //print ''; if ($conf->stock->enabled) { print ''; } print "\n"; $var=false; for ($i = 0 ; $i < $num_prod ; $i++) { print ""; // Predefined product or service if ($lines[$i]->fk_product > 0) { print '\n"; } // Qte commande print ''; // Qte a expedier ou expedier print ''; // Weight print ''; // Volume print ''; // Size //print ''; // Entrepot source if ($conf->stock->enabled) { print ''; } print ""; $var=!$var; } } print "
'.$langs->trans("Products").''.$langs->trans("QtyOrdered").''.$langs->trans("QtyToShip").''.$langs->trans("QtyShipped").''.$langs->trans("CalculatedWeight").''.$langs->trans("CalculatedVolume").''.$langs->trans("Size").''.$langs->trans("WarehouseSource").'
'; // Affiche ligne produit $text = ''; if ($lines[$i]->fk_product_type==1) $text.= img_object($langs->trans('ShowService'),'service'); else $text.= img_object($langs->trans('ShowProduct'),'product'); $text.= ' '.$lines[$i]->ref.''; $text.= ' - '.$lines[$i]->label; $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($lines[$i]->description)); //print $description; print $html->textwithtooltip($text,$description,3,'','',$i); print_date_range($lines[$i]->date_start,$lines[$i]->date_end); if ($conf->global->PRODUIT_DESC_IN_FORM) { print ($lines[$i]->description && $lines[$i]->description!=$lines[$i]->product)?'
'.dol_htmlentitiesbr($lines[$i]->description):''; } } else { print "
"; if ($lines[$i]->fk_product_type==1) $text = img_object($langs->trans('Service'),'service'); else $text = img_object($langs->trans('Product'),'product'); print $text.' '.nl2br($lines[$i]->description); print_date_range($lines[$i]->date_start,$lines[$i]->date_end); print "'.$lines[$i]->qty_asked.''.$lines[$i]->qty_shipped.''; if ($lines[$i]->fk_product_type == 0) print $lines[$i]->weight*$lines[$i]->qty_shipped.' '.measuring_units_string($lines[$i]->weight_units,"weight"); else print ' '; print ''; if ($lines[$i]->fk_product_type == 0) print $lines[$i]->volume*$lines[$i]->qty_shipped.' '.measuring_units_string($lines[$i]->volume_units,"volume"); else print ' '; print ''.$lines[$i]->volume*$lines[$i]->qty_shipped.' '.measuring_units_string($lines[$i]->volume_units,"volume").''; if ($lines[$i]->entrepot_id > 0) { $entrepot = new Entrepot($db); $entrepot->fetch($lines[$i]->entrepot_id); print $entrepot->getNomUrl(1); } print '
\n"; print "\n\n"; /* * Boutons actions */ if ($user->societe_id == 0) { print '
'; /*if ($object->statut > 0 && $user->rights->expedition->valider) { print ''.$langs->trans("Modify").''; }*/ if ($object->statut == 0 && $num_prod > 0) { if ($user->rights->expedition->valider) { print ''.$langs->trans("Validate").''; } else { print ''.$langs->trans("Validate").''; } } if ($conf->livraison_bon->enabled && $object->statut == 1 && $user->rights->expedition->livraison->creer && empty($object->linkedObjectsIds)) { print ''.$langs->trans("DeliveryOrder").''; } if ($user->rights->expedition->supprimer) { print ''.$langs->trans("Delete").''; } print '
'; } print "\n"; print "
"; /* * Documents generated */ if ($conf->expedition_bon->enabled) { $objectref = dol_sanitizeFileName($object->ref); $filedir = $conf->expedition->dir_output . "/sending/" .$objectref; $urlsource = $_SERVER["PHP_SELF"]."?id=".$object->id; $genallowed=$user->rights->expedition->lire; $delallowed=$user->rights->expedition->supprimer; //$genallowed=1; //$delallowed=0; $somethingshown=$formfile->show_documents('expedition',$objectref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang); if ($genallowed && ! $somethingshown) $somethingshown=1; } print ''; // Rien a droite print '
'; if (!empty($origin) && $object->$origin->id) { print '
'; //show_list_sending_receive($object->origin,$object->origin_id," AND e.rowid <> ".$object->id); show_list_sending_receive($object->origin,$object->origin_id); } } else { print "Expedition inexistante ou acces refuse"; } } $db->close(); llxFooter('$Date$ - $Revision$'); ?>