| ';
$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 ' |