Browse Source

Merge branch '11.0' of git@github.com:Dolibarr/dolibarr.git into develop

Conflicts:
	htdocs/core/lib/company.lib.php
	htdocs/core/lib/security2.lib.php
	htdocs/core/modules/commande/doc/pdf_einstein.modules.php
	htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php
	htdocs/core/modules/expedition/doc/pdf_espadon.modules.php
	htdocs/core/modules/expensereport/doc/pdf_standard.modules.php
	htdocs/core/modules/facture/doc/pdf_sponge.modules.php
	htdocs/core/modules/livraison/doc/pdf_typhon.modules.php
	htdocs/core/modules/propale/doc/pdf_cyan.modules.php
	htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php
	htdocs/core/modules/supplier_order/pdf/pdf_cornas.modules.php
	htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php
	htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php
	htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php
Laurent Destailleur 5 years ago
parent
commit
1875b6a49b
38 changed files with 278 additions and 76 deletions
  1. 1 1
      htdocs/categories/viewcat.php
  2. 2 1
      htdocs/compta/cashcontrol/cashcontrol_card.php
  3. 3 1
      htdocs/core/boxes/box_project.php
  4. 6 2
      htdocs/core/lib/company.lib.php
  5. 1 1
      htdocs/core/lib/security2.lib.php
  6. 1 1
      htdocs/core/lib/ticket.lib.php
  7. 5 1
      htdocs/core/modules/commande/doc/pdf_einstein.modules.php
  8. 11 2
      htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php
  9. 6 1
      htdocs/core/modules/contract/doc/pdf_strato.modules.php
  10. 11 2
      htdocs/core/modules/expedition/doc/pdf_espadon.modules.php
  11. 12 2
      htdocs/core/modules/expedition/doc/pdf_rouget.modules.php
  12. 5 1
      htdocs/core/modules/expensereport/doc/pdf_standard.modules.php
  13. 12 2
      htdocs/core/modules/facture/doc/pdf_crabe.modules.php
  14. 15 1
      htdocs/core/modules/facture/doc/pdf_sponge.modules.php
  15. 5 1
      htdocs/core/modules/livraison/doc/pdf_typhon.modules.php
  16. 7 1
      htdocs/core/modules/project/doc/pdf_baleine.modules.php
  17. 7 1
      htdocs/core/modules/project/doc/pdf_beluga.modules.php
  18. 7 1
      htdocs/core/modules/project/doc/pdf_timespent.modules.php
  19. 12 2
      htdocs/core/modules/propale/doc/pdf_azur.modules.php
  20. 11 2
      htdocs/core/modules/propale/doc/pdf_cyan.modules.php
  21. 12 2
      htdocs/core/modules/reception/doc/pdf_squille.modules.php
  22. 6 1
      htdocs/core/modules/stock/doc/pdf_standard.modules.php
  23. 6 1
      htdocs/core/modules/stock/doc/pdf_stdmovement.modules.php
  24. 5 1
      htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php
  25. 11 2
      htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php
  26. 11 2
      htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php
  27. 5 1
      htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php
  28. 11 2
      htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php
  29. 1 1
      htdocs/core/tpl/extrafields_list_search_param.tpl.php
  30. 26 16
      htdocs/holiday/class/holiday.class.php
  31. 28 0
      htdocs/langs/es_ES/zapier.lang
  32. 4 4
      htdocs/mrp/class/mo.class.php
  33. 1 1
      htdocs/public/members/new.php
  34. 1 1
      htdocs/societe/card.php
  35. 1 1
      htdocs/stripe/admin/stripe.php
  36. 0 0
      htdocs/theme/common/login_logo.png
  37. 1 1
      htdocs/user/passwordforgotten.php
  38. 8 12
      test/phpunit/HolidayTest.php

+ 1 - 1
htdocs/categories/viewcat.php

