Index: facture.php
===================================================================
RCS file: /cvsroot/dolibarr/dolibarr/htdocs/compta/facture.php,v
retrieving revision 1.235
diff -u -r1.235 facture.php
--- facture.php 11 Nov 2005 20:11:57 -0000 1.235
+++ facture.php 28 Nov 2005 21:32:32 -0000
@@ -61,7 +61,6 @@
// Nombre de ligne pour choix de produit/service prédéfinis
$NBLINES=4;
-
/*
* Actions
*/
@@ -551,9 +550,6 @@
facture_pdf_create($db, $_GET['facid']);
}
-
-
-
/*********************************************************************
*
* Fonctions internes
@@ -1101,36 +1097,9 @@
$author->id = $fac->user_author;
$author->fetch();
- $h = 0;
-
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans('CardBill');
- $hselected = $h;
- $h++;
-
- if ($conf->use_preview_tabs)
- {
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/apercu.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans('Preview');
- $h++;
- }
-
- if ($fac->mode_reglement_code == 'PRE')
- {
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/prelevement.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans('StandingOrders');
- $h++;
- }
-
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/note.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans('Note');
- $h++;
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/info.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans('Info');
- $h++;
-
- dolibarr_fiche_head($head, $hselected, $langs->trans('Bill').' : '.$fac->ref);
+ $head = facture_prepare_head($fac);
+ dolibarr_fiche_head($head, 0, $langs->trans('Bill').' : '.$fac->ref);
/*
* Confirmation de la suppression de la facture
@@ -1501,7 +1470,7 @@
}
print '';
print '
';
- print $html->select_tva('tva_tx',$objp->tva_taux);
+ print $html->select_tva('tva_tx',$objp->tva_taux,$mysoc,$soc);
print ' ';
print ' ';
print ' ';
@@ -1559,7 +1528,7 @@
print '';
print ' ';
print '';
- $html->select_tva('tva_tx',$conf->defaulttx);
+ $html->select_tva('tva_tx',$conf->defaulttx,$mysoc,$soc);
print ' ';
print ' ';
print ' ';
Index: pre.inc.php
===================================================================
RCS file: /cvsroot/dolibarr/dolibarr/htdocs/compta/pre.inc.php,v
retrieving revision 1.47
diff -u -r1.47 pre.inc.php
--- pre.inc.php 3 Sep 2005 00:27:57 -0000 1.47
+++ pre.inc.php 28 Nov 2005 21:32:32 -0000
@@ -135,4 +135,43 @@
left_menu($menu->liste, $help_url);
}
+function facture_prepare_head($fac)
+{
+ global $langs, $conf;
+ $h = 0;
+ $head = array();
+
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('CardBill');
+ $hselected = $h;
+ $h++;
+
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture/contact.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('Contact');
+ $h++;
+
+ if ($conf->use_preview_tabs)
+ {
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture/apercu.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('Preview');
+ $h++;
+ }
+
+ if ($fac->mode_reglement_code == 'PRE')
+ {
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture/prelevement.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('StandingOrders');
+ $h++;
+ }
+
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture/note.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('Note');
+ $h++;
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture/info.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('Info');
+ $h++;
+
+ return $head;
+}
+
?>
Index: facture/apercu.php
===================================================================
RCS file: /cvsroot/dolibarr/dolibarr/htdocs/compta/facture/apercu.php,v
retrieving revision 1.28
diff -u -r1.28 apercu.php
--- facture/apercu.php 2 Oct 2005 19:20:22 -0000 1.28
+++ facture/apercu.php 28 Nov 2005 21:32:33 -0000
@@ -69,36 +69,9 @@
$author->id = $fac->user_author;
$author->fetch();
- $h = 0;
-
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("CardBill");
- $h++;
-
- if ($conf->use_preview_tabs)
- {
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/apercu.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("Preview");
- $hselected = $h;
- $h++;
- }
-
- if ($fac->mode_reglement_code == 'PRE')
- {
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/prelevement.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("StandingOrders");
- $h++;
- }
-
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/note.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("Note");
- $h++;
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/info.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("Info");
- $h++;
-
+ $head = facture_prepare_head($fac);
+ $hselected = $conf->use_preview_tabs ? 2 : false;
dolibarr_fiche_head($head, $hselected, $langs->trans("Bill")." : $fac->ref");
-
/*
* Facture
Index: facture/info.php
===================================================================
RCS file: /cvsroot/dolibarr/dolibarr/htdocs/compta/facture/info.php,v
retrieving revision 1.12
diff -u -r1.12 info.php
--- facture/info.php 2 Oct 2005 19:20:22 -0000 1.12
+++ facture/info.php 28 Nov 2005 21:32:33 -0000
@@ -45,36 +45,10 @@
$soc = new Societe($db, $fac->socidp);
$soc->fetch($fac->socidp);
-$h = 0;
-
-$head[$h][0] = DOL_URL_ROOT.'/compta/facture.php?facid='.$fac->id;
-$head[$h][1] = $langs->trans("CardBill");
-$h++;
-
-if ($conf->use_preview_tabs)
-{
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/apercu.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("Preview");
- $h++;
-}
-
-if ($fac->mode_reglement_code == 'PRE')
-{
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/prelevement.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("StandingOrders");
- $h++;
-}
-
-$head[$h][0] = DOL_URL_ROOT.'/compta/facture/note.php?facid='.$fac->id;
-$head[$h][1] = $langs->trans("Note");
-$h++;
-
-$head[$h][0] = DOL_URL_ROOT.'/compta/facture/info.php?facid='.$fac->id;
-$head[$h][1] = $langs->trans("Info");
-$hselected = $h;
-$h++;
-
-
+$head = facture_prepare_head($fac);
+$hselected = $conf->use_preview_tabs ?
+ (($fac->mode_reglement_code == 'PRE') ? 5: 4)
+ : 3;
dolibarr_fiche_head($head, $hselected, $langs->trans("Bill")." : $fac->ref");
Index: facture/note.php
===================================================================
RCS file: /cvsroot/dolibarr/dolibarr/htdocs/compta/facture/note.php,v
retrieving revision 1.25
diff -u -r1.25 note.php
--- facture/note.php 10 Sep 2005 16:15:35 -0000 1.25
+++ facture/note.php 28 Nov 2005 21:32:33 -0000
@@ -75,34 +75,10 @@
$soc = new Societe($db, $fac->socidp);
$soc->fetch($fac->socidp);
- $h=0;
-
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("CardBill");
- $h++;
-
- if ($conf->use_preview_tabs)
- {
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/apercu.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("Preview");
- $h++;
- }
-
- if ($fac->mode_reglement_code == 'PRE')
- {
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/prelevement.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("StandingOrders");
- $h++;
- }
-
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/note.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("Note");
- $hselected = $h;
- $h++;
- $head[$h][0] = DOL_URL_ROOT.'/compta/facture/info.php?facid='.$fac->id;
- $head[$h][1] = $langs->trans("Info");
- $h++;
-
+ $head = facture_prepare_head($fac);
+ $hselected = $conf->use_preview_tabs ?
+ (($fac->mode_reglement_code == 'PRE') ? 4: 3)
+ : 2;
dolibarr_fiche_head($head, $hselected, $langs->trans("Bill")." : $fac->ref");
Index: facture/pre.inc.php
===================================================================
RCS file: /cvsroot/dolibarr/dolibarr/htdocs/compta/facture/pre.inc.php,v
retrieving revision 1.18
diff -u -r1.18 pre.inc.php
--- facture/pre.inc.php 4 Sep 2005 14:56:33 -0000 1.18
+++ facture/pre.inc.php 28 Nov 2005 21:32:33 -0000
@@ -56,4 +56,45 @@
left_menu($menu->liste, $help_url);
}
+
+function facture_prepare_head($fac)
+{
+ global $langs, $conf;
+ $h = 0;
+ $head = array();
+
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('CardBill');
+ $hselected = $h;
+ $h++;
+
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture/contact.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('Contact');
+ $h++;
+
+ if ($conf->use_preview_tabs)
+ {
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture/apercu.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('Preview');
+ $h++;
+ }
+
+ if ($fac->mode_reglement_code == 'PRE')
+ {
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture/prelevement.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('StandingOrders');
+ $h++;
+ }
+
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture/note.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('Note');
+ $h++;
+ $head[$h][0] = DOL_URL_ROOT.'/compta/facture/info.php?facid='.$fac->id;
+ $head[$h][1] = $langs->trans('Info');
+ $h++;
+
+ return $head;
+}
+
+
?>
Index: facture/contact.php
===================================================================
RCS file: facture/contact.php
diff -N facture/contact.php
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ facture/contact.php 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,438 @@
+
+ * Copyright (C) 2005 Destailleur Laurent
+ *
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Id: $
+ * $Source: $
+ */
+
+/**
+ \file htdocs/compta/contact.php
+ \ingroup facture
+ \brief Onglet de gestion des contacts des factures
+ \version $Revision: 1.8 $
+*/
+
+require ("./pre.inc.php");
+require_once(DOL_DOCUMENT_ROOT."/facture.class.php");
+require_once(DOL_DOCUMENT_ROOT."/contact.class.php");
+
+$langs->load("facture");
+// $langs->load("orders");
+$langs->load("companies");
+
+$user->getrights('facture');
+
+if (!$user->rights->facture->lire)
+ accessforbidden();
+
+// les methodes locales
+/**
+ * \brief Retourne la liste déroulante des sociétés
+ * \param selected Societe présélectionnée
+ * \param htmlname Nom champ formulaire
+ */
+function select_societes_for_newconcat($facture, $selected = '', $htmlname = 'newcompany')
+{
+ // On recherche les societes
+ $sql = "SELECT s.idp, s.nom FROM";
+ $sql .= " ".MAIN_DB_PREFIX."societe as s";
+// if ($filter) $sql .= " WHERE $filter";
+ $sql .= " ORDER BY nom ASC";
+
+ $resql = $facture->db->query($sql);
+ if ($resql)
+ {
+ $javaScript = "window.location='./contact.php?facid=".$facture->id."&".$htmlname."=' + form.".$htmlname.".options[form.".$htmlname.".selectedIndex].value;";
+ print '';
+ $num = $facture->db->num_rows($resql);
+ $i = 0;
+ if ($num)
+ {
+ while ($i < $num)
+ {
+ $obj = $facture->db->fetch_object($resql);
+ if ($i == 0)
+ $firstCompany = $obj->idp;
+ if ($selected > 0 && $selected == $obj->idp)
+ {
+ print ''.dolibarr_trunc($obj->nom,24).' ';
+ $firstCompany = $obj->idp;
+ } else
+ {
+ print ''.dolibarr_trunc($obj->nom,24).' ';
+ }
+ $i ++;
+ }
+ }
+ print " \n";
+ return $firstCompany;
+ } else
+ {
+ dolibarr_print_error($facture->db);
+ }
+}
+
+/**
+ *
+ */
+function select_type_contact($facture, $defValue, $htmlname = 'type', $source)
+{
+ $lesTypes = $facture->liste_type_contact($source);
+ print '';
+ foreach($lesTypes as $key=>$value)
+ {
+ print ''.$value.' ';
+ }
+ print " \n";
+}
+
+
+// Sécurité accés client
+if ($user->societe_id > 0)
+{
+ $action = '';
+ $socidp = $user->societe_id;
+}
+
+/*
+ * Ajout d'un nouveau contact
+ */
+
+if ($_POST["action"] == 'addcontact' && $user->rights->facture->creer)
+{
+
+ $result = 0;
+ $facture = new Facture($db);
+ $result = $facture->fetch($_GET["facid"]);
+
+ if ($result > 0 && $_GET["facid"] > 0)
+ {
+ $result = $facture->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+ }
+
+ if ($result >= 0)
+ {
+ Header("Location: contact.php?facid=".$facture->id);
+ exit;
+ } else
+ {
+ $mesg = ''.$facture->error.'
';
+ }
+}
+// modification d'un contact. On enregistre le type
+if ($_POST["action"] == 'updateligne' && $user->rights->facture->creer)
+{
+ $facture = new Facture($db);
+ if ($facture->fetch($_GET["facid"]))
+ {
+ $contact = $facture->detail_contact($_POST["elrowid"]);
+ $type = $_POST["type"];
+ $statut = $contact->statut;
+
+ $result = $facture->update_contact($_POST["elrowid"], $statut, $type);
+ if ($result >= 0)
+ {
+ $db->commit();
+ } else
+ {
+ dolibarr_print_error($db, "result=$result");
+ $db->rollback();
+ }
+ } else
+ {
+ dolibarr_print_error($db);
+ }
+}
+
+// bascule du statut d'un contact
+if ($_GET["action"] == 'swapstatut' && $user->rights->facture->creer)
+{
+ $facture = new Facture($db);
+ if ($facture->fetch($_GET["facid"]))
+ {
+ $contact = $facture->detail_contact($_GET["ligne"]);
+ $id_type_contact = $contact->fk_c_type_contact;
+ $statut = ($contact->statut == 4) ? 5 : 4;
+
+ $result = $facture->update_contact($_GET["ligne"], $statut, $id_type_contact);
+ if ($result >= 0)
+ {
+ $db->commit();
+ } else
+ {
+ dolibarr_print_error($db, "result=$result");
+ $db->rollback();
+ }
+ } else
+ {
+ dolibarr_print_error($db);
+ }
+}
+
+// Efface un contact
+if ($_GET["action"] == 'deleteline' && $user->rights->facture->creer)
+{
+ $facture = new Facture($db);
+ $facture->fetch($_GET["facid"]);
+ $result = $facture->delete_contact($_GET["lineid"]);
+
+ if ($result >= 0)
+ {
+ Header("Location: contact.php?facid=".$facture->id);
+ exit;
+ }
+ else {
+ dolibarr_print_error($db);
+ }
+}
+
+
+llxHeader('', $langs->trans("Bill"), "Facture");
+
+$html = new Form($db);
+
+/* *************************************************************************** */
+/* */
+/* Mode vue et edition */
+/* */
+/* *************************************************************************** */
+if ( isset($mesg))
+ print $mesg;
+$id = $_GET["facid"];
+if ($id > 0)
+{
+ $facture = New Facture($db);
+ if ( $facture->fetch($_GET['facid'], $user->societe_id) > 0)
+ {
+ $soc = new Societe($db, $facture->socidp);
+ $soc->fetch($facture->socidp);
+
+ $head = facture_prepare_head($facture);
+
+ dolibarr_fiche_head($head, 1, $langs->trans('Bill').' : '.$facture->ref);
+
+ /*
+ * Facture synthese pour rappel
+ */
+ print '';
+
+ // Reference du facture
+ print ''.$langs->trans("Ref").' ';
+ print $facture->ref;
+ print " ";
+
+ // Customer
+ if ( is_null($facture->client) )
+ $facture->fetch_client();
+
+ print "".$langs->trans("Customer")." ";
+ print '';
+ print ''.$facture->client->nom.' ';
+ print "
";
+
+ print '';
+
+ /*
+ * Lignes de contacts
+ */
+ echo '';
+
+ /*
+ * Ajouter une ligne de contact
+ * Non affiché en mode modification de ligne
+ * ou si facture validée.
+ */
+ if ($facture->statut <= 0 && $_GET["action"] != 'editline' && $user->rights->facture->creer)
+ {
+ print '';
+ print ''.$langs->trans("Source").' ';
+ print ''.$langs->trans("Company").' ';
+ print ''.$langs->trans("Contacts").' ';
+ print ''.$langs->trans("ContactType").' ';
+ print ' ';
+ print " \n";
+
+ $var = false;
+
+ print '';
+
+ print '";
+
+ }
+
+ print ' ';
+
+ // Liste des contacts liés
+ print '';
+ print ''.$langs->trans("Source").' ';
+ print ''.$langs->trans("Company").' ';
+ print ''.$langs->trans("Contacts").' ';
+ print ''.$langs->trans("ContactType").' ';
+ print ''.$langs->trans("Status").' ';
+ print ' ';
+ print " \n";
+
+ $societe = new Societe($db);
+ $var = true;
+
+ foreach(array('internal','external') as $source)
+ {
+ $tab = $facture->liste_contact(-1,$source);
+ $num=sizeof($tab);
+
+ $i = 0;
+ while ($i < $num)
+ {
+ $var = !$var;
+
+ print '';
+
+ // Source
+ print '';
+ if ($tab[$i]['source']=='internal') print $langs->trans("Internal");
+ if ($tab[$i]['source']=='external') print $langs->trans("External");
+ print ' ';
+
+ // Societe
+ print '';
+ if ($tab[$i]['socid'] > 0)
+ {
+ print '';
+ print img_object($langs->trans("ShowCompany"),"company").' '.$societe->get_nom($tab[$i]['socid']);
+ print ' ';
+ }
+ if ($tab[$i]['socid'] < 0)
+ {
+ print $conf->global->MAIN_INFO_SOCIETE_NOM;
+ }
+ if (! $tab[$i]['socid'])
+ {
+ print ' ';
+ }
+ print ' ';
+
+ // Contact
+ print '';
+ if ($tab[$i]['source']=='internal')
+ {
+ print '';
+ print img_object($langs->trans("ShowUser"),"user").' '.$tab[$i]['nom'].' ';
+ }
+ if ($tab[$i]['source']=='external')
+ {
+ print '';
+ print img_object($langs->trans("ShowContact"),"contact").' '.$tab[$i]['nom'].' ';
+ }
+ print ' ';
+
+ // Type de contact
+ print ''.$tab[$i]['libelle'].' ';
+
+ // Statut
+ print '';
+ // Activation desativation du contact
+ if ($facture->statut >= 0)
+ print '';
+ print img_statut($tab[$i]['status']);
+
+ if ($facture->statut >= 0)
+ print ' ';
+ print ' ';
+
+ // Icon update et delete (statut contrat 0=brouillon,1=validé,2=fermé)
+ print '';
+ if ($facture->statut == 0 && $user->rights->facture->creer)
+ {
+ print ' ';
+ print '';
+ print img_delete();
+ print ' ';
+ }
+ print ' ';
+
+ print " \n";
+
+ $i ++;
+ }
+ $db->free($result);
+ }
+ print "
";
+ }
+ else
+ {
+ // Contrat non trouvé
+ print "Contrat inexistant ou accés refusé";
+ }
+}
+
+$db->close();
+
+llxFooter('$Date: 2005/10/02 19:33:16 $');
+?>