NEW #0002395: C0TVA : pouvoir choisir la contrepartie pour l'autoliquidation

This commit is contained in:
sparkyx 2024-12-06 17:32:17 +01:00
parent 87930cbe31
commit 2b2a21f7b6
10 changed files with 452 additions and 11 deletions

View file

@ -26,7 +26,9 @@ require_once NOALYSS_INCLUDE.'/lib/user_common.php';
require_once NOALYSS_INCLUDE.'/lib/ac_common.php';
/*!\brief Handle the ledger of purchase,
/*!
* \class Acc_Ledger_Purchase
* \brief Handle the ledger of purchase,
*
*
*/
@ -39,7 +41,8 @@ class Acc_Ledger_Purchase extends Acc_Ledger
parent::__construct($p_cn,$p_init);
$this->payment_operation=-1;
}
/*!\brief verify that the data are correct before inserting or confirming
/*!
* \brief verify that the data are correct before inserting or confirming
*\param an array (usually $_POST)
*\return String
*\throw Exception if an error occurs
@ -872,7 +875,9 @@ class Acc_Ledger_Purchase extends Acc_Ledger
if ( $oTva->get_parameter("both_side")==1 )
{
$poste_vat=$oTva->get_side('c');
// $x temp variable is the tva_reverse_account and will be used to check $poste_vat
$x=$oTva->get_parameter("tva_reverse_account");
$poste_vat =(trim($x??"")=="")? $oTva->get_side('c'):$x;
if ( $poste_vat == '#')
{
$poste_vat=$oTva->get_side('d');

View file

@ -585,7 +585,11 @@ class Acc_Ledger_Sale extends Acc_Ledger {
}
// if TVA is on both side, we deduce it immediately
if ($oTva->get_parameter("both_side") == 1) {
$poste_vat = $oTva->get_side('d');
// $x temp variable is the tva_reverse_account and will be used to check $poste_vat
$x=$oTva->get_parameter("tva_reverse_account");
$poste_vat =(trim($x??"")=="")? $oTva->get_side('d'):$x;
if ($poste_vat == '#') $poste_vat=$oTva->get_side('c');
$cust_amount = bcadd($tot_amount, $tot_tva);
$acc_operation = new Acc_Operation($this->db);
$acc_operation->date = $e_date;

View file

@ -41,13 +41,17 @@ class Acc_Tva
"comment"=>"tva_comment",
"account"=>"tva_poste",
"both_side"=>'tva_both_side',
'tva_code');
'tva_reverse_account'=>'tva_reverse_account',
'tva_code'=>'tva_code');
public $tva_id,
$tva_label,
$tva_rate,
$tva_comment,
$tva_poste,
$tva_both_side,$tva_code;
$tva_both_side,
$tva_code,
$tva_reverse_account;
private $cn; //!< Database connection
private Tva_Rate_SQL $tva_rate_sql;
@ -63,6 +67,7 @@ class Acc_Tva
$this->tva_poste=&$this->tva_rate_sql->tva_poste;
$this->tva_both_side=&$this->tva_rate_sql->tva_both_side;
$this->tva_code=&$this->tva_rate_sql->tva_code;
$this->tva_reverse_account=&$this->tva_rate_sql->tva_reverse_account;
}
/**
@ -90,7 +95,7 @@ class Acc_Tva
return $this->$idx;
}
echo (__FILE__.":".__LINE__.'Erreur attribut inexistant');
echo (__FILE__.":".__LINE__."AT97:Erreur attribut inexistant [$p_string]");
}
public function set_parameter($p_string,$p_value)
{

View file

@ -36,7 +36,7 @@ class Tva_Rate_MTable extends Manage_Table_SQL
//!< previous tva_id, used to know if we update or insert,
private $previous_id;
private $a_comment; //!< Supplemental explanation
/**
*
@ -52,15 +52,18 @@ class Tva_Rate_MTable extends Manage_Table_SQL
$this->set_col_label("tva_rate", _("taux"));
$this->set_col_label("tva_comment", _("Description"));
$this->set_col_label("tva_both_side", _("Autoliquidation"));
$this->set_col_label("tva_reverse_account", _('Poste comptable autoliquidation'));
$this->set_col_label("tva_sale", _("TVA Vente (C)"));
$this->set_col_label("tva_purchase", _("TVA Achat (D)"));
$this->set_property_visible('tva_reverse_account', false);
$this->set_col_type("tva_both_side", "select",
array(
["value"=>0, "label"=>_("Non")],
["value"=>1, "label"=>_("Oui")]
));
$this->set_col_type("tva_reverse_account", 'custom');
$this->set_property_updatable("tva_id", true);
$this->set_col_label("tva_payment_purchase",_("Exigible achat"));
$this->set_col_type("tva_payment_purchase","select",
@ -76,9 +79,18 @@ class Tva_Rate_MTable extends Manage_Table_SQL
array("value"=>'P',"label"=>"Paiement")
)
);
$this->a_info=["tva_purchase"=>44,"tva_both_side"=>43,"tva_sale"=>45
,"tva_payment_sale"=>74,"tva_payment_purchase"=>74];
$this->a_info=[
"tva_purchase"=>44,"tva_both_side"=>43,"tva_sale"=>45
,"tva_payment_sale"=>74,"tva_payment_purchase"=>74,'tva_reverse_account'=>88];
$this->previous_id=null;
$this->a_comment=array(
'tva_purchase'=>_("Ne donnez pas ce poste comptable si ce code n'est pas utilisé à l'achat"),
'tva_both_side'=>_("Autoliquidation : Utilisé en même temps au crédit et au débit"),
'tva_sale'=>_("Ne donnez pas ce poste comptable si ce code n'est pas utilisé à la vente"),
'tva_payment_purchase'=>_('TVA due ou récupérable quand l\'opération est payée ou exécutée'),
'tva_payment_sale'=>_('TVA due ou récupérable quand l\'opération est payée ou exécutée'),
'tva_reverse_account'=>_("Forcer ce poste comptable pour autoliquidation : par défault, le poste d'autoliquidation est calculé : soit celui qui est en contrepartie, soit le même (voir manuel)")
);
}
/**
@ -107,6 +119,7 @@ class Tva_Rate_MTable extends Manage_Table_SQL
function input()
{
$nb_order=count($this->a_order);
$this->set_property_visible('tva_reverse_account', true);
echo "<table>";
for ($i=0; $i<$nb_order; $i++)
{
@ -181,6 +194,16 @@ class Tva_Rate_MTable extends Manage_Table_SQL
echo $inum->input();
echo \HtmlInput::hidden("old_tva_id",$value);
} elseif ($key=='tva_reverse_account')
{
$text=new IPoste("tva_reverse_account");
$text->value=$value;
$min_size=10;
$text->set_attribute('gDossier', Dossier::id());
$text->set_attribute('jrn', 0);
$text->set_attribute('account', 'tva_reverse_account');
$text->size=$min_size;
echo $text->input();
}
echo "</td>";
}
@ -190,12 +213,28 @@ class Tva_Rate_MTable extends Manage_Table_SQL
HtmlInput::hidden($key, $value)
);
}
echo '<td class="text-muted">';
if (isset ($this->a_comment[$key])) {
echo $this->a_comment[$key];
}
echo '</td>';
}
echo "</tr>";
}
echo "</table>";
}
/**
* @brief add the TVA_REVERSE_ACCOUNT
* @return void
*/
function from_request()
{
parent::from_request();
$http=new \HttpInput();
$this->table->tva_reverse_account=$http->request('tva_reverse_account');
}
/**
* @brief save the data in TVA_RATE
* if tva_both_side is 1 and tva_purchase or tva_sale is empty then
@ -230,6 +269,7 @@ class Tva_Rate_MTable extends Manage_Table_SQL
$tva_rate->setp("tva_label", $this->table->tva_label);
$tva_rate->setp("tva_comment", $this->table->tva_comment);
$tva_rate->setp("tva_both_side", $this->table->tva_both_side);
$tva_rate->setp("tva_reverse_account", $this->table->tva_reverse_account);
// TVA accounting must be joined and separated with a comma
$tva_purchase=(trim($this->table->tva_purchase)=="")?"#":$this->table->tva_purchase;
@ -249,7 +289,7 @@ class Tva_Rate_MTable extends Manage_Table_SQL
}
/**
* Check data are valid
* @brief Check data are valid
* 1. tva_rate between 0 & 1
* 2. label is uniq
* 3. accounting must exist
@ -340,6 +380,23 @@ class Tva_Rate_MTable extends Manage_Table_SQL
if (isNumber($this->table->tva_code) == 1){
$this->set_error("tva_code", _("code tva : doit aussi contenir des lettres"));
}
/**
* auto reverse VAT : check that the accounting is used
*/
if ( $this->table->tva_both_side==0 && trim($this->table->tva_reverse_account??"") != "")
{
$this->set_error("tva_reverse_account", _("Pas d'autoliquidation demandé"));
}
if ( $this->table->tva_both_side==1 && trim($this->table->tva_reverse_account??"") != "")
{
$count=$cn->get_value("select count(*) from tmp_pcmn where pcm_val = $1",
[$this->table->tva_reverse_account]);
if ($count==0)
{
$this->set_error("tva_reverse_account", _("Poste comptable inexistant"));
}
}
if ($this->count_error()!=0)
return false;
return true;