@@ -207,7 +207,7 @@ elseif ($type == Categorie::TYPE_MEMBER)    $title = $langs->trans("MembersCateg
 elseif ($type == Categorie::TYPE_CONTACT)   $title = $langs->trans("ContactCategoriesShort");
 elseif ($type == Categorie::TYPE_ACCOUNT)   $title = $langs->trans("AccountsCategoriesShort");
 elseif ($type == Categorie::TYPE_PROJECT)   $title = $langs->trans("ProjectsCategoriesShort");
-elseif ($type == Categorie::TYPE_USER)      $title = $langs->trans("ProjectsCategoriesShort");
+elseif ($type == Categorie::TYPE_USER)      $title = $langs->trans("UsersCategoriesShort");
 else                                        $title = $langs->trans("Category");
 
 $head = categories_prepare_head($object, $type);

+ 2 - 1
htdocs/compta/cashcontrol/cashcontrol_card.php

@@ -345,7 +345,8 @@ if ($action == "create" || $action == "start")
     print '<td>';
 
     $array = array();
-    for($i = 1; $i <= max(1, $conf->global->TAKEPOS_NUM_TERMINALS); $i++) {
+    $numterminals = max(1, $conf->global->TAKEPOS_NUM_TERMINALS);
+    for($i = 1; $i <= $numterminals; $i++) {
     	$array[$i] = $i;
     }
     $selectedposnumber = 0; $showempty = 1;

+ 3 - 1
htdocs/core/boxes/box_project.php

@@ -3,6 +3,7 @@
  * Copyright (C) 2014      Marcos García          <marcosgdf@gmail.com>
  * Copyright (C) 2015      Frederic France        <frederic.france@free.fr>
  * Copyright (C) 2016      Juan José Menent       <jmenent@2byte.es>
+ * Copyright (C) 2020      Pierre Ardoin          <mapiolca@me.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -97,7 +98,8 @@ class box_project extends ModeleBoxes
 
             $sql = "SELECT p.rowid, p.ref, p.title, p.fk_statut, p.public";
             $sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
-            $sql.= " WHERE p.fk_statut = 1"; // Only open projects
+            $sql.= " WHERE p.entity IN (".getEntity('project').")"; // Only current entity or severals if permission ok
+			$sql.= " AND p.fk_statut = 1"; // Only open projects
             if (! $user->rights->projet->all->lire) $sql.= " AND p.rowid IN (".$projectsListId.")"; // public and assigned to, or restricted to company for external users
 
             $sql.= " ORDER BY p.datec DESC";

+ 6 - 2
htdocs/core/lib/company.lib.php

@@ -207,8 +207,12 @@ function societe_prepare_head(Societe $object)
 
         $sql = "SELECT COUNT(n.rowid) as nb";
         $sql .= " FROM ".MAIN_DB_PREFIX."societe_rib as n";
-        $sql .= " WHERE fk_soc = ".$object->id;
-        $sql .= " AND status = ".$servicestatus;
+        $sql .= " WHERE n.fk_soc = ".$object->id;
+        if (empty($conf->stripe->enabled)) {
+			$sql .= " AND n.stripe_card_ref IS NULL";
+		} else {
+			$sql .= " AND (n.stripe_card_ref IS NULL OR (n.stripe_card_ref IS NOT NULL AND n.status = ".$servicestatus."))";
+		}
 
         $resql = $db->query($sql);
         if ($resql)

+ 1 - 1
htdocs/core/lib/security2.lib.php

@@ -221,7 +221,7 @@ if (!function_exists('dol_loginfunction'))
 
 		// Show logo (search in order: small company logo, large company logo, theme logo, common logo)
 		$width = 0;
-		$urllogo = DOL_URL_ROOT.'/theme/login_logo.png';
+		$urllogo=DOL_URL_ROOT.'/theme/common/login_logo.png';
 
 		if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small))
 		{

+ 1 - 1
htdocs/core/lib/ticket.lib.php

@@ -222,7 +222,7 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $
         // Print logo
         if (! empty($conf->global->TICKET_SHOW_COMPANY_LOGO))
         {
-        	$urllogo = DOL_URL_ROOT . '/theme/login_logo.png';
+        	$urllogo = DOL_URL_ROOT . '/theme/common/login_logo.png';
 
         	if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output . '/logos/thumbs/' . $mysoc->logo_small)) {
         		$urllogo = DOL_URL_ROOT . '/viewimage.php?modulepart=mycompany&amp;entity='.$conf->entity.'&amp;file=' . urlencode('logos/thumbs/'.$mysoc->logo_small);

+ 5 - 1
htdocs/core/modules/commande/doc/pdf_einstein.modules.php

@@ -438,7 +438,11 @@ class pdf_einstein extends ModelePDFCommandes
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak = 0;
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 						}
 					}
 					else	// No pagebreak

