Suite gestion des arrondis. C'est fait sur les contrats
This commit is contained in:
parent
d827dd626b
commit
6ba0d4aa06
@ -1198,6 +1198,9 @@ class Contrat extends CommonObject
|
||||
|
||||
class ContratLigne
|
||||
{
|
||||
var $db;
|
||||
var $error;
|
||||
|
||||
var $id;
|
||||
var $desc;
|
||||
var $libelle;
|
||||
@ -1216,9 +1219,16 @@ class ContratLigne
|
||||
var $date_fin_prevue;
|
||||
var $date_fin_reel;
|
||||
|
||||
function ContratLigne()
|
||||
|
||||
/**
|
||||
* \brief Constructeur d'objets ligne de contrat
|
||||
* \param DB handler d'accès base de donnée
|
||||
*/
|
||||
function ContratLigne($DB)
|
||||
{
|
||||
$this->db= $DB;
|
||||
}
|
||||
|
||||
|
||||
function is_activated()
|
||||
{
|
||||
@ -1283,6 +1293,38 @@ class ContratLigne
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Mise a jour en base des champs total_xxx de ligne
|
||||
* \remarks Utilisé par migration
|
||||
* \return int <0 si ko, >0 si ok
|
||||
*/
|
||||
function update_total()
|
||||
{
|
||||
$this->db->begin();
|
||||
|
||||
// Mise a jour ligne en base
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."contratdet SET";
|
||||
$sql.= " total_ht=".price2num($this->total_ht,'MT')."";
|
||||
$sql.= ",total_tva=".price2num($this->total_tva,'MT')."";
|
||||
$sql.= ",total_ttc=".price2num($this->total_ttc,'MT')."";
|
||||
$sql.= " WHERE rowid = ".$this->rowid;
|
||||
|
||||
dolibarr_syslog("ContratLigne::update_total sql=$sql");
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
dolibarr_syslog("ContratLigne::update_total Error ".$this->error);
|
||||
$this->db->rollback();
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -184,7 +184,8 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
|
||||
$_POST["p_idprod"],
|
||||
$_POST["premise"],
|
||||
$date_start,
|
||||
$date_end
|
||||
$date_end,
|
||||
'HT'
|
||||
);
|
||||
}
|
||||
elseif ($_POST["mode"]=='libre')
|
||||
@ -197,7 +198,8 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
|
||||
0,
|
||||
$_POST["premise"],
|
||||
$date_start_sl,
|
||||
$date_end_sl
|
||||
$date_end_sl,
|
||||
'HT'
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -34,6 +34,7 @@ require_once($dolibarr_main_document_root . "/lib/databases/".$dolibarr_main_db_
|
||||
require_once($dolibarr_main_document_root . "/conf/conf.class.php");
|
||||
include_once('../facture.class.php');
|
||||
include_once('../propal.class.php');
|
||||
include_once('../contrat/contrat.class.php');
|
||||
include_once('../commande/commande.class.php');
|
||||
include_once('../lib/price.lib.php');
|
||||
|
||||
@ -158,8 +159,6 @@ if (isset($_POST['action']) && $_POST['action'] == 'upgrade')
|
||||
|
||||
migrate_contracts_date3($db,$langs,$conf);
|
||||
|
||||
migrate_fichinter_date1($db,$langs,$conf);
|
||||
|
||||
migrate_contracts_open($db,$langs,$conf);
|
||||
|
||||
migrate_modeles($db,$langs,$conf);
|
||||
@ -170,6 +169,8 @@ if (isset($_POST['action']) && $_POST['action'] == 'upgrade')
|
||||
|
||||
migrate_price_facture($db,$langs,$conf);
|
||||
|
||||
migrate_price_contrat($db,$langs,$conf);
|
||||
|
||||
migrate_paiementfourn_facturefourn($db,$langs,$conf);
|
||||
|
||||
migrate_delete_old_files($db,$langs,$conf);
|
||||
@ -714,34 +715,6 @@ function migrate_contracts_date3($db,$langs,$conf)
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
/*
|
||||
* Mise a jour des dates tms de fiche d'intervention
|
||||
*/
|
||||
function migrate_fichinter_date1($db,$langs,$conf)
|
||||
{
|
||||
print '<tr><td colspan="4">';
|
||||
|
||||
print '<br>';
|
||||
print '<b>'.$langs->trans('MigrationFichinterIncoherentTmsDateUpdate')."</b><br>\n";
|
||||
|
||||
$sql1="update llx_fichinter set tms=datec where tms < datec";
|
||||
$resql1 = $db->query($sql1);
|
||||
if (! $resql1) dolibarr_print_error($db);
|
||||
if ($db->affected_rows() > 0)
|
||||
print $langs->trans('MigrationFchinterIncoherentTmsDateUpdateSuccess')."<br>\n";
|
||||
else
|
||||
print $langs->trans('MigrationFichinterIncoherentTmsDateNothingToUpdate')."<br>\n";
|
||||
$sql2="update llx_fichinter set tms=date_valid where tms < date_valid";
|
||||
$resql2 = $db->query($sql2);
|
||||
if (! $resql2) dolibarr_print_error($db);
|
||||
if ($db->affected_rows() > 0)
|
||||
print $langs->trans('MigrationFchinterIncoherentTmsDateUpdateSuccess')."<br>\n";
|
||||
else
|
||||
print $langs->trans('MigrationFichinterIncoherentTmsDateNothingToUpdate')."<br>\n";
|
||||
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Reouverture des contrats qui ont au moins une ligne non fermée
|
||||
@ -891,104 +864,101 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf)
|
||||
*/
|
||||
function migrate_price_facture($db,$langs,$conf)
|
||||
{
|
||||
if ($conf->facture->enabled)
|
||||
{
|
||||
$db->begin();
|
||||
$db->begin();
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Upgrade data for invoice");
|
||||
dolibarr_install_syslog("upgrade2: Upgrade data for invoice");
|
||||
|
||||
print '<tr><td colspan="4">';
|
||||
print '<tr><td colspan="4">';
|
||||
|
||||
print '<br>';
|
||||
print '<b>'.$langs->trans('MigrationInvoice')."</b><br>\n";
|
||||
|
||||
// Liste des lignes facture non a jour
|
||||
$sql = "SELECT fd.rowid, fd.qty, fd.subprice, fd.remise_percent, fd.tva_taux, ";
|
||||
$sql.= " f.rowid as facid, f.remise_percent as remise_percent_global";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facturedet as fd, ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql.= " WHERE fd.fk_facture = f.rowid";
|
||||
$sql.= " AND ((fd.total_ttc = 0 AND fd.remise_percent != 100) or fd.total_ttc IS NULL)";
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
if ($num)
|
||||
{
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
|
||||
$rowid = $obj->rowid;
|
||||
$qty = $obj->qty;
|
||||
$pu = $obj->subprice;
|
||||
$txtva = $obj->tva_taux;
|
||||
$remise_percent = $obj->remise_percent;
|
||||
$remise_percent_global = $obj->remise_percent_global;
|
||||
|
||||
// On met a jour les 3 nouveaux champs
|
||||
$facligne= new FactureLigne($db);
|
||||
$facligne->fetch($rowid);
|
||||
|
||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
||||
$total_ht = $result[0];
|
||||
$total_tva = $result[1];
|
||||
$total_ttc = $result[2];
|
||||
|
||||
$facligne->total_ht = $total_ht;
|
||||
$facligne->total_tva = $total_tva;
|
||||
$facligne->total_ttc = $total_ttc;
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Line $rowid: facid=$obj->facid pu=$pu qty=$qty tva_taux=$txtva remise_percent=$remise_percent remise_global=$remise_percent_global -> $total_ht, $total_tva, $total_ttc");
|
||||
print ". ";
|
||||
$facligne->update_total();
|
||||
|
||||
|
||||
/* On touche pas a facture mere
|
||||
$facture = new Facture($db);
|
||||
$facture->id=$obj->facid;
|
||||
print '<br>';
|
||||
print '<b>'.$langs->trans('MigrationInvoice')."</b><br>\n";
|
||||
|
||||
if ( $facture->fetch($facture->id) >= 0)
|
||||
// Liste des lignes facture non a jour
|
||||
$sql = "SELECT fd.rowid, fd.qty, fd.subprice, fd.remise_percent, fd.tva_taux, ";
|
||||
$sql.= " f.rowid as facid, f.remise_percent as remise_percent_global";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facturedet as fd, ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql.= " WHERE fd.fk_facture = f.rowid";
|
||||
$sql.= " AND ((fd.total_ttc = 0 AND fd.remise_percent != 100) or fd.total_ttc IS NULL)";
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
if ($num)
|
||||
{
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
|
||||
$rowid = $obj->rowid;
|
||||
$qty = $obj->qty;
|
||||
$pu = $obj->subprice;
|
||||
$txtva = $obj->tva_taux;
|
||||
$remise_percent = $obj->remise_percent;
|
||||
$remise_percent_global = $obj->remise_percent_global;
|
||||
|
||||
// On met a jour les 3 nouveaux champs
|
||||
$facligne= new FactureLigne($db);
|
||||
$facligne->fetch($rowid);
|
||||
|
||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
||||
$total_ht = $result[0];
|
||||
$total_tva = $result[1];
|
||||
$total_ttc = $result[2];
|
||||
|
||||
$facligne->total_ht = $total_ht;
|
||||
$facligne->total_tva = $total_tva;
|
||||
$facligne->total_ttc = $total_ttc;
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Line $rowid: facid=$obj->facid pu=$pu qty=$qty tva_taux=$txtva remise_percent=$remise_percent remise_global=$remise_percent_global -> $total_ht, $total_tva, $total_ttc");
|
||||
print ". ";
|
||||
$facligne->update_total();
|
||||
|
||||
|
||||
/* On touche pas a facture mere
|
||||
$facture = new Facture($db);
|
||||
$facture->id=$obj->facid;
|
||||
|
||||
if ( $facture->fetch($facture->id) >= 0)
|
||||
{
|
||||
if ( $facture->update_price($facture->id) > 0 )
|
||||
{
|
||||
if ( $facture->update_price($facture->id) > 0 )
|
||||
{
|
||||
print ". ";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error id=".$facture->id;
|
||||
$err++;
|
||||
}
|
||||
print ". ";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #3";
|
||||
print "Error id=".$facture->id;
|
||||
$err++;
|
||||
}
|
||||
*/
|
||||
$i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #3";
|
||||
$err++;
|
||||
}
|
||||
*/
|
||||
$i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("AlreadyDone");
|
||||
}
|
||||
$db->free();
|
||||
|
||||
$db->rollback();
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #1 ".$db->error();
|
||||
$err++;
|
||||
|
||||
$db->rollback();
|
||||
print $langs->trans("AlreadyDone");
|
||||
}
|
||||
$db->free($resql);
|
||||
|
||||
print '<br><br>';
|
||||
|
||||
print '</td></tr>';
|
||||
$db->commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #1 ".$db->error();
|
||||
$err++;
|
||||
|
||||
$db->rollback();
|
||||
}
|
||||
|
||||
print '<br>';
|
||||
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
|
||||
@ -997,104 +967,206 @@ function migrate_price_facture($db,$langs,$conf)
|
||||
*/
|
||||
function migrate_price_propal($db,$langs,$conf)
|
||||
{
|
||||
if ($conf->propal->enabled)
|
||||
{
|
||||
$db->begin();
|
||||
$db->begin();
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Upgrade data for propal");
|
||||
dolibarr_install_syslog("upgrade2: Upgrade data for propal");
|
||||
|
||||
print '<tr><td colspan="4">';
|
||||
print '<tr><td colspan="4">';
|
||||
|
||||
print '<br>';
|
||||
print '<b>'.$langs->trans('MigrationProposal')."</b><br>\n";
|
||||
print '<br>';
|
||||
print '<b>'.$langs->trans('MigrationProposal')."</b><br>\n";
|
||||
|
||||
// Liste des lignes propal non a jour
|
||||
$sql = "SELECT pd.rowid, pd.qty, pd.subprice, pd.remise_percent, pd.tva_tx as tva_taux, ";
|
||||
$sql.= " p.rowid as propalid, p.remise_percent as remise_percent_global";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."propaldet as pd, ".MAIN_DB_PREFIX."propal as p";
|
||||
$sql.= " WHERE pd.fk_propal = p.rowid";
|
||||
$sql.= " AND ((pd.total_ttc = 0 AND pd.remise_percent != 100) or pd.total_ttc IS NULL)";
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
// Liste des lignes propal non a jour
|
||||
$sql = "SELECT pd.rowid, pd.qty, pd.subprice, pd.remise_percent, pd.tva_tx as tva_taux, ";
|
||||
$sql.= " p.rowid as propalid, p.remise_percent as remise_percent_global";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."propaldet as pd, ".MAIN_DB_PREFIX."propal as p";
|
||||
$sql.= " WHERE pd.fk_propal = p.rowid";
|
||||
$sql.= " AND ((pd.total_ttc = 0 AND pd.remise_percent != 100) or pd.total_ttc IS NULL)";
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
if ($num)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
if ($num)
|
||||
while ($i < $num)
|
||||
{
|
||||
while ($i < $num)
|
||||
$obj = $db->fetch_object($resql);
|
||||
|
||||
$rowid = $obj->rowid;
|
||||
$qty = $obj->qty;
|
||||
$pu = $obj->subprice;
|
||||
$txtva = $obj->tva_taux;
|
||||
$remise_percent = $obj->remise_percent;
|
||||
$remise_percent_global = $obj->remise_percent_global;
|
||||
|
||||
// On met a jour les 3 nouveaux champs
|
||||
$propalligne= new PropaleLigne($db);
|
||||
$propalligne->fetch($rowid);
|
||||
|
||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
||||
$total_ht = $result[0];
|
||||
$total_tva = $result[1];
|
||||
$total_ttc = $result[2];
|
||||
|
||||
$propalligne->total_ht = $total_ht;
|
||||
$propalligne->total_tva = $total_tva;
|
||||
$propalligne->total_ttc = $total_ttc;
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Line $rowid: propalid=$obj->rowid pu=$pu qty=$qty tva_taux=$txtva remise_percent=$remise_percent remise_global=$remise_percent_global -> $total_ht, $total_tva, $total_ttc");
|
||||
print ". ";
|
||||
$propalligne->update_total($rowid);
|
||||
|
||||
|
||||
/* On touche pas a propal mere
|
||||
$propal = new Propal($db);
|
||||
$propal->id=$obj->rowid;
|
||||
if ( $propal->fetch($propal->id) >= 0 )
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
|
||||
$rowid = $obj->rowid;
|
||||
$qty = $obj->qty;
|
||||
$pu = $obj->subprice;
|
||||
$txtva = $obj->tva_taux;
|
||||
$remise_percent = $obj->remise_percent;
|
||||
$remise_percent_global = $obj->remise_percent_global;
|
||||
|
||||
// On met a jour les 3 nouveaux champs
|
||||
$propalligne= new PropaleLigne($db);
|
||||
$propalligne->fetch($rowid);
|
||||
|
||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
||||
$total_ht = $result[0];
|
||||
$total_tva = $result[1];
|
||||
$total_ttc = $result[2];
|
||||
|
||||
$propalligne->total_ht = $total_ht;
|
||||
$propalligne->total_tva = $total_tva;
|
||||
$propalligne->total_ttc = $total_ttc;
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Line $rowid: propalid=$obj->rowid pu=$pu qty=$qty tva_taux=$txtva remise_percent=$remise_percent remise_global=$remise_percent_global -> $total_ht, $total_tva, $total_ttc");
|
||||
print ". ";
|
||||
$propalligne->update_total($rowid);
|
||||
|
||||
|
||||
/* On touche pas a propal mere
|
||||
$propal = new Propal($db);
|
||||
$propal->id=$obj->rowid;
|
||||
if ( $propal->fetch($propal->id) >= 0 )
|
||||
if ( $propal->update_price($propal->id) > 0 )
|
||||
{
|
||||
if ( $propal->update_price($propal->id) > 0 )
|
||||
{
|
||||
print ". ";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error id=".$propal->id;
|
||||
$err++;
|
||||
}
|
||||
print ". ";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #3";
|
||||
print "Error id=".$propal->id;
|
||||
$err++;
|
||||
}
|
||||
*/
|
||||
$i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #3";
|
||||
$err++;
|
||||
}
|
||||
*/
|
||||
$i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("AlreadyDone");
|
||||
}
|
||||
|
||||
$db->free();
|
||||
|
||||
$db->rollback();
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #1 ".$db->error();
|
||||
$err++;
|
||||
|
||||
$db->rollback();
|
||||
print $langs->trans("AlreadyDone");
|
||||
}
|
||||
|
||||
$db->free($resql);
|
||||
|
||||
print '<br>';
|
||||
|
||||
print '</td></tr>';
|
||||
$db->commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #1 ".$db->error();
|
||||
$err++;
|
||||
|
||||
$db->rollback();
|
||||
}
|
||||
|
||||
print '<br>';
|
||||
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Mise a jour des totaux lignes de propal
|
||||
*/
|
||||
function migrate_price_contrat($db,$langs,$conf)
|
||||
{
|
||||
$db->begin();
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Upgrade data for contracts");
|
||||
|
||||
print '<tr><td colspan="4">';
|
||||
|
||||
print '<br>';
|
||||
print '<b>'.$langs->trans('MigrationContract')."</b><br>\n";
|
||||
|
||||
// Liste des lignes contrat non a jour
|
||||
$sql = "SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as tva_taux, ";
|
||||
$sql.= " c.rowid as contratid";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet as cd, ".MAIN_DB_PREFIX."contrat as c";
|
||||
$sql.= " WHERE cd.fk_contrat = c.rowid";
|
||||
$sql.= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100 AND cd.subprice > 0) or cd.total_ttc IS NULL)";
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
if ($num)
|
||||
{
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
|
||||
$rowid = $obj->rowid;
|
||||
$qty = $obj->qty;
|
||||
$pu = $obj->subprice;
|
||||
$txtva = $obj->tva_taux;
|
||||
$remise_percent = $obj->remise_percent;
|
||||
$remise_percent_global = $obj->remise_percent_global;
|
||||
|
||||
// On met a jour les 3 nouveaux champs
|
||||
$contratligne= new ContratLigne($db);
|
||||
//$contratligne->fetch($rowid); Non requis car le update_total ne met a jour que chp redefinis
|
||||
$contratligne->rowid=$rowid;
|
||||
|
||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
||||
$total_ht = $result[0];
|
||||
$total_tva = $result[1];
|
||||
$total_ttc = $result[2];
|
||||
|
||||
$contratligne->total_ht = $total_ht;
|
||||
$contratligne->total_tva = $total_tva;
|
||||
$contratligne->total_ttc = $total_ttc;
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Line $rowid: contratdetid=$obj->rowid pu=$pu qty=$qty tva_taux=$txtva remise_percent=$remise_percent remise_global=$remise_percent_global -> $total_ht, $total_tva, $total_ttc");
|
||||
print ". ";
|
||||
$contratligne->update_total($rowid);
|
||||
|
||||
|
||||
/* On touche pas a contrat mere
|
||||
$propal = new Propal($db);
|
||||
$propal->id=$obj->rowid;
|
||||
if ( $propal->fetch($propal->id) >= 0 )
|
||||
{
|
||||
if ( $propal->update_price($propal->id) > 0 )
|
||||
{
|
||||
print ". ";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error id=".$propal->id;
|
||||
$err++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #3";
|
||||
$err++;
|
||||
}
|
||||
*/
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("AlreadyDone");
|
||||
}
|
||||
|
||||
$db->free($resql);
|
||||
|
||||
$db->commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #1 ".$db->error();
|
||||
$err++;
|
||||
|
||||
$db->rollback();
|
||||
}
|
||||
|
||||
print '<br>';
|
||||
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
|
||||
@ -1103,111 +1175,108 @@ function migrate_price_propal($db,$langs,$conf)
|
||||
*/
|
||||
function migrate_price_commande($db,$langs,$conf)
|
||||
{
|
||||
if ($conf->facture->enabled)
|
||||
{
|
||||
$db->begin();
|
||||
$db->begin();
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Upgrade data for order");
|
||||
dolibarr_install_syslog("upgrade2: Upgrade data for order");
|
||||
|
||||
print '<tr><td colspan="4">';
|
||||
print '<tr><td colspan="4">';
|
||||
|
||||
print '<br>';
|
||||
print '<b>'.$langs->trans('MigrationOrder')."</b><br>\n";
|
||||
print '<br>';
|
||||
print '<b>'.$langs->trans('MigrationOrder')."</b><br>\n";
|
||||
|
||||
// Liste des lignes commande non a jour
|
||||
$sql = "SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as tva_taux, ";
|
||||
$sql.= " c.rowid as commandeid, c.remise_percent as remise_percent_global";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd, ".MAIN_DB_PREFIX."commande as c";
|
||||
$sql.= " WHERE cd.fk_commande = c.rowid";
|
||||
$sql.= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100) or cd.total_ttc IS NULL)";
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
// Liste des lignes commande non a jour
|
||||
$sql = "SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as tva_taux, ";
|
||||
$sql.= " c.rowid as commandeid, c.remise_percent as remise_percent_global";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd, ".MAIN_DB_PREFIX."commande as c";
|
||||
$sql.= " WHERE cd.fk_commande = c.rowid";
|
||||
$sql.= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100) or cd.total_ttc IS NULL)";
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
if ($num)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
if ($num)
|
||||
while ($i < $num)
|
||||
{
|
||||
while ($i < $num)
|
||||
$obj = $db->fetch_object($resql);
|
||||
|
||||
$rowid = $obj->rowid;
|
||||
$qty = $obj->qty;
|
||||
$pu = $obj->subprice;
|
||||
$txtva = $obj->tva_taux;
|
||||
$remise_percent = $obj->remise_percent;
|
||||
$remise_percent_global = $obj->remise_percent_global;
|
||||
|
||||
// On met a jour les 3 nouveaux champs
|
||||
$commandeligne= new CommandeLigne($db);
|
||||
$commandeligne->fetch($rowid);
|
||||
|
||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
||||
$total_ht = $result[0];
|
||||
$total_tva = $result[1];
|
||||
$total_ttc = $result[2];
|
||||
|
||||
$commandeligne->total_ht = $total_ht;
|
||||
$commandeligne->total_tva = $total_tva;
|
||||
$commandeligne->total_ttc = $total_ttc;
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Line $rowid: commandeid=$obj->rowid pu=$pu qty=$qty tva_taux=$txtva remise_percent=$remise_percent remise_global=$remise_percent_global -> $total_ht, $total_tva, $total_ttc");
|
||||
print ". ";
|
||||
$commandeligne->update_total($rowid);
|
||||
|
||||
/* On touche pas a facture mere
|
||||
$commande = new Commande($db);
|
||||
$commande->id = $obj->rowid;
|
||||
if ( $commande->fetch($commande->id) >= 0 )
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
|
||||
$rowid = $obj->rowid;
|
||||
$qty = $obj->qty;
|
||||
$pu = $obj->subprice;
|
||||
$txtva = $obj->tva_taux;
|
||||
$remise_percent = $obj->remise_percent;
|
||||
$remise_percent_global = $obj->remise_percent_global;
|
||||
|
||||
// On met a jour les 3 nouveaux champs
|
||||
$commandeligne= new CommandeLigne($db);
|
||||
$commandeligne->fetch($rowid);
|
||||
|
||||
$result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
|
||||
$total_ht = $result[0];
|
||||
$total_tva = $result[1];
|
||||
$total_ttc = $result[2];
|
||||
|
||||
$commandeligne->total_ht = $total_ht;
|
||||
$commandeligne->total_tva = $total_tva;
|
||||
$commandeligne->total_ttc = $total_ttc;
|
||||
|
||||
dolibarr_install_syslog("upgrade2: Line $rowid: commandeid=$obj->rowid pu=$pu qty=$qty tva_taux=$txtva remise_percent=$remise_percent remise_global=$remise_percent_global -> $total_ht, $total_tva, $total_ttc");
|
||||
print ". ";
|
||||
$commandeligne->update_total($rowid);
|
||||
|
||||
/* On touche pas a facture mere
|
||||
$commande = new Commande($db);
|
||||
$commande->id = $obj->rowid;
|
||||
if ( $commande->fetch($commande->id) >= 0 )
|
||||
if ( $commande->update_price($commande->id) > 0 )
|
||||
{
|
||||
if ( $commande->update_price($commande->id) > 0 )
|
||||
{
|
||||
print ". ";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error id=".$commande->id;
|
||||
$err++;
|
||||
}
|
||||
print ". ";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #3";
|
||||
print "Error id=".$commande->id;
|
||||
$err++;
|
||||
}
|
||||
*/
|
||||
$i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #3";
|
||||
$err++;
|
||||
}
|
||||
*/
|
||||
$i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("AlreadyDone");
|
||||
}
|
||||
|
||||
$db->free();
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."commandedet";
|
||||
$sql.= " WHERE price = 0 and total_ttc = 0 and total_tva = 0 and total_ht = 0";
|
||||
$resql=$db->query($sql);
|
||||
if (! $resql)
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
}
|
||||
|
||||
$db->rollback();
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #1 ".$db->error();
|
||||
$err++;
|
||||
|
||||
$db->rollback();
|
||||
print $langs->trans("AlreadyDone");
|
||||
}
|
||||
|
||||
print '<br>';
|
||||
$db->free($resql);
|
||||
|
||||
print '</td></tr>';
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."commandedet";
|
||||
$sql.= " WHERE price = 0 and total_ttc = 0 and total_tva = 0 and total_ht = 0";
|
||||
$resql=$db->query($sql);
|
||||
if (! $resql)
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
}
|
||||
|
||||
$db->commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Error #1 ".$db->error();
|
||||
$err++;
|
||||
|
||||
$db->rollback();
|
||||
}
|
||||
|
||||
print '<br>';
|
||||
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2183,7 +2183,7 @@ class PropaleLigne
|
||||
*/
|
||||
function PropaleLigne($DB)
|
||||
{
|
||||
$this->db= $DB ;
|
||||
$this->db= $DB;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2356,7 +2356,8 @@ class PropaleLigne
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Mise a jour en base des champs total_xxx de ligne de propale
|
||||
* \brief Mise a jour en base des champs total_xxx de ligne
|
||||
* \remarks Utilisé par migration
|
||||
* \return int <0 si ko, >0 si ok
|
||||
*/
|
||||
function update_total()
|
||||
@ -2365,9 +2366,9 @@ class PropaleLigne
|
||||
|
||||
// Mise a jour ligne en base
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."propaldet SET";
|
||||
$sql.= " total_ht=".price2num($this->total_ht)."";
|
||||
$sql.= ",total_tva=".price2num($this->total_tva)."";
|
||||
$sql.= ",total_ttc=".price2num($this->total_ttc)."";
|
||||
$sql.= " total_ht=".price2num($this->total_ht,'MT')."";
|
||||
$sql.= ",total_tva=".price2num($this->total_tva,'MT')."";
|
||||
$sql.= ",total_ttc=".price2num($this->total_ttc,'MT')."";
|
||||
$sql.= " WHERE rowid = ".$this->rowid;
|
||||
|
||||
dolibarr_syslog("PropaleLigne::update_total sql=$sql");
|
||||
|
||||
@ -611,6 +611,12 @@ ALTER TABLE llx_propaldet MODIFY total_tva double(16,8) DEFAULT 0;
|
||||
ALTER TABLE llx_propaldet MODIFY total_ttc double(16,8) DEFAULT 0;
|
||||
ALTER TABLE llx_propaldet MODIFY subprice double(16,8) DEFAULT 0;
|
||||
|
||||
ALTER TABLE llx_contratdet MODIFY tva_tx double(6,3);
|
||||
ALTER TABLE llx_contratdet MODIFY subprice double(16,8);
|
||||
ALTER TABLE llx_contratdet MODIFY total_ht double(16,8);
|
||||
ALTER TABLE llx_contratdet MODIFY total_tva double(16,8);
|
||||
ALTER TABLE llx_contratdet MODIFY total_ttc double(16,8);
|
||||
|
||||
ALTER TABLE llx_societe_remise_except MODIFY amount_ht double(16,8) DEFAULT 0;
|
||||
ALTER TABLE llx_societe_remise_except MODIFY amount_tva double(16,8) DEFAULT 0;
|
||||
ALTER TABLE llx_societe_remise_except MODIFY amount_ttc double(16,8) DEFAULT 0;
|
||||
@ -709,3 +715,8 @@ drop table if exists `llx_accountingsystem_det`;
|
||||
|
||||
|
||||
update llx_bank set label='(InitialBankBalance)' where fk_type='SOLD' and label in ('Balance','(Balance)','Solde','(Solde)');
|
||||
|
||||
|
||||
update llx_fichinter set tms=datec where tms < datec;
|
||||
update llx_fichinter set tms=date_valid where tms < date_valid;
|
||||
|
||||
|
||||
@ -32,6 +32,7 @@ create table llx_contratdet
|
||||
|
||||
label text, -- libellé du produit
|
||||
description text,
|
||||
fk_remise_except integer NULL, -- Lien vers table des remises fixes
|
||||
|
||||
date_commande datetime,
|
||||
date_ouverture_prevue datetime,
|
||||
@ -39,17 +40,16 @@ create table llx_contratdet
|
||||
date_fin_validite datetime,
|
||||
date_cloture datetime,
|
||||
|
||||
tva_tx real DEFAULT 19.6, -- taux tva
|
||||
qty real, -- quantité
|
||||
remise_percent real DEFAULT 0, -- pourcentage de remise
|
||||
remise real DEFAULT 0, -- montant de la remise
|
||||
fk_remise_except integer NULL, -- Lien vers table des remises fixes
|
||||
subprice real, -- prix avant remise
|
||||
price_ht real, -- prix final
|
||||
total_ht real, -- Total HT de la ligne toute quantité et incluant remise ligne et globale
|
||||
total_tva real, -- Total TVA de la ligne toute quantité et incluant remise ligne et globale
|
||||
total_ttc real, -- Total TTC de la ligne toute quantité et incluant remise ligne et globale
|
||||
info_bits integer DEFAULT 0, -- TVA NPR ou non
|
||||
tva_tx double(6,3) DEFAULT 0 NOT NULL, -- taux tva
|
||||
qty real NOT NULL, -- quantité
|
||||
remise_percent real DEFAULT 0, -- pourcentage de remise
|
||||
subprice double(16,8), -- prix unitaire
|
||||
price_ht real, -- prix final (obsolete)
|
||||
remise real DEFAULT 0, -- montant de la remise (obsolete)
|
||||
total_ht double(16,8) NOT NULL, -- Total HT de la ligne toute quantité et incluant remise ligne et globale
|
||||
total_tva double(16,8) NOT NULL, -- Total TVA de la ligne toute quantité et incluant remise ligne et globale
|
||||
total_ttc double(16,8) NOT NULL, -- Total TTC de la ligne toute quantité et incluant remise ligne et globale
|
||||
info_bits integer DEFAULT 0, -- TVA NPR ou non
|
||||
|
||||
fk_user_author integer NOT NULL default 0,
|
||||
fk_user_ouverture integer,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user