View file

@ -51,6 +51,7 @@ class Tva_Rate_SQL extends Table_Data_SQL
,"tva_payment_purchase"=>"tva_payment_purchase"
,"tva_payment_sale"=>"tva_payment_sale"
,"tva_code"=>"tva_code"
,'tva_reverse_account'=>'tva_reverse_account'
);
/*
* Type of columns
@ -65,6 +66,7 @@ class Tva_Rate_SQL extends Table_Data_SQL
,"tva_payment_purchase"=>"text"
,"tva_payment_sale"=>"text"
,"tva_code"=>"text"
,'tva_reverse_account'=>'text'
);

View file

@ -49,6 +49,7 @@ class V_Tva_Rate_SQL extends Table_Data_SQL
, "tva_purchase"=>"tva_purchase"
, "tva_sale"=>"tva_sale"
, "tva_both_side"=>"tva_both_side"
,'tva_reverse_account'=>'tva_reverse_account'
,'tva_payment_purchase'=>'tva_payment_purchase'
,'tva_payment_sale'=>'tva_payment_sale'
@ -65,6 +66,7 @@ class V_Tva_Rate_SQL extends Table_Data_SQL
, "tva_purchase"=>"text"
, "tva_sale"=>"text"
, "tva_both_side"=>"numeric"
,'tva_reverse_account'=>'text'
, 'tva_payment_purchase'=>'text'
, 'tva_payment_sale'=>'text'
);

View file

@ -121,4 +121,6 @@ content[84]="<?php echo htmlspecialchars(_("En Belgique, l'exercice commence par
content[85]="<?php echo htmlspecialchars(_("Solde créditeur au lieu de débiteur"),ENT_QUOTES)?>";
content[86]="<?php echo htmlspecialchars(_("Solde débiteur au lieu de créditeur"),ENT_QUOTES)?>";
content[87]="<?php echo htmlspecialchars(_("Uniquement pour les choix, séparer les valeurs possibles par un |"),ENT_QUOTES)?>";
content[88]="<?php echo htmlspecialchars(_("Par défault, le poste d'autoliquidation est celui qui est au débit pour les ventes et au crédit pour les achats"),ENT_QUOTES)?>";
</script>

View file

@ -1,2 +1,22 @@
alter table tva_rate add column tva_reverse_account account_type;
alter table tva_rate add constraint fk_tva_reverse_account foreign key (tva_reverse_account) references tmp_pcmn(pcm_val) on delete set null on update cascade ;
comment on column tva_rate.tva_reverse_account is 'Accouting for reversed VAT';
drop VIEW public.v_tva_rate;
CREATE OR REPLACE VIEW public.v_tva_rate
AS SELECT tva_id,
tva_rate,
tva_code,
tva_label,
tva_comment,
tva_reverse_account,
split_part(tva_poste, ','::text, 1) AS tva_purchase,
split_part(tva_poste, ','::text, 2) AS tva_sale,
tva_both_side,
tva_payment_purchase,
tva_payment_sale
FROM tva_rate;

View file

@ -65,6 +65,11 @@ class Acc_Ledger_PurchaseTest extends TestCase
"p_currency_code"=>1
);
// 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");
}
/**
@ -458,6 +463,9 @@ class Acc_Ledger_PurchaseTest extends TestCase
$g_connection->exec_sql("delete from jrn where jr_mt=$1", [$p_internal]);
$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_pj3 restart with 52");
// 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");
}
/**
@ -476,4 +484,168 @@ class Acc_Ledger_PurchaseTest extends TestCase
$ret=$this->object->get_detail_purchase(92,103,'unpaid');
$this->assertEquals(5,Database::num_row($ret),'only unpaid operations');
}
/**
* @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"]="1572704002.1732";
$this->clean_operation();
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",[$array["mt"]]);
$this->assertEquals(0,$cnt);
$this->object->insert($array);
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",[$array["mt"]]);
$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 ='1572704002.1732'
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 ='1572704002.1732'
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"]="1572704002.1732";
$this->clean_operation();
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",[$array["mt"]]);
$this->assertEquals(0,$cnt);
$g_connection->exec_sql("update tva_rate set tva_poste='41142,#' where tva_id=5");
$this->object->insert($array);
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",[$array["mt"]]);
$this->assertEquals(1,$cnt);
// check that the accounting for reverse VAT is only 41142
$sql="
select count(*)
from jrnx j1 join jrn j2 on (j1.j_grpt=j2.jr_grpt_id)
where
j2.jr_mt ='1572704002.1732'
and j1.j_poste ='41142'
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 ='1572704002.1732'
and j1.j_poste ='41142'
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_Purchase::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"]="1572704002.1732";
$this->clean_operation();
$cnt=$g_connection->get_value("select count(*) from jrn where jr_mt=$1",array($array["mt"]));
$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",array($array["mt"]));
$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 ='1572704002.1732'
and j1.j_poste ='4119999'
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 ='1572704002.1732'
and j1.j_poste ='41142'
and j1.j_debit ='t'
";
$this->assertEquals(1, $g_connection->get_value($sql),'fails : reversed account credit is wrong');
$this->clean_operation();
}
}

View file

@ -70,6 +70,12 @@ class Acc_Ledger_SaleTest extends TestCase
"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");
}
/**
@ -101,6 +107,11 @@ class Acc_Ledger_SaleTest extends TestCase
$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
@ -182,8 +193,169 @@ class Acc_Ledger_SaleTest extends TestCase
$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
*/