+ 11 - 2
htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php

@@ -577,7 +577,12 @@ class pdf_eratosthene extends ModelePDFCommandes
 					        $pdf->setPage($pageposbefore + 1);
 
 					        $curY = $tab_top_newpage;
-					        $showpricebeforepagebreak = 0;
+
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 					    }
 
 					    if (!empty($this->cols['photo']) && isset($imglinesize['width']) && isset($imglinesize['height']))
@@ -615,7 +620,11 @@ class pdf_eratosthene extends ModelePDFCommandes
     						else
     						{
     							// We found a page break
-    							$showpricebeforepagebreak = 0;
+								// Allows data in the first page if description is long enough to break in multiples pages
+								if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+									$showpricebeforepagebreak = 1;
+								else
+									$showpricebeforepagebreak = 0;
     						}
     					}
     					else	// No pagebreak

+ 6 - 1
htdocs/core/modules/contract/doc/pdf_strato.modules.php

@@ -391,7 +391,12 @@ class pdf_strato extends ModelePDFContract
 							else
 							{
 								// We found a page break
-								$showpricebeforepagebreak=0;
+
+								// Allows data in the first page if description is long enough to break in multiples pages
+								if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+									$showpricebeforepagebreak = 1;
+								else
+									$showpricebeforepagebreak = 0;
 							}
 						}
 						else	// No pagebreak

+ 11 - 2
htdocs/core/modules/expedition/doc/pdf_espadon.modules.php

@@ -440,7 +440,12 @@ class pdf_espadon extends ModelePdfExpedition
 					        $pdf->setPage($pageposbefore + 1);
 
 					        $curY = $tab_top_newpage;
-					        $showpricebeforepagebreak = 0;
+
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 					    }
 
 
@@ -482,7 +487,11 @@ class pdf_espadon extends ModelePdfExpedition
 					        else
 					        {
 					            // We found a page break
-					            $showpricebeforepagebreak = 0;
+								// Allows data in the first page if description is long enough to break in multiples pages
+								if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+									$showpricebeforepagebreak = 1;
+								else
+									$showpricebeforepagebreak = 0;
 					        }
 					    }
 					    else	// No pagebreak

+ 12 - 2
htdocs/core/modules/expedition/doc/pdf_rouget.modules.php

@@ -452,7 +452,12 @@ class pdf_rouget extends ModelePdfExpedition
 						$pdf->setPage($pageposbefore + 1);
 
 						$curY = $tab_top_newpage;
-						$showpricebeforepagebreak = 0;
+
+						// Allows data in the first page if description is long enough to break in multiples pages
+						if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+							$showpricebeforepagebreak = 1;
+						else
+							$showpricebeforepagebreak = 0;
 					}
 
 					if (isset($imglinesize['width']) && isset($imglinesize['height']))
@@ -494,7 +499,12 @@ class pdf_rouget extends ModelePdfExpedition
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak = 0;
+
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 						}
 					}
 					else	// No pagebreak

+ 5 - 1
htdocs/core/modules/expensereport/doc/pdf_standard.modules.php

@@ -383,7 +383,11 @@ class pdf_standard extends ModeleExpenseReport
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak = 0;
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 						}
 					}
 					else	// No pagebreak

+ 12 - 2
htdocs/core/modules/facture/doc/pdf_crabe.modules.php

@@ -492,7 +492,12 @@ class pdf_crabe extends ModelePDFFactures
 						$pdf->setPage($pageposbefore + 1);
 
 						$curY = $tab_top_newpage;
