2
0
forked from Wavyzz/dolibarr

New: Ajout de la forme juridique dans la configuration globale de sa socit (requis dans les factures).

This commit is contained in:
Laurent Destailleur
2005-08-20 14:36:32 +00:00
parent 76d39158ca
commit 6b64aa40ac
8 changed files with 298 additions and 147 deletions

View File

@@ -35,11 +35,13 @@ if (!$user->admin)
accessforbidden();
if (isset($_POST["action"]) && $_POST["action"] == 'update')
if ( (isset($_POST["action"]) && $_POST["action"] == 'update')
|| (isset($_POST["action"]) && $_POST["action"] == 'updateedit') )
{
dolibarr_set_const($db, "MAIN_INFO_SOCIETE_NOM",$_POST["nom"]);
dolibarr_set_const($db, "MAIN_INFO_SOCIETE_ADRESSE",$_POST["address"]);
dolibarr_set_const($db, "MAIN_INFO_SOCIETE_PAYS",$_POST["pays_id"]);
dolibarr_set_const($db, "MAIN_INFO_SOCIETE_FORME_JURIDIQUE",$_POST["forme_juridique_code"]);
dolibarr_set_const($db, "MAIN_MONNAIE",$_POST["currency"]);
dolibarr_set_const($db, "MAIN_INFO_CAPITAL",$_POST["capital"]);
@@ -48,60 +50,90 @@ if (isset($_POST["action"]) && $_POST["action"] == 'update')
dolibarr_set_const($db, "MAIN_INFO_APE",$_POST["ape"]);
dolibarr_set_const($db, "MAIN_INFO_TVAINTRA",$_POST["tva"]);
if ($_POST['action'] != 'updateedit')
{
Header("Location: index.php");
}
}
llxHeader();
$form = new Form($db);
$countrynotdefined='<font class="error">'.$langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')</font>';
print_titre($langs->trans("GlobalSetup"));
print "<br>\n";
if (isset($_GET["action"]) && $_GET["action"] == 'edit')
if ((isset($_GET["action"]) && $_GET["action"] == 'edit')
|| (isset($_POST["action"]) && $_POST["action"] == 'updateedit') )
{
/*
* Edition des param<61>tres
*/
print '<form method="post" action="index.php">';
print '
<script language="javascript" type="text/javascript">
<!--
function save_refresh()
{
document.form_index.action.value="updateedit";
document.form_index.submit();
// location.href = "index.php?action=updateedit";
}
-->
</script>
';
print '<form method="post" action="index.php" name="form_index">';
print '<input type="hidden" name="action" value="update">';
$var=true;
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("CompanyInfo").'</td></tr>';
print '<tr class="pair"><td>'.$langs->trans("CompanyName").'</td><td>';
print '<input name="nom" value="'. MAIN_INFO_SOCIETE_NOM . '"></td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("CompanyName").'</td><td>';
print '<input name="nom" value="'. $conf->global->MAIN_INFO_SOCIETE_NOM . '"></td></tr>';
print '<tr class="impair"><td>'.$langs->trans("CompanyAddress").'</td><td>';
print '<textarea name="address" cols="50" rows="3">'. MAIN_INFO_SOCIETE_ADRESSE . '</textarea></td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("CompanyAddress").'</td><td>';
print '<textarea name="address" cols="50" rows="2">'. $conf->global->MAIN_INFO_SOCIETE_ADRESSE . '</textarea></td></tr>';
print '<tr class="pair"><td>'.$langs->trans("Country").'</td><td>';
$form->select_pays(MAIN_INFO_SOCIETE_PAYS);
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("Country").'</td><td>';
$form->select_pays($conf->global->MAIN_INFO_SOCIETE_PAYS,'pays_id',' onChange="save_refresh()"');
print '</td></tr>';
print '<tr class="impair"><td>'.$langs->trans("CompanyCurrency").'</td><td>';
$form->select_currency(MAIN_MONNAIE,"currency");
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("CompanyCurrency").'</td><td>';
$form->select_currency($conf->global->MAIN_MONNAIE,"currency");
print '</td></tr>';
print '<tr class="pair"><td width="35%">'.$langs->trans("Capital").'</td><td>';
print '<input name="capital" size="20" value="' . MAIN_INFO_CAPITAL . '"></td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("Capital").'</td><td>';
print '<input name="capital" size="20" value="' . $conf->global->MAIN_INFO_CAPITAL . '"></td></tr>';
print '</table>';
print '<br>';
// Identifiants de la soci<63>t<EFBFBD> (propre au pays)
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td>'.$langs->trans("CompanyIds").'</td><td>'.$langs->trans("Value").'</td></tr>';
$var=true;
$langs->load("companies");
// Recupere code pays
$code_pays=substr($langs->defaultlang,-2); // Par defaut, pays de la localisation
if ($conf->global->MAIN_INFO_SOCIETE_PAYS)
{
$sql = "SELECT code from ".MAIN_DB_PREFIX."c_pays";
$sql .= " WHERE rowid = ".MAIN_INFO_SOCIETE_PAYS;
$sql .= " WHERE rowid = ".$conf->global->MAIN_INFO_SOCIETE_PAYS;
$result=$db->query($sql);
if ($result) {
$obj = $db->fetch_object();
@@ -110,27 +142,73 @@ if (isset($_GET["action"]) && $_GET["action"] == 'edit')
else {
dolibarr_print_error($db);
}
}
// Forme juridique
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("JuridicalStatus").'</td><td>';
if ($conf->global->MAIN_INFO_SOCIETE_PAYS)
{
$form->select_forme_juridique($conf->global->MAIN_INFO_FORME_JURIDIQUE,$code_pays);
}
else
{
print $countrynotdefined;
}
print '</td></tr>';
// ProfID1
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->transcountry("ProfId1",$code_pays).'</td><td>';
if ($conf->global->MAIN_INFO_SOCIETE_PAYS)
{
if ($langs->transcountry("ProfId1",$code_pays) != '-')
{
print '<tr class="impair"><td width="35%">'.$langs->transcountry("ProfId1",$code_pays).'</td><td>';
print '<input name="siren" size="20" value="' . MAIN_INFO_SIREN . '"></td></tr>';
print '<input name="siren" size="20" value="' . $conf->global->MAIN_INFO_SIREN . '">';
}
}
else
{
print $countrynotdefined;
}
print '</td></tr>';
// ProfId2
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->transcountry("ProfId2",$code_pays).'</td><td>';
if ($conf->global->MAIN_INFO_SOCIETE_PAYS)
{
if ($langs->transcountry("ProfId2",$code_pays) != '-')
{
print '<tr class="pair"><td width="35%">'.$langs->transcountry("ProfId2",$code_pays).'</td><td>';
print '<input name="siret" size="20" value="' . MAIN_INFO_SIRET . '"></td></tr>';
print '<input name="siret" size="20" value="' . $conf->global->MAIN_INFO_SIRET . '">';
}
}
else
{
print $countrynotdefined;
}
print '</td></tr>';
// ProfId3
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->transcountry("ProfId3",$code_pays).'</td><td>';
if ($conf->global->MAIN_INFO_SOCIETE_PAYS)
{
if ($langs->transcountry("ProfId3",$code_pays) != '-')
{
print '<tr class="impair"><td width="35%">'.$langs->transcountry("ProfId3",$code_pays).'</td><td>';
print '<input name="ape" size="20" value="' . MAIN_INFO_APE . '"></td></tr>';
print '<input name="ape" size="20" value="' . $conf->global->MAIN_INFO_APE . '">';
}
}
else
{
print $countrynotdefined;
}
print '</td></tr>';
print '<tr class="pair"><td width="35%">'.$langs->trans("TVAIntra").'</td><td>';
print '<input name="tva" size="20" value="' . MAIN_INFO_TVAINTRA . '"></td></tr>';
// TVA Intra
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("TVAIntra").'</td><td>';
print '<input name="tva" size="20" value="' . $conf->global->MAIN_INFO_TVAINTRA . '"></td></tr>';
print '</table>';
@@ -146,61 +224,86 @@ else
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td>'.$langs->trans("CompanyInfo").'</td><td>'.$langs->trans("Value").'</td></tr>';
$var=true;
print '<tr class="pair"><td width="35%">'.$langs->trans("CompanyName").'</td><td>' . MAIN_INFO_SOCIETE_NOM . '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("CompanyName").'</td><td>' . $conf->global->MAIN_INFO_SOCIETE_NOM . '</td></tr>';
print '<tr class="impair"><td width="35%">'.$langs->trans("CompanyAddress").'</td><td>' . nl2br(MAIN_INFO_SOCIETE_ADRESSE) . '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("CompanyAddress").'</td><td>' . nl2br($conf->global->MAIN_INFO_SOCIETE_ADRESSE) . '</td></tr>';
print '<tr class="pair"><td>'.$langs->trans("Country").'</td><td>';
print $form->pays_name(MAIN_INFO_SOCIETE_PAYS,1);
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("Country").'</td><td>';
print $form->pays_name($conf->global->MAIN_INFO_SOCIETE_PAYS,1);
print '</td></tr>';
print '<tr class="impair"><td width="35%">'.$langs->trans("CompanyCurrency").'</td><td>';
print $form->currency_name(MAIN_MONNAIE,1);
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("CompanyCurrency").'</td><td>';
print $form->currency_name($conf->global->MAIN_MONNAIE,1);
print '</td></tr>';
print '<tr class="pair"><td width="35%">'.$langs->trans("Capital").'</td><td>';
print MAIN_INFO_CAPITAL . '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("Capital").'</td><td>';
print $conf->global->MAIN_INFO_CAPITAL . '</td></tr>';
print '</table>';
print '<br>';
// Identifiants de la soci<63>t<EFBFBD> (propre au pays)
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td>'.$langs->trans("CompanyIds").'</td><td>'.$langs->trans("Value").'</td></tr>';
$var=true;
// Recupere code pays
$code_pays=substr($langs->defaultlang,-2); // Par defaut, pays de la localisation
if ($conf->global->MAIN_INFO_SOCIETE_PAYS)
{
$sql = "SELECT code from ".MAIN_DB_PREFIX."c_pays";
$sql .= " WHERE rowid = ".MAIN_INFO_SOCIETE_PAYS;
$sql .= " WHERE rowid = ".$conf->global->MAIN_INFO_SOCIETE_PAYS;
$result=$db->query($sql);
if ($result) {
if ($result)
{
$obj = $db->fetch_object();
if ($obj->code) $code_pays=$obj->code;
}
else {
dolibarr_print_error($db);
}
}
// Forme juridique
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("JuridicalStatus").'</td><td>';
print $form->forme_juridique_name($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE,1);
print '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->transcountry("ProfId1",$code_pays).'</td><td>';
if ($langs->transcountry("ProfId1",$code_pays) != '-')
{
print '<tr class="impair"><td width="35%">'.$langs->transcountry("ProfId1",$code_pays).'</td><td>';
print MAIN_INFO_SIREN . '</td></tr>';
print $conf->global->MAIN_INFO_SIREN;
}
print '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->transcountry("ProfId2",$code_pays).'</td><td>';
if ($langs->transcountry("ProfId2",$code_pays) != '-')
{
print '<tr class="pair"><td width="35%">'.$langs->transcountry("ProfId2",$code_pays).'</td><td>';
print MAIN_INFO_SIRET . '</td></tr>';
print $conf->global->MAIN_INFO_SIRET;
}
print '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->transcountry("ProfId3",$code_pays).'</td><td>';
if ($langs->transcountry("ProfId3",$code_pays) != '-')
{
print '<tr class="impair"><td width="35%">'.$langs->transcountry("ProfId3",$code_pays).'</td><td>';
print MAIN_INFO_APE . '</td></tr>';
print $conf->global->MAIN_INFO_APE;
}
print '</td></tr>';
print '<tr class="pair"><td>'.$langs->trans("TVAIntra").'</td><td>' . MAIN_INFO_TVAINTRA . '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("TVAIntra").'</td><td>' . $conf->global->MAIN_INFO_TVAINTRA . '</td></tr>';
print '</table><br>';
@@ -209,7 +312,6 @@ else
print '<a class="tabAction" href="index.php?action=edit">'.$langs->trans("Edit").'</a>';
print '</div>';
}

View File

@@ -1642,6 +1642,8 @@ class Facture
class FactureLigne
{
var $subprice; // Prix unitaire HT
var $price; // Prix HT apres remise %
/**
* \brief Constructeur d'objets ligne de facture
@@ -1670,6 +1672,7 @@ class FactureLigne
$this->desc = stripslashes($objp->description);
$this->qty = $objp->qty;
$this->price = $objp->price;
$this->price_ttc = $objp->price_ttc;
$this->subprice = $objp->subprice;
$this->tva_taux = $objp->tva_taux;
$this->remise = $objp->remise;

View File

@@ -185,10 +185,11 @@ class Form
* \brief Retourne la liste d<>roulante des pays actifs, dans la langue de l'utilisateur
* \param selected Code pays pr<70>-s<>lectionn<6E>
* \param htmlname Nom de la liste deroulante
* \param htmloption Options html sur le select
* \todo trier liste sur noms apr<70>s traduction plutot que avant
*/
function select_pays($selected='',$htmlname='pays_id')
function select_pays($selected='',$htmlname='pays_id',$htmloption='')
{
global $conf,$langs;
$langs->load("dict");
@@ -199,7 +200,7 @@ class Form
if ($this->db->query($sql))
{
print '<select class="flat" name="'.$htmlname.'">';
print '<select class="flat" name="'.$htmlname.'" '.$htmloption.'>';
$num = $this->db->num_rows();
$i = 0;
if ($num)
@@ -688,6 +689,36 @@ class Form
}
/**
* \brief Retourne le nom traduit de la forme juridique
* \param code Code de la forme juridique
* \return string Nom traduit du pays
*/
function forme_juridique_name($code)
{
global $langs;
$sql = "SELECT libelle FROM ".MAIN_DB_PREFIX."c_forme_juridique";
$sql.= " WHERE code='$code';";
if ($this->db->query($sql))
{
$num = $this->db->num_rows();
if ($num)
{
$obj = $this->db->fetch_object();
$label=$obj->libelle;
return $label;
}
else
{
return $langs->trans("NotDefined");
}
}
}
/**
* \brief Retourne le nom traduit ou code+nom d'un pays
* \param id id du pays
@@ -720,6 +751,7 @@ class Form
}
}
/**
* \brief Retourne le nom traduit ou code+nom d'une devise
* \param code_iso Code iso de la devise

View File

@@ -18,7 +18,6 @@
*
* $Id$
* $Source$
*
*/
/**
@@ -49,6 +48,7 @@ class pdf_crabe extends ModelePDFFactures
$this->db = $db;
$this->name = "crabe";
$this->description = "Mod<EFBFBD>le de facture complet (G<>re l'option fiscale de facturation TVA, le choix du mode de r<>glement <20> afficher, logo...)";
$this->format="A4";
$this->option_logo = 1; // Affiche logo FAC_PDF_LOGO
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 1; // Gere choix mode r<>glement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER
@@ -148,6 +148,13 @@ class pdf_crabe extends ModelePDFFactures
$nexY = $pdf->GetY();
$nblignes = sizeof($fac->lignes);
$posxdesc=11;
$posxtva=121;
$posxup=133;
$posxqty=151;
$posxdiscount=163;
$postotttc=173;
// Boucle sur les lignes
for ($i = 0 ; $i < $nblignes ; $i++)
{
@@ -160,7 +167,7 @@ class pdf_crabe extends ModelePDFFactures
if ($libelleproduitservice) $libelleproduitservice.="\n";
$libelleproduitservice.=$fac->lignes[$i]->desc;
}
$pdf->SetXY (11, $curY );
$pdf->SetXY ($posxdesc, $curY );
if ($conf->global->FACTURE_CODEPRODUITSERVICE && $fac->lignes[$i]->produit_id)
{
@@ -181,25 +188,25 @@ class pdf_crabe extends ModelePDFFactures
$nexY = $pdf->GetY();
// TVA
$pdf->SetXY (121, $curY);
$pdf->SetXY ($posxtva, $curY);
$pdf->MultiCell(10, 5, $fac->lignes[$i]->tva_taux, 0, 'C');
// Prix unitaire HT avant remise
$pdf->SetXY (133, $curY);
$pdf->SetXY ($posxup, $curY);
$pdf->MultiCell(17, 5, price($fac->lignes[$i]->subprice), 0, 'R', 0);
// Quantit<69>
$pdf->SetXY (151, $curY);
$pdf->SetXY ($posxqty, $curY);
$pdf->MultiCell(10, 5, $fac->lignes[$i]->qty, 0, 'R');
// Remise sur ligne
$pdf->SetXY (163, $curY);
$pdf->SetXY ($posxdiscount, $curY);
if ($fac->lignes[$i]->remise_percent) {
$pdf->MultiCell(14, 5, $fac->lignes[$i]->remise_percent."%", 0, 'R');
}
// Total HT
$pdf->SetXY (173, $curY);
// Total TTC
$pdf->SetXY ($postotttc, $curY);
$total = price($fac->lignes[$i]->price * $fac->lignes[$i]->qty);
$pdf->MultiCell(26, 5, $total, 0, 'R', 0);

View File

@@ -34,6 +34,8 @@ ActiveOn=Activated on
SourceFile=Source file
TriggersAvailable=Triggers available
TriggersDesc=Triggers are components that modify, once activated, the behaviour of Dolibarr workflow. They add new actions, activated on Dolibarr events (new company creation, invoice validation, ...).
SeeAbove=See above
ErrorSetACountryFirst=Set the country first
ModuleFamilyCrm=Customer Ressource Management (CRM)
ModuleFamilyProducts=Products Management
ModuleFamilyHr=Human Ressource Management

View File

@@ -34,6 +34,8 @@ ActiveOn=Active sur
SourceFile=Fichier source
TriggersAvailable=Triggers disponibles
TriggersDesc=Les triggers sont des composants qui, une fois activ<69>s, modifient le comportement du workflow de Dolibarr. Ils r<>alisent des actions supl<70>mentaires, d<>lench<63>es par les <20>vennements Dolibarr (cr<63>ation soci<63>t<EFBFBD>, validation facture, cloture contrat...).
SeeAbove=Voir ci-dessus
ErrorSetACountryFirst=D<>finisser le pays d'abord
ModuleFamilyCrm=Gestion client (CRM)
ModuleFamilyProducts=Gestion produits
ModuleFamilyHr=Ressources humaines

View File

@@ -210,7 +210,7 @@ function dolibarr_fiche_head($links, $active=0, $title='')
/**
\brief R<>cup<75>re une constante depuis la base de donn<6E>es.
\see dolibarr_del_const, dolibarr_sel_const
\see dolibarr_del_const, dolibarr_set_const
\param db Handler d'acc<63>s base
\param name Nom de la constante
\return string Valeur de la constante
@@ -262,17 +262,19 @@ function dolibarr_set_php_lang($code_lang)
/**
\brief Insertion d'une constante dans la base de donn<6E>es.
\see dolibarr_del_const, dolibarr_gel_const
\param db handler d'acc<63>s base
\param name nom de la constante
\param value valeur de la constante
\param type type de constante (chaine par d<>faut)
\param visible la constante est elle visible (0 par d<>faut)
\param note explication de la constante
\return int 0 si KO, 1 si OK
\see dolibarr_del_const, dolibarr_get_const
\param db Handler d'acc<63>s base
\param name Nom de la constante
\param value Valeur de la constante
\param type Type de constante (chaine par d<>faut)
\param visible La constante est elle visible (0 par d<>faut)
\param note Explication de la constante
\return int <0 si ko, >0 si ok
*/
function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='')
{
global $conf;
$db->begin();
$sql = "DELETE FROM llx_const WHERE name = '$name';";
@@ -285,12 +287,13 @@ function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $not
if ($resql)
{
$db->commit();
$conf->global->$name=$value;
return 1;
}
else
{
$db->rollback();
return 0;
return -1;
}
}

View File

@@ -480,7 +480,7 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'62','Group
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'63','Soci<EFBFBD>t<EFBFBD> coop<6F>rative agricole');
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'64','Soci<EFBFBD>t<EFBFBD> non commerciale d\'assurances');
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'65','Soci<EFBFBD>t<EFBFBD> civile');
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'69','Autres personnes de droit priv<EFBFBD> inscrites au registre du commerce et des soci<EFBFBD>t<EFBFBD>s');
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'69','Autres personnes de droit priv<EFBFBD> inscrites au registre du commerce et soci<EFBFBD>t<EFBFBD>s');
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'71','Administration de l\'<EFBFBD>tat');
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'72','Collectivit<EFBFBD> territoriale');