mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-11 12:01:23 +01:00
New: Support the Non Percu Recuperable vat in invoice form
This commit is contained in:
@@ -656,7 +656,7 @@ class Commande extends CommonObject
|
|||||||
// qty, pu, remise_percent et txtva
|
// qty, pu, remise_percent et txtva
|
||||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
|
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
@@ -1827,9 +1827,10 @@ class Commande extends CommonObject
|
|||||||
* \param qty Quantit<69>
|
* \param qty Quantit<69>
|
||||||
* \param remise_percent Pourcentage de remise de la ligne
|
* \param remise_percent Pourcentage de remise de la ligne
|
||||||
* \param tva_tx Taux TVA
|
* \param tva_tx Taux TVA
|
||||||
|
* \param info_bits Miscellanous informations on line
|
||||||
* \return int < 0 si erreur, > 0 si ok
|
* \return int < 0 si erreur, > 0 si ok
|
||||||
*/
|
*/
|
||||||
function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $txtva, $price_base_type='HT')
|
function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $txtva, $price_base_type='HT', $info_bits=0)
|
||||||
{
|
{
|
||||||
dolibarr_syslog("Commande::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $txtva");
|
dolibarr_syslog("Commande::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $txtva");
|
||||||
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
||||||
@@ -1849,7 +1850,7 @@ class Commande extends CommonObject
|
|||||||
// qty, pu, remise_percent et txtva
|
// qty, pu, remise_percent et txtva
|
||||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
|
|||||||
@@ -798,6 +798,7 @@ if (($_POST['action'] == 'addligne' || $_POST['action'] == 'addligne_predef') &&
|
|||||||
$prod->fetch($_POST['idprod']);
|
$prod->fetch($_POST['idprod']);
|
||||||
|
|
||||||
$tva_tx = get_default_tva($mysoc,$fac->client,$prod->tva_tx);
|
$tva_tx = get_default_tva($mysoc,$fac->client,$prod->tva_tx);
|
||||||
|
$tva_npr = get_default_npr($mysoc,$fac->client,$prod->tva_tx);
|
||||||
|
|
||||||
// On defini prix unitaire
|
// On defini prix unitaire
|
||||||
if ($conf->global->PRODUIT_MULTIPRICES == 1)
|
if ($conf->global->PRODUIT_MULTIPRICES == 1)
|
||||||
@@ -834,10 +835,14 @@ if (($_POST['action'] == 'addligne' || $_POST['action'] == 'addligne_predef') &&
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$pu_ht=$_POST['pu'];
|
$pu_ht=$_POST['pu'];
|
||||||
$tva_tx=$_POST['tva_tx'];
|
$tva_tx=eregi_replace('\*','',$_POST['tva_tx']);
|
||||||
|
$tva_npr=eregi('\*',$_POST['tva_tx'])?1:0;
|
||||||
$desc=$_POST['dp_desc'];
|
$desc=$_POST['dp_desc'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$info_bit=0;
|
||||||
|
if ($tva_npr) $info_bit |= 0x01;
|
||||||
|
|
||||||
// Insere ligne
|
// Insere ligne
|
||||||
$result = $fac->addline(
|
$result = $fac->addline(
|
||||||
$_POST['facid'],
|
$_POST['facid'],
|
||||||
@@ -850,7 +855,7 @@ if (($_POST['action'] == 'addligne' || $_POST['action'] == 'addligne_predef') &&
|
|||||||
$date_start,
|
$date_start,
|
||||||
$date_end,
|
$date_end,
|
||||||
0,
|
0,
|
||||||
'',
|
$info_bit,
|
||||||
'',
|
'',
|
||||||
$price_base_type,
|
$price_base_type,
|
||||||
$pu_ttc
|
$pu_ttc
|
||||||
@@ -888,6 +893,14 @@ if ($_POST['action'] == 'updateligne' && $user->rights->facture->creer && $_POST
|
|||||||
$date_end=$_POST['date_endyear'].'-'.$_POST['date_endmonth'].'-'.$_POST['date_endday'];
|
$date_end=$_POST['date_endyear'].'-'.$_POST['date_endmonth'].'-'.$_POST['date_endday'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Define info_bits
|
||||||
|
$info_bits=0;
|
||||||
|
if (eregi('\*',$_POST['tva_tx'])) $info_bits |= 0x01;
|
||||||
|
|
||||||
|
// Define vat_rate
|
||||||
|
$vat_rate=$_POST['tva_tx'];
|
||||||
|
$vat_rate=eregi_replace('\*','',$vat_rate);
|
||||||
|
|
||||||
$result = $fac->updateline($_POST['rowid'],
|
$result = $fac->updateline($_POST['rowid'],
|
||||||
$_POST['desc'],
|
$_POST['desc'],
|
||||||
$_POST['price'],
|
$_POST['price'],
|
||||||
@@ -895,7 +908,9 @@ if ($_POST['action'] == 'updateligne' && $user->rights->facture->creer && $_POST
|
|||||||
$_POST['remise_percent'],
|
$_POST['remise_percent'],
|
||||||
$date_start,
|
$date_start,
|
||||||
$date_end,
|
$date_end,
|
||||||
$_POST['tva_tx']
|
$vat_rate,
|
||||||
|
'HT',
|
||||||
|
$info_bits
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($_REQUEST['lang_id'])
|
if ($_REQUEST['lang_id'])
|
||||||
@@ -2405,7 +2420,7 @@ else
|
|||||||
}
|
}
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
}
|
}
|
||||||
print '<td align="right">'.vatrate($objp->tva_taux).'%</td>';
|
print '<td align="right">'.vatrate($objp->tva_taux).'%'.($objp->info_bits & 1?' *':'').'</td>';
|
||||||
print '<td align="right">'.price($objp->subprice)."</td>\n";
|
print '<td align="right">'.price($objp->subprice)."</td>\n";
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
if (($objp->info_bits & 2) != 2)
|
if (($objp->info_bits & 2) != 2)
|
||||||
@@ -2507,10 +2522,7 @@ else
|
|||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
if(! $soc->tva_assuj)
|
print $html->select_tva('tva_tx',$objp->tva_taux,$mysoc,$soc,'',$objp->info_bits);
|
||||||
print '<input type="hidden" name="tva_tx" value="0">0%';
|
|
||||||
else
|
|
||||||
print $html->select_tva('tva_tx',$objp->tva_taux,$mysoc,$soc);
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="right"><input size="6" type="text" class="flat" name="price" value="'.price($objp->subprice,0,'',0).'"></td>';
|
print '<td align="right"><input size="6" type="text" class="flat" name="price" value="'.price($objp->subprice,0,'',0).'"></td>';
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
@@ -2591,9 +2603,7 @@ else
|
|||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
if (! $soc->tva_assuj)
|
|
||||||
print '<input type="hidden" name="tva_tx" value="0">0%';
|
|
||||||
else
|
|
||||||
$html->select_tva('tva_tx',$conf->defaulttx,$mysoc,$soc);
|
$html->select_tva('tva_tx',$conf->defaulttx,$mysoc,$soc);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="right"><input type="text" name="pu" size="6"></td>';
|
print '<td align="right"><input type="text" name="pu" size="6"></td>';
|
||||||
|
|||||||
@@ -358,7 +358,7 @@ class FactureRec extends Facture
|
|||||||
/**
|
/**
|
||||||
* \brief Ajoute une ligne de facture
|
* \brief Ajoute une ligne de facture
|
||||||
*/
|
*/
|
||||||
function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0, $price_base_type='HT')
|
function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0, $price_base_type='HT', $info_bits=0)
|
||||||
{
|
{
|
||||||
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
||||||
|
|
||||||
@@ -376,7 +376,7 @@ class FactureRec extends Facture
|
|||||||
// qty, pu, remise_percent et txtva
|
// qty, pu, remise_percent et txtva
|
||||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
|
|||||||
@@ -670,7 +670,7 @@ class Contrat extends CommonObject
|
|||||||
$pu = price2num($pu,'MU');
|
$pu = price2num($pu,'MU');
|
||||||
$txtva = price2num($txtva,'MU');
|
$txtva = price2num($txtva,'MU');
|
||||||
|
|
||||||
dolibarr_syslog("Contrat::addline $desc, $pu, $qty, $txtva, $fk_product, $remise_percent, $date_start, $date_end, $price_base_type");
|
dolibarr_syslog("Contrat::addline $desc, $pu, $qty, $txtva, $fk_product, $remise_percent, $date_start, $date_end, $price_base_type, $info_bits");
|
||||||
|
|
||||||
if ($this->statut == 0)
|
if ($this->statut == 0)
|
||||||
{
|
{
|
||||||
@@ -693,7 +693,7 @@ class Contrat extends CommonObject
|
|||||||
// qty, pu, remise_percent et txtva
|
// qty, pu, remise_percent et txtva
|
||||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ class Facture extends CommonObject
|
|||||||
var $specimen;
|
var $specimen;
|
||||||
//! Numero d'erreur de 512 <20> 1023
|
//! Numero d'erreur de 512 <20> 1023
|
||||||
var $errno = 0;
|
var $errno = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Constructeur de la classe
|
\brief Constructeur de la classe
|
||||||
\param DB handler acc<63>s base de donn<6E>es
|
\param DB handler acc<63>s base de donn<6E>es
|
||||||
@@ -1337,7 +1338,7 @@ class Facture extends CommonObject
|
|||||||
* par l'appelant par la methode get_default_tva(societe_vendeuse,societe_acheteuse,taux_produit)
|
* par l'appelant par la methode get_default_tva(societe_vendeuse,societe_acheteuse,taux_produit)
|
||||||
* et le desc doit deja avoir la bonne valeur (a l'appelant de gerer le multilangue)
|
* et le desc doit deja avoir la bonne valeur (a l'appelant de gerer le multilangue)
|
||||||
*/
|
*/
|
||||||
function addline($facid, $desc, $pu_ht, $qty, $txtva, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits='', $fk_remise_except='', $price_base_type='HT', $pu_ttc=0)
|
function addline($facid, $desc, $pu_ht, $qty, $txtva, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits=0, $fk_remise_except='', $price_base_type='HT', $pu_ttc=0)
|
||||||
{
|
{
|
||||||
dolibarr_syslog("Facture::Addline facid=$facid,desc=$desc,pu_ht=$pu_ht,qty=$qty,txtva=$txtva,fk_product=$fk_product,remise_percent=$remise_percent,date_start=$date_start,date_end=$date_end,ventil=$ventil,info_bits=$info_bits,fk_remise_except=$fk_remise_except,price_base_type=$price_base_type,pu_ttc=$pu_ttc", LOG_DEBUG);
|
dolibarr_syslog("Facture::Addline facid=$facid,desc=$desc,pu_ht=$pu_ht,qty=$qty,txtva=$txtva,fk_product=$fk_product,remise_percent=$remise_percent,date_start=$date_start,date_end=$date_end,ventil=$ventil,info_bits=$info_bits,fk_remise_except=$fk_remise_except,price_base_type=$price_base_type,pu_ttc=$pu_ttc", LOG_DEBUG);
|
||||||
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
||||||
@@ -1369,7 +1370,7 @@ class Facture extends CommonObject
|
|||||||
// qty, pu, remise_percent et txtva
|
// qty, pu, remise_percent et txtva
|
||||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
|
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
@@ -1454,13 +1455,15 @@ class Facture extends CommonObject
|
|||||||
* \param date_end Date de fin de validit<69> du service
|
* \param date_end Date de fin de validit<69> du service
|
||||||
* \param tva_tx Taux TVA
|
* \param tva_tx Taux TVA
|
||||||
* \param price_base_type HT ou TTC
|
* \param price_base_type HT ou TTC
|
||||||
|
* \param info_bits Miscellanous informations
|
||||||
* \return int < 0 si erreur, > 0 si ok
|
* \return int < 0 si erreur, > 0 si ok
|
||||||
*/
|
*/
|
||||||
function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $date_start, $date_end, $txtva, $price_base_type='HT')
|
function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $date_start, $date_end, $txtva, $price_base_type='HT', $info_bits=0)
|
||||||
{
|
{
|
||||||
dolibarr_syslog("Facture::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $txtva", LOG_DEBUG);
|
|
||||||
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
||||||
|
|
||||||
|
dolibarr_syslog("Facture::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $txtva, $price_base_type, $info_bits", LOG_DEBUG);
|
||||||
|
|
||||||
if ($this->brouillon)
|
if ($this->brouillon)
|
||||||
{
|
{
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
@@ -1476,7 +1479,7 @@ class Facture extends CommonObject
|
|||||||
// qty, pu, remise_percent et txtva
|
// qty, pu, remise_percent et txtva
|
||||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
@@ -1509,6 +1512,7 @@ class Facture extends CommonObject
|
|||||||
$ligne->total_ht=$total_ht;
|
$ligne->total_ht=$total_ht;
|
||||||
$ligne->total_tva=$total_tva;
|
$ligne->total_tva=$total_tva;
|
||||||
$ligne->total_ttc=$total_ttc;
|
$ligne->total_ttc=$total_ttc;
|
||||||
|
$ligne->info_bits=$info_bits;
|
||||||
|
|
||||||
// A ne plus utiliser
|
// A ne plus utiliser
|
||||||
$ligne->price=$price;
|
$ligne->price=$price;
|
||||||
@@ -3108,7 +3112,7 @@ class FactureLigne
|
|||||||
$sql.= ",total_ttc=".price2num($this->total_ttc)."";
|
$sql.= ",total_ttc=".price2num($this->total_ttc)."";
|
||||||
$sql.= " WHERE rowid = ".$this->rowid;
|
$sql.= " WHERE rowid = ".$this->rowid;
|
||||||
|
|
||||||
dolibarr_syslog("FactureLigne::update sql=$sql");
|
dolibarr_syslog("FactureLigne::update sql=".$sql);
|
||||||
|
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@@ -3119,7 +3123,7 @@ class FactureLigne
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->error=$this->db->error();
|
$this->error=$this->db->error();
|
||||||
dolibarr_syslog("FactureLigne::update Error ".$this->error);
|
dolibarr_syslog("FactureLigne::update Error ".$this->error, LOG_ERR);
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1244,9 +1244,10 @@ class CommandeFournisseur extends Commande
|
|||||||
* \param qty Quantit<69>
|
* \param qty Quantit<69>
|
||||||
* \param remise_percent Pourcentage de remise de la ligne
|
* \param remise_percent Pourcentage de remise de la ligne
|
||||||
* \param tva_tx Taux TVA
|
* \param tva_tx Taux TVA
|
||||||
|
* \param info_bits Miscellanous informations
|
||||||
* \return int < 0 si erreur, > 0 si ok
|
* \return int < 0 si erreur, > 0 si ok
|
||||||
*/
|
*/
|
||||||
function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $txtva, $price_base_type='HT')
|
function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $txtva, $price_base_type='HT', $info_bits=0)
|
||||||
{
|
{
|
||||||
dolibarr_syslog("CommandeFournisseur::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $txtva");
|
dolibarr_syslog("CommandeFournisseur::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $txtva");
|
||||||
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
||||||
@@ -1266,7 +1267,7 @@ class CommandeFournisseur extends Commande
|
|||||||
// qty, pu, remise_percent et txtva
|
// qty, pu, remise_percent et txtva
|
||||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $price_base_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $price_base_type, $info_bits);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
|
|||||||
@@ -458,9 +458,10 @@ class FactureFournisseur extends Facture
|
|||||||
* \param qty Quantit<69>
|
* \param qty Quantit<69>
|
||||||
* \param idproduct Id produit
|
* \param idproduct Id produit
|
||||||
* \param price_base_type HT ou TTC
|
* \param price_base_type HT ou TTC
|
||||||
|
* \param info_bits Miscellanous informations of line
|
||||||
* \return int <0 si ko, >0 si ok
|
* \return int <0 si ko, >0 si ok
|
||||||
*/
|
*/
|
||||||
function updateline($id, $label, $pu, $tauxtva, $qty=1, $idproduct=0, $price_base_type='HT')
|
function updateline($id, $label, $pu, $tauxtva, $qty=1, $idproduct=0, $price_base_type='HT', $info_bits=0)
|
||||||
{
|
{
|
||||||
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
||||||
|
|
||||||
@@ -474,7 +475,7 @@ class FactureFournisseur extends Facture
|
|||||||
// qty, pu, remise_percent et txtva
|
// qty, pu, remise_percent et txtva
|
||||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
$tabprice = calcul_price_total($qty, $pu, 0, $tauxtva, 0, $price_base_type);
|
$tabprice = calcul_price_total($qty, $pu, 0, $tauxtva, 0, $price_base_type, $info_bits);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
|
|||||||
@@ -2176,22 +2176,29 @@ class Form
|
|||||||
/**
|
/**
|
||||||
* \brief Selection du taux de tva <20> appliquer
|
* \brief Selection du taux de tva <20> appliquer
|
||||||
* \param name Nom champ html
|
* \param name Nom champ html
|
||||||
* \param defaulttx For<6F>age du taux tva pr<70>-s<>lectionn<6E>. Mettre '' pour aucun forcage.
|
* \param selectedrate For<6F>age du taux tva pr<70>-s<>lectionn<6E>. Mettre '' pour aucun forcage.
|
||||||
* \param societe_vendeuse Objet soci<63>t<EFBFBD> vendeuse
|
* \param societe_vendeuse Objet soci<63>t<EFBFBD> vendeuse
|
||||||
* \param societe_acheteuse Objet soci<63>t<EFBFBD> acheteuse
|
* \param societe_acheteuse Objet soci<63>t<EFBFBD> acheteuse
|
||||||
* \param taux_produit Taux par defaut du produit vendu
|
* \param taux_produit Taux par defaut du produit vendu
|
||||||
|
* \param info_bits Miscellanous information on line
|
||||||
* \remarks Si vendeur non assujeti <20> TVA, TVA par d<>faut=0. Fin de r<>gle.
|
* \remarks Si vendeur non assujeti <20> TVA, TVA par d<>faut=0. Fin de r<>gle.
|
||||||
* Si le (pays vendeur = pays acheteur) alors la TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
* Si le (pays vendeur = pays acheteur) alors la TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||||
* Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et bien vendu = moyen de transports neuf (auto, bateau, avion), TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
|
* Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et bien vendu = moyen de transports neuf (auto, bateau, avion), TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
|
||||||
* Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et bien vendu autre que transport neuf alors la TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
* Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et bien vendu autre que transport neuf alors la TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||||
* Sinon la TVA propos<6F>e par d<>faut=0. Fin de r<>gle.
|
* Sinon la TVA propos<6F>e par d<>faut=0. Fin de r<>gle.
|
||||||
*/
|
*/
|
||||||
function select_tva($name='tauxtva', $defaulttx='', $societe_vendeuse='', $societe_acheteuse='', $taux_produit='')
|
function select_tva($name='tauxtva', $selectedrate='', $societe_vendeuse='', $societe_acheteuse='', $taux_produit='', $info_bits=0)
|
||||||
{
|
{
|
||||||
global $langs,$conf,$mysoc;
|
global $langs,$conf,$mysoc;
|
||||||
|
|
||||||
$txtva=array();
|
$txtva=array();
|
||||||
$libtva=array();
|
$libtva=array();
|
||||||
|
$nprtva=array();
|
||||||
|
|
||||||
|
// Define defaultnpr and defaultttx
|
||||||
|
$defaultnpr=($info_bits & 0x01);
|
||||||
|
$defaultnpr=(eregi('\*',$selectedrate) ? 1 : $defaultnpr);
|
||||||
|
$defaulttx=eregi_replace('\*','',$selectedrate);
|
||||||
|
|
||||||
//print $societe_vendeuse."-".$societe_acheteuse;
|
//print $societe_vendeuse."-".$societe_acheteuse;
|
||||||
if (is_object($societe_vendeuse) && ! $societe_vendeuse->pays_code)
|
if (is_object($societe_vendeuse) && ! $societe_vendeuse->pays_code)
|
||||||
@@ -2233,7 +2240,8 @@ class Form
|
|||||||
{
|
{
|
||||||
$obj = $this->db->fetch_object($resql);
|
$obj = $this->db->fetch_object($resql);
|
||||||
$txtva[$i] = $obj->taux;
|
$txtva[$i] = $obj->taux;
|
||||||
$libtva[$i] = $obj->taux.'%'.($obj->recuperableonly ? ' *':'');
|
$libtva[$i] = $obj->taux.'%';
|
||||||
|
$nprtva[$i] = $obj->recuperableonly;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2250,6 +2258,7 @@ class Form
|
|||||||
if ($defaulttx < 0 || strlen($defaulttx) == 0)
|
if ($defaulttx < 0 || strlen($defaulttx) == 0)
|
||||||
{
|
{
|
||||||
$defaulttx=get_default_tva($societe_vendeuse,$societe_acheteuse,$taux_produit);
|
$defaulttx=get_default_tva($societe_vendeuse,$societe_acheteuse,$taux_produit);
|
||||||
|
$defaultnpr=get_default_npr($societe_vendeuse,$societe_acheteuse,$taux_produit);
|
||||||
}
|
}
|
||||||
// Si taux par defaut n'a pu etre d<>termin<69>, on prend dernier de la liste.
|
// Si taux par defaut n'a pu etre d<>termin<69>, on prend dernier de la liste.
|
||||||
// Comme ils sont tri<72>s par ordre croissant, dernier = plus <20>lev<65> = taux courant
|
// Comme ils sont tri<72>s par ordre croissant, dernier = plus <20>lev<65> = taux courant
|
||||||
@@ -2267,16 +2276,21 @@ class Form
|
|||||||
|
|
||||||
for ($i = 0 ; $i < $nbdetaux ; $i++)
|
for ($i = 0 ; $i < $nbdetaux ; $i++)
|
||||||
{
|
{
|
||||||
print '<option value="'.$txtva[$i].'"';
|
//print "xxxxx".$txtva[$i]."-".$nprtva[$i];
|
||||||
if ($txtva[$i] == $defaulttx)
|
print '<option value="'.$txtva[$i];
|
||||||
|
print $nprtva[$i] ? '*': '';
|
||||||
|
print '"';
|
||||||
|
if ($txtva[$i] == $defaulttx && $nprtva[$i] == $defaultnpr)
|
||||||
{
|
{
|
||||||
print ' selected="true"';
|
print ' selected="true"';
|
||||||
}
|
}
|
||||||
print '>'.vatrate($libtva[$i]).'</option>';
|
print '>'.vatrate($libtva[$i]);
|
||||||
|
print $nprtva[$i] ? ' *': '';
|
||||||
|
print '</option>';
|
||||||
|
|
||||||
$this->tva_taux_value[$i] = $txtva[$i];
|
$this->tva_taux_value[$i] = $txtva[$i];
|
||||||
$this->tva_taux_libelle[$i] = $libtva[$i];
|
$this->tva_taux_libelle[$i] = $libtva[$i];
|
||||||
|
$this->tva_taux_npr[$i] = $nprtva[$i];
|
||||||
}
|
}
|
||||||
print '</select>';
|
print '</select>';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -988,7 +988,7 @@ function migrate_price_facture($db,$langs,$conf)
|
|||||||
$facligne= new FactureLigne($db);
|
$facligne= new FactureLigne($db);
|
||||||
$facligne->fetch($rowid);
|
$facligne->fetch($rowid);
|
||||||
|
|
||||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT',$info_bits);
|
||||||
$total_ht = $result[0];
|
$total_ht = $result[0];
|
||||||
$total_tva = $result[1];
|
$total_tva = $result[1];
|
||||||
$total_ttc = $result[2];
|
$total_ttc = $result[2];
|
||||||
@@ -1094,7 +1094,7 @@ function migrate_price_propal($db,$langs,$conf)
|
|||||||
$propalligne= new PropaleLigne($db);
|
$propalligne= new PropaleLigne($db);
|
||||||
$propalligne->fetch($rowid);
|
$propalligne->fetch($rowid);
|
||||||
|
|
||||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT',$info_bits);
|
||||||
$total_ht = $result[0];
|
$total_ht = $result[0];
|
||||||
$total_tva = $result[1];
|
$total_tva = $result[1];
|
||||||
$total_ttc = $result[2];
|
$total_ttc = $result[2];
|
||||||
@@ -1199,7 +1199,7 @@ function migrate_price_contrat($db,$langs,$conf)
|
|||||||
//$contratligne->fetch($rowid); Non requis car le update_total ne met a jour que chp redefinis
|
//$contratligne->fetch($rowid); Non requis car le update_total ne met a jour que chp redefinis
|
||||||
$contratligne->rowid=$rowid;
|
$contratligne->rowid=$rowid;
|
||||||
|
|
||||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT',$info_bits);
|
||||||
$total_ht = $result[0];
|
$total_ht = $result[0];
|
||||||
$total_tva = $result[1];
|
$total_tva = $result[1];
|
||||||
$total_ttc = $result[2];
|
$total_ttc = $result[2];
|
||||||
@@ -1302,7 +1302,7 @@ function migrate_price_commande($db,$langs,$conf)
|
|||||||
$commandeligne= new CommandeLigne($db);
|
$commandeligne= new CommandeLigne($db);
|
||||||
$commandeligne->fetch($rowid);
|
$commandeligne->fetch($rowid);
|
||||||
|
|
||||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT',$info_bits);
|
||||||
$total_ht = $result[0];
|
$total_ht = $result[0];
|
||||||
$total_tva = $result[1];
|
$total_tva = $result[1];
|
||||||
$total_ttc = $result[2];
|
$total_ttc = $result[2];
|
||||||
|
|||||||
@@ -1893,6 +1893,26 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Fonction qui renvoie si tva doit etre tva percue r<>cup<75>rable
|
||||||
|
\remarks Si vendeur non assujeti a TVA, TVA par d<>faut=0. Fin de r<>gle.
|
||||||
|
Si le (pays vendeur = pays acheteur) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||||
|
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
|
||||||
|
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||||
|
Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<>faut=0. Fin de r<>gle.
|
||||||
|
Sinon TVA propos<6F>e par d<>faut=0. Fin de r<>gle.
|
||||||
|
\param societe_vendeuse Objet soci<63>t<EFBFBD> vendeuse
|
||||||
|
\param societe_acheteuse Objet soci<63>t<EFBFBD> acheteuse
|
||||||
|
\param taux_produit Taux par defaut du produit vendu
|
||||||
|
\return float 0 or 1
|
||||||
|
*/
|
||||||
|
function get_default_npr($societe_vendeuse, $societe_acheteuse, $taux_produit)
|
||||||
|
{
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Renvoie oui ou non dans la langue choisie
|
\brief Renvoie oui ou non dans la langue choisie
|
||||||
\param yesno Variable pour test si oui ou non
|
\param yesno Variable pour test si oui ou non
|
||||||
|
|||||||
@@ -35,15 +35,16 @@
|
|||||||
\param txtva Taux tva
|
\param txtva Taux tva
|
||||||
\param remise_percent_global 0
|
\param remise_percent_global 0
|
||||||
\param price_base_type HT=on calcule sur le HT, TTC=on calcule sur le TTC
|
\param price_base_type HT=on calcule sur le HT, TTC=on calcule sur le TTC
|
||||||
|
\param info_bits Miscellanous informations on line
|
||||||
\return result[0,1,2,3,4,5] (total_ht, total_tva, total_ttc, pu_ht, pu_tva, pu_ttc)
|
\return result[0,1,2,3,4,5] (total_ht, total_tva, total_ttc, pu_ht, pu_tva, pu_ttc)
|
||||||
*/
|
*/
|
||||||
function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $remise_percent_global=0, $price_base_type='HT')
|
function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $remise_percent_global=0, $price_base_type='HT', $info_bits=0)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$result=array();
|
$result=array();
|
||||||
|
|
||||||
//dolibarr_syslog("price.lib::calcul_price_total $qty, $pu, $remise_percent_ligne, $txtva, $price_base_type");
|
//dolibarr_syslog("price.lib::calcul_price_total $qty, $pu, $remise_percent_ligne, $txtva, $price_base_type $info_bits");
|
||||||
if ($price_base_type == 'HT')
|
if ($price_base_type == 'HT')
|
||||||
{
|
{
|
||||||
// On travaille par defaut en partant du prix HT
|
// On travaille par defaut en partant du prix HT
|
||||||
|
|||||||
@@ -296,7 +296,7 @@ class Propal extends CommonObject
|
|||||||
// qty, pu, remise_percent et txtva
|
// qty, pu, remise_percent et txtva
|
||||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
@@ -375,11 +375,11 @@ class Propal extends CommonObject
|
|||||||
* \param price_base_type HT ou TTC
|
* \param price_base_type HT ou TTC
|
||||||
* \return int 0 en cas de succ<63>s
|
* \return int 0 en cas de succ<63>s
|
||||||
*/
|
*/
|
||||||
function updateline($rowid, $pu, $qty, $remise_percent=0, $txtva, $desc='', $price_base_type='HT')
|
function updateline($rowid, $pu, $qty, $remise_percent=0, $txtva, $desc='', $price_base_type='HT', $info_bits=0)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
dolibarr_syslog("Propal::UpdateLine $rowid, $pu, $qty, $remise_percent, $txtva, $desc, $price_base_type");
|
dolibarr_syslog("Propal::UpdateLine $rowid, $pu, $qty, $remise_percent, $txtva, $desc, $price_base_type, $info_bits");
|
||||||
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
||||||
|
|
||||||
if ($this->statut == 0)
|
if ($this->statut == 0)
|
||||||
@@ -405,7 +405,7 @@ class Propal extends CommonObject
|
|||||||
// qty, pu, remise_percent et txtva
|
// qty, pu, remise_percent et txtva
|
||||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
|
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
|
||||||
$total_ht = $tabprice[0];
|
$total_ht = $tabprice[0];
|
||||||
$total_tva = $tabprice[1];
|
$total_tva = $tabprice[1];
|
||||||
$total_ttc = $tabprice[2];
|
$total_ttc = $tabprice[2];
|
||||||
|
|||||||
Reference in New Issue
Block a user