-						$showpricebeforepagebreak = 0;
+
+						// Allows data in the first page if description is long enough to break in multiples pages
+						if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+							$showpricebeforepagebreak = 1;
+						else
+							$showpricebeforepagebreak = 0;
 					}
 
 					if (isset($imglinesize['width']) && isset($imglinesize['height']))
@@ -532,7 +537,12 @@ class pdf_crabe extends ModelePDFFactures
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak = 0;
+
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 						}
 					}
 					else	// No pagebreak

+ 15 - 1
htdocs/core/modules/facture/doc/pdf_sponge.modules.php

@@ -607,7 +607,12 @@ class pdf_sponge extends ModelePDFFactures
     	                    $pdf->setPage($pageposbefore + 1);
 
     	                    $curY = $tab_top_newpage;
-    	                    $showpricebeforepagebreak = 0;
+
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
     	                }
 
     	                if (!empty($this->cols['photo']) && isset($imglinesize['width']) && isset($imglinesize['height']))
@@ -646,7 +651,16 @@ class pdf_sponge extends ModelePDFFactures
     	                    else
     	                    {
     	                        // We found a page break
+<<<<<<< HEAD
     	                        $showpricebeforepagebreak = 0;
+=======
+
+								// Allows data in the first page if description is long enough to break in multiples pages
+								if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+									$showpricebeforepagebreak = 1;
+								else
+									$showpricebeforepagebreak = 0;
+>>>>>>> branch '11.0' of git@github.com:Dolibarr/dolibarr.git
     	                    }
     	                }
     	                else	// No pagebreak

+ 5 - 1
htdocs/core/modules/livraison/doc/pdf_typhon.modules.php

@@ -407,7 +407,11 @@ class pdf_typhon extends ModelePDFDeliveryOrder
                     	else
                     	{
                     		// We found a page break
-                    		$showpricebeforepagebreak = 0;
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
                     	}
                     }
                     else	// No pagebreak

+ 7 - 1
htdocs/core/modules/project/doc/pdf_baleine.modules.php

@@ -362,7 +362,13 @@ class pdf_baleine extends ModelePDFProjects
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak=0;
+
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
+
 							$forcedesconsamepage=1;
 							if ($forcedesconsamepage)
 							{

+ 7 - 1
htdocs/core/modules/project/doc/pdf_beluga.modules.php

@@ -512,7 +512,13 @@ class pdf_beluga extends ModelePDFProjects
 						            else
 						            {
 							            // We found a page break
-							            $showpricebeforepagebreak=0;
+
+										// Allows data in the first page if description is long enough to break in multiples pages
+										if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+											$showpricebeforepagebreak = 1;
+										else
+											$showpricebeforepagebreak = 0;
+
 							            $forcedesconsamepage=1;
 							            if ($forcedesconsamepage)
 							            {

+ 7 - 1
htdocs/core/modules/project/doc/pdf_timespent.modules.php

@@ -293,7 +293,13 @@ class pdf_timespent extends ModelePDFProjects
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak=0;
+
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
+
 							$forcedesconsamepage=1;
 							if ($forcedesconsamepage)
 							{

+ 12 - 2
htdocs/core/modules/propale/doc/pdf_azur.modules.php

@@ -500,7 +500,12 @@ class pdf_azur extends ModelePDFPropales
 						$pdf->setPage($pageposbefore + 1);
 
 						$curY = $tab_top_newpage;
-						$showpricebeforepagebreak = 0;
+
+						// Allows data in the first page if description is long enough to break in multiples pages
+						if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+							$showpricebeforepagebreak = 1;
+						else
+							$showpricebeforepagebreak = 0;
 					}
 
 					if (isset($imglinesize['width']) && isset($imglinesize['height']))
@@ -541,7 +546,12 @@ class pdf_azur extends ModelePDFPropales
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak = 0;
+
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 						}
 					}
 					else	// No pagebreak

+ 11 - 2
htdocs/core/modules/propale/doc/pdf_cyan.modules.php

@@ -592,7 +592,12 @@ class pdf_cyan extends ModelePDFPropales
     						$pdf->setPage($pageposbefore + 1);
 
     						$curY = $tab_top_newpage;
-    						$showpricebeforepagebreak = 0;
+
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
     					}
 
 
