Merge branch 'develop' of https://github.com/Dolibarr/dolibarr.git into develop

This commit is contained in:
fhenry 2013-02-17 21:41:27 +01:00
commit 3694031053
58 changed files with 573 additions and 358 deletions

View File

@ -7,6 +7,8 @@ For users:
- New: Some performance enhancements.
- New: Can attach files onto trip and expenses modules.
- New: Add option MAIN_PDF_TITLE_BACKGROUND_COLOR
- New: Can define a hierarchical responsible on user
- New: Merge tab customer and prospect
For developers:
- System of menu managers has been rewritten to reduce code to do same things.

View File

@ -33,11 +33,11 @@ complete release of Dolibarr, step by step.
- Check all files are commited.
- Update version/info in /ChangeLog and /filefunc.inc.php
- Update version number with x.x.x-y in htdocs/filefunc.inc.php
- Update version number with x.x.x-y in build/makepack-dolibarr.pl
- Update version number with x.x.x-y in build/debian/changelog
- Update version number with x.x.x-y in build/exe/doliwamp/doliwamp.iss
- Update version number with x.x.x-y in build/rpm/*.spec
- Update version number with x.x.x in htdocs/filefunc.inc.php
- Update version number with x.x.x in build/makepack-dolibarr.pl
- Update version number with x.x.x in build/debian/changelog
- Update version number with x.x.x in build/exe/doliwamp/doliwamp.iss
- Update version number with x.x.x in build/rpm/*.spec
- Update PAD files.
- Commit all changes.
- Add a Tag (DOLIBARR_x_y)

View File

@ -35,9 +35,9 @@
<Program_Info>
<Program_Name>Dolibarr</Program_Name>
<Program_Version>3.3.0</Program_Version>
<Program_Release_Month>08</Program_Release_Month>
<Program_Release_Day>10</Program_Release_Day>
<Program_Release_Year>2012</Program_Release_Year>
<Program_Release_Month>02</Program_Release_Month>
<Program_Release_Day>17</Program_Release_Day>
<Program_Release_Year>2013</Program_Release_Year>
<Program_Cost_Dollars />
<Program_Cost_Other_Code />
<Program_Cost_Other />

View File

@ -35,9 +35,9 @@
<Program_Info>
<Program_Name>DoliWamp</Program_Name>
<Program_Version>3.3.0</Program_Version>
<Program_Release_Month>08</Program_Release_Month>
<Program_Release_Day>10</Program_Release_Day>
<Program_Release_Year>2012</Program_Release_Year>
<Program_Release_Month>02</Program_Release_Month>
<Program_Release_Day>17</Program_Release_Day>
<Program_Release_Year>2013</Program_Release_Year>
<Program_Cost_Dollars />
<Program_Cost_Other_Code />
<Program_Cost_Other />

View File

@ -333,5 +333,5 @@ fi
%changelog
* Mon Jan 14 2013 Laurent Destailleur 3.4.0-0.1.a
* Sun Feb 17 2013 Laurent Destailleur 3.4.0-0.1.a
- Initial version (#723326)

View File

@ -522,5 +522,5 @@ fi
%changelog
* Mon Jan 14 2013 Laurent Destailleur 3.4.0-0.1.a
* Sun Feb 17 2013 Laurent Destailleur 3.4.0-0.1.a
- Initial version (#723326)

View File

@ -322,5 +322,5 @@ fi
%changelog
* Mon Jan 14 2013 Laurent Destailleur 3.4.0-0.1.a
* Sun Feb 17 2013 Laurent Destailleur 3.4.0-0.1.a
- Initial version (#723326)

View File

@ -333,5 +333,5 @@ fi
%changelog
* Mon Jan 14 2013 Laurent Destailleur 3.4.0-0.1.a
* Sun Feb 17 2013 Laurent Destailleur 3.4.0-0.1.a
- Initial version (#723326)

View File

@ -51,7 +51,7 @@ class Adherent extends CommonObject
var $login;
var $pass;
var $societe;
var $adresse;
//var $adresse;
var $address;
var $cp;
var $zip;
@ -429,7 +429,7 @@ class Adherent extends CommonObject
$sql.= ", login=" .($this->login?"'".$this->db->escape($this->login)."'":"null");
$sql.= ", societe=" .($this->societe?"'".$this->db->escape($this->societe)."'":"null");
$sql.= ", fk_soc=" .($this->fk_soc > 0?"'".$this->fk_soc."'":"null");
$sql.= ", adresse=" .($this->address?"'".$this->db->escape($this->address)."'":"null");
$sql.= ", address=" .($this->address?"'".$this->db->escape($this->address)."'":"null");
$sql.= ", cp=" .($this->zip?"'".$this->db->escape($this->zip)."'":"null");
$sql.= ", ville=" .($this->town?"'".$this->db->escape($this->town)."'":"null");
$sql.= ", pays=" .($this->country_id>0?"'".$this->country_id."'":"null");
@ -1019,7 +1019,7 @@ class Adherent extends CommonObject
{
global $langs;
$sql = "SELECT d.rowid, d.civilite, d.prenom as firstname, d.nom as lastname, d.societe, d.fk_soc, d.statut, d.public, d.adresse as address, d.cp as zip, d.ville as town, d.note,";
$sql = "SELECT d.rowid, d.civilite, d.prenom as firstname, d.nom as lastname, d.societe, d.fk_soc, d.statut, d.public, d.address, d.cp as zip, d.ville as town, d.note,";
$sql.= " d.email, d.phone, d.phone_perso, d.phone_mobile, d.login, d.pass,";
$sql.= " d.photo, d.fk_adherent_type, d.morphy, d.entity,";
$sql.= " d.datec as datec,";
@ -1065,7 +1065,7 @@ class Adherent extends CommonObject
$this->pass = $obj->pass;
$this->societe = $obj->societe;
$this->fk_soc = $obj->fk_soc;
$this->adresse = $obj->address; // deprecated
//$this->adresse = $obj->address; // deprecated
$this->address = $obj->address;
$this->cp = $obj->zip; // deprecated
$this->zip = $obj->zip;
@ -1824,7 +1824,7 @@ class Adherent extends CommonObject
if ($this->login && ! empty($conf->global->LDAP_MEMBER_FIELD_LOGIN)) $info[$conf->global->LDAP_MEMBER_FIELD_LOGIN] = $this->login;
if ($this->pass && ! empty($conf->global->LDAP_MEMBER_FIELD_PASSWORD)) $info[$conf->global->LDAP_MEMBER_FIELD_PASSWORD] = $this->pass; // this->pass = mot de passe non crypte
if ($this->poste && ! empty($conf->global->LDAP_MEMBER_FIELD_TITLE)) $info[$conf->global->LDAP_MEMBER_FIELD_TITLE] = $this->poste;
if ($this->adresse && ! empty($conf->global->LDAP_MEMBER_FIELD_ADDRESS)) $info[$conf->global->LDAP_MEMBER_FIELD_ADDRESS] = $this->adresse;
if ($this->address && ! empty($conf->global->LDAP_MEMBER_FIELD_ADDRESS)) $info[$conf->global->LDAP_MEMBER_FIELD_ADDRESS] = $this->address;
if ($this->cp && ! empty($conf->global->LDAP_MEMBER_FIELD_ZIP)) $info[$conf->global->LDAP_MEMBER_FIELD_ZIP] = $this->cp;
if ($this->ville && ! empty($conf->global->LDAP_MEMBER_FIELD_TOWN)) $info[$conf->global->LDAP_MEMBER_FIELD_TOWN] = $this->ville;
if ($this->country_code && ! empty($conf->global->LDAP_MEMBER_FIELD_COUNTRY)) $info[$conf->global->LDAP_MEMBER_FIELD_COUNTRY] = $this->country_code;

View File

@ -259,7 +259,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
$object->pass = trim($_POST["pass"]);
$object->societe = trim($_POST["societe"]);
$object->adresse = trim($_POST["address"]); // deprecated
//$object->adresse = trim($_POST["address"]); // deprecated
$object->address = trim($_POST["address"]);
$object->cp = trim($_POST["zipcode"]); // deprecated
$object->zip = trim($_POST["zipcode"]);
@ -440,7 +440,7 @@ if ($action == 'add' && $user->rights->adherent->creer)
$object->firstname = $prenom;
$object->lastname = $nom;
$object->societe = $societe;
$object->adresse = $address; // deprecated
//$object->adresse = $address; // deprecated
$object->address = $address;
$object->cp = $zip; // deprecated
$object->zip = $zip;

View File

@ -104,7 +104,7 @@ if ($sall)
$sql.=" AND (";
if (is_numeric($sall)) $sql.= "d.rowid = ".$sall." OR ";
$sql.=" d.prenom LIKE '%".$sall."%' OR d.nom LIKE '%".$sall."%' OR d.societe LIKE '%".$sall."%'";
$sql.=" OR d.email LIKE '%".$sall."%' OR d.login LIKE '%".$sall."%' OR d.adresse LIKE '%".$sall."%'";
$sql.=" OR d.email LIKE '%".$sall."%' OR d.login LIKE '%".$sall."%' OR d.address LIKE '%".$sall."%'";
$sql.=" OR d.ville LIKE '%".$sall."%' OR d.note LIKE '%".$sall."%')";
}
if ($type > 0)

View File

@ -416,7 +416,7 @@ if ($rowid > 0)
if ($sall)
{
$sql.= " AND (d.prenom LIKE '%".$sall."%' OR d.nom LIKE '%".$sall."%' OR d.societe LIKE '%".$sall."%'";
$sql.= " OR d.email LIKE '%".$sall."%' OR d.login LIKE '%".$sall."%' OR d.adresse LIKE '%".$sall."%'";
$sql.= " OR d.email LIKE '%".$sall."%' OR d.login LIKE '%".$sall."%' OR d.address LIKE '%".$sall."%'";
$sql.= " OR d.ville LIKE '%".$sall."%' OR d.note LIKE '%".$sall."%')";
}
if ($status != '')

View File

@ -941,7 +941,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
print '<div id="dayevent_'.sprintf("%04d",$year).sprintf("%02d",$month).sprintf("%02d",$day).'" class="dayevent">'."\n";
$curtime = dol_mktime(0, 0, 0, $month, $day, $year);
print '<table class="nobordernopadding" width="100%">';
print '<tr style="background: #EEEEEE"><td align="left" nowrap="nowrap">';
print '<tr><td align="left" nowrap="nowrap">';
print '<a href="'.DOL_URL_ROOT.'/comm/action/index.php?';
print 'action=show_day&day='.str_pad($day, 2, "0", STR_PAD_LEFT).'&month='.str_pad($month, 2, "0", STR_PAD_LEFT).'&year='.$year;
print $newparam;
@ -960,7 +960,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
print '</a>';
}
print '</td></tr>';
print '<tr height="'.$minheight.'"><td valign="top" colspan="2" nowrap="nowrap">';
print '<tr height="'.$minheight.'"><td valign="top" colspan="2" nowrap="nowrap" style="padding-bottom: 2px;">';
//$curtime = dol_mktime (0, 0, 0, $month, $day, $year);
$i=0; $nummytasks=0; $numother=0; $numbirthday=0; $numical=0; $numicals=array();
@ -1004,8 +1004,9 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
// Show rect of event
print '<div id="event_'.$ymd.'_'.$i.'" class="event '.$cssclass.'">';
print '<table class="cal_event" style="background: #'.$color.'; -moz-border-radius:4px;" width="100%"><tr>';
print '<td nowrap="nowrap">';
print '<ul class="cal_event"><li class="cal_event">';
print '<table class="cal_event" style="background: #'.$color.'; -moz-border-radius:4px; background: -webkit-gradient(linear, left top, left bottom, from(#'.$color.'), to(#'.dol_color_minus($color,2).')); " width="100%"><tr>';
print '<td nowrap="nowrap" class="cal_event">';
if ($event->type_code == 'BIRTHDAY') // It's a birthday
{
print $event->getNomUrl(1,$maxnbofchar,'cal_event','birthday','contact');
@ -1130,6 +1131,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
if ($event->type_code != 'BIRTHDAY' && $event->type_code != 'ICALEVENT') print $event->getLibStatut(3,1);
else print '&nbsp;';
print '</td></tr></table>';
print '</li></ul>';
print '</div>';
$i++;
}
@ -1174,4 +1176,13 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
print '</div>'."\n";
}
function dol_color_minus($color, $minus)
{
$newcolor=$color;
$newcolor[0]=((hexdec($newcolor[0])-$minus)<0)?0:dechex((hexdec($newcolor[0])-$minus));
$newcolor[2]=((hexdec($newcolor[2])-$minus)<0)?0:dechex((hexdec($newcolor[2])-$minus));
$newcolor[4]=((hexdec($newcolor[4])-$minus)<0)?0:dechex((hexdec($newcolor[4])-$minus));
return $newcolor;
}
?>

View File

@ -143,6 +143,7 @@ if ($socid) $param.="&socid=".$socid;
if ($showbirthday) $param.="&showbirthday=1";
if ($pid) $param.="&projectid=".$pid;
if ($type) $param.="&type=".$type;
if ($actioncode) $param.="&actioncode=".$actioncode;
$sql = "SELECT s.nom as societe, s.rowid as socid, s.client,";
$sql.= " a.id, a.datep as dp, a.datep2 as dp2,";

View File

@ -386,29 +386,32 @@ if ($id > 0)
}
// Level of prospect
print '<tr><td nowrap>';
print '<table width="100%" class="nobordernopadding"><tr><td nowrap>';
print $langs->trans('ProspectLevelShort');
print '<td>';
if ($action != 'editlevel' && $user->rights->societe->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editlevel&amp;socid='.$object->id.'">'.img_edit($langs->trans('Modify'),1).'</a></td>';
print '</tr></table>';
print '</td><td colspan="3">';
if ($action == 'editlevel')
$formcompany->form_prospect_level($_SERVER['PHP_SELF'].'?socid='.$object->id,$object->fk_prospectlevel,'prospect_level_id',1);
else
print $object->getLibProspLevel();
print "</td>";
print '</tr>';
// Status
print '<tr><td>'.$langs->trans("StatusProsp").'</td><td colspan="2">'.$object->getLibProspCommStatut(4).'</td>';
print '<td>';
if ($object->stcomm_id != -1) print '<a href="fiche.php?socid='.$object->id.'&amp;stcomm=-1&amp;action=cstc">'.img_action(0,-1).'</a>';
if ($object->stcomm_id != 0) print '<a href="fiche.php?socid='.$object->id.'&amp;stcomm=0&amp;action=cstc">'.img_action(0,0).'</a>';
if ($object->stcomm_id != 1) print '<a href="fiche.php?socid='.$object->id.'&amp;stcomm=1&amp;action=cstc">'.img_action(0,1).'</a>';
if ($object->stcomm_id != 2) print '<a href="fiche.php?socid='.$object->id.'&amp;stcomm=2&amp;action=cstc">'.img_action(0,2).'</a>';
if ($object->stcomm_id != 3) print '<a href="fiche.php?socid='.$object->id.'&amp;stcomm=3&amp;action=cstc">'.img_action(0,3).'</a>';
print '</td></tr>';
if ($object->client == 2 || $object->client == 3)
{
print '<tr><td nowrap>';
print '<table width="100%" class="nobordernopadding"><tr><td nowrap>';
print $langs->trans('ProspectLevel');
print '<td>';
if ($action != 'editlevel' && $user->rights->societe->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editlevel&amp;socid='.$object->id.'">'.img_edit($langs->trans('Modify'),1).'</a></td>';
print '</tr></table>';
print '</td><td colspan="3">';
if ($action == 'editlevel')
$formcompany->form_prospect_level($_SERVER['PHP_SELF'].'?socid='.$object->id,$object->fk_prospectlevel,'prospect_level_id',1);
else
print $object->getLibProspLevel();
print "</td>";
print '</tr>';
// Status
print '<tr><td>'.$langs->trans("StatusProsp").'</td><td colspan="2">'.$object->getLibProspCommStatut(4).'</td>';
print '<td>';
if ($object->stcomm_id != -1) print '<a href="fiche.php?socid='.$object->id.'&amp;stcomm=-1&amp;action=cstc">'.img_action(0,-1).'</a>';
if ($object->stcomm_id != 0) print '<a href="fiche.php?socid='.$object->id.'&amp;stcomm=0&amp;action=cstc">'.img_action(0,0).'</a>';
if ($object->stcomm_id != 1) print '<a href="fiche.php?socid='.$object->id.'&amp;stcomm=1&amp;action=cstc">'.img_action(0,1).'</a>';
if ($object->stcomm_id != 2) print '<a href="fiche.php?socid='.$object->id.'&amp;stcomm=2&amp;action=cstc">'.img_action(0,2).'</a>';
if ($object->stcomm_id != 3) print '<a href="fiche.php?socid='.$object->id.'&amp;stcomm=3&amp;action=cstc">'.img_action(0,3).'</a>';
print '</td></tr>';
}
// Sales representative
include DOL_DOCUMENT_ROOT.'/societe/tpl/linesalesrepresentative.tpl.php';

View File

@ -79,12 +79,12 @@ $result = restrictedArea($user, 'propal', $id);
$object = new Propal($db);
// Load object
// Load object
if ($id > 0 || ! empty($ref))
{
$ret=$object->fetch($id, $ref);
$ret=$object->fetch_thirdparty();
if ($ret > 0) $ret=$object->fetch_thirdparty();
if ($ret < 0) dol_print_error('',$object->error);
}
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array

View File

@ -90,7 +90,7 @@ class Propal extends CommonObject
var $fk_delivery_address; // deprecated (for compatibility)
var $fk_address;
var $address_type;
var $adresse;
var $address;
var $availability_id;
var $availability_code;
var $demand_reason_id;
@ -789,7 +789,7 @@ class Propal extends CommonObject
if (! $error && $this->fk_delivery_address)
{
$sql = "UPDATE ".MAIN_DB_PREFIX."propal";
$sql.= " SET fk_adresse_livraison = ".$this->fk_delivery_address;
$sql.= " SET fk_delivery_address = ".$this->fk_delivery_address;
$sql.= " WHERE ref = '".$this->ref."'";
$sql.= " AND entity = ".$conf->entity;
@ -985,7 +985,7 @@ class Propal extends CommonObject
$sql.= ", p.note as note_private, p.note_public";
$sql.= ", p.fk_projet, p.fk_statut";
$sql.= ", p.fk_user_author, p.fk_user_valid, p.fk_user_cloture";
$sql.= ", p.fk_adresse_livraison";
$sql.= ", p.fk_delivery_address";
$sql.= ", p.fk_availability";
$sql.= ", p.fk_input_reason";
$sql.= ", p.fk_cond_reglement";
@ -1049,8 +1049,8 @@ class Propal extends CommonObject
$this->demand_reason_id = $obj->fk_input_reason;
$this->demand_reason_code = $obj->demand_reason_code;
$this->demand_reason = $obj->demand_reason;
$this->fk_delivery_address = $obj->fk_adresse_livraison; // TODO obsolete
$this->fk_address = $obj->fk_adresse_livraison;
//$this->fk_delivery_address = $obj->fk_adresse_livraison; // TODO obsolete
$this->fk_address = $obj->fk_delivery_address;
$this->mode_reglement_id = $obj->fk_mode_reglement;
$this->mode_reglement_code = $obj->mode_reglement_code;

View File

@ -66,7 +66,7 @@ class Commande extends CommonOrder
var $demand_reason_id;
var $demand_reason_code;
var $fk_delivery_address;
var $adresse;
var $address;
var $date; // Date commande
var $date_commande; // Date commande (deprecated)
var $date_livraison; // Date livraison souhaitee
@ -631,7 +631,7 @@ class Commande extends CommonOrder
$sql = "INSERT INTO ".MAIN_DB_PREFIX."commande (";
$sql.= " ref, fk_soc, date_creation, fk_user_author, fk_projet, date_commande, source, note, note_public, ref_client, ref_int";
$sql.= ", model_pdf, fk_cond_reglement, fk_mode_reglement, fk_availability, fk_input_reason, date_livraison, fk_adresse_livraison";
$sql.= ", model_pdf, fk_cond_reglement, fk_mode_reglement, fk_availability, fk_input_reason, date_livraison, fk_delivery_address";
$sql.= ", remise_absolue, remise_percent";
$sql.= ", entity";
$sql.= ")";
@ -1240,7 +1240,7 @@ class Commande extends CommonOrder
$sql.= ', c.date_commande';
$sql.= ', c.date_livraison';
$sql.= ', c.fk_projet, c.remise_percent, c.remise, c.remise_absolue, c.source, c.facture as billed';
$sql.= ', c.note as note_private, c.note_public, c.ref_client, c.ref_ext, c.ref_int, c.model_pdf, c.fk_adresse_livraison, c.extraparams';
$sql.= ', c.note as note_private, c.note_public, c.ref_client, c.ref_ext, c.ref_int, c.model_pdf, c.fk_delivery_address, c.extraparams';
$sql.= ', p.code as mode_reglement_code, p.libelle as mode_reglement_libelle';
$sql.= ', cr.code as cond_reglement_code, cr.libelle as cond_reglement_libelle, cr.libelle_facture as cond_reglement_libelle_doc';
$sql.= ', ca.code as availability_code';
@ -1301,7 +1301,7 @@ class Commande extends CommonOrder
$this->demand_reason_id = $obj->fk_input_reason;
$this->demand_reason_code = $obj->demand_reason_code;
$this->date_livraison = $this->db->jdate($obj->date_livraison);
$this->fk_delivery_address = $obj->fk_adresse_livraison;
$this->fk_delivery_address = $obj->fk_delivery_address;
$this->extraparams = (array) json_decode($obj->extraparams, true);

View File

@ -42,7 +42,7 @@ class Don extends CommonObject
var $prenom;
var $nom;
var $societe;
var $adresse;
var $address;
var $cp;
var $ville;
var $pays;
@ -188,7 +188,7 @@ class Don extends CommonObject
$this->amount = 100;
$this->public = 1;
$this->societe = 'The Company';
$this->adresse = 'Twist road';
$this->address = 'Twist road';
$this->cp = '99999';
$this->ville = 'Town';
$this->note_public='SPECIMEN';
@ -217,7 +217,7 @@ class Don extends CommonObject
}
}
if (dol_strlen(trim($this->adresse)) == 0)
if (dol_strlen(trim($this->address)) == 0)
{
$error_string[$err] = "L'adresse saisie est invalide";
$err++;
@ -297,7 +297,7 @@ class Don extends CommonObject
global $conf;
// Clean parameters
$this->address=($this->address>0?$this->address:$this->adresse);
$this->address=($this->address>0?$this->address:$this->address);
$this->zip=($this->zip>0?$this->zip:$this->cp);
$this->town=($this->town>0?$this->town:$this->ville);
$this->country_id=($this->country_id>0?$this->country_id:$this->fk_pays);
@ -313,7 +313,7 @@ class Don extends CommonObject
$sql.= ", prenom";
$sql.= ", nom";
$sql.= ", societe";
$sql.= ", adresse";
$sql.= ", address";
$sql.= ", cp";
$sql.= ", ville";
$sql.= ", pays";
@ -334,7 +334,7 @@ class Don extends CommonObject
$sql.= ", '".$this->db->escape($this->prenom)."'";
$sql.= ", '".$this->db->escape($this->nom)."'";
$sql.= ", '".$this->db->escape($this->societe)."'";
$sql.= ", '".$this->db->escape($this->adresse)."'";
$sql.= ", '".$this->db->escape($this->address)."'";
$sql.= ", '".$this->db->escape($this->zip)."'";
$sql.= ", '".$this->db->escape($this->town)."'";
$sql.= ", '".$this->db->escape($this->country)."'"; // TODO use country_id
@ -382,7 +382,7 @@ class Don extends CommonObject
function update($user)
{
// Clean parameters
$this->address=($this->address>0?$this->address:$this->adresse);
$this->address=($this->address>0?$this->address:$this->address);
$this->zip=($this->zip>0?$this->zip:$this->cp);
$this->town=($this->town>0?$this->town:$this->ville);
$this->country_id=($this->country_id>0?$this->country_id:$this->fk_pays);
@ -394,7 +394,7 @@ class Don extends CommonObject
$sql .= ",prenom = '".$this->db->escape($this->prenom)."'";
$sql .= ",nom='".$this->db->escape($this->nom)."'";
$sql .= ",societe='".$this->db->escape($this->societe)."'";
$sql .= ",adresse='".$this->db->escape($this->address)."'";
$sql .= ",address='".$this->db->escape($this->address)."'";
$sql .= ",cp='".$this->db->escape($this->zip)."'";
$sql .= ",ville='".$this->db->escape($this->town)."'";
$sql .= ",pays='".$this->db->escape($this->country)."'"; // TODO use country_id
@ -463,7 +463,7 @@ class Don extends CommonObject
global $conf;
$sql = "SELECT d.rowid, d.datec, d.tms as datem, d.datedon,";
$sql.= " d.prenom, d.nom, d.societe, d.amount, d.fk_statut, d.adresse, d.cp, d.ville, d.pays, d.public, d.amount, d.fk_paiement, d.note, cp.libelle, d.email, d.phone, d.phone_mobile, d.fk_don_projet,";
$sql.= " d.prenom, d.nom, d.societe, d.amount, d.fk_statut, d.address, d.cp, d.ville, d.pays, d.public, d.amount, d.fk_paiement, d.note, cp.libelle, d.email, d.phone, d.phone_mobile, d.fk_don_projet,";
$sql.= " p.title as project_label";
$sql.= " FROM ".MAIN_DB_PREFIX."don as d";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = d.fk_don_projet";
@ -487,7 +487,7 @@ class Don extends CommonObject
$this->nom = $obj->nom;
$this->societe = $obj->societe;
$this->statut = $obj->fk_statut;
$this->adresse = $obj->adresse;
$this->address = $obj->address;
$this->cp = $obj->cp;
$this->ville = $obj->ville;
$this->zip = $obj->cp;

View File

@ -88,7 +88,7 @@ if ($action == 'update')
$don->prenom = $_POST["prenom"];
$don->nom = $_POST["nom"];
$don->societe = $_POST["societe"];
$don->adresse = $_POST["adresse"];
$don->address = $_POST["address"];
$don->amount = price2num($_POST["amount"]);
$don->cp = $_POST["zipcode"];
$don->ville = $_POST["town"];
@ -140,7 +140,7 @@ if ($action == 'add')
$don->prenom = $_POST["prenom"];
$don->nom = $_POST["nom"];
$don->societe = $_POST["societe"];
$don->adresse = $_POST["adresse"];
$don->address = $_POST["address"];
$don->amount = price2num($_POST["amount"]);
$don->cp = $_POST["zipcode"];
$don->ville = $_POST["town"];
@ -300,7 +300,7 @@ if ($action == 'create')
print "<tr>".'<td>'.$langs->trans("Firstname").'</td><td><input type="text" name="prenom" value="'.$_POST["prenom"].'" size="40"></td></tr>';
print "<tr>".'<td>'.$langs->trans("Lastname").'</td><td><input type="text" name="nom" value="'.$_POST["nom"].'" size="40"></td></tr>';
print "<tr>".'<td>'.$langs->trans("Address").'</td><td>';
print '<textarea name="adresse" wrap="soft" cols="40" rows="3">'.$_POST["adresse"].'</textarea></td></tr>';
print '<textarea name="address" wrap="soft" cols="40" rows="3">'.$_POST["address"].'</textarea></td></tr>';
// Zip / Town
print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td>';
@ -390,7 +390,7 @@ if (! empty($id) && $action == 'edit')
print "<tr>".'<td>'.$langs->trans("Firstname").'</td><td><input type="text" name="prenom" size="40" value="'.$don->prenom.'"></td></tr>';
print "<tr>".'<td>'.$langs->trans("Lastname").'</td><td><input type="text" name="nom" size="40" value="'.$don->nom.'"></td></tr>';
print "<tr>".'<td>'.$langs->trans("Address").'</td><td>';
print '<textarea name="adresse" wrap="soft" cols="40" rows="'.ROWS_3.'">'.$don->adresse.'</textarea></td></tr>';
print '<textarea name="address" wrap="soft" cols="40" rows="'.ROWS_3.'">'.$don->address.'</textarea></td></tr>';
// Zip / Town
print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td>';
@ -485,7 +485,7 @@ if (! empty($id) && $action != 'edit')
print "<tr>".'<td>'.$langs->trans("Company").'</td><td>'.$don->societe.'</td></tr>';
print "<tr>".'<td>'.$langs->trans("Firstname").'</td><td>'.$don->prenom.'</td></tr>';
print "<tr>".'<td>'.$langs->trans("Lastname").'</td><td>'.$don->nom.'</td></tr>';
print "<tr>".'<td>'.$langs->trans("Address").'</td><td>'.dol_nl2br($don->adresse).'</td></tr>';
print "<tr>".'<td>'.$langs->trans("Address").'</td><td>'.dol_nl2br($don->address).'</td></tr>';
// Zip / Town
print "<tr>".'<td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td>'.$don->cp.($don->cp && $don->ville?' / ':'').$don->ville.'</td></tr>';

View File

@ -1915,14 +1915,6 @@ if ($action == 'create')
print $desc;
print '</td></tr>'."\n";
// Deposit
print '<tr height="18"><td width="16px" valign="middle">';
print '<input type="radio" name="type" value="3"'.(GETPOST('type')==3?' checked="checked"':'').'>';
print '</td><td valign="middle">';
$desc=$form->textwithpicto($langs->trans("InvoiceDeposit"),$langs->transnoentities("InvoiceDepositDesc"),1);
print $desc;
print '</td></tr>'."\n";
// Proforma
if (! empty($conf->global->FACTURE_USE_PROFORMAT))
{
@ -1934,7 +1926,18 @@ if ($action == 'create')
print '</td></tr>'."\n";
}
if ($socid>0)
if (empty($origin))
{
// Deposit
print '<tr height="18"><td width="16px" valign="middle">';
print '<input type="radio" name="type" value="3"'.(GETPOST('type')==3?' checked="checked"':'').'>';
print '</td><td valign="middle">';
$desc=$form->textwithpicto($langs->trans("InvoiceDeposit"),$langs->transnoentities("InvoiceDepositDesc"),1);
print $desc;
print '</td></tr>'."\n";
}
if ($socid > 0)
{
// Replacement
print '<tr height="18"><td valign="middle">';
@ -1959,8 +1962,11 @@ if ($action == 'create')
$desc=$form->textwithpicto($text,$langs->transnoentities("InvoiceReplacementDesc"),1);
print $desc;
print '</td></tr>'."\n";
}
// Credit note
if (empty($origin) && $socid > 0)
{
// Credit note
print '<tr height="18"><td valign="middle">';
print '<input type="radio" name="type" value="2"'.(GETPOST('type')==2?' checked=true':'');
if (! $optionsav) print ' disabled="disabled"';
@ -1984,11 +1990,12 @@ if ($action == 'create')
$desc=$form->textwithpicto($text,$langs->transnoentities("InvoiceAvoirDesc"),1);
print $desc;
print '</td></tr>'."\n";
}
}
print '</table>';
print '</td></tr>';
if($socid>0)
if ($socid > 0)
{
// Discounts for third party
print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="2">';

View File

@ -520,7 +520,7 @@ class Contact extends CommonObject
$this->prenom = $obj->firstname; // TODO deprecated
$this->address = $obj->address;
$this->adresse = $obj->address; // TODO deprecated
//$this->adresse = $obj->address; // TODO deprecated
$this->cp = $obj->zip; // TODO deprecated
$this->zip = $obj->zip;
$this->ville = $obj->town; // TODO deprecated

View File

@ -383,7 +383,7 @@ else
});
$("#copyaddressfromsoc").click(function() {
$(\'textarea[name="address"]\').text("'.dol_escape_js($objsoc->address).'");
$(\'textarea[name="address"]\').val("'.dol_escape_js($objsoc->address).'");
$(\'input[name="zipcode"]\').val("'.dol_escape_js($objsoc->zip).'");
$(\'input[name="town"]\').val("'.dol_escape_js($objsoc->town).'");
$(\'select[name="country_id"]\').val("'.dol_escape_js($objsoc->country_id).'");

View File

@ -28,6 +28,7 @@ $extrasize=GETPOST('size');
if (GETPOST('type')=='double' && strpos($extrasize,',')===false) $extrasize='24,8';
if (GETPOST('type')=='date') $extrasize='';
if (GETPOST('type')=='datetime') $extrasize='';
if (GETPOST('type')=='select') $extrasize='';
// Add attribute
@ -58,13 +59,29 @@ if ($action == 'add')
$mesg=$langs->trans("ErrorSizeTooLongForIntType",$maxsizeint);
$action = 'create';
}
if (GETPOST('type')=='select' && !GETPOST('param'))
{
$error++;
$langs->load("errors");
$mesg=$langs->trans("ErrorNoValueForSelectType");
$action = 'create';
}
if (! $error)
{
// Type et taille non encore pris en compte => varchar(255)
if (isset($_POST["attrname"]) && preg_match("/^\w[a-zA-Z0-9-_]*$/",$_POST['attrname']))
{
$result=$extrafields->addExtraField($_POST['attrname'],$_POST['label'],$_POST['type'],$_POST['pos'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0));
// Construct array for parameter (value of select list)
$parameters = GETPOST('param');
$parameters_array = explode("\r\n",$parameters);
foreach($parameters_array as $param_ligne)
{
list($key,$value) = explode(',',$param_ligne);
$params['options'][$key] = $value;
}
$result=$extrafields->addExtraField($_POST['attrname'],$_POST['label'],$_POST['type'],$_POST['pos'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0),$default_value,$params);
if ($result > 0)
{
header("Location: ".$_SERVER["PHP_SELF"]);
@ -119,7 +136,16 @@ if ($action == 'update')
{
if (isset($_POST["attrname"]) && preg_match("/^\w[a-zA-Z0-9-_]*$/",$_POST['attrname']))
{
$result=$extrafields->update($_POST['attrname'],$_POST['label'],$_POST['type'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0));
$pos = GETPOST('pos','int');
// Construct array for parameter (value of select list)
$parameters = GETPOST('param');
$parameters_array = explode("\r\n",$parameters);
foreach($parameters_array as $param_ligne)
{
list($key,$value) = explode(',',$param_ligne);
$params['options'][$key] = $value;
}
$result=$extrafields->update($_POST['attrname'],$_POST['label'],$_POST['type'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0),$pos,$params);
if ($result > 0)
{
header("Location: ".$_SERVER["PHP_SELF"]);

View File

@ -1020,7 +1020,7 @@ class CMailFile
/**
* Return an address for SMTP protocol
*
* @param string $adresses Example: 'John Doe <john@doe.com>' or 'john@doe.com'
* @param string $address Example: 'John Doe <john@doe.com>' or 'john@doe.com'
* @param int $format 0=auto, 1=emails with <>, 2=emails without <>, 3=auto + label between "
* @param int $encode 1=Encode name to RFC2822
* @return string If format 0: '<john@doe.com>' or 'John Doe <john@doe.com>' or '=?UTF-8?B?Sm9obiBEb2U=?= <john@doe.com>'
@ -1028,13 +1028,13 @@ class CMailFile
* If format 2: 'john@doe.com'
* If format 3: '<john@doe.com>' or '"John Doe" <john@doe.com>' or '"=?UTF-8?B?Sm9obiBEb2U=?=" <john@doe.com>'
*/
function getValidAddress($adresses,$format,$encode='')
function getValidAddress($address,$format,$encode='')
{
global $conf;
$ret='';
$arrayaddress=explode(',',$adresses);
$arrayaddress=explode(',',$address);
// Boucle sur chaque composant de l'adresse
foreach($arrayaddress as $val)

View File

@ -964,7 +964,7 @@ abstract class CommonObject
*/
function setDeliveryAddress($id)
{
$fieldname = 'fk_adresse_livraison';
$fieldname = 'fk_delivery_address';
if ($this->element == 'delivery' || $this->element == 'shipping') $fieldname = 'fk_address';
$sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET ".$fieldname." = ".$id;
@ -1023,7 +1023,7 @@ abstract class CommonObject
/**
* Save a new position (field rang) for details lines.
* You can choose to ser position for lines with already a position or lines wihtout any position defined.
* You can choose to set position for lines with already a position or lines without any position defined.
* Call this function only for table that contains a field fk_parent_line.
*
* @param boolean $renum true to renum all already ordered lines, false to renum only not already ordered lines.
@ -1064,7 +1064,7 @@ abstract class CommonObject
// counter that parents.
$rows=array();
// We frist search all lines that are parent lines (for multilevel details lines)
// We first search all lines that are parent lines (for multilevel details lines)
$sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.$this->table_element_line;
$sql.= ' WHERE '.$this->fk_element.' = '.$this->id;
$sql.= ' AND fk_parent_line IS NULL';
@ -1080,10 +1080,10 @@ abstract class CommonObject
{
$row = $this->db->fetch_row($resql);
$rows[] = $row[0]; // Add parent line into array rows
$childrens = $this->getChildrensOfLine($row[0]);
if (! empty($childrens))
$childrens = $this->getChildrenOfLine($row[0]);
if (! empty($children))
{
foreach($childrens as $child)
foreach($children as $child)
{
array_push($rows, $child);
}
@ -1108,12 +1108,12 @@ abstract class CommonObject
}
/**
* Get childrens of line
* Get children of line
*
* @param int $id Id of parent line
* @return array Array with list of child lines id
* @return array Array with list of children lines id
*/
function getChildrensOfLine($id)
function getChildrenOfLine($id)
{
$rows=array();
@ -1122,7 +1122,7 @@ abstract class CommonObject
$sql.= ' AND fk_parent_line = '.$id;
$sql.= ' ORDER BY rang ASC';
dol_syslog(get_class($this)."::getChildrenOfLines search children lines for line ".$id." sql=".$sql, LOG_DEBUG);
dol_syslog(get_class($this)."::getChildrenOfLine search children lines for line ".$id." sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql)
{

View File

@ -38,6 +38,8 @@ class ExtraFields
var $attribute_label;
// Tableau contenant le nom des champs en clef et la taille de ces champs en value
var $attribute_size;
// Tableau contenant le nom des choix en clef et la valeur de ces choix en value
var $attribute_choice;
// Array to store if attribute is unique or not
var $attribute_unique;
// Array to store if attribute is required or not
@ -56,7 +58,8 @@ class ExtraFields
'boolean'=>'Boolean',
'price'=>'ExtrafieldPrice',
'phone'=>'ExtrafieldPhone',
'mail'=>'ExtrafieldMail'
'mail'=>'ExtrafieldMail',
'select' => 'ExtrafieldSelect'
);
/**
@ -87,20 +90,22 @@ class ExtraFields
* @param string $elementtype Element type ('member', 'product', 'company', ...)
* @param int $unique Is field unique or not
* @param int $required Is field required or not
* @param array $param Params for field
* @return int <=0 if KO, >0 if OK
*/
function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0)
function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0,$default_value='', $param=0)
{
if (empty($attrname)) return -1;
if (empty($label)) return -1;
// Create field into database
$result=$this->create($attrname,$type,$size,$elementtype, $unique, $required);
$result=$this->create($attrname,$type,$size,$elementtype, $unique, $required, $default_value,$param);
$err1=$this->errno;
if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS')
{
// Add declaration of field into table
$result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype, $unique, $required);
$result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype, $unique, $required, $param);
$err2=$this->errno;
if ($result2 > 0 || ($err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' && $err2 == 'DB_ERROR_RECORD_ALREADY_EXISTS'))
{
@ -126,12 +131,15 @@ class ExtraFields
* @param string $elementtype Element type ('member', 'product', 'company', 'contact', ...)
* @param int $unique Is field unique or not
* @param int $required Is field required or not
* @param string $default_value Default value for field
* @param array $param Params for field (ex for select list : array('options'=>array('value'=>'label of option'))
*
* @return int <=0 if KO, >0 if OK
*/
private function create($attrname, $type='varchar', $length=255, $elementtype='member', $unique=0, $required=0)
private function create($attrname, $type='varchar', $length=255, $elementtype='member', $unique=0, $required=0, $default_value='',$param='')
{
$table=$elementtype.'_extrafields';
// Special case for not normalized table names
if ($elementtype == 'member') $table='adherent_extrafields';
elseif ($elementtype == 'company') $table='societe_extrafields';
@ -151,11 +159,20 @@ class ExtraFields
}elseif($type=='mail') {
$typedb='varchar';
$lengthdb='128';
} elseif ($type=='select') {
$typedb='text';
$lengthdb='';
} else {
$typedb=$type;
$lengthdb=$length;
}
$field_desc = array('type'=>$typedb, 'value'=>$lengthdb, 'null'=>($required?'NOT NULL':'NULL'));
$field_desc = array(
'type'=>$typedb,
'value'=>$lengthdb,
'null'=>($required?'NOT NULL':'NULL'),
'default' => $default_value
);
$result=$this->db->DDLAddField(MAIN_DB_PREFIX.$table, $attrname, $field_desc);
if ($result > 0)
{
@ -190,19 +207,33 @@ class ExtraFields
* @param string $elementtype Element type ('member', 'product', 'company', ...)
* @param int $unique Is field unique or not
* @param int $required Is field required or not
* @param array $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) )
* @return int <=0 if KO, >0 if OK
*/
private function create_label($attrname, $label='', $type='', $pos=0, $size=0, $elementtype='member', $unique=0, $required=0)
private function create_label($attrname, $label='', $type='', $pos=0, $size=0, $elementtype='member', $unique=0, $required=0,$param)
{
global $conf;
// Clean parameters
if (empty($pos)) $pos=0;
if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname))
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(name, label, type, pos, size, entity, elementtype, fieldunique, fieldrequired)";
if(is_array($param) and count($param) > 0)
{
$params = $this->db->escape(serialize($param));
}
elseif (strlen($param) > 0)
{
$params = trim($param);
}
else
{
$params='';
}
$sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(name, label, type, pos, size, entity, elementtype, fieldunique, fieldrequired, param)";
$sql.= " VALUES('".$attrname."',";
$sql.= " '".$this->db->escape($label)."',";
$sql.= " '".$type."',";
@ -211,7 +242,8 @@ class ExtraFields
$sql.= " ".$conf->entity.",";
$sql.= " '".$elementtype."',";
$sql.= " '".$unique."',";
$sql.= " '".$required."'";
$sql.= " '".$required."',";
$sql.= " '".$params."'";
$sql.=')';
dol_syslog(get_class($this)."::create_label sql=".$sql);
@ -311,9 +343,11 @@ class ExtraFields
* @param string $elementtype Element type ('member', 'product', 'company', 'contact', ...)
* @param int $unique Is field unique or not
* @param int $required Is field required or not
* @param int $pos Position of attribute
* @param array $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) )
* @return int >0 if OK, <=0 if KO
*/
function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0)
function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos,$param='')
{
$table=$elementtype.'_extrafields';
@ -336,6 +370,9 @@ class ExtraFields
}elseif($type=='mail') {
$typedb='varchar';
$lengthdb='128';
} elseif ($type=='select') {
$typedb='text';
$lengthdb='';
} else {
$typedb=$type;
$lengthdb=$length;
@ -346,7 +383,7 @@ class ExtraFields
{
if ($label)
{
$result=$this->update_label($attrname,$label,$type,$length,$elementtype,$unique,$required);
$result=$this->update_label($attrname,$label,$type,$length,$elementtype,$unique,$required,$pos,$param);
}
if ($result > 0)
{
@ -392,9 +429,11 @@ class ExtraFields
* @param string $elementtype Element type ('member', 'product', 'company', ...)
* @param int $unique Is field unique or not
* @param int $required Is field required or not
* @param int $pos Position of attribute
* @param array $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) )
* @return int <=0 if KO, >0 if OK
*/
private function update_label($attrname,$label,$type,$size,$elementtype,$unique=0,$required=0)
private function update_label($attrname,$label,$type,$size,$elementtype,$unique=0,$required=0,$pos=0,$param='')
{
global $conf;
dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required);
@ -402,7 +441,12 @@ class ExtraFields
if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname))
{
$this->db->begin();
if(is_array($param) && count($param) > 0)
{
$param = serialize($param);
}
$sql_del = "DELETE FROM ".MAIN_DB_PREFIX."extrafields";
$sql_del.= " WHERE name = '".$attrname."'";
$sql_del.= " AND entity = ".$conf->entity;
@ -418,7 +462,9 @@ class ExtraFields
$sql.= " size,";
$sql.= " elementtype,";
$sql.= " fieldunique,";
$sql.= " fieldrequired";
$sql.= " fieldrequired,";
$sql.= " pos,";
$sql.= " param";
$sql.= ") VALUES (";
$sql.= "'".$attrname."',";
$sql.= " ".$conf->entity.",";
@ -427,7 +473,9 @@ class ExtraFields
$sql.= " '".$size."',";
$sql.= " '".$elementtype."',";
$sql.= " '".$unique."',";
$sql.= " '".$required."'";
$sql.= " '".$required."',";
$sql.= " '".$pos."',";
$sql.= " '".$param."'";
$sql.= ")";
dol_syslog(get_class($this)."::update_label sql=".$sql);
$resql2=$this->db->query($sql);
@ -480,7 +528,7 @@ class ExtraFields
if (!$forceload && !empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))
return $array_name_label;
$sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired";
$sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos";
$sql.= " FROM ".MAIN_DB_PREFIX."extrafields";
$sql.= " WHERE entity = ".$conf->entity;
if ($elementtype) $sql.= " AND elementtype = '".$elementtype."'";
@ -502,6 +550,8 @@ class ExtraFields
$this->attribute_elementtype[$tab->name]=$tab->elementtype;
$this->attribute_unique[$tab->name]=$tab->fieldunique;
$this->attribute_required[$tab->name]=$tab->fieldrequired;
$this->attribute_param[$tab->name]=unserialize($tab->param);
$this->attribute_pos[$tab->name]=$tab->pos;
}
}
return $array_name_label;
@ -531,6 +581,7 @@ class ExtraFields
$elementtype=$this->attribute_elementtype[$key];
$unique=$this->attribute_unique[$key];
$required=$this->attribute_required[$key];
$param=$this->attribute_param[$key];
if ($type == 'date')
{
$showsize=10;
@ -593,6 +644,15 @@ class ExtraFields
{
$out='<input type="text" name="options_'.$key.'" size="6" value="'.price($value).'"> '.$langs->getCurrencySymbol($conf->currency);
}
elseif ($type == 'select')
{
$out='<select name="options_'.$key.'">';
foreach ($param['options'] as $key=>$value )
{
$out.='<option value="'.$key.'">'.$value.'</option>';
}
$out.='</select>';
}
// Add comments
if ($type == 'date') $out.=' (YYYY-MM-DD)';
elseif ($type == 'datetime') $out.=' (YYYY-MM-DD HH:MM:SS)';
@ -617,6 +677,7 @@ class ExtraFields
$elementtype=$this->attribute_elementtype[$key];
$unique=$this->attribute_unique[$key];
$required=$this->attribute_required[$key];
$params=$this->attribute_param[$key];
if ($type == 'date')
{
$showsize=10;
@ -649,6 +710,10 @@ class ExtraFields
{
$value=price($value).' '.$langs->getCurrencySymbol($conf->currency);
}
elseif ($type == 'select')
{
$value=$params['options'][$value];
}
else
{
$showsize=round($size);

View File

@ -689,7 +689,7 @@ class Form
{
//$minLength = (is_numeric($conf->global->COMPANY_USE_SEARCH_TO_SELECT)?$conf->global->COMPANY_USE_SEARCH_TO_SELECT:2);
$out.= ajax_combobox($htmlname, $event, $conf->global->COMPANY_USE_SEARCH_TO_SELECT);
/*
/*
if ($selected && empty($selected_input_value))
{
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
@ -876,7 +876,7 @@ class Form
if ($resql)
{
$num=$this->db->num_rows($resql);
if ($conf->use_javascript_ajax && $conf->global->CONTACT_USE_SEARCH_TO_SELECT && ! $forcecombo)
{
$out.= ajax_combobox($htmlname, $event);
@ -968,10 +968,10 @@ class Form
* @param int $disabled If select list must be disabled
* @param array $include Array list of users id to include
* @param int $enableonly Array list of users id to be enabled. All other must be disabled
* @param int $force_entity Possibility to force entity
* @param int $force_entity 0 or Id of environment to force
* @return void
*/
function select_users($selected='',$htmlname='userid',$show_empty=0,$exclude='',$disabled=0,$include='',$enableonly='',$force_entity=false)
function select_users($selected='',$htmlname='userid',$show_empty=0,$exclude='',$disabled=0,$include='',$enableonly='',$force_entity=0)
{
print $this->select_dolusers($selected,$htmlname,$show_empty,$exclude,$disabled,$include,$enableonly,$force_entity);
}
@ -986,15 +986,15 @@ class Form
* @param int $disabled If select list must be disabled
* @param array $include Array list of users id to include
* @param int $enableonly Array list of users id to be enabled. All other must be disabled
* @param int $force_entity Possibility to force entity
* @param int $force_entity 0 or Id of environment to force
* @return string HTML select string
*/
function select_dolusers($selected='',$htmlname='userid',$show_empty=0,$exclude='',$disabled=0,$include='',$enableonly='',$force_entity=false)
function select_dolusers($selected='',$htmlname='userid',$show_empty=0,$exclude='',$disabled=0,$include='',$enableonly='',$force_entity=0)
{
global $conf,$user,$langs;
// If no preselected user defined, we take current user
if ($selected < -1 && empty($conf->global->SOCIETE_DISABLE_DEFAULT_SALESREPRESENTATIVE)) $selected=$user->id;
if ((is_numeric($selected) && ($selected < -1 || empty($selected))) && empty($conf->global->SOCIETE_DISABLE_DEFAULT_SALESREPRESENTATIVE)) $selected=$user->id;
// Permettre l'exclusion d'utilisateurs
if (is_array($exclude)) $excludeUsers = implode("','",$exclude);
@ -1043,7 +1043,7 @@ class Form
if ($num)
{
$out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled="disabled"':'').'>';
if ($show_empty) $out.= '<option value="-1"'.($selected==-1?' selected="selected"':'').'>&nbsp;</option>'."\n";
if ($show_empty) $out.= '<option value="-1"'.((empty($selected) || $selected==-1)?' selected="selected"':'').'>&nbsp;</option>'."\n";
$userstatic=new User($this->db);
@ -3946,17 +3946,17 @@ class Form
/**
* Return select list of groups
*
* @param string $selected Id group preselected
* @param string $htmlname Field name in form
* @param int $show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue
* @param string $exclude Array list of groups id to exclude
* @param string $selected Id group preselected
* @param string $htmlname Field name in form
* @param int $show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue
* @param string $exclude Array list of groups id to exclude
* @param int $disabled If select list must be disabled
* @param string $include Array list of groups id to include
* @param string $include Array list of groups id to include
* @param int $enableonly Array list of groups id to be enabled. All other must be disabled
* @param int $force_entity Possibility to force entity
* @param int $force_entity 0 or Id of environment to force
* @return void
*/
function select_dolgroups($selected='', $htmlname='groupid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity='')
function select_dolgroups($selected='', $htmlname='groupid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0)
{
global $conf,$user,$langs;

View File

@ -45,7 +45,9 @@ function societe_prepare_head($object)
if ($object->client==1 || $object->client==2 || $object->client==3 || (isset($object->object) && $object->object->client==1) || (isset($object->object) && $object->object->client==3))
{
$head[$h][0] = DOL_URL_ROOT.'/comm/fiche.php?socid='.$object->id;
$head[$h][1] = $langs->trans("Customer");
if ($object->client==2 || $object->client==3) $head[$h][1] = $langs->trans("Prospect");
if ($object->client==3) $head[$h][1] .= '/';
if ($object->client==1 || $object->client==3) $head[$h][1] .= $langs->trans("Customer");
$head[$h][2] = 'customer';
$h++;
}

View File

@ -97,7 +97,7 @@ class doc_generic_order_odt extends ModelePDFCommandes
{
global $conf;
return array(
$resarray=array(
'object_id'=>$object->id,
'object_ref'=>$object->ref,
'object_ref_ext'=>$object->ref_ext,
@ -120,6 +120,15 @@ class doc_generic_order_odt extends ModelePDFCommandes
'object_note_private'=>$object->note,
'object_note'=>$object->note_public,
);
// Add vat by rates
foreach ($object->lines as $line)
{
if (empty($resarray['object_total_vat_'.$line->tva_tx])) $resarray['object_total_vat_'.$line->tva_tx]=0;
$resarray['object_total_vat_'.$line->tva_tx]+=$line->total_tva;
}
return $resarray;
}
/**

View File

@ -144,7 +144,7 @@ class html_cerfafr extends ModeleDon
$form = str_replace('__MAIN_INFO_SOCIETE_CP__',$mysoc->zip,$form);
$form = str_replace('__MAIN_INFO_SOCIETE_VILLE__',$mysoc->town,$form);
$form = str_replace('__DONATOR_NAME__',$don->nom,$form);
$form = str_replace('__DONATOR_ADDRESS__',$don->adresse,$form);
$form = str_replace('__DONATOR_ADDRESS__',$don->address,$form);
$form = str_replace('__DONATOR_ZIP__',$don->cp,$form);
$form = str_replace('__DONATOR_TOWN__',$don->ville,$form);
$form = str_replace('__PAYMENTMODE_LIB__ ', $paymentmode,$form);

View File

@ -105,7 +105,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures
$sumpayed = $object->getSommePaiement();
$alreadypayed=price($sumpayed,0,$outputlangs);
return array(
$resarray=array(
'object_id'=>$object->id,
'object_ref'=>$object->ref,
'object_ref_ext'=>$object->ref_ext,
@ -132,6 +132,15 @@ class doc_generic_invoice_odt extends ModelePDFFactures
'object_already_payed'=>$alreadypayed,
'object_remain_to_pay'=>price($object->total_ttc - $sumpayed,0,$outputlangs)
);
// Add vat by rates
foreach ($object->lines as $line)
{
if (empty($resarray['object_total_vat_'.$line->tva_tx])) $resarray['object_total_vat_'.$line->tva_tx]=0;
$resarray['object_total_vat_'.$line->tva_tx]+=$line->total_tva;
}
return $resarray;
}
/**

View File

@ -172,9 +172,9 @@ class modAdherent extends DolibarrModules
$this->export_code[$r]=$this->rights_class.'_'.$r;
$this->export_label[$r]='MembersAndSubscriptions';
$this->export_permission[$r]=array(array("adherent","export"));
$this->export_fields_array[$r]=array('a.rowid'=>'Id','a.civilite'=>"UserTitle",'a.nom'=>"Lastname",'a.prenom'=>"Firstname",'a.login'=>"Login",'a.morphy'=>'Nature','a.societe'=>'Company','a.adresse'=>"Address",'a.cp'=>"Zip",'a.ville'=>"Town",'a.pays'=>"Country",'a.phone'=>"PhonePro",'a.phone_perso'=>"PhonePerso",'a.phone_mobile'=>"PhoneMobile",'a.email'=>"Email",'a.naiss'=>"Birthday",'a.statut'=>"Status",'a.photo'=>"Photo",'a.note'=>"Note",'a.datec'=>'DateCreation','a.datevalid'=>'DateValidation','a.tms'=>'DateLastModification','a.datefin'=>'DateEndSubscription','ta.rowid'=>'MemberTypeId','ta.libelle'=>'MemberTypeLabel','c.rowid'=>'SubscriptionId','c.dateadh'=>'DateSubscription','c.cotisation'=>'Amount');
$this->export_TypeFields_array[$r]=array('a.civilite'=>"Text",'a.nom'=>"Text",'a.prenom'=>"Text",'a.login'=>"Text",'a.morphy'=>'Text','a.societe'=>'Text','a.adresse'=>"Text",'a.cp'=>"Text",'a.ville'=>"Text",'a.pays'=>"Text",'a.phone'=>"Text",'a.phone_perso'=>"Text",'a.phone_mobile'=>"Text",'a.email'=>"Text",'a.naiss'=>"Date",'a.statut'=>"Status",'a.note'=>"Text",'a.datec'=>'Date','a.datevalid'=>'Date','a.tms'=>'Date','a.datefin'=>'Date','ta.rowid'=>'List:fk_adherent_type:libelle','ta.libelle'=>'Text','c.dateadh'=>'Date','c.cotisation'=>'Number');
$this->export_entities_array[$r]=array('a.rowid'=>'member','a.civilite'=>"member",'a.nom'=>"member",'a.prenom'=>"member",'a.login'=>"member",'a.morphy'=>'member','a.societe'=>'member','a.adresse'=>"member",'a.cp'=>"member",'a.ville'=>"member",'a.pays'=>"member",'a.phone'=>"member",'a.phone_perso'=>"member",'a.phone_mobile'=>"member",'a.email'=>"member",'a.naiss'=>"member",'a.statut'=>"member",'a.photo'=>"member",'a.note'=>"member",'a.datec'=>'member','a.datevalid'=>'member','a.tms'=>'member','a.datefin'=>'member','ta.rowid'=>'member_type','ta.libelle'=>'member_type','c.rowid'=>'subscription','c.dateadh'=>'subscription','c.cotisation'=>'subscription');
$this->export_fields_array[$r]=array('a.rowid'=>'Id','a.civilite'=>"UserTitle",'a.nom'=>"Lastname",'a.prenom'=>"Firstname",'a.login'=>"Login",'a.morphy'=>'Nature','a.societe'=>'Company','a.address'=>"Address",'a.cp'=>"Zip",'a.ville'=>"Town",'a.pays'=>"Country",'a.phone'=>"PhonePro",'a.phone_perso'=>"PhonePerso",'a.phone_mobile'=>"PhoneMobile",'a.email'=>"Email",'a.naiss'=>"Birthday",'a.statut'=>"Status",'a.photo'=>"Photo",'a.note'=>"Note",'a.datec'=>'DateCreation','a.datevalid'=>'DateValidation','a.tms'=>'DateLastModification','a.datefin'=>'DateEndSubscription','ta.rowid'=>'MemberTypeId','ta.libelle'=>'MemberTypeLabel','c.rowid'=>'SubscriptionId','c.dateadh'=>'DateSubscription','c.cotisation'=>'Amount');
$this->export_TypeFields_array[$r]=array('a.civilite'=>"Text",'a.nom'=>"Text",'a.prenom'=>"Text",'a.login'=>"Text",'a.morphy'=>'Text','a.societe'=>'Text','a.address'=>"Text",'a.cp'=>"Text",'a.ville'=>"Text",'a.pays'=>"Text",'a.phone'=>"Text",'a.phone_perso'=>"Text",'a.phone_mobile'=>"Text",'a.email'=>"Text",'a.naiss'=>"Date",'a.statut'=>"Status",'a.note'=>"Text",'a.datec'=>'Date','a.datevalid'=>'Date','a.tms'=>'Date','a.datefin'=>'Date','ta.rowid'=>'List:fk_adherent_type:libelle','ta.libelle'=>'Text','c.dateadh'=>'Date','c.cotisation'=>'Number');
$this->export_entities_array[$r]=array('a.rowid'=>'member','a.civilite'=>"member",'a.nom'=>"member",'a.prenom'=>"member",'a.login'=>"member",'a.morphy'=>'member','a.societe'=>'member','a.address'=>"member",'a.cp'=>"member",'a.ville'=>"member",'a.pays'=>"member",'a.phone'=>"member",'a.phone_perso'=>"member",'a.phone_mobile'=>"member",'a.email'=>"member",'a.naiss'=>"member",'a.statut'=>"member",'a.photo'=>"member",'a.note'=>"member",'a.datec'=>'member','a.datevalid'=>'member','a.tms'=>'member','a.datefin'=>'member','ta.rowid'=>'member_type','ta.libelle'=>'member_type','c.rowid'=>'subscription','c.dateadh'=>'subscription','c.cotisation'=>'subscription');
// Add extra fields
$sql="SELECT name, label FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'member'";
$resql=$this->db->query($sql);
@ -207,7 +207,7 @@ class modAdherent extends DolibarrModules
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('a'=>MAIN_DB_PREFIX.'adherent','extra'=>MAIN_DB_PREFIX.'adherent_extrafields');
$this->import_tables_creator_array[$r]=array('a'=>'fk_user_author'); // Fields to store import user id
$this->import_fields_array[$r]=array('a.civilite'=>"UserTitle",'a.nom'=>"Lastname*",'a.prenom'=>"Firstname",'a.login'=>"Login*","a.pass"=>"Password","a.fk_adherent_type"=>"MemberType*",'a.morphy'=>'Nature*','a.societe'=>'Company','a.adresse'=>"Address",'a.cp'=>"Zip",'a.ville'=>"Town",'a.pays'=>"Country",'a.phone'=>"PhonePro",'a.phone_perso'=>"PhonePerso",'a.phone_mobile'=>"PhoneMobile",'a.email'=>"Email",'a.naiss'=>"Birthday",'a.statut'=>"Status*",'a.photo'=>"Photo",'a.note'=>"Note",'a.datec'=>'DateCreation','a.datefin'=>'DateEndSubscription');
$this->import_fields_array[$r]=array('a.civilite'=>"UserTitle",'a.nom'=>"Lastname*",'a.prenom'=>"Firstname",'a.login'=>"Login*","a.pass"=>"Password","a.fk_adherent_type"=>"MemberType*",'a.morphy'=>'Nature*','a.societe'=>'Company','a.address'=>"Address",'a.cp'=>"Zip",'a.ville'=>"Town",'a.pays'=>"Country",'a.phone'=>"PhonePro",'a.phone_perso'=>"PhonePerso",'a.phone_mobile'=>"PhoneMobile",'a.email'=>"Email",'a.naiss'=>"Birthday",'a.statut'=>"Status*",'a.photo'=>"Photo",'a.note'=>"Note",'a.datec'=>'DateCreation','a.datefin'=>'DateEndSubscription');
// Add extra fields
$sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'member'";
$resql=$this->db->query($sql);
@ -223,7 +223,7 @@ class modAdherent extends DolibarrModules
// End add extra fields
$this->import_fieldshidden_array[$r]=array('extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'adherent'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
$this->import_regex_array[$r]=array('a.civilite'=>'code@'.MAIN_DB_PREFIX.'c_civilite','a.fk_adherent_type'=>'rowid@'.MAIN_DB_PREFIX.'adherent_type','a.morphy'=>'(phy|mor)','a.statut'=>'^[0|1]','a.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$','a.datefin'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$');
$this->import_examplevalues_array[$r]=array('a.civilite'=>"MR",'a.nom'=>'Smith','a.prenom'=>'John','a.login'=>'jsmith','a.pass'=>'passofjsmith','a.fk_adherent_type'=>'1','a.morphy'=>'"mor" or "phy"','a.societe'=>'JS company','a.adresse'=>'21 jump street','a.cp'=>'55000','a.ville'=>'New York','a.pays'=>'1','a.email'=>'jsmith@example.com','a.naiss'=>'1972-10-10','a.statut'=>"0 or 1",'a.note'=>"This is a comment on member",'a.datec'=>dol_print_date($now,'%Y-%m-%d'),'a.datefin'=>dol_print_date(dol_time_plus_duree($now, 1, 'y'),'%Y-%m-%d'));
$this->import_examplevalues_array[$r]=array('a.civilite'=>"MR",'a.nom'=>'Smith','a.prenom'=>'John','a.login'=>'jsmith','a.pass'=>'passofjsmith','a.fk_adherent_type'=>'1','a.morphy'=>'"mor" or "phy"','a.societe'=>'JS company','a.address'=>'21 jump street','a.cp'=>'55000','a.ville'=>'New York','a.pays'=>'1','a.email'=>'jsmith@example.com','a.naiss'=>'1972-10-10','a.statut'=>"0 or 1",'a.note'=>"This is a comment on member",'a.datec'=>dol_print_date($now,'%Y-%m-%d'),'a.datefin'=>dol_print_date(dol_time_plus_duree($now, 1, 'y'),'%Y-%m-%d'));
}

View File

@ -97,7 +97,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales
{
global $conf;
return array(
$resarray=array(
'object_id'=>$object->id,
'object_ref'=>$object->ref,
'object_ref_ext'=>$object->ref_ext,
@ -119,6 +119,15 @@ class doc_generic_proposal_odt extends ModelePDFPropales
'object_note_private'=>$object->note,
'object_note'=>$object->note_public,
);
// Add vat by rates
foreach ($object->lines as $line)
{
if (empty($resarray['object_total_vat_'.$line->tva_tx])) $resarray['object_total_vat_'.$line->tva_tx]=0;
$resarray['object_total_vat_'.$line->tva_tx]+=$line->total_tva;
}
return $resarray;
}
/**

View File

@ -25,14 +25,22 @@
var size = jQuery("#size");
var unique = jQuery("#unique");
var required = jQuery("#required");
if (type == 'date') { size.val('').attr('disabled','disabled'); unique.removeAttr('disabled','disabled'); }
else if (type == 'datetime') { size.val('').attr('disabled','disabled'); unique.removeAttr('disabled','disabled'); }
else if (type == 'double') { size.val('24,8').removeAttr('disabled'); unique.removeAttr('disabled','disabled'); }
else if (type == 'int') { size.val('10').removeAttr('disabled'); unique.removeAttr('disabled','disabled'); }
else if (type == 'text') { size.val('2000').removeAttr('disabled'); unique.attr('disabled','disabled').removeAttr('checked'); }
else if (type == 'varchar') { size.val('255').removeAttr('disabled'); unique.removeAttr('disabled','disabled'); }
else if (type == 'boolean') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled');}
else if (type == 'price') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled');}
<?php
if(!GETPOST('type') == "select")
{
print 'jQuery("#value_choice").hide();';
}
?>
if (type == 'date') { size.val('').attr('disabled','disabled'); unique.removeAttr('disabled','disabled'); jQuery("#value_choice").hide(); }
else if (type == 'datetime') { size.val('').attr('disabled','disabled'); unique.removeAttr('disabled','disabled'); jQuery("#value_choice").hide(); }
else if (type == 'double') { size.val('24,8').removeAttr('disabled'); unique.removeAttr('disabled','disabled'); jQuery("#value_choice").hide(); }
else if (type == 'int') { size.val('10').removeAttr('disabled'); unique.removeAttr('disabled','disabled'); jQuery("#value_choice").hide(); }
else if (type == 'text') { size.val('2000').removeAttr('disabled'); unique.attr('disabled','disabled').removeAttr('checked'); jQuery("#value_choice").hide(); }
else if (type == 'varchar') { size.val('255').removeAttr('disabled'); unique.removeAttr('disabled','disabled'); jQuery("#value_choice").hide(); }
else if (type == 'boolean') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").hide();}
else if (type == 'price') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").hide();}
else if (type == 'select') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").show();}
else size.val('').attr('disabled','disabled');
}
init_typeoffields('');
@ -47,7 +55,8 @@
<input type="hidden" name="action" value="add">
<table summary="listofattributes" class="border centpercent">
<!-- Position -->
<tr><td class="fieldrequired"><?php echo $langs->trans("Position"); ?></td><td class="valeur"><input type="text" name="pos" size="5" value="<?php echo GETPOST('pos'); ?>"></td></tr>
<!-- Label -->
<tr><td class="fieldrequired"><?php echo $langs->trans("Label"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo GETPOST('label'); ?>"></td></tr>
<!-- Code -->
@ -56,6 +65,17 @@
<tr><td class="fieldrequired"><?php echo $langs->trans("Type"); ?></td><td class="valeur">
<?php print $form->selectarray('type',$type2label,GETPOST('type')); ?>
</td></tr>
<!-- Value (for select list / radio) -->
<tr id="value_choice">
<td>
<?php echo $langs->trans("Value"); ?>
</td>
<td>
<textarea name="param" id="param"><?php echo GETPOST('param'); ?></textarea>
</td>
</tr>
<!-- Default Value -->
<tr><td><?php echo $langs->trans("DefaultValue"); ?></td><td class="valeur"><input id="default_value" type="text" name=""default_value"" size="5" value="<?php echo (GETPOST('"default_value"')?GETPOST('"default_value"'):''); ?>"></td></tr>
<!-- Size -->
<tr><td class="fieldrequired"><?php echo $langs->trans("Size"); ?></td><td class="valeur"><input id="size" type="text" name="size" size="5" value="<?php echo (GETPOST('size')?GETPOST('size'):''); ?>"></td></tr>
<!-- Unique -->

View File

@ -47,21 +47,53 @@
<table summary="listofattributes" class="border centpercent">
<!-- Label -->
<tr><td class="fieldrequired"><?php echo $langs->trans("Label"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo $extrafields->attribute_label[$attrname]; ?>"></td></tr>
<!-- Code -->
<tr><td class="fieldrequired"><?php echo $langs->trans("AttributeCode"); ?></td><td class="valeur"><?php echo $attrname; ?></td></tr>
<!-- Type -->
<?php
$type=$extrafields->attribute_type[$attrname];
$size=$extrafields->attribute_size[$attrname];
$unique=$extrafields->attribute_unique[$attrname];
$required=$extrafields->attribute_required[$attrname];
$pos=$extrafields->attribute_pos[$attrname];
$param=$extrafields->attribute_param[$attrname];
if($type == 'select' && is_array($param))
{
$param_chain = '';
foreach ($param['options'] as $key => $value)
{
if(strlen($key))
{
$param_chain .= $key.', '.$value."\n";
}
}
}
?>
<!-- Position -->
<tr><td class="fieldrequired"><?php echo $langs->trans("Position"); ?></td><td class="valeur"><input type="text" name="pos" size="5" value="<?php echo $extrafields->attribute_pos[$attrname]; ?>"></td></tr>
<!-- Label -->
<tr><td class="fieldrequired"><?php echo $langs->trans("Label"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo $extrafields->attribute_label[$attrname]; ?>"></td></tr>
<!-- Code -->
<tr><td class="fieldrequired"><?php echo $langs->trans("AttributeCode"); ?></td><td class="valeur"><?php echo $attrname; ?></td></tr>
<!-- Type -->
<tr><td class="fieldrequired"><?php echo $langs->trans("Type"); ?></td><td class="valeur">
<?php print $type2label[$type]; ?>
<input type="hidden" name="type" id="type" value="<?php print $type; ?>">
</td></tr>
<!-- Value (for select list / radio) -->
<?php
if($type == 'select')
{
?>
<tr id="value_choice">
<td>
<?php echo $langs->trans("Value"); ?>
</td>
<td>
<textarea name="param" id="param"><?php echo $param_chain; ?></textarea>
</td>
</tr>
<?php
}
?>
<!-- Size -->
<tr><td class="fieldrequired"><?php echo $langs->trans("Size"); ?></td><td><input id="size" type="text" name="size" size="5" value="<?php echo $size; ?>"></td></tr>
<!-- Unique -->

View File

@ -675,7 +675,7 @@ class Expedition extends CommonObject
if (isset($this->socid)) $this->socid=trim($this->socid);
if (isset($this->fk_user_author)) $this->fk_user_author=trim($this->fk_user_author);
if (isset($this->fk_user_valid)) $this->fk_user_valid=trim($this->fk_user_valid);
if (isset($this->fk_adresse_livraison)) $this->fk_adresse_livraison=trim($this->fk_adresse_livraison);
if (isset($this->fk_delivery_address)) $this->fk_delivery_address=trim($this->fk_delivery_address);
if (isset($this->expedition_method_id)) $this->expedition_method_id=trim($this->expedition_method_id);
if (isset($this->tracking_number)) $this->tracking_number=trim($this->tracking_number);
if (isset($this->statut)) $this->statut=trim($this->statut);
@ -706,7 +706,7 @@ class Expedition extends CommonObject
$sql.= " fk_user_valid=".(isset($this->fk_user_valid)?$this->fk_user_valid:"null").",";
$sql.= " date_expedition=".(dol_strlen($this->date_expedition)!=0 ? "'".$this->db->idate($this->date_expedition)."'" : 'null').",";
$sql.= " date_delivery=".(dol_strlen($this->date_delivery)!=0 ? "'".$this->db->idate($this->date_delivery)."'" : 'null').",";
$sql.= " fk_address=".(isset($this->fk_adresse_livraison)?$this->fk_adresse_livraison:"null").",";
$sql.= " fk_address=".(isset($this->fk_delivery_address)?$this->fk_delivery_address:"null").",";
$sql.= " fk_expedition_methode=".((isset($this->expedition_method_id) && $this->expedition_method_id > 0)?$this->expedition_method_id:"null").",";
$sql.= " tracking_number=".(isset($this->tracking_number)?"'".$this->db->escape($this->tracking_number)."'":"null").",";
$sql.= " fk_statut=".(isset($this->statut)?$this->statut:"null").",";
@ -909,8 +909,8 @@ class Expedition extends CommonObject
$line->volume = $obj->volume;
$line->volume_units = $obj->volume_units;
//Invoicing
$line->desc = $obj->product_label;
// For invoicing
$line->desc = $obj->description; // We need ->desc because some code into CommonObject use desc (property defined for other elements)
$line->qty = $obj->qty_shipped;
$line->total_ht = $obj->total_ht;
$line->total_localtax1 = $obj->total_localtax1;

View File

@ -30,6 +30,11 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
require_once DOL_DOCUMENT_ROOT.'/user/class/usergroup.class.php';
require_once DOL_DOCUMENT_ROOT.'/holiday/common.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php';
$langs->load('users');
$langs->load('holidays');
// Protection if external user
if ($user->societe_id > 0) accessforbidden();
@ -46,6 +51,8 @@ $offset = $conf->liste_limit * $page ;
$pageprev = $page - 1;
$pagenext = $page + 1;
$id = GETPOST('id');
$search_ref = GETPOST('search_ref');
$month_create = GETPOST('month_create');
$year_create = GETPOST('year_create');
@ -72,6 +79,7 @@ $search_statut = GETPOST('select_statut');
$holiday = new Holiday($db);
$holidaystatic=new Holiday($db);
$fuser = new User($db);
// Update sold
$holiday->updateSold();
@ -151,28 +159,22 @@ if(!empty($search_statut) && $search_statut != -1) {
// Récupération de l'ID de l'utilisateur
$user_id = $user->id;
if ($id > 0)
{
// Charge utilisateur edite
$fuser->fetch($id);
$fuser->getrights();
$user_id = $fuser->id;
}
// Récupération des congés payés de l'utilisateur ou de tous les users
if (!$user->rights->holiday->lire_tous)
if (!$user->rights->holiday->lire_tous || $id > 0)
{
$holiday_payes = $holiday->fetchByUser($user_id,$order,$filter);
$holiday_payes = $holiday->fetchByUser($user_id,$order,$filter);
}
else
{
$holiday_payes = $holiday->fetchAll($order,$filter);
}
// Si pas de congés payés
if ($holiday_payes == 0)
{
print_fiche_titre($langs->trans('CPTitreMenu'));
print '<div class="tabBar">';
print '<span>'.$langs->trans('NoCPforUser').'<br /><br />';
print '<a href="./fiche.php?mainmenu=agenda&action=request" class="butAction">'.$langs->trans('AddCP').'</a></span>';
print '</div>';
exit();
}
// Si erreur SQL
if ($holiday_payes == '-1')
{
@ -189,14 +191,48 @@ if ($holiday_payes == '-1')
* Affichage du tableau des congés payés
*************************************/
$var=true; $num = count($holiday->holiday);
$html = new Form($db);
$htmlother = new FormOther($db);
print_barre_liste($langs->trans("ListeCP"), $page, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, "", $num);
$var=true; $num = count($holiday->holiday);
$form = new Form($db);
$formother = new FormOther($db);
print '<div class="tabBar">';
if ($id > 0)
{
$head = user_prepare_head($fuser);
$title = $langs->trans("User");
dol_fiche_head($head, 'paidholidays', $title, 0, 'user');
$nbaquis=$holiday->getCPforUser($user->id);
print '<table class="border" width="100%">';
// Ref
print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
print '<td colspan="2">';
print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin);
print '</td>';
print '</tr>';
// Nom
print '<tr><td width="25%" valign="top">'.$langs->trans("LastName").'</td>';
print '<td colspan="2">'.$fuser->lastname.'</td>';
print "</tr>\n";
// Prenom
print '<tr><td width="25%" valign="top">'.$langs->trans("FirstName").'</td>';
print '<td colspan="2">'.$fuser->firstname.'</td>';
print "</tr>\n";
print '</table><br>';
}
else
{
print_barre_liste($langs->trans("ListeCP"), $page, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, "", $num);
print '<div class="tabBar">';
}
$nbaquis=$holiday->getCPforUser($user_id);
$nbdeduced=$holiday->getConfCP('nbHolidayDeducted');
$nb_holiday = $nbaquis / $nbdeduced;
print $langs->trans('SoldeCPUser',round($nb_holiday,2)).($nbdeduced != 1 ? ' ('.$nbaquis.' / '.$nbdeduced.')' : '');
@ -223,13 +259,13 @@ print '<input class="flat" size="4" type="text" name="search_ref" value="'.$sear
// DATE CREATE
print '<td class="liste_titre" colspan="1" align="center">';
print '<input class="flat" type="text" size="1" maxlength="2" name="month_create" value="'.$month_create.'">';
$htmlother->select_year($year_create,'year_create',1, $min_year, $max_year);
$formother->select_year($year_create,'year_create',1, $min_year, $max_year);
print '</td>';
// UTILISATEUR
if($user->rights->holiday->lire_tous) {
print '<td class="liste_titre" align="left">';
$html->select_users($search_employe,"search_employe",1,"",0,'');
$form->select_users($search_employe,"search_employe",1,"",0,'');
print '</td>';
} else {
print '<td class="liste_titre">&nbsp;</td>';
@ -246,7 +282,7 @@ if($user->rights->holiday->lire_tous){
$validator = new UserGroup($db,$idGroupValid);
$valideur = $validator->listUsersForGroup();
$html->select_users($search_valideur,"search_valideur",1,"",0,$valideur,'');
$form->select_users($search_valideur,"search_valideur",1,"",0,$valideur,'');
print '</td>';
} else {
print '<td class="liste_titre">&nbsp;</td>';
@ -255,13 +291,13 @@ if($user->rights->holiday->lire_tous){
// DATE DEBUT
print '<td class="liste_titre" colspan="1" align="center">';
print '<input class="flat" type="text" size="1" maxlength="2" name="month_start" value="'.$month_start.'">';
$htmlother->select_year($year_start,'year_start',1, $min_year, $max_year);
$formother->select_year($year_start,'year_start',1, $min_year, $max_year);
print '</td>';
// DATE FIN
print '<td class="liste_titre" colspan="1" align="center">';
print '<input class="flat" type="text" size="1" maxlength="2" name="month_end" value="'.$month_end.'">';
$htmlother->select_year($year_end,'year_end',1, $min_year, $max_year);
$formother->select_year($year_end,'year_end',1, $min_year, $max_year);
print '</td>';
// DUREE
@ -327,10 +363,13 @@ if($holiday_payes == '2')
print '</table>';
print '</form>';
print '<br>';
print '<div style="float: right; margin-top: 8px;">';
print '<a href="./fiche.php?action=request" class="butAction">'.$langs->trans('AddCP').'</a>';
print '</div>';
if ($user_id == $user->id)
{
print '<br>';
print '<div style="float: right; margin-top: 8px;">';
print '<a href="./fiche.php?action=request" class="butAction">'.$langs->trans('AddCP').'</a>';
print '</div>';
}
llxFooter();

View File

@ -67,6 +67,10 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 2
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (141, 14, '7','0','VAT standard rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (142, 14, '0','0','VAT Rate 0',1);
-- CAMEROUN (id country=24)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (241, 24, '19.25','0','VAT standard rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (242, 24, '0','0','VAT Rate 0',1);
-- CHILE (id country=67)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (671, 67, '19','0','VAT standard rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (672, 67, '0','0','VAT Rate 0',1);
@ -151,6 +155,10 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (17
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1662, 166, '15','0','VAT standard rate', 1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1663, 166, '0','0','VAT Rate 0', 1);
-- NIGERIA (id country=169)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1692, 169, '5','0','VAT standard rate', 1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1693, 169, '0','0','VAT Rate 0', 1);
-- NORWAY (id country=173)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1731, 173, '25','0','VAT standard rate', 1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1732, 173, '14','0','VAT reduced rate', 1);

View File

@ -35,4 +35,13 @@ ALTER TABLE llx_user add COLUMN fk_user integer;
-- margin on contracts
alter table llx_contratdet add column fk_product_fournisseur_price integer after info_bits;
alter table llx_contratdet add column buy_price_ht double(24,8) DEFAULT 0 after fk_product_fournisseur_price;
alter table llx_contratdet add column buy_price_ht double(24,8) DEFAULT 0 after fk_product_fournisseur_price;
-- serialised array, to store value of select list choices for example
alter table llx_extrafields add column param text after pos;
alter table llx_propal CHANGE COLUMN fk_adresse_livraison fk_delivery_address integer;
alter table llx_commande CHANGE COLUMN fk_adresse_livraison fk_delivery_address integer;
alter table llx_don CHANGE COLUMN adresse address text;

View File

@ -39,7 +39,7 @@ create table llx_adherent
morphy varchar(3) NOT NULL, -- personne morale / personne physique
societe varchar(50),
fk_soc integer NULL, -- Link to third party linked to member
adresse text,
address text,
cp varchar(30),
ville varchar(50),
fk_departement integer,

View File

@ -63,7 +63,7 @@ create table llx_commande
date_livraison date default NULL,
fk_availability integer NULL,
fk_input_reason integer,
fk_adresse_livraison integer, -- delivery address (deprecated)
fk_delivery_address integer, -- delivery address (deprecated)
import_key varchar(14),
extraparams varchar(255) -- for stock other parameters with json format

View File

@ -33,7 +33,7 @@ create table llx_don
prenom varchar(50),
nom varchar(50),
societe varchar(50),
adresse text,
address text,
cp varchar(30),
ville varchar(50),
pays varchar(50),

View File

@ -65,6 +65,6 @@ create table llx_propal
fk_input_reason integer,
import_key varchar(14),
extraparams varchar(255), -- for stock other parameters with json format
fk_adresse_livraison integer -- delivery address (deprecated)
fk_delivery_address integer -- delivery address (deprecated)
)ENGINE=innodb;

View File

@ -356,6 +356,7 @@ Boolean=Boolean (Checkbox)
ExtrafieldPhone = Phone
ExtrafieldPrice = Price
ExtrafieldMail = Email
ExtrafieldSelect = Select list
LibraryToBuildPDF=Library used to build PDF
WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (vat is not applied on local tax)<br>2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)<br>3 : local tax apply on products without vat (vat is not applied on local tax)<br>4 : local tax apply on products before vat (vat is calculated on amount + localtax)<br>5 : local tax apply on services without vat (vat is not applied on local tax)<br>6 : local tax apply on services before vat (vat is calculated on amount + localtax)

View File

@ -58,6 +58,7 @@ ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin.
ErrorFileSizeTooLarge=File size is too large.
ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum)
ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum)
ErrorNoValueForSelectType=Please fill value for select list
ErrorFieldCanNotContainSpecialCharacters=Field <b>%s</b> must not contains special characters.
ErrorNoAccountancyModuleLoaded=No accountancy module activated
ErrorExportDuplicateProfil=This profil name already exists for this export set.

View File

@ -26,7 +26,7 @@ SendRequestCP=Creating demand for holidays
DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
MenuConfCP=Edit balance of holidays
UpdateAllCP=Update the holidays
SoldeCPUser=Your balance of holidays is <b>%s</b> days.
SoldeCPUser=Holidays balance is <b>%s</b> days.
ErrorEndDateCP=You must select an end date greater than the start date.
ErrorSQLCreateCP=An SQL error occurred during the creation:
ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.

View File

@ -113,4 +113,5 @@ NameToCreate=Name of third party to create
YourRole=Your roles
YourQuotaOfUsersIsReached=Your quota of active users is reached !
NbOfUsers=Nb of users
DontDowngradeSuperAdmin=Only a superadmin can downgrade a superadmin
DontDowngradeSuperAdmin=Only a superadmin can downgrade a superadmin
HierarchicalResponsible=Hierarchical responsible

View File

@ -283,7 +283,7 @@ GenericMaskCodes3= Tout autre caractère dans le masque sera laissé inchangé.<
GenericMaskCodes4a= <u>Exemple sur la 99eme %s du tiers LaCompanie faite le 31/03/2007:</u><br>
GenericMaskCodes4b= <u>Exemple sur un tiers créé le 31/03/2007:</u><br>
GenericMaskCodes4c= <u>Exemple sur un produit/service créé le 31/03/2007:</u><br>
GenericMaskCodes5= <b>ABC{yy}{mm}-{000000}</b> donnera <b>ABC0703-000099</b><br><b>{0000+100}-XXX/{dd}/YYY</b> donnera <b>0199-XXX/31/YYY</b>
GenericMaskCodes5= <b>ABC{yy}{mm}-{000000}</b> donnera <b>ABC0703-000099</b><br><b>{0000+100}-XXX-{dd}-YYY</b> donnera <b>0199-XXX-31-YYY</b>
GenericNumRefModelDesc= Renvoie un numéro personnalisable selon un masque à définir.
ServerAvailableOnIPOrPort= Serveur disponible à l'adresse <b>%s</b> sur le port <b>%s</b>
ServerNotAvailableOnIPOrPort= Serveur non disponible à l'adresse <b>%s</b> sur le port <b>%s</b>
@ -351,6 +351,7 @@ Boolean=Booleen (Checkbox)
ExtrafieldPhone = Téléphone
ExtrafieldPrice = Prix
ExtrafieldMail = Email
ExtrafieldSelect = Liste de sélection
LibraryToBuildPDF=Bibliothèque utilisée pour la génération des PDF
WarningUsingFPDF=Attention: Votre fichier <b>conf.php</b> contient la directive <b>dolibarr_pdf_force_fpdf=1</b>. Cela signifie que vous utilisez la librairie FPDF pour générer vos fichiers PDF. Cette librairie est ancienne et ne couvre pas de nombreuses fonctionnalitée (Unicode, transparence des images, langues cyrillic, arabes ou asiatiques...), aussi vous pouvez rencontrez des problèmes durant la génération des PDF.<br>Pour résoudre cela et avoir un support complet de PDF, vous pouvez télécharger la <a href="http://www.tcpdf.org/" target="_blank">librairie TCPDF</a> puis commenter ou supprimer la ligne <b>$dolibarr_pdf_force_fpdf=1</b>, et ajouter à la place <b>$dolibarr_lib_TCPDF_PATH='chemin_vers_TCPDF'</b>
LocalTaxDesc=Certains pays appliquent 2 voir 3 taux sur chaque ligne de facture. Si c'est le cas, choisissez le type du deuxième et troisième taux et sa valeur. Les types possibles sont:<br>1 : taxe locale sur les produits et services hors tva (la tva n'est pas appliquée sur la taxe locale)<br>2 : taxe locale sur les produits et services avant tva (la tva est appliquée sur le montant + la taxe locale)<br>3 : taxe locale uniquement sur les produits hors tva (la tva n'est pas appliquée sur la taxe locale)<br>4 : taxe locale uniquement sur les produits avant tva (la tva est appliquée sur le montant + la taxe locale)<br>5 : taxe locale uniquement sur les services hors tva (la tva n'est pas appliquée sur la taxe locale)<br>6 : taxe locale uniquement sur les service avant tva (la tva est appliquée sur le montant + la taxe locale)

View File

@ -59,6 +59,7 @@ ErrorUploadBlockedByAddon=Upload bloqué par un plugin PHP/Apache.
ErrorFileSizeTooLarge=La taille du fichier est trop grande.
ErrorSizeTooLongForIntType=Longueur de champ trop longue pour le type int (%s chiffres maximum)
ErrorSizeTooLongForVarcharType=Longueur de champ trop longue pour le type chaine (%s caractères maximum)
ErrorNoValueForSelectType=Les valeurs de la liste doivent être renseignées
ErrorFieldCanNotContainSpecialCharacters=Le champ <b>%s</b> ne peut contenir de caractères spéciaux.
ErrorNoAccountancyModuleLoaded=Aucun module de comptabilité activé
ErrorExportDuplicateProfil=Ce nom de profil existe déjà pour ce lot d'export.

View File

@ -26,7 +26,7 @@ SendRequestCP=Envoyer la demande de congés
DelayToRequestCP=Les demandes de congés doivent être faites au moins <b>%s jours</b> avant la date</b> de ceux-ci.
MenuConfCP=Mettre à jour solde
UpdateAllCP=Mettre à jour les congés
SoldeCPUser=Votre solde de congés est de <b>%s jours</b>.
SoldeCPUser=Solde de congés: <b>%s jours</b>.
ErrorEndDateCP=Vous devez choisir une date de fin supérieur à la date de début.
ErrorSQLCreateCP=Une erreur SQL est survenue durant la création :
ErrorIDFicheCP=Une erreur est survenue, cette demande de congés n'existe pas.

View File

@ -113,4 +113,5 @@ NameToCreate=Nom du tiers à créer
YourRole=Vos rôles
YourQuotaOfUsersIsReached=Votre quota d'utilisateurs actifs est atteint !
NbOfUsers=Nb d'utilisateurs
DontDowngradeSuperAdmin=Seul un superadmin peut rétrograder un superadmin
DontDowngradeSuperAdmin=Seul un superadmin peut rétrograder un superadmin
HierarchicalResponsible=Responsable hierarchique

View File

@ -2185,10 +2185,10 @@ class Product extends CommonObject
$this->res[]= array($compl_path.$nom_pere,$desc_pere);
}
// Recursive call
if (is_array($desc_pere)>2)
// Recursive call if child is an array
if (is_array($desc_pere[0]))
{
$this ->fetch_prod_arbo($desc_pere, $nom_pere." -> ", $desc_pere[1]*$multiply, $level+1);
$this ->fetch_prod_arbo($desc_pere[0], $nom_pere." -> ", $desc_pere[1]*$multiply, $level+1);
}
}
}

View File

@ -84,6 +84,7 @@ $extrafields->fetch_name_optionals_label($elementtype);
print "<table summary=\"listofattributes\" class=\"noborder\" width=\"100%\">";
print '<tr class="liste_titre">';
print '<td align="center">'.$langs->trans("Position").'</td>';
print '<td>'.$langs->trans("Label").'</td>';
print '<td>'.$langs->trans("AttributeCode").'</td>';
print '<td>'.$langs->trans("Type").'</td>';
@ -98,6 +99,7 @@ foreach($extrafields->attribute_type as $key => $value)
{
$var=!$var;
print "<tr ".$bc[$var].">";
print "<td>".$extrafields->attribute_pos[$key]."</td>\n";
print "<td>".$extrafields->attribute_label[$key]."</td>\n";
print "<td>".$key."</td>\n";
print "<td>".$type2label[$extrafields->attribute_type[$key]]."</td>\n";

View File

@ -1168,7 +1168,7 @@ div.error {
.product_line_stock_ok { color: #002200; }
.product_line_stock_too_low { color: #664400; }
.fieldrequired {
font-weight:bold;
color:#333333;
@ -1469,6 +1469,9 @@ table.cal_event {
margin-bottom:1px;
}
ul.cal_event { padding-right: 2px; padding-top: 1px; border: none; list-style-type: none; margin: 0 auto; -webkit-padding-start: 2px !important; }
li.cal_event { border: none; list-style-type: none; }
.cal_event a:link {
color:#232323;
font-size:11px;

View File

@ -2059,12 +2059,19 @@ td.hidden {
.cal_current_month { background: #FFFFFF; border: solid 1px #C0C0C0; padding-<?php print $left; ?>: 2px; padding-<?php print $right; ?>: 1px; padding-top: 0px; padding-bottom: 0px; }
.cal_today { background: #FFFFFF; border: solid 2px #6C7C7B; padding-<?php print $left; ?>: 2px; padding-<?php print $right; ?>: 1px; padding-top: 0px; padding-bottom: 0px; }
.cal_past { }
table.cal_event { border-collapse: collapse; margin-bottom: 1px; -webkit-border-radius: 6px; border-radius: 6px; }
table.cal_event td { border: 0px; padding-<?php print $left; ?>: 0px; padding-<?php print $right; ?>: 2px; padding-top: 0px; padding-bottom: 0px; }
table.cal_event { border: none; border-collapse: collapse; margin-bottom: 1px; -webkit-border-radius: 6px; border-radius: 6px;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.25);
moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.25);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.25);
background: -webkit-gradient(linear, left top, left bottom, from(#006aac), to(#00438d));
}
table.cal_event td { border: none; padding-<?php print $left; ?>: 2px; padding-<?php print $right; ?>: 2px; padding-top: 0px; padding-bottom: 0px; }
ul.cal_event { padding-right: 2px; padding-top: 1px; border: none; list-style-type: none; margin: 0 auto; -webkit-padding-start: 2px !important; }
li.cal_event { border: none; list-style-type: none; }
.cal_event a:link { color: #111111; font-size: 11px; font-weight: normal !important; }
.cal_event a:visited { color: #111111; font-size: 11px; font-weight: normal !important; }
.cal_event a:active { color: #111111; font-size: 11px; font-weight: normal !important; }
.cal_event a:hover { color: #111111; font-size: 11px; font-weight: normal !important; }
.cal_event a:hover { color: #111111; font-size: 11px; font-weight: normal !important; color:rgba(255,255,255,.75); }
/* ============================================================================== */

View File

@ -154,13 +154,13 @@ class User extends CommonObject
$sql.= " u.ref_int, u.ref_ext";
$sql.= " FROM ".MAIN_DB_PREFIX."user as u";
if (! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode))
if ((empty($conf->multicompany->enabled) || empty($conf->multicompany->transverse_mode)) && (! empty($user->entity)))
{
$sql.= " WHERE u.entity IS NOT NULL";
$sql.= " WHERE u.entity IN (0,".$conf->entity.")";
}
else
{
$sql.= " WHERE u.entity IN (0,".$conf->entity.")";
$sql.= " WHERE u.entity IS NOT NULL";
}
if ($sid) // permet une recherche du user par son SID ActiveDirectory ou Samba
@ -1140,6 +1140,7 @@ class User extends CommonObject
$sql.= ", note = '".$this->db->escape($this->note)."'";
$sql.= ", photo = ".($this->photo?"'".$this->db->escape($this->photo)."'":"null");
$sql.= ", openid = ".($this->openid?"'".$this->db->escape($this->openid)."'":"null");
$sql.= ", fk_user = ".($this->fk_user > 0?"'".$this->db->escape($this->fk_user)."'":"null");
$sql.= ", entity = '".$this->entity."'";
$sql.= " WHERE rowid = ".$this->id;

View File

@ -196,11 +196,6 @@ if ($action == 'add' && $canadduser)
}
}
// FIXME external module
$object->webcal_login = $_POST["webcal_login"];
$object->phenix_login = $_POST["phenix_login"];
$object->phenix_pass = $_POST["phenix_pass"];
// If multicompany is off, admin users must all be on entity 0.
if (! empty($conf->multicompany->enabled))
{
@ -332,6 +327,7 @@ if ($action == 'update' && ! $_POST["cancel"])
$object->job = GETPOST("job");
$object->signature = GETPOST("signature");
$object->openid = GETPOST("openid");
$object->fk_user = GETPOST("fk_user")>0?GETPOST("fk_user"):0;
// Get extra fields
foreach($_POST as $key => $value)
@ -342,11 +338,6 @@ if ($action == 'update' && ! $_POST["cancel"])
}
}
// FIXME external module
$object->webcal_login = $_POST["webcal_login"];
$object->phenix_login = $_POST["phenix_login"];
$object->phenix_pass = $_POST["phenix_pass"];
if (! empty($conf->multicompany->enabled))
{
if (! empty($_POST["superadmin"]))
@ -828,21 +819,6 @@ if (($action == 'create') || ($action == 'adduserldap'))
print "</td></tr>\n";
}
//Multicompany
if (! empty($conf->multicompany->enabled))
{
if (empty($conf->multicompany->transverse_mode) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
print "<tr>".'<td valign="top">'.$langs->trans("Entity").'</td>';
print "<td>".$mc->select_entities($conf->entity);
print "</td></tr>\n";
}
else
{
print '<input type="hidden" name="entity" value="'.$conf->entity.'" />';
}
}
// Type
print '<tr><td valign="top">'.$langs->trans("Type").'</td>';
print '<td>';
@ -911,6 +887,28 @@ if (($action == 'create') || ($action == 'adduserldap'))
print '<textarea rows="'.ROWS_5.'" cols="90" name="signature">'.GETPOST('signature').'</textarea>';
print '</td></tr>';
// Multicompany
if (! empty($conf->multicompany->enabled))
{
if (empty($conf->multicompany->transverse_mode) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
print "<tr>".'<td valign="top">'.$langs->trans("Entity").'</td>';
print "<td>".$mc->select_entities($conf->entity);
print "</td></tr>\n";
}
else
{
print '<input type="hidden" name="entity" value="'.$conf->entity.'" />';
}
}
// Hierarchy
print '<tr><td valign="top">'.$langs->trans("HierarchicalResponsible").'</td>';
print '<td>';
print $form->select_dolusers($object->fk_user,'fk_user',1,array($object->id),0,'',0,$conf->entity);
print '</td>';
print "</tr>\n";
// Note
print '<tr><td valign="top">';
print $langs->trans("Note");
@ -936,23 +934,6 @@ if (($action == 'create') || ($action == 'adduserldap'))
}
}
// Module Webcalendar
// TODO external module
if (! empty($conf->webcalendar->enabled))
{
print "<tr>".'<td valign="top">'.$langs->trans("LoginWebcal").'</td>';
print '<td><input size="30" type="text" name="webcal_login" value="'.$_POST["webcal_login"].'"></td></tr>';
}
// Module Phenix
// TODO external module
if (! empty($conf->phenix->enabled))
{
print "<tr>".'<td valign="top">'.$langs->trans("LoginPenix").'</td>';
print '<td><input size="30" type="text" name="phenix_login" value="'.$_POST["phenix_login"].'"></td></tr>';
print "<tr>".'<td valign="top">'.$langs->trans("PassPenix").'</td>';
print '<td><input size="30" type="text" name="phenix_pass" value="'.$_POST["phenix_pass"].'"></td></tr>';
}
print "</table>\n";
print '<center><br><input class="button" value="'.$langs->trans("CreateUser").'" name="create" type="submit"></center>';
@ -967,7 +948,7 @@ else
/* */
/* ************************************************************************** */
if ($id)
if ($id > 0)
{
$object->fetch($id);
if ($res < 0) { dol_print_error($db,$object->error); exit; }
@ -1076,6 +1057,8 @@ else
*/
if ($action != 'edit')
{
$rowspan=16;
print '<table class="border" width="100%">';
// Ref
@ -1085,13 +1068,9 @@ else
print '</td>';
print '</tr>'."\n";
$rowspan=15;
if (isset($conf->authmode) && preg_match('/myopenid/',$conf->authmode)) $rowspan++;
if (! empty($conf->societe->enabled)) $rowspan++;
if (! empty($conf->adherent->enabled)) $rowspan++;
if (! empty($conf->webcalendar->enabled)) $rowspan++; // TODO external module
if (! empty($conf->phenix->enabled)) $rowspan+=2; // TODO external module
// Lastname
print '<tr><td valign="top">'.$langs->trans("Lastname").'</td>';
@ -1176,22 +1155,6 @@ else
}
print '</td></tr>'."\n";
// Multicompany
if (! empty($conf->multicompany->enabled) && empty($conf->multicompany->transverse_mode) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
print '<tr><td valign="top">'.$langs->trans("Entity").'</td><td width="75%" class="valeur">';
if ($object->admin && ! $object->entity)
{
print $langs->trans("AllEntities");
}
else
{
$mc->getInfo($object->entity);
print $mc->label;
}
print "</td></tr>\n";
}
// Type
print '<tr><td valign="top">'.$langs->trans("Type").'</td><td>';
$type=$langs->trans("Internal");
@ -1200,7 +1163,7 @@ else
if ($object->ldap_sid) print ' ('.$langs->trans("DomainUser").')';
print '</td></tr>'."\n";
// ldap sid
// Ldap sid
if ($object->ldap_sid)
{
print '<tr><td valign="top">'.$langs->trans("Type").'</td><td>';
@ -1232,8 +1195,20 @@ else
print '<tr><td valign="top">'.$langs->trans('Signature').'</td><td>';
print dol_textishtml($object->signature)?$object->signature:dol_nl2br($object->signature,1,false);
print "</td></tr>\n";
// Hierarchy
print '<tr><td valign="top">'.$langs->trans("HierarchicalResponsible").'</td>';
print '<td>';
if (empty($object->fk_user)) print $langs->trans("None");
else {
$huser=new User($db);
$huser->fetch($object->fk_user);
print $huser->getNomUrl(1);
}
print '</td>';
print "</tr>\n";
// Statut
// Status
print '<tr><td valign="top">'.$langs->trans("Status").'</td>';
print '<td>';
print $object->getLibStatut(4);
@ -1256,29 +1231,6 @@ else
print "</tr>\n";
}
// Module Webcalendar
// TODO external module
if (! empty($conf->webcalendar->enabled))
{
$langs->load("other");
print '<tr><td valign="top">'.$langs->trans("LoginWebcal").'</td>';
print '<td>'.$object->webcal_login.'&nbsp;</td>';
print '</tr>'."\n";
}
// Module Phenix
// TODO external module
if (! empty($conf->phenix->enabled))
{
$langs->load("other");
print '<tr><td valign="top">'.$langs->trans("LoginPhenix").'</td>';
print '<td>'.$object->phenix_login.'&nbsp;</td>';
print "</tr>\n";
print '<tr><td valign="top">'.$langs->trans("PassPhenix").'</td>';
print '<td>'.preg_replace('/./i','*',$object->phenix_pass_crypted).'&nbsp;</td>';
print '</tr>'."\n";
}
// Company / Contact
if (! empty($conf->societe->enabled))
{
@ -1327,6 +1279,22 @@ else
print '</tr>'."\n";
}
// Multicompany
if (! empty($conf->multicompany->enabled) && empty($conf->multicompany->transverse_mode) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
print '<tr><td valign="top">'.$langs->trans("Entity").'</td><td width="75%" class="valeur">';
if ($object->admin && ! $object->entity)
{
print $langs->trans("AllEntities");
}
else
{
$mc->getInfo($object->entity);
print $mc->label;
}
print "</td></tr>\n";
}
// Other attributes
$parameters=array('colspan' => ' colspan="2"');
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
@ -1354,7 +1322,7 @@ else
print '<div class="tabsAction">';
if ($caneditfield && ((empty($conf->multicompany->enabled) && $object->entity == $user->entity) || ! $user->entity || ($object->entity == $conf->entity) || ($conf->multicompany->transverse_mode && $conf->entity == 1)))
if ($caneditfield && (empty($conf->multicompany->enabled) || ! $user->entity || ($object->entity == $conf->entity) || ($conf->multicompany->transverse_mode && $conf->entity == 1)))
{
if (! empty($conf->global->MAIN_ONLY_LOGIN_ALLOWED))
{
@ -1366,7 +1334,7 @@ else
}
}
elseif ($caneditpassword && ! $object->ldap_sid &&
((empty($conf->multicompany->enabled) && $object->entity == $user->entity) || ! $user->entity || ($object->entity == $conf->entity) || ($conf->multicompany->transverse_mode && $conf->entity == 1)))
(empty($conf->multicompany->enabled) || ! $user->entity || ($object->entity == $conf->entity) || ($conf->multicompany->transverse_mode && $conf->entity == 1)))
{
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=edit">'.$langs->trans("EditPassword").'</a>';
}
@ -1565,18 +1533,16 @@ else
if ($action == 'edit' && ($canedituser || ($user->id == $object->id)))
{
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'" method="POST" name="updateuser" enctype="multipart/form-data">';
$rowspan=14;
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'" method="POST" name="updateuser" enctype="multipart/form-data">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="update">';
print '<input type="hidden" name="entity" value="'.$object->entity.'">';
print '<table width="100%" class="border">';
$rowspan=13;
if (! empty($conf->societe->enabled)) $rowspan++;
if (! empty($conf->adherent->enabled)) $rowspan++;
if (! empty($conf->webcalendar->enabled)) $rowspan++; // TODO external module
if (! empty($conf->phenix->enabled)) $rowspan+=2; // TODO external module
print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
print '<td colspan="2">';
@ -1748,21 +1714,6 @@ else
print '</td></tr>';
}
// Multicompany
if (! empty($conf->multicompany->enabled))
{
if (empty($conf->multicompany->transverse_mode) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
print "<tr>".'<td valign="top">'.$langs->trans("Entity").'</td>';
print "<td>".$mc->select_entities($object->entity);
print "</td></tr>\n";
}
else
{
print '<input type="hidden" name="entity" value="'.$conf->entity.'" />';
}
}
// Type
print '<tr><td width="25%" valign="top">'.$langs->trans("Type").'</td>';
print '<td>';
@ -1843,7 +1794,7 @@ else
print '<td>';
print '<textarea name="signature" rows="5" cols="90">'.dol_htmlentitiesbr_decode($object->signature).'</textarea>';
print '</td></tr>';
// openid
if (isset($conf->authmode) && preg_match('/myopenid/',$conf->authmode))
{
@ -1861,41 +1812,34 @@ else
print '</td></tr>';
}
// Statut
// Hierarchy
print '<tr><td valign="top">'.$langs->trans("HierarchicalResponsible").'</td>';
print '<td>';
print $form->select_dolusers($object->fk_user,'fk_user',1,array($object->id),0,'',0,$object->entity);
print '</td>';
print "</tr>\n";
// Status
print '<tr><td valign="top">'.$langs->trans("Status").'</td>';
print '<td>';
print $object->getLibStatut(4);
print '</td></tr>';
// Module Webcalendar
// TODO external module
if (! empty($conf->webcalendar->enabled))
{
$langs->load("other");
print "<tr>".'<td valign="top">'.$langs->trans("LoginWebcal").'</td>';
print '<td>';
if ($caneditfield) print '<input size="30" type="text" class="flat" name="webcal_login" value="'.$object->webcal_login.'">';
else print $object->webcal_login;
print '</td></tr>';
}
// Module Phenix
// TODO external module
if (! empty($conf->phenix->enabled))
{
$langs->load("other");
print "<tr>".'<td valign="top">'.$langs->trans("LoginPhenix").'</td>';
print '<td>';
if ($caneditfield) print '<input size="30" type="text" class="flat" name="phenix_login" value="'.$object->phenix_login.'">';
else print $object->phenix_login;
print '</td></tr>';
print "<tr>".'<td valign="top">'.$langs->trans("PassPhenix").'</td>';
print '<td>';
if ($caneditfield) print '<input size="30" type="password" class="flat" name="phenix_pass" value="'.$object->phenix_pass_crypted.'">';
else print preg_replace('/./i','*',$object->phenix_pass_crypted);
print '</td></tr>';
}
// Multicompany
if (! empty($conf->multicompany->enabled))
{
if (empty($conf->multicompany->transverse_mode) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
print "<tr>".'<td valign="top">'.$langs->trans("Entity").'</td>';
print "<td>".$mc->select_entities($object->entity);
print "</td></tr>\n";
}
else
{
print '<input type="hidden" name="entity" value="'.$conf->entity.'" />';
}
}
// Company / Contact
if (! empty($conf->societe->enabled))
{