diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 17d3aa07a90..52d81c481c0 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -168,7 +168,21 @@ if ($_GET['action'] == 'modif' && $user->rights->facture->modifier && $conf->glo
*/
$fac = new Facture($db);
$fac->fetch($_GET['facid']);
- $fac->reopen($user);
+
+ // On vérifie si les lignes de factures ont été exportées en compta et/ou ventilées
+ $ventilExportCompta = 0 ;
+ for ($i = 0 ; $i < sizeof($fac->lignes) ; $i++)
+ {
+ if ($fac->lignes[$i]->export_compta <> 0 && $fac->lignes[$i]->code_ventilation <> 0)
+ {
+ $ventilExportCompta++;
+ }
+ }
+
+ if ($ventilExportCompta == 0)
+ {
+ $fac->reopen($user);
+ }
}
if ($_POST['action'] == 'confirm_deleteproductline' && $_POST['confirm'] == 'yes' && $conf->global->PRODUIT_CONFIRM_DELETE_LINE)
@@ -2093,11 +2107,21 @@ else
{
print '
';
- // Editer une facture déjà validée et sans paiement
+ // Editer une facture déjà validée, sans paiement effectué et pas exporté en compta
if ($fac->statut == 1)
{
+ // On vérifie si les lignes de factures ont été exportées en compta et/ou ventilées
+ $ventilExportCompta = 0 ;
+ for ($i = 0 ; $i < sizeof($fac->lignes) ; $i++)
+ {
+ if ($fac->lignes[$i]->export_compta <> 0 && $fac->lignes[$i]->code_ventilation <> 0)
+ {
+ $ventilExportCompta++;
+ }
+ }
+
if ($conf->global->FACTURE_ENABLE_EDITDELETE && $user->rights->facture->modifier
- && ($resteapayer == $fac->total_ttc && $fac->paye == 0))
+ && ($resteapayer == $fac->total_ttc && $fac->paye == 0 && $ventilExportCompta == 0))
{
print '
'.$langs->trans('Edit').'';
}
@@ -2157,8 +2181,18 @@ else
{
$maxfacnumber = $db->fetch_row($resql);
}
+
+ // On vérifie si les lignes de factures ont été exportées en compta et/ou ventilées
+ $ventilExportCompta = 0 ;
+ for ($i = 0 ; $i < sizeof($fac->lignes) ; $i++)
+ {
+ if ($fac->lignes[$i]->export_compta <> 0 && $fac->lignes[$i]->code_ventilation <> 0)
+ {
+ $ventilExportCompta++;
+ }
+ }
- if ($maxfacnumber[0] == $fac->ref)
+ if ($maxfacnumber[0] == $fac->ref && $ventilExportCompta == 0)
{
print '
id.'&action=delete">'.$langs->trans('Delete').'';
}
diff --git a/htdocs/compta/ventilation/fiche.php b/htdocs/compta/ventilation/fiche.php
index 901fbe6421f..1e5b4bb9bef 100644
--- a/htdocs/compta/ventilation/fiche.php
+++ b/htdocs/compta/ventilation/fiche.php
@@ -82,7 +82,10 @@ $form = new Form($db);
if($_GET["id"])
{
- $sql = "SELECT f.facnumber, f.rowid as facid, l.fk_product, l.description, l.price, l.qty, l.rowid, l.tva_taux, l.remise_percent, l.subprice, ".$db->pdate("l.date_start")." as date_start, ".$db->pdate("l.date_end")." as date_end, l.fk_code_ventilation ";
+ $sql = "SELECT f.facnumber, f.rowid as facid, l.fk_product, l.description, l.price,";
+ $sql .= " l.qty, l.rowid, l.tva_taux, l.remise_percent, l.subprice,";
+ $sql .= " ".$db->pdate("l.date_start")." as date_start, ".$db->pdate("l.date_end")." as date_end,";
+ $sql .= " l.fk_code_ventilation ";
$sql .= " FROM ".MAIN_DB_PREFIX."facturedet as l";
$sql .= " , ".MAIN_DB_PREFIX."facture as f";
$sql .= " WHERE f.rowid = l.fk_facture AND f.fk_statut = 1 AND l.rowid = ".$_GET["id"];
diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php
index 0d859833614..a9dc6105dcf 100644
--- a/htdocs/facture.class.php
+++ b/htdocs/facture.class.php
@@ -405,7 +405,7 @@ class Facture extends CommonObject
*/
$sql = 'SELECT l.rowid, l.fk_product, l.description, l.price, l.qty, l.tva_taux, l.remise, l.remise_percent, l.subprice,';
$sql.= ' '.$this->db->pdate('l.date_start').' as date_start,'.$this->db->pdate('l.date_end').' as date_end,';
- $sql.= ' l.info_bits, l.total_ht, l.total_tva, l.total_ttc,';
+ $sql.= ' l.info_bits, l.total_ht, l.total_tva, l.total_ttc, l.fk_code_ventilation, l.fk_export_compta,';
$sql.= ' p.label as label, p.description as product_desc';
$sql.= ' FROM '.MAIN_DB_PREFIX.'facturedet as l';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product = p.rowid';
@@ -420,25 +420,27 @@ class Facture extends CommonObject
{
$objp = $this->db->fetch_object($result2);
$faclig = new FactureLigne($this->db);
- $faclig->rowid = $objp->rowid;
- $faclig->desc = $objp->description; // Description ligne
- $faclig->libelle = $objp->label; // Label produit
- $faclig->product_desc = $objp->product_desc; // Description produit
- $faclig->qty = $objp->qty;
- $faclig->price = $objp->price;
- $faclig->subprice = $objp->subprice;
- $faclig->tva_taux = $objp->tva_taux;
- $faclig->remise = $objp->remise;
- $faclig->remise_percent = $objp->remise_percent;
- $faclig->produit_id = $objp->fk_product;
- $faclig->date_start = $objp->date_start;
- $faclig->date_end = $objp->date_end;
- $faclig->date_start = $objp->date_start;
- $faclig->date_end = $objp->date_end;
- $faclig->info_bits = $objp->info_bits;
- $faclig->total_ht = $objp->total_ht;
- $faclig->total_tva = $objp->total_tva;
- $faclig->total_ttc = $objp->total_ttc;
+ $faclig->rowid = $objp->rowid;
+ $faclig->desc = $objp->description; // Description ligne
+ $faclig->libelle = $objp->label; // Label produit
+ $faclig->product_desc = $objp->product_desc; // Description produit
+ $faclig->qty = $objp->qty;
+ $faclig->price = $objp->price;
+ $faclig->subprice = $objp->subprice;
+ $faclig->tva_taux = $objp->tva_taux;
+ $faclig->remise = $objp->remise;
+ $faclig->remise_percent = $objp->remise_percent;
+ $faclig->produit_id = $objp->fk_product;
+ $faclig->date_start = $objp->date_start;
+ $faclig->date_end = $objp->date_end;
+ $faclig->date_start = $objp->date_start;
+ $faclig->date_end = $objp->date_end;
+ $faclig->info_bits = $objp->info_bits;
+ $faclig->total_ht = $objp->total_ht;
+ $faclig->total_tva = $objp->total_tva;
+ $faclig->total_ttc = $objp->total_ttc;
+ $faclig->export_compta = $objp->fk_export_compta;
+ $faclig->code_ventilation = $objp->fk_code_ventilation;
$this->lignes[$i] = $faclig;
$i++;
}