@@ -634,7 +639,11 @@ class pdf_cyan extends ModelePDFPropales
     						else
     						{
     							// We found a page break
-    							$showpricebeforepagebreak = 0;
+								// Allows data in the first page if description is long enough to break in multiples pages
+								if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+									$showpricebeforepagebreak = 1;
+								else
+									$showpricebeforepagebreak = 0;
     						}
     					}
     					else	// No pagebreak

+ 12 - 2
htdocs/core/modules/reception/doc/pdf_squille.modules.php

@@ -374,7 +374,12 @@ class pdf_squille extends ModelePdfReception
 						$pdf->setPage($pageposbefore + 1);
 
 						$curY = $tab_top_newpage;
-						$showpricebeforepagebreak = 0;
+
+						// Allows data in the first page if description is long enough to break in multiples pages
+						if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+							$showpricebeforepagebreak = 1;
+						else
+							$showpricebeforepagebreak = 0;
 					}
 
 					if (isset($imglinesize['width']) && isset($imglinesize['height']))
@@ -417,7 +422,12 @@ class pdf_squille extends ModelePdfReception
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak = 0;
+
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 						}
 					}
 					else	// No pagebreak

+ 6 - 1
htdocs/core/modules/stock/doc/pdf_standard.modules.php

@@ -383,7 +383,12 @@ class pdf_standard extends ModelePDFStock
 							else
 							{
 								// We found a page break
-								$showpricebeforepagebreak=0;
+
+								// Allows data in the first page if description is long enough to break in multiples pages
+								if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+									$showpricebeforepagebreak = 1;
+								else
+									$showpricebeforepagebreak = 0;
 							}
 						}
 						else	// No pagebreak

+ 6 - 1
htdocs/core/modules/stock/doc/pdf_stdmovement.modules.php

@@ -543,7 +543,12 @@ class pdf_stdmovement extends ModelePDFMovement
 							else
 							{
 								// We found a page break
-								$showpricebeforepagebreak=0;
+
+								// Allows data in the first page if description is long enough to break in multiples pages
+								if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+									$showpricebeforepagebreak = 1;
+								else
+									$showpricebeforepagebreak = 0;
 							}
 						}
 						else	// No pagebreak

+ 5 - 1
htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php

@@ -428,7 +428,11 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak=0;
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 						}
 					}
 					else	// No pagebreak

+ 11 - 2
htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php

@@ -526,7 +526,12 @@ class pdf_cornas extends ModelePDFSuppliersOrders
 						$pdf->setPage($pageposbefore + 1);
 
 						$curY = $tab_top_newpage;
-						$showpricebeforepagebreak = 0;
+
+						// Allows data in the first page if description is long enough to break in multiples pages
+						if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+							$showpricebeforepagebreak = 1;
+						else
+							$showpricebeforepagebreak = 0;
 					}
 
 					if (!empty($imglinesize['width']) && !empty($imglinesize['height']))
@@ -567,7 +572,11 @@ class pdf_cornas extends ModelePDFSuppliersOrders
 					        else
 					        {
 					            // We found a page break
-					            $showpricebeforepagebreak = 0;
+					        	// Allows data in the first page if description is long enough to break in multiples pages
+					        	if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+					        		$showpricebeforepagebreak = 1;
+					        	else
+					        		$showpricebeforepagebreak = 0;
 					        }
 					    }
 					    else	// No pagebreak

+ 11 - 2
htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php

@@ -443,7 +443,12 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
 						$pdf->setPage($pageposbefore + 1);
 
 						$curY = $tab_top_newpage;
-						$showpricebeforepagebreak = 0;
+
+						// Allows data in the first page if description is long enough to break in multiples pages
+						if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+							$showpricebeforepagebreak = 1;
+						else
+							$showpricebeforepagebreak = 0;
 					}
 
 					if (!empty($imglinesize['width']) && !empty($imglinesize['height']))
@@ -490,7 +495,11 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak = 0;
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 						}
 					}
 					else	// No pagebreak

+ 5 - 1
htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php

