Fix: Error in price when adding a product in contract with base type that is with tax.

This commit is contained in:
Laurent Destailleur 2009-01-25 17:05:40 +00:00
parent d371bd7fe4
commit c3adbb11fe
3 changed files with 82 additions and 79 deletions

View File

@ -68,7 +68,7 @@ class Contrat extends CommonObject
var $fk_projet; var $fk_projet;
var $lignes=array(); var $lignes=array();
/** /**
* \brief Constructeur de la classe * \brief Constructeur de la classe
@ -178,7 +178,7 @@ class Contrat extends CommonObject
function cloture($user,$langs='',$conf='') function cloture($user,$langs='',$conf='')
{ {
$this->db->begin(); $this->db->begin();
// Load lines // Load lines
$this->fetch_lignes(); $this->fetch_lignes();
@ -199,7 +199,7 @@ class Contrat extends CommonObject
} }
} }
} }
if ($ok) if ($ok)
{ {
$this->db->commit(); $this->db->commit();
@ -368,14 +368,14 @@ class Contrat extends CommonObject
$ligne->fk_user_author = $objp->fk_user_author; $ligne->fk_user_author = $objp->fk_user_author;
$ligne->fk_user_ouverture= $objp->fk_user_ouverture; $ligne->fk_user_ouverture= $objp->fk_user_ouverture;
$ligne->fk_user_cloture = $objp->fk_user_cloture; $ligne->fk_user_cloture = $objp->fk_user_cloture;
$ligne->ref = $objp->ref; $ligne->ref = $objp->ref;
$ligne->libelle = $objp->label; // Label produit $ligne->libelle = $objp->label; // Label produit
$ligne->label = $objp->label; // For backward compatibility $ligne->label = $objp->label; // For backward compatibility
$ligne->product_desc = $objp->product_desc; // Description produit $ligne->product_desc = $objp->product_desc; // Description produit
$ligne->description = $objp->description; $ligne->description = $objp->description;
$ligne->date_ouverture_prevue = $this->db->jdate($objp->date_ouverture_prevue); $ligne->date_ouverture_prevue = $this->db->jdate($objp->date_ouverture_prevue);
$ligne->date_ouverture = $this->db->jdate($objp->date_ouverture); $ligne->date_ouverture = $this->db->jdate($objp->date_ouverture);
$ligne->date_fin_validite = $this->db->jdate($objp->date_fin_validite); $ligne->date_fin_validite = $this->db->jdate($objp->date_fin_validite);
@ -385,7 +385,7 @@ class Contrat extends CommonObject
$ligne->date_debut_reel = $this->db->jdate($objp->date_ouverture); $ligne->date_debut_reel = $this->db->jdate($objp->date_ouverture);
$ligne->date_fin_prevue = $this->db->jdate($objp->date_fin_validite); $ligne->date_fin_prevue = $this->db->jdate($objp->date_fin_validite);
$ligne->date_fin_reel = $this->db->jdate($objp->date_cloture); $ligne->date_fin_reel = $this->db->jdate($objp->date_cloture);
$this->lignes[] = $ligne; $this->lignes[] = $ligne;
//dolibarr_syslog("1 ".$ligne->desc); //dolibarr_syslog("1 ".$ligne->desc);
//dolibarr_syslog("2 ".$ligne->product_desc); //dolibarr_syslog("2 ".$ligne->product_desc);
@ -428,7 +428,7 @@ class Contrat extends CommonObject
while ($i < $num) while ($i < $num)
{ {
$objp = $this->db->fetch_object($result); $objp = $this->db->fetch_object($result);
$ligne = new ContratLigne($this->db); $ligne = new ContratLigne($this->db);
$ligne->id = $objp->rowid; $ligne->id = $objp->rowid;
$ligne->fk_contrat = $objp->fk_contrat; $ligne->fk_contrat = $objp->fk_contrat;
@ -447,7 +447,7 @@ class Contrat extends CommonObject
$ligne->total_ttc = $objp->total_ttc; $ligne->total_ttc = $objp->total_ttc;
$ligne->fk_product = 0; $ligne->fk_product = 0;
$ligne->info_bits = $objp->info_bits; $ligne->info_bits = $objp->info_bits;
$ligne->fk_user_author = $objp->fk_user_author; $ligne->fk_user_author = $objp->fk_user_author;
$ligne->fk_user_ouverture= $objp->fk_user_ouverture; $ligne->fk_user_ouverture= $objp->fk_user_ouverture;
$ligne->fk_user_cloture = $objp->fk_user_cloture; $ligne->fk_user_cloture = $objp->fk_user_cloture;
@ -605,13 +605,13 @@ class Contrat extends CommonObject
$sql.= " AND tc.element='".$this->element."'"; $sql.= " AND tc.element='".$this->element."'";
$sql.= " AND ec.element_id=".$this->id; $sql.= " AND ec.element_id=".$this->id;
*/ */
$sql = "SELECT ec.rowid as ecrowid"; $sql = "SELECT ec.rowid as ecrowid";
$sql.= " FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc"; $sql.= " FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc";
$sql.= " WHERE ec.fk_c_type_contact = tc.rowid"; $sql.= " WHERE ec.fk_c_type_contact = tc.rowid";
$sql.= " AND tc.element='".$this->element."'"; $sql.= " AND tc.element='".$this->element."'";
$sql.= " AND ec.element_id=".$this->id; $sql.= " AND ec.element_id=".$this->id;
dolibarr_syslog("Contrat::delete element_contact sql=".$sql,LOG_DEBUG); dolibarr_syslog("Contrat::delete element_contact sql=".$sql,LOG_DEBUG);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if (! $resql) if (! $resql)
@ -654,7 +654,7 @@ class Contrat extends CommonObject
$sql = "SELECT cdl.rowid as cdlrowid "; $sql = "SELECT cdl.rowid as cdlrowid ";
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet_log as cdl, ".MAIN_DB_PREFIX."contratdet as cd"; $sql.= " FROM ".MAIN_DB_PREFIX."contratdet_log as cdl, ".MAIN_DB_PREFIX."contratdet as cd";
$sql.= " WHERE cdl.fk_contratdet=cd.rowid AND cd.fk_contrat=".$this->id; $sql.= " WHERE cdl.fk_contratdet=cd.rowid AND cd.fk_contrat=".$this->id;
dolibarr_syslog("Contrat::delete contratdet_log sql=".$sql, LOG_DEBUG); dolibarr_syslog("Contrat::delete contratdet_log sql=".$sql, LOG_DEBUG);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if (! $resql) if (! $resql)
@ -675,7 +675,7 @@ class Contrat extends CommonObject
$sql= "DELETE FROM ".MAIN_DB_PREFIX."contratdet_log "; $sql= "DELETE FROM ".MAIN_DB_PREFIX."contratdet_log ";
$sql.= " WHERE ".MAIN_DB_PREFIX."contratdet_log.rowid IN (".implode(",",$tab_resql).")"; $sql.= " WHERE ".MAIN_DB_PREFIX."contratdet_log.rowid IN (".implode(",",$tab_resql).")";
dolibarr_syslog("Contrat::delete contratdet_log sql=".$sql, LOG_DEBUG); dolibarr_syslog("Contrat::delete contratdet_log sql=".$sql, LOG_DEBUG);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if (! $resql) if (! $resql)
@ -706,7 +706,7 @@ class Contrat extends CommonObject
// Delete contrat // Delete contrat
$sql = "DELETE FROM ".MAIN_DB_PREFIX."contrat"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."contrat";
$sql.= " WHERE rowid=".$this->id; $sql.= " WHERE rowid=".$this->id;
dolibarr_syslog("Contrat::delete contrat sql=".$sql); dolibarr_syslog("Contrat::delete contrat sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if (! $resql) if (! $resql)
@ -762,7 +762,7 @@ class Contrat extends CommonObject
if ($this->statut == 0 || ($this->statut == 1 && $conf->global->CONTRAT_EDITWHENVALIDATED)) if ($this->statut == 0 || ($this->statut == 1 && $conf->global->CONTRAT_EDITWHENVALIDATED))
{ {
$this->db->begin(); $this->db->begin();
// Clean parameters // Clean parameters
$remise_percent=price2num($remise_percent); $remise_percent=price2num($remise_percent);
$qty=price2num($qty); $qty=price2num($qty);
@ -781,7 +781,7 @@ class Contrat extends CommonObject
{ {
$pu=$pu_ttc; $pu=$pu_ttc;
} }
// Calcul du total TTC et de la TVA pour la ligne a partir de // Calcul du total TTC et de la TVA pour la ligne a partir de
// 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
@ -794,11 +794,11 @@ class Contrat extends CommonObject
// \TODO A virer // \TODO A virer
// Anciens indicateurs: $price, $remise (a ne plus utiliser) // Anciens indicateurs: $price, $remise (a ne plus utiliser)
$remise = 0; $remise = 0;
$price = price2num(round($pu, 2)); $price = price2num(round($pu_ht, 2));
if (strlen($remise_percent) > 0) if (strlen($remise_percent) > 0)
{ {
$remise = round(($pu * $remise_percent / 100), 2); $remise = round(($pu_ht * $remise_percent / 100), 2);
$price = $pu - $remise; $price = $pu_ht - $remise;
} }
// Insertion dans la base // Insertion dans la base
@ -814,7 +814,7 @@ class Contrat extends CommonObject
$sql.= ($fk_product>0 ? $fk_product : "null").","; $sql.= ($fk_product>0 ? $fk_product : "null").",";
$sql.= " '".$qty."',"; $sql.= " '".$qty."',";
$sql.= " '".$txtva."',"; $sql.= " '".$txtva."',";
$sql.= " ".price2num($remise_percent).",".price2num($pu).","; $sql.= " ".price2num($remise_percent).",".price2num($pu_ht).",";
$sql.= " ".price2num($total_ht).",".price2num($total_tva).",".price2num($total_ttc).","; $sql.= " ".price2num($total_ht).",".price2num($total_tva).",".price2num($total_ttc).",";
$sql.= " '".$info_bits."',"; $sql.= " '".$info_bits."',";
$sql.= " ".price2num($price).",".price2num( $remise); // \TODO A virer $sql.= " ".price2num($price).",".price2num( $remise); // \TODO A virer
@ -1155,7 +1155,7 @@ class Contrat extends CommonObject
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet as cd"; $sql.= " FROM ".MAIN_DB_PREFIX."contratdet as cd";
$sql.= " WHERE fk_contrat =".$this->id; $sql.= " WHERE fk_contrat =".$this->id;
if ($statut >= 0) $sql.= " AND statut = '$statut'"; if ($statut >= 0) $sql.= " AND statut = '$statut'";
dolibarr_syslog("Contrat::array_detail() sql=".$sql,LOG_DEBUG); dolibarr_syslog("Contrat::array_detail() sql=".$sql,LOG_DEBUG);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
@ -1226,7 +1226,7 @@ class Contrat extends CommonObject
global $conf, $user; global $conf, $user;
$now=gmmktime(); $now=gmmktime();
$this->nbtodo=$this->nbtodolate=0; $this->nbtodo=$this->nbtodolate=0;
if ($mode == 'inactives') if ($mode == 'inactives')
{ {
@ -1360,11 +1360,14 @@ class ContratLigne
var $remise_percent; var $remise_percent;
var $remise; var $remise;
var $fk_remise_except; var $fk_remise_except;
var $subprice;
var $subprice; // Unit price HT
var $price_ht; var $price_ht;
var $total_ht; var $total_ht;
var $total_tva; var $total_tva;
var $total_ttc; var $total_ttc;
var $info_bits; var $info_bits;
var $fk_user_author; var $fk_user_author;
var $fk_user_ouverture; var $fk_user_ouverture;
@ -1567,7 +1570,7 @@ class ContratLigne
function update($user, $notrigger=0) function update($user, $notrigger=0)
{ {
global $conf, $langs; global $conf, $langs;
// Clean parameters // Clean parameters
$this->fk_contrat=trim($this->fk_contrat); $this->fk_contrat=trim($this->fk_contrat);
$this->fk_product=trim($this->fk_product); $this->fk_product=trim($this->fk_product);
@ -1589,7 +1592,7 @@ class ContratLigne
$this->fk_user_ouverture=trim($this->fk_user_ouverture); $this->fk_user_ouverture=trim($this->fk_user_ouverture);
$this->fk_user_cloture=trim($this->fk_user_cloture); $this->fk_user_cloture=trim($this->fk_user_cloture);
$this->commentaire=trim($this->commentaire); $this->commentaire=trim($this->commentaire);
// Check parameters // Check parameters
// Put here code to add control on parameters values // Put here code to add control on parameters values

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> * Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
/** /**
* \file htdocs/contrat/fiche.php * \file htdocs/contrat/fiche.php
* \ingroup contrat * \ingroup contrat
@ -44,6 +44,7 @@ $result=restrictedArea($user,'contrat',$contratid,'contrat');
$usehm=$conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE; $usehm=$conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE;
/* /*
* Actions * Actions
*/ */
@ -61,7 +62,7 @@ if ($_POST["action"] == 'confirm_active' && $_POST["confirm"] == 'yes' && $user-
exit; exit;
} }
else { else {
$mesg=$contrat->error; $mesg=$contrat->error;
} }
} }
@ -77,7 +78,7 @@ if ($_POST["action"] == 'confirm_closeline' && $_POST["confirm"] == 'yes' && $us
exit; exit;
} }
else { else {
$mesg=$contrat->error; $mesg=$contrat->error;
} }
} }
@ -183,7 +184,7 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
exit; exit;
} }
$ret=$contrat->fetch_client(); $ret=$contrat->fetch_client();
$date_start=''; $date_start='';
$date_end=''; $date_end='';
// Si ajout champ produit libre // Si ajout champ produit libre
@ -211,8 +212,6 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
} }
} }
$price_base_type = 'HT';
// Ecrase $pu par celui du produit // Ecrase $pu par celui du produit
// Ecrase $desc par celui du produit // Ecrase $desc par celui du produit
// Ecrase $txtva par celui du produit // Ecrase $txtva par celui du produit
@ -252,7 +251,7 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
$pu_ttc = price2num($pu_ht * (1 + ($tva_tx/100)), 'MU'); $pu_ttc = price2num($pu_ht * (1 + ($tva_tx/100)), 'MU');
} }
} }
$desc = $prod->description; $desc = $prod->description;
$desc.= $prod->description && $_POST['desc'] ? "\n" : ""; $desc.= $prod->description && $_POST['desc'] ? "\n" : "";
$desc.= $_POST['desc']; $desc.= $_POST['desc'];
@ -260,6 +259,7 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
else else
{ {
$pu_ht=$_POST['pu']; $pu_ht=$_POST['pu'];
$price_base_type = 'HT';
$tva_tx=eregi_replace('\*','',$_POST['tva_tx']); $tva_tx=eregi_replace('\*','',$_POST['tva_tx']);
$tva_npr=eregi('\*',$_POST['tva_tx'])?1:0; $tva_npr=eregi('\*',$_POST['tva_tx'])?1:0;
$desc=$_POST['desc']; $desc=$_POST['desc'];
@ -267,7 +267,7 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
$info_bits=0; $info_bits=0;
if ($tva_npr) $info_bits |= 0x01; if ($tva_npr) $info_bits |= 0x01;
// Insert line // Insert line
$result = $contrat->addline( $result = $contrat->addline(
$desc, $desc,
@ -282,7 +282,7 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
$pu_ttc, $pu_ttc,
$info_bits $info_bits
); );
if ($result > 0) if ($result > 0)
{ {
/* /*
@ -308,10 +308,10 @@ if ($_POST["action"] == 'updateligne' && $user->rights->contrat->creer && ! $_PO
if ($contratline->fetch($_POST["elrowid"])) if ($contratline->fetch($_POST["elrowid"]))
{ {
$db->begin(); $db->begin();
if ($date_start_real_update == '') $date_start_real_update=$contratline->date_ouverture; if ($date_start_real_update == '') $date_start_real_update=$contratline->date_ouverture;
if ($date_end_real_update == '') $date_end_real_update=$contratline->date_cloture; if ($date_end_real_update == '') $date_end_real_update=$contratline->date_cloture;
$contratline->description=$_POST["eldesc"]; $contratline->description=$_POST["eldesc"];
$contratline->price_ht=$_POST["elprice"]; $contratline->price_ht=$_POST["elprice"];
$contratline->subprice=$_POST["elprice"]; $contratline->subprice=$_POST["elprice"];
@ -324,7 +324,7 @@ if ($_POST["action"] == 'updateligne' && $user->rights->contrat->creer && ! $_PO
$contratline->date_fin_validite=$date_end_update; $contratline->date_fin_validite=$date_end_update;
$contratline->date_cloture=$date_end_real_update; $contratline->date_cloture=$date_end_real_update;
$contratline->fk_user_cloture=$user->id; $contratline->fk_user_cloture=$user->id;
$result=$contratline->update($user); $result=$contratline->update($user);
if ($result > 0) if ($result > 0)
{ {
@ -334,7 +334,7 @@ if ($_POST["action"] == 'updateligne' && $user->rights->contrat->creer && ! $_PO
{ {
dolibarr_print_error($db,'Failed to update contrat_det'); dolibarr_print_error($db,'Failed to update contrat_det');
$db->rollback(); $db->rollback();
} }
} }
else else
{ {
@ -471,7 +471,7 @@ if ($_GET["action"] == 'create')
// Ref // Ref
print '<tr><td>'.$langs->trans("Ref").'</td>'; print '<tr><td>'.$langs->trans("Ref").'</td>';
print '<td><input type="text" maxlength="30" name="ref" size="20"></td></tr>'; print '<td><input type="text" maxlength="30" name="ref" size="20"></td></tr>';
// Customer // Customer
print '<tr><td>'.$langs->trans("Customer").'</td><td>'.$soc->getNomUrl(1).'</td></tr>'; print '<tr><td>'.$langs->trans("Customer").'</td><td>'.$soc->getNomUrl(1).'</td></tr>';
@ -485,7 +485,7 @@ if ($_GET["action"] == 'create')
else print $langs->trans("CompanyHasNoAbsoluteDiscount"); else print $langs->trans("CompanyHasNoAbsoluteDiscount");
print '.'; print '.';
print '</td></tr>'; print '</td></tr>';
// Commercial suivi // Commercial suivi
print '<tr><td width="20%" nowrap>'.$langs->trans("TypeContact_contrat_internal_SALESREPFOLL").'</td><td>'; print '<tr><td width="20%" nowrap>'.$langs->trans("TypeContact_contrat_internal_SALESREPFOLL").'</td><td>';
print $form->select_users('','commercial_suivi_id',1,''); print $form->select_users('','commercial_suivi_id',1,'');
@ -507,7 +507,7 @@ if ($_GET["action"] == 'create')
$form->select_array("projetid",$proj->liste_array($soc->id),0,1); $form->select_array("projetid",$proj->liste_array($soc->id),0,1);
print "</td></tr>"; print "</td></tr>";
} }
print '<tr><td>'.$langs->trans("NotePublic").'</td><td valign="top">'; print '<tr><td>'.$langs->trans("NotePublic").'</td><td valign="top">';
print '<textarea name="note_public" wrap="soft" cols="70" rows="'.ROWS_3.'"></textarea></td></tr>'; print '<textarea name="note_public" wrap="soft" cols="70" rows="'.ROWS_3.'"></textarea></td></tr>';
@ -516,7 +516,7 @@ if ($_GET["action"] == 'create')
print '<tr><td>'.$langs->trans("NotePrivate").'</td><td valign="top">'; print '<tr><td>'.$langs->trans("NotePrivate").'</td><td valign="top">';
print '<textarea name="note" wrap="soft" cols="70" rows="'.ROWS_3.'"></textarea></td></tr>'; print '<textarea name="note" wrap="soft" cols="70" rows="'.ROWS_3.'"></textarea></td></tr>';
} }
print '<tr><td colspan="2" align="center"><input type="submit" class="button" value="'.$langs->trans("Create").'"></td></tr>'; print '<tr><td colspan="2" align="center"><input type="submit" class="button" value="'.$langs->trans("Create").'"></td></tr>';
print "</table>\n"; print "</table>\n";
@ -595,7 +595,7 @@ if ($_GET["action"] == 'create')
{ {
dolibarr_print_error($db); dolibarr_print_error($db);
} }
print '</div>'; print '</div>';
} }
else else
@ -606,7 +606,7 @@ else
/* *************************************************************************** */ /* *************************************************************************** */
{ {
$now=gmmktime(); $now=gmmktime();
$id = $_GET["id"]; $id = $_GET["id"];
if ($id > 0) if ($id > 0)
{ {
@ -620,13 +620,13 @@ else
} }
if ($mesg) print $mesg; if ($mesg) print $mesg;
$nbofservices=sizeof($contrat->lignes); $nbofservices=sizeof($contrat->lignes);
$author = new User($db); $author = new User($db);
$author->id = $contrat->user_author_id; $author->id = $contrat->user_author_id;
$author->fetch(); $author->fetch();
$commercial_signature = new User($db); $commercial_signature = new User($db);
$commercial_signature->id = $contrat->commercial_signature_id; $commercial_signature->id = $contrat->commercial_signature_id;
$commercial_signature->fetch(); $commercial_signature->fetch();
@ -741,12 +741,12 @@ else
} }
echo '<br>'; echo '<br>';
$servicepos=(isset($_REQUEST["servicepos"])?$_REQUEST["servicepos"]:1); $servicepos=(isset($_REQUEST["servicepos"])?$_REQUEST["servicepos"]:1);
$colorb='333333'; $colorb='333333';
$arrayothercontracts=$contrat->getListOfContracts('others'); $arrayothercontracts=$contrat->getListOfContracts('others');
/* /*
* Lignes de contrats * Lignes de contrats
*/ */
@ -791,7 +791,7 @@ else
$var=true; $var=true;
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$var=!$var; $var=!$var;
if ($_GET["action"] != 'editline' || $_GET["rowid"] != $objp->rowid) if ($_GET["action"] != 'editline' || $_GET["rowid"] != $objp->rowid)
@ -855,7 +855,7 @@ else
print '</a>'; print '</a>';
} }
print '</td>'; print '</td>';
print "</tr>\n"; print "</tr>\n";
// Dates de en service prevues et effectives // Dates de en service prevues et effectives
@ -863,7 +863,7 @@ else
{ {
print '<tr '.$bc[$var].'>'; print '<tr '.$bc[$var].'>';
print '<td colspan="6">'; print '<td colspan="6">';
// Date planned // Date planned
print $langs->trans("DateStartPlanned").': '; print $langs->trans("DateStartPlanned").': ';
if ($objp->date_debut) { if ($objp->date_debut) {
@ -879,10 +879,10 @@ else
if ($objp->statut == 4 && $objp->date_fin < ($now - $conf->contrat->services->inactifs->warning_delay)) { print " ".img_warning($langs->trans("Late")); } if ($objp->statut == 4 && $objp->date_fin < ($now - $conf->contrat->services->inactifs->warning_delay)) { print " ".img_warning($langs->trans("Late")); }
} }
else print $langs->trans("Unknown"); else print $langs->trans("Unknown");
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
} }
} }
// Ligne en mode update // Ligne en mode update
else else
@ -926,21 +926,21 @@ else
print "</form>\n"; print "</form>\n";
} }
$db->free($result); $db->free($result);
} }
else else
{ {
dolibarr_print_error($db); dolibarr_print_error($db);
} }
if ($contrat->statut > 0) if ($contrat->statut > 0)
{ {
print '<tr '.$bc[false].'>'; print '<tr '.$bc[false].'>';
print '<td colspan="6"><hr></td>'; print '<td colspan="6"><hr></td>';
print "</tr>\n"; print "</tr>\n";
} }
print "</table>"; print "</table>";
@ -960,11 +960,11 @@ else
$formquestion=array( $formquestion=array(
'text' => $langs->trans("ConfirmMoveToAnotherContractQuestion"), 'text' => $langs->trans("ConfirmMoveToAnotherContractQuestion"),
array('type' => 'select', 'name' => 'newcid', 'values' => $arraycontractid)); array('type' => 'select', 'name' => 'newcid', 'values' => $arraycontractid));
$html->form_confirm($_SERVER["PHP_SELF"]."?id=".$contrat->id."&amp;lineid=".$_GET["rowid"],$langs->trans("MoveToAnotherContract"),$langs->trans("ConfirmMoveToAnotherContract"),"confirm_move",$formquestion); $html->form_confirm($_SERVER["PHP_SELF"]."?id=".$contrat->id."&amp;lineid=".$_GET["rowid"],$langs->trans("MoveToAnotherContract"),$langs->trans("ConfirmMoveToAnotherContract"),"confirm_move",$formquestion);
print '<table class="noborder" width="100%"><tr '.$bc[false].' height="6"><td></td></tr></table>'; print '<table class="noborder" width="100%"><tr '.$bc[false].' height="6"><td></td></tr></table>';
} }
/* /*
* Confirmation de la validation activation * Confirmation de la validation activation
*/ */
@ -987,8 +987,8 @@ else
$dateactend = dolibarr_mktime(12, 0 , 0, $_POST["endmonth"], $_POST["endday"], $_POST["endyear"]); $dateactend = dolibarr_mktime(12, 0 , 0, $_POST["endmonth"], $_POST["endday"], $_POST["endyear"]);
$html->form_confirm($_SERVER["PHP_SELF"]."?id=".$contrat->id."&amp;ligne=".$_GET["ligne"]."&amp;date=".$dateactstart."&amp;dateend=".$dateactend,$langs->trans("CloseService"),$langs->trans("ConfirmCloseService",dolibarr_print_date($dateactend,"%A %d %B %Y")),"confirm_closeline"); $html->form_confirm($_SERVER["PHP_SELF"]."?id=".$contrat->id."&amp;ligne=".$_GET["ligne"]."&amp;date=".$dateactstart."&amp;dateend=".$dateactend,$langs->trans("CloseService"),$langs->trans("ConfirmCloseService",dolibarr_print_date($dateactend,"%A %d %B %Y")),"confirm_closeline");
print '<table class="noborder" width="100%"><tr '.$bc[false].' height="6"><td></td></tr></table>'; print '<table class="noborder" width="100%"><tr '.$bc[false].' height="6"><td></td></tr></table>';
} }
// Area with activation info // Area with activation info
if ($contrat->statut > 0) if ($contrat->statut > 0)
{ {
@ -1012,7 +1012,7 @@ else
print "</tr>\n"; print "</tr>\n";
print '<tr '.$bc[false].'>'; print '<tr '.$bc[false].'>';
print '<td>'; print '<td>';
// Si pas encore active // Si pas encore active
if (! $objp->date_debut_reelle) { if (! $objp->date_debut_reelle) {
@ -1077,7 +1077,7 @@ else
print '<td>'.$langs->trans("DateEndPlanned").'</td><td>'; print '<td>'.$langs->trans("DateEndPlanned").'</td><td>';
print $html->select_date($dateactend,"end",$usehm,$usehm,'',"active"); print $html->select_date($dateactend,"end",$usehm,$usehm,'',"active");
print '</td>'; print '</td>';
print '<td align="center" rowspan="2" valign="middle">'; print '<td align="center" rowspan="2" valign="middle">';
print '<input type="submit" class="button" name="activate" value="'.$langs->trans("Activate").'"><br>'; print '<input type="submit" class="button" name="activate" value="'.$langs->trans("Activate").'"><br>';
print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">'; print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
@ -1139,16 +1139,16 @@ else
print '</table>'; print '</table>';
print '</form>'; print '</form>';
} }
print '</td>'; // End td if line is 1 print '</td>'; // End td if line is 1
print '</tr>'; print '</tr>';
print '<tr><td style="border-right: 1px solid #'.$colorb.'">&nbsp;</td></tr>'; print '<tr><td style="border-right: 1px solid #'.$colorb.'">&nbsp;</td></tr>';
$cursorline++; $cursorline++;
} }
print '</table>'; print '</table>';
/* /*
* Ajouter une ligne produit/service * Ajouter une ligne produit/service
*/ */
@ -1157,7 +1157,7 @@ else
{ {
print '<br>'; print '<br>';
print '<table class="noborder" width="100%">'; // Array with (n*2)+1 lines print '<table class="noborder" width="100%">'; // Array with (n*2)+1 lines
print "<tr class=\"liste_titre\">"; print "<tr class=\"liste_titre\">";
print '<td>'.$langs->trans("Service").'</td>'; print '<td>'.$langs->trans("Service").'</td>';
print '<td align="center">'.$langs->trans("VAT").'</td>'; print '<td align="center">'.$langs->trans("VAT").'</td>';
@ -1191,7 +1191,7 @@ else
print '<td align="right" nowrap><input type="text" class="flat" size="1" name="premise" value="'.$contrat->societe->remise_client.'">%</td>'; print '<td align="right" nowrap><input type="text" class="flat" size="1" name="premise" value="'.$contrat->societe->remise_client.'">%</td>';
print '<td align="center" colspan="2" rowspan="2"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td>'; print '<td align="center" colspan="2" rowspan="2"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td>';
print '</tr>'."\n"; print '</tr>'."\n";
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
print '<td colspan="8">'; print '<td colspan="8">';
print $langs->trans("DateStartPlanned").' '; print $langs->trans("DateStartPlanned").' ';
@ -1200,11 +1200,11 @@ else
$form->select_date('',"date_end",$usehm,$usehm,1,"addligne"); $form->select_date('',"date_end",$usehm,$usehm,1,"addligne");
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
print '</form>'; print '</form>';
$var=!$var; $var=!$var;
// Service libre // Service libre
print '<form name="addligne_sl" action="'.$_SERVER["PHP_SELF"].'?id='.$id.'" method="post">'; print '<form name="addligne_sl" action="'.$_SERVER["PHP_SELF"].'?id='.$id.'" method="post">';
print '<input type="hidden" name="action" value="addligne">'; print '<input type="hidden" name="action" value="addligne">';
@ -1232,18 +1232,18 @@ else
$form->select_date('',"date_end_sl",$usehm,$usehm,1,"addligne_sl"); $form->select_date('',"date_end_sl",$usehm,$usehm,1,"addligne_sl");
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
print '</form>'; print '</form>';
print '</table>'; print '</table>';
} }
//print '</td><td align="center" class="tab" style="padding: 4px; border-right: 1px solid #'.$colorb.'; border-top: 1px solid #'.$colorb.'; border-bottom: 1px solid #'.$colorb.';">'; //print '</td><td align="center" class="tab" style="padding: 4px; border-right: 1px solid #'.$colorb.'; border-top: 1px solid #'.$colorb.'; border-bottom: 1px solid #'.$colorb.';">';
//print '</td></tr></table>'; //print '</td></tr></table>';
print '</div>'; print '</div>';
@ -1279,7 +1279,7 @@ else
// print '<a class="butActionRefused" href="#" title="'.$langs->trans("CloseRefusedBecauseOneServiceActive").'">'.$langs->trans("Close").'</a>'; // print '<a class="butActionRefused" href="#" title="'.$langs->trans("CloseRefusedBecauseOneServiceActive").'">'.$langs->trans("Close").'</a>';
//} //}
} }
// On peut supprimer entite si // On peut supprimer entite si
// - Droit de creer + mode brouillon (erreur creation) // - Droit de creer + mode brouillon (erreur creation)
// - Droit de supprimer // - Droit de supprimer

