636 lines
22 KiB
PHP
636 lines
22 KiB
PHP
<?php
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* @backupGlobals enabled
|
|
* @coversDefaultClass Acc_Ledger_Sale
|
|
*/
|
|
class Acc_Ledger_SaleTest extends TestCase
|
|
{
|
|
|
|
/**
|
|
* @var Acc_Ledger_Sale
|
|
*/
|
|
protected $object;
|
|
|
|
/**
|
|
* Data to include
|
|
* @var type
|
|
*/
|
|
private $array;
|
|
private $array1;
|
|
|
|
/**
|
|
* Sets up the fixture, for example, opens a network connection.
|
|
* This method is called before a test is executed.
|
|
*/
|
|
protected function setUp():void
|
|
{
|
|
require DIRTEST.'/global.php';
|
|
$this->object=new Acc_Ledger_Sale($g_connection, 2);
|
|
$this->array=array(
|
|
"ledger_type"=>"VEN",
|
|
"ac"=>"COMPTA/VENMENU/VEN",
|
|
"sa"=>"p",
|
|
"gDossier"=>25,
|
|
"nb_item"=>2,
|
|
"p_jrn"=>2,
|
|
"p_jrn_predef"=>2,
|
|
"action"=>"use_opd",
|
|
"jrn_type"=>"VEN",
|
|
"filter"=>"",
|
|
"e_date"=>"24.08.2019",
|
|
"e_ech"=>"",
|
|
"e_client"=>"CLIENT",
|
|
"e_pj"=>"VEN10",
|
|
"e_pj_suggest"=>"VEN10",
|
|
"e_comm"=>"Vente Service",
|
|
"e_march0"=>"DEPLAC",
|
|
"e_march0_price"=>20,
|
|
"e_quant0"=>1.21,
|
|
"htva_march0"=>24.2,
|
|
"e_march0_tva_id"=>1,
|
|
"e_march0_tva_amount"=>5.08,
|
|
"tva_march0"=>5.08,
|
|
"tvac_march0"=>29.28,
|
|
"e_march1"=>"MARCHA",
|
|
"e_march1_price"=>48.5,
|
|
"e_quant1"=>25,
|
|
"htva_march1"=>1212.5,
|
|
"e_march1_tva_id"=>1,
|
|
"e_march1_tva_amount"=>254.63,
|
|
"tva_march1"=>254.63,
|
|
"tvac_march1"=>1467.13,
|
|
"mp_date"=>"",
|
|
"acompte"=>0,
|
|
"e_comm_paiement"=>"",
|
|
"e_mp"=>"0",
|
|
"e_mp_qcode_1"=>"COMPTE",
|
|
"e_mp_qcode_2"=>"",
|
|
"p_currency_rate"=>1,
|
|
"p_currency_code"=>0,
|
|
"view_invoice"=>"Enregistrer");
|
|
// create accounting for reversed VAT
|
|
$g_connection->exec_sql("
|
|
INSERT INTO public.tmp_pcmn (pcm_val,pcm_lib,pcm_val_parent,pcm_type,pcm_direct_use) VALUES
|
|
('4119999','TVA Test UNIT','411','ACT','Y') on conflict do nothing");
|
|
// create accounting for reversed VAT with neg. amount
|
|
$this->array1=array( 'e_client' => 'CLIENT1',
|
|
'nb_item' => '2',
|
|
'p_jrn' => '2',
|
|
'jrn_note_input' => '',
|
|
'mt' => '1734720448.0036',
|
|
'p_currency_rate' => '1',
|
|
'p_currency_code' => '0',
|
|
'e_comm' => '',
|
|
'e_date' => '27.06.2020',
|
|
'e_ech' => '',
|
|
'e_pj' => 'VEN41',
|
|
'e_pj_suggest' => 'VEN41',
|
|
'e_mp' => '0',
|
|
'jrn_type' => 'VEN',
|
|
'e_march0' => 'DEPLAC',
|
|
'e_march0_price' => '20',
|
|
'e_march0_tva_id' => '5',
|
|
'e_march0_tva_amount' => '0',
|
|
'e_quant0' => '1',
|
|
'e_march1' => 'DEPLAC',
|
|
'e_march1_price' => '-5',
|
|
'e_march1_tva_id' => '5',
|
|
'e_march1_tva_amount' => '0',
|
|
'e_quant1' => '1',
|
|
'ac' => 'COMPTA/VENMENU/VEN',
|
|
'bon_comm' => '',
|
|
'other_info' => '',
|
|
'opd_name' => '',
|
|
'od_description' => '',
|
|
'reverse_date' => '',
|
|
'ext_label' => '',
|
|
'jr_optype' => 'NOR',
|
|
'action_gestion' => '',
|
|
'record' => 'Enregistrement');
|
|
}
|
|
|
|
/**
|
|
* Tears down the fixture, for example, closes a network connection.
|
|
* This method is called after a test is executed.
|
|
*/
|
|
protected function tearDown():void
|
|
{
|
|
|
|
}
|
|
private function clean_operation()
|
|
{
|
|
global $g_connection;
|
|
$mt="1572714478.3155";
|
|
//delete reconcilied operations
|
|
$g_connection->exec_sql("
|
|
delete from jrn
|
|
where jr_id in (select jr2.jr_id
|
|
from jrn_rapt ra1 join jrn jr2 on (ra1.jr_id=jr2.jr_id)
|
|
where jr2.jr_mt=$1)",[$mt]);
|
|
|
|
$g_connection->exec_sql("
|
|
delete from jrn
|
|
where jr_id in (select jr2.jr_id
|
|
from jrn_rapt ra1 join jrn jr2 on (ra1.jra_concerned=jr2.jr_id)
|
|
where jr2.jr_mt=$1)",[$mt]);
|
|
|
|
$g_connection->exec_sql("delete from jrn where jr_mt=$1", [$mt]);
|
|
$g_connection->exec_sql("delete from jrnx where j_grpt not in (select jr_grpt_id from jrn)");
|
|
|
|
$g_connection->exec_sql("alter sequence s_jrn_pj2 restart with 40");
|
|
// set TVA_RATE by default
|
|
$g_connection->exec_sql("update tva_rate set tva_poste='41142,45142' where tva_id=5");
|
|
$g_connection->exec_sql("update tva_rate set tva_reverse_account=null where tva_id=5");
|
|
|
|
|
|
}
|
|
/**
|
|
* @covers Acc_Ledger_Sale::verify
|
|
*/
|
|
public function testVerify()
|
|
{
|
|
$this->object->verify_operation($this->array);
|
|
$this->assertTrue(TRUE);
|
|
}
|
|
|
|
/**
|
|
* @covers Acc_Ledger_Sale::insert
|
|
*/
|
|
public function testInsert()
|
|
{
|
|
global $g_connection;
|
|
$array=$this->array;
|
|
$array["pa_id"]=array(2);
|
|
$array["op"]=array(0, 1);
|
|
$array["amount_t0"]=24.2;
|
|
$array["hplan"]=array(array(-1), array(-1));
|
|
$array["val"]=array(array(24, 2), array(1212.5));
|
|
$array["mt"]="1572714478.3155";
|
|
$this->clean_operation();
|
|
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",["1572714478.3155"]);
|
|
$this->assertEquals(0,$cnt);
|
|
$this->object->insert($array);
|
|
|
|
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",["1572714478.3155"]);
|
|
$this->assertEquals(1,$cnt);
|
|
$this->clean_operation();
|
|
|
|
// If some data are corruptes
|
|
$sql="
|
|
from quant_sold
|
|
join jrnx using(j_id)
|
|
join jrn on (jr_grpt_id=j_grpt)
|
|
where
|
|
jr_mt='1572714478.3155'
|
|
and j_qcode='MARCHA'
|
|
";
|
|
// Test space in e_quant1 instead of zero
|
|
$array=$this->array;
|
|
$array["pa_id"]=array(2);
|
|
$array["op"]=array(0, 1);
|
|
$array["amount_t0"]=24.2;
|
|
$array["hplan"]=array(array(-1), array(-1));
|
|
$array["val"]=array(array(24, 2), array(1212.5));
|
|
$array["mt"]="1572714478.3155";
|
|
$array['e_quant1']="";
|
|
$this->object->insert($array);
|
|
$this->assertEquals(0,$g_connection->get_value("select count(*) ".$sql));
|
|
$this->clean_operation();
|
|
|
|
// Test space in e_march1_price instead of zero must be
|
|
$array=$this->array;
|
|
$array["pa_id"]=array(2);
|
|
$array["op"]=array(0, 1);
|
|
$array["amount_t0"]=24.2;
|
|
$array["hplan"]=array(array(-1), array(-1));
|
|
$array["val"]=array(array(24, 2), array(1212.5));
|
|
$array["mt"]="1572714478.3155";
|
|
$array['e_march1_tva_amount']="";
|
|
$this->object->insert($array);
|
|
$this->assertEquals(254.63,$g_connection->get_value("select qs_vat ".$sql));
|
|
$this->clean_operation();
|
|
|
|
// Test space in e_march1_tva_amount instead of zero must be calculated
|
|
$array=$this->array;
|
|
$array["pa_id"]=array(2);
|
|
$array["op"]=array(0, 1);
|
|
$array["amount_t0"]=24.2;
|
|
$array["hplan"]=array(array(-1), array(-1));
|
|
$array["val"]=array(array(24, 2), array(1212.5));
|
|
$array["mt"]="1572714478.3155";
|
|
$array['tva_march1']="";
|
|
$this->object->insert($array);
|
|
$this->assertEquals(254.63,$g_connection->get_value("select qs_vat ".$sql));
|
|
$this->clean_operation();
|
|
|
|
}
|
|
/**
|
|
* @testdox Reverse VAT1 : find out the accounting when there is 2 accountings
|
|
* and column tva_reverse_account is null
|
|
* @covers Acc_Ledger_Sale::insert
|
|
*/
|
|
public function testInsertReverseVAT1()
|
|
{
|
|
global $g_connection;
|
|
|
|
$array=$this->array;
|
|
// item 0 uses the tva_id = 5
|
|
$array['e_march0_tva_id']=5;
|
|
$array["pa_id"]=array(2);
|
|
$array["op"]=array(0, 1);
|
|
$array["amount_t0"]=24.2;
|
|
$array["hplan"]=array(array(-1), array(-1));
|
|
$array["val"]=array(array(24, 2), array(1212.5));
|
|
$array["mt"]="1572714478.3155";
|
|
$this->clean_operation();
|
|
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",["1572714478.3155"]);
|
|
$this->assertEquals(0,$cnt);
|
|
$this->object->insert($array);
|
|
|
|
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",["1572714478.3155"]);
|
|
$this->assertEquals(1,$cnt);
|
|
// check that the accounting for reverse VAT is 41142 and 45142
|
|
$sql="
|
|
select count(*)
|
|
from jrnx j1 join jrn j2 on (j1.j_grpt=j2.jr_grpt_id)
|
|
where
|
|
j2.jr_mt ='1572714478.3155'
|
|
and j1.j_poste ='41142'
|
|
and j1.j_debit ='t'
|
|
";
|
|
$this->assertEquals(1, $g_connection->get_value($sql),'fails : reversed account debit is wrong');
|
|
|
|
// check that the accounting for reverse VAT is 41142 and 45142
|
|
$sql="
|
|
select count(*)
|
|
from jrnx j1 join jrn j2 on (j1.j_grpt=j2.jr_grpt_id)
|
|
where
|
|
j2.jr_mt ='1572714478.3155'
|
|
and j1.j_poste ='45142'
|
|
and j1.j_debit ='f'
|
|
";
|
|
$this->assertEquals(1, $g_connection->get_value($sql),'fails : reversed account credit is wrong');
|
|
|
|
$this->clean_operation();
|
|
|
|
|
|
}
|
|
/**
|
|
* @testdox Reverse VAT2 : find out the accounting when there is only 1 accounting
|
|
* and column tva_reverse_account is null
|
|
* @covers Acc_Ledger_Sale::insert
|
|
*/
|
|
public function testInsertReverseVAT2()
|
|
{
|
|
global $g_connection;
|
|
|
|
$array=$this->array;
|
|
// item 0 uses the tva_id = 5
|
|
$array['e_march0_tva_id']=5;
|
|
|
|
|
|
$array["pa_id"]=array(2);
|
|
$array["op"]=array(0, 1);
|
|
$array["amount_t0"]=24.2;
|
|
$array["hplan"]=array(array(-1), array(-1));
|
|
$array["val"]=array(array(24, 2), array(1212.5));
|
|
$array["mt"]="1572714478.3155";
|
|
$this->clean_operation();
|
|
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",["1572714478.3155"]);
|
|
$this->assertEquals(0,$cnt);
|
|
|
|
$g_connection->exec_sql("update tva_rate set tva_poste='#,45142' where tva_id=5");
|
|
$this->object->insert($array);
|
|
|
|
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",["1572714478.3155"]);
|
|
$this->assertEquals(1,$cnt);
|
|
|
|
|
|
// check that the accounting for reverse VAT is only 45142
|
|
$sql="
|
|
select count(*)
|
|
from jrnx j1 join jrn j2 on (j1.j_grpt=j2.jr_grpt_id)
|
|
where
|
|
j2.jr_mt ='1572714478.3155'
|
|
and j1.j_poste ='45142'
|
|
and j1.j_debit ='f'
|
|
";
|
|
$this->assertEquals(1, $g_connection->get_value($sql),'fails : reversed account credit is wrong');
|
|
|
|
// check that the accounting for reverse VAT is only 45142
|
|
$sql="
|
|
select count(*)
|
|
from jrnx j1 join jrn j2 on (j1.j_grpt=j2.jr_grpt_id)
|
|
where
|
|
j2.jr_mt ='1572714478.3155'
|
|
and j1.j_poste ='45142'
|
|
and j1.j_debit ='t'
|
|
";
|
|
$this->assertEquals(1, $g_connection->get_value($sql),'fails : reversed account credit is wrong');
|
|
|
|
$this->clean_operation();
|
|
|
|
|
|
}
|
|
/**
|
|
* @testdox Reverse VAT3 : use value from column tva_reverse_account is null
|
|
* @covers Acc_Ledger_Sale::insert
|
|
*/
|
|
public function testInsertReverseVAT3()
|
|
{
|
|
global $g_connection;
|
|
|
|
$array=$this->array;
|
|
// item 0 uses the tva_id = 5
|
|
$array['e_march0_tva_id']=5;
|
|
|
|
|
|
$array["pa_id"]=array(2);
|
|
$array["op"]=array(0, 1);
|
|
$array["amount_t0"]=24.2;
|
|
$array["hplan"]=array(array(-1), array(-1));
|
|
$array["val"]=array(array(24, 2), array(1212.5));
|
|
$array["mt"]="1572714478.3155";
|
|
$this->clean_operation();
|
|
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",["1572714478.3155"]);
|
|
$this->assertEquals(0,$cnt);
|
|
|
|
$g_connection->exec_sql("update tva_rate set tva_reverse_account='4119999' where tva_id=5");
|
|
$this->object->insert($array);
|
|
|
|
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",["1572714478.3155"]);
|
|
$this->assertEquals(1,$cnt);
|
|
|
|
|
|
// check that the accounting for reverse VAT is only 45142
|
|
$sql="
|
|
select count(*)
|
|
from jrnx j1 join jrn j2 on (j1.j_grpt=j2.jr_grpt_id)
|
|
where
|
|
j2.jr_mt ='1572714478.3155'
|
|
and j1.j_poste ='4119999'
|
|
and j1.j_debit ='t'
|
|
";
|
|
$this->assertEquals(1, $g_connection->get_value($sql),'fails : reversed account credit is wrong');
|
|
|
|
// check that the accounting for reverse VAT is only 45142
|
|
$sql="
|
|
select count(*)
|
|
from jrnx j1 join jrn j2 on (j1.j_grpt=j2.jr_grpt_id)
|
|
where
|
|
j2.jr_mt ='1572714478.3155'
|
|
and j1.j_poste ='45142'
|
|
and j1.j_debit ='f'
|
|
";
|
|
$this->assertEquals(1, $g_connection->get_value($sql),'fails : reversed account credit is wrong');
|
|
|
|
$this->clean_operation();
|
|
|
|
}
|
|
/**
|
|
* @covers Acc_Ledger_Sale::insert
|
|
*/
|
|
public function testInsertPayment()
|
|
{
|
|
global $g_connection;
|
|
$this->clean_operation();
|
|
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",["1572714478.3155"]);
|
|
$this->assertEquals(0,$cnt);
|
|
|
|
$sql="
|
|
from quant_sold
|
|
join jrnx using(j_id)
|
|
join jrn on (jr_grpt_id=j_grpt)
|
|
where
|
|
jr_mt='1572714478.3155'
|
|
and j_qcode='MARCHA'
|
|
";
|
|
$array=$this->array;
|
|
$array["pa_id"]=array(2);
|
|
$array["op"]=array(0, 1);
|
|
$array["amount_t0"]=24.2;
|
|
$array["hplan"]=array(array(-1), array(-1));
|
|
$array["val"]=array(array(24, 2), array(1212.5));
|
|
$array["mt"]="1572714478.3155";
|
|
|
|
// create a payment method with a valid card
|
|
$array['mp_date'] ="";
|
|
$array['acompte'] = 0;
|
|
$array['e_mp'] = 1;
|
|
|
|
$this->object->insert($array);
|
|
$this->assertEquals($array['htva_march1'],$g_connection->get_value("select qs_price ".$sql));
|
|
|
|
// check payment
|
|
$nQuant_FinId=$this->get_reconcilied_operation();
|
|
|
|
$quant_fin=new Quant_Fin_SQL($g_connection,$nQuant_FinId);
|
|
$nQuantFin_Amount=$quant_fin->getp("qf_amount") ;
|
|
|
|
$this->assertTrue($nQuantFin_Amount ==bcadd( $array['tvac_march1'],$array['tvac_march0']),"error : sale {$array['tvac_march1']} and payment {$nQuantFin_Amount} not equal ");
|
|
|
|
// check card used in bank
|
|
$expected_bank=$g_connection->get_value("
|
|
select jrn_def_bank
|
|
from
|
|
jrn_def jd1
|
|
join payment_method pm1 on (jd1.jrn_def_id=pm1.mp_jrn_def_id)
|
|
where mp_id=$1",[$array['e_mp']]);
|
|
|
|
$found_bank =$quant_fin->getp("qf_bank");
|
|
|
|
$this->assertTrue($expected_bank==$found_bank,"error : payment done with a wrong card {$found_bank} instead of $expected_bank");
|
|
|
|
$this->clean_operation();
|
|
|
|
}
|
|
|
|
/**
|
|
* @brief return the reconcilied operation of this->object
|
|
* @return mixed|string
|
|
* @throws Exception
|
|
*/
|
|
private function get_reconcilied_operation()
|
|
{
|
|
global $g_connection;
|
|
$nValue=$g_connection->get_value("select jra_concerned
|
|
from jrn_rapt where jr_id=$1",[$this->object->jr_id]);
|
|
$nQuant_FinId=$g_connection->get_value("select qf_id from quant_fin where jr_id=$1",[$nValue]);
|
|
return $nQuant_FinId;
|
|
}
|
|
/**
|
|
* @covers Acc_Ledger_Sale::confirm
|
|
*/
|
|
public function testConfirm()
|
|
{
|
|
$array=$this->array;
|
|
$res=$this->object->confirm($array);
|
|
\Noalyss\Facility::save_file(__DIR__."/file"
|
|
, "Acc_Ledger_Sale_confirm.html"
|
|
, \Noalyss\Facility::page_start().$res);
|
|
$this->assertStringContainsString(
|
|
'<input type="button" class="button" value="Vérifiez Imputation Analytique" onClick="verify_ca(\'\');">',
|
|
$res);
|
|
$this->assertStringContainsString('id="e_march1_tva_id" NAME="e_march1_tva_id" VALUE="1"', $res);
|
|
$this->assertStringContainsString("anc_key_choice(25,'t1',1212.5,'');", $res);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* @covers Acc_Ledger_Sale::input
|
|
*
|
|
*/
|
|
public function testInput()
|
|
{
|
|
global $g_connection;
|
|
$_REQUEST['ac']='VEN';
|
|
$object=new Acc_Ledger_Sale($g_connection, 2);
|
|
|
|
$info=$object->input($this->array);
|
|
|
|
var_dump($info);
|
|
\Noalyss\Facility::save_file(__DIR__."/file","debug",$info);
|
|
if (!is_string($info))
|
|
{
|
|
$this->assertTrue(FALSE);
|
|
}
|
|
if (empty($info)) {
|
|
return;
|
|
}
|
|
\Noalyss\Facility::save_file(__DIR__."/file", "Acc_Ledger_Sale_input.html",
|
|
\Noalyss\Facility::page_start().
|
|
$info);
|
|
echo "Save ".__DIR__."/file", "Acc_Ledger_Sale_input.html";
|
|
|
|
$this->assertStringContainsString(
|
|
'additional_tax_div',
|
|
$info);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers Acc_Ledger_Sale::heading_detail_sale
|
|
*/
|
|
public function testHeading_detail_sale()
|
|
{
|
|
$a=$this->object->heading_detail_sale();
|
|
$this->assertEquals(34,count($a));
|
|
}
|
|
/**
|
|
* @covers Acc_Ledger_Sale::get_detail_sale
|
|
*/
|
|
public function testget_detail_sale()
|
|
{
|
|
// 92 = 1.1.2018 and 103 = 31.12.2018
|
|
$ret=$this->object->get_detail_sale(92,103,'all');
|
|
$this->assertEquals(7,Database::num_row($ret),"all operation (no filter)");
|
|
|
|
|
|
$ret=$this->object->get_detail_sale(92,103,'paid');
|
|
$this->assertEquals(2,Database::num_row($ret),'only paid operations');
|
|
|
|
$ret=$this->object->get_detail_sale(92,103,'unpaid');
|
|
$this->assertEquals(5,Database::num_row($ret),'only unpaid operations');
|
|
}
|
|
/**
|
|
* @testdox Reverse VAT4 :Use 2 different VAT Autoreverse mix negative and positive amounts
|
|
* @covers Acc_Ledger_Sale::insert
|
|
* @return void
|
|
*/
|
|
function testInsertReverseVAT4() {
|
|
global $g_connection;
|
|
$array=$this->array1;
|
|
$old_autoreverse=$g_connection->get_value("select tva_both_side from tva_rate where tva_id=3 ");
|
|
// set autoreverse to 1
|
|
$g_connection->get_value("update tva_rate set tva_both_side = 1 where tva_id=3 ");
|
|
$array['e_march1_tva_id']=3;
|
|
// clean
|
|
$g_connection->exec_sql("delete from jrn where jr_mt=$1",[1734717784.385]);
|
|
$this->object->insert($array);
|
|
|
|
$accounting=new \Acc_Operation($g_connection);
|
|
$accounting->jr_id=$this->object->jr_id;
|
|
$aResult=$accounting->get_jrnx_detail();
|
|
|
|
$this->assertTrue(count($aResult)==7, 'Number of rows is '.count($aResult)."instead of 7");
|
|
|
|
foreach($aResult as $result) {
|
|
switch ($result['j_poste']) {
|
|
case '41142':
|
|
if ( $result['debit']=='D')
|
|
$this->assertEquals(4.20, $result['j_montant'],"erreur account {$result['j_poste']}");
|
|
else
|
|
$this->assertEquals(1.05, $result['j_montant'],"erreur account {$result['j_poste']}");
|
|
break;
|
|
case '7000005':
|
|
if ( $result['debit']=='D')
|
|
$this->assertEquals(5, $result['j_montant'],"erreur account {$result['j_poste']}");
|
|
else
|
|
$this->assertEquals(20, $result['j_montant'],"erreur account {$result['j_poste']}");
|
|
break;
|
|
case '4000005':
|
|
$this->assertEquals(15, $result['j_montant'],"erreur account {$result['j_poste']}");
|
|
break;
|
|
}
|
|
}
|
|
|
|
// cancel change
|
|
$g_connection->get_value("update tva_rate set tva_both_side = $1 where tva_id=3 ",[$old_autoreverse]);
|
|
$g_connection->exec_sql("delete from jrn where jr_mt=$1",[$array['mt']]);
|
|
$g_connection->exec_sql('delete from jrnx where jrnx.j_grpt not in (select jr_grpt_id from jrn)');
|
|
|
|
}
|
|
/**
|
|
* @testdox Reverse VAT5 :Use 2 same VAT Autoreverse mix negative and positive amounts
|
|
* @covers Acc_Ledger_Sale::insert
|
|
* @return void
|
|
*/
|
|
function testInsertReverseVAT5() {
|
|
global $g_connection;
|
|
$array=$this->array1;
|
|
|
|
$array['e_march1_tva_id']=5;
|
|
|
|
// clean0
|
|
$g_connection->exec_sql("delete from jrn where jr_mt=$1",[1734717784.385]);
|
|
$this->object->insert($array);
|
|
|
|
$accounting=new \Acc_Operation($g_connection);
|
|
$accounting->jr_id=$this->object->jr_id;
|
|
$aResult=$accounting->get_jrnx_detail();
|
|
|
|
$this->assertTrue(count($aResult)==7, 'Number of rows is '.count($aResult)."instead of 7");
|
|
|
|
foreach($aResult as $result) {
|
|
switch ($result['j_poste']) {
|
|
case '41142':
|
|
if ( $result['debit']=='D')
|
|
$this->assertEquals(4.20, $result['j_montant'],"erreur account {$result['j_poste']}");
|
|
else
|
|
$this->assertEquals(1.05, $result['j_montant'],"erreur account {$result['j_poste']}");
|
|
break;
|
|
case '7000005':
|
|
if ( $result['debit']=='D')
|
|
$this->assertEquals(5, $result['j_montant'],"erreur account {$result['j_poste']}");
|
|
else
|
|
$this->assertEquals(20, $result['j_montant'],"erreur account {$result['j_poste']}");
|
|
break;
|
|
case '4000005':
|
|
$this->assertEquals(15, $result['j_montant'],"erreur account {$result['j_poste']}");
|
|
break;
|
|
}
|
|
}
|
|
|
|
// cancel change
|
|
|
|
$g_connection->exec_sql("delete from jrn where jr_mt=$1",[$array['mt']]);
|
|
$g_connection->exec_sql('delete from jrnx where jrnx.j_grpt not in (select jr_grpt_id from jrn)');
|
|
|
|
}
|
|
|
|
}
|