@@ -363,7 +363,11 @@ class pdf_standard extends ModelePDFSuppliersPayments
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak = 0;
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 						}
 					}
 					else	// No pagebreak

+ 11 - 2
htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php

@@ -428,7 +428,12 @@ class pdf_aurore extends ModelePDFSupplierProposal
 						$pdf->setPage($pageposbefore + 1);
 
 						$curY = $tab_top_newpage;
-						$showpricebeforepagebreak = 0;
+
+						// Allows data in the first page if description is long enough to break in multiples pages
+						if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+							$showpricebeforepagebreak = 1;
+						else
+							$showpricebeforepagebreak = 0;
 					}
 
 					if (!empty($imglinesize['width']) && !empty($imglinesize['height']))
@@ -478,7 +483,11 @@ class pdf_aurore extends ModelePDFSupplierProposal
 						else
 						{
 							// We found a page break
-							$showpricebeforepagebreak = 0;
+							// Allows data in the first page if description is long enough to break in multiples pages
+							if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
+								$showpricebeforepagebreak = 1;
+							else
+								$showpricebeforepagebreak = 0;
 						}
 					}
 					else	// No pagebreak

+ 1 - 1
htdocs/core/tpl/extrafields_list_search_param.tpl.php

@@ -8,7 +8,7 @@ if (empty($conf) || !is_object($conf))
 }
 
 // Loop to complete $param for extrafields
-if (!empty($search_array_options))	// $extrafieldsobject is the $object->table_element like 'societe', 'socpeople', ...
+if (!empty($search_array_options) && is_array($search_array_options))	// $extrafieldsobject is the $object->table_element like 'societe', 'socpeople', ...
 {
     if (empty($search_options_pattern)) $search_options_pattern = 'search_options_';
 

+ 26 - 16
htdocs/holiday/class/holiday.class.php

@@ -1654,21 +1654,24 @@ class Holiday extends CommonObject
 		{
 			if ($type)
 			{
-				// Si utilisateur de Dolibarr
-
-				$sql = "SELECT u.rowid";
-				$sql .= " FROM ".MAIN_DB_PREFIX."user as u";
+				// If user of Dolibarr
+				$sql = "SELECT";
+				if (! empty($conf->multicompany->enabled) && ! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
+					$sql .= " DISTINCT";
+				}
+				$sql.= " u.rowid";
+				$sql.= " FROM ".MAIN_DB_PREFIX."user as u";
 
 				if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE))
 				{
 					$sql .= ", ".MAIN_DB_PREFIX."usergroup_user as ug";
-					$sql .= " WHERE (ug.fk_user = u.rowid";
-					$sql .= " AND ug.entity = ".$conf->entity.")";
-					$sql .= " OR u.admin = 1";
+					$sql .= " WHERE ((ug.fk_user = u.rowid";
+					$sql .= " AND ug.entity IN (".getEntity('usergroup')."))";
+					$sql .= " OR u.entity = 0)"; // Show always superadmin
 				}
 				else
 				{
-					$sql .= " WHERE u.entity IN (0,".$conf->entity.")";
+					$sql .= " WHERE u.entity IN (".getEntity('user').")";
 				}
 				$sql .= " AND u.statut > 0";
 				if ($filters) $sql .= $filters;
@@ -1709,7 +1712,7 @@ class Holiday extends CommonObject
 				// We want only list of vacation balance for user ids
 				$sql = "SELECT DISTINCT cpu.fk_user";
 				$sql .= " FROM ".MAIN_DB_PREFIX."holiday_users as cpu, ".MAIN_DB_PREFIX."user as u";
-				$sql .= " WHERE cpu.fk_user = u.user";
+				$sql .= " WHERE cpu.fk_user = u.rowid";
 				if ($filters) $sql .= $filters;
 
 				$resql = $this->db->query($sql);
@@ -1750,17 +1753,24 @@ class Holiday extends CommonObject
 			// List for Dolibarr users
 			if ($type)
 			{
-				$sql = "SELECT u.rowid, u.lastname, u.firstname, u.gender, u.photo, u.employee, u.statut, u.fk_user";
+								// If user of Dolibarr
+				$sql = "SELECT";
+				if (! empty($conf->multicompany->enabled) && ! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
+					$sql .= " DISTINCT";
+				}
+				$sql.= " u.rowid, u.lastname, u.firstname, u.gender, u.photo, u.employee, u.statut, u.fk_user";
 				$sql.= " FROM ".MAIN_DB_PREFIX."user as u";
 
 				if (! empty($conf->multicompany->enabled) && ! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE))
 				{
-					$sql.= ", ".MAIN_DB_PREFIX."usergroup_user as ug";
-					$sql.= " WHERE (ug.fk_user = u.rowid";
-					$sql.= " AND ug.entity = ".$conf->entity.")";
-					$sql.= " OR u.admin = 1";
-				} else {
-					$sql.= " WHERE u.entity IN (0,".$conf->entity.")";
+					$sql .= ", ".MAIN_DB_PREFIX."usergroup_user as ug";
+					$sql .= " WHERE ((ug.fk_user = u.rowid";
+					$sql .= " AND ug.entity IN (".getEntity('usergroup')."))";
+					$sql .= " OR u.entity = 0)"; // Show always superadmin
+				}
+				else
+				{
+					$sql .= " WHERE u.entity IN (".getEntity('user').")";
 				}
 
 				$sql.= " AND u.statut > 0";

+ 28 - 0
htdocs/langs/es_ES/zapier.lang

@@ -0,0 +1,28 @@
+# Copyright (C) 2019 Frédéric FRANCE <frederic.france@free.fr>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+#
+# Generic
+#
+
+# Module label 'ModuleZapierForDolibarrName'
+ModuleZapierForDolibarrName = Zapier para Dolibarr
+# Module description 'ModuleZapierForDolibarrDesc'
+ModuleZapierForDolibarrDesc = Zapier para el módulo Dolibarr
+
+#
+# Admin page
+#
+ZapierForDolibarrSetup = Configuración de Zapier para Dolibarr

+ 4 - 4
htdocs/mrp/class/mo.class.php

@@ -513,7 +513,6 @@ class Mo extends CommonObject
 			return $resarray;
 		} else {
 			$this->error = $this->db->lasterror();
-			var_dump($this->error);
 			return array();
 		}
 	}