View File

@ -28,7 +28,7 @@
/** /**
\brief Permet de calculer les parts total HT, TVA et TTC d'une ligne de \brief Permet de calculer les parts total HT, TVA et TTC d'une ligne de
facture, propale, commande ou autre depuis: facture, propale, commande ou autre depuis:
quantity, unit price, remise_percent_ligne, txtva, remise_percent_global quantity, unit price, remise_percent_ligne, txtva, remise_percent_global, price_base_type, info_bits
\param qty Quantity \param qty Quantity
\param pu Prix unitaire (HT ou TTC selon price_base_type) \param pu Prix unitaire (HT ou TTC selon price_base_type)
\param remise_percent_ligne Remise ligne \param remise_percent_ligne Remise ligne
@ -41,7 +41,7 @@
function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $remise_percent_global=0, $price_base_type='HT', $info_bits=0) 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 $info_bits"); //dolibarr_syslog("price.lib::calcul_price_total $qty, $pu, $remise_percent_ligne, $txtva, $price_base_type $info_bits");
@ -53,11 +53,11 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $remise_pe
$tot_avec_remise = $tot_avec_remise_ligne * ( 1 - ($remise_percent_global / 100)); $tot_avec_remise = $tot_avec_remise_ligne * ( 1 - ($remise_percent_global / 100));
$result[0] = price2num($tot_avec_remise, 'MT'); $result[0] = price2num($tot_avec_remise, 'MT');
$result[2] = price2num($tot_avec_remise * ( 1 + ( (($info_bits & 1)?0:$txtva) / 100)), 'MT'); // Selon TVA NPR ou non $result[2] = price2num($tot_avec_remise * ( 1 + ( (($info_bits & 1)?0:$txtva) / 100)), 'MT'); // Selon TVA NPR ou non
$result2bis= price2num($tot_avec_remise * ( 1 + ( $txtva / 100)), 'MT'); // Si TVA consideree normale (non NPR) $result2bis= price2num($tot_avec_remise * ( 1 + ( $txtva / 100)), 'MT'); // Si TVA consideree normale (non NPR)
$result[1] = $result2bis - $result[0]; $result[1] = $result2bis - $result[0];
$result[3] = price2num($pu, 'MU'); $result[3] = price2num($pu, 'MU');
$result[5] = price2num($pu * ( 1 + ((($info_bits & 1)?0:$txtva) / 100)), 'MU'); // Selon TVA NPR ou non $result[5] = price2num($pu * ( 1 + ((($info_bits & 1)?0:$txtva) / 100)), 'MU'); // Selon TVA NPR ou non
$result5bis= price2num($pu * ( 1 + ($txtva / 100)), 'MU'); // Si TVA consideree normale (non NPR) $result5bis= price2num($pu * ( 1 + ($txtva / 100)), 'MU'); // Si TVA consideree normale (non NPR)
$result[4] = $result5bis - $result[3]; $result[4] = $result5bis - $result[3];
} }
else else