From 169859b7086704b4362d7964be64a5f2dd4d11ef Mon Sep 17 00:00:00 2001 From: KHELIFA Date: Wed, 17 May 2017 17:00:45 +0200 Subject: [PATCH 1/3] Module Agenda: Add option - Show linked object into agenda view --- htdocs/admin/agenda_other.php | 24 ++++++++++++++++++++++++ htdocs/comm/action/index.php | 10 ++++++++++ htdocs/comm/action/listactions.php | 18 +++++++++++++++++- htdocs/langs/en_US/admin.lang | 1 + htdocs/langs/fr_FR/admin.lang | 1 + 5 files changed, 53 insertions(+), 1 deletion(-) diff --git a/htdocs/admin/agenda_other.php b/htdocs/admin/agenda_other.php index 1d785e882fce7..55b61145b6a30 100644 --- a/htdocs/admin/agenda_other.php +++ b/htdocs/admin/agenda_other.php @@ -4,6 +4,7 @@ * Copyright (C) 2011-2017 Juanjo Menent * Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2016 Charlie Benke + * Copyright (C) 2017 Open-DSI * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -431,6 +432,29 @@ } } +// AGENDA_SHOW_LINKED_OBJECT +$var=!$var; +print ''."\n"; +print ''.$langs->trans("AGENDA_SHOW_LINKED_OBJECT").''."\n"; +print ' '."\n"; +print ''."\n"; +if (! empty($conf->use_javascript_ajax)) +{ + print ajax_constantonoff('AGENDA_SHOW_LINKED_OBJECT'); +} +else +{ + if (empty($conf->global->AGENDA_SHOW_LINKED_OBJECT)) + { + print ''.img_picto($langs->trans("Disabled"),'switch_off').''; + } + else + { + print ''.img_picto($langs->trans("Enabled"),'switch_on').''; + } +} +print ''."\n"; + print ''; dol_fiche_end(); diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index 47ef8093c1a39..0a8ab49ea3847 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -6,6 +6,7 @@ * Copyright (C) 2011 Juanjo Menent * Copyright (C) 2014 Cedric GROSS * Copyright (C) 2015 Marcos García + * Copyright (C) 2017 Open-DSI * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -446,6 +447,7 @@ $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,'; +$sql.= ' a.fk_element, a.elementtype,'; $sql.= ' ca.code as type_code, ca.libelle as type_label, ca.color as type_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"; @@ -570,6 +572,8 @@ $event->fulldayevent=$obj->fulldayevent; $event->location=$obj->location; $event->transparency=$obj->transparency; + $event->fk_element=$obj->fk_element; + $event->elementtype=$obj->elementtype; $event->societe->id=$obj->fk_soc; $event->contact->id=$obj->fk_contact; @@ -1478,6 +1482,12 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa if ($linerelatedto) $linerelatedto.=' / '; if (! empty($contact->id)) $linerelatedto.=$contact->getNomUrl(1,'',0); } + if (! empty($event->fk_element) && $event->fk_element > 0 && ! empty($event->elementtype) && ! empty($conf->global->AGENDA_SHOW_LINKED_OBJECT)) + { + include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + if ($linerelatedto) $linerelatedto.=' / '; + $linerelatedto.=dolGetElementUrl($event->fk_element,$event->elementtype,1); + } if ($linerelatedto) print '
'.$linerelatedto; } diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php index 3e6224e0c4106..4de2fce68dd21 100644 --- a/htdocs/comm/action/listactions.php +++ b/htdocs/comm/action/listactions.php @@ -3,6 +3,7 @@ * Copyright (C) 2003 Eric Seigne * Copyright (C) 2004-2016 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2017 Open-DSI * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -183,6 +184,7 @@ $sql.= " a.id, a.label, a.datep as dp, a.datep2 as dp2,"; $sql.= ' a.fk_user_author,a.fk_user_action,'; $sql.= " a.fk_contact, a.note, a.percent as percent,"; +$sql.= " a.fk_element, a.elementtype,"; $sql.= " c.code as type_code, c.libelle as type_label,"; $sql.= " sp.lastname, sp.firstname"; $sql.= " FROM ".MAIN_DB_PREFIX."c_actioncomm as c, ".MAIN_DB_PREFIX."actioncomm as a"; @@ -355,6 +357,7 @@ print ''; print ''; print ''; + if (! empty($conf->global->AGENDA_SHOW_LINKED_OBJECT)) print ''; print ''; print ''; print $formactions->form_select_status_action('formaction',$status,1,'status',1,2); @@ -375,7 +378,8 @@ print_liste_field_titre($langs->trans("DateEnd"),$_SERVER["PHP_SELF"],"a.datep2",$param,'','align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("ThirdParty"),$_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("ActionsOwnedByShort"),$_SERVER["PHP_SELF"],"",$param,"","",$sortfield,$sortorder); + if (! empty($conf->global->AGENDA_SHOW_LINKED_OBJECT)) print_liste_field_titre($langs->trans("LinkedObject"),$_SERVER["PHP_SELF"],"a.fk_element",$param,"","",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("ActionsOwnedByShort"),$_SERVER["PHP_SELF"],"",$param,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"a.percent",$param,"",'align="center"',$sortfield,$sortorder); print_liste_field_titre(""); print "\n"; @@ -482,6 +486,18 @@ } print ''; + // Linked object + if (! empty($conf->global->AGENDA_SHOW_LINKED_OBJECT)) { + print ''; + if ($obj->fk_element > 0 && ! empty($obj->elementtype)) { + include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + print dolGetElementUrl($obj->fk_element,$obj->elementtype,1); + } else { + print " "; + } + print ''; + } + // User to do print ''; if ($obj->fk_user_action > 0) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 1c9ac65e4b86d..19e296bd951b9 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1512,6 +1512,7 @@ AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into searc AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda AGENDA_NOTIFICATION=Enable event notification on user browsers when event date is reached (each user is able to refuse this from the browser confirmation question) AGENDA_NOTIFICATION_SOUND=Enable sound notification +AGENDA_SHOW_LINKED_OBJECT=Show linked object into agenda view ##### Clicktodial ##### ClickToDialSetup=Click To Dial module setup ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with clicktodial login (defined on user card)
__PASS__ that will be replaced with clicktodial password (defined on user card). diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index bd3d6405843b0..65ab2f84184d9 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1479,6 +1479,7 @@ AGENDA_DEFAULT_FILTER_STATUS=Régler automatiquement le statut d'événement dan AGENDA_DEFAULT_VIEW=Quel onglet voulez-vous voir ouvrir par défaut quand on choisit le menu Agenda AGENDA_NOTIFICATION=Activer les notifications d'événements dans le navigateur utilisateur quand la date de l'événement est atteinte (Chaque utilisateur peut refuser ceci au moment de la question de confirmation posée par le navigateur). AGENDA_NOTIFICATION_SOUND=Activer les notifications sonores. +AGENDA_SHOW_LINKED_OBJECT=Afficher l'objet lié dans la vue agenda ##### Clicktodial ##### ClickToDialSetup=Configuration du module Click To Dial ClickToDialUrlDesc=URL appelée lors d'un clic sur le pictogramme téléphone. Dans l'URL, vous pouvez utiliser les balises
__PHONETO__ qui sera remplacée par le téléphone de l'appelé
__PHONEFROM__ qui sera remplacée par le téléphone de l'appelant (le votre, défini sur votre fiche utilisateur)
__LOGIN__ qui sera remplacée par votre identifiant clicktodial (défini sur votre fiche utilisateur)
__PASS__ qui sera remplacée par votre mot de passe clicktodial (défini sur votre fiche utilisateur). From 7b784a1dcbc5e3af7c83e3dda89252871845c4ee Mon Sep 17 00:00:00 2001 From: absnc Date: Fri, 19 May 2017 17:50:10 +1100 Subject: [PATCH 2/3] Enable shipments for project overview tab --- htdocs/expedition/card.php | 16 ++ htdocs/expedition/class/expedition.class.php | 2 + htdocs/expedition/shipment.php | 1 + .../install/mysql/migration/5.0.0-6.0.0.sql | 2 + .../install/mysql/tables/llx_expedition.sql | 1 + htdocs/langs/en_US/projects.lang | 1 + htdocs/langs/fr_FR/projects.lang | 1 + htdocs/langs/fr_NC/projects.lang | 197 ++++++++++++++++++ htdocs/langs/fr_NC/sendings.lang | 71 +++++++ htdocs/projet/element.php | 12 ++ 10 files changed, 304 insertions(+) create mode 100644 htdocs/langs/fr_NC/projects.lang create mode 100644 htdocs/langs/fr_NC/sendings.lang diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index a0280ce9e3974..8924577009f7c 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -191,6 +191,7 @@ $object->note = GETPOST('note','alpha'); $object->origin = $origin; $object->origin_id = $origin_id; + $object->fk_project = GETPOST('projectid'); $object->weight = GETPOST('weight','int')==''?"NULL":GETPOST('weight','int'); $object->sizeH = GETPOST('sizeH','int')==''?"NULL":GETPOST('sizeH','int'); $object->sizeW = GETPOST('sizeW','int')==''?"NULL":GETPOST('sizeW','int'); @@ -696,6 +697,21 @@ print ''.$soc->getNomUrl(1).''; print ''; + // Project + if (! empty($conf->projet->enabled)) + { + $projectid = GETPOST('projectid')?GETPOST('projectid'):0; + if ($origin == 'project') $projectid = ($originid ? $originid : 0); + + $langs->load("projects"); + print ''; + print '' . $langs->trans("Project") . ''; + $numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0); + print '   id).'">' . $langs->trans("AddProject") . ''; + print ''; + print ''; + } + // Date delivery planned print ''.$langs->trans("DateDeliveryPlanned").''; print ''; diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 8d6822fd360b0..2b7ada7a0c2dd 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -211,6 +211,7 @@ function create($user, $notrigger=0) $sql.= ", date_expedition"; $sql.= ", date_delivery"; $sql.= ", fk_soc"; + $sql.= ", fk_projet"; $sql.= ", fk_address"; $sql.= ", fk_shipping_method"; $sql.= ", tracking_number"; @@ -234,6 +235,7 @@ function create($user, $notrigger=0) $sql.= ", ".($this->date_expedition>0?"'".$this->db->idate($this->date_expedition)."'":"null"); $sql.= ", ".($this->date_delivery>0?"'".$this->db->idate($this->date_delivery)."'":"null"); $sql.= ", ".$this->socid; + $sql.= ", ".$this->fk_project; $sql.= ", ".($this->fk_delivery_address>0?$this->fk_delivery_address:"null"); $sql.= ", ".($this->shipping_method_id>0?$this->shipping_method_id:"null"); $sql.= ", '".$this->db->escape($this->tracking_number)."'"; diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index ede1cc6bec964..849053c610c14 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -880,6 +880,7 @@ print ''; print ''; print ''; + print ''; //print ''; $langs->load("stocks"); diff --git a/htdocs/install/mysql/migration/5.0.0-6.0.0.sql b/htdocs/install/mysql/migration/5.0.0-6.0.0.sql index 6ba7707b249ce..72ef855f96b58 100644 --- a/htdocs/install/mysql/migration/5.0.0-6.0.0.sql +++ b/htdocs/install/mysql/migration/5.0.0-6.0.0.sql @@ -47,6 +47,8 @@ ALTER TABLE llx_ecm_files ADD INDEX idx_ecm_files_label (label); ALTER TABLE llx_holiday ADD COLUMN import_key varchar(14); ALTER TABLE llx_holiday ADD COLUMN extraparams varchar(255); +ALTER TABLE llx_expedition ADD COLUMN fk_projet integer DEFAULT NULL after fk_soc; + ALTER TABLE llx_expensereport ADD COLUMN import_key varchar(14); ALTER TABLE llx_expensereport ADD COLUMN extraparams varchar(255); diff --git a/htdocs/install/mysql/tables/llx_expedition.sql b/htdocs/install/mysql/tables/llx_expedition.sql index aa71e62c0a221..088e4893c0646 100644 --- a/htdocs/install/mysql/tables/llx_expedition.sql +++ b/htdocs/install/mysql/tables/llx_expedition.sql @@ -26,6 +26,7 @@ create table llx_expedition ref varchar(30) NOT NULL, entity integer DEFAULT 1 NOT NULL, -- multi company id fk_soc integer NOT NULL, + fk_projet integer DEFAULT NULL, ref_ext varchar(30), -- reference into an external system (not used by dolibarr) ref_int varchar(30), -- reference into an internal system (used by dolibarr to store extern id like paypal info) diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 97d47589d53ce..c98c2120e2198 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -82,6 +82,7 @@ ListPredefinedInvoicesAssociatedProject=List of customer template invoices assoc ListSupplierOrdersAssociatedProject=List of supplier orders associated with the project ListSupplierInvoicesAssociatedProject=List of supplier invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project +ListShippingAssociatedProject=List of shippings associated with the project ListFichinterAssociatedProject=List of interventions associated with the project ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListDonationsAssociatedProject=List of donations associated with the project diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index fed1df8c59fc3..3455365635911 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -79,6 +79,7 @@ ListSupplierOrdersAssociatedProject=Liste des commandes fournisseurs associées ListSupplierInvoicesAssociatedProject=Liste des factures fournisseurs associées au projet ListContractAssociatedProject=Liste des contrats associés au projet ListFichinterAssociatedProject=Liste des interventions associées au projet +ListShippingAssociatedProject=Liste des expéditions associées au projet ListExpenseReportsAssociatedProject=Liste des notes de frais associées avec ce projet ListDonationsAssociatedProject=Liste des dons associés au projet ListActionsAssociatedProject=Liste des événements associés au projet diff --git a/htdocs/langs/fr_NC/projects.lang b/htdocs/langs/fr_NC/projects.lang new file mode 100644 index 0000000000000..3455365635911 --- /dev/null +++ b/htdocs/langs/fr_NC/projects.lang @@ -0,0 +1,197 @@ +# Dolibarr language file - Source file is en_US - projects +RefProject=Réf. projet +ProjectRef=Ref projet +ProjectId=Id projet +ProjectLabel=Libellé projet +Project=Projet +Projects=Projets +ProjectsArea=Espace projets +ProjectStatus=Statut projet +SharedProject=Tout le monde +PrivateProject=Contacts projet +MyProjectsDesc=Cette vue projet est restreinte aux projets pour lesquels vous êtes un contact affecté (quel qu'en soit le type). +ProjectsPublicDesc=Cette vue présente tous les projets pour lesquels vous êtes habilité à avoir une visibilité. +TasksOnProjectsPublicDesc=Cette vue affiche toutes les tâches de projets selon vos permissions utilisateur +ProjectsPublicTaskDesc=Cette vue présente tous les projets et tâches pour lesquels vous êtes habilité à avoir une visibilité. +ProjectsDesc=Cette vue présente tous les projets (vos habilitations vous offrant une vue exhaustive). +TasksOnProjectsDesc=Cette vue présente toutes les tâches sur tous les projets (vos permissions d'utilisateur vous accordent la permission de voir tout). +MyTasksDesc=Cette vue est restreinte aux projets et tâches pour lesquels vous êtes un contact affecté à au moins une tâche (quel qu'en soit le type). +OnlyOpenedProject=Seuls les projets ouverts sont visibles (les projets à l'état brouillon ou fermé ne sont pas visibles). +ClosedProjectsAreHidden=Les projets fermés ne sont pas visible. +TasksPublicDesc=Cette vue présente tous les projets et tâches pour lesquels vous êtes habilité à avoir une visibilité. +TasksDesc=Cette vue présente tous les projets et tâches (vos habilitations vous offrant une vue exhaustive). +AllTaskVisibleButEditIfYouAreAssigned=Toutes les tâches d'un tel projet sont visibles mais il n'est possible de saisir du temps passé que sur celles qui vous sont assignées.\nAssignez vous la tache pour pouvoir saisir un temps passé. +OnlyYourTaskAreVisible=Seules les tâches qui vous sont assignées sont visibles. Assignez vous une tâche pour la voir et saisir du temps passé +ImportDatasetTasks=Tâches des projets +NewProject=Nouveau projet +AddProject=Créer projet +DeleteAProject=Supprimer un projet +DeleteATask=Supprimer une tâche +ConfirmDeleteAProject=Êtes-vous sûr de vouloir supprimer ce projet ? +ConfirmDeleteATask=Êtes-vous sûr de vouloir supprimer cette tâche ? +OpenedProjects=Projets ouverts +OpenedTasks=Tâches ouvertes +OpportunitiesStatusForOpenedProjects=Montant des opportunités des projets ouverts par statut +OpportunitiesStatusForProjects=Montant des opportunités des projets par statut +ShowProject=Afficher projet +SetProject=Définir projet +NoProject=Aucun projet défini ou responsable +NbOfProjects=Nombre de projets +TimeSpent=Temps consommé +TimeSpentByYou=Temps consommé par vous +TimeSpentByUser=Temps consommé par utilisateur +TimesSpent=Temps consommés +RefTask=Ref. tâche +LabelTask=Libellé tâche +TaskTimeSpent=Temps consommé sur les tâches +TaskTimeUser=Utilisateur +TaskTimeNote=Note +TaskTimeDate=Date +TasksOnOpenedProject=Tâches sur projets ouverts +WorkloadNotDefined=Charge de travail non définie +NewTimeSpent=Nouveau consommé +MyTimeSpent=Mon consommé +Tasks=Tâches +Task=Tâche +TaskDateStart=Date de début de tâche +TaskDateEnd=Date de fin de tâche +TaskDescription=Description de la tâche +NewTask=Nouvelle tâche +AddTask=Créer tâche +AddTimeSpent=Saisir temps consommé +Activity=Activité +Activities=Tâches/activités +MyActivities=Mes tâches/activités +MyProjects=Mes projets +MyProjectsArea=Espace Mes projets +DurationEffective=Durée effective +ProgressDeclared=Progression déclarée +ProgressCalculated=Progression calculée +Time=Temps +ListOfTasks=Liste de tâches +GoToListOfTimeConsumed=Aller à la liste des temps consommés +GoToListOfTasks=Aller à la liste des tâches +ListProposalsAssociatedProject=Liste des propositions commerciales associées au projet +ListOrdersAssociatedProject=Liste des commandes clients associées au projet +ListInvoicesAssociatedProject=Liste des factures clients associées au projet +ListPredefinedInvoicesAssociatedProject=Liste des modèles de facture client associées au projet +ListSupplierOrdersAssociatedProject=Liste des commandes fournisseurs associées au projet +ListSupplierInvoicesAssociatedProject=Liste des factures fournisseurs associées au projet +ListContractAssociatedProject=Liste des contrats associés au projet +ListFichinterAssociatedProject=Liste des interventions associées au projet +ListShippingAssociatedProject=Liste des expéditions associées au projet +ListExpenseReportsAssociatedProject=Liste des notes de frais associées avec ce projet +ListDonationsAssociatedProject=Liste des dons associés au projet +ListActionsAssociatedProject=Liste des événements associés au projet +ListTaskTimeUserProject=Liste du temps consommé sur les tâches d'un projet +ActivityOnProjectToday=Activité projet aujourd'hui +ActivityOnProjectYesterday=Activité projet hier +ActivityOnProjectThisWeek=Activité sur les projets cette semaine +ActivityOnProjectThisMonth=Activité sur les projets ce mois +ActivityOnProjectThisYear=Activité sur les projets cette année +ChildOfTask=Fille du projet/tâche +NotOwnerOfProject=Non responsable de ce projet privé +AffectedTo=Affecté à +CantRemoveProject=Ce projet ne peut être supprimé car il est référencé par de nombreux objets (factures, commandes ou autre). voir la liste sur l'onglet Reférents. +ValidateProject=Valider projet +ConfirmValidateProject=Êtes-vous sûr de vouloir valider ce projet ? +CloseAProject=Clore projet +ConfirmCloseAProject=Êtes-vous sûr de vouloir clore ce projet ? +AlsoCloseAProject=Fermer également le projet (laissez-le ouvert si vous devez suivre la production de tâches dessus) +ReOpenAProject=Réouvrir projet +ConfirmReOpenAProject=Êtes-vous sûr de vouloir rouvrir ce projet ? +ProjectContact=Contacts projet +ActionsOnProject=Événements sur le projet +YouAreNotContactOfProject=Vous n'êtes pas contact de ce projet privé +DeleteATimeSpent=Suppression du temps consommé +ConfirmDeleteATimeSpent=Êtes-vous sûr de vouloir supprimer ce temps consommé ? +DoNotShowMyTasksOnly=Voir aussi les tâches qui ne me sont pas affectées +ShowMyTasksOnly=Ne voir que les tâches qui me sont affectées +TaskRessourceLinks=Ressources +ProjectsDedicatedToThisThirdParty=Projets dédiés à ce tiers +NoTasks=Aucune tâche pour ce projet +LinkedToAnotherCompany=Liés à autre société +TaskIsNotAffectedToYou=Tâche qui ne vous sont pas affectées +ErrorTimeSpentIsEmpty=Le temps consommé n'est pas renseigné +ThisWillAlsoRemoveTasks=Cette opération détruira également les tâches du projet (%s tâches actuellement) et le suivi des consommés. +IfNeedToUseOhterObjectKeepEmpty=Si des objets (facture, commande, ...), appartenant à un autre tiers que celui choisi, doivent être liés au projet à créer, laisser vide afin de laisser le projet multi-tiers. +CloneProject=Cloner le projet +CloneTasks=Cloner les tâches +CloneContacts=Cloner les contacts +CloneNotes=Cloner les notes +CloneProjectFiles=Cloner les pièces jointes du projet +CloneTaskFiles=Cloner les pièces jointes des tâche(s) (si tâche(s) cloner) +CloneMoveDate=Mettre à jour les dates projet/tâches à partir de maintenant +ConfirmCloneProject=Êtes-vous sûr de vouloir cloner ce projet ? +ProjectReportDate=Reporter les dates des tâches en fonction de la date de départ. +ErrorShiftTaskDate=Une erreur s'est produite dans le report des dates des tâches. +ProjectsAndTasksLines=Projets et tâches +ProjectCreatedInDolibarr=Projet %s créé +ProjectModifiedInDolibarr=Projet %s modifié +TaskCreatedInDolibarr=Tâche %s créée +TaskModifiedInDolibarr=Tâche %s modifiée +TaskDeletedInDolibarr=Tâche %s supprimée +OpportunityStatus=Statut opportunité +OpportunityStatusShort=Status opp. +OpportunityProbability=Probabilité d'opportunité +OpportunityProbabilityShort=Prob. opp. +OpportunityAmount=Montant opportunité +OpportunityAmountShort=Montant Opp. +OpportunityAmountAverageShort=montant moyen des opportunités +OpportunityAmountWeigthedShort=Montant pondéré des opportunités +WonLostExcluded=hors opportunités remportées/perdues +##### Types de contacts ##### +TypeContact_project_internal_PROJECTLEADER=Chef de projet +TypeContact_project_external_PROJECTLEADER=Chef de projet +TypeContact_project_internal_PROJECTCONTRIBUTOR=Contributeur +TypeContact_project_external_PROJECTCONTRIBUTOR=Contributeur +TypeContact_project_task_internal_TASKEXECUTIVE=Responsable +TypeContact_project_task_external_TASKEXECUTIVE=Responsable +TypeContact_project_task_internal_TASKCONTRIBUTOR=Contributeur +TypeContact_project_task_external_TASKCONTRIBUTOR=Contributeur +SelectElement=Séléctionnez l'élément +AddElement=Associer l'élément +# Documents models +DocumentModelBeluga=Modèle de document de rapport pour l'aperçu projet +DocumentModelBaleine=Modèles de document de rapport de tâches de projets +PlannedWorkload=Charge de travail prévue +PlannedWorkloadShort=Charge de travail +ProjectReferers=Objets associés +ProjectMustBeValidatedFirst=Le projet doit être validé d'abord +FirstAddRessourceToAllocateTime=Affecter un utilisateur pour saisir des temps +InputPerDay=Saisie par jour +InputPerWeek=Saisie par semaine +InputPerAction=Saisie par action +TimeAlreadyRecorded=Temps consommé déjà enregistré pour cette tâche/jour et utilisateur %s +ProjectsWithThisUserAsContact=Projets avec cet utilisateur comme contact +TasksWithThisUserAsContact=Tâches assignées à cet utilisateur +ResourceNotAssignedToProject=Non assigné à un projet +ResourceNotAssignedToTheTask=Non assigné à la tache +AssignTaskToMe=M'assigner la tâche +AssignTask=Assigner +ProjectOverview=Vue d'ensemble +ManageTasks=Utiliser les projets pour suivre les tâches +ManageOpportunitiesStatus=Utiliser les projets pour suivre les affaires / opportunités +ProjectNbProjectByMonth=Nb de projets créés par mois +ProjectOppAmountOfProjectsByMonth=Montant des opportunités par mois +ProjectWeightedOppAmountOfProjectsByMonth=Montant pondéré des opportunités par mois +ProjectOpenedProjectByOppStatus=Opportunités/affaires ouvertes par statut +ProjectsStatistics=Statistics sur les projets +TaskAssignedToEnterTime=Tâche assignée. La saisie de temps sur cette tâche devrait être possible. +IdTaskTime=Id ligne de temps +YouCanCompleteRef=SI vous souhaitez compléter la référence avec d'autres informations filtrables, il est recommandé d'ajouter le caractère - entre les données. La numérotation automatique sera alors fonctionnelle pour le prochain compteur. Par exemple %s-ABC. Il est également possible d'ajouter des mots-clés dans le libellé. Il est cependant recommandé d'utiliser un attribut supplémentaire ou extrafield. +OpenedProjectsByThirdparties=Projets ouverts par tiers +OnlyOpportunitiesShort=Opportunités uniquement +OpenedOpportunitiesShort=Opportunités ouvertes +NotAnOpportunityShort=Non une opportunité +OpportunityTotalAmount=Montant total des opportunités +OpportunityPonderatedAmount=Montant pondéré des opportunités +OpportunityPonderatedAmountDesc=Montant des opportunités pondéré par la probabilité +OppStatusPROSP=Prospection +OppStatusQUAL=Qualification +OppStatusPROPO=Proposition +OppStatusNEGO=Négociation +OppStatusPENDING=En attente +OppStatusWON=Gagné +OppStatusLOST=Perdu +Budget=Budget diff --git a/htdocs/langs/fr_NC/sendings.lang b/htdocs/langs/fr_NC/sendings.lang new file mode 100644 index 0000000000000..5c3974dc11c8a --- /dev/null +++ b/htdocs/langs/fr_NC/sendings.lang @@ -0,0 +1,71 @@ +# Dolibarr language file - Source file is en_US - sendings +RefSending=Réf. expédition +Sending=Expédition +Sendings=Expéditions +AllSendings=Toutes les expéditions +Shipment=Expédition +Shipments=Expéditions +ShowSending=Afficher Expéditions +Receivings=Bons de réceptions +SendingsArea=Espace expéditions +ListOfSendings=Liste des expéditions +SendingMethod=Méthode d'expédition +LastSendings=Les %s dernières expéditions +StatisticsOfSendings=Statistiques des expéditions +NbOfSendings=Nombre d'expéditions +NumberOfShipmentsByMonth=Nombre d'expéditions par mois +SendingCard=Fiche expédition +NewSending=Nouvelle expédition +CreateShipment=Créer expédition +QtyShipped=Qté. expédiée +QtyPreparedOrShipped=Quantité préparée ou envoyée +QtyToShip=Qté. à expédier +QtyReceived=Qté. reçue +QtyInOtherShipments=Qté dans les autres expéditions +KeepToShip=Reste à expédier +OtherSendingsForSameOrder=Autres expéditions pour cette commande +SendingsAndReceivingForSameOrder=Expéditions et réceptions pour cette commande +SendingsToValidate=Expéditions à valider +StatusSendingCanceled=Annulée +StatusSendingDraft=Brouillon +StatusSendingValidated=Validée (produits à envoyer ou envoyés) +StatusSendingProcessed=Traitée +StatusSendingDraftShort=Brouillon +StatusSendingValidatedShort=Validée +StatusSendingProcessedShort=Traitée +SendingSheet=Fiche expédition +ConfirmDeleteSending=Êtes-vous sûr de vouloir supprimer cette expédition ? +ConfirmValidateSending=Êtes-vous sûr de vouloir valider cette expédition sous la référence %s? +ConfirmCancelSending=Êtes-vous sûr de vouloir annuler cette expédition ? +DocumentModelSimple=Modèle simple +DocumentModelMerou=Modèle Merou A5 +WarningNoQtyLeftToSend=Alerte, aucun produit en attente d'expédition. +StatsOnShipmentsOnlyValidated=Statistiques effectuées sur les expéditions validées uniquement. La date prise en compte est la date de validation (la date de prévision de livraison n'étant pas toujours renseignée). +DateDeliveryPlanned=Date prévue de livraison +RefDeliveryReceipt=Ref bon de réception +StatusReceipt=Status du bon de réception +DateReceived=Date de réception réelle +SendShippingByEMail=Envoyer bon d'expédition par email +SendShippingRef=Envoi du bordereau d'expédition %s +ActionsOnShipping=Événements sur l'expédition +LinkToTrackYourPackage=Lien pour le suivi de votre colis +ShipmentCreationIsDoneFromOrder=Pour le moment, la création d'une nouvelle expédition se fait depuis la fiche commande. +ShipmentLine=Ligne d'expédition +ProductQtyInCustomersOrdersRunning=Quantité de produit en commandes client ouvertes +ProductQtyInSuppliersOrdersRunning=Quantité de produit en commandes fournisseur ouvertes +ProductQtyInShipmentAlreadySent=Quantité du produit parmi les commandes clients déjà envoyées +ProductQtyInSuppliersShipmentAlreadyRecevied=Quantité de produit déjà reçu en commandes fournisseur ouvertes +NoProductToShipFoundIntoStock=Aucun produit à expédier n'a été trouver dans l'entrepôt %s. Corrigez l'inventaire ou retourner choisir un autre entrepôt. +WeightVolShort=Poids/vol. +ValidateOrderFirstBeforeShipment=Vous devez d'abord valider la commande pour pouvoir créer une expédition. + +# Sending methods +# ModelDocument +DocumentModelTyphon=Modèle de bon de réception/livraison complet (logo…) +Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constante EXPEDITION_ADDON_NUMBER non définie +SumOfProductVolumes=Somme des volumes des produits +SumOfProductWeights=Somme des poids des produits + +# warehouse details +DetailWarehouseNumber= Détail de l'entrepôt +DetailWarehouseFormat= W:%s (Qté : %d) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index f745c71d76152..93e15f2fe775b 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -43,6 +43,7 @@ if (! empty($conf->fournisseur->enabled)) require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; if (! empty($conf->contrat->enabled)) require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; if (! empty($conf->ficheinter->enabled)) require_once DOL_DOCUMENT_ROOT.'/fichinter/class/fichinter.class.php'; +if (! empty($conf->expedition->enabled)) require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php'; if (! empty($conf->deplacement->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/deplacement/class/deplacement.class.php'; if (! empty($conf->expensereport->enabled)) require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; if (! empty($conf->agenda->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; @@ -341,6 +342,17 @@ 'buttonnew'=>'AddIntervention', 'testnew'=>$user->rights->ficheinter->creer, 'test'=>$conf->ficheinter->enabled && $user->rights->ficheinter->lire), +'shipping'=>array( + 'name'=>"Shippings", + 'title'=>"ListShippingAssociatedProject", + 'class'=>'Expedition', + 'table'=>'expedition', + 'datefieldname'=>'date_valid', + 'urlnew'=>DOL_URL_ROOT.'/expedition/card.php?action=create&origin=project&originid='.$id.'&socid='.$socid, + 'lang'=>'sendings', + 'buttonnew'=>'CreateShipment', + 'testnew'=>0, + 'test'=>$conf->expedition->enabled && $user->rights->expedition->lire), 'trip'=>array( 'name'=>"TripsAndExpenses", 'title'=>"ListExpenseReportsAssociatedProject", From a2764bc4c2e6dc5de914dd1fb78082dde3b8d380 Mon Sep 17 00:00:00 2001 From: absys Date: Fri, 19 May 2017 18:14:42 +1100 Subject: [PATCH 3/3] Fix indent. --- htdocs/expedition/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 8924577009f7c..2bf63907d68e4 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -191,7 +191,7 @@ $object->note = GETPOST('note','alpha'); $object->origin = $origin; $object->origin_id = $origin_id; - $object->fk_project = GETPOST('projectid'); + $object->fk_project = GETPOST('projectid'); $object->weight = GETPOST('weight','int')==''?"NULL":GETPOST('weight','int'); $object->sizeH = GETPOST('sizeH','int')==''?"NULL":GETPOST('sizeH','int'); $object->sizeW = GETPOST('sizeW','int')==''?"NULL":GETPOST('sizeW','int');