From 82b31e1f5bb3fa1a3fad6fb7ef33fc8fa042fcbe Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 May 2012 19:06:23 +0200 Subject: [PATCH 01/23] Fix: Works with checkbox htdocs/core/class/html.form.class.php --- htdocs/core/class/html.form.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 2269febfcc5..2e28e13803e 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2254,7 +2254,10 @@ class Form if ($inputarray.length>0) { $.each($inputarray, function() { var inputname = this; - var inputvalue = $("#" + this).val(); + var more = \'\'; + if ($("#" + this).attr("type") == \'checkbox\') { more = \':checked\'; } + var inputvalue = $("#" + this + more).val(); + if (typeof inputvalue == \'undefined\') { inputvalue=\'\'; } options += \'&\' + inputname + \'=\' + inputvalue; }); //alert(options); From 22006aa4dcd6735381360c7a7f5a343cfdcbd8c8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 May 2012 17:11:40 +0200 Subject: [PATCH 02/23] Fix: Better fix for gant view --- htdocs/projet/ganttchart.php | 2 +- htdocs/projet/ganttview.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/projet/ganttchart.php b/htdocs/projet/ganttchart.php index 258ba415ebc..dff07828e36 100644 --- a/htdocs/projet/ganttchart.php +++ b/htdocs/projet/ganttchart.php @@ -167,7 +167,7 @@ function constructGanttLine($tarr,$task,$project_dependencies,$level=0,$project_ // Add line to gantt $s = "// Add taks id=".$task["task_id"]." level = ".$level."\n"; //$s.= "g.AddElementItem(new JSGantt.ElementItem('task',".$task['task_id'].",'".$name."','".$start_date."', '".$end_date."', '".$task['task_color']."', '', ".$task['task_milestone'].", '".$resources."', ".$percent.", ".($task["task_is_group"]>0?1:0).", ".$parent.", 1".($depend?", ".$depend:"")."));"; - $s = "g.AddTaskItem(new JSGantt.TaskItem(".$task['task_id'].",'".$name."','".$start_date."', '".$end_date."', '".$task['task_color']."', '".$link."', ".$task['task_milestone'].", '".$resources."', ".$percent.", ".($task["task_is_group"]>0?1:0).", '".$parent."', 1, '".($depend?$depend:"")."'));"; + $s = "g.AddTaskItem(new JSGantt.TaskItem(".$task['task_id'].",'".dol_escape_js($name)."','".$start_date."', '".$end_date."', '".$task['task_color']."', '".$link."', ".$task['task_milestone'].", '".$resources."', ".$percent.", ".($task["task_is_group"]>0?1:0).", '".$parent."', 1, '".($depend?$depend:"")."'));"; echo $s."\n"; } diff --git a/htdocs/projet/ganttview.php b/htdocs/projet/ganttview.php index 10daa2be3d4..1747d8b9356 100644 --- a/htdocs/projet/ganttview.php +++ b/htdocs/projet/ganttview.php @@ -185,7 +185,7 @@ if (count($tasksarray)>0) $tasks[$taskcursor]['task_milestone']=0; $tasks[$taskcursor]['task_percent_complete']=$val->progress; //$tasks[$taskcursor]['task_name']=$task->getNomUrl(1); - $tasks[$taskcursor]['task_name']=dol_escape_js($val->label); + $tasks[$taskcursor]['task_name']=$val->label; $tasks[$taskcursor]['task_start_date']=$val->date_start; $tasks[$taskcursor]['task_end_date']=$val->date_end; $tasks[$taskcursor]['task_color']='b4d1ea'; From c9a35c4e3a9f9435ce52add46ac3cc46b45ecd8a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 May 2012 17:19:46 +0200 Subject: [PATCH 03/23] Too shadow with IE --- htdocs/theme/eldy/style.css.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 252ffbcb423..57ccf7c6e53 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -214,9 +214,9 @@ textarea:disabled { -moz-border-radius:0px 5px 0px 5px; -webkit-border-radius:0px 5px 0px 5px; border-radius:0px 5px 0px 5px; - -moz-box-shadow: 4px 4px 4px #CCC; - -webkit-box-shadow: 4px 4px 4px #CCC; - box-shadow: 4px 4px 4px #CCC; + -moz-box-shadow: 2px 2px 3px #CCC; + -webkit-box-shadow: 2px 2px 3px #CCC; + box-shadow: 2px 2px 3px #CCC; } .button:focus { font-family: ; @@ -1234,9 +1234,9 @@ span.tabspan { -moz-border-radius:0px 5px 0px 5px; -webkit-border-radius:0px 5px 0px 5px; border-radius:0px 5px 0px 5px; - -moz-box-shadow: 4px 4px 4px #CCC; - -webkit-box-shadow: 4px 4px 4px #CCC; - box-shadow: 4px 4px 4px #CCC; + -moz-box-shadow: 2px 2px 3px #CCC; + -webkit-box-shadow: 2px 2px 3px #CCC; + box-shadow: 2px 2px 3px #CCC; } .butAction:hover { From 21d028c064290a3acd7e0d185c18361213fd8600 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 May 2012 18:00:53 +0200 Subject: [PATCH 04/23] Fix: Width of gantt chart --- htdocs/projet/ganttview.php | 3 ++- htdocs/theme/auguria/style.css.php | 4 ++-- htdocs/theme/bureau2crea/style.css.php | 4 ++-- htdocs/theme/cameleo/style.css.php | 2 +- htdocs/theme/eldy/style.css.php | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/htdocs/projet/ganttview.php b/htdocs/projet/ganttview.php index 1747d8b9356..02d2d678215 100644 --- a/htdocs/projet/ganttview.php +++ b/htdocs/projet/ganttview.php @@ -228,7 +228,8 @@ if (count($tasksarray)>0) if (! empty($conf->use_javascript_ajax)) { - print '
'."\n"; + //var_dump($_SESSION); + print '
'."\n"; include_once(DOL_DOCUMENT_ROOT.'/projet/ganttchart.php'); print '
'."\n"; } diff --git a/htdocs/theme/auguria/style.css.php b/htdocs/theme/auguria/style.css.php index 47df134444f..145bd986fd7 100644 --- a/htdocs/theme/auguria/style.css.php +++ b/htdocs/theme/auguria/style.css.php @@ -2061,7 +2061,7 @@ div.tdlineupdown { /* ============================================================================== */ div.scroll2 { - width: 582px !important; + width: px !important; } @@ -2187,4 +2187,4 @@ div.ecmjqft { close(); -?> \ No newline at end of file +?> diff --git a/htdocs/theme/bureau2crea/style.css.php b/htdocs/theme/bureau2crea/style.css.php index f400ef43d72..365367f33b1 100644 --- a/htdocs/theme/bureau2crea/style.css.php +++ b/htdocs/theme/bureau2crea/style.css.php @@ -2315,7 +2315,7 @@ form.listactionsfilter input[type="submit"] { /* ============================================================================== */ div.scroll2 { - width: 582px !important; + width: px !important; } @@ -2432,4 +2432,4 @@ div.ecmjqft { close(); -?> \ No newline at end of file +?> diff --git a/htdocs/theme/cameleo/style.css.php b/htdocs/theme/cameleo/style.css.php index ac5932e80fb..4e09c1c61c0 100644 --- a/htdocs/theme/cameleo/style.css.php +++ b/htdocs/theme/cameleo/style.css.php @@ -2131,7 +2131,7 @@ div.table-val-border-col { /* ============================================================================== */ div.scroll2 { - width: 582px !important; + width: px !important; } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 57ccf7c6e53..b7df82725d2 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2282,7 +2282,7 @@ a.cke_dialog_ui_button /* ============================================================================== */ div.scroll2 { - width: 582px !important; + width: px !important; } From ea0e05b07c38f84cf134655cffd4523334adb74d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Mon, 7 May 2012 18:26:05 +0200 Subject: [PATCH 05/23] Fix: Typo --- htdocs/core/tpl/freeproductline_create.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/tpl/freeproductline_create.tpl.php b/htdocs/core/tpl/freeproductline_create.tpl.php index bf4dc001e00..18f76aa105d 100644 --- a/htdocs/core/tpl/freeproductline_create.tpl.php +++ b/htdocs/core/tpl/freeproductline_create.tpl.php @@ -75,7 +75,7 @@ service->enabled && $dateSelector) { ?> > - global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="10"' : ' colspan="9s"'); ?>> + global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="10"' : ' colspan="9"'); ?>> trans('ServiceLimitedDuration').' '.$langs->trans('From').' '; echo $form->select_date('','date_start',$conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE,$conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE,1,"addproduct"); From 25196900207fde21a0d8ddada5063a6c637660a8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 May 2012 20:44:20 +0200 Subject: [PATCH 06/23] Fix: corrupted extra tables. --- htdocs/install/mysql/migration/repair.sql | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index 012f01bb2dd..d4ed30f7ce9 100644 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -36,9 +36,15 @@ update llx_projet_task set fk_projet = null where fk_projet not in (select rowid update llx_commande set fk_user_author = null where fk_user_author not in (select rowid from llx_user); +delete from llx_societe_extrafields where fk_object not in (select rowid from llx_societe); +delete from llx_adherent_extrafields where fk_object not in (select rowid from llx_adherent); +delete from llx_product_extrafields where fk_object not in (select rowid from llx_product); +--delete from llx_societe_commerciaux where fk_soc not in (select rowid from llx_societe); + DELETE FROM llx_boxes where box_id NOT IN (SELECT rowid FROM llx_boxes_def); -- VMYSQL4.1 DELETE T1 FROM llx_boxes_def as T1, llx_boxes_def as T2 where T1.entity = T2.entity AND T1.file = T2.file AND T1.note = T2.note and T1.rowid > T2.rowid -- VPGSQL8.2 DELETE FROM llx_boxes_def as T1 WHERE rowid NOT IN (SELECT min(rowid) FROM llx_boxes_def GROUP BY file, entity, note) + From 2bb87aabbebc00bda4b01e8e08aca2a65d1ab689 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 May 2012 20:46:18 +0200 Subject: [PATCH 07/23] Fix: bad br --- htdocs/contrat/fiche.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/htdocs/contrat/fiche.php b/htdocs/contrat/fiche.php index 70726cde310..46b27ec6a99 100644 --- a/htdocs/contrat/fiche.php +++ b/htdocs/contrat/fiche.php @@ -1254,14 +1254,13 @@ else print ''; print ''; - print ""; + print ""; print ''; // multiprix if($conf->global->PRODUIT_MULTIPRICES) $form->select_produits('','idprod',1,$conf->product->limit_size,$object->thirdparty->price_level); else $form->select_produits('','idprod',1,$conf->product->limit_size); - if (! $conf->global->PRODUIT_USE_SEARCH_TO_SELECT) print '
'; print ''; print ''; @@ -1270,7 +1269,7 @@ else print ''; print ''."\n"; - print ""; + print ""; print ''; print $langs->trans("DateStartPlanned").' '; $form->select_date('',"date_start",$usehm,$usehm,1,"addline"); From 50443f1977e266834d31cbfc66259024dd29b917 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 May 2012 15:39:20 +0200 Subject: [PATCH 08/23] Fix: Missing error management --- htdocs/fourn/facture/fiche.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/fiche.php b/htdocs/fourn/facture/fiche.php index 40d9de1a724..05ae30bcfd5 100644 --- a/htdocs/fourn/facture/fiche.php +++ b/htdocs/fourn/facture/fiche.php @@ -205,7 +205,8 @@ elseif($action == 'deletepaiement') { $paiementfourn = new PaiementFourn($db); $paiementfourn->fetch($_GET['paiement_id']); - $paiementfourn->delete(); + $result=$paiementfourn->delete(); + if ($result < 0) $mesg='
'.$paiementfourn->error.'
'; } } From 15efd9e8a1dea5a2e291899a0b03abc024225ded Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 May 2012 19:34:12 +0200 Subject: [PATCH 09/23] Fix: update price for pgsql --- htdocs/product/class/product.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 8380d390a96..b0a7b1626ab 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1790,6 +1790,7 @@ class Product extends CommonObject $sql.= ", ref_fourn"; $sql.= ", quantity"; $sql.= ", fk_user"; + $sql.= ", tva_tx"; $sql.= ") VALUES ("; $sql.= "'".$this->db->idate($now)."'"; $sql.= ", ".$conf->entity; @@ -1798,6 +1799,7 @@ class Product extends CommonObject $sql.= ", '".$ref_fourn."'"; $sql.= ", ".$quantity; $sql.= ", ".$user->id; + $sql.= ", 0"; $sql.= ")"; dol_syslog(get_class($this)."add_fournisseur sql=".$sql); From 425ca83a99ac4b14f3280b0955baf127c964ce97 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 May 2012 21:55:52 +0200 Subject: [PATCH 10/23] Fix: [ bug #397 ] Product VAT is not coming from buying price --- htdocs/core/lib/functions.lib.php | 34 +++++++++++++++++--------- htdocs/fourn/commande/fiche.php | 4 +-- htdocs/fourn/facture/fiche.php | 4 +-- htdocs/product/class/product.class.php | 22 +++++++++-------- 4 files changed, 38 insertions(+), 26 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index c76924f5822..aa9b5cff882 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2716,12 +2716,13 @@ function get_localtax($tva, $local, $societe_acheteuse="") * Return vat rate of a product in a particular selling country or default country * vat if product is unknown * - * @param int $idprod Id of product or 0 if not a predefined product - * @param string $countrycode Country code (FR, US, IT, ...) - * @return int <0 if KO, Vat rate if OK + * @param int $idprod Id of product or 0 if not a predefined product + * @param Societe $thirdparty_seller Thirdparty with a ->country_code defined (FR, US, IT, ...) + * @param int $idprodfournprice Id product_fournisseur_price (for supplier order/invoice) + * @return int <0 if KO, Vat rate if OK * TODO May be this should be better as a method of product class */ -function get_product_vat_for_country($idprod, $countrycode) +function get_product_vat_for_country($idprod, $thirdparty_seller, $idprodfournprice=0) { global $db,$mysoc; @@ -2734,9 +2735,17 @@ function get_product_vat_for_country($idprod, $countrycode) $product=new Product($db); $result=$product->fetch($idprod); - if ($mysoc->pays_code == $countrycode) // If selling country is ours + if ($mysoc->pays_code == $thirdparty_seller->country_code) // If selling country is ours { - $ret=$product->tva_tx; // Default vat of product we defined + if ($idprodfournprice > 0) // We want vat for product for a supplier order or invoice + { + $product->get_buyprice($idprodfournprice,0,0,0); + $ret=$product->vatrate_supplier; + } + else + { + $ret=$product->tva_tx; // Default vat of product we defined + } $found=1; } else @@ -2752,7 +2761,7 @@ function get_product_vat_for_country($idprod, $countrycode) // If vat of product for the country not found or not defined, we return higher vat of country. $sql.="SELECT taux as vat_rate"; $sql.=" FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p"; - $sql.=" WHERE t.active=1 AND t.fk_pays = p.rowid AND p.code='".$countrycode."'"; + $sql.=" WHERE t.active=1 AND t.fk_pays = p.rowid AND p.code='".$thirdparty_seller->country_code."'"; $sql.=" ORDER BY t.taux DESC, t.recuperableonly ASC"; $sql.=$db->plimit(1); @@ -2806,16 +2815,17 @@ function get_product_localtax_for_country($idprod, $local, $countrycode) * @param Societe $societe_vendeuse Objet societe vendeuse * @param Societe $societe_acheteuse Objet societe acheteuse * @param int $idprod Id product + * @param int $idprodfournprice Id product_fournisseur_price (for supplier order/invoice) * @return float Taux de tva a appliquer, -1 si ne peut etre determine */ -function get_default_tva($societe_vendeuse, $societe_acheteuse, $idprod=0) +function get_default_tva($societe_vendeuse, $societe_acheteuse, $idprod=0, $idprodfournprice=0) { global $conf; if (!is_object($societe_vendeuse)) return -1; if (!is_object($societe_acheteuse)) return -1; - dol_syslog("get_default_tva: seller use vat=".$societe_vendeuse->tva_assuj.", seller country=".$societe_vendeuse->pays_code.", seller in cee=".$societe_vendeuse->isInEEC().", buyer country=".$societe_acheteuse->pays_code.", buyer in cee=".$societe_acheteuse->isInEEC().", idprod=".$idprod.", SERVICE_ARE_ECOMMERCE_200238EC=".$conf->global->SERVICES_ARE_ECOMMERCE_200238EC); + dol_syslog("get_default_tva: seller use vat=".$societe_vendeuse->tva_assuj.", seller country=".$societe_vendeuse->pays_code.", seller in cee=".$societe_vendeuse->isInEEC().", buyer country=".$societe_acheteuse->pays_code.", buyer in cee=".$societe_acheteuse->isInEEC().", idprod=".$idprod.", idprodfournprice=".$idprodfournprice.", SERVICE_ARE_ECOMMERCE_200238EC=".$conf->global->SERVICES_ARE_ECOMMERCE_200238EC); // Si vendeur non assujeti a TVA (tva_assuj vaut 0/1 ou franchise/reel) if (is_numeric($societe_vendeuse->tva_assuj) && ! $societe_vendeuse->tva_assuj) @@ -2836,7 +2846,7 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $idprod=0) if ($societe_vendeuse->country_code == $societe_acheteuse->country_code) // Warning ->country_code not always defined { //print 'VATRULE 3'; - return get_product_vat_for_country($idprod,$societe_vendeuse->country_code); + return get_product_vat_for_country($idprod,$societe_vendeuse,$idprodfournprice); } // Si (vendeur et acheteur dans Communaute europeenne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par defaut=0 (La TVA doit etre paye par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de regle. @@ -2855,7 +2865,7 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $idprod=0) else { //print 'VATRULE 5'; - return get_product_vat_for_country($idprod,$societe_vendeuse->country_code); + return get_product_vat_for_country($idprod,$societe_vendeuse,$idprodfournprice); } } @@ -2867,7 +2877,7 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $idprod=0) if (! $societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC() && ! $societe_acheteuse->isACompany()) { //print 'VATRULE 6'; - return get_product_vat_for_country($idprod,$societe_acheteuse->country_code); + return get_product_vat_for_country($idprod,$societe_acheteuse,$idprodfournprice); } } diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php index 55221713196..aa1e78bc447 100644 --- a/htdocs/fourn/commande/fiche.php +++ b/htdocs/fourn/commande/fiche.php @@ -156,7 +156,7 @@ else if ($action == 'addline' && $user->rights->fournisseur->commande->creer) $qty = $_POST['qty'] ? $_POST['qty'] : $_POST['pqty']; $productsupplier = new ProductFournisseur($db); - $idprod=$productsupplier->get_buyprice($_POST['idprodfournprice'], $qty); + $idprod=$productsupplier->get_buyprice($_POST['idprodfournprice'], $qty); // Just to see if a price exists for the quantity. Not used to found vat if ($idprod > 0) { @@ -172,7 +172,7 @@ else if ($action == 'addline' && $user->rights->fournisseur->commande->creer) $remise_percent = $_POST["remise_percent"] ? $_POST["remise_percent"] : $_POST["p_remise_percent"]; - $tva_tx = get_default_tva($object->thirdparty,$mysoc,$productsupplier->id); + $tva_tx = get_default_tva($object->thirdparty, $mysoc, $productsupplier->id, $_POST['idprodfournprice']); $type = $productsupplier->type; // Local Taxes diff --git a/htdocs/fourn/facture/fiche.php b/htdocs/fourn/facture/fiche.php index 05ae30bcfd5..42db5712af9 100644 --- a/htdocs/fourn/facture/fiche.php +++ b/htdocs/fourn/facture/fiche.php @@ -459,7 +459,7 @@ elseif ($action == 'addline') if ($_POST['idprodfournprice']) // > 0 or -1 { $product=new Product($db); - $idprod=$product->get_buyprice($_POST['idprodfournprice'], $_POST['qty']); + $idprod=$product->get_buyprice($_POST['idprodfournprice'], $_POST['qty']); // Just to see if a price exists for the quantity. Not used to found vat if ($idprod > 0) { @@ -469,7 +469,7 @@ elseif ($action == 'addline') // $label = '['.$product->ref.'] - '. $product->libelle; $label = $product->description; - $tvatx=get_default_tva($object->thirdparty,$mysoc,$product->id); + $tvatx=get_default_tva($object->thirdparty, $mysoc, $product->id, $_POST['idprodfournprice']); $localtax1tx= get_localtax($tvatx, 1, $mysoc); $localtax2tx= get_localtax($tvatx, 2, $mysoc); diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index b0a7b1626ab..1153e2674fe 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -807,12 +807,12 @@ class Product extends CommonObject { $result = 0; $sql = "SELECT pfp.rowid, pfp.price as price, pfp.quantity as quantity,"; - $sql.= " pfp.fk_product, pfp.ref_fourn, pfp.fk_soc"; + $sql.= " pfp.fk_product, pfp.ref_fourn, pfp.fk_soc, pfp.tva_tx"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= " WHERE pfp.rowid = ".$prodfournprice; - $sql.= " AND pfp.quantity <= ".$qty; + if ($qty) $sql.= " AND pfp.quantity <= ".$qty; - dol_syslog(get_class($this)."get_buyprice sql=".$sql); + dol_syslog(get_class($this)."::get_buyprice sql=".$sql); $resql = $this->db->query($sql); if ($resql) { @@ -821,15 +821,16 @@ class Product extends CommonObject { $this->buyprice = $obj->price; // \deprecated $this->fourn_pu = $obj->price / $obj->quantity; // Prix unitaire du produit pour le fournisseur $fourn_id - $this->ref_fourn = $obj->ref_fourn; + $this->ref_fourn = $obj->ref_fourn; // Ref supplier + $this->vatrate_supplier = $obj->tva_tx; // Vat ref supplier $result=$obj->fk_product; return $result; } else { // On refait le meme select sur la ref et l'id du produit - $sql = "SELECT pfp.price as price, pfp.quantity as quantity, pfp.fk_soc,"; - $sql.= " pfp.fk_product, pfp.ref_fourn"; + $sql = "SELECT pfp.rowid, pfp.price as price, pfp.quantity as quantity, pfp.fk_soc,"; + $sql.= " pfp.fk_product, pfp.ref_fourn, pfp.tva_tx"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= " WHERE pfp.ref_fourn = '".$fourn_ref."'"; $sql.= " AND pfp.fk_product = ".$product_id; @@ -837,7 +838,7 @@ class Product extends CommonObject $sql.= " ORDER BY pfp.quantity DESC"; $sql.= " LIMIT 1"; - dol_syslog(get_class($this)."get_buyprice sql=".$sql); + dol_syslog(get_class($this)."::get_buyprice sql=".$sql); $resql = $this->db->query($sql); if ($resql) { @@ -846,7 +847,8 @@ class Product extends CommonObject { $this->buyprice = $obj->price; // \deprecated $this->fourn_pu = $obj->price / $obj->quantity; // Prix unitaire du produit pour le fournisseur $fourn_id - $this->ref_fourn = $obj->ref_fourn; + $this->ref_fourn = $obj->ref_fourn; // Ref supplier + $this->vatrate_supplier = $obj->tva_tx; // Vat ref supplier $result=$obj->fk_product; return $result; } @@ -858,7 +860,7 @@ class Product extends CommonObject else { $this->error=$this->db->error(); - dol_syslog("Product:get_buyprice ".$this->error, LOG_ERR); + dol_syslog(get_class($this)."::get_buyprice ".$this->error, LOG_ERR); return -3; } } @@ -866,7 +868,7 @@ class Product extends CommonObject else { $this->error=$this->db->error(); - dol_syslog("Product:get_buyprice ".$this->error, LOG_ERR); + dol_syslog(get_class($this)."::get_buyprice ".$this->error, LOG_ERR); return -2; } } From b623392062f5d301b71da0a793329390480b7144 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 May 2012 22:58:54 +0200 Subject: [PATCH 11/23] Fix: Load lang --- htdocs/user/group/perms.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/user/group/perms.php b/htdocs/user/group/perms.php index 175f005646a..ebc6f40010b 100644 --- a/htdocs/user/group/perms.php +++ b/htdocs/user/group/perms.php @@ -29,6 +29,7 @@ require_once(DOL_DOCUMENT_ROOT.'/user/class/usergroup.class.php'); require_once(DOL_DOCUMENT_ROOT."/core/lib/usergroups.lib.php"); $langs->load("users"); +$langs->load("admin"); $id=GETPOST('id','int'); $action=GETPOST("action"); From f47d6c71ede240acb590619e529289529d9c3b24 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 May 2012 23:56:51 +0200 Subject: [PATCH 12/23] Fix: Regression in packager --- build/makepack-dolibarr.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index cd13e6fcc1b..7235f2d4226 100644 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -166,7 +166,7 @@ $atleastonerpm=0; foreach my $target (keys %CHOOSEDTARGET) { if ($target =~ /RPM/i) { - if ($atleastonerpm && ! $ENV{"DESTI"}) + if ($atleastonerpm && ($DESTI eq "$SOURCE/build")) { print "Error: You asked creation of several rpms. Because all rpm have same name, you must defined an environment variable DESTI to tell packager where it can create subdirs for each generated package.\n"; exit; From 84a09808fc750e2ceac5b9ccb199d1e2e9cde1db Mon Sep 17 00:00:00 2001 From: simnandez Date: Wed, 9 May 2012 10:29:12 +0200 Subject: [PATCH 13/23] Fix:[ bug #399 ] Bad calculation of local taxes in update line products --- htdocs/core/lib/functions.lib.php | 5 ++--- htdocs/fourn/commande/fiche.php | 4 ++-- htdocs/fourn/facture/fiche.php | 30 +++++++++++++----------------- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index aa9b5cff882..a745e8e10a3 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2682,9 +2682,8 @@ function get_localtax($tva, $local, $societe_acheteuse="") { global $db, $conf, $mysoc; - // TODO Can we uncomment this ? - //if ($local == 1 && empty($conf->global->FACTURE_LOCAL_TAX1_OPTION)) return; - //if ($local == 2 && empty($conf->global->FACTURE_LOCAL_TAX2_OPTION)) return; + if ($local == 1 && ! $mysoc->localtax1_assuj) return 0; + if ($local == 2 && ! $mysoc->localtax2_assuj) return 0; $code_pays=$mysoc->pays_code; diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php index aa1e78bc447..5902fabe52b 100644 --- a/htdocs/fourn/commande/fiche.php +++ b/htdocs/fourn/commande/fiche.php @@ -176,8 +176,8 @@ else if ($action == 'addline' && $user->rights->fournisseur->commande->creer) $type = $productsupplier->type; // Local Taxes - $localtax1_tx= get_localtax($tva_tx, 1, $mysoc); - $localtax2_tx= get_localtax($tva_tx, 2, $mysoc); + $localtax1_tx= get_localtax($tva_tx, 1, $object->thirdparty); + $localtax2_tx= get_localtax($tva_tx, 2, $object->thirdparty); $result=$object->addline( $desc, diff --git a/htdocs/fourn/facture/fiche.php b/htdocs/fourn/facture/fiche.php index 42db5712af9..ad987627352 100644 --- a/htdocs/fourn/facture/fiche.php +++ b/htdocs/fourn/facture/fiche.php @@ -2,9 +2,9 @@ /* Copyright (C) 2002-2005 Rodolphe Quiedeville * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2004 Christophe Combelles - * Copyright (C) 2005 Marc Barilley - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2010-2011 Juanjo Menent + * Copyright (C) 2005 Marc Barilley + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2010-2012 Juanjo Menent * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -413,7 +413,7 @@ elseif ($action == 'update_line') $pu=$_POST['puttc']; $price_base_type='TTC'; } - + if ($_POST['idprod']) { $prod = new Product($db); @@ -422,21 +422,17 @@ elseif ($action == 'update_line') if (trim($_POST['desc']) != trim($label)) $label=$_POST['desc']; $type = $prod->type; - $localtax1tx = $prod->localtax1_tx; - $localtax2tx = $prod->localtax2_tx; } else { - if ($object->socid) - { - $societe=new Societe($db); - $societe->fetch($object->socid); - } + $label = $_POST['desc']; $type = $_POST["type"]?$_POST["type"]:0; - $localtax1tx= get_localtax($_POST['tauxtva'], 1, $mysoc); - $localtax2tx= get_localtax($_POST['tauxtva'], 2, $mysoc); + } + + $localtax1tx= get_localtax($_POST['tauxtva'], 1, $object->thirdparty); + $localtax2tx= get_localtax($_POST['tauxtva'], 2, $object->thirdparty); $result=$object->updateline($_GET['lineid'], $label, $pu, $_POST['tauxtva'], $localtax1tx, $localtax2tx, $_POST['qty'], $_POST['idprod'], $price_base_type, 0, $type); if ($result >= 0) @@ -471,8 +467,8 @@ elseif ($action == 'addline') $tvatx=get_default_tva($object->thirdparty, $mysoc, $product->id, $_POST['idprodfournprice']); - $localtax1tx= get_localtax($tvatx, 1, $mysoc); - $localtax2tx= get_localtax($tvatx, 2, $mysoc); + $localtax1tx= get_localtax($tvatx, 1, $object->thirdparty); + $localtax2tx= get_localtax($tvatx, 2, $object->thirdparty); $type = $product->type; @@ -489,8 +485,8 @@ elseif ($action == 'addline') else { $tauxtva = price2num($_POST['tauxtva']); - $localtax1tx= get_localtax($tauxtva, 1, $mysoc); - $localtax2tx= get_localtax($tauxtva, 2, $mysoc); + $localtax1tx= get_localtax($tauxtva, 1, $object->thirdparty); + $localtax2tx= get_localtax($tauxtva, 2, $object->thirdparty); if (! $_POST['dp_desc']) { From b9b2dbe9b1aae5173aa52fb0ee83ecc44b6a1a79 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 9 May 2012 12:42:37 +0200 Subject: [PATCH 14/23] Fix: more compatibility with multicompany --- ...face_20_modPaypal_PaypalWorkflow.class.php | 73 +++++++++++-------- htdocs/public/members/new.php | 8 +- htdocs/public/paypal/newpayment.php | 13 ++++ htdocs/public/paypal/paymentko.php | 12 ++- htdocs/public/paypal/paymentok.php | 12 ++- 5 files changed, 83 insertions(+), 35 deletions(-) diff --git a/htdocs/core/triggers/interface_20_modPaypal_PaypalWorkflow.class.php b/htdocs/core/triggers/interface_20_modPaypal_PaypalWorkflow.class.php index aacd600f478..dc577289df6 100755 --- a/htdocs/core/triggers/interface_20_modPaypal_PaypalWorkflow.class.php +++ b/htdocs/core/triggers/interface_20_modPaypal_PaypalWorkflow.class.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2011-2012 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -102,35 +102,48 @@ class InterfacePaypalWorkflow if ($action == 'PAYPAL_PAYMENT_OK') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". source=".$object->source." ref=".$object->ref); - - require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php"); - - $soc = new Societe($this->db); - - // Parse element/subelement (ex: project_task) - $element = $path = $filename = $object->source; - if (preg_match('/^([^_]+)_([^_]+)/i',$object->source,$regs)) - { - $element = $path = $regs[1]; - $filename = $regs[2]; - } - // For compatibility - if ($element == 'order') { $path = $filename = 'commande'; } - if ($element == 'invoice') { $path = 'compta/facture'; $filename = 'facture'; } - - dol_include_once('/'.$path.'/class/'.$filename.'.class.php'); - - $classname = ucfirst($filename); - $obj = new $classname($this->db); - - $ret = $obj->fetch('',$object->ref); - if ($ret < 0) return -1; - - // Add payer id - $soc->setValueFrom('ref_int', $object->payerID, 'societe', $obj->socid); - - // Add transaction id - $obj->setValueFrom('ref_int',$object->resArray["TRANSACTIONID"]); + + if ($object->source == 'membersubscription') + { + //require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherents.class.php"); + + // TODO add subscription treatment + } + else + { + require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php"); + + $soc = new Societe($this->db); + + // Parse element/subelement (ex: project_task) + $element = $path = $filename = $object->source; + if (preg_match('/^([^_]+)_([^_]+)/i',$object->source,$regs)) + { + $element = $path = $regs[1]; + $filename = $regs[2]; + } + // For compatibility + if ($element == 'order') { + $path = $filename = 'commande'; + } + if ($element == 'invoice') { + $path = 'compta/facture'; $filename = 'facture'; + } + + dol_include_once('/'.$path.'/class/'.$filename.'.class.php'); + + $classname = ucfirst($filename); + $obj = new $classname($this->db); + + $ret = $obj->fetch('',$object->ref); + if ($ret < 0) return -1; + + // Add payer id + $soc->setValueFrom('ref_int', $object->payerID, 'societe', $obj->socid); + + // Add transaction id + $obj->setValueFrom('ref_int',$object->resArray["TRANSACTIONID"]); + } } diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index b63a99d19a8..9a82627c3bb 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -274,12 +274,18 @@ if ($action == 'add') $urlback=DOL_MAIN_URL_ROOT.'/public/paybox/newpayment.php?from=membernewform&source=membersubscription&ref='.$adh->ref; if (price2num(GETPOST('amount'))) $urlback.='&amount='.price2num(GETPOST('amount')); if (GETPOST('email')) $urlback.='&email='.urlencode(GETPOST('email')); + if (! empty($entity)) $urlback.='&entity='.$entity; } else if ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'paypal') { $urlback=DOL_MAIN_URL_ROOT.'/public/paypal/newpayment.php?from=membernewform&source=membersubscription&ref='.$adh->ref; if (price2num(GETPOST('amount'))) $urlback.='&amount='.price2num(GETPOST('amount')); if (GETPOST('email')) $urlback.='&email='.urlencode(GETPOST('email')); + if (! empty($conf->global->PAYPAL_SECURITY_TOKEN) && ! empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) + { + $urlback.='&securekey='.dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'membersubscription' . $adh->ref, 2); + } + if (! empty($entity)) $urlback.='&entity='.$entity; } else { @@ -368,7 +374,7 @@ jQuery(document).ready(function () { // Print form print '
'."\n"; print ''; -print ''; +print ''; print ''; print '
'; diff --git a/htdocs/public/paypal/newpayment.php b/htdocs/public/paypal/newpayment.php index f2f8842843a..636af99bd30 100755 --- a/htdocs/public/paypal/newpayment.php +++ b/htdocs/public/paypal/newpayment.php @@ -27,6 +27,13 @@ define("NOLOGIN",1); // This means this output page does not require to be logged. define("NOCSRFCHECK",1); // We accept to go on this page from external web site. +// For MultiCompany module +$entity=(! empty($_GET['entity']) ? (int) $_GET['entity'] : (! empty($_POST['entity']) ? (int) $_POST['entity'] : 1)); +if (is_int($entity)) +{ + define("DOLENTITY", $entity); +} + require("../../main.inc.php"); require_once(DOL_DOCUMENT_ROOT."/paypal/lib/paypal.lib.php"); require_once(DOL_DOCUMENT_ROOT."/paypal/lib/paypalfunctions.lib.php"); @@ -113,6 +120,11 @@ if (! empty($SECUREKEY)) $urlok.='securekey='.urlencode($SECUREKEY).'&'; $urlko.='securekey='.urlencode($SECUREKEY).'&'; } +if (! empty($entity)) +{ + $urlok.='entity='.urlencode($entity).'&'; + $urlko.='entity='.urlencode($entity).'&'; +} $urlok=preg_replace('/&$/','',$urlok); // Remove last & $urlko=preg_replace('/&$/','',$urlko); // Remove last & @@ -255,6 +267,7 @@ print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; +print ''; print "\n"; print ''."\n"; print ''."\n"; diff --git a/htdocs/public/paypal/paymentko.php b/htdocs/public/paypal/paymentko.php index 57382f4309c..243716ca70f 100755 --- a/htdocs/public/paypal/paymentko.php +++ b/htdocs/public/paypal/paymentko.php @@ -1,6 +1,7 @@ - * Copyright (C) 2006-2009 Laurent Destailleur +/* Copyright (C) 2001-2002 Rodolphe Quiedeville + * Copyright (C) 2006-2009 Laurent Destailleur + * Copyright (C) 2012 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,6 +29,13 @@ define("NOLOGIN",1); // This means this output page does not require to be logged. define("NOCSRFCHECK",1); // We accept to go on this page from external web site. +// For MultiCompany module +$entity=(! empty($_GET['entity']) ? (int) $_GET['entity'] : (! empty($_POST['entity']) ? (int) $_POST['entity'] : 1)); +if (is_int($entity)) +{ + define("DOLENTITY", $entity); +} + require("../../main.inc.php"); require_once(DOL_DOCUMENT_ROOT."/paypal/lib/paypal.lib.php"); require_once(DOL_DOCUMENT_ROOT."/paypal/lib/paypalfunctions.lib.php"); diff --git a/htdocs/public/paypal/paymentok.php b/htdocs/public/paypal/paymentok.php index f121ec9f83d..d9d4cfac729 100755 --- a/htdocs/public/paypal/paymentok.php +++ b/htdocs/public/paypal/paymentok.php @@ -1,6 +1,7 @@ - * Copyright (C) 2006-2009 Laurent Destailleur +/* Copyright (C) 2001-2002 Rodolphe Quiedeville + * Copyright (C) 2006-2009 Laurent Destailleur + * Copyright (C) 2012 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,6 +29,13 @@ define("NOLOGIN",1); // This means this output page does not require to be logged. define("NOCSRFCHECK",1); // We accept to go on this page from external web site. +// For MultiCompany module +$entity=(! empty($_GET['entity']) ? (int) $_GET['entity'] : (! empty($_POST['entity']) ? (int) $_POST['entity'] : 1)); +if (is_int($entity)) +{ + define("DOLENTITY", $entity); +} + require("../../main.inc.php"); require_once(DOL_DOCUMENT_ROOT."/paypal/lib/paypal.lib.php"); require_once(DOL_DOCUMENT_ROOT."/paypal/lib/paypalfunctions.lib.php"); From 49c7a1f2b4de548079f8dd95eccb0a3be47cbb09 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 May 2012 15:21:43 +0200 Subject: [PATCH 15/23] Fix: Fails to delete member --- htdocs/adherents/class/adherent.class.php | 16 ++++++++++------ htdocs/adherents/fiche.php | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 709d7690c74..de6a320e2b9 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -185,12 +185,12 @@ class Adherent extends CommonObject function makeSubstitution($text) { global $langs; - + $birthday = dol_print_date($this->naiss,'day'); - + $msgishtml = 0; if (dol_textishtml($text,1)) $msgishtml = 1; - + $infos=''; if ($this->civilite_id) $infos.= $langs->transnoentities("UserTitle").": ".$this->getCivilityLabel(1)."\n"; $infos.= $langs->transnoentities("id").": ".$this->id."\n"; @@ -207,7 +207,7 @@ class Adherent extends CommonObject $infos.= $langs->transnoentities("Birthday").": ".$birthday."\n"; $infos.= $langs->transnoentities("Photo").": ".$this->photo."\n"; $infos.= $langs->transnoentities("Public").": ".yn($this->public); - + // Substitutions $substitutionarray=array( '%DOL_MAIN_URL_ROOT%'=>DOL_MAIN_URL_ROOT, @@ -227,9 +227,9 @@ class Adherent extends CommonObject '%LOGIN%'=>$msgishtml?dol_htmlentitiesbr($this->login):$this->login, '%PASSWORD%'=>$msgishtml?dol_htmlentitiesbr($this->pass):$this->pass ); - + complete_substitutions_array($substitutionarray, $langs); - + return make_substitutions($text,$substitutionarray); } @@ -696,6 +696,10 @@ class Adherent extends CommonObject $resql=$this->db->query($sql); if ($resql) { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_member WHERE fk_member = ".$rowid; + dol_syslog(get_class($this)."::delete sql=".$sql); + $resql=$this->db->query($sql); + $sql = "DELETE FROM ".MAIN_DB_PREFIX."cotisation WHERE fk_adherent = ".$rowid; dol_syslog(get_class($this)."::delete sql=".$sql); $resql=$this->db->query($sql); diff --git a/htdocs/adherents/fiche.php b/htdocs/adherents/fiche.php index cd15b82eb42..e1c0b73fa70 100644 --- a/htdocs/adherents/fiche.php +++ b/htdocs/adherents/fiche.php @@ -1506,7 +1506,7 @@ if ($rowid && $action != 'edit') } // Action SPIP - if ($conf->global->ADHERENT_USE_SPIP) + if ($conf->mailmanspip->enabled && $conf->global->ADHERENT_USE_SPIP) { $isinspip=$object->is_in_spip(); if ($isinspip == 1) From d53a56f13f1f0f413a7cf1f123664a9ebbbd32d9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 May 2012 16:02:26 +0200 Subject: [PATCH 16/23] Fix: Missing extrafields --- htdocs/adherents/fiche.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/htdocs/adherents/fiche.php b/htdocs/adherents/fiche.php index e1c0b73fa70..3b3f1305484 100644 --- a/htdocs/adherents/fiche.php +++ b/htdocs/adherents/fiche.php @@ -819,8 +819,8 @@ if ($action == 'edit') $res=$object->fetch($rowid); if ($res < 0) { dol_print_error($db,$object->error); exit; } - //$res=$object->fetch_optionals($object->id,$extralabels); - //if ($res < 0) { dol_print_error($db); exit; } + $res=$object->fetch_optionals($object->id,$extralabels); + if ($res < 0) { dol_print_error($db); exit; } $adht = new AdherentType($db); $adht->fetch($object->typeid); @@ -1052,7 +1052,6 @@ if ($rowid && $action != 'edit') /* */ /* ************************************************************************** */ - //$object = new Adherent($db); $res=$object->fetch($rowid); if ($res < 0) { dol_print_error($db,$object->error); exit; } $res=$object->fetch_optionals($object->id,$extralabels); From 32d2b0a9d620119b48b9bba6c5574d37f476e3ff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 May 2012 16:18:59 +0200 Subject: [PATCH 17/23] Fix: Warning GETPOST with alpha and int must be used ONLY if content is not a free text. --- htdocs/adherents/admin/adherent.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/adherents/admin/adherent.php b/htdocs/adherents/admin/adherent.php index c636200bdf4..4a2ccf210f6 100644 --- a/htdocs/adherents/admin/adherent.php +++ b/htdocs/adherents/admin/adherent.php @@ -50,7 +50,7 @@ $action = GETPOST('action','alpha'); if ($action == 'update' || $action == 'add') { $constname=GETPOST('constname','alpha'); - $constvalue=(GETPOST('constvalue_'.$constname,'alpha') ? GETPOST('constvalue_'.$constname,'alpha') : GETPOST('constvalue','alpha')); + $constvalue=(GETPOST('constvalue_'.$constname) ? GETPOST('constvalue_'.$constname) : GETPOST('constvalue')); if (($constname=='ADHERENT_CARD_TYPE' || $constname=='ADHERENT_ETIQUETTE_TYPE') && $constvalue == -1) $constvalue=''; if ($constname=='ADHERENT_LOGIN_NOT_REQUIRED') // Invert choice @@ -60,7 +60,7 @@ if ($action == 'update' || $action == 'add') } $consttype=GETPOST('consttype','alpha'); - $constnote=GETPOST('constnote','alpha'); + $constnote=GETPOST('constnote'); $res=dolibarr_set_const($db,$constname,$constvalue,$type[$consttype],0,$constnote,$conf->entity); if (! $res > 0) $error++; @@ -78,7 +78,7 @@ if ($action == 'update' || $action == 'add') // Action activation d'un sous module du module adherent if ($action == 'set') { - $result=dolibarr_set_const($db, GETPOST('name','alpha'),GETPOST('value','alpha'),'',0,'',$conf->entity); + $result=dolibarr_set_const($db, GETPOST('name','alpha'),GETPOST('value'),'',0,'',$conf->entity); if ($result < 0) { print $db->error(); @@ -271,4 +271,4 @@ dol_fiche_end(); llxFooter(); $db->close(); -?> \ No newline at end of file +?> From e72213860873905a657ca38e429e7e37fd219832 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 May 2012 16:45:15 +0200 Subject: [PATCH 18/23] Fix: regression sql error Conflicts: htdocs/core/modules/mailings/modules_mailings.php From ca67f976b608293ad83e19af626e6041e830765e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 May 2012 17:15:44 +0200 Subject: [PATCH 19/23] Fix: Validate broken, missing warning on bad email. --- htdocs/comm/mailing/fiche.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/comm/mailing/fiche.php b/htdocs/comm/mailing/fiche.php index d0708c96db5..e692cecb09b 100644 --- a/htdocs/comm/mailing/fiche.php +++ b/htdocs/comm/mailing/fiche.php @@ -681,14 +681,12 @@ else $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$object->id,$langs->trans("ValidMailing"),$langs->trans("ConfirmValidMailing"),"confirm_valid",'','',1); if ($ret == 'html') print '
'; } - // Confirm reset else if ($action == 'reset') { $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$object->id,$langs->trans("ResetMailing"),$langs->trans("ConfirmResetMailing",$object->ref),"confirm_reset",'','',2); if ($ret == 'html') print '
'; } - // Confirm delete else if ($action == 'delete') { @@ -696,7 +694,8 @@ else if ($ret == 'html') print '
'; } - else if ($action != 'edit') + + if ($action != 'edit') { /* * Mailing en mode visu @@ -747,12 +746,12 @@ else // From print ''.$form->editfieldkey("MailFrom",'email_from',$object->email_from,$object,$user->rights->mailing->creer && $object->statut < 3,'string').''; - print $form->editfieldval("MailFrom",'email_from',$object->email_from,$object,$user->rights->mailing->creer && $object->statut < 3,'string'); + print $form->editfieldval("MailFrom",'email_from',$object->email_from,$object,$user->rights->mailing->creer && $object->statut < 3,'email'); print ''; // Errors to print ''.$form->editfieldkey("MailErrorsTo",'email_errorsto',$object->email_errorsto,$object,$user->rights->mailing->creer && $object->statut < 3,'string').''; - print $form->editfieldval("MailErrorsTo",'email_errorsto',$object->email_errorsto,$object,$user->rights->mailing->creer && $object->statut < 3,'string'); + print $form->editfieldval("MailErrorsTo",'email_errorsto',$object->email_errorsto,$object,$user->rights->mailing->creer && $object->statut < 3,'email'); print ''; // Status @@ -955,9 +954,13 @@ else print ''; + // Ref print ''; + // Topic print ''; + // From print ''; + // To print ''; // Status From 9f770d862de4a148270b8b13166b7cc3a92fbbfb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 May 2012 17:44:52 +0200 Subject: [PATCH 20/23] Fix: Not escaped html value --- htdocs/core/lib/admin.lib.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 272a4b2ffa2..88732bb8d66 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -481,7 +481,6 @@ function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $not //print "sql".$value."-".pg_escape_string($value)."-".$sql;exit; //print "xx".$db->escape($value); - //print $sql;exit; dol_syslog("admin.lib::dolibarr_set_const sql=".$sql, LOG_DEBUG); $resql=$db->query($sql); } @@ -1036,7 +1035,7 @@ function form_constantes($tableau) print ''; print ''; print ''; - print ''; + print ''; print $langs->trans("Desc".$const) != ("Desc".$const) ? $langs->trans("Desc".$const) : ($obj->note?$obj->note:$const); @@ -1190,4 +1189,4 @@ function delDocumentModel($name, $type) } } -?> \ No newline at end of file +?> From 60c77f3d503d424025ebc643ed96c273f16f54f6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 May 2012 17:58:38 +0200 Subject: [PATCH 21/23] Fix: Bad warning --- htdocs/comm/mailing/fiche.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/comm/mailing/fiche.php b/htdocs/comm/mailing/fiche.php index e692cecb09b..240f8e5c349 100644 --- a/htdocs/comm/mailing/fiche.php +++ b/htdocs/comm/mailing/fiche.php @@ -762,7 +762,7 @@ else print $langs->trans("TotalNbOfDistinctRecipients"); print '
'.$langs->trans("Ref").''.$object->id.'
'.$langs->trans("MailTitle").''.$object->titre.'
'.$langs->trans("MailFrom").''.dol_print_email($object->email_from,0,0,0,0,1).'
'.$langs->trans("MailErrorsTo").''.dol_print_email($object->email_errorsto,0,0,0,0,1).'
'; $nbemail = ($object->nbemail?$object->nbemail:img_warning('').' '.$langs->trans("NoTargetYet").''); - if (!empty($conf->global->MAILING_LIMIT_SENDBYWEB) && is_numeric($nbemail) && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail) + if ($object->statut != 3 && !empty($conf->global->MAILING_LIMIT_SENDBYWEB) && is_numeric($nbemail) && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail) { if ($conf->global->MAILING_LIMIT_SENDBYWEB > 0) { From 7700293bdfaee23c416c3d5c48199f4a340cbede Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 May 2012 18:16:09 +0200 Subject: [PATCH 22/23] Fix: Bad warning --- htdocs/comm/mailing/liste.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/comm/mailing/liste.php b/htdocs/comm/mailing/liste.php index 9cd6ed5e064..74cf10241e2 100644 --- a/htdocs/comm/mailing/liste.php +++ b/htdocs/comm/mailing/liste.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2005-2012 Laurent Destailleur * Copyright (C) 2005-2010 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -155,7 +155,7 @@ if ($result) { print ''; $nbemail = $obj->nbemail; - if (!empty($conf->global->MAILING_LIMIT_SENDBYWEB) && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail) + if ($obj->statut != 3 && !empty($conf->global->MAILING_LIMIT_SENDBYWEB) && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail) { $text=$langs->trans('LimitSendingEmailing',$conf->global->MAILING_LIMIT_SENDBYWEB); print $form->textwithpicto($nbemail,$text,1,'warning'); @@ -192,7 +192,7 @@ else dol_print_error($db); } -$db->close(); - llxFooter(); + +$db->close(); ?> From bd0be8f35896b13403a5661e18e595511c87777f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 May 2012 18:48:16 +0200 Subject: [PATCH 23/23] Fix: escape html tag value --- htdocs/core/lib/admin.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 88732bb8d66..50d8dd7e123 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -1103,7 +1103,7 @@ function form_constantes($tableau) } else { - print ''; + print ''; print ''; print ''; }