@@ -559,9 +558,10 @@ class Mo extends CommonObject
 	 * Erase and update the line to produce.
 	 *
 	 * @param  User $user      User that modifies
+	 * @param  bool $notrigger false=launch triggers after, true=disable triggers
 	 * @return int             <0 if KO, >0 if OK
 	 */
-	public function updateProduction(User $user)
+	public function updateProduction(User $user, $notrigger = true)
 	{
 		$error = 0;
 
@@ -593,7 +593,7 @@ class Mo extends CommonObject
 				$moline->role = 'toproduce';
 				$moline->position = 1;
 
-				$resultline = $moline->create($user);
+				$resultline = $moline->create($user, false);	// Never use triggers here
 				if ($resultline <= 0) {
 					$error++;
 					$this->error = $moline->error;
@@ -625,7 +625,7 @@ class Mo extends CommonObject
 							$moline->qty_frozen = $line->qty_frozen;
 							$moline->disable_stock_change = $line->disable_stock_change;
 
-							$resultline = $moline->create($user);
+							$resultline = $moline->create($user, false);	// Never use triggers here
 							if ($resultline <= 0) {
 								$error++;
 								$this->error = $moline->error;

+ 1 - 1
htdocs/public/members/new.php

@@ -101,7 +101,7 @@ function llxHeaderVierge($title, $head = "", $disablejs = 0, $disablehead = 0, $
 
     // Define urllogo
     $width = 0;
-    $urllogo = DOL_URL_ROOT.'/theme/login_logo.png';
+    $urllogo = DOL_URL_ROOT.'/theme/common/login_logo.png';
 
     if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small))
     {

+ 1 - 1
htdocs/societe/card.php

@@ -1988,7 +1988,7 @@ else
             print '<tr><td>'.img_picto('', 'object_email').' '.$form->editfieldkey('EMail', 'email', GETPOST('email', 'alpha'), $object, 0, 'string', '', (!empty($conf->global->SOCIETE_EMAIL_MANDATORY))).'</td>';
             print '<td colspan="3"><input type="text" name="email" id="email" class="maxwidth100onsmartphone quatrevingtpercent" value="'.(GETPOSTISSET('email') ?GETPOST('email', 'alpha') : $object->email).'"></td></tr>';
 	        print '<tr><td>'.img_picto('', 'globe').' '.$form->editfieldkey('Web', 'url', GETPOST('url', 'alpha'), $object, 0).'</td>';
-	        print '<td colspan="3"><input type="text" name="url" id="url" class="maxwidth100onsmartphone quatrevingtpercent" value="'.(GETPOSTISSET('url') ?GETPOST('url', 'alpha') : $object->irl).'"></td></tr>';
+	        print '<td colspan="3"><input type="text" name="url" id="url" class="maxwidth100onsmartphone quatrevingtpercent" value="'.(GETPOSTISSET('url') ?GETPOST('url', 'alpha') : $object->url).'"></td></tr>';
 
             if (!empty($conf->socialnetworks->enabled)) {
                 foreach ($socialnetworks as $key => $value) {

+ 1 - 1
htdocs/stripe/admin/stripe.php

@@ -467,7 +467,7 @@ $token = '';
 
 include DOL_DOCUMENT_ROOT.'/core/tpl/onlinepaymentlinks.tpl.php';
 
-print info_admin($langs->trans("ExampleOfTestCreditCard", '4242424242424242 (no 3DSecure) or 4000000000003063 (3DSecure required) or 4000000000003220 (3DSecure2 required)', '4000000000000101', '4000000000000069', '4000000000000341'));
+print info_admin($langs->trans("ExampleOfTestCreditCard", '4242424242424242 (no 3DSecure) or 4000000000003063 (3DSecure required) or 4000002760003184 (3DSecure2 required on all transaction) or 4000003800000446 (3DSecure2 required the off-seesion allowed)', '4000000000000101', '4000000000000069', '4000000000000341'));
 
 if (!empty($conf->use_javascript_ajax))
 {

+ 0 - 0
htdocs/theme/login_logo.png → htdocs/theme/common/login_logo.png


+ 1 - 1
htdocs/user/passwordforgotten.php

@@ -178,7 +178,7 @@ if (!empty($conf->global->MAIN_SECURITY_ENABLE_SENDPASSWORD)) $disabled = ''; //
 // Show logo (search in order: small company logo, large company logo, theme logo, common logo)
 $width = 0;
 $rowspan = 2;
-$urllogo = DOL_URL_ROOT.'/theme/login_logo.png';
+$urllogo = DOL_URL_ROOT.'/theme/common/login_logo.png';
 if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small))
 {
 	$urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/thumbs/'.$mysoc->logo_small);

+ 8 - 12
test/phpunit/HolidayTest.php

@@ -247,21 +247,17 @@ class HolidayTest extends PHPUnit\Framework\TestCase
         $langs=$this->savlangs;
         $db=$this->savdb;
 
-        //$localobject->fetch($localobject->id);
+        $result = $localobject->fetchUsers(true, true, '');
+        $this->assertNotEquals($result, -1);
 
-        /*
-        $result=$localobject->getNomUrl(1);
-        print __METHOD__." id=".$localobject->id." result=".$result."\n";
-        $this->assertNotEquals($result, '');
+        $result = $localobject->fetchUsers(true, false, '');
+        $this->assertNotEquals($result, -1);
 
-        $result=$localobject->getFullAddress(1);
-        print __METHOD__." id=".$localobject->id." result=".$result."\n";
-        $this->assertContains("New address\nNew zip New town\nBelgium", $result);
+        $result = $localobject->fetchUsers(false, true, '');
+        $this->assertNotEquals($result, -1);
 
-        $localobject->info($localobject->id);
-        print __METHOD__." localobject->date_creation=".$localobject->date_creation."\n";
-        $this->assertNotEquals($localobject->date_creation, '');
-        */
+        $result = $localobject->fetchUsers(false, false, '');
+        $this->assertNotEquals($result, -1);
 
         return $localobject->id;
     }