Skip to content
Snippets Groups Projects
Commit 2d0c823f authored by Laurent Destailleur's avatar Laurent Destailleur
Browse files

Fix bad transaction level due to code of situation invoices

Conflicts:
	htdocs/compta/facture/class/facture.class.php
parent dfd4d36b
Branches
No related tags found
No related merge requests found
......@@ -1953,14 +1953,18 @@ class Facture extends CommonInvoice
$this->brouillon=0;
$this->date_validation=$now;
$i = 0;
$final = True;
while ($i < count($this->lines) && $final == True) {
$final = ($this->lines[$i]->situation_percent == 100);
$i++;
}
if ($final) {
$this->setFinal();
}
if (!empty($conf->global->INVOICE_USE_SITUATION))
{
$final = True;
while ($i < count($this->lines) && $final == True) {
$final = ($this->lines[$i]->situation_percent == 100);
$i++;
}
if ($final) {
$this->setFinal();
}
}
}
}
else
......@@ -3654,11 +3658,14 @@ class Facture extends CommonInvoice
function setFinal()
{
global $conf, $langs, $user;
$this->db->begin();
$this->situation_final = 1;
$sql = 'update ' . MAIN_DB_PREFIX . 'facture set situation_final = ' . $this->situation_final . ' where rowid = ' . $this->id;
$resql = $this->db->query($sql);
if ($resql) {
// FIXME: call triggers?
// FIXME: call triggers MODIFY because we modify invoice
$this->db->commit();
return 1;
} else {
......
......@@ -75,7 +75,8 @@ class NumberingModulesTest extends PHPUnit_Framework_TestCase
public static function setUpBeforeClass()
{
global $conf,$user,$langs,$db;
$db->begin(); // This is to have all actions inside a transaction even if test launched without suite.
$db->begin(); // This is to have all actions inside a transaction even if test launched without suite.
print __METHOD__."\n";
}
......@@ -145,10 +146,10 @@ class NumberingModulesTest extends PHPUnit_Framework_TestCase
$result2=$localobject->create($user,1);
$result3=$localobject->validate($user, $result); // create invoice by forcing ref
print __METHOD__." result=".$result."\n";
$this->assertEquals('1915-0001', $result); // counter must start to 1
$this->assertEquals('1915-0001', $result, 'Test for {yyyy}-{0000}, 1st invoice'); // counter must start to 1
$result=$localobject->is_erasable();
print __METHOD__." is_erasable=".$result."\n";
$this->assertEquals(1, $result, 'Test for {yyyy}-{0000}, 1st invoice'); // Can be deleted
$this->assertEquals(1, $result, 'Test for is_erasable, 1st invoice'); // Can be deleted
$localobject2=new Facture($this->savdb);
$localobject2->initAsSpecimen();
......@@ -156,7 +157,7 @@ class NumberingModulesTest extends PHPUnit_Framework_TestCase
$numbering=new mod_facture_mercure();
$result=$numbering->getNextValue($mysoc, $localobject2, 'last');
print __METHOD__." result=".$result."\n";
$this->assertEquals('1915-0001', $result);
$this->assertEquals('1915-0001', $result, "Test to get last value with param 'last'");
$result=$numbering->getNextValue($mysoc, $localobject2);
$result2=$localobject2->create($user,1);
$result3=$localobject2->validate($user, $result); // create invoice by forcing ref
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment