mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-02-08 00:52:01 +01:00
New: [ task #286 ] Enhance rounding function of prices to allow round of
sum instead of sum of rounding
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
/* Copyright (C) 2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
/* Copyright (C) 2012-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* 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
|
||||
@@ -157,9 +157,9 @@ class FactureTestRounding extends PHPUnit_Framework_TestCase
|
||||
|
||||
/**
|
||||
* testFactureRoundingCreate2
|
||||
*
|
||||
*
|
||||
* @return int
|
||||
*
|
||||
*
|
||||
* @depends testFactureRoundingCreate1
|
||||
* Test according to page http://wiki.dolibarr.org/index.php/Draft:VAT_calculation_and_rounding#Standard_usage
|
||||
*/
|
||||
@@ -194,5 +194,133 @@ class FactureTestRounding extends PHPUnit_Framework_TestCase
|
||||
//$this->assertEquals($newlocalobject->total_ttc, 2.73);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* testFactureAddLine1
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testFactureAddLine1()
|
||||
{
|
||||
global $conf,$user,$langs,$db;
|
||||
$conf=$this->savconf;
|
||||
$user=$this->savuser;
|
||||
$langs=$this->savlangs;
|
||||
$db=$this->savdb;
|
||||
|
||||
// With option MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 0
|
||||
$conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND=0;
|
||||
$localobject1a=new Facture($this->savdb);
|
||||
$localobject1a->initAsSpecimen('nolines');
|
||||
$facid=$localobject1a->create($user);
|
||||
$localobject1a->addline($facid, 'Line 1', 6.36, 15, 21); // This include update_price
|
||||
print __METHOD__." id=".$facid." total_ttc=".$localobject1a->total_ttc."\n";
|
||||
$this->assertEquals( 95.40, $localobject1a->total_ht);
|
||||
$this->assertEquals( 20.03, $localobject1a->total_tva);
|
||||
$this->assertEquals(115.43, $localobject1a->total_ttc);
|
||||
|
||||
// With option MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 1
|
||||
$conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND=1;
|
||||
$localobject1b=new Facture($this->savdb);
|
||||
$localobject1b->initAsSpecimen('nolines');
|
||||
$facid=$localobject1b->create($user);
|
||||
$localobject1b->addline($facid, 'Line 1', 6.36, 15, 21); // This include update_price
|
||||
print __METHOD__." id=".$facid." total_ttc=".$localobject1b->total_ttc."\n";
|
||||
$this->assertEquals( 95.40, $localobject1b->total_ht, 'testFactureAddLine1 total_ht');
|
||||
$this->assertEquals( 20.03, $localobject1b->total_tva, 'testFactureAddLine1 total_tva');
|
||||
$this->assertEquals(115.43, $localobject1b->total_ttc, 'testFactureAddLine1 total_ttc');
|
||||
}
|
||||
|
||||
/**
|
||||
* testFactureAddLine2
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @depends testFactureAddLine1
|
||||
* The depends says test is run only if previous is ok
|
||||
*/
|
||||
public function testFactureAddLine2()
|
||||
{
|
||||
global $conf,$user,$langs,$db;
|
||||
$conf=$this->savconf;
|
||||
$user=$this->savuser;
|
||||
$langs=$this->savlangs;
|
||||
$db=$this->savdb;
|
||||
|
||||
// With option MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 0
|
||||
$conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND=0;
|
||||
$localobject2=new Facture($this->savdb);
|
||||
$localobject2->initAsSpecimen('nolines');
|
||||
$facid=$localobject2->create($user);
|
||||
$localobject2->addline($facid, 'Line 1', 6.36, 5, 21);
|
||||
$localobject2->addline($facid, 'Line 2', 6.36, 5, 21);
|
||||
$localobject2->addline($facid, 'Line 3', 6.36, 5, 21);
|
||||
print __METHOD__." id=".$facid." total_ttc=".$localobject2->total_ttc."\n";
|
||||
$this->assertEquals( 95.40, $localobject2->total_ht);
|
||||
$this->assertEquals( 20.04, $localobject2->total_tva);
|
||||
$this->assertEquals(115.44, $localobject2->total_ttc);
|
||||
|
||||
// With option MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 1
|
||||
$conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND=1;
|
||||
$localobject2=new Facture($this->savdb);
|
||||
$localobject2->initAsSpecimen('nolines');
|
||||
$facid=$localobject2->create($user);
|
||||
$localobject2->addline($facid, 'Line 1', 6.36, 5, 21);
|
||||
$localobject2->addline($facid, 'Line 2', 6.36, 5, 21);
|
||||
$localobject2->addline($facid, 'Line 3', 6.36, 5, 21);
|
||||
print __METHOD__." id=".$facid." total_ttc=".$localobject2->total_ttc."\n";
|
||||
$this->assertEquals( 95.40, $localobject2->total_ht);
|
||||
$this->assertEquals( 20.03, $localobject2->total_tva);
|
||||
$this->assertEquals(115.43, $localobject2->total_ttc);
|
||||
}
|
||||
|
||||
/**
|
||||
* testFactureAddLine3
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @depends testFactureAddLine2
|
||||
* The depends says test is run only if previous is ok
|
||||
*/
|
||||
public function testFactureAddLine3()
|
||||
{
|
||||
global $conf,$user,$langs,$db;
|
||||
$conf=$this->savconf;
|
||||
$user=$this->savuser;
|
||||
$langs=$this->savlangs;
|
||||
$db=$this->savdb;
|
||||
|
||||
// With option MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 0
|
||||
$conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND=0;
|
||||
$localobject3=new Facture($this->savdb);
|
||||
$localobject3->initAsSpecimen('nolines');
|
||||
$facid=$localobject3->create($user);
|
||||
$localobject3->addline($facid, 'Line 1', 6.36, 3, 21);
|
||||
$localobject3->addline($facid, 'Line 2', 6.36, 3, 21);
|
||||
$localobject3->addline($facid, 'Line 3', 6.36, 3, 21);
|
||||
$localobject3->addline($facid, 'Line 4', 6.36, 3, 21);
|
||||
$localobject3->addline($facid, 'Line 5', 6.36, 3, 21);
|
||||
print __METHOD__." id=".$facid." total_ttc=".$localobject3->total_ttc."\n";
|
||||
$this->assertEquals( 95.40, $localobject3->total_ht);
|
||||
$this->assertEquals( 20.05, $localobject3->total_tva);
|
||||
$this->assertEquals(115.45, $localobject3->total_ttc);
|
||||
|
||||
// With option MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 1
|
||||
$conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND=1;
|
||||
$localobject3=new Facture($this->savdb);
|
||||
$localobject3->initAsSpecimen('nolines');
|
||||
$facid=$localobject3->create($user);
|
||||
$localobject3->addline($facid, 'Line 1', 6.36, 3, 21);
|
||||
$localobject3->addline($facid, 'Line 2', 6.36, 3, 21);
|
||||
$localobject3->addline($facid, 'Line 3', 6.36, 3, 21);
|
||||
$localobject3->addline($facid, 'Line 4', 6.36, 3, 21);
|
||||
$localobject3->addline($facid, 'Line 5', 6.36, 3, 21);
|
||||
print __METHOD__." id=".$facid." total_ttc=".$localobject3->total_ttc."\n";
|
||||
$this->assertEquals( 95.40, $localobject3->total_ht);
|
||||
$this->assertEquals( 20.03, $localobject3->total_tva);
|
||||
$this->assertEquals(115.43, $localobject3->total_ttc);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user