--- dolibarr-3.0.0-rc1/htdocs/lib/tax.lib.php	2011-02-23 05:00:57.000000000 +0000
+++ dolibarr-sa/htdocs/lib/tax.lib.php	2011-03-04 18:13:48.000000000 +0000
@@ -225,9 +225,9 @@
             $sql.= " OR f.type = 2)";       // Credit note
             //$sql.= " OR f.type = 3";      // We do not include deposit
 	        $sql.= " AND f.rowid = d.".$fk_facture;
-	        if ($y) $sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
-	        if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")";
-	        if ($m) $sql.= " AND (date_format(f.datef,'%m') > ".($m-1)." AND date_format(f.datef,'%m') <= ".($m).")";
+	        if ($y) $sql.= " AND f.datef >= '".$y."0101' AND f.datef <= '".$y."1231'";
+	        if ($q) $sql.= " AND (CAST(date_format(f.datef,'%m') AS int) > ".(($q-1)*3)." AND CAST(date_format(f.datef,'%m') AS int) <= ".($q*3).")";
+	        if ($m) $sql.= " AND (CAST(date_format(f.datef,'%m') AS int) > ".($m-1)." AND CAST(date_format(f.datef,'%m') AS int) <= ".($m).")";
 	        if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'";
 	        $sql.= " AND (d.product_type = 0";								// Limit to products
 	        $sql.= " AND d.date_start is null AND d.date_end IS NULL)";		// enhance detection of service
@@ -270,9 +270,9 @@
 //	        $sql.= " AND pa.rowid = pf.".$fk_payment;
 //	        $sql.= " AND pa.datep >= '".$y."0101000000' AND pa.datep <= '".$y."1231235959'";
 //	        $sql.= " AND (date_format(pa.datep,'%m') > ".(($q-1)*3)." AND date_format(pa.datep,'%m') <= ".($q*3).")";
-	        if ($y) $sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
-	        if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")";
-	        if ($m) $sql.= " AND (date_format(f.datef,'%m') > ".($m-1)." AND date_format(f.datef,'%m') <= ".($m).")";
+	        if ($y) $sql.= " AND f.datef >= '".$y."0101' AND f.datef <= '".$y."1231'";
+	        if ($q) $sql.= " AND (CAST(date_format(f.datef,'%m') AS int) > ".(($q-1)*3)." AND CAST(date_format(f.datef,'%m') AS int) <= ".($q*3).")";
+	        if ($m) $sql.= " AND (CAST(date_format(f.datef,'%m') AS int) > ".($m-1)." AND CAST(date_format(f.datef,'%m') AS int) <= ".($m).")";
 	        if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'";
 	        $sql.= " AND (d.product_type = 0";								// Limit to products
 	        $sql.= " AND d.date_start is null AND d.date_end IS NULL)";		// enhance detection of service
@@ -370,9 +370,9 @@
             $sql.= " OR f.type = 2)";       // Credit note
             //$sql.= " OR f.type = 3";      // We do not include deposit
 	        $sql.= " AND f.rowid = d.".$fk_facture;
-	        if ($y) $sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
-	        if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")";
-	        if ($m) $sql.= " AND (date_format(f.datef,'%m') > ".($m-1)." AND date_format(f.datef,'%m') <= ".($m).")";
+	        if ($y) $sql.= " AND f.datef >= '".$y."0101' AND f.datef <= '".$y."1231'";
+	        if ($q) $sql.= " AND (CAST(date_format(f.datef,'%m') AS int) > ".(($q-1)*3)." AND CAST(date_format(f.datef,'%m') AS int) <= ".($q*3).")";
+	        if ($m) $sql.= " AND (CAST(date_format(f.datef,'%m') AS int) > ".($m-1)." AND CAST(date_format(f.datef,'%m') AS int) <= ".($m).")";
 	        if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'";
 	        $sql.= " AND (d.product_type = 1";								// Limit to services
 	        $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)";		// enhance detection of service
@@ -413,9 +413,9 @@
 			$sql.= " AND f.rowid = d.".$fk_facture;;
 	        $sql.= " AND pf.".$fk_facture2." = f.rowid";
 	        $sql.= " AND pa.rowid = pf.".$fk_payment;
-	        if ($y) $sql.= " AND pa.datep >= '".$y."0101000000' AND pa.datep <= '".$y."1231235959'";
-	        if ($q) $sql.= " AND (date_format(pa.datep,'%m') > ".(($q-1)*3)." AND date_format(pa.datep,'%m') <= ".($q*3).")";
-	        if ($m) $sql.= " AND (date_format(pa.datep,'%m') > ".($m-1)." AND date_format(pa.datep,'%m') <= ".($m).")";
+	        if ($y) $sql.= " AND pa.datep >= '".$y."0101' AND pa.datep <= '".$y."1231'";
+	        if ($q) $sql.= " AND (CAST(date_format(pa.datep,'%m') AS int) > ".(($q-1)*3)." AND CAST(date_format(pa.datep,'%m') AS int) <= ".($q*3).")";
+	        if ($m) $sql.= " AND (CAST(date_format(pa.datep,'%m') AS int) > ".($m-1)." AND CAST(date_format(pa.datep,'%m') AS int) <= ".($m).")";
 	        if ($date_start && $date_end) $sql.= " AND pa.datep >= ".$db->idate($date_start)." AND pa.datep <= ".$db->idate($date_end);
 	        $sql.= " AND (d.product_type = 1";								// Limit to services
 	        $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)";		// enhance detection of service
@@ -482,4 +482,4 @@
 	return $list;
 }
 
-?>
\ No newline at end of file
+?>
