From e850a1aa39c52be0fa4db929b8d85b578de5b4d5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Mar 2011 10:33:24 +0000 Subject: [PATCH] New: Can create manually order from proposal --- htdocs/comm/propal.php | 27 +- htdocs/commande/fiche.php | 3068 +++++++++++++++++++------------------ 2 files changed, 1595 insertions(+), 1500 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 9b63b4014ef..4f590509b00 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -1434,17 +1434,17 @@ if ($id > 0 || ! empty($ref)) $form_close = '
'; $form_close.= ''; $form_close.= ''; + $form_close.= ''; $form_close.= ''; - $form_close.= ''; $form_close.= ''; - } - } + // Note publique + print ''; + print ''; + print ''; - /* - * - */ - print ''; - print '
'.$langs->trans("CloseAs").''; + $form_close.= ''; + $form_close.= ''; + $form_close.= '
'.$langs->trans('Note').'
'.$langs->trans("CloseAs").''; - $form_close.= ''; - $form_close.= ''; - $form_close.= '
'; $form_close.= ''; $form_close.= '   '; @@ -1489,7 +1489,16 @@ if ($id > 0 || ! empty($ref)) } } - // Create an invoice and classify billed + // Create an order + if ($conf->commande->enabled && $object->statut == 2 && $user->societe_id == 0) + { + if ($user->rights->commande->creer) + { + print ''.$langs->trans("CreateOrder").''; + } + } + + // Create an invoice and classify billed if ($conf->facture->enabled && $object->statut == 2 && $user->societe_id == 0) { if ($user->rights->facture->creer) diff --git a/htdocs/commande/fiche.php b/htdocs/commande/fiche.php index 5fd122a8513..1cdf829ea19 100644 --- a/htdocs/commande/fiche.php +++ b/htdocs/commande/fiche.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2010 Laurent Destailleur + * Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2005 Marc Barilley / Ocebo * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2006 Andre Cianfarani @@ -65,7 +65,7 @@ $object = new Commande($db); // Instantiate hooks of thirdparty module if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) { - $object->callHooks('objectcard'); + $object->callHooks('objectcard'); } @@ -76,280 +76,374 @@ if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) // Hook of thirdparty module if (! empty($object->hooks)) { - foreach($object->hooks as $module) - { - $module->doActions($object); - $mesg = $module->error; - } + foreach($object->hooks as $module) + { + $module->doActions($object); + $mesg = $module->error; + } } // Action clone object if ($_REQUEST["action"] == 'confirm_clone' && $_REQUEST['confirm'] == 'yes') { - if (1==0 && empty($_REQUEST["clone_content"]) && empty($_REQUEST["clone_receivers"])) - { - $mesg='
'.$langs->trans("NoCloneOptionsSpecified").'
'; - } - else - { - $result=$object->createFromClone($comid); - if ($result > 0) - { - header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result); - exit; - } - else - { - $mesg=$object->error; - $_GET['action']=''; - } - } + if (1==0 && empty($_REQUEST["clone_content"]) && empty($_REQUEST["clone_receivers"])) + { + $mesg='
'.$langs->trans("NoCloneOptionsSpecified").'
'; + } + else + { + $result=$object->createFromClone($comid); + if ($result > 0) + { + header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result); + exit; + } + else + { + $mesg=$object->error; + $_GET['action']=''; + } + } } // Reopen a closed order if ($_GET['action'] == 'reopen' && $user->rights->commande->creer) { - $object->fetch($comid); - if ($object->statut == 3) - { - $result = $object->set_reopen($user); - if ($result > 0) - { - Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$comid); - exit; - } - else - { - $mesg='
'.$fac->error.'
'; - } - } + $object->fetch($comid); + if ($object->statut == 3) + { + $result = $object->set_reopen($user); + if ($result > 0) + { + Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$comid); + exit; + } + else + { + $mesg='
'.$fac->error.'
'; + } + } } // Suppression de la commande if ($_REQUEST['action'] == 'confirm_delete' && $_REQUEST['confirm'] == 'yes') { - if ($user->rights->commande->supprimer) - { - $object->fetch($comid); - $result=$object->delete($user); - if ($result > 0) - { - Header('Location: index.php'); - exit; - } - else - { - $mesg=$object->error; - } - } + if ($user->rights->commande->supprimer) + { + $object->fetch($comid); + $result=$object->delete($user); + if ($result > 0) + { + Header('Location: index.php'); + exit; + } + else + { + $mesg=$object->error; + } + } } // Remove a product line if ($_REQUEST['action'] == 'confirm_deleteline' && $_REQUEST['confirm'] == 'yes') { - if ($user->rights->commande->creer) - { - $object->fetch($comid); - $object->fetch_thirdparty(); + if ($user->rights->commande->creer) + { + $object->fetch($comid); + $object->fetch_thirdparty(); - $result = $object->deleteline($_GET['lineid']); - if ($result > 0) - { - // 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); - } - commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); - } - else - { - print $object->error; - } - } - Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$comid); - exit; + $result = $object->deleteline($_GET['lineid']); + if ($result > 0) + { + // 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); + } + commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); + } + else + { + print $object->error; + } + } + Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$comid); + exit; } // Categorisation dans projet if ($_POST['action'] == 'classin') { - $object->fetch($comid); - $object->setProject($_POST['projectid']); + $object->fetch($comid); + $object->setProject($_POST['projectid']); } // Add order if ($_POST['action'] == 'add' && $user->rights->commande->creer) { - $datecommande=''; - $datecommande = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); - $datelivraison = dol_mktime(12, 0, 0, $_POST['liv_month'],$_POST['liv_day'],$_POST['liv_year']); + $datecommande = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); + $datelivraison = dol_mktime(12, 0, 0, $_POST['liv_month'],$_POST['liv_day'],$_POST['liv_year']); - $object->socid=$_POST['socid']; - $object->fetch_thirdparty(); + $object->socid=GETPOST('socid'); + $object->fetch_thirdparty(); - $db->begin(); + $db->begin(); - $object->date_commande = $datecommande; - $object->note = $_POST['note']; - $object->note_public = $_POST['note_public']; - $object->source = $_POST['source_id']; - $object->fk_project = $_POST['projectid']; - $object->ref_client = $_POST['ref_client']; - $object->modelpdf = $_POST['model']; - $object->cond_reglement_id = $_POST['cond_reglement_id']; - $object->mode_reglement_id = $_POST['mode_reglement_id']; - $object->date_livraison = $datelivraison; - $object->fk_delivery_address = $_POST['fk_address']; - $object->contactid = $_POST['contactidp']; + $object->date_commande = $datecommande; + $object->note = $_POST['note']; + $object->note_public = $_POST['note_public']; + $object->source = $_POST['source_id']; + $object->fk_project = $_POST['projectid']; + $object->ref_client = $_POST['ref_client']; + $object->modelpdf = $_POST['model']; + $object->cond_reglement_id = $_POST['cond_reglement_id']; + $object->mode_reglement_id = $_POST['mode_reglement_id']; + $object->date_livraison = $datelivraison; + $object->fk_delivery_address = $_POST['fk_address']; + $object->contactid = $_POST['contactidp']; - $NBLINES=8; - for ($i = 1 ; $i <= $NBLINES ; $i++) - { - if ($_POST['idprod'.$i]) - { - $xid = 'idprod'.$i; - $xqty = 'qty'.$i; - $xremise = 'remise_percent'.$i; - $object->add_product($_POST[$xid],$_POST[$xqty],$_POST[$xremise]); - } - } + // If creation from another object of another module (Example: origin=propal, originid=1) + if ($_POST['origin'] && $_POST['originid']) + { + // Parse element/subelement (ex: project_task) + $element = $subelement = $_POST['origin']; + if (preg_match('/^([^_]+)_([^_]+)/i',$_POST['origin'],$regs)) + { + $element = $regs[1]; + $subelement = $regs[2]; + } - $object_id = $object->create($user); + // For compatibility + if ($element == 'order') { $element = $subelement = 'commande'; } + if ($element == 'propal') { $element = 'comm/propal'; $subelement = 'propal'; } + if ($element == 'contract') { $element = $subelement = 'contrat'; } - if ($object_id > 0) - { - // Insertion contact par defaut si defini - if ($_POST["contactidp"]) - { - $result=$object->add_contact($_POST["contactidp"],'CUSTOMER','external'); + $object->origin = $_POST['origin']; + $object->origin_id = $_POST['originid']; - if ($result > 0) - { - $error=0; - } - else - { - $mesg = '
'.$langs->trans("ErrorFailedToAddContact").'
'; - $error=1; - } - } + $object_id = $object->create($user); - $comid = $object_id; - $action = ''; - } + if ($object_id > 0) + { + dol_include_once('/'.$element.'/class/'.$subelement.'.class.php'); - // Fin creation facture, on l'affiche - if ($object_id > 0 && ! $error) - { - $db->commit(); - } - else - { - $db->rollback(); - $_GET["action"]='create'; - $_GET['socid']=$_POST['socid']; - if (! $mesg) $mesg='
'.$object->error.'
'; - } + $classname = ucfirst($subelement); + $srcobject = new $classname($db); + + dol_syslog("Try to find source object origin=".$object->origin." originid=".$object->origin_id." to add lines"); + $result=$srcobject->fetch($object->origin_id); + if ($result > 0) + { + $lines = $srcobject->lines; + if (empty($lines) && method_exists($srcobject,'fetch_lines')) $lines = $srcobject->fetch_lines(); + + for ($i = 0 ; $i < sizeof($lines) ; $i++) + { + $desc=($lines[$i]->desc?$lines[$i]->desc:$lines[$i]->libelle); + $product_type=($lines[$i]->product_type?$lines[$i]->product_type:0); + + // Dates + // TODO mutualiser + $date_start=$lines[$i]->date_debut_prevue; + if ($lines[$i]->date_debut_reel) $date_start=$lines[$i]->date_debut_reel; + if ($lines[$i]->date_start) $date_start=$lines[$i]->date_start; + $date_end=$lines[$i]->date_fin_prevue; + if ($lines[$i]->date_fin_reel) $date_end=$lines[$i]->date_fin_reel; + if ($lines[$i]->date_end) $date_end=$lines[$i]->date_end; + + $result = $object->addline( + $object_id, + $desc, + $lines[$i]->subprice, + $lines[$i]->qty, + $lines[$i]->tva_tx, + $lines[$i]->localtax1_tx, + $lines[$i]->localtax2_tx, + $lines[$i]->fk_product, + $lines[$i]->remise_percent, + $lines[$i]->info_bits, + $lines[$i]->fk_remise_except, + 'HT', + 0, + $datestart, + $dateend, + $product_type, + $lines[$i]->rang, + $lines[$i]->special_code + ); + + if ($result < 0) + { + $error++; + break; + } + } + } + else + { + $mesg=$srcobject->error; + $error++; + } + } + else + { + $mesg=$object->error; + $error++; + } + } + else + { + $object_id = $object->create($user); + + // If some invoice's lines already known + $NBLINES=8; + for ($i = 1 ; $i <= $NBLINES ; $i++) + { + if ($_POST['idprod'.$i]) + { + $xid = 'idprod'.$i; + $xqty = 'qty'.$i; + $xremise = 'remise_percent'.$i; + $object->add_product($_POST[$xid],$_POST[$xqty],$_POST[$xremise]); + } + } + } + + // Insert default contacts if defined + if ($object_id > 0) + { + if ($_POST["contactidp"]) + { + $result=$object->add_contact($_POST["contactidp"],'CUSTOMER','external'); + + if ($result > 0) + { + $error=0; + } + else + { + $mesg = '
'.$langs->trans("ErrorFailedToAddContact").'
'; + $error=1; + } + } + + $comid = $object_id; + $action = ''; + } + + // End of object creation, we show it + if ($object_id > 0 && ! $error) + { + $db->commit(); + Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object_id); + exit; + } + else + { + $db->rollback(); + $_GET["action"]='create'; + $_GET['socid']=$_POST['socid']; + if (! $mesg) $mesg='
'.$object->error.'
'; + } } if ($_GET["action"] == 'classifybilled') { - $object->fetch($comid); - $object->classer_facturee(); + $object->fetch($comid); + $object->classer_facturee(); } // Positionne ref commande client if ($_POST['action'] == 'set_ref_client' && $user->rights->commande->creer) { - $object->fetch($comid); - $object->set_ref_client($user, $_POST['ref_client']); + $object->fetch($comid); + $object->set_ref_client($user, $_POST['ref_client']); } if ($_POST['action'] == 'setremise' && $user->rights->commande->creer) { - $object->fetch($comid); - $object->set_remise($user, $_POST['remise']); + $object->fetch($comid); + $object->set_remise($user, $_POST['remise']); } if ($_POST['action'] == "setabsolutediscount" && $user->rights->commande->creer) { - if ($_POST["remise_id"]) - { - $ret=$object->fetch($comid); - if ($ret > 0) - { - $object->insert_discount($_POST["remise_id"]); - } - else - { - dol_print_error($db,$object->error); - } - } + if ($_POST["remise_id"]) + { + $ret=$object->fetch($comid); + if ($ret > 0) + { + $object->insert_discount($_POST["remise_id"]); + } + else + { + dol_print_error($db,$object->error); + } + } } if ($_POST['action'] == 'setdate' && $user->rights->commande->creer) { - //print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; - $date=dol_mktime(0, 0, 0, $_POST['order_month'], $_POST['order_day'], $_POST['order_year']); + //print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; + $date=dol_mktime(0, 0, 0, $_POST['order_month'], $_POST['order_day'], $_POST['order_year']); - $object->fetch($comid); - $result=$object->set_date($user,$date); - if ($result < 0) - { - $mesg='
'.$object->error.'
'; - } + $object->fetch($comid); + $result=$object->set_date($user,$date); + if ($result < 0) + { + $mesg='
'.$object->error.'
'; + } } if ($_POST['action'] == 'setdate_livraison' && $user->rights->commande->creer) { - //print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; - $datelivraison=dol_mktime(0, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']); + //print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year']; + $datelivraison=dol_mktime(0, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']); - $object->fetch($comid); - $result=$object->set_date_livraison($user,$datelivraison); - if ($result < 0) - { - $mesg='
'.$object->error.'
'; - } + $object->fetch($comid); + $result=$object->set_date_livraison($user,$datelivraison); + if ($result < 0) + { + $mesg='
'.$object->error.'
'; + } } if ($_POST['action'] == 'setaddress' && $user->rights->commande->creer) { - $object->fetch($comid); - $object->set_adresse_livraison($user,$_POST['fk_address']); + $object->fetch($comid); + $object->set_adresse_livraison($user,$_POST['fk_address']); } if ($_POST['action'] == 'setmode' && $user->rights->commande->creer) { - $object->fetch($comid); - $result=$object->mode_reglement($_POST['mode_reglement_id']); - if ($result < 0) dol_print_error($db,$object->error); + $object->fetch($comid); + $result=$object->mode_reglement($_POST['mode_reglement_id']); + if ($result < 0) dol_print_error($db,$object->error); } if ($_POST['action'] == 'setconditions' && $user->rights->commande->creer) { - $object->fetch($comid); - $result=$object->cond_reglement($_POST['cond_reglement_id']); - if ($result < 0) dol_print_error($db,$object->error); + $object->fetch($comid); + $result=$object->cond_reglement($_POST['cond_reglement_id']); + if ($result < 0) dol_print_error($db,$object->error); } if ($_REQUEST['action'] == 'setremisepercent' && $user->rights->facture->creer) { - $object->fetch($comid); - $result = $object->set_remise($user, $_POST['remise_percent']); + $object->fetch($comid); + $result = $object->set_remise($user, $_POST['remise_percent']); } if ($_REQUEST['action'] == 'setremiseabsolue' && $user->rights->facture->creer) { - $object->fetch($comid); - $result = $object->set_remise_absolue($user, $_POST['remise_absolue']); + $object->fetch($comid); + $result = $object->set_remise_absolue($user, $_POST['remise_absolue']); } /* @@ -357,158 +451,158 @@ if ($_REQUEST['action'] == 'setremiseabsolue' && $user->rights->facture->creer) */ if ($_POST['action'] == 'addline' && $user->rights->commande->creer) { - $result=0; + $result=0; - if (empty($_POST['idprod']) && $_POST["type"] < 0) - { - $mesg = '
'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Type")).'
'; - $result = -1 ; - } - if (empty($_POST['idprod']) && (! isset($_POST["np_price"]) || $_POST["np_price"]=='')) // Unit price can be 0 but not '' - { - $mesg = '
'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("UnitPriceHT")).'
'; - $result = -1 ; - } + if (empty($_POST['idprod']) && $_POST["type"] < 0) + { + $mesg = '
'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Type")).'
'; + $result = -1 ; + } + if (empty($_POST['idprod']) && (! isset($_POST["np_price"]) || $_POST["np_price"]=='')) // Unit price can be 0 but not '' + { + $mesg = '
'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("UnitPriceHT")).'
'; + $result = -1 ; + } - if ($result >= 0 && $_POST['qty'] && (($_POST['np_price'] != '' && ($_POST['np_desc'] || $_POST['dp_desc'])) || $_POST['idprod'])) - { - $ret=$object->fetch($comid); - if ($ret < 0) - { - dol_print_error($db,$object->error); - exit; - } - $ret=$object->fetch_thirdparty(); + if ($result >= 0 && $_POST['qty'] && (($_POST['np_price'] != '' && ($_POST['np_desc'] || $_POST['dp_desc'])) || $_POST['idprod'])) + { + $ret=$object->fetch($comid); + if ($ret < 0) + { + dol_print_error($db,$object->error); + exit; + } + $ret=$object->fetch_thirdparty(); - // Clean parameters - $suffixe = $_POST['idprod'] ? '_predef' : ''; - $date_start=dol_mktime(0, 0, 0, $_POST['date_start'.$suffixe.'month'], $_POST['date_start'.$suffixe.'day'], $_POST['date_start'.$suffixe.'year']); - $date_end=dol_mktime(0, 0, 0, $_POST['date_end'.$suffixe.'month'], $_POST['date_end'.$suffixe.'day'], $_POST['date_end'.$suffixe.'year']); - $price_base_type = 'HT'; + // Clean parameters + $suffixe = $_POST['idprod'] ? '_predef' : ''; + $date_start=dol_mktime(0, 0, 0, $_POST['date_start'.$suffixe.'month'], $_POST['date_start'.$suffixe.'day'], $_POST['date_start'.$suffixe.'year']); + $date_end=dol_mktime(0, 0, 0, $_POST['date_end'.$suffixe.'month'], $_POST['date_end'.$suffixe.'day'], $_POST['date_end'.$suffixe.'year']); + $price_base_type = 'HT'; - // Ecrase $pu par celui du produit - // Ecrase $desc par celui du produit - // Ecrase $txtva par celui du produit - // Ecrase $base_price_type par celui du produit - if ($_POST['idprod']) - { - $prod = new Product($db, $_POST['idprod']); - $prod->fetch($_POST['idprod']); + // Ecrase $pu par celui du produit + // Ecrase $desc par celui du produit + // Ecrase $txtva par celui du produit + // Ecrase $base_price_type par celui du produit + if ($_POST['idprod']) + { + $prod = new Product($db, $_POST['idprod']); + $prod->fetch($_POST['idprod']); - $tva_tx = get_default_tva($mysoc,$object->client,$prod->id); + $tva_tx = get_default_tva($mysoc,$object->client,$prod->id); - // multiprix - if ($conf->global->PRODUIT_MULTIPRICES && $object->client->price_level) - { - $pu_ht = $prod->multiprices[$object->client->price_level]; - $pu_ttc = $prod->multiprices_ttc[$object->client->price_level]; - $price_min = $prod->multiprices_min[$object->client->price_level]; - $price_base_type = $prod->multiprices_base_type[$object->client->price_level]; - } - else - { - $pu_ht = $prod->price; - $pu_ttc = $prod->price_ttc; - $price_min = $prod->price_min; - $price_base_type = $prod->price_base_type; - } + // multiprix + if ($conf->global->PRODUIT_MULTIPRICES && $object->client->price_level) + { + $pu_ht = $prod->multiprices[$object->client->price_level]; + $pu_ttc = $prod->multiprices_ttc[$object->client->price_level]; + $price_min = $prod->multiprices_min[$object->client->price_level]; + $price_base_type = $prod->multiprices_base_type[$object->client->price_level]; + } + else + { + $pu_ht = $prod->price; + $pu_ttc = $prod->price_ttc; + $price_min = $prod->price_min; + $price_base_type = $prod->price_base_type; + } - // On reevalue prix selon taux tva car taux tva transaction peut etre different - // de ceux du produit par defaut (par exemple si pays different entre vendeur et acheteur). - if ($tva_tx != $prod->tva_tx) - { - if ($price_base_type != 'HT') - { - $pu_ht = price2num($pu_ttc / (1 + ($tva_tx/100)), 'MU'); - } - else - { - $pu_ttc = price2num($pu_ht * (1 + ($tva_tx/100)), 'MU'); - } - } + // On reevalue prix selon taux tva car taux tva transaction peut etre different + // de ceux du produit par defaut (par exemple si pays different entre vendeur et acheteur). + if ($tva_tx != $prod->tva_tx) + { + if ($price_base_type != 'HT') + { + $pu_ht = price2num($pu_ttc / (1 + ($tva_tx/100)), 'MU'); + } + else + { + $pu_ttc = price2num($pu_ht * (1 + ($tva_tx/100)), 'MU'); + } + } - $desc = $prod->description; - $desc.= ($prod->description && $_POST['np_desc']) ? ((dol_textishtml($prod->description) || dol_textishtml($_POST['np_desc']))?"
":"\n") : ""; - $desc.= $_POST['np_desc']; - $type = $prod->type; - } - else - { - $pu_ht=$_POST['np_price']; - $tva_tx=str_replace('*','',$_POST['np_tva_tx']); - $tva_npr=preg_match('/\*/',$_POST['np_tva_tx'])?1:0; - $desc=$_POST['dp_desc']; - $type=$_POST["type"]; - } + $desc = $prod->description; + $desc.= ($prod->description && $_POST['np_desc']) ? ((dol_textishtml($prod->description) || dol_textishtml($_POST['np_desc']))?"
":"\n") : ""; + $desc.= $_POST['np_desc']; + $type = $prod->type; + } + else + { + $pu_ht=$_POST['np_price']; + $tva_tx=str_replace('*','',$_POST['np_tva_tx']); + $tva_npr=preg_match('/\*/',$_POST['np_tva_tx'])?1:0; + $desc=$_POST['dp_desc']; + $type=$_POST["type"]; + } - // Local Taxes - $localtax1_tx= get_localtax($tva_tx, 1, $object->client); - $localtax2_tx= get_localtax($tva_tx, 2, $object->client); + // Local Taxes + $localtax1_tx= get_localtax($tva_tx, 1, $object->client); + $localtax2_tx= get_localtax($tva_tx, 2, $object->client); - $desc=dol_htmlcleanlastbr($desc); + $desc=dol_htmlcleanlastbr($desc); - $info_bits=0; - if ($tva_npr) $info_bits |= 0x01; + $info_bits=0; + if ($tva_npr) $info_bits |= 0x01; - if ($result >= 0) - { - if($price_min && (price2num($pu_ht)*(1-price2num($_POST['remise_percent'])/100) < price2num($price_min))) - { + if ($result >= 0) + { + if($price_min && (price2num($pu_ht)*(1-price2num($_POST['remise_percent'])/100) < price2num($price_min))) + { //print "CantBeLessThanMinPrice ".$up_ht." - ".GETPOST('remise_percent')." - ".$product->price_min; - $mesg = '
'.$langs->trans("CantBeLessThanMinPrice",price2num($price_min,'MU').' '.$langs->trans("Currency".$conf->monnaie)).'
' ; - } - else - { - // Insert line - $result = $object->addline( - $comid, - $desc, - $pu_ht, - $_POST['qty'], - $tva_tx, - $localtax1_tx, - $localtax2_tx, - $_POST['idprod'], - $_POST['remise_percent'], - $info_bits, - 0, - $price_base_type, - $pu_ttc, - $date_start, - $date_end, - $type - ); + $mesg = '
'.$langs->trans("CantBeLessThanMinPrice",price2num($price_min,'MU').' '.$langs->trans("Currency".$conf->monnaie)).'
' ; + } + else + { + // Insert line + $result = $object->addline( + $comid, + $desc, + $pu_ht, + $_POST['qty'], + $tva_tx, + $localtax1_tx, + $localtax2_tx, + $_POST['idprod'], + $_POST['remise_percent'], + $info_bits, + 0, + $price_base_type, + $pu_ttc, + $date_start, + $date_end, + $type + ); - if ($result > 0) - { - // 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); - } - commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); + if ($result > 0) + { + // 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); + } + commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); - unset($_POST['qty']); - unset($_POST['type']); - unset($_POST['idprod']); - unset($_POST['remise_percent']); - unset($_POST['dp_desc']); - unset($_POST['np_desc']); - unset($_POST['np_price']); - unset($_POST['np_tva_tx']); - } - else - { - $mesg='
'.$object->error.'
'; - } - } - } - } + unset($_POST['qty']); + unset($_POST['type']); + unset($_POST['idprod']); + unset($_POST['remise_percent']); + unset($_POST['dp_desc']); + unset($_POST['np_desc']); + unset($_POST['np_price']); + unset($_POST['np_tva_tx']); + } + else + { + $mesg='
'.$object->error.'
'; + } + } + } + } } /* @@ -516,163 +610,163 @@ if ($_POST['action'] == 'addline' && $user->rights->commande->creer) */ if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POST['save'] == $langs->trans('Save')) { - if (! $object->fetch($comid) > 0) dol_print_error($db); - $object->fetch_thirdparty(); + if (! $object->fetch($comid) > 0) dol_print_error($db); + $object->fetch_thirdparty(); - // Clean parameters - $date_start=''; - $date_end=''; - $date_start=dol_mktime(0, 0, 0, $_POST['date_start'.$suffixe.'month'], $_POST['date_start'.$suffixe.'day'], $_POST['date_start'.$suffixe.'year']); - $date_end=dol_mktime(0, 0, 0, $_POST['date_end'.$suffixe.'month'], $_POST['date_end'.$suffixe.'day'], $_POST['date_end'.$suffixe.'year']); - $description=dol_htmlcleanlastbr($_POST['desc']); + // Clean parameters + $date_start=''; + $date_end=''; + $date_start=dol_mktime(0, 0, 0, $_POST['date_start'.$suffixe.'month'], $_POST['date_start'.$suffixe.'day'], $_POST['date_start'.$suffixe.'year']); + $date_end=dol_mktime(0, 0, 0, $_POST['date_end'.$suffixe.'month'], $_POST['date_end'.$suffixe.'day'], $_POST['date_end'.$suffixe.'year']); + $description=dol_htmlcleanlastbr($_POST['desc']); $up_ht=GETPOST('pu')?GETPOST('pu'):GETPOST('subprice'); - // Define info_bits - $info_bits=0; - if (preg_match('/\*/',$_POST['tva_tx'])) $info_bits |= 0x01; + // Define info_bits + $info_bits=0; + if (preg_match('/\*/',$_POST['tva_tx'])) $info_bits |= 0x01; - // Define vat_rate - $vat_rate=$_POST['tva_tx']; - $vat_rate=str_replace('*','',$vat_rate); - $localtax1_rate=get_localtax($vat_rate,1,$object->client); - $localtax2_rate=get_localtax($vat_rate,2,$object->client); + // Define vat_rate + $vat_rate=$_POST['tva_tx']; + $vat_rate=str_replace('*','',$vat_rate); + $localtax1_rate=get_localtax($vat_rate,1,$object->client); + $localtax2_rate=get_localtax($vat_rate,2,$object->client); - // Check parameters - if (empty($_POST['productid']) && $_POST["type"] < 0) - { - $mesg = '
'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Type")).'
'; - $result = -1 ; - } - // Check minimum price - if(! empty($_POST['productid'])) - { - $productid = $_POST['productid']; - $product = new Product($db); - $product->fetch($productid); - $type=$product->type; - $price_min = $product->price_min; - if ($conf->global->PRODUIT_MULTIPRICES && $object->client->price_level) $price_min = $product->multiprices_min[$object->client->price_level]; - } - if ($price_min && GETPOST('productid') && (price2num($up_ht)*(1-price2num($_POST['elremise_percent'])/100) < price2num($price_min))) - { - $mesg = '
'.$langs->trans("CantBeLessThanMinPrice",price2num($price_min,'MU').' '.$langs->trans("Currency".$conf->monnaie)).'
' ; - $result=-1; - } + // Check parameters + if (empty($_POST['productid']) && $_POST["type"] < 0) + { + $mesg = '
'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Type")).'
'; + $result = -1 ; + } + // Check minimum price + if(! empty($_POST['productid'])) + { + $productid = $_POST['productid']; + $product = new Product($db); + $product->fetch($productid); + $type=$product->type; + $price_min = $product->price_min; + if ($conf->global->PRODUIT_MULTIPRICES && $object->client->price_level) $price_min = $product->multiprices_min[$object->client->price_level]; + } + if ($price_min && GETPOST('productid') && (price2num($up_ht)*(1-price2num($_POST['elremise_percent'])/100) < price2num($price_min))) + { + $mesg = '
'.$langs->trans("CantBeLessThanMinPrice",price2num($price_min,'MU').' '.$langs->trans("Currency".$conf->monnaie)).'
' ; + $result=-1; + } - // Define params - if (! empty($_POST['productid'])) - { - $type=$product->type; - } - else - { - $type=$_POST["type"]; - } + // Define params + if (! empty($_POST['productid'])) + { + $type=$product->type; + } + else + { + $type=$_POST["type"]; + } - if ($result >= 0) - { - $result = $object->updateline($_POST['lineid'], - $description, - $up_ht, - $_POST['qty'], - $_POST['elremise_percent'], - $vat_rate, - $localtax1_rate, - $localtax2_rate, + if ($result >= 0) + { + $result = $object->updateline($_POST['lineid'], + $description, + $up_ht, + $_POST['qty'], + $_POST['elremise_percent'], + $vat_rate, + $localtax1_rate, + $localtax2_rate, 'HT', - $info_bits, - $date_start, - $date_end, - $type - ); + $info_bits, + $date_start, + $date_end, + $type + ); - if ($result >= 0) - { - // 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); - } - commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); - } - else - { - dol_print_error($db,$object->error); - exit; - } - } + if ($result >= 0) + { + // 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); + } + commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); + } + else + { + dol_print_error($db,$object->error); + exit; + } + } } if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POST['cancel'] == $langs->trans('Cancel')) { - Header('Location: fiche.php?id='.$comid); // Pour reaffichage de la fiche en cours d'edition - exit; + Header('Location: fiche.php?id='.$comid); // Pour reaffichage de la fiche en cours d'edition + exit; } if ($_REQUEST['action'] == 'confirm_validate' && $_REQUEST['confirm'] == 'yes' && $user->rights->commande->valider) { - $object->fetch($comid); // Load order and lines - $object->fetch_thirdparty(); + $object->fetch($comid); // Load order and lines + $object->fetch_thirdparty(); - $result=$object->valid($user); - if ($result >= 0) - { - // 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); - } - commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); - } + $result=$object->valid($user); + if ($result >= 0) + { + // 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); + } + commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); + } } if ($_REQUEST['action'] == 'confirm_close' && $_REQUEST['confirm'] == 'yes' && $user->rights->commande->cloturer) { - $object->fetch($comid); // Load order and lines + $object->fetch($comid); // Load order and lines - $result = $object->cloture($user); + $result = $object->cloture($user); } if ($_REQUEST['action'] == 'confirm_cancel' && $_REQUEST['confirm'] == 'yes' && $user->rights->commande->valider) { - $object->fetch($comid); // Load order and lines + $object->fetch($comid); // Load order and lines - $result = $object->cancel($user); + $result = $object->cancel($user); } if ($_GET['action'] == 'modif' && $user->rights->commande->creer) { - /* - * Repasse la commande en mode brouillon - */ - $object->fetch($comid); // Load order and lines - $object->fetch_thirdparty(); + /* + * Repasse la commande en mode brouillon + */ + $object->fetch($comid); // Load order and lines + $object->fetch_thirdparty(); - $result = $object->set_draft($user); - if ($result >= 0) - { - // 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); - } - commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); - } + $result = $object->set_draft($user); + if ($result >= 0) + { + // 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); + } + commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); + } } /* @@ -681,98 +775,98 @@ if ($_GET['action'] == 'modif' && $user->rights->commande->creer) if ($_GET['action'] == 'up' && $user->rights->commande->creer) { - $object->fetch($comid); - $object->fetch_thirdparty(); - $object->line_up($_GET['rowid']); + $object->fetch($comid); + $object->fetch_thirdparty(); + $object->line_up($_GET['rowid']); - // 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); - } + // 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); + } - commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); + commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); - Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$comid.'#'.$_GET['rowid']); - exit; + Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$comid.'#'.$_GET['rowid']); + exit; } if ($_GET['action'] == 'down' && $user->rights->commande->creer) { - $object->fetch($comid); - $object->fetch_thirdparty(); - $object->line_down($_GET['rowid']); + $object->fetch($comid); + $object->fetch_thirdparty(); + $object->line_down($_GET['rowid']); - // 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); - } - commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); + // 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); + } + commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); - Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$comid.'#'.$_GET['rowid']); - exit; + Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$comid.'#'.$_GET['rowid']); + exit; } if ($_REQUEST['action'] == 'builddoc') // In get or post { - /* - * Generate order document - * define into /includes/modules/commande/modules_commande.php - */ + /* + * Generate order document + * define into /includes/modules/commande/modules_commande.php + */ - // Sauvegarde le dernier modele choisi pour generer un document - $result=$object->fetch($comid); - $object->fetch_thirdparty(); + // Sauvegarde le dernier modele choisi pour generer un document + $result=$object->fetch($comid); + $object->fetch_thirdparty(); - if ($_REQUEST['model']) - { - $object->setDocModel($user, $_REQUEST['model']); - } + if ($_REQUEST['model']) + { + $object->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=$object->client->default_lang; - if (! empty($newlang)) - { - $outputlangs = new Translate("",$conf); - $outputlangs->setDefaultLang($newlang); - } - $result=commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); - 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; - } + // 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=commande_pdf_create($db, $object, $object->modelpdf, $outputlangs); + 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; + } } // Remove file in doc form if ($_REQUEST['action'] == 'remove_file') { - if ($object->fetch($id)) - { - $upload_dir = $conf->commande->dir_output . "/"; - $file = $upload_dir . '/' . $_GET['file']; - dol_delete_file($file); - $mesg = '
'.$langs->trans("FileWasRemoved").'
'; - } + if ($object->fetch($id)) + { + $upload_dir = $conf->commande->dir_output . "/"; + $file = $upload_dir . '/' . $_GET['file']; + dol_delete_file($file); + $mesg = '
'.$langs->trans("FileWasRemoved").'
'; + } } /* @@ -780,16 +874,16 @@ if ($_REQUEST['action'] == 'remove_file') */ if ($_POST['addfile']) { - require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); + require_once(DOL_DOCUMENT_ROOT."/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 = $vardir.'/temp/'; + // Set tmp user directory TODO Use a dedicated directory for temp mails files + $vardir=$conf->user->dir_output."/".$user->id; + $upload_dir = $vardir.'/temp/'; - $mesg=dol_add_file_process($upload_dir,0,0); + $mesg=dol_add_file_process($upload_dir,0,0); - $_GET["action"]='presend'; - $_POST["action"]='presend'; + $_GET["action"]='presend'; + $_POST["action"]='presend'; } /* @@ -797,16 +891,16 @@ if ($_POST['addfile']) */ if (! empty($_POST['removedfile'])) { - require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); + require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); - // Set tmp user directory - $vardir=$conf->user->dir_output."/".$user->id; - $upload_dir = $vardir.'/temp/'; + // Set tmp user directory + $vardir=$conf->user->dir_output."/".$user->id; + $upload_dir = $vardir.'/temp/'; - $mesg=dol_remove_file_process($_POST['removedfile'],0); + $mesg=dol_remove_file_process($_POST['removedfile'],0); - $_GET["action"]='presend'; - $_POST["action"]='presend'; + $_GET["action"]='presend'; + $_POST["action"]='presend'; } /* @@ -814,153 +908,153 @@ if (! empty($_POST['removedfile'])) */ if ($_POST['action'] == 'send' && ! $_POST['addfile'] && ! $_POST['removedfile'] && ! $_POST['cancel']) { - $langs->load('mails'); + $langs->load('mails'); - $result=$object->fetch($_POST['orderid']); - $result=$object->fetch_thirdparty(); + $result=$object->fetch($_POST['orderid']); + $result=$object->fetch_thirdparty(); - if ($result > 0) - { - $ref = dol_sanitizeFileName($object->ref); - $file = $conf->commande->dir_output . '/' . $ref . '/' . $ref . '.pdf'; + if ($result > 0) + { + $ref = dol_sanitizeFileName($object->ref); + $file = $conf->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']) - { - // Le destinataire a ete fourni via la liste deroulante - if ($_POST['receiver'] < 0) // Id du tiers - { - $sendto = $object->client->email; - $sendtoid = 0; - } - else // Id du contact - { - $sendto = $object->client->contact_get_email($_POST['receiver']); - $sendtoid = $_POST['receiver']; - } - } + if (is_readable($file)) + { + if ($_POST['sendto']) + { + // Le destinataire a ete fourni via le champ libre + $sendto = $_POST['sendto']; + $sendtoid = 0; + } + elseif ($_POST['receiver']) + { + // Le destinataire a ete fourni via la liste deroulante + if ($_POST['receiver'] < 0) // Id du tiers + { + $sendto = $object->client->email; + $sendtoid = 0; + } + else // Id du contact + { + $sendto = $object->client->contact_get_email($_POST['receiver']); + $sendtoid = $_POST['receiver']; + } + } - if (dol_strlen($sendto)) - { - $langs->load("commercial"); + 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']; + $from = $_POST['fromname'] . ' <' . $_POST['frommail'] .'>'; + $replyto = $_POST['replytoname']. ' <' . $_POST['replytomail'].'>'; + $message = $_POST['message']; + $sendtocc = $_POST['sendtocc']; + $deliveryreceipt = $_POST['deliveryreceipt']; - if ($_POST['action'] == 'send') - { - if (dol_strlen($_POST['subject'])) $subject=$_POST['subject']; - else $subject = $langs->transnoentities('Order').' '.$object->ref; - $actiontypecode='AC_COM'; - $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); - } + if ($_POST['action'] == 'send') + { + if (dol_strlen($_POST['subject'])) $subject=$_POST['subject']; + else $subject = $langs->transnoentities('Order').' '.$object->ref; + $actiontypecode='AC_COM'; + $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); + // 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']; + $attachedfiles=$formmail->get_attached_files(); + $filepath = $attachedfiles['paths']; + $filename = $attachedfiles['names']; + $mimetype = $attachedfiles['mimes']; - // Send mail - require_once(DOL_DOCUMENT_ROOT.'/lib/CMailFile.class.php'); - $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt); - if ($mailfile->error) - { - $mesg='
'.$mailfile->error.'
'; - } - else - { - $result=$mailfile->sendfile(); - if ($result) - { - $mesg=$langs->trans('MailSuccessfulySent',$from,$sendto); // Must not contains " + // Send mail + require_once(DOL_DOCUMENT_ROOT.'/lib/CMailFile.class.php'); + $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt); + if ($mailfile->error) + { + $mesg='
'.$mailfile->error.'
'; + } + else + { + $result=$mailfile->sendfile(); + if ($result) + { + $mesg=$langs->trans('MailSuccessfulySent',$from,$sendto); // Must not contains " - $error=0; + $error=0; - // Initialisation donnees - $object->sendtoid=$sendtoid; - $object->actiontypecode=$actiontypecode; - $object->actionmsg = $actionmsg; - $object->actionmsg2= $actionmsg2; - $object->orderrowid=$object->id; + // Initialisation donnees + $object->sendtoid=$sendtoid; + $object->actiontypecode=$actiontypecode; + $object->actionmsg = $actionmsg; + $object->actionmsg2= $actionmsg2; + $object->orderrowid=$object->id; - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); - $interface=new Interfaces($db); - $result=$interface->run_triggers('ORDER_SENTBYMAIL',$object,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); + $interface=new Interfaces($db); + $result=$interface->run_triggers('ORDER_SENTBYMAIL',$object,$user,$langs,$conf); + if ($result < 0) { $error++; $this->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='
'; - if ($mailfile->error) - { - $mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto); - $mesg.='
'.$mailfile->error; - } - else - { - $mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; - } - $mesg.='
'; - } - } - } - else - { - $langs->load("other"); - $mesg='
'.$langs->trans('ErrorMailRecipientIsEmpty').' !
'; - $_GET["action"]='presend'; - dol_syslog('Recipient email is empty'); - } - } - else - { - $langs->load("other"); - $mesg='
'.$langs->trans('ErrorCantReadFile',$file).'
'; - dol_syslog('Failed to read file: '.$file); - } - } - else - { - $langs->load("other"); - $mesg='
'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'
'; - dol_syslog('Impossible de lire les donnees de la facture. Le fichier facture n\'a peut-etre pas ete genere.'); - } + 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='
'; + if ($mailfile->error) + { + $mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto); + $mesg.='
'.$mailfile->error; + } + else + { + $mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; + } + $mesg.='
'; + } + } + } + else + { + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorMailRecipientIsEmpty').' !
'; + $_GET["action"]='presend'; + dol_syslog('Recipient email is empty'); + } + } + else + { + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorCantReadFile',$file).'
'; + dol_syslog('Failed to read file: '.$file); + } + } + else + { + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'
'; + dol_syslog('Impossible de lire les donnees de la facture. Le fichier facture n\'a peut-etre pas ete genere.'); + } } @@ -982,682 +1076,674 @@ $formorder = new FormOrder($db); *********************************************************************/ if ($_GET['action'] == 'create' && $user->rights->commande->creer) { - print_fiche_titre($langs->trans('CreateOrder')); + print_fiche_titre($langs->trans('CreateOrder')); - if ($mesg) print $mesg.'
'; + if ($mesg) print $mesg.'
'; - if ($propalid) - { - $sql = 'SELECT s.nom, s.prefix_comm, s.rowid'; - $sql.= ', p.price, p.remise, p.remise_percent, p.tva, p.total, p.ref, p.fk_cond_reglement, p.fk_mode_reglement'; - $sql.= ', p.datep as dp'; - $sql.= ', c.id as statut, c.label as lst'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p, '.MAIN_DB_PREFIX.'c_propalst as c'; - $sql .= ' WHERE p.fk_soc = s.rowid AND p.fk_statut = c.id'; - $sql .= ' AND p.rowid = '.$propalid; - } - else - { - $sql = 'SELECT s.nom, s.prefix_comm, s.rowid, s.mode_reglement, s.cond_reglement '; - $sql .= 'FROM '.MAIN_DB_PREFIX.'societe as s '; - $sql .= 'WHERE s.rowid = '.$_GET['socid']; - } - $resql = $db->query($sql); - if ( $resql ) - { - $num = $db->num_rows($resql); - if ($num) - { - $obj = $db->fetch_object($resql); + $soc = new Societe($db); + if ($socid) $res=$soc->fetch($socid); - $soc = new Societe($db); - $soc->fetch($obj->rowid); + if (GETPOST('origin') && GETPOST('originid')) + { + // Parse element/subelement (ex: project_task) + $element = $subelement = GETPOST('origin'); + if (preg_match('/^([^_]+)_([^_]+)/i',GETPOST('origin'),$regs)) + { + $element = $regs[1]; + $subelement = $regs[2]; + } - $nbrow=10; + if ($element == 'project') + { + $projectid=GETPOST('originid'); + } + else + { + // For compatibility + if ($element == 'order' || $element == 'commande') { $element = $subelement = 'commande'; } + if ($element == 'propal') { $element = 'comm/propal'; $subelement = 'propal'; } + if ($element == 'contract') { $element = $subelement = 'contrat'; } - print ''; - print ''; - print ''; - print '' ."\n"; - print ''; - print ''; + dol_include_once('/'.$element.'/class/'.$subelement.'.class.php'); - if (isset($_GET["origin"]) && $_GET["origin"] != 'project' && isset($_GET["originid"])) - { - print ''; - print ''; - } + $classname = ucfirst($subelement); + $objectsrc = new $classname($db); + $objectsrc->fetch(GETPOST('originid')); + if (empty($objectsrc->lines) && method_exists($objectsrc,'fetch_lines')) $objectsrc->fetch_lines(); + $objectsrc->fetch_thirdparty(); - print ''; + $projectid = (!empty($objectsrc->fk_project)?$object->fk_project:''); + $ref_client = (!empty($objectsrc->ref_client)?$object->ref_client:''); - // Reference - print ''; + $soc = $objectsrc->client; + $cond_reglement_id = (!empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(!empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1)); + $mode_reglement_id = (!empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(!empty($soc->mode_reglement_id)?$soc->mode_reglement_id:0)); + $remise_percent = (!empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(!empty($soc->remise_percent)?$soc->remise_percent:0)); + $remise_absolue = (!empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(!empty($soc->remise_absolue)?$soc->remise_absolue:0)); + $dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0; + } + } + else + { + $cond_reglement_id = $soc->cond_reglement_id; + $mode_reglement_id = $soc->mode_reglement_id; + $remise_percent = $soc->remise_percent; + $remise_absolue = 0; + $dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0; + } + $absolute_discount=$soc->getAvailableDiscounts(); - // Reference client - print ''; - print ''; - // Client - print ''; - /* - * Contact de la commande - */ - print "'; + $nbrow=10; - // Ligne info remises tiers - print ''; + print ''; + print ''; + print ''; + print '' ."\n"; + print ''; + print ''; + print ''; + print ''; - // Date - print ''; + print '
'.$langs->trans('Ref').''.$langs->trans("Draft").'
'.$langs->trans('RefCustomer').''; - print '
'.$langs->trans('Customer').''.$soc->getNomUrl(1).'
".$langs->trans("DefaultContact").''; - $html->select_contacts($soc->id,$setcontact,'contactidp',1); - print '
'.$langs->trans('Discounts').''; - if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client); - else print $langs->trans("CompanyHasNoRelativeDiscount"); - print '. '; - $absolute_discount=$soc->getAvailableDiscounts(); - if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->trans("Currency".$conf->monnaie)); - else print $langs->trans("CompanyHasNoAbsoluteDiscount"); - print '.'; - print '
'.$langs->trans('Date').''; - $html->select_date('','re','','','',"crea_commande",1,1); - print '
'; - // Date de livraison - print ""; + // Reference + print ''; - // Delivery address - if ($conf->global->COMMANDE_ADD_DELIVERY_ADDRESS) - { - // Link to edit: $html->form_address($_SERVER['PHP_SELF'].'?action=create','',$soc->id,'adresse_livraison_id','commande',''); - print ''; - } + // Reference client + print ''; + print ''; - // Conditions de reglement - print ''; + // Client + print ''; - // Mode de reglement - print ''; + /* + * Contact de la commande + */ + print "'; - // Projet - if ($conf->projet->enabled) - { - $projectid = 0; - if (isset($_GET["origin"]) && $_GET["origin"] == 'project') $projectid = ($_GET["originid"]?$_GET["originid"]:0); + // Ligne info remises tiers + print ''; - print ''; - } + // Date + print ''; - print ''; + // Date de livraison + print ""; - print ''; - print '"; + // Delivery address + if ($conf->global->COMMANDE_ADD_DELIVERY_ADDRESS) + { + // Link to edit: $html->form_address($_SERVER['PHP_SELF'].'?action=create','',$soc->id,'adresse_livraison_id','commande',''); + print ''; + } - // Note publique - print ''; - print ''; - print ''; + // Conditions de reglement + print ''; - // Note privee - if (! $user->societe_id) - { - print ''; - print ''; - print ''; - } + // Mode de reglement + print ''; - if ($propalid > 0) - { - $amount = ($obj->price); - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''; + // Projet + if ($conf->projet->enabled) + { + $projectid = 0; + if (isset($_GET["origin"]) && $_GET["origin"] == 'project') $projectid = ($_GET["originid"]?$_GET["originid"]:0); - print ''; - print ''; - print ''; - print ''; - } - else - { - if ($conf->global->PRODUCT_SHOW_WHEN_CREATE) - { - /* - * Services/produits predefinis - */ - $NBLINES=8; + print ''; + } - print ''; - print '
".$langs->trans("DeliveryDate").""; - if ($conf->global->DATE_LIVRAISON_WEEK_DELAY) - { - $datedelivery = time() + ((7*$conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60); - } - else - { - $datedelivery=empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0; - } - $html->select_date($datedelivery,'liv_','','','',"crea_commande",1,1); - print "
'.$langs->trans('Ref').''.$langs->trans("Draft").'
'.$langs->trans('DeliveryAddress').''; - $numaddress = $html->select_address($soc->fk_delivery_address, $_GET['socid'],'fk_address',1); - print '   '.$langs->trans("AddAddress").''; - print '
'.$langs->trans('RefCustomer').''; + print '
'.$langs->trans('PaymentConditionsShort').''; - $html->select_conditions_paiements($soc->cond_reglement,'cond_reglement_id',-1,1); - print '
'.$langs->trans('Customer').''.$soc->getNomUrl(1).'
'.$langs->trans('PaymentMode').''; - $html->select_types_paiements($soc->mode_reglement,'mode_reglement_id'); - print '
".$langs->trans("DefaultContact").''; + $html->select_contacts($soc->id,$setcontact,'contactidp',1); + print '
'.$langs->trans('Discounts').''; + if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client); + else print $langs->trans("CompanyHasNoRelativeDiscount"); + print '. '; + $absolute_discount=$soc->getAvailableDiscounts(); + if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->trans("Currency".$conf->monnaie)); + else print $langs->trans("CompanyHasNoAbsoluteDiscount"); + print '.'; + print '
'.$langs->trans('Project').''; - $numprojet=select_projects($soc->id,$projectid); - if ($numprojet==0) - { - print '   '.$langs->trans("AddProject").''; - } - print '
'.$langs->trans('Date').''; + $html->select_date('','re','','','',"crea_commande",1,1); + print '
'.$langs->trans('Source').''; - $formorder->selectSourcesCommande('','source_id',1); - print '
".$langs->trans("DeliveryDate").""; + if ($conf->global->DATE_LIVRAISON_WEEK_DELAY) + { + $datedelivery = time() + ((7*$conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60); + } + else + { + $datedelivery=empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0; + } + $html->select_date($datedelivery,'liv_','','','',"crea_commande",1,1); + print "
'.$langs->trans('Model').''; - // pdf - include_once(DOL_DOCUMENT_ROOT.'/includes/modules/commande/modules_commande.php'); - $model=new ModelePDFCommandes(); - $liste=$model->liste_modeles($db); - print $html->selectarray('model',$liste,$conf->global->COMMANDE_ADDON_PDF); - print "
'.$langs->trans('DeliveryAddress').''; + $numaddress = $html->select_address($soc->fk_delivery_address, $_GET['socid'],'fk_address',1); + print '   '.$langs->trans("AddAddress").''; + print '
'.$langs->trans('NotePublic').''; - print '
'.$langs->trans('PaymentConditionsShort').''; + $html->select_conditions_paiements($soc->cond_reglement,'cond_reglement_id',-1,1); + print '
'.$langs->trans('NotePrivate').''; - print '
'.$langs->trans('PaymentMode').''; + $html->select_types_paiements($soc->mode_reglement,'mode_reglement_id'); + print '
'.$langs->trans('Ref').''.$obj->ref.'
'.$langs->trans('TotalTTC').''.price($amount).'
'.$langs->trans('VAT').''.price($obj->tva).'
'.$langs->trans('TotalTTC').''.price($obj->total).'
'.$langs->trans('Project').''; + $numprojet=select_projects($soc->id,$projectid); + if ($numprojet==0) + { + print '   '.$langs->trans("AddProject").''; + } + print '
'; + print '
'.$langs->trans('Source').''; + $formorder->selectSourcesCommande((GETPOST("origin")=='propal'?'0':''),'source_id',1); + print '
'; - print ''; - print ''; - print ''; - print ''; - for ($i = 1 ; $i <= $NBLINES ; $i++) - { - print ''; - print ''; - print ''; - } + print ''; + print '"; - print '
'.$langs->trans('ProductsAndServices').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').'
'; - // multiprix - if($conf->global->PRODUIT_MULTIPRICES) - print $html->select_produits('','idprod'.$i,'',$conf->product->limit_size,$soc->price_level); - else - print $html->select_produits('','idprod'.$i,'',$conf->product->limit_size); - print '%
'.$langs->trans('Model').''; + // pdf + include_once(DOL_DOCUMENT_ROOT.'/includes/modules/commande/modules_commande.php'); + $model=new ModelePDFCommandes(); + $liste=$model->liste_modeles($db); + print $html->selectarray('model',$liste,$conf->global->COMMANDE_ADDON_PDF); + print "
'; - print '
'.$langs->trans('NotePublic').''; + print '
'; + // Note privee + if (! $user->societe_id) + { + print ''; + print ''.$langs->trans('NotePrivate').''; + print ''; + print ''; + } - print '
'; + if (is_object($objectsrc)) + { + // TODO for compatibility + if ($_GET['origin'] == 'contrat') + { + // Calcul contrat->price (HT), contrat->total (TTC), contrat->tva + $objectsrc->remise_absolue=$remise_absolue; + $objectsrc->remise_percent=$remise_percent; + $objectsrc->update_price(); + } - if ($propalid) - { - /* - * Produits - */ - print_titre($langs->trans('Products')); - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; + print "\n"; + print "\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''; + print ''; - $var=false; + $newclassname=$classname; + if ($newclassname=='Propal') $newclassname='CommercialProposal'; + print ''; + print ''; + print '"; + if ($mysoc->pays_code=='ES') + { + if ($mysoc->localtax1_assuj=="1") //Localtax1 RE + { + print '"; + } - $sql = 'SELECT pt.rowid, p.label as product, p.ref, pt.price, pt.qty, p.rowid as prodid, pt.remise_percent'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'propaldet as pt, '.MAIN_DB_PREFIX.'product as p WHERE pt.fk_product = p.rowid AND pt.fk_propal = '.$propalid; - $sql .= ' ORDER BY pt.rowid ASC'; - $result = $db->query($sql); - if ($result) - { - $num = $db->num_rows($result); - $i = 0; - while ($i < $num) - { - $objp = $db->fetch_object($result); - $var=!$var; - print ''; - print ''; - print ''; - print ''; - print ''; - $i++; - } - } + if ($mysoc->localtax2_assuj=="1") //Localtax2 IRPF + { + print '"; + } + } + print '"; + } + else + { + if ($conf->global->PRODUCT_SHOW_WHEN_CREATE) + { + /* + * Services/produits predefinis + */ + $NBLINES=8; - $sql = 'SELECT pt.rowid, pt.description as product, pt.price, pt.qty, pt.remise_percent'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'propaldet as pt WHERE pt.fk_propal = '.$propalid.' AND pt.fk_product = 0'; - $sql .= ' ORDER BY pt.rowid ASC'; - $resql=$db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - while ($i < $num) - { - $objp = $db->fetch_object($resql); - $var=!$var; - print ''; - print ''; - print ''; - print ''; - print ''; - $i++; - } - } - else - { - dol_print_error($db); - } + print ''; + } + } + + print '
'.$langs->trans('Ref').''.$langs->trans('Product').''.$langs->trans('Price').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').'
'.$langs->trans($newclassname).''.$objectsrc->getNomUrl(1).'
'.$langs->trans('TotalHT').''.price($objectsrc->total_ht).'
'.$langs->trans('TotalVAT').''.price($objectsrc->total_tva)."
'.$langs->transcountry("AmountLT1",$mysoc->pays_code).''.price($objectsrc->total_localtax1)."
['.$objp->ref.']'.img_object($langs->trans('ShowProduct'),'product').' '.$objp->product.''.price($objp->price).''.$objp->qty.'
'.$objp->remise_percent.'%
'.$langs->transcountry("AmountLT2",$mysoc->pays_code).''.price($objectsrc->total_localtax2)."
'.$langs->trans('TotalTTC').''.price($objectsrc->total_ttc)."
 '.img_object($langs->trans('ShowProduct'),'product').' '.$objp->product.''.price($objp->price).''.$objp->qty.'
