';
print '';
print_liste_field_titre($langs->trans("Action"),$_SERVER["PHP_SELF"],"a.label",$param,"","",$sortfield,$sortorder);
- //print_liste_field_titre($langs->trans("Title"),$_SERVER["PHP_SELF"],"a.label",$param,"","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"a.datep",$param,'','align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("DateEnd"),$_SERVER["PHP_SELF"],"a.datep2",$param,'','align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom",$param,"","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Contact"),$_SERVER["PHP_SELF"],"a.fk_contact",$param,"","",$sortfield,$sortorder);
- //print_liste_field_titre($langs->trans("ActionUserAsk"),$_SERVER["PHP_SELF"],"ua.login",$param,"","",$sortfield,$sortorder);
- print_liste_field_titre($langs->trans("ActionsOwnedBy"),$_SERVER["PHP_SELF"],"ut.login",$param,"","",$sortfield,$sortorder);
- //print_liste_field_titre($langs->trans("DoneBy"),$_SERVER["PHP_SELF"],"ud.login",$param,"","",$sortfield,$sortorder);
+ print_liste_field_titre($langs->trans("ActionsOwnedBy"),$_SERVER["PHP_SELF"],"",$param,"","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"a.percent",$param,"",'align="right"',$sortfield,$sortorder);
print "
\n";
@@ -375,46 +360,16 @@ if ($resql)
}
print '';
- // User author
- /*
- print '';
- if ($obj->useridauthor)
- {
- $userstatic=new User($db);
- $userstatic->id=$obj->useridauthor;
- $userstatic->login=$obj->loginauthor;
- print $userstatic->getLoginUrl(1);
- }
- else print ' ';
- print ' | ';
- */
-
// User to do
print '';
- if ($obj->useridtodo)
+ if ($obj->fk_user_action > 0)
{
- $userstatic=new User($db);
- $userstatic->id=$obj->useridtodo;
- $userstatic->login=$obj->logintodo;
+ $userstatic->fetch($obj->fk_user_action);
print $userstatic->getLoginUrl(1);
}
else print ' ';
print ' | ';
- // User did
- /*
- print '';
- if ($obj->useriddone)
- {
- $userstatic=new User($db);
- $userstatic->id=$obj->useriddone;
- $userstatic->login=$obj->logindone;
- print $userstatic->getLoginUrl(1);
- }
- else print ' ';
- print ' | ';
- */
-
// Status/Percent
print ''.$actionstatic->LibStatut($obj->percent,6).' | ';
@@ -434,6 +389,6 @@ else
}
-$db->close();
-
llxFooter();
+
+$db->close();
diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php
index 22cf8841c02..04353190adb 100644
--- a/htdocs/comm/action/peruser.php
+++ b/htdocs/comm/action/peruser.php
@@ -39,9 +39,7 @@ if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/core/class
if (! isset($conf->global->AGENDA_MAX_EVENTS_DAY_VIEW)) $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW=3;
$filter=GETPOST("filter",'',3);
-$filtera = GETPOST("userasked","int",3)?GETPOST("userasked","int",3):GETPOST("filtera","int",3);
$filtert = GETPOST("usertodo","int",3)?GETPOST("usertodo","int",3):GETPOST("filtert","int",3);
-$filterd = GETPOST("userdone","int",3)?GETPOST("userdone","int",3):GETPOST("filterd","int",3);
$usergroup = GETPOST("usergroup","int",3);
//if (! ($usergroup > 0) && ! ($filtert > 0)) $filtert = $user->id;
//$showbirthday = empty($conf->use_javascript_ajax)?GETPOST("showbirthday","int"):1;
@@ -73,9 +71,7 @@ if (! $user->rights->agenda->myactions->read) accessforbidden();
if (! $user->rights->agenda->allactions->read) $canedit=0;
if (! $user->rights->agenda->allactions->read || $filter =='mine') // If no permission to see all, we show only affected to me
{
- $filtera=$user->id;
$filtert=$user->id;
- $filterd=$user->id;
}
//$action=GETPOST('action','alpha');
@@ -130,6 +126,7 @@ if (GETPOST('viewday') || $action == 'show_day') {
} // View by day
+$langs->load("users");
$langs->load("agenda");
$langs->load("other");
$langs->load("commercial");
@@ -198,9 +195,7 @@ $param='';
if ($actioncode || isset($_GET['actioncode']) || isset($_POST['actioncode'])) $param.="&actioncode=".$actioncode;
if ($status || isset($_GET['status']) || isset($_POST['status'])) $param.="&status=".$status;
if ($filter) $param.="&filter=".$filter;
-if ($filtera) $param.="&filtera=".$filtera;
if ($filtert) $param.="&filtert=".$filtert;
-if ($filterd) $param.="&filterd=".$filterd;
if ($usergroup) $param.="&usergroup=".$usergroup;
if ($socid) $param.="&socid=".$socid;
if ($showbirthday) $param.="&showbirthday=1";
@@ -280,7 +275,7 @@ $paramnoaction=preg_replace('/action=[a-z_]+/','',$param);
$head = calendars_prepare_head($paramnoaction);
dol_fiche_head($head, $tabactive, $langs->trans('Agenda'), 0, 'action');
-print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, $filtera, $filtert, $filterd, $pid, $socid, $action, $listofextcals, $actioncode, $usergroup);
+print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, 0, $filtert, 0, $pid, $socid, $action, $listofextcals, $actioncode, $usergroup);
dol_fiche_end();
$showextcals=$listofextcals;
@@ -332,27 +327,29 @@ print_fiche_titre($s,$link.' '.$nav, '');
// Get event in an array
$eventarray=array();
-$sql = 'SELECT a.id,a.label,';
+$sql = 'SELECT';
+if ($usergroup > 0) $sql.=" DISTINCT";
+$sql.= ' a.id, a.label,';
$sql.= ' a.datep,';
$sql.= ' a.datep2,';
-$sql.= ' a.datea,';
-$sql.= ' a.datea2,';
$sql.= ' a.percent,';
-$sql.= ' a.fk_user_author,a.fk_user_action,a.fk_user_done,';
+$sql.= ' a.fk_user_author,a.fk_user_action,';
$sql.= ' a.transparency, a.priority, a.fulldayevent, a.location,';
$sql.= ' a.fk_soc, a.fk_contact, a.fk_element, a.elementtype,';
$sql.= ' ca.code, ca.color';
$sql.= ' FROM '.MAIN_DB_PREFIX.'c_actioncomm as ca, '.MAIN_DB_PREFIX."actioncomm as a";
if (! $user->rights->societe->client->voir && ! $socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON a.fk_soc = sc.fk_soc";
-if ($usergroup > 0) $sql.= ", ".MAIN_DB_PREFIX."usergroup_user as ugu";
+// We must filter on assignement table
+if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resources as ar";
+if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element";
$sql.= ' WHERE a.fk_action = ca.id';
$sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')';
if ($actioncode) $sql.=" AND ca.code='".$db->escape($actioncode)."'";
if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid);
if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")";
if ($socid > 0) $sql.= ' AND a.fk_soc = '.$socid;
-// FIXME: We must filter on assignement table
-if ($usergroup > 0) $sql.= " AND ugu.fk_user = a.fk_user_action";
+// We must filter on assignement table
+if ($filtert > 0 || $usergroup > 0) $sql.= " AND ar.fk_actioncomm = a.id AND ar.element_type='user'";
if ($action == 'show_day')
{
$sql.= " AND (";
@@ -386,14 +383,12 @@ if ($status == '-1') { $sql.= " AND a.percent = -1"; } // Not applicable
if ($status == '50') { $sql.= " AND (a.percent > 0 AND a.percent < 100)"; } // Running already started
if ($status == 'done' || $status == '100') { $sql.= " AND (a.percent = 100 OR (a.percent = -1 AND a.datep2 <= '".$db->idate($now)."'))"; }
if ($status == 'todo') { $sql.= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep2 > '".$db->idate($now)."'))"; }
-// FIXME: We must filter on assignement table
-if ($filtera > 0 || $filtert > 0 || $filterd > 0 || $usergroup > 0)
+// We must filter on assignement table
+if ($filtert > 0 || $usergroup > 0)
{
$sql.= " AND (";
- if ($filtera > 0) $sql.= " a.fk_user_author = ".$filtera;
- if ($filtert > 0) $sql.= ($filtera>0?" OR ":"")." a.fk_user_action = ".$filtert;
- if ($filterd > 0) $sql.= ($filtera>0||$filtert>0?" OR ":"")." a.fk_user_done = ".$filterd;
- if ($usergroup > 0) $sql.= ($filtera>0||$filtert>0||$filterd>0?" OR ":"")." ugu.fk_usergroup = ".$usergroup;
+ if ($filtert > 0) $sql.= "ar.fk_element = ".$filtert;
+ if ($usergroup > 0) $sql.= ($filtert>0?" OR ":"")." ugu.fk_usergroup = ".$usergroup;
$sql.= ")";
}
// Sort on date
@@ -679,7 +674,7 @@ foreach ($usernames as $username)
{
$var = ! $var;
echo "";
- echo '| ' . $username->getNomUrl(1). ' | ';
+ echo '' . $username->getNomUrl(1). ' | ';
$tmpday = $sav;
// Lopp on each day of week
@@ -809,7 +804,7 @@ function show_day_events2($username, $day, $month, $year, $monthshown, $style, &
{
global $db;
global $user, $conf, $langs, $hookmanager, $action;
- global $filter, $filtera, $filtert, $filterd, $status, $actioncode; // Filters used into search form
+ global $filter, $filtert, $status, $actioncode; // Filters used into search form
global $theme_datacolor; // Array with a list of different we can use (come from theme)
global $cachethirdparties, $cachecontacts, $colorindexused;
global $begin_h, $end_h;
diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php
index 23a17534ccf..80e556378c0 100644
--- a/htdocs/core/lib/agenda.lib.php
+++ b/htdocs/core/lib/agenda.lib.php
@@ -70,7 +70,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
{
print '
';
print '| ';
- print $langs->trans("ActionsOwnedBy").' ';
+ print $langs->trans("ActionsToDoBy").' ';
print ' | ';
print $form->select_dolusers($filtert, 'usertodo', 1, '', ! $canedit);
if (empty($conf->dol_optimize_smallscreen)) print ' '.$langs->trans("or") . ' '.$langs->trans("Group").' ';
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index d83d1e8b1a5..bdccfa8d84d 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -4633,6 +4633,7 @@ function dol_eval($s,$returnvalue=0)
global $leftmenu;
global $rights;
global $object;
+ global $soc;
//print $s." \n";
if ($returnvalue) return @eval('return '.$s.';');
diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php
index 7517fac7d20..9ab6f4a1ddc 100644
--- a/htdocs/core/lib/functions2.lib.php
+++ b/htdocs/core/lib/functions2.lib.php
@@ -628,8 +628,8 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='',$m
if (preg_match('/\{(t+)\}/i',$mask,$regType))
{
$masktype=$regType[1];
- $masktype_value=substr(preg_replace('/^TE_/','',$objsoc->typent_code),0,dol_strlen($regType[1]));//get n first characters of client code where n is length in mask
- $masktype_value=str_pad($masktype_value,dol_strlen($regType[1]),"#",STR_PAD_RIGHT);
+ $masktype_value=substr(preg_replace('/^TE_/','',$objsoc->typent_code),0,dol_strlen($regType[1]));// get n first characters of thirdpaty typent_code (where n is length in mask)
+ $masktype_value=str_pad($masktype_value,dol_strlen($regType[1]),"#",STR_PAD_RIGHT); // we fill on right with # to have same number of char than into mask
}
else
{
diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php
index 91a24db79ac..a2819ffb2c4 100644
--- a/htdocs/core/menus/standard/eldy.lib.php
+++ b/htdocs/core/menus/standard/eldy.lib.php
@@ -354,7 +354,7 @@ function print_text_menu_entry($text, $showmode, $url, $id, $idsel, $classname,
if ($showmode == 1)
{
print '';
print '';
print '';
diff --git a/htdocs/custom/.gitignore b/htdocs/custom/.gitignore
new file mode 100644
index 00000000000..ed069fdfd81
--- /dev/null
+++ b/htdocs/custom/.gitignore
@@ -0,0 +1,4 @@
+/a*
+/b*
+/c*
+/d*
diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql
index ad05f850e16..7dbdb7eb7dc 100755
--- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql
+++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql
@@ -153,6 +153,9 @@ ALTER TABLE llx_projet_task_time ADD COLUMN task_datehour datetime after task_da
ALTER TABLE llx_actioncomm_resources CHANGE COLUMN transparent transparency smallint default 1;
+ALTER TABLE llx_actioncomm_resources DROP INDEX idx_actioncomm_resources_idx1;
+ALTER TABLE llx_actioncomm_resources ADD UNIQUE INDEX uk_actioncomm_resources(fk_actioncomm, element_type, fk_element);
+
-- Localtaxes by thirds
ALTER TABLE llx_c_tva MODIFY COLUMN localtax1 varchar(10);
diff --git a/htdocs/install/mysql/tables/llx_actioncomm_resources.key.sql b/htdocs/install/mysql/tables/llx_actioncomm_resources.key.sql
index caaa0969944..8c7bb4ad237 100644
--- a/htdocs/install/mysql/tables/llx_actioncomm_resources.key.sql
+++ b/htdocs/install/mysql/tables/llx_actioncomm_resources.key.sql
@@ -18,7 +18,7 @@
-- ============================================================================
-ALTER TABLE llx_actioncomm_resources ADD UNIQUE INDEX idx_actioncomm_resources_idx1 (fk_actioncomm, element_type, fk_element);
+ALTER TABLE llx_actioncomm_resources ADD UNIQUE INDEX uk_actioncomm_resources(fk_actioncomm, element_type, fk_element);
ALTER TABLE llx_actioncomm_resources ADD INDEX idx_actioncomm_resources_fk_element (fk_element);
-- Pas de contrainte sur fk_source et fk_target car pointe sur differentes tables
diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php
index 57004f3cb16..86ab911c71b 100644
--- a/htdocs/install/upgrade2.php
+++ b/htdocs/install/upgrade2.php
@@ -362,6 +362,8 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
$beforeversionarray=explode('.','3.7.9'); // target is before this
if (versioncompare($versiontoarray,$afterversionarray) >= 0 && versioncompare($versiontoarray,$beforeversionarray) <= 0)
{
+ migrate_event_assignement($db,$langs,$conf);
+
// Reload modules (this must be always and only into last targeted version)
$listofmodule=array(
'MAIN_MODULE_AGENDA',
@@ -391,6 +393,7 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
$db->commit();
$db->close();
+
// Actions for all version (not in database)
migrate_delete_old_files($db,$langs,$conf);
@@ -3519,6 +3522,83 @@ function migrate_categorie_association($db,$langs,$conf)
print ' |
';
}
+/**
+ * Migrate event assignement to owner
+ *
+ * @param DoliDB $db Database handler
+ * @param Translate $langs Object langs
+ * @param Conf $conf Object conf
+ * @return void
+ */
+function migrate_event_assignement($db,$langs,$conf)
+{
+ print '';
+
+ print ' ';
+ print ''.$langs->trans('MigrationEvents')." \n";
+
+ $error = 0;
+
+ dolibarr_install_syslog("upgrade2::migrate_event_assignement");
+
+ $db->begin();
+
+ $sqlSelect = "SELECT a.id, a.fk_user_action";
+ $sqlSelect.= " FROM ".MAIN_DB_PREFIX."actioncomm as a";
+ $sqlSelect.= " LEFT JOIN ".MAIN_DB_PREFIX."actioncomm_resources as ar ON ar.fk_actioncomm = a.id AND ar.element_type = 'user' AND ar.fk_element = a.fk_user_action";
+ $sqlSelect.= " WHERE fk_user_action > 0 AND fk_user_action NOT IN (SELECT fk_element FROM ".MAIN_DB_PREFIX."actioncomm_resources as ar WHERE ar.fk_actioncomm = a.id AND ar.element_type = 'user')";
+ $sqlSelect.= " ORDER BY a.id";
+ //print $sqlSelect;
+
+ $resql = $db->query($sqlSelect);
+ if ($resql)
+ {
+ $i = 0;
+ $num = $db->num_rows($resql);
+
+ if ($num)
+ {
+ while ($i < $num)
+ {
+ $obj = $db->fetch_object($resql);
+
+ $sqlUpdate = "INSERT INTO ".MAIN_DB_PREFIX."actioncomm_resources(fk_actioncomm, element_type, fk_element) ";
+ $sqlUpdate.= "VALUES(".$obj->id.", 'user', ".$obj->fk_user_action.")";
+
+ $result=$db->query($sqlUpdate);
+ if (! $result)
+ {
+ $error++;
+ dol_print_error($db);
+ }
+ print ". ";
+ $i++;
+ }
+ }
+ else
+ {
+ print $langs->trans('AlreadyDone')." \n";
+ }
+
+ if (! $error)
+ {
+ $db->commit();
+ }
+ else
+ {
+ $db->rollback();
+ }
+ }
+ else
+ {
+ dol_print_error($db);
+ $db->rollback();
+ }
+
+
+ print ' |
';
+}
+
/**
* Migration directory
*
diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang
index 1cc01ec2e7b..9ed2d79edd2 100644
--- a/htdocs/langs/en_US/agenda.lang
+++ b/htdocs/langs/en_US/agenda.lang
@@ -68,7 +68,7 @@ DateActionDoneEnd= Real end date
DateActionStart= Start date
DateActionEnd= End date
AgendaUrlOptions1=You can also add following parameters to filter output:
-AgendaUrlOptions2=login=%s to restrict output to actions created by, assigned to or done by user %s.
+AgendaUrlOptions2=login=%s to restrict output to actions created by or assigned to user %s.
AgendaUrlOptions3=logina=%s to restrict output to actions owned by a user %s.
AgendaUrlOptions4=logint=%s to restrict output to actions assigned to user %s.
AgendaUrlOptionsProject=project=PROJECT_ID to restrict output to actions associated to project PROJECT_ID.
diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang
index 20abe7b9c70..c296bd788e8 100644
--- a/htdocs/langs/en_US/install.lang
+++ b/htdocs/langs/en_US/install.lang
@@ -206,6 +206,7 @@ MigrationProjectTaskTime=Update time spent in seconds
MigrationActioncommElement=Update data on actions
MigrationPaymentMode=Data migration for payment mode
MigrationCategorieAssociation=Migration of categories
+MigrationEvents=Migration of events to add event owner into assignement table
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options
\ No newline at end of file
diff --git a/htdocs/public/agenda/agendaexport.php b/htdocs/public/agenda/agendaexport.php
index c36766e2777..2b1d02ef493 100644
--- a/htdocs/public/agenda/agendaexport.php
+++ b/htdocs/public/agenda/agendaexport.php
@@ -69,7 +69,6 @@ if (! empty($_GET["project"])) $filters['project']=$_GET["project"];
if (! empty($_GET["login"])) $filters['login']=$_GET["login"];
if (! empty($_GET["logina"])) $filters['logina']=$_GET["logina"];
if (! empty($_GET["logint"])) $filters['logint']=$_GET["logint"];
-if (! empty($_GET["logind"])) $filters['logind']=$_GET["logind"];
// Not older than
if (! isset($conf->global->MAIN_AGENDA_EXPORT_PAST_DELAY)) $conf->global->MAIN_AGENDA_EXPORT_PAST_DELAY=100;
$filters['notolderthan']=$conf->global->MAIN_AGENDA_EXPORT_PAST_DELAY;
@@ -111,8 +110,7 @@ foreach ($filters as $key => $value)
if ($key == 'project') $filename.='-project'.$value;
if ($key == 'login') $filename.='-login'.$value;
if ($key == 'logina') $filename.='-logina'.$value; // Author
- if ($key == 'logind') $filename.='-logind'.$value; // Affected to
- if ($key == 'logint') $filename.='-logint'.$value; // Done by
+ if ($key == 'logint') $filename.='-logint'.$value; // Assigned to
}
// Add extension
if ($format == 'vcal') { $shortfilename.='.vcs'; $filename.='.vcs'; }
diff --git a/htdocs/societe/agenda.php b/htdocs/societe/agenda.php
index 8d731875442..a6ba3d7b1cf 100644
--- a/htdocs/societe/agenda.php
+++ b/htdocs/societe/agenda.php
@@ -59,9 +59,6 @@ $contactstatic = new Contact($db);
$form = new Form($db);
-/*
- * Fiche categorie de client et/ou fournisseur
- */
if ($socid)
{
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
@@ -70,79 +67,79 @@ if ($socid)
$langs->load("companies");
- $soc = new Societe($db);
- $result = $soc->fetch($socid);
+ $object = new Societe($db);
+ $result = $object->fetch($socid);
llxHeader("",$langs->trans("Agenda"),'');
if (! empty($conf->notification->enabled)) $langs->load("mails");
- $head = societe_prepare_head($soc);
+ $head = societe_prepare_head($object);
dol_fiche_head($head, 'agenda', $langs->trans("ThirdParty"),0,'company');
print '';
print '| '.$langs->trans("ThirdPartyName").' | ';
- print $form->showrefnav($soc,'socid','',($user->societe_id?0:1),'rowid','nom');
+ print $form->showrefnav($object,'socid','',($user->societe_id?0:1),'rowid','nom');
print ' |
';
if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field
{
- print '| '.$langs->trans('Prefix').' | '.$soc->prefix_comm.' |
';
+ print '| '.$langs->trans('Prefix').' | '.$object->prefix_comm.' |
';
}
- if ($soc->client)
+ if ($object->client)
{
print '| ';
print $langs->trans('CustomerCode').' | ';
- print $soc->code_client;
- if ($soc->check_codeclient() <> 0) print ' ('.$langs->trans("WrongCustomerCode").')';
+ print $object->code_client;
+ if ($object->check_codeclient() <> 0) print ' ('.$langs->trans("WrongCustomerCode").')';
print ' |
';
}
- if ($soc->fournisseur)
+ if ($object->fournisseur)
{
print '| ';
print $langs->trans('SupplierCode').' | ';
- print $soc->code_fournisseur;
- if ($soc->check_codefournisseur() <> 0) print ' ('.$langs->trans("WrongSupplierCode").')';
+ print $object->code_fournisseur;
+ if ($object->check_codefournisseur() <> 0) print ' ('.$langs->trans("WrongSupplierCode").')';
print ' |
';
}
if (! empty($conf->barcode->enabled))
{
- print '| '.$langs->trans('Gencod').' | '.$soc->barcode.' |
';
+ print '| '.$langs->trans('Gencod').' | '.$object->barcode.' |
';
}
print "| ".$langs->trans('Address')." | ";
- dol_print_address($soc->address, 'gmap', 'thirdparty', $soc->id);
+ dol_print_address($object->address, 'gmap', 'thirdparty', $object->id);
print " |
";
// Zip / Town
- print '| '.$langs->trans('Zip').' | '.$soc->zip." | ";
- print ''.$langs->trans('Town').' | '.$soc->town." |
";
+ print '| '.$langs->trans('Zip').' | '.$object->zip." | ";
+ print ''.$langs->trans('Town').' | '.$object->town." |
";
// Country
- if ($soc->country) {
+ if ($object->country) {
print '| '.$langs->trans('Country').' | ';
- $img=picto_from_langcode($soc->country_code);
+ $img=picto_from_langcode($object->country_code);
print ($img?$img.' ':'');
- print $soc->country;
+ print $object->country;
print ' |
';
}
// EMail
print '| '.$langs->trans('EMail').' | ';
- print dol_print_email($soc->email,0,$soc->id,'AC_EMAIL');
+ print dol_print_email($object->email,0,$object->id,'AC_EMAIL');
print ' |
';
// Web
print '| '.$langs->trans('Web').' | ';
- print dol_print_url($soc->url);
+ print dol_print_url($object->url);
print ' |
';
// Phone / Fax
- print '| '.$langs->trans('Phone').' | '.dol_print_phone($soc->phone,$soc->country_code,0,$soc->id,'AC_TEL').' | ';
- print ''.$langs->trans('Fax').' | '.dol_print_phone($soc->fax,$soc->country_code,0,$soc->id,'AC_FAX').' |
';
+ print '| '.$langs->trans('Phone').' | '.dol_print_phone($object->phone,$object->country_code,0,$object->id,'AC_TEL').' | ';
+ print ''.$langs->trans('Fax').' | '.dol_print_phone($object->fax,$object->country_code,0,$object->id,'AC_FAX').' |
';
print '
';
@@ -171,7 +168,7 @@ if ($socid)
print '
';
- $objthirdparty=$soc;
+ $objthirdparty=$object;
$objcon=new stdClass();
$out='';
@@ -189,10 +186,10 @@ if ($socid)
print load_fiche_titre($langs->trans("ActionsOnCompany"),$out,'');
// List of todo actions
- show_actions_todo($conf,$langs,$db,$soc);
+ show_actions_todo($conf,$langs,$db,$object);
// List of done actions
- show_actions_done($conf,$langs,$db,$soc);
+ show_actions_done($conf,$langs,$db,$object);
}
diff --git a/htdocs/societe/info.php b/htdocs/societe/info.php
index 305936e6f56..9d06d203d9c 100644
--- a/htdocs/societe/info.php
+++ b/htdocs/societe/info.php
@@ -59,21 +59,21 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e
$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
llxHeader('',$langs->trans("ThirdParty"),$help_url);
-$soc = new Societe($db);
-$soc->fetch($socid);
-$soc->info($socid);
+$object = new Societe($db);
+$object->fetch($socid);
+$object->info($socid);
/*
* Affichage onglets
*/
-$head = societe_prepare_head($soc);
+$head = societe_prepare_head($object);
dol_fiche_head($head, 'info', $langs->trans("ThirdParty"),0,'company');
print '| ';
-dol_print_object_info($soc);
+dol_print_object_info($object);
print ' |
';
diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php
index 656e88ec83c..b1a3413433c 100644
--- a/htdocs/societe/soc.php
+++ b/htdocs/societe/soc.php
@@ -1751,7 +1751,8 @@ else
print '| '.$langs->trans("Country").' | ';
if (! empty($object->country_code))
{
- $img=picto_from_langcode($object->country_code);
+ //$img=picto_from_langcode($object->country_code);
+ $img='';
if ($object->isInEEC()) print $form->textwithpicto(($img?$img.' ':'').$object->country,$langs->trans("CountryIsInEEC"),1,0);
else print ($img?$img.' ':'').$object->country;
}
diff --git a/htdocs/theme/eldy/img/menus/README.md b/htdocs/theme/eldy/img/menus/README.md
new file mode 100644
index 00000000000..1b3942d1913
--- /dev/null
+++ b/htdocs/theme/eldy/img/menus/README.md
@@ -0,0 +1,12 @@
+
+Tutorial to create a new image for menu:
+
+1) First find an image.
+2) With Gimp, open image and check there is a alpha channel. If not add one.
+3) Convert image into back and white.
+4) Use the degrade tool with option:
+* Erase color
+* Opacity: 50 +/-
+* Offset: 0
+* Shape: Linear
+Il est possible aussi d'augmenter la transparence globale depuis le calque.
diff --git a/htdocs/theme/eldy/img/menus/chart.png b/htdocs/theme/eldy/img/menus/chart.png
new file mode 100644
index 00000000000..6efce90a788
Binary files /dev/null and b/htdocs/theme/eldy/img/menus/chart.png differ
diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php
index bb5941c8130..a6d492aa9c4 100644
--- a/htdocs/theme/eldy/style.css.php
+++ b/htdocs/theme/eldy/style.css.php
@@ -532,8 +532,8 @@ margin : 0px auto;
div#tmenu_tooltip {
@@ -679,7 +679,7 @@ div.mainmenu {
position : relative;
background-repeat:no-repeat;
background-position:center top;
- height: px;
+ height: px;
margin-left: 0px;
min-width: 40px;
}
@@ -704,16 +704,10 @@ div.mainmenu.bank {
background-image: url();
}
-div.mainmenu.bookmark {
-}
-
div.mainmenu.cashdesk {
background-image: url();
}
-div.mainmenu.click2dial {
-}
-
div.mainmenu.companies {
background-image: url();
}
@@ -734,12 +728,6 @@ div.mainmenu.ftp {
background-image: url();
}
-div.mainmenu.gravatar {
-}
-
-div.mainmenu.geopipmaxmind {
-}
-
div.mainmenu.hrm {
background-image: url();
}
@@ -748,9 +736,6 @@ div.mainmenu.members {
background-image: url();
}
-div.mainmenu.paypal {
-}
-
div.mainmenu.products {
background-image: url();
margin-left: 10px;
@@ -764,14 +749,6 @@ div.mainmenu.tools {
background-image: url();
}
-div.mainmenu.webservices {
-}
-
-div.mainmenu.google {
- background-image: url();
-}
-
-
'name of class for div')
@@ -2443,6 +2420,11 @@ li.cal_event { border: none; list-style-type: none; }
.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; color:rgba(255,255,255,.75); }
.cal_event_busy { }
+.cal_peruserviewname { max-width: 100px; height: 22px; }
+
+.topmenuimage {
+ background-size: 28px auto;
+}
/* ============================================================================== */
/* Ajax - Liste deroulante de l'autocompletion */
diff --git a/test/phpunit/NumberingModulesTest.php b/test/phpunit/NumberingModulesTest.php
index 043b8ae5a83..904c102e0a8 100644
--- a/test/phpunit/NumberingModulesTest.php
+++ b/test/phpunit/NumberingModulesTest.php
@@ -167,7 +167,7 @@ class NumberingModulesTest extends PHPUnit_Framework_TestCase
$this->assertEquals(1, $result); // Can be deleted
$result=$localobject->is_erasable();
print __METHOD__." is_erasable=".$result."\n";
- $this->assertEquals(0, $result, 'Test for {yyyy}-{0000} that is_erasable is 0 for 1st invoice'); // 1 can no more be deleted (2 is more recent
+ $this->assertEquals(0, $result, 'Test for {yyyy}-{0000} that is_erasable is 0 for 1st invoice'); // 1 can no more be deleted (2 is more recent)
// Now we try with a reset
$conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}-{0000@1}';
@@ -502,7 +502,7 @@ class NumberingModulesTest extends PHPUnit_Framework_TestCase
$conf->global->SOCIETE_FISCAL_MONTH_START=6;
$conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}{mm}-{0000@99}';
$conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}{mm}-{0000@99}';
-
+
$localobject=new Facture($this->savdb);
$localobject->initAsSpecimen();
$localobject->date=dol_mktime(12, 0, 0, 1, 1, 1980); // we use year 1980 to be sure to not have existing invoice for this year
@@ -512,7 +512,7 @@ class NumberingModulesTest extends PHPUnit_Framework_TestCase
$result3=$localobject->validate($user, $result);
print __METHOD__." result=".$result."\n";
$this->assertEquals('198001-0001', $result); // counter must start to 1
-
+
$localobject=new Facture($this->savdb);
$localobject->initAsSpecimen();
$localobject->date=dol_mktime(12, 0, 0, 1, 1, 1980); // we use year 1980 to be sure to not have existing invoice for this year
@@ -522,7 +522,7 @@ class NumberingModulesTest extends PHPUnit_Framework_TestCase
$result3=$localobject->validate($user, $result);
print __METHOD__." result=".$result."\n";
$this->assertEquals('198001-0002', $result); // counter must start to 2
-
+
$localobject=new Facture($this->savdb);
$localobject->initAsSpecimen();
$localobject->date=dol_mktime(12, 0, 0, 2, 1, 1980); // we use year 1980 to be sure to not have existing invoice for this year
@@ -532,7 +532,7 @@ class NumberingModulesTest extends PHPUnit_Framework_TestCase
$result3=$localobject->validate($user, $result);
print __METHOD__." result=".$result."\n";
$this->assertEquals('198002-0001', $result); // counter must start to 1
-
+
$localobject=new Facture($this->savdb);
$localobject->initAsSpecimen();
$localobject->date=dol_mktime(12, 0, 0, 1, 1, 1981); // we use year 1981 to be sure to not have existing invoice for this year
@@ -542,7 +542,28 @@ class NumberingModulesTest extends PHPUnit_Framework_TestCase
$result3=$localobject->validate($user, $result);
print __METHOD__." result=".$result."\n";
$this->assertEquals('198101-0001', $result); // counter must start to 1
-
+
+ // Test with {t} tag
+ $conf->global->SOCIETE_FISCAL_MONTH_START=1;
+ $conf->global->FACTURE_MERCURE_MASK_CREDIT='{t}{yyyy}{mm}-{0000}';
+ $conf->global->FACTURE_MERCURE_MASK_INVOICE='{t}{yyyy}{mm}-{0000}';
+
+ $tmpthirdparty=new Societe($this->savdb);
+ $tmpthirdparty->initAsSpecimen();
+ $tmpthirdparty->typent_code = 'TE_ABC';
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1982); // we use year 1982 to be sure to not have existing invoice for this year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($tmpthirdparty, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('A198201-0001', $result); // counter must start to 1
+
+
+
return $result;
}
|