2
0
forked from Wavyzz/dolibarr

Fix bad transaction level due to code of situation invoices

This commit is contained in:
Laurent Destailleur
2016-01-31 20:38:11 +01:00
parent 475cc24e13
commit 6002adb04c
2 changed files with 22 additions and 14 deletions

View File

@@ -1992,14 +1992,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
@@ -2277,7 +2281,7 @@ class Facture extends CommonInvoice
$this->line->context = $this->context;
$this->line->situpation_percent = $situation_percent;
$this->line->situation_percent = $situation_percent;
$this->line->fk_facture=$this->id;
$this->line->label=$label; // deprecated
$this->line->desc=$desc;
@@ -3770,11 +3774,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 {

View File

@@ -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