'.$objp->remise_percent.'%
'; + + print ''; + print ''; + print ''; + print ''; + print ''; + for ($i = 1 ; $i <= $NBLINES ; $i++) + { + print ''; + print ''; + print ''; + } + + print '
'.$langs->trans('ProductsAndServices').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').'
'; + // multiprix + if($conf->global->PRODUIT_MULTIPRICES) + print $html->select_produits('','idprod'.$i,'',$conf->product->limit_size,$soc->price_level); + else + print $html->select_produits('','idprod'.$i,'',$conf->product->limit_size); + print '%
'; + print '
'; + + // Button "Create Draft" + print '
'; + + print ''; + + + // Show origin lines + if (is_object($objectsrc)) + { + $title=$langs->trans('ProductsAndServices'); + print_titre($title); + + print ''; + + $objectsrc->printOriginTitleList(); + $objectsrc->printOriginLinesList($object); + + print '
'; + } - print ''; - } - } - } - else - { - dol_print_error($db); - } } else { - /* *************************************************************************** */ - /* */ - /* Mode vue et edition */ - /* */ - /* *************************************************************************** */ - $now=dol_now(); + /* *************************************************************************** */ + /* */ + /* Mode vue et edition */ + /* */ + /* *************************************************************************** */ + $now=dol_now(); - $id = $comid; - $ref= $_GET['ref']; + $id = $comid; + $ref= $_GET['ref']; - if ($id > 0 || ! empty($ref)) - { - if ($mesg) print $mesg.'
'; + if ($id > 0 || ! empty($ref)) + { + if ($mesg) print $mesg.'
'; - $product_static=new Product($db); + $product_static=new Product($db); - $result=$object->fetch($comid,$ref); - if ($result > 0) - { - $soc = new Societe($db); - $soc->fetch($object->socid); + $result=$object->fetch($comid,$ref); + if ($result > 0) + { + $soc = new Societe($db); + $soc->fetch($object->socid); - $author = new User($db); - $author->fetch($object->user_author_id); + $author = new User($db); + $author->fetch($object->user_author_id); - $head = commande_prepare_head($object); - dol_fiche_head($head, 'order', $langs->trans("CustomerOrder"), 0, 'order'); + $head = commande_prepare_head($object); + dol_fiche_head($head, 'order', $langs->trans("CustomerOrder"), 0, 'order'); - /* - * Confirmation de la suppression de la commande - */ - if ($_GET['action'] == 'delete') - { - $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteOrder'), $langs->trans('ConfirmDeleteOrder'), 'confirm_delete', '', 0, 1); - if ($ret == 'html') print '
'; - } + /* + * Confirmation de la suppression de la commande + */ + if ($_GET['action'] == 'delete') + { + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteOrder'), $langs->trans('ConfirmDeleteOrder'), 'confirm_delete', '', 0, 1); + if ($ret == 'html') print '
'; + } - /* - * Confirmation de la validation - */ - if ($_GET['action'] == 'validate') - { - // on verifie si l'objet est en numerotation provisoire - $ref = substr($object->ref, 1, 4); - if ($ref == 'PROV') - { - $numref = $object->getNextNumRef($soc); - } - else - { - $numref = $object->ref; - } + /* + * Confirmation de la validation + */ + if ($_GET['action'] == 'validate') + { + // on verifie si l'objet est en numerotation provisoire + $ref = substr($object->ref, 1, 4); + if ($ref == 'PROV') + { + $numref = $object->getNextNumRef($soc); + } + else + { + $numref = $object->ref; + } - $text=$langs->trans('ConfirmValidateOrder',$numref); - if ($conf->notification->enabled) - { - require_once(DOL_DOCUMENT_ROOT ."/core/class/notify.class.php"); - $notify=new Notify($db); - $text.='
'; - $text.=$notify->confirmMessage('NOTIFY_VAL_ORDER',$object->socid); - } - $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ValidateOrder'), $text, 'confirm_validate', '', 0, 1); - if ($ret == 'html') print '
'; - } + $text=$langs->trans('ConfirmValidateOrder',$numref); + if ($conf->notification->enabled) + { + require_once(DOL_DOCUMENT_ROOT ."/core/class/notify.class.php"); + $notify=new Notify($db); + $text.='
'; + $text.=$notify->confirmMessage('NOTIFY_VAL_ORDER',$object->socid); + } + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ValidateOrder'), $text, 'confirm_validate', '', 0, 1); + if ($ret == 'html') print '
'; + } - /* - * Confirmation de la cloture - */ - if ($_GET['action'] == 'close') - { - $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('CloseOrder'), $langs->trans('ConfirmCloseOrder'), 'confirm_close', '', 0, 1); - if ($ret == 'html') print '
'; - } + /* + * Confirmation de la cloture + */ + if ($_GET['action'] == 'close') + { + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('CloseOrder'), $langs->trans('ConfirmCloseOrder'), 'confirm_close', '', 0, 1); + if ($ret == 'html') print '
'; + } - /* - * Confirmation de l'annulation - */ - if ($_GET['action'] == 'cancel') - { - $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('Cancel'), $langs->trans('ConfirmCancelOrder'), 'confirm_cancel', '', 0, 1); - if ($ret == 'html') print '
'; - } + /* + * Confirmation de l'annulation + */ + if ($_GET['action'] == 'cancel') + { + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('Cancel'), $langs->trans('ConfirmCancelOrder'), 'confirm_cancel', '', 0, 1); + if ($ret == 'html') print '
'; + } - /* - * Confirmation de la suppression d'une ligne produit - */ - if ($_GET['action'] == 'ask_deleteline') - { - $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$_GET["lineid"], $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 0, 1); - if ($ret == 'html') print '
'; - } + /* + * Confirmation de la suppression d'une ligne produit + */ + if ($_GET['action'] == 'ask_deleteline') + { + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$_GET["lineid"], $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 0, 1); + if ($ret == 'html') print '
'; + } - /* - * TODO ajout temporaire pour test en attendant la migration en template - */ - if ($_GET['action'] == 'ask_deletemilestone') - { - $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$_GET["lineid"], $langs->trans('DeleteMilestone'), $langs->trans('ConfirmDeleteMilestone'), 'confirm_deletemilestone','',0,1); - if ($ret == 'html') print '
'; - } + /* + * TODO ajout temporaire pour test en attendant la migration en template + */ + if ($_GET['action'] == 'ask_deletemilestone') + { + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$_GET["lineid"], $langs->trans('DeleteMilestone'), $langs->trans('ConfirmDeleteMilestone'), 'confirm_deletemilestone','',0,1); + if ($ret == 'html') print '
'; + } - // Clone confirmation - if ($_GET["action"] == 'clone') - { - // Create an array for form - $formquestion=array( - //'text' => $langs->trans("ConfirmClone"), - //array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1) - ); - // Paiement incomplet. On demande si motif = escompte ou autre - $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id,$langs->trans('CloneOrder'),$langs->trans('ConfirmCloneOrder',$object->ref),'confirm_clone',$formquestion,'yes',1); - if ($ret == 'html') print '
'; - } + // Clone confirmation + if ($_GET["action"] == 'clone') + { + // Create an array for form + $formquestion=array( + //'text' => $langs->trans("ConfirmClone"), + //array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1) + ); + // Paiement incomplet. On demande si motif = escompte ou autre + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$object->id,$langs->trans('CloneOrder'),$langs->trans('ConfirmCloneOrder',$object->ref),'confirm_clone',$formquestion,'yes',1); + if ($ret == 'html') print '
'; + } - /* - * Commande - */ - $nbrow=7; - if ($conf->projet->enabled) $nbrow++; + /* + * Commande + */ + $nbrow=7; + if ($conf->projet->enabled) $nbrow++; - //Local taxes - if ($mysoc->pays_code=='ES') - { - if($mysoc->localtax1_assuj=="1") $nbrow++; - if($mysoc->localtax2_assuj=="1") $nbrow++; - } + //Local taxes + if ($mysoc->pays_code=='ES') + { + if($mysoc->localtax1_assuj=="1") $nbrow++; + if($mysoc->localtax2_assuj=="1") $nbrow++; + } - print ''; + print '
'; - // Ref - print ''; - print ''; - print ''; + // Ref + print ''; + print ''; + print ''; - // Ref commande client - print ''; - print ''; + // Ref commande client + print ''; + print ''; - // Societe - print ''; - print ''; - print ''; + // Societe + print ''; + print ''; + print ''; - // Ligne info remises tiers - print ''; + // Ligne info remises tiers + print ''; - // Date - print ''; - print ''; - print ''; + print ''; + print ''; - // Delivery date planed - print ''; + print ''; + print ''; - // Delivery address - if ($conf->global->COMMANDE_ADD_DELIVERY_ADDRESS) - { - print ''; - } + if ($_GET['action'] == 'editdelivery_adress') + { + $html->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$_GET['socid'],'fk_address','commande',$object->id); + } + else + { + $html->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$_GET['socid'],'none','commande',$object->id); + } + print ''; + } - // Terms of payment - print ''; - print ''; + print ''; - // Mode of payment - print ''; + // Mode of payment + print ''; - // Project - if ($conf->projet->enabled) - { - $langs->load('projects'); - print ''; - } + // Project + if ($conf->projet->enabled) + { + $langs->load('projects'); + print ''; + } - // Lignes de 3 colonnes + // Lignes de 3 colonnes - // Total HT - print ''; - print ''; - print ''; + // Total HT + print ''; + print ''; + print ''; - // Total TVA - print ''; - print ''; + // Total TVA + print ''; + print ''; - // Amount Local Taxes - if ($mysoc->pays_code=='ES') - { - if ($mysoc->localtax1_assuj=="1") //Localtax1 RE - { - print ''; - print ''; - print ''; - } - if ($mysoc->localtax2_assuj=="1") //Localtax2 IRPF - { - print ''; - print ''; - print ''; - } - } + // Amount Local Taxes + if ($mysoc->pays_code=='ES') + { + if ($mysoc->localtax1_assuj=="1") //Localtax1 RE + { + print ''; + print ''; + print ''; + } + if ($mysoc->localtax2_assuj=="1") //Localtax2 IRPF + { + print ''; + print ''; + print ''; + } + } - // Total TTC - print ''; - print ''; + // Total TTC + print ''; + print ''; - // Statut - print ''; - print ''; - print ''; + // Statut + print ''; + print ''; + print ''; - print '
'.$langs->trans('Ref').''; - print $html->showrefnav($object,'ref','',1,'ref','ref'); - print '
'.$langs->trans('Ref').''; + print $html->showrefnav($object,'ref','',1,'ref','ref'); + print '
'; - print ''; - if ($_GET['action'] != 'refcustomer' && $object->brouillon) print ''; - print '
'; - print $langs->trans('RefCustomer').''; - print ''.img_edit($langs->trans('Modify')).'
'; - print '
'; - if ($user->rights->commande->creer && $_GET['action'] == 'refcustomer') - { - print '
'; - print ''; - print ''; - print ''; - print ' '; - print '
'; - } - else - { - print $object->ref_client; - } - print '
'; + print ''; + if ($_GET['action'] != 'refcustomer' && $object->brouillon) print ''; + print '
'; + print $langs->trans('RefCustomer').''; + print ''.img_edit($langs->trans('Modify')).'
'; + print '
'; + if ($user->rights->commande->creer && $_GET['action'] == 'refcustomer') + { + print '
'; + print ''; + print ''; + print ''; + print ' '; + print '
'; + } + else + { + print $object->ref_client; + } + print '
'.$langs->trans('Company').''.$soc->getNomUrl(1).'
'.$langs->trans('Company').''.$soc->getNomUrl(1).'
'.$langs->trans('Discounts').''; - if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client); - else print $langs->trans("CompanyHasNoRelativeDiscount"); - print '. '; - $absolute_discount=$soc->getAvailableDiscounts('','fk_facture_source IS NULL'); - $absolute_creditnote=$soc->getAvailableDiscounts('','fk_facture_source IS NOT NULL'); - $absolute_discount=price2num($absolute_discount,'MT'); - $absolute_creditnote=price2num($absolute_creditnote,'MT'); - if ($absolute_discount) - { - if ($object->statut > 0) - { - print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->monnaie)); - } - else - { - // Remise dispo de type non avoir - $filter='fk_facture_source IS NULL'; - print '
'; - $html->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$object->id,0,'remise_id',$soc->id,$absolute_discount,$filter); - } - } - if ($absolute_creditnote) - { - print $langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->monnaie)).'. '; - } - if (! $absolute_discount && ! $absolute_creditnote) print $langs->trans("CompanyHasNoAbsoluteDiscount").'.'; - print '
'.$langs->trans('Discounts').''; + if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client); + else print $langs->trans("CompanyHasNoRelativeDiscount"); + print '. '; + $absolute_discount=$soc->getAvailableDiscounts('','fk_facture_source IS NULL'); + $absolute_creditnote=$soc->getAvailableDiscounts('','fk_facture_source IS NOT NULL'); + $absolute_discount=price2num($absolute_discount,'MT'); + $absolute_creditnote=price2num($absolute_creditnote,'MT'); + if ($absolute_discount) + { + if ($object->statut > 0) + { + print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->monnaie)); + } + else + { + // Remise dispo de type non avoir + $filter='fk_facture_source IS NULL'; + print '
'; + $html->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$object->id,0,'remise_id',$soc->id,$absolute_discount,$filter); + } + } + if ($absolute_creditnote) + { + print $langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->monnaie)).'. '; + } + if (! $absolute_discount && ! $absolute_creditnote) print $langs->trans("CompanyHasNoAbsoluteDiscount").'.'; + print '
'; - print ''; + // Date + print ''; + if ($_GET['action'] != 'editdate' && $object->brouillon) print ''; + print '
'; - print $langs->trans('Date'); - print '
'; + print ''; - if ($_GET['action'] != 'editdate' && $object->brouillon) print ''; - print '
'; + print $langs->trans('Date'); + print 'id.'">'.img_edit($langs->trans('SetDate'),1).'
'; - print '
'; - if ($_GET['action'] == 'editdate') - { - print '
'; - print ''; - print ''; - $html->select_date($object->date,'order_','','','',"setdate"); - print ''; - print '
'; - } - else - { - print $object->date ? dol_print_date($object->date,'daytext') : ' '; - } - print '
id.'">'.img_edit($langs->trans('SetDate'),1).'
'; + print '
'; + if ($_GET['action'] == 'editdate') + { + print '
'; + print ''; + print ''; + $html->select_date($object->date,'order_','','','',"setdate"); + print ''; + print '
'; + } + else + { + print $object->date ? dol_print_date($object->date,'daytext') : ' '; + } + print '
'.$langs->trans('Source').' : '.$object->getLabelSource(); - if ($object->source == 0 && $conf->propal->enabled && $object->propale_id) - { - // Si source = propal - $propal = new Propal($db); - $propal->fetch($object->propale_id); - print ' -> '.$propal->ref.''; - } - print '
'.$langs->trans('Source').' : '.$object->getLabelSource(); + if ($object->source == 0 && $conf->propal->enabled && $object->propale_id) + { + // Si source = propal + $propal = new Propal($db); + $propal->fetch($object->propale_id); + print ' -> '.$propal->ref.''; + } + print '
'; - print ''; + // Delivery date planed + print ''; - print ''; - print ''; + if ($_GET['action'] != 'editdate_livraison') print ''; + print '
'; - print $langs->trans('DateDeliveryPlanned'); - print '
'; + 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_livraison?$object->date_livraison:-1,'liv_','','','',"setdate_livraison"); - print ''; - print '
'; - } - else - { - print $object->date_livraison ? dol_print_date($object->date_livraison,'daytext') : ' '; - } - print '
'.$langs->trans('NotePublic').' :
'; - print nl2br($object->note_public); - print '
id.'">'.img_edit($langs->trans('SetDeliveryDate'),1).'
'; + print '
'; + if ($_GET['action'] == 'editdate_livraison') + { + print '
'; + print ''; + print ''; + $html->select_date($object->date_livraison?$object->date_livraison:-1,'liv_','','','',"setdate_livraison"); + print ''; + print '
'; + } + else + { + print $object->date_livraison ? dol_print_date($object->date_livraison,'daytext') : ' '; + } + print '
'.$langs->trans('NotePublic').' :
'; + print nl2br($object->note_public); + print '
'; - print ''; + // Delivery address + if ($conf->global->COMMANDE_ADD_DELIVERY_ADDRESS) + { + print ''; + print '
'; - print $langs->trans('DeliveryAddress'); - print '
'; + print ''; - if ($_GET['action'] != 'editdelivery_adress' && $object->brouillon) print ''; - print '
'; + print $langs->trans('DeliveryAddress'); + print 'socid.'&id='.$object->id.'">'.img_edit($langs->trans('SetDeliveryAddress'),1).'
'; - print '
'; + if ($_GET['action'] != 'editdelivery_adress' && $object->brouillon) print 'socid.'&id='.$object->id.'">'.img_edit($langs->trans('SetDeliveryAddress'),1).'
'; + print '
'; - if ($_GET['action'] == 'editdelivery_adress') - { - $html->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$_GET['socid'],'fk_address','commande',$object->id); - } - else - { - $html->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$_GET['socid'],'none','commande',$object->id); - } - print '
'; - print ''; + // Terms of payment + print ''; + if ($_GET['action'] != 'editconditions' && $object->brouillon) print ''; + print '
'; - print $langs->trans('PaymentConditionsShort'); - print '
'; + print ''; - if ($_GET['action'] != 'editconditions' && $object->brouillon) print ''; - print '
'; + print $langs->trans('PaymentConditionsShort'); + print 'id.'">'.img_edit($langs->trans('SetConditions'),1).'
'; - print '
'; - if ($_GET['action'] == 'editconditions') - { - $html->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->cond_reglement_id,'cond_reglement_id'); - } - else - { - $html->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->cond_reglement_id,'none'); - } - print 'id.'">'.img_edit($langs->trans('SetConditions'),1).'
'; + print '
'; + if ($_GET['action'] == 'editconditions') + { + $html->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->cond_reglement_id,'cond_reglement_id'); + } + else + { + $html->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->cond_reglement_id,'none'); + } + print '
'; - print ''; - if ($_GET['action'] != 'editmode' && $object->brouillon) print ''; - print '
'; - print $langs->trans('PaymentMode'); - print 'id.'">'.img_edit($langs->trans('SetMode'),1).'
'; - print '
'; - if ($_GET['action'] == 'editmode') - { - $html->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->mode_reglement_id,'mode_reglement_id'); - } - else - { - $html->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->mode_reglement_id,'none'); - } - print '
'; + print ''; + if ($_GET['action'] != 'editmode' && $object->brouillon) print ''; + print '
'; + print $langs->trans('PaymentMode'); + print 'id.'">'.img_edit($langs->trans('SetMode'),1).'
'; + print '
'; + if ($_GET['action'] == 'editmode') + { + $html->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->mode_reglement_id,'mode_reglement_id'); + } + else + { + $html->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->mode_reglement_id,'none'); + } + print '
'; - print ''; - if ($_GET['action'] != 'classer') print ''; - print '
'; - print $langs->trans('Project'); - print ''.img_edit($langs->trans('SetProject')).'
'; - print '
'; - //print "$object->id, $object->socid, $object->fk_project"; - if ($_GET['action'] == 'classer') - { - $html->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'projectid'); - } - else - { - $html->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none'); - } - print '
'; + print ''; + if ($_GET['action'] != 'classer') print ''; + print '
'; + print $langs->trans('Project'); + print ''.img_edit($langs->trans('SetProject')).'
'; + print '
'; + //print "$object->id, $object->socid, $object->fk_project"; + if ($_GET['action'] == 'classer') + { + $html->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'projectid'); + } + else + { + $html->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none'); + } + print '
'.$langs->trans('AmountHT').''.price($object->total_ht).''.$langs->trans('Currency'.$conf->monnaie).'
'.$langs->trans('AmountHT').''.price($object->total_ht).''.$langs->trans('Currency'.$conf->monnaie).'
'.$langs->trans('AmountVAT').''.price($object->total_tva).''.$langs->trans('Currency'.$conf->monnaie).'
'.$langs->trans('AmountVAT').''.price($object->total_tva).''.$langs->trans('Currency'.$conf->monnaie).'
'.$langs->transcountry("AmountLT1",$mysoc->pays_code).''.price($object->total_localtax1).''.$langs->trans("Currency".$conf->monnaie).'
'.$langs->transcountry("AmountLT2",$mysoc->pays_code).''.price($object->total_localtax2).''.$langs->trans("Currency".$conf->monnaie).'
'.$langs->transcountry("AmountLT1",$mysoc->pays_code).''.price($object->total_localtax1).''.$langs->trans("Currency".$conf->monnaie).'
'.$langs->transcountry("AmountLT2",$mysoc->pays_code).''.price($object->total_localtax2).''.$langs->trans("Currency".$conf->monnaie).'
'.$langs->trans('AmountTTC').''.price($object->total_ttc).''.$langs->trans('Currency'.$conf->monnaie).'
'.$langs->trans('AmountTTC').''.price($object->total_ttc).''.$langs->trans('Currency'.$conf->monnaie).'
'.$langs->trans('Status').''.$object->getLibStatut(4).'
'.$langs->trans('Status').''.$object->getLibStatut(4).'

'; - print "\n"; + print '
'; + print "\n"; - /* - * Lines - */ + /* + * Lines + */ $result = $object->getLinesArray(); if ($conf->use_javascript_ajax && $object->statut == 0) @@ -1673,106 +1759,106 @@ else $object->printLinesList(1,$mysoc,$soc); } - $numlines=sizeof($object->lines); + $numlines=sizeof($object->lines); - /* - * Form to add new line - */ - if ($object->statut == 0 && $user->rights->commande->creer) - { - if ($_GET['action'] != 'editline') - { - $var=true; + /* + * Form to add new line + */ + if ($object->statut == 0 && $user->rights->commande->creer) + { + if ($_GET['action'] != 'editline') + { + $var=true; - $object->showAddFreeProductForm(1,$mysoc,$soc); + $object->showAddFreeProductForm(1,$mysoc,$soc); - // Add predefined products/services - if ($conf->product->enabled || $conf->service->enabled) - { - $var=!$var; - $object->showAddPredefinedProductForm(1,$mysoc,$soc); - } + // Add predefined products/services + if ($conf->product->enabled || $conf->service->enabled) + { + $var=!$var; + $object->showAddPredefinedProductForm(1,$mysoc,$soc); + } - // Hook of thirdparty module - if (! empty($object->hooks)) - { - foreach($object->hooks as $module) - { - $var=!$var; - $module->formAddObject($object); - } - } - } - } - print ''; - print ''; + // Hook of thirdparty module + if (! empty($object->hooks)) + { + foreach($object->hooks as $module) + { + $var=!$var; + $module->formAddObject($object); + } + } + } + } + print ''; + print ''; - /* - * Boutons actions - */ - if ($_GET['action'] != 'presend') - { - if ($user->societe_id == 0 && $_GET['action'] <> 'editline') - { - print '
'; + /* + * Boutons actions + */ + if ($_GET['action'] != 'presend') + { + if ($user->societe_id == 0 && $_GET['action'] <> 'editline') + { + print '
'; - // Valid - if ($object->statut == 0 && $object->total_ttc >= 0 && $numlines > 0 && $user->rights->commande->valider) - { - print ''.$langs->trans('Validate').''; - } + // Valid + if ($object->statut == 0 && $object->total_ttc >= 0 && $numlines > 0 && $user->rights->commande->valider) + { + print ''.$langs->trans('Validate').''; + } - // Edit - if ($object->statut == 1) - { - if ($user->rights->commande->creer) - { - print ''.$langs->trans('Modify').''; - } - } + // Edit + if ($object->statut == 1) + { + if ($user->rights->commande->creer) + { + print ''.$langs->trans('Modify').''; + } + } - // Send - if ($object->statut > 0) - { - if ($user->rights->commande->envoyer) - { - $comref = dol_sanitizeFileName($object->ref); - $file = $conf->commande->dir_output . '/'.$comref.'/'.$comref.'.pdf'; - if (file_exists($file)) - { - print ''.$langs->trans('SendByMail').''; - } - } - } + // Send + if ($object->statut > 0) + { + if ($user->rights->commande->envoyer) + { + $comref = dol_sanitizeFileName($object->ref); + $file = $conf->commande->dir_output . '/'.$comref.'/'.$comref.'.pdf'; + if (file_exists($file)) + { + print ''.$langs->trans('SendByMail').''; + } + } + } - // Ship - if ($conf->expedition->enabled) - { - if ($object->statut > 0 && $object->statut < 3 && $object->getNbOfProductsLines() > 0) - { - if ($user->rights->expedition->creer) - { - // Chargement des permissions - /*$error = $user->load_entrepots(); deprecated - if (sizeof($user->entrepots) === 1) - { - print ''; - print $langs->trans('ShipProduct').''; + // Ship + if ($conf->expedition->enabled) + { + if ($object->statut > 0 && $object->statut < 3 && $object->getNbOfProductsLines() > 0) + { + if ($user->rights->expedition->creer) + { + // Chargement des permissions + /*$error = $user->load_entrepots(); deprecated + if (sizeof($user->entrepots) === 1) + { + print ''; + print $langs->trans('ShipProduct').''; - } - else - {*/ - print ''.$langs->trans('ShipProduct').''; - //} - } - else - { - print ''.$langs->trans('ShipProduct').''; - } - } - } + } + else + {*/ + print ''.$langs->trans('ShipProduct').''; + //} + } + else + { + print ''.$langs->trans('ShipProduct').''; + } + } + } // Reopen a closed order if ($object->statut == 3) @@ -1780,167 +1866,167 @@ else print ''.$langs->trans('ReOpen').''; } - // Create bill and Classify billed - if ($conf->facture->enabled && $object->statut > 0 && ! $object->facturee) - { - if ($user->rights->facture->creer) - { - print ''.$langs->trans("CreateBill").''; - } + // Create bill and Classify billed + if ($conf->facture->enabled && $object->statut > 0 && ! $object->facturee) + { + if ($user->rights->facture->creer) + { + print ''.$langs->trans("CreateBill").''; + } - if ($user->rights->commande->creer && $object->statut > 2) - { - print ''.$langs->trans("ClassifyBilled").''; - } - } + if ($user->rights->commande->creer && $object->statut > 2) + { + print ''.$langs->trans("ClassifyBilled").''; + } + } - // Close - if ($object->statut == 1 || $object->statut == 2) - { - if ($user->rights->commande->cloturer) - { - print ''.$langs->trans('Close').''; - } - } + // Close + if ($object->statut == 1 || $object->statut == 2) + { + if ($user->rights->commande->cloturer) + { + print ''.$langs->trans('Close').''; + } + } - // Clone - if ($user->rights->commande->creer) - { - print ''.$langs->trans("ToClone").''; - } + // Clone + if ($user->rights->commande->creer) + { + print ''.$langs->trans("ToClone").''; + } - // Cancel order - if ($object->statut == 1) - { - $nb_expedition = $object->nb_expedition(); - if ($user->rights->commande->annuler && $nb_expedition == 0) - { - print ''.$langs->trans('Cancel').''; - } - } + // Cancel order + if ($object->statut == 1) + { + $nb_expedition = $object->nb_expedition(); + if ($user->rights->commande->annuler && $nb_expedition == 0) + { + print ''.$langs->trans('Cancel').''; + } + } - // Delete order - if ($user->rights->commande->supprimer) - { - print ''.$langs->trans('Delete').''; - } + // Delete order + if ($user->rights->commande->supprimer) + { + print ''.$langs->trans('Delete').''; + } - print '
'; - } - print '
'; - } + print '
'; + } + print '
'; + } - if ($_GET['action'] != 'presend') - { - print '
'; - print ''; // ancre + if ($_GET['action'] != 'presend') + { + print '
'; + print ''; // ancre - /* - * Documents generes - * - */ - $comref = dol_sanitizeFileName($object->ref); - $file = $conf->commande->dir_output . '/' . $comref . '/' . $comref . '.pdf'; - $relativepath = $comref.'/'.$comref.'.pdf'; - $filedir = $conf->commande->dir_output . '/' . $comref; - $urlsource=$_SERVER["PHP_SELF"]."?id=".$object->id; - $genallowed=$user->rights->commande->creer; - $delallowed=$user->rights->commande->supprimer; + /* + * Documents generes + * + */ + $comref = dol_sanitizeFileName($object->ref); + $file = $conf->commande->dir_output . '/' . $comref . '/' . $comref . '.pdf'; + $relativepath = $comref.'/'.$comref.'.pdf'; + $filedir = $conf->commande->dir_output . '/' . $comref; + $urlsource=$_SERVER["PHP_SELF"]."?id=".$object->id; + $genallowed=$user->rights->commande->creer; + $delallowed=$user->rights->commande->supprimer; - $somethingshown=$formfile->show_documents('commande',$comref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang); + $somethingshown=$formfile->show_documents('commande',$comref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang); - /* - * Linked object block - */ - $object->load_object_linked($object->id,$object->element); + /* + * Linked object block + */ + $object->load_object_linked($object->id,$object->element); - foreach($object->linked_object as $linked_object => $linked_objectid) - { - $element = $subelement = $linked_object; - if (preg_match('/^([^_]+)_([^_]+)/i',$linked_object,$regs)) - { - $element = $regs[1]; - $subelement = $regs[2]; - } - if($conf->$element->enabled && $element != $object->element) - { - $somethingshown=$object->showLinkedObjectBlock($linked_object,$linked_objectid,$somethingshown); - } - } + foreach($object->linked_object as $linked_object => $linked_objectid) + { + $element = $subelement = $linked_object; + if (preg_match('/^([^_]+)_([^_]+)/i',$linked_object,$regs)) + { + $element = $regs[1]; + $subelement = $regs[2]; + } + if($conf->$element->enabled && $element != $object->element) + { + $somethingshown=$object->showLinkedObjectBlock($linked_object,$linked_objectid,$somethingshown); + } + } - print ''; + print ''; - // List of actions on element - include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'); - $formactions=new FormActions($db); - $somethingshown=$formactions->showactions($object,'order',$socid); + // List of actions on element + include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'); + $formactions=new FormActions($db); + $somethingshown=$formactions->showactions($object,'order',$socid); - print '
'; - } + print '
'; + } - /* - * Action presend - * - */ - if ($_GET['action'] == 'presend') - { - $ref = dol_sanitizeFileName($object->ref); - $file = $conf->commande->dir_output . '/' . $ref . '/' . $ref . '.pdf'; + /* + * Action presend + * + */ + if ($_GET['action'] == 'presend') + { + $ref = dol_sanitizeFileName($object->ref); + $file = $conf->commande->dir_output . '/' . $ref . '/' . $ref . '.pdf'; - print '
'; - print_titre($langs->trans('SendOrderByMail')); + print '
'; + print_titre($langs->trans('SendOrderByMail')); - // Cree l'objet formulaire mail - include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'); - $formmail = new FormMail($db); - $formmail->fromtype = 'user'; - $formmail->fromid = $user->id; - $formmail->fromname = $user->getFullName($langs); - $formmail->frommail = $user->email; - $formmail->withfrom=1; - $formmail->withto=empty($_POST["sendto"])?1:$_POST["sendto"]; - $formmail->withtosocid=$soc->id; - $formmail->withtocc=1; - $formmail->withtoccsocid=0; - $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; - $formmail->withtocccsocid=0; - $formmail->withtopic=$langs->trans('SendOrderRef','__ORDERREF__'); - $formmail->withfile=2; - $formmail->withbody=1; - $formmail->withdeliveryreceipt=1; - $formmail->withcancel=1; - // Tableau des substitutions - $formmail->substit['__ORDERREF__']=$object->ref; - // Tableau des parametres complementaires - $formmail->param['action']='send'; - $formmail->param['models']='order_send'; - $formmail->param['orderid']=$object->id; - $formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id; + // Cree l'objet formulaire mail + include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'); + $formmail = new FormMail($db); + $formmail->fromtype = 'user'; + $formmail->fromid = $user->id; + $formmail->fromname = $user->getFullName($langs); + $formmail->frommail = $user->email; + $formmail->withfrom=1; + $formmail->withto=empty($_POST["sendto"])?1:$_POST["sendto"]; + $formmail->withtosocid=$soc->id; + $formmail->withtocc=1; + $formmail->withtoccsocid=0; + $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; + $formmail->withtocccsocid=0; + $formmail->withtopic=$langs->trans('SendOrderRef','__ORDERREF__'); + $formmail->withfile=2; + $formmail->withbody=1; + $formmail->withdeliveryreceipt=1; + $formmail->withcancel=1; + // Tableau des substitutions + $formmail->substit['__ORDERREF__']=$object->ref; + // Tableau des parametres complementaires + $formmail->param['action']='send'; + $formmail->param['models']='order_send'; + $formmail->param['orderid']=$object->id; + $formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id; - // Init list of files - if (! empty($_REQUEST["mode"]) && $_REQUEST["mode"]=='init') - { - $formmail->clear_attached_files(); - $formmail->add_attached_files($file,dol_sanitizeFilename($ref.'.pdf'),'application/pdf'); - } + // Init list of files + if (! empty($_REQUEST["mode"]) && $_REQUEST["mode"]=='init') + { + $formmail->clear_attached_files(); + $formmail->add_attached_files($file,dol_sanitizeFilename($ref.'.pdf'),'application/pdf'); + } - // Show form - $formmail->show_form(); + // Show form + $formmail->show_form(); - print '
'; - } - } - else - { - // Commande non trouvee - dol_print_error($db); - } - } + print '
'; + } + } + else + { + // Commande non trouvee + dol_print_error($db); + } + } } $db->close();