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 '\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 '\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 '"; + + // Customer + if ( is_null($facture->client) ) + $facture->fetch_client(); + + print ""; + print ''; + print "
'.$langs->trans("Ref").''; + print $facture->ref; + print "
".$langs->trans("Customer")."'; + print ''.$facture->client->nom.'
"; + + 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 ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + $var = false; + + print ''; + print ''; + print ''; + print ''; + + // Ligne ajout pour contact interne + print ""; + + print ''; + + print ''; + + print ''; + print ''; + print ''; + print ''; + + print ''; + + print ''; + print ''; + print ''; + print ''; + + // Ligne ajout pour contact externe + $var=!$var; + print ""; + + print ''; + + print ''; + + print ''; + print ''; + print ''; + print ''; + + print ""; + + } + + print ''; + + // Liste des contacts liés + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + 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 ''; + + // Societe + print ''; + + // Contact + print ''; + + // Type de contact + print ''; + + // Statut + print ''; + + // Icon update et delete (statut contrat 0=brouillon,1=validé,2=fermé) + print ''; + + print "\n"; + + $i ++; + } + $db->free($result); + } + print "
'.$langs->trans("Source").''.$langs->trans("Company").''.$langs->trans("Contacts").''.$langs->trans("ContactType").' 
'; + print $langs->trans("Internal"); + print ''; + print $conf->global->MAIN_INFO_SOCIETE_NOM; + print ''; + $html->select_users($user->id,'contactid'); + print ''; + select_type_contact($facture, '', 'type','internal'); + print '
'; + print $langs->trans("External"); + print ''; + $selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$facture->client->id; + $selectedCompany = select_societes_for_newconcat($facture, $selectedCompany, $htmlname = 'newcompany'); + print ''; + $html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid'); + print ''; + select_type_contact($facture, '', 'type','external'); + print '
 
'.$langs->trans("Source").''.$langs->trans("Company").''.$langs->trans("Contacts").''.$langs->trans("ContactType").''.$langs->trans("Status").' 
'; + if ($tab[$i]['source']=='internal') print $langs->trans("Internal"); + if ($tab[$i]['source']=='external') print $langs->trans("External"); + 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 ''; + 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 ''.$tab[$i]['libelle'].''; + // Activation desativation du contact + if ($facture->statut >= 0) + print ''; + print img_statut($tab[$i]['status']); + + if ($facture->statut >= 0) + print ''; + print ''; + if ($facture->statut == 0 && $user->rights->facture->creer) + { + print ' '; + print ''; + print img_delete(); + print ''; + } + print '
"; + } + else + { + // Contrat non trouvé + print "Contrat inexistant ou accés refusé"; + } +} + +$db->close(); + +llxFooter('$Date: 2005/10/02 19:33:16 $'); +?>