First commit waiting for Budget Alert
This commit is contained in:
16
modules/axelor-open-suite/axelor-crm/build.gradle
Normal file
16
modules/axelor-open-suite/axelor-crm/build.gradle
Normal file
@ -0,0 +1,16 @@
|
||||
apply plugin: "com.axelor.app-module"
|
||||
|
||||
apply from: "../version.gradle"
|
||||
|
||||
apply {
|
||||
version = openSuiteVersion
|
||||
}
|
||||
|
||||
axelor {
|
||||
title "Axelor CRM"
|
||||
description "Axelor CRM Module"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile project(":modules:axelor-base")
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.db.repo;
|
||||
|
||||
import com.axelor.apps.crm.db.CrmBatch;
|
||||
|
||||
public class CrmBatchCrmRepository extends CrmBatchRepository {
|
||||
|
||||
@Override
|
||||
public CrmBatch copy(CrmBatch entity, boolean deep) {
|
||||
CrmBatch copy = super.copy(entity, deep);
|
||||
copy.setBatchList(null);
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,128 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.db.repo;
|
||||
|
||||
import com.axelor.apps.base.db.ICalendarUser;
|
||||
import com.axelor.apps.base.db.repo.ICalendarEventRepository;
|
||||
import com.axelor.apps.base.db.repo.ICalendarUserRepository;
|
||||
import com.axelor.apps.base.ical.ICalendarService;
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.crm.service.CalendarService;
|
||||
import com.axelor.apps.crm.service.EventService;
|
||||
import com.axelor.auth.AuthUtils;
|
||||
import com.axelor.auth.db.User;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.inject.Inject;
|
||||
import java.util.List;
|
||||
|
||||
public class EventManagementRepository extends EventRepository {
|
||||
|
||||
@Inject protected ICalendarService calendarService;
|
||||
|
||||
@Override
|
||||
public Event copy(Event entity, boolean deep) {
|
||||
int eventType = entity.getTypeSelect();
|
||||
switch (eventType) {
|
||||
case 1: // call
|
||||
case 2: // metting
|
||||
break;
|
||||
case 3: // task s
|
||||
entity.setStatusSelect(EventRepository.STATUS_NOT_STARTED);
|
||||
break;
|
||||
}
|
||||
return super.copy(entity, deep);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Event save(Event entity) {
|
||||
if (entity.getTypeSelect() == EventRepository.TYPE_MEETING) {
|
||||
super.save(entity);
|
||||
Beans.get(EventService.class).manageFollowers(entity);
|
||||
}
|
||||
User creator = entity.getCreatedBy();
|
||||
if (creator == null) {
|
||||
creator = AuthUtils.getUser();
|
||||
}
|
||||
if (entity.getOrganizer() == null && creator != null) {
|
||||
if (creator.getPartner() != null && creator.getPartner().getEmailAddress() != null) {
|
||||
String email = creator.getPartner().getEmailAddress().getAddress();
|
||||
if (!Strings.isNullOrEmpty(email)) {
|
||||
ICalendarUser organizer =
|
||||
Beans.get(ICalendarUserRepository.class)
|
||||
.all()
|
||||
.filter("self.email = ?1 AND self.user.id = ?2", email, creator.getId())
|
||||
.fetchOne();
|
||||
if (organizer == null) {
|
||||
organizer = new ICalendarUser();
|
||||
organizer.setEmail(email);
|
||||
organizer.setName(creator.getFullName());
|
||||
organizer.setUser(creator);
|
||||
}
|
||||
entity.setOrganizer(organizer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
entity.setSubjectTeam(entity.getSubject());
|
||||
if (entity.getVisibilitySelect() == ICalendarEventRepository.VISIBILITY_PRIVATE) {
|
||||
entity.setSubjectTeam(I18n.get("Available"));
|
||||
if (entity.getDisponibilitySelect() == ICalendarEventRepository.DISPONIBILITY_BUSY) {
|
||||
entity.setSubjectTeam(I18n.get("Busy"));
|
||||
}
|
||||
}
|
||||
|
||||
return super.save(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(Event entity) {
|
||||
remove(entity, true);
|
||||
}
|
||||
|
||||
public void remove(Event entity, boolean removeRemote) {
|
||||
|
||||
try {
|
||||
|
||||
if (entity.getCalendar() == null && Strings.isNullOrEmpty(entity.getUid())) {
|
||||
// Not a synchronized event
|
||||
super.remove(entity);
|
||||
return;
|
||||
}
|
||||
|
||||
User user = AuthUtils.getUser();
|
||||
List<Long> calendarIdlist = Beans.get(CalendarService.class).showSharedCalendars(user);
|
||||
if (calendarIdlist.isEmpty() || !calendarIdlist.contains(entity.getCalendar().getId())) {
|
||||
throw new AxelorException(
|
||||
entity,
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get("You don't have the rights to delete this event"));
|
||||
}
|
||||
|
||||
calendarService.removeEventFromIcal(entity);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(e);
|
||||
}
|
||||
|
||||
entity.setArchived(true);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.db.repo;
|
||||
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.crm.service.LeadService;
|
||||
import com.axelor.inject.Beans;
|
||||
|
||||
public class LeadManagementRepository extends LeadRepository {
|
||||
|
||||
@Override
|
||||
public Lead save(Lead entity) {
|
||||
|
||||
if (entity.getUser() != null && entity.getStatusSelect() == LEAD_STATUS_NEW) {
|
||||
entity.setStatusSelect(LEAD_STATUS_ASSIGNED);
|
||||
} else if (entity.getUser() == null && entity.getStatusSelect() == LEAD_STATUS_ASSIGNED) {
|
||||
entity.setStatusSelect(LEAD_STATUS_NEW);
|
||||
}
|
||||
|
||||
String fullName =
|
||||
Beans.get(LeadService.class)
|
||||
.processFullName(entity.getEnterpriseName(), entity.getName(), entity.getFirstName());
|
||||
entity.setFullName(fullName);
|
||||
|
||||
return super.save(entity);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.db.repo;
|
||||
|
||||
import com.axelor.apps.crm.db.Opportunity;
|
||||
|
||||
public class OpportunityManagementRepository extends OpportunityRepository {
|
||||
@Override
|
||||
public Opportunity copy(Opportunity entity, boolean deep) {
|
||||
Opportunity copy = super.copy(entity, deep);
|
||||
copy.setSalesStageSelect(OpportunityRepository.SALES_STAGE_NEW);
|
||||
copy.setLostReason(null);
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.db.report;
|
||||
|
||||
public interface IReport {
|
||||
|
||||
public static final String LEAD = "Lead.rptdesign";
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.db.report;
|
||||
|
||||
public interface ITranslation {
|
||||
|
||||
public static final String LEAD_HEADER = /*$$(*/ "Lead.header"; /*)*/
|
||||
public static final String LEAD_NAME = /*$$(*/ "Lead.name"; /*)*/
|
||||
public static final String LEAD_TITLE = /*$$(*/ "Lead.title"; /*)*/
|
||||
public static final String LEAD_EMAIL = /*$$(*/ "Lead.email"; /*)*/
|
||||
public static final String LEAD_PHONE = /*$$(*/ "Lead.phone"; /*)*/
|
||||
public static final String LEAD_FAX = /*$$(*/ "Lead.fax"; /*)*/
|
||||
public static final String LEAD_LEAD_OWNER = /*$$(*/ "Lead.lead_owner"; /*)*/
|
||||
public static final String LEAD_COMPANY = /*$$(*/ "Lead.company"; /*)*/
|
||||
public static final String LEAD_INDUSTRY = /*$$(*/ "Lead.industry"; /*)*/
|
||||
public static final String LEAD_SOURCE = /*$$(*/ "Lead.source"; /*)*/
|
||||
public static final String LEAD_STATUS = /*$$(*/ "Lead.status"; /*)*/
|
||||
public static final String LEAD_ADDRESS_INFORMATION = /*$$(*/ "Lead.address_information"; /*)*/
|
||||
public static final String LEAD_PRIMARY_ADDRESS = /*$$(*/ "Lead.primary_address"; /*)*/
|
||||
public static final String LEAD_OTHER_ADDRESS = /*$$(*/ "Lead.other_address"; /*)*/
|
||||
}
|
||||
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/** */
|
||||
package com.axelor.apps.crm.exception;
|
||||
|
||||
/** @author axelor */
|
||||
public interface IExceptionMessage {
|
||||
|
||||
/** Target service */
|
||||
static final String TARGET_1 = /*$$(*/
|
||||
"Objective %s is in contradiction with objective's configuration %s" /*)*/;
|
||||
|
||||
/** Batch event reminder */
|
||||
static final String BATCH_EVENT_REMINDER_1 = /*$$(*/ "Event reminder %s" /*)*/;
|
||||
|
||||
static final String BATCH_EVENT_REMINDER_2 = /*$$(*/
|
||||
"Event's reminder's generation's reporting :" /*)*/;
|
||||
static final String BATCH_EVENT_REMINDER_3 = /*$$(*/ "Reminder(s) treated" /*)*/;
|
||||
|
||||
/** Batch event reminder message */
|
||||
static final String BATCH_EVENT_REMINDER_MESSAGE_1 = /*$$(*/ "Reminder(s) treated" /*)*/;
|
||||
|
||||
/** Batch target */
|
||||
static final String BATCH_TARGET_1 = /*$$(*/ "Event reminder %s" /*)*/;
|
||||
|
||||
static final String BATCH_TARGET_2 = /*$$(*/ "Objectives' generation's reporting :" /*)*/;
|
||||
static final String BATCH_TARGET_3 = /*$$(*/ "Treated objectives reporting" /*)*/;
|
||||
|
||||
/** Convert lead wizard controller */
|
||||
static final String CONVERT_LEAD_1 = /*$$(*/ "Lead converted" /*)*/;
|
||||
|
||||
static final String CONVERT_LEAD_MISSING = /*$$(*/ "Parent lead is missing." /*)*/;
|
||||
static final String CONVERT_LEAD_ERROR = /*$$(*/ "Error in lead conversion" /*)*/;
|
||||
|
||||
static final String LEAD_PARTNER_MISSING_ADDRESS = /*$$(*/
|
||||
"Please complete the partner address." /*)*/;
|
||||
static final String LEAD_CONTACT_MISSING_ADDRESS = /*$$(*/
|
||||
"Please complete the contact address." /*)*/;
|
||||
|
||||
/** Event controller */
|
||||
static final String EVENT_1 = /*$$(*/ "Input location please" /*)*/;
|
||||
|
||||
static final String EVENT_SAVED = /*$$(*/
|
||||
"Please save the event before setting the recurrence" /*)*/;
|
||||
|
||||
static final String EVENT_MEETING_INVITATION_1 = /*$$(*/
|
||||
"No PERSON IS INVITED TO THIS MEETING" /*)*/;
|
||||
|
||||
static final String USER_EMAIL_1 = /*$$(*/ "No email address associated to %s" /*)*/;
|
||||
|
||||
/** Lead controller */
|
||||
static final String LEAD_1 = /*$$(*/ "Please select the Lead(s) to print." /*)*/;
|
||||
|
||||
static final String LEAD_4 = /*$$(*/ "No lead import configuration found" /*)*/;
|
||||
static final String LEAD_5 = /*$$(*/ "Import lead" /*)*/;
|
||||
|
||||
/** Opportunity */
|
||||
static final String LEAD_PARTNER = /*$$(*/ "Please select a lead" /*)*/;
|
||||
|
||||
/** Configuration */
|
||||
static final String CRM_CONFIG_1 = /*$$(*/
|
||||
"Please configure informations for CRM for company %s" /*)*/;
|
||||
|
||||
static final String CRM_CONFIG_USER_EMAIL = /*$$(*/
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured." /*)*/;
|
||||
static final String CRM_CONFIG_USER_COMPANY = /*$$(*/
|
||||
"User %s must have an active company to use templates" /*)*/;
|
||||
static final String CRM_CONFIG_TEMPLATES = /*$$(*/
|
||||
"Please configure all templates in CRM configuration for company %s" /*)*/;
|
||||
static final String CRM_CONFIG_TEMPLATES_NONE = /*$$(*/
|
||||
"No template created in CRM configuration for company %s, emails have not been sent" /*)*/;
|
||||
|
||||
/*
|
||||
* Recurrence
|
||||
*/
|
||||
static final String RECURRENCE_RECURRENCE_TYPE = /*$$(*/
|
||||
"You must choose a recurrence type" /*)*/;
|
||||
static final String RECURRENCE_PERIODICITY = /*$$(*/ "Periodicity must be greater than 0" /*)*/;
|
||||
static final String RECURRENCE_DAYS_CHECKED = /*$$(*/
|
||||
"You must choose at least one day in the week" /*)*/;
|
||||
static final String RECURRENCE_REPETITION_NUMBER = /*$$(*/
|
||||
"The number of repetitions must be greater than 0" /*)*/;
|
||||
static final String RECURRENCE_END_DATE = /*$$(*/
|
||||
"The end date must be after the start date" /*)*/;
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.job;
|
||||
|
||||
import com.axelor.apps.base.job.ThreadedJob;
|
||||
import com.axelor.apps.base.job.UncheckedJobExecutionException;
|
||||
import com.axelor.apps.crm.db.repo.CrmBatchRepository;
|
||||
import com.axelor.apps.crm.service.batch.CrmBatchService;
|
||||
import com.axelor.inject.Beans;
|
||||
import org.quartz.JobExecutionContext;
|
||||
|
||||
public class EventReminderJob extends ThreadedJob {
|
||||
|
||||
@Override
|
||||
public void executeInThread(JobExecutionContext context) {
|
||||
try {
|
||||
Beans.get(CrmBatchService.class).run(CrmBatchRepository.CODE_BATCH_EVENT_REMINDER);
|
||||
} catch (Exception e) {
|
||||
throw new UncheckedJobExecutionException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.message;
|
||||
|
||||
import com.axelor.apps.base.service.message.MessageServiceBaseImpl;
|
||||
import com.axelor.apps.base.service.user.UserService;
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.crm.db.repo.EventRepository;
|
||||
import com.axelor.apps.crm.service.config.CrmConfigService;
|
||||
import com.axelor.apps.message.db.Message;
|
||||
import com.axelor.apps.message.db.Template;
|
||||
import com.axelor.apps.message.db.repo.MessageRepository;
|
||||
import com.axelor.apps.message.service.TemplateMessageService;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.meta.db.repo.MetaAttachmentRepository;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.io.IOException;
|
||||
|
||||
public class MessageServiceCrmImpl extends MessageServiceBaseImpl {
|
||||
|
||||
@Inject
|
||||
public MessageServiceCrmImpl(
|
||||
MetaAttachmentRepository metaAttachmentRepository,
|
||||
MessageRepository messageRepository,
|
||||
UserService userService) {
|
||||
super(metaAttachmentRepository, messageRepository, userService);
|
||||
}
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public Message createMessage(Event event)
|
||||
throws AxelorException, ClassNotFoundException, InstantiationException,
|
||||
IllegalAccessException, IOException {
|
||||
|
||||
// Get template depending on event type
|
||||
Template template = null;
|
||||
|
||||
switch (event.getTypeSelect()) {
|
||||
case EventRepository.TYPE_EVENT:
|
||||
template =
|
||||
Beans.get(CrmConfigService.class)
|
||||
.getCrmConfig(event.getUser().getActiveCompany())
|
||||
.getEventTemplate();
|
||||
break;
|
||||
|
||||
case EventRepository.TYPE_CALL:
|
||||
template =
|
||||
Beans.get(CrmConfigService.class)
|
||||
.getCrmConfig(event.getUser().getActiveCompany())
|
||||
.getCallTemplate();
|
||||
break;
|
||||
|
||||
case EventRepository.TYPE_MEETING:
|
||||
template =
|
||||
Beans.get(CrmConfigService.class)
|
||||
.getCrmConfig(event.getUser().getActiveCompany())
|
||||
.getMeetingTemplate();
|
||||
break;
|
||||
|
||||
case EventRepository.TYPE_TASK:
|
||||
template =
|
||||
Beans.get(CrmConfigService.class)
|
||||
.getCrmConfig(event.getUser().getActiveCompany())
|
||||
.getTaskTemplate();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Message message = Beans.get(TemplateMessageService.class).generateMessage(event, template);
|
||||
|
||||
return messageRepository.save(message);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.module;
|
||||
|
||||
import com.axelor.app.AxelorModule;
|
||||
import com.axelor.apps.base.db.repo.ICalendarRepository;
|
||||
import com.axelor.apps.base.ical.ICalendarEventFactory;
|
||||
import com.axelor.apps.base.ical.ICalendarService;
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.crm.db.repo.CrmBatchCrmRepository;
|
||||
import com.axelor.apps.crm.db.repo.CrmBatchRepository;
|
||||
import com.axelor.apps.crm.db.repo.EventManagementRepository;
|
||||
import com.axelor.apps.crm.db.repo.EventRepository;
|
||||
import com.axelor.apps.crm.db.repo.LeadManagementRepository;
|
||||
import com.axelor.apps.crm.db.repo.LeadRepository;
|
||||
import com.axelor.apps.crm.db.repo.OpportunityManagementRepository;
|
||||
import com.axelor.apps.crm.db.repo.OpportunityRepository;
|
||||
import com.axelor.apps.crm.service.CalendarService;
|
||||
import com.axelor.apps.crm.service.EventService;
|
||||
import com.axelor.apps.crm.service.EventServiceImpl;
|
||||
import com.axelor.apps.crm.service.LeadService;
|
||||
import com.axelor.apps.crm.service.LeadServiceImpl;
|
||||
import com.axelor.apps.crm.service.OpportunityService;
|
||||
import com.axelor.apps.crm.service.OpportunityServiceImpl;
|
||||
import com.axelor.apps.crm.service.app.AppCrmService;
|
||||
import com.axelor.apps.crm.service.app.AppCrmServiceImpl;
|
||||
|
||||
public class CrmModule extends AxelorModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(EventRepository.class).to(EventManagementRepository.class);
|
||||
bind(LeadRepository.class).to(LeadManagementRepository.class);
|
||||
bind(OpportunityRepository.class).to(OpportunityManagementRepository.class);
|
||||
bind(OpportunityService.class).to(OpportunityServiceImpl.class);
|
||||
bind(ICalendarService.class).to(CalendarService.class);
|
||||
bind(AppCrmService.class).to(AppCrmServiceImpl.class);
|
||||
bind(EventService.class).to(EventServiceImpl.class);
|
||||
bind(CrmBatchRepository.class).to(CrmBatchCrmRepository.class);
|
||||
bind(LeadService.class).to(LeadServiceImpl.class);
|
||||
ICalendarEventFactory.register(ICalendarRepository.CRM_SYNCHRO, Event::new);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service;
|
||||
|
||||
import com.axelor.apps.base.db.CalendarManagement;
|
||||
import com.axelor.apps.base.db.ICalendar;
|
||||
import com.axelor.apps.base.db.repo.ICalendarRepository;
|
||||
import com.axelor.apps.base.ical.ICalendarService;
|
||||
import com.axelor.auth.db.User;
|
||||
import com.axelor.team.db.Team;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.inject.Inject;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CalendarService extends ICalendarService {
|
||||
|
||||
@Inject private ICalendarRepository icalRepo;
|
||||
|
||||
public List<Long> showSharedCalendars(User user) {
|
||||
Team team = user.getActiveTeam();
|
||||
Set<User> followedUsers = user.getFollowersCalUserSet();
|
||||
List<Long> calendarIdlist = new ArrayList<Long>();
|
||||
|
||||
for (User userIt : followedUsers) {
|
||||
for (CalendarManagement calendarManagement : userIt.getCalendarManagementList()) {
|
||||
if ((user.equals(calendarManagement.getUser()))
|
||||
|| (team != null && team.equals(calendarManagement.getTeam()))) {
|
||||
List<ICalendar> icalList =
|
||||
icalRepo.all().filter("self.user.id = ?1", userIt.getId()).fetch();
|
||||
calendarIdlist.addAll(Lists.transform(icalList, it -> it.getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
List<ICalendar> icalList = icalRepo.all().filter("self.user.id = ?1", user.getId()).fetch();
|
||||
calendarIdlist.addAll(Lists.transform(icalList, it -> it.getId()));
|
||||
return calendarIdlist;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,143 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service;
|
||||
|
||||
import com.axelor.apps.base.db.Address;
|
||||
import com.axelor.apps.base.db.Company;
|
||||
import com.axelor.apps.base.db.Country;
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.base.db.repo.CountryRepository;
|
||||
import com.axelor.apps.base.service.AddressService;
|
||||
import com.axelor.apps.base.service.PartnerService;
|
||||
import com.axelor.apps.base.service.app.AppBaseService;
|
||||
import com.axelor.apps.base.service.wizard.ConvertWizardService;
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.message.db.EmailAddress;
|
||||
import com.axelor.auth.AuthUtils;
|
||||
import com.axelor.db.mapper.Mapper;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.google.inject.Inject;
|
||||
import java.util.Map;
|
||||
|
||||
public class ConvertLeadWizardService {
|
||||
|
||||
@Inject private LeadService leadService;
|
||||
|
||||
@Inject private ConvertWizardService convertWizardService;
|
||||
|
||||
@Inject private AddressService addressService;
|
||||
|
||||
@Inject private PartnerService partnerService;
|
||||
|
||||
@Inject private CountryRepository countryRepo;
|
||||
|
||||
@Inject private AppBaseService appBaseService;
|
||||
|
||||
/**
|
||||
* Create a partner from a lead
|
||||
*
|
||||
* @param lead
|
||||
* @return
|
||||
* @throws AxelorException
|
||||
*/
|
||||
public Partner createPartner(Map<String, Object> context, Address primaryAddress)
|
||||
throws AxelorException {
|
||||
|
||||
Mapper mapper = Mapper.of(Partner.class);
|
||||
Partner partner = Mapper.toBean(Partner.class, null);
|
||||
|
||||
partner = (Partner) convertWizardService.createObject(context, partner, mapper);
|
||||
|
||||
this.setEmailAddress(partner);
|
||||
|
||||
if (appBaseService.getAppBase().getGeneratePartnerSequence()) {
|
||||
partner.setPartnerSeq(leadService.getSequence());
|
||||
}
|
||||
|
||||
partnerService.setPartnerFullName(partner);
|
||||
|
||||
this.setAddress(partner, primaryAddress);
|
||||
|
||||
Company activeCompany = AuthUtils.getUser().getActiveCompany();
|
||||
if (activeCompany != null) {
|
||||
partner.addCompanySetItem(activeCompany);
|
||||
if (partner.getCurrency() == null) {
|
||||
partner.setCurrency(activeCompany.getCurrency());
|
||||
}
|
||||
}
|
||||
|
||||
return partner;
|
||||
}
|
||||
|
||||
public void setEmailAddress(Partner partner) {
|
||||
|
||||
EmailAddress emailAddress = partner.getEmailAddress();
|
||||
|
||||
if (emailAddress != null) {
|
||||
partner.setEmailAddress(this.createEmailAddress(emailAddress.getAddress(), null, partner));
|
||||
}
|
||||
}
|
||||
|
||||
public void setAddress(Partner partner, Address primaryAddress) {
|
||||
|
||||
if (primaryAddress != null) {
|
||||
primaryAddress.setFullName(addressService.computeFullName(primaryAddress));
|
||||
if (!partner.getIsContact()) {
|
||||
partnerService.addPartnerAddress(partner, primaryAddress, true, true, true);
|
||||
}
|
||||
partner.setMainAddress(primaryAddress);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Address createPrimaryAddress(Map<String, Object> context) {
|
||||
|
||||
String addressL4 = (String) context.get("primaryAddress");
|
||||
if (addressL4 == null) {
|
||||
return null;
|
||||
}
|
||||
String addressL5 = (String) context.get("primaryState");
|
||||
String addressL6 = context.get("primaryPostalCode") + " " + context.get("primaryCity");
|
||||
|
||||
Country addressL7Country = null;
|
||||
Map<String, Object> countryContext = (Map<String, Object>) context.get("primaryCountry");
|
||||
if (countryContext != null) {
|
||||
addressL7Country = countryRepo.find(((Integer) countryContext.get("id")).longValue());
|
||||
}
|
||||
|
||||
Address address =
|
||||
addressService.getAddress(null, null, addressL4, addressL5, addressL6, addressL7Country);
|
||||
|
||||
if (address == null) {
|
||||
address =
|
||||
addressService.createAddress(
|
||||
null, null, addressL4, addressL5, addressL6, addressL7Country);
|
||||
}
|
||||
|
||||
return address;
|
||||
}
|
||||
|
||||
public EmailAddress createEmailAddress(String address, Lead lead, Partner partner) {
|
||||
EmailAddress emailAddress = new EmailAddress();
|
||||
emailAddress.setAddress(address);
|
||||
emailAddress.setLead(lead);
|
||||
emailAddress.setPartner(partner);
|
||||
|
||||
return emailAddress;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service;
|
||||
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.crm.db.EventAttendee;
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
|
||||
public class EventAttendeeService {
|
||||
|
||||
public EventAttendee createEventAttendee(Event event, Lead lead, Partner contactPartner) {
|
||||
|
||||
EventAttendee eventAttendee = new EventAttendee();
|
||||
eventAttendee.setEvent(event);
|
||||
eventAttendee.setLead(lead);
|
||||
eventAttendee.setContactPartner(contactPartner);
|
||||
|
||||
eventAttendee.setName(this.getName(eventAttendee));
|
||||
|
||||
return eventAttendee;
|
||||
}
|
||||
|
||||
public String getName(EventAttendee eventAttendee) {
|
||||
|
||||
if (eventAttendee.getContactPartner() != null) {
|
||||
return eventAttendee.getContactPartner().getFullName();
|
||||
}
|
||||
if (eventAttendee.getLead() != null) {
|
||||
return eventAttendee.getLead().getFullName();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service;
|
||||
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.crm.db.RecurrenceConfiguration;
|
||||
import com.axelor.apps.message.db.EmailAddress;
|
||||
import com.axelor.auth.db.User;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import java.io.IOException;
|
||||
import javax.mail.MessagingException;
|
||||
import com.axelor.meta.CallMethod;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface EventService {
|
||||
|
||||
void saveEvent(Event event);
|
||||
|
||||
Event createEvent(
|
||||
LocalDateTime fromDateTime,
|
||||
LocalDateTime toDateTime,
|
||||
User user,
|
||||
String description,
|
||||
int type,
|
||||
String subject);
|
||||
|
||||
@CallMethod
|
||||
String getInvoicingAddressFullName(Partner partner);
|
||||
|
||||
void manageFollowers(Event event);
|
||||
|
||||
void addRecurrentEventsByDays(
|
||||
Event event, int periodicity, int endType, int repetitionsNumber, LocalDate endDate);
|
||||
|
||||
void addRecurrentEventsByWeeks(
|
||||
Event event,
|
||||
int periodicity,
|
||||
int endType,
|
||||
int repetitionsNumber,
|
||||
LocalDate endDate,
|
||||
Map<Integer, Boolean> daysCheckedMap);
|
||||
|
||||
void addRecurrentEventsByMonths(
|
||||
Event event,
|
||||
int periodicity,
|
||||
int endType,
|
||||
int repetitionsNumber,
|
||||
LocalDate endDate,
|
||||
int monthRepeatType);
|
||||
|
||||
void addRecurrentEventsByYears(
|
||||
Event event, int periodicity, int endType, int repetitionsNumber, LocalDate endDate);
|
||||
|
||||
void applyChangesToAll(Event event);
|
||||
|
||||
String computeRecurrenceName(RecurrenceConfiguration recurrConf);
|
||||
|
||||
void generateRecurrentEvents(Event event, RecurrenceConfiguration conf) throws AxelorException;
|
||||
|
||||
public EmailAddress getEmailAddress(Event event);
|
||||
|
||||
/**
|
||||
* Processs changed user password.
|
||||
*
|
||||
* @param Set<user>
|
||||
* @throws ClassNotFoundException
|
||||
* @throws InstantiationException
|
||||
* @throws IllegalAccessException
|
||||
* @throws MessagingException
|
||||
* @throws IOException
|
||||
* @throws AxelorException
|
||||
*/
|
||||
|
||||
void sendEmailMeetingInvitation(Event event,Set<User> users) throws ClassNotFoundException, InstantiationException, IllegalAccessException,
|
||||
MessagingException, IOException, AxelorException;
|
||||
}
|
||||
@ -0,0 +1,690 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service;
|
||||
|
||||
import com.axelor.apps.base.db.Address;
|
||||
import com.axelor.apps.base.db.AppBase;
|
||||
import com.axelor.apps.base.db.ICalendarUser;
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.base.db.repo.PartnerRepository;
|
||||
import com.axelor.apps.base.ical.ICalendarService;
|
||||
import com.axelor.apps.base.service.PartnerService;
|
||||
import com.axelor.apps.base.service.app.AppBaseService;
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.crm.db.RecurrenceConfiguration;
|
||||
import com.axelor.apps.crm.db.repo.EventRepository;
|
||||
import com.axelor.apps.crm.db.repo.LeadRepository;
|
||||
import com.axelor.apps.crm.db.repo.RecurrenceConfigurationRepository;
|
||||
import com.axelor.apps.crm.exception.IExceptionMessage;
|
||||
import com.axelor.apps.message.db.EmailAddress;
|
||||
import com.axelor.apps.message.db.Template;
|
||||
import com.axelor.apps.message.db.repo.EmailAddressRepository;
|
||||
import com.axelor.apps.message.service.MessageService;
|
||||
import com.axelor.apps.message.service.TemplateMessageService;
|
||||
import com.axelor.auth.db.User;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.mail.db.MailAddress;
|
||||
import com.axelor.mail.db.MailFollower;
|
||||
import com.axelor.mail.db.repo.MailAddressRepository;
|
||||
import com.axelor.mail.db.repo.MailFollowerRepository;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.io.IOException;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.mail.MessagingException;
|
||||
import org.apache.commons.math3.exception.TooManyIterationsException;
|
||||
|
||||
public class EventServiceImpl implements EventService {
|
||||
|
||||
private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd/MM/yyyy");
|
||||
|
||||
private static final DateTimeFormatter MONTH_FORMAT = DateTimeFormatter.ofPattern("dd/MM");
|
||||
|
||||
private PartnerService partnerService;
|
||||
|
||||
private EventRepository eventRepo;
|
||||
|
||||
@Inject private EmailAddressRepository emailAddressRepo;
|
||||
|
||||
@Inject private PartnerRepository partnerRepo;
|
||||
|
||||
@Inject private LeadRepository leadRepo;
|
||||
|
||||
private static final int ITERATION_LIMIT = 1000;
|
||||
|
||||
@Inject
|
||||
public EventServiceImpl(
|
||||
EventAttendeeService eventAttendeeService,
|
||||
PartnerService partnerService,
|
||||
EventRepository eventRepository,
|
||||
MailFollowerRepository mailFollowerRepo,
|
||||
ICalendarService iCalendarService,
|
||||
MessageService messageService,
|
||||
TemplateMessageService templateMessageService) {
|
||||
this.partnerService = partnerService;
|
||||
this.eventRepo = eventRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void saveEvent(Event event) {
|
||||
eventRepo.save(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Event createEvent(
|
||||
LocalDateTime fromDateTime,
|
||||
LocalDateTime toDateTime,
|
||||
User user,
|
||||
String description,
|
||||
int type,
|
||||
String subject) {
|
||||
Event event = new Event();
|
||||
event.setSubject(subject);
|
||||
event.setStartDateTime(fromDateTime);
|
||||
event.setEndDateTime(toDateTime);
|
||||
event.setUser(user);
|
||||
event.setTypeSelect(type);
|
||||
if (!Strings.isNullOrEmpty(description)) {
|
||||
event.setDescription(description);
|
||||
}
|
||||
|
||||
if (fromDateTime != null && toDateTime != null) {
|
||||
long duration = Duration.between(fromDateTime, toDateTime).getSeconds();
|
||||
event.setDuration(duration);
|
||||
}
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInvoicingAddressFullName(Partner partner) {
|
||||
|
||||
Address address = partnerService.getInvoicingAddress(partner);
|
||||
if (address != null) {
|
||||
return address.getFullName();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void manageFollowers(Event event) {
|
||||
MailFollowerRepository mailFollowerRepo = Beans.get(MailFollowerRepository.class);
|
||||
List<MailFollower> followers = mailFollowerRepo.findAll(event);
|
||||
List<ICalendarUser> attendeesSet = event.getAttendees();
|
||||
|
||||
if (followers != null) followers.forEach(x -> mailFollowerRepo.remove(x));
|
||||
mailFollowerRepo.follow(event, event.getUser());
|
||||
|
||||
if (attendeesSet != null) {
|
||||
for (ICalendarUser user : attendeesSet) {
|
||||
if (user.getUser() != null) {
|
||||
mailFollowerRepo.follow(event, user.getUser());
|
||||
} else {
|
||||
MailAddress mailAddress =
|
||||
Beans.get(MailAddressRepository.class).findOrCreate(user.getEmail(), user.getName());
|
||||
mailFollowerRepo.follow(event, mailAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addRecurrentEventsByDays(
|
||||
Event event, int periodicity, int endType, int repetitionsNumber, LocalDate endDate) {
|
||||
Event lastEvent = event;
|
||||
if (endType == RecurrenceConfigurationRepository.END_TYPE_REPET) {
|
||||
int repeated = 0;
|
||||
while (repeated != repetitionsNumber) {
|
||||
Event copy = eventRepo.copy(lastEvent, false);
|
||||
copy.setParentEvent(event);
|
||||
copy.setStartDateTime(copy.getStartDateTime().plusDays(periodicity));
|
||||
copy.setEndDateTime(copy.getEndDateTime().plusDays(periodicity));
|
||||
lastEvent = eventRepo.save(copy);
|
||||
repeated++;
|
||||
}
|
||||
} else {
|
||||
while (lastEvent
|
||||
.getStartDateTime()
|
||||
.plusDays(periodicity)
|
||||
.isBefore(endDate.atStartOfDay().plusDays(1))) {
|
||||
Event copy = eventRepo.copy(lastEvent, false);
|
||||
copy.setParentEvent(event);
|
||||
copy.setStartDateTime(copy.getStartDateTime().plusDays(periodicity));
|
||||
copy.setEndDateTime(copy.getEndDateTime().plusDays(periodicity));
|
||||
lastEvent = eventRepo.save(copy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addRecurrentEventsByWeeks(
|
||||
Event event,
|
||||
int periodicity,
|
||||
int endType,
|
||||
int repetitionsNumber,
|
||||
LocalDate endDate,
|
||||
Map<Integer, Boolean> daysCheckedMap) {
|
||||
|
||||
List<DayOfWeek> dayOfWeekList =
|
||||
daysCheckedMap.keySet().stream().sorted().map(DayOfWeek::of).collect(Collectors.toList());
|
||||
Duration duration = Duration.between(event.getStartDateTime(), event.getEndDateTime());
|
||||
Event lastEvent = event;
|
||||
BiFunction<Integer, LocalDateTime, Boolean> breakCondition;
|
||||
|
||||
if (endType == RecurrenceConfigurationRepository.END_TYPE_REPET) {
|
||||
breakCondition = (iteration, dateTime) -> iteration >= repetitionsNumber;
|
||||
} else {
|
||||
breakCondition = (iteration, dateTime) -> dateTime.toLocalDate().isAfter(endDate);
|
||||
}
|
||||
|
||||
boolean loop = true;
|
||||
|
||||
for (int iteration = 0; loop; ++iteration) {
|
||||
if (iteration > ITERATION_LIMIT) {
|
||||
throw new TooManyIterationsException(iteration);
|
||||
}
|
||||
|
||||
LocalDateTime nextStartDateTime = lastEvent.getStartDateTime().plusWeeks(periodicity - 1L);
|
||||
|
||||
for (DayOfWeek dayOfWeek : dayOfWeekList) {
|
||||
nextStartDateTime = nextStartDateTime.with(TemporalAdjusters.next(dayOfWeek));
|
||||
|
||||
if (breakCondition.apply(iteration, nextStartDateTime)) {
|
||||
loop = false;
|
||||
break;
|
||||
}
|
||||
|
||||
Event copy = eventRepo.copy(lastEvent, false);
|
||||
copy.setParentEvent(event);
|
||||
copy.setStartDateTime(nextStartDateTime);
|
||||
copy.setEndDateTime(nextStartDateTime.plus(duration));
|
||||
lastEvent = eventRepo.save(copy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addRecurrentEventsByMonths(
|
||||
Event event,
|
||||
int periodicity,
|
||||
int endType,
|
||||
int repetitionsNumber,
|
||||
LocalDate endDate,
|
||||
int monthRepeatType) {
|
||||
|
||||
int weekNo = 1 + (event.getStartDateTime().getDayOfMonth() - 1) / 7;
|
||||
Duration duration = Duration.between(event.getStartDateTime(), event.getEndDateTime());
|
||||
Event lastEvent = event;
|
||||
BiFunction<Integer, LocalDateTime, Boolean> breakConditionFunc;
|
||||
Function<LocalDateTime, LocalDateTime> nextStartDateTimeFunc;
|
||||
LocalDateTime nextStartDateTime;
|
||||
|
||||
if (endType == RecurrenceConfigurationRepository.END_TYPE_REPET) {
|
||||
breakConditionFunc = (iteration, dateTime) -> iteration >= repetitionsNumber;
|
||||
} else {
|
||||
breakConditionFunc = (iteration, dateTime) -> dateTime.toLocalDate().isAfter(endDate);
|
||||
}
|
||||
|
||||
if (monthRepeatType == RecurrenceConfigurationRepository.REPEAT_TYPE_MONTH) {
|
||||
nextStartDateTimeFunc =
|
||||
dateTime ->
|
||||
dateTime
|
||||
.withDayOfMonth(1)
|
||||
.plusMonths(periodicity)
|
||||
.withDayOfMonth(event.getStartDateTime().getDayOfMonth());
|
||||
} else {
|
||||
nextStartDateTimeFunc =
|
||||
dateTime -> {
|
||||
LocalDateTime baseNextDateTime = dateTime.withDayOfMonth(1).plusMonths(periodicity);
|
||||
dateTime =
|
||||
baseNextDateTime.with(
|
||||
TemporalAdjusters.dayOfWeekInMonth(
|
||||
weekNo, event.getStartDateTime().getDayOfWeek()));
|
||||
|
||||
if (!dateTime.getMonth().equals(baseNextDateTime.getMonth()) && weekNo > 1) {
|
||||
dateTime =
|
||||
baseNextDateTime.with(
|
||||
TemporalAdjusters.dayOfWeekInMonth(
|
||||
weekNo - 1, event.getStartDateTime().getDayOfWeek()));
|
||||
}
|
||||
|
||||
return dateTime;
|
||||
};
|
||||
}
|
||||
|
||||
for (int iteration = 0; ; ++iteration) {
|
||||
if (iteration > ITERATION_LIMIT) {
|
||||
throw new TooManyIterationsException(iteration);
|
||||
}
|
||||
|
||||
nextStartDateTime = nextStartDateTimeFunc.apply(lastEvent.getStartDateTime());
|
||||
|
||||
if (breakConditionFunc.apply(iteration, nextStartDateTime)) {
|
||||
break;
|
||||
}
|
||||
|
||||
Event copy = eventRepo.copy(lastEvent, false);
|
||||
copy.setParentEvent(event);
|
||||
copy.setStartDateTime(nextStartDateTime);
|
||||
copy.setEndDateTime(nextStartDateTime.plus(duration));
|
||||
lastEvent = eventRepo.save(copy);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addRecurrentEventsByYears(
|
||||
Event event, int periodicity, int endType, int repetitionsNumber, LocalDate endDate) {
|
||||
Event lastEvent = event;
|
||||
if (endType == RecurrenceConfigurationRepository.END_TYPE_REPET) {
|
||||
int repeated = 0;
|
||||
while (repeated != repetitionsNumber) {
|
||||
Event copy = eventRepo.copy(lastEvent, false);
|
||||
copy.setParentEvent(event);
|
||||
copy.setStartDateTime(copy.getStartDateTime().plusYears(periodicity));
|
||||
copy.setEndDateTime(copy.getEndDateTime().plusYears(periodicity));
|
||||
lastEvent = eventRepo.save(copy);
|
||||
repeated++;
|
||||
}
|
||||
} else {
|
||||
while (lastEvent
|
||||
.getStartDateTime()
|
||||
.plusYears(periodicity)
|
||||
.isBefore(endDate.atStartOfDay().plusYears(1))) {
|
||||
Event copy = eventRepo.copy(lastEvent, false);
|
||||
copy.setParentEvent(event);
|
||||
copy.setStartDateTime(copy.getStartDateTime().plusYears(periodicity));
|
||||
copy.setEndDateTime(copy.getEndDateTime().plusYears(periodicity));
|
||||
lastEvent = eventRepo.save(copy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void applyChangesToAll(Event event) {
|
||||
|
||||
Event child = eventRepo.all().filter("self.parentEvent.id = ?1", event.getId()).fetchOne();
|
||||
Event parent = event.getParentEvent();
|
||||
Event copyEvent = eventRepo.copy(event, false);
|
||||
while (child != null) {
|
||||
child.setSubject(event.getSubject());
|
||||
child.setCalendar(event.getCalendar());
|
||||
child.setStartDateTime(child.getStartDateTime().withHour(event.getStartDateTime().getHour()));
|
||||
child.setStartDateTime(
|
||||
child.getStartDateTime().withMinute(event.getStartDateTime().getMinute()));
|
||||
child.setEndDateTime(child.getEndDateTime().withHour(event.getEndDateTime().getHour()));
|
||||
child.setEndDateTime(child.getEndDateTime().withMinute(event.getEndDateTime().getMinute()));
|
||||
child.setDuration(event.getDuration());
|
||||
child.setUser(event.getUser());
|
||||
child.setTeam(event.getTeam());
|
||||
child.setDisponibilitySelect(event.getDisponibilitySelect());
|
||||
child.setVisibilitySelect(event.getVisibilitySelect());
|
||||
child.setDescription(event.getDescription());
|
||||
child.setPartner(event.getPartner());
|
||||
child.setContactPartner(event.getContactPartner());
|
||||
child.setLead(event.getLead());
|
||||
child.setTypeSelect(event.getTypeSelect());
|
||||
child.setLocation(event.getLocation());
|
||||
eventRepo.save(child);
|
||||
copyEvent = child;
|
||||
child = eventRepo.all().filter("self.parentEvent.id = ?1", copyEvent.getId()).fetchOne();
|
||||
}
|
||||
while (parent != null) {
|
||||
Event nextParent = parent.getParentEvent();
|
||||
parent.setSubject(event.getSubject());
|
||||
parent.setCalendar(event.getCalendar());
|
||||
parent.setStartDateTime(
|
||||
parent.getStartDateTime().withHour(event.getStartDateTime().getHour()));
|
||||
parent.setStartDateTime(
|
||||
parent.getStartDateTime().withMinute(event.getStartDateTime().getMinute()));
|
||||
parent.setEndDateTime(parent.getEndDateTime().withHour(event.getEndDateTime().getHour()));
|
||||
parent.setEndDateTime(parent.getEndDateTime().withMinute(event.getEndDateTime().getMinute()));
|
||||
parent.setDuration(event.getDuration());
|
||||
parent.setUser(event.getUser());
|
||||
parent.setTeam(event.getTeam());
|
||||
parent.setDisponibilitySelect(event.getDisponibilitySelect());
|
||||
parent.setVisibilitySelect(event.getVisibilitySelect());
|
||||
parent.setDescription(event.getDescription());
|
||||
parent.setPartner(event.getPartner());
|
||||
parent.setContactPartner(event.getContactPartner());
|
||||
parent.setLead(event.getLead());
|
||||
parent.setTypeSelect(event.getTypeSelect());
|
||||
parent.setLocation(event.getLocation());
|
||||
eventRepo.save(parent);
|
||||
parent = nextParent;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String computeRecurrenceName(RecurrenceConfiguration recurrConf) {
|
||||
String recurrName = "";
|
||||
switch (recurrConf.getRecurrenceType()) {
|
||||
case RecurrenceConfigurationRepository.TYPE_DAY:
|
||||
if (recurrConf.getPeriodicity() == 1) {
|
||||
recurrName += I18n.get("Every day");
|
||||
} else {
|
||||
recurrName += String.format(I18n.get("Every %d days"), recurrConf.getPeriodicity());
|
||||
}
|
||||
|
||||
if (recurrConf.getEndType() == RecurrenceConfigurationRepository.END_TYPE_REPET) {
|
||||
recurrName +=
|
||||
String.format(", " + I18n.get("%d times"), recurrConf.getRepetitionsNumber());
|
||||
} else if (recurrConf.getEndDate() != null) {
|
||||
recurrName +=
|
||||
", " + I18n.get("until the") + " " + recurrConf.getEndDate().format(DATE_FORMAT);
|
||||
}
|
||||
break;
|
||||
|
||||
case RecurrenceConfigurationRepository.TYPE_WEEK:
|
||||
if (recurrConf.getPeriodicity() == 1) {
|
||||
recurrName += I18n.get("Every week") + " ";
|
||||
} else {
|
||||
recurrName +=
|
||||
String.format(I18n.get("Every %d weeks") + " ", recurrConf.getPeriodicity());
|
||||
}
|
||||
if (recurrConf.getMonday()
|
||||
&& recurrConf.getTuesday()
|
||||
&& recurrConf.getWednesday()
|
||||
&& recurrConf.getThursday()
|
||||
&& recurrConf.getFriday()
|
||||
&& !recurrConf.getSaturday()
|
||||
&& !recurrConf.getSunday()) {
|
||||
recurrName += I18n.get("every week's day");
|
||||
} else if (recurrConf.getMonday()
|
||||
&& recurrConf.getTuesday()
|
||||
&& recurrConf.getWednesday()
|
||||
&& recurrConf.getThursday()
|
||||
&& recurrConf.getFriday()
|
||||
&& recurrConf.getSaturday()
|
||||
&& recurrConf.getSunday()) {
|
||||
recurrName += I18n.get("everyday");
|
||||
} else {
|
||||
recurrName += I18n.get("on") + " ";
|
||||
if (recurrConf.getMonday()) {
|
||||
recurrName += I18n.get("mon,");
|
||||
}
|
||||
if (recurrConf.getTuesday()) {
|
||||
recurrName += I18n.get("tues,");
|
||||
}
|
||||
if (recurrConf.getWednesday()) {
|
||||
recurrName += I18n.get("wed,");
|
||||
}
|
||||
if (recurrConf.getThursday()) {
|
||||
recurrName += I18n.get("thur,");
|
||||
}
|
||||
if (recurrConf.getFriday()) {
|
||||
recurrName += I18n.get("fri,");
|
||||
}
|
||||
if (recurrConf.getSaturday()) {
|
||||
recurrName += I18n.get("sat,");
|
||||
}
|
||||
if (recurrConf.getSunday()) {
|
||||
recurrName += I18n.get("sun,");
|
||||
}
|
||||
}
|
||||
|
||||
if (recurrConf.getEndType() == RecurrenceConfigurationRepository.END_TYPE_REPET) {
|
||||
recurrName +=
|
||||
String.format(" " + I18n.get("%d times"), recurrConf.getRepetitionsNumber());
|
||||
} else if (recurrConf.getEndDate() != null) {
|
||||
recurrName +=
|
||||
" " + I18n.get("until the") + " " + recurrConf.getEndDate().format(DATE_FORMAT);
|
||||
}
|
||||
break;
|
||||
|
||||
case RecurrenceConfigurationRepository.TYPE_MONTH:
|
||||
if (recurrConf.getPeriodicity() == 1) {
|
||||
recurrName +=
|
||||
I18n.get("Every month the") + " " + recurrConf.getStartDate().getDayOfMonth();
|
||||
} else {
|
||||
recurrName +=
|
||||
String.format(
|
||||
I18n.get("Every %d months the %d"),
|
||||
recurrConf.getPeriodicity(),
|
||||
recurrConf.getStartDate().getDayOfMonth());
|
||||
}
|
||||
|
||||
if (recurrConf.getEndType() == RecurrenceConfigurationRepository.END_TYPE_REPET) {
|
||||
recurrName +=
|
||||
String.format(", " + I18n.get("%d times"), recurrConf.getRepetitionsNumber());
|
||||
} else if (recurrConf.getEndDate() != null) {
|
||||
recurrName +=
|
||||
", " + I18n.get("until the") + " " + recurrConf.getEndDate().format(DATE_FORMAT);
|
||||
}
|
||||
break;
|
||||
|
||||
case RecurrenceConfigurationRepository.TYPE_YEAR:
|
||||
if (recurrConf.getPeriodicity() == 1) {
|
||||
recurrName += I18n.get("Every year the") + recurrConf.getStartDate().format(MONTH_FORMAT);
|
||||
} else {
|
||||
recurrName +=
|
||||
String.format(
|
||||
I18n.get("Every %d years the %s"),
|
||||
recurrConf.getPeriodicity(),
|
||||
recurrConf.getStartDate().format(MONTH_FORMAT));
|
||||
}
|
||||
|
||||
if (recurrConf.getEndType() == RecurrenceConfigurationRepository.END_TYPE_REPET) {
|
||||
recurrName +=
|
||||
String.format(", " + I18n.get("%d times"), recurrConf.getRepetitionsNumber());
|
||||
} else if (recurrConf.getEndDate() != null) {
|
||||
recurrName +=
|
||||
", " + I18n.get("until the") + " " + recurrConf.getEndDate().format(DATE_FORMAT);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return recurrName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateRecurrentEvents(Event event, RecurrenceConfiguration conf)
|
||||
throws AxelorException {
|
||||
if (conf.getRecurrenceType() == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
IExceptionMessage.RECURRENCE_RECURRENCE_TYPE);
|
||||
}
|
||||
|
||||
int recurrenceType = new Integer(conf.getRecurrenceType().toString());
|
||||
|
||||
if (conf.getPeriodicity() == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_PERIODICITY));
|
||||
}
|
||||
|
||||
int periodicity = new Integer(conf.getPeriodicity().toString());
|
||||
|
||||
if (periodicity < 1) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_PERIODICITY));
|
||||
}
|
||||
|
||||
boolean monday = conf.getMonday();
|
||||
boolean tuesday = conf.getTuesday();
|
||||
boolean wednesday = conf.getWednesday();
|
||||
boolean thursday = conf.getThursday();
|
||||
boolean friday = conf.getFriday();
|
||||
boolean saturday = conf.getSaturday();
|
||||
boolean sunday = conf.getSunday();
|
||||
Map<Integer, Boolean> daysMap = new HashMap<>();
|
||||
Map<Integer, Boolean> daysCheckedMap = new HashMap<>();
|
||||
if (recurrenceType == RecurrenceConfigurationRepository.TYPE_WEEK) {
|
||||
daysMap.put(DayOfWeek.MONDAY.getValue(), monday);
|
||||
daysMap.put(DayOfWeek.TUESDAY.getValue(), tuesday);
|
||||
daysMap.put(DayOfWeek.WEDNESDAY.getValue(), wednesday);
|
||||
daysMap.put(DayOfWeek.THURSDAY.getValue(), thursday);
|
||||
daysMap.put(DayOfWeek.FRIDAY.getValue(), friday);
|
||||
daysMap.put(DayOfWeek.SATURDAY.getValue(), saturday);
|
||||
daysMap.put(DayOfWeek.SUNDAY.getValue(), sunday);
|
||||
|
||||
for (Integer day : daysMap.keySet()) {
|
||||
if (daysMap.get(day)) {
|
||||
daysCheckedMap.put(day, daysMap.get(day));
|
||||
}
|
||||
}
|
||||
if (daysCheckedMap.isEmpty()) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_DAYS_CHECKED));
|
||||
}
|
||||
}
|
||||
|
||||
int monthRepeatType = new Integer(conf.getMonthRepeatType().toString());
|
||||
|
||||
int endType = new Integer(conf.getEndType().toString());
|
||||
|
||||
int repetitionsNumber = 0;
|
||||
|
||||
if (endType == RecurrenceConfigurationRepository.END_TYPE_REPET) {
|
||||
if (conf.getRepetitionsNumber() == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_REPETITION_NUMBER));
|
||||
}
|
||||
|
||||
repetitionsNumber = new Integer(conf.getRepetitionsNumber().toString());
|
||||
|
||||
if (repetitionsNumber < 1) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_REPETITION_NUMBER));
|
||||
}
|
||||
}
|
||||
LocalDate endDate = event.getEndDateTime().toLocalDate();
|
||||
if (endType == RecurrenceConfigurationRepository.END_TYPE_DATE) {
|
||||
if (conf.getEndDate() == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_END_DATE));
|
||||
}
|
||||
|
||||
endDate = LocalDate.parse(conf.getEndDate().toString(), DateTimeFormatter.ISO_DATE);
|
||||
|
||||
if (endDate.isBefore(event.getStartDateTime().toLocalDate())
|
||||
|| endDate.isEqual(event.getStartDateTime().toLocalDate())) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_END_DATE));
|
||||
}
|
||||
}
|
||||
switch (recurrenceType) {
|
||||
case RecurrenceConfigurationRepository.TYPE_DAY:
|
||||
addRecurrentEventsByDays(event, periodicity, endType, repetitionsNumber, endDate);
|
||||
break;
|
||||
|
||||
case RecurrenceConfigurationRepository.TYPE_WEEK:
|
||||
addRecurrentEventsByWeeks(
|
||||
event, periodicity, endType, repetitionsNumber, endDate, daysCheckedMap);
|
||||
break;
|
||||
|
||||
case RecurrenceConfigurationRepository.TYPE_MONTH:
|
||||
addRecurrentEventsByMonths(
|
||||
event, periodicity, endType, repetitionsNumber, endDate, monthRepeatType);
|
||||
break;
|
||||
|
||||
case RecurrenceConfigurationRepository.TYPE_YEAR:
|
||||
addRecurrentEventsByYears(event, periodicity, endType, repetitionsNumber, endDate);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public EmailAddress getEmailAddress(Event event) {
|
||||
EmailAddress emailAddress = null;
|
||||
if (event.getPartner() != null
|
||||
&& event.getPartner().getPartnerTypeSelect() == PartnerRepository.PARTNER_TYPE_INDIVIDUAL) {
|
||||
|
||||
Partner partner = partnerRepo.find(event.getPartner().getId());
|
||||
if (partner.getEmailAddress() != null)
|
||||
emailAddress = emailAddressRepo.find(partner.getEmailAddress().getId());
|
||||
|
||||
} else if (event.getContactPartner() != null) {
|
||||
|
||||
Partner contactPartner = partnerRepo.find(event.getContactPartner().getId());
|
||||
if (contactPartner.getEmailAddress() != null)
|
||||
emailAddress = emailAddressRepo.find(contactPartner.getEmailAddress().getId());
|
||||
|
||||
} else if (event.getPartner() == null
|
||||
&& event.getContactPartner() == null
|
||||
&& event.getLead() != null) {
|
||||
|
||||
Lead lead = leadRepo.find(event.getLead().getId());
|
||||
if (lead.getEmailAddress() != null)
|
||||
emailAddress = emailAddressRepo.find(lead.getEmailAddress().getId());
|
||||
}
|
||||
return emailAddress;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendEmailMeetingInvitation(Event event, Set<User> users)
|
||||
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
|
||||
MessagingException, IOException, AxelorException {
|
||||
AppBase appBase = Beans.get(AppBaseService.class).getAppBase();
|
||||
Template template = appBase.getSendMailToInvitedPersonInMeetingTemplate();
|
||||
|
||||
if (template == null) {
|
||||
throw new AxelorException(
|
||||
appBase,
|
||||
TraceBackRepository.CATEGORY_NO_VALUE,
|
||||
I18n.get("Template for sending meeting invitation is missing."));
|
||||
}
|
||||
|
||||
TemplateMessageService templateMessageService = Beans.get(TemplateMessageService.class);
|
||||
|
||||
try {
|
||||
templateMessageService.generateAndSendMessageToBulkUsers(event, template, users);
|
||||
} catch (MessagingException e) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_NO_VALUE,
|
||||
I18n.get("Failed to send meeting invitation email."),
|
||||
e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service;
|
||||
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.crm.db.LostReason;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.util.Map;
|
||||
|
||||
public interface LeadService {
|
||||
|
||||
/**
|
||||
* Convert lead into a partner
|
||||
*
|
||||
* @param lead
|
||||
* @return
|
||||
* @throws AxelorException
|
||||
*/
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public Lead convertLead(Lead lead, Partner partner, Partner contactPartner)
|
||||
throws AxelorException;
|
||||
|
||||
/**
|
||||
* Get sequence for partner
|
||||
*
|
||||
* @return
|
||||
* @throws AxelorException
|
||||
*/
|
||||
public String getSequence() throws AxelorException;
|
||||
|
||||
/**
|
||||
* Assign user company to partner
|
||||
*
|
||||
* @param partner
|
||||
* @return
|
||||
*/
|
||||
public Partner setPartnerCompany(Partner partner);
|
||||
|
||||
public Map<String, String> getSocialNetworkUrl(String name, String firstName, String companyName);
|
||||
|
||||
@Transactional
|
||||
public void saveLead(Lead lead);
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public Object importLead(Object bean, Map values);
|
||||
|
||||
/**
|
||||
* Check if the lead in view has a duplicate.
|
||||
*
|
||||
* @param lead a context lead object
|
||||
* @return if there is a duplicate lead
|
||||
*/
|
||||
public boolean isThereDuplicateLead(Lead lead);
|
||||
|
||||
/**
|
||||
* Set the lead status to lost and set the lost reason with the given lost reason.
|
||||
*
|
||||
* @param lead a context lead object
|
||||
* @param lostReason the specified lost reason
|
||||
*/
|
||||
public void loseLead(Lead lead, LostReason lostReason);
|
||||
|
||||
public String processFullName(String enterpriseName, String name, String firstName);
|
||||
}
|
||||
@ -0,0 +1,255 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service;
|
||||
|
||||
import com.axelor.apps.base.db.Company;
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.base.db.repo.PartnerRepository;
|
||||
import com.axelor.apps.base.db.repo.SequenceRepository;
|
||||
import com.axelor.apps.base.exceptions.IExceptionMessage;
|
||||
import com.axelor.apps.base.service.administration.SequenceService;
|
||||
import com.axelor.apps.base.service.user.UserService;
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.crm.db.LostReason;
|
||||
import com.axelor.apps.crm.db.Opportunity;
|
||||
import com.axelor.apps.crm.db.repo.EventRepository;
|
||||
import com.axelor.apps.crm.db.repo.LeadRepository;
|
||||
import com.axelor.apps.crm.db.repo.OpportunityRepository;
|
||||
import com.axelor.auth.AuthUtils;
|
||||
import com.axelor.auth.db.User;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
|
||||
public class LeadServiceImpl implements LeadService {
|
||||
|
||||
@Inject protected SequenceService sequenceService;
|
||||
|
||||
@Inject protected UserService userService;
|
||||
|
||||
@Inject protected PartnerRepository partnerRepo;
|
||||
|
||||
@Inject protected OpportunityRepository opportunityRepo;
|
||||
|
||||
@Inject protected LeadRepository leadRepo;
|
||||
|
||||
@Inject protected EventRepository eventRepo;
|
||||
|
||||
/**
|
||||
* Convert lead into a partner
|
||||
*
|
||||
* @param lead
|
||||
* @return
|
||||
* @throws AxelorException
|
||||
*/
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public Lead convertLead(Lead lead, Partner partner, Partner contactPartner)
|
||||
throws AxelorException {
|
||||
|
||||
if (partner != null && contactPartner != null) {
|
||||
contactPartner = partnerRepo.save(contactPartner);
|
||||
if (partner.getContactPartnerSet() == null) {
|
||||
partner.setContactPartnerSet(new HashSet<>());
|
||||
}
|
||||
partner.getContactPartnerSet().add(contactPartner);
|
||||
contactPartner.setMainPartner(partner);
|
||||
}
|
||||
if (partner != null) {
|
||||
partner = partnerRepo.save(partner);
|
||||
lead.setPartner(partner);
|
||||
}
|
||||
|
||||
for (Event event : lead.getEventList()) {
|
||||
event.setPartner(partner);
|
||||
event.setContactPartner(contactPartner);
|
||||
eventRepo.save(event);
|
||||
}
|
||||
|
||||
for (Opportunity opportunity : lead.getOpportunitiesList()) {
|
||||
opportunity.setPartner(partner);
|
||||
opportunityRepo.save(opportunity);
|
||||
}
|
||||
|
||||
lead.setStatusSelect(LeadRepository.LEAD_STATUS_CONVERTED);
|
||||
|
||||
return leadRepo.save(lead);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sequence for partner
|
||||
*
|
||||
* @return
|
||||
* @throws AxelorException
|
||||
*/
|
||||
public String getSequence() throws AxelorException {
|
||||
|
||||
String seq = sequenceService.getSequenceNumber(SequenceRepository.PARTNER);
|
||||
if (seq == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR, I18n.get(IExceptionMessage.PARTNER_1));
|
||||
}
|
||||
return seq;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign user company to partner
|
||||
*
|
||||
* @param partner
|
||||
* @return
|
||||
*/
|
||||
public Partner setPartnerCompany(Partner partner) {
|
||||
|
||||
if (userService.getUserActiveCompany() != null) {
|
||||
partner.setCompanySet(new HashSet<Company>());
|
||||
partner.getCompanySet().add(userService.getUserActiveCompany());
|
||||
}
|
||||
|
||||
return partner;
|
||||
}
|
||||
|
||||
public Map<String, String> getSocialNetworkUrl(
|
||||
String name, String firstName, String companyName) {
|
||||
|
||||
Map<String, String> urlMap = new HashMap<String, String>();
|
||||
String searchName =
|
||||
firstName != null && name != null
|
||||
? firstName + "+" + name
|
||||
: name == null ? firstName : name;
|
||||
searchName = searchName == null ? "" : searchName;
|
||||
urlMap.put(
|
||||
"facebook",
|
||||
"<a class='fa fa-facebook' href='https://www.facebook.com/search/more/?q="
|
||||
+ searchName
|
||||
+ "&init=public"
|
||||
+ "' target='_blank'/>");
|
||||
urlMap.put(
|
||||
"twitter",
|
||||
"<a class='fa fa-twitter' href='https://twitter.com/search?q="
|
||||
+ searchName
|
||||
+ "' target='_blank' />");
|
||||
urlMap.put(
|
||||
"linkedin",
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com/pub/dir/"
|
||||
+ searchName.replace("+", "/")
|
||||
+ "' target='_blank' />");
|
||||
if (companyName != null) {
|
||||
urlMap.put(
|
||||
"youtube",
|
||||
"<a class='fa fa-youtube' href='https://www.youtube.com/results?search_query="
|
||||
+ companyName
|
||||
+ "' target='_blank' />");
|
||||
urlMap.put(
|
||||
"google",
|
||||
"<a class='fa fa-google' href='https://www.google.com/?gws_rd=cr#q="
|
||||
+ companyName
|
||||
+ "+"
|
||||
+ searchName
|
||||
+ "' target='_blank' />");
|
||||
} else {
|
||||
urlMap.put(
|
||||
"youtube",
|
||||
"<a class='fa fa-youtube' href='https://www.youtube.com/results?search_query="
|
||||
+ searchName
|
||||
+ "' target='_blank' />");
|
||||
urlMap.put(
|
||||
"google",
|
||||
"<a class='fa fa-google' href='https://www.google.com/?gws_rd=cr#q="
|
||||
+ searchName
|
||||
+ "' target='_blank' />");
|
||||
}
|
||||
return urlMap;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void saveLead(Lead lead) {
|
||||
leadRepo.save(lead);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public Object importLead(Object bean, Map values) {
|
||||
|
||||
assert bean instanceof Lead;
|
||||
Lead lead = (Lead) bean;
|
||||
User user = AuthUtils.getUser();
|
||||
lead.setUser(user);
|
||||
lead.setTeam(user.getActiveTeam());
|
||||
return lead;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the lead in view has a duplicate.
|
||||
*
|
||||
* @param lead a context lead object
|
||||
* @return if there is a duplicate lead
|
||||
*/
|
||||
public boolean isThereDuplicateLead(Lead lead) {
|
||||
String newName = lead.getFullName();
|
||||
if (Strings.isNullOrEmpty(newName)) {
|
||||
return false;
|
||||
}
|
||||
Long leadId = lead.getId();
|
||||
if (leadId == null) {
|
||||
Lead existingLead =
|
||||
leadRepo
|
||||
.all()
|
||||
.filter("lower(self.fullName) = lower(:newName) ")
|
||||
.bind("newName", newName)
|
||||
.fetchOne();
|
||||
return existingLead != null;
|
||||
} else {
|
||||
Lead existingLead =
|
||||
leadRepo
|
||||
.all()
|
||||
.filter("lower(self.fullName) = lower(:newName) " + "and self.id != :leadId ")
|
||||
.bind("newName", newName)
|
||||
.bind("leadId", leadId)
|
||||
.fetchOne();
|
||||
return existingLead != null;
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void loseLead(Lead lead, LostReason lostReason) {
|
||||
lead.setStatusSelect(LeadRepository.LEAD_STATUS_LOST);
|
||||
lead.setLostReason(lostReason);
|
||||
}
|
||||
|
||||
public String processFullName(String enterpriseName, String name, String firstName) {
|
||||
StringBuilder fullName = new StringBuilder();
|
||||
|
||||
if (!Strings.isNullOrEmpty(enterpriseName)) {
|
||||
fullName.append(enterpriseName);
|
||||
if (!Strings.isNullOrEmpty(name) || !Strings.isNullOrEmpty(firstName)) fullName.append(", ");
|
||||
}
|
||||
if (!Strings.isNullOrEmpty(name) && !Strings.isNullOrEmpty(firstName)) {
|
||||
fullName.append(firstName);
|
||||
fullName.append(" ");
|
||||
fullName.append(name);
|
||||
} else if (!Strings.isNullOrEmpty(firstName)) fullName.append(firstName);
|
||||
else if (!Strings.isNullOrEmpty(name)) fullName.append(name);
|
||||
|
||||
return fullName.toString();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service;
|
||||
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.crm.db.Opportunity;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.google.inject.persist.Transactional;
|
||||
|
||||
public interface OpportunityService {
|
||||
|
||||
@Transactional
|
||||
public void saveOpportunity(Opportunity opportunity);
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public Partner createClientFromLead(Opportunity opportunity) throws AxelorException;
|
||||
}
|
||||
@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service;
|
||||
|
||||
import com.axelor.apps.base.db.Address;
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.base.service.AddressService;
|
||||
import com.axelor.apps.base.service.PartnerService;
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.crm.db.Opportunity;
|
||||
import com.axelor.apps.crm.db.repo.OpportunityRepository;
|
||||
import com.axelor.apps.crm.exception.IExceptionMessage;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
|
||||
public class OpportunityServiceImpl implements OpportunityService {
|
||||
|
||||
@Inject protected OpportunityRepository opportunityRepo;
|
||||
|
||||
@Inject protected AddressService addressService;
|
||||
|
||||
@Transactional
|
||||
public void saveOpportunity(Opportunity opportunity) {
|
||||
opportunityRepo.save(opportunity);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public Partner createClientFromLead(Opportunity opportunity) throws AxelorException {
|
||||
Lead lead = opportunity.getLead();
|
||||
if (lead == null) {
|
||||
throw new AxelorException(
|
||||
opportunity,
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.LEAD_PARTNER));
|
||||
}
|
||||
|
||||
String name = lead.getFullName();
|
||||
|
||||
Address address = null;
|
||||
if (lead.getPrimaryAddress() != null) {
|
||||
// avoids printing 'null'
|
||||
String addressL6 =
|
||||
lead.getPrimaryPostalCode() == null ? "" : lead.getPrimaryPostalCode() + " ";
|
||||
addressL6 += lead.getPrimaryCity() == null ? "" : lead.getPrimaryCity();
|
||||
|
||||
address =
|
||||
addressService.createAddress(
|
||||
null, null, lead.getPrimaryAddress(), null, addressL6, lead.getPrimaryCountry());
|
||||
address.setFullName(addressService.computeFullName(address));
|
||||
}
|
||||
|
||||
Partner partner =
|
||||
Beans.get(PartnerService.class)
|
||||
.createPartner(
|
||||
name,
|
||||
null,
|
||||
lead.getFixedPhone(),
|
||||
lead.getMobilePhone(),
|
||||
lead.getEmailAddress(),
|
||||
opportunity.getCurrency(),
|
||||
address,
|
||||
address);
|
||||
|
||||
opportunity.setPartner(partner);
|
||||
opportunityRepo.save(opportunity);
|
||||
|
||||
return partner;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,292 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service;
|
||||
|
||||
import com.axelor.apps.crm.db.Target;
|
||||
import com.axelor.apps.crm.db.TargetConfiguration;
|
||||
import com.axelor.apps.crm.db.repo.EventRepository;
|
||||
import com.axelor.apps.crm.db.repo.OpportunityRepository;
|
||||
import com.axelor.apps.crm.db.repo.TargetConfigurationRepository;
|
||||
import com.axelor.apps.crm.db.repo.TargetRepository;
|
||||
import com.axelor.apps.crm.exception.IExceptionMessage;
|
||||
import com.axelor.auth.db.User;
|
||||
import com.axelor.db.JPA;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.team.db.Team;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import javax.persistence.Query;
|
||||
|
||||
public class TargetService {
|
||||
|
||||
@Inject private EventRepository eventRepo;
|
||||
|
||||
@Inject private OpportunityRepository opportunityRepo;
|
||||
|
||||
@Inject private TargetRepository targetRepo;
|
||||
|
||||
public void createsTargets(TargetConfiguration targetConfiguration) throws AxelorException {
|
||||
|
||||
if (targetConfiguration.getPeriodTypeSelect()
|
||||
== TargetConfigurationRepository.PERIOD_TYPE_NONE) {
|
||||
Target target =
|
||||
this.createTarget(
|
||||
targetConfiguration,
|
||||
targetConfiguration.getFromDate(),
|
||||
targetConfiguration.getToDate());
|
||||
|
||||
this.update(target);
|
||||
} else {
|
||||
|
||||
LocalDate oldDate = targetConfiguration.getFromDate();
|
||||
LocalDate date = oldDate;
|
||||
while (date.isBefore(targetConfiguration.getToDate())
|
||||
|| date.isEqual(targetConfiguration.getToDate())) {
|
||||
|
||||
date = this.getNextDate(targetConfiguration.getPeriodTypeSelect(), date);
|
||||
Target target2 =
|
||||
targetRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.user = ?1 AND self.team = ?2 AND self.periodTypeSelect = ?3 AND self.fromDate >= ?4 AND self.toDate <= ?5 AND "
|
||||
+ "((self.callEmittedNumberTarget > 0 AND ?6 > 0) OR (self.meetingNumberTarget > 0 AND ?7 > 0) OR "
|
||||
+ "(self.opportunityAmountWonTarget > 0.00 AND ?8 > 0.00) OR (self.opportunityCreatedNumberTarget > 0 AND ?9 > 0) OR (self.opportunityCreatedWonTarget > 0 AND ?10 > 0))",
|
||||
targetConfiguration.getUser(),
|
||||
targetConfiguration.getTeam(),
|
||||
targetConfiguration.getPeriodTypeSelect(),
|
||||
targetConfiguration.getFromDate(),
|
||||
targetConfiguration.getToDate(),
|
||||
targetConfiguration.getCallEmittedNumber(),
|
||||
targetConfiguration.getMeetingNumber(),
|
||||
targetConfiguration.getOpportunityAmountWon().doubleValue(),
|
||||
targetConfiguration.getOpportunityCreatedNumber(),
|
||||
targetConfiguration.getOpportunityCreatedWon())
|
||||
.fetchOne();
|
||||
|
||||
if (target2 == null) {
|
||||
Target target =
|
||||
this.createTarget(
|
||||
targetConfiguration,
|
||||
oldDate,
|
||||
(date.isBefore(targetConfiguration.getToDate()))
|
||||
? date.minusDays(1)
|
||||
: targetConfiguration.getToDate());
|
||||
|
||||
this.update(target);
|
||||
|
||||
oldDate = date;
|
||||
} else {
|
||||
throw new AxelorException(
|
||||
targetConfiguration,
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.TARGET_1),
|
||||
target2.getCode(),
|
||||
targetConfiguration.getCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public LocalDate getNextDate(int periodTypeSelect, LocalDate date) {
|
||||
|
||||
switch (periodTypeSelect) {
|
||||
case TargetConfigurationRepository.PERIOD_TYPE_NONE:
|
||||
return date;
|
||||
case TargetConfigurationRepository.PERIOD_TYPE_MONTHLY:
|
||||
return date.plusMonths(1);
|
||||
case TargetConfigurationRepository.PERIOD_TYPE_WEEKLY:
|
||||
return date.plusWeeks(1);
|
||||
case TargetConfigurationRepository.PERIOD_TYPE_DAILY:
|
||||
return date.plusDays(1);
|
||||
|
||||
default:
|
||||
return date;
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Target createTarget(
|
||||
TargetConfiguration targetConfiguration, LocalDate fromDate, LocalDate toDate) {
|
||||
Target target = new Target();
|
||||
target.setCallEmittedNumberTarget(targetConfiguration.getCallEmittedNumber());
|
||||
target.setMeetingNumberTarget(targetConfiguration.getMeetingNumber());
|
||||
target.setOpportunityAmountWonTarget(targetConfiguration.getOpportunityAmountWon());
|
||||
target.setOpportunityCreatedNumberTarget(targetConfiguration.getOpportunityCreatedNumber());
|
||||
target.setOpportunityCreatedWonTarget(targetConfiguration.getOpportunityCreatedWon());
|
||||
// target.setSaleOrderAmountWonTarget(targetConfiguration.getSaleOrderAmountWon());
|
||||
// target.setSaleOrderCreatedNumberTarget(targetConfiguration.getSaleOrderCreatedNumber());
|
||||
// target.setSaleOrderCreatedWonTarget(targetConfiguration.getSaleOrderCreatedWon());
|
||||
target.setPeriodTypeSelect(targetConfiguration.getPeriodTypeSelect());
|
||||
target.setFromDate(fromDate);
|
||||
target.setToDate(toDate);
|
||||
target.setUser(targetConfiguration.getUser());
|
||||
target.setTeam(targetConfiguration.getTeam());
|
||||
target.setName(targetConfiguration.getName());
|
||||
target.setCode(targetConfiguration.getCode());
|
||||
return targetRepo.save(target);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void update(Target target) {
|
||||
User user = target.getUser();
|
||||
Team team = target.getTeam();
|
||||
LocalDate fromDate = target.getFromDate();
|
||||
LocalDate toDate = target.getToDate();
|
||||
|
||||
LocalDateTime fromDateTime = fromDate.atStartOfDay();
|
||||
LocalDateTime toDateTime = toDate.atTime(23, 59);
|
||||
|
||||
if (user != null) {
|
||||
Query q =
|
||||
JPA.em()
|
||||
.createQuery(
|
||||
"select SUM(op.amount) FROM Opportunity as op WHERE op.user = ?1 AND op.salesStageSelect = ?2 AND op.createdOn >= ?3 AND op.createdOn <= ?4 ");
|
||||
q.setParameter(1, user);
|
||||
q.setParameter(2, OpportunityRepository.SALES_STAGE_CLOSED_WON);
|
||||
q.setParameter(3, fromDateTime);
|
||||
q.setParameter(4, toDateTime);
|
||||
|
||||
BigDecimal opportunityAmountWon = (BigDecimal) q.getSingleResult();
|
||||
|
||||
Long callEmittedNumber =
|
||||
eventRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.typeSelect = ?1 AND self.user = ?2 AND self.startDateTime >= ?3 AND self.endDateTime <= ?4 AND self.callTypeSelect = 2",
|
||||
EventRepository.TYPE_CALL,
|
||||
user,
|
||||
fromDateTime,
|
||||
toDateTime)
|
||||
.count();
|
||||
|
||||
target.setCallEmittedNumber(callEmittedNumber.intValue());
|
||||
|
||||
Long meetingNumber =
|
||||
eventRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.typeSelect = ?1 AND self.user = ?2 AND self.startDateTime >= ?3 AND self.endDateTime <= ?4",
|
||||
EventRepository.TYPE_MEETING,
|
||||
user,
|
||||
fromDateTime,
|
||||
toDateTime)
|
||||
.count();
|
||||
|
||||
target.setMeetingNumber(meetingNumber.intValue());
|
||||
|
||||
target.setOpportunityAmountWon(opportunityAmountWon);
|
||||
|
||||
Long opportunityCreatedNumber =
|
||||
opportunityRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.user = ?1 AND self.createdOn >= ?2 AND self.createdOn <= ?3",
|
||||
user,
|
||||
fromDateTime,
|
||||
toDateTime)
|
||||
.count();
|
||||
|
||||
target.setOpportunityCreatedNumber(opportunityCreatedNumber.intValue());
|
||||
|
||||
Long opportunityCreatedWon =
|
||||
opportunityRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.user = ?1 AND self.createdOn >= ?2 AND self.createdOn <= ?3 AND self.salesStageSelect = ?4",
|
||||
user,
|
||||
fromDateTime,
|
||||
toDateTime,
|
||||
OpportunityRepository.SALES_STAGE_CLOSED_WON)
|
||||
.count();
|
||||
|
||||
target.setOpportunityCreatedWon(opportunityCreatedWon.intValue());
|
||||
} else if (team != null) {
|
||||
|
||||
Query q =
|
||||
JPA.em()
|
||||
.createQuery(
|
||||
"select SUM(op.amount) FROM Opportunity as op WHERE op.team = ?1 AND op.salesStageSelect = ?2 AND op.createdOn >= ?3 AND op.createdOn <= ?4 ");
|
||||
q.setParameter(1, team);
|
||||
q.setParameter(2, OpportunityRepository.SALES_STAGE_CLOSED_WON);
|
||||
q.setParameter(3, fromDateTime);
|
||||
q.setParameter(4, toDateTime);
|
||||
|
||||
BigDecimal opportunityAmountWon = (BigDecimal) q.getSingleResult();
|
||||
|
||||
Long callEmittedNumber =
|
||||
eventRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.typeSelect = ?1 AND self.team = ?2 AND self.startDateTime >= ?3 AND self.endDateTime <= ?4 AND self.callTypeSelect = 2",
|
||||
EventRepository.TYPE_CALL,
|
||||
team,
|
||||
fromDateTime,
|
||||
toDateTime)
|
||||
.count();
|
||||
|
||||
target.setCallEmittedNumber(callEmittedNumber.intValue());
|
||||
|
||||
Long meetingNumber =
|
||||
eventRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.typeSelect = ?1 AND self.team = ?2 AND self.startDateTime >= ?3 AND self.endDateTime <= ?4",
|
||||
EventRepository.TYPE_MEETING,
|
||||
team,
|
||||
fromDateTime,
|
||||
toDateTime)
|
||||
.count();
|
||||
|
||||
target.setMeetingNumber(meetingNumber.intValue());
|
||||
|
||||
target.setOpportunityAmountWon(opportunityAmountWon);
|
||||
|
||||
Long opportunityCreatedNumber =
|
||||
opportunityRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.team = ?1 AND self.createdOn >= ?2 AND self.createdOn <= ?3",
|
||||
team,
|
||||
fromDateTime,
|
||||
toDateTime)
|
||||
.count();
|
||||
|
||||
target.setOpportunityCreatedNumber(opportunityCreatedNumber.intValue());
|
||||
|
||||
Long opportunityCreatedWon =
|
||||
opportunityRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.team = ?1 AND self.createdOn >= ?2 AND self.createdOn <= ?3 AND self.salesStageSelect = ?4",
|
||||
team,
|
||||
fromDateTime,
|
||||
toDateTime,
|
||||
OpportunityRepository.SALES_STAGE_CLOSED_WON)
|
||||
.count();
|
||||
|
||||
target.setOpportunityCreatedWon(opportunityCreatedWon.intValue());
|
||||
}
|
||||
|
||||
targetRepo.save(target);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service.app;
|
||||
|
||||
public interface AppCrmService {
|
||||
|
||||
public void generateCrmConfigurations();
|
||||
}
|
||||
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service.app;
|
||||
|
||||
import com.axelor.apps.base.db.Company;
|
||||
import com.axelor.apps.base.db.repo.CompanyRepository;
|
||||
import com.axelor.apps.crm.db.CrmConfig;
|
||||
import com.axelor.apps.crm.db.repo.CrmConfigRepository;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.util.List;
|
||||
|
||||
public class AppCrmServiceImpl implements AppCrmService {
|
||||
|
||||
@Inject private CompanyRepository companyRepo;
|
||||
|
||||
@Inject private CrmConfigRepository crmConfigRepo;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void generateCrmConfigurations() {
|
||||
|
||||
List<Company> companies = companyRepo.all().filter("self.crmConfig is null").fetch();
|
||||
|
||||
for (Company company : companies) {
|
||||
CrmConfig crmConfig = new CrmConfig();
|
||||
crmConfig.setCompany(company);
|
||||
crmConfigRepo.save(crmConfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,283 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service.batch;
|
||||
|
||||
import com.axelor.apps.base.db.ICalendarUser;
|
||||
import com.axelor.apps.base.service.app.AppBaseService;
|
||||
import com.axelor.apps.crm.db.EventReminder;
|
||||
import com.axelor.apps.crm.db.repo.EventReminderRepository;
|
||||
import com.axelor.apps.crm.db.repo.EventRepository;
|
||||
import com.axelor.apps.crm.exception.IExceptionMessage;
|
||||
import com.axelor.apps.crm.message.MessageServiceCrmImpl;
|
||||
import com.axelor.apps.message.db.EmailAddress;
|
||||
import com.axelor.apps.message.db.Message;
|
||||
import com.axelor.apps.message.db.repo.EmailAddressRepository;
|
||||
import com.axelor.apps.message.db.repo.MessageRepository;
|
||||
import com.axelor.apps.message.service.MailAccountService;
|
||||
import com.axelor.apps.message.service.MessageService;
|
||||
import com.axelor.db.JPA;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.ExceptionOriginRepository;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import javax.persistence.Query;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class BatchEventReminder extends BatchStrategy {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||
|
||||
private boolean stop = false;
|
||||
|
||||
@Inject private EventRepository eventRepo;
|
||||
|
||||
@Inject private EmailAddressRepository emailAddressRepo;
|
||||
|
||||
@Inject
|
||||
public BatchEventReminder(
|
||||
MessageServiceCrmImpl messageServiceCrmImpl, MailAccountService mailAccountService) {
|
||||
|
||||
super(messageServiceCrmImpl, mailAccountService);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void process() {
|
||||
|
||||
this.markEventReminderProcess();
|
||||
this.generateMessageProcess();
|
||||
}
|
||||
|
||||
protected void markEventReminderProcess() {
|
||||
|
||||
if (!stop) {
|
||||
|
||||
int i = 0;
|
||||
|
||||
List<? extends EventReminder> eventReminderList = eventReminderRepo.all().fetch();
|
||||
|
||||
for (EventReminder eventReminder : eventReminderList) {
|
||||
|
||||
try {
|
||||
|
||||
eventReminder = eventReminderRepo.find(eventReminder.getId());
|
||||
|
||||
Integer eventStatusSelect = eventReminder.getEvent().getStatusSelect();
|
||||
boolean eventIsNotFinished =
|
||||
eventStatusSelect == EventRepository.STATUS_PLANNED
|
||||
|| eventStatusSelect == EventRepository.STATUS_NOT_STARTED
|
||||
|| eventStatusSelect == EventRepository.STATUS_ON_GOING
|
||||
|| eventStatusSelect == EventRepository.STATUS_PENDING;
|
||||
if (!eventReminder.getIsReminded() && isExpired(eventReminder) && eventIsNotFinished) {
|
||||
updateEventReminder(eventReminder);
|
||||
i++;
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
TraceBackService.trace(
|
||||
new Exception(
|
||||
String.format(
|
||||
I18n.get(IExceptionMessage.BATCH_EVENT_REMINDER_1),
|
||||
eventReminderRepo.find(eventReminder.getId()).getEvent().getSubject()),
|
||||
e),
|
||||
ExceptionOriginRepository.CRM,
|
||||
batch.getId());
|
||||
|
||||
incrementAnomaly();
|
||||
|
||||
LOG.error(
|
||||
"Bug(Anomalie) généré(e) pour le rappel de l'évènement {}",
|
||||
eventReminderRepo.find(eventReminder.getId()).getEvent().getSubject());
|
||||
|
||||
} finally {
|
||||
|
||||
if (i % 1 == 0) {
|
||||
JPA.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isExpired(EventReminder eventReminder) {
|
||||
|
||||
LocalDateTime startDateTime = eventReminder.getEvent().getStartDateTime();
|
||||
|
||||
if (EventReminderRepository.MODE_AT_DATE.equals(eventReminder.getModeSelect())) {
|
||||
return eventReminder
|
||||
.getSendingDateT()
|
||||
.isBefore(Beans.get(AppBaseService.class).getTodayDateTime().toLocalDateTime());
|
||||
} else { // defaults to EventReminderRepository.MODE_BEFORE_DATE
|
||||
int durationTypeSelect = eventReminder.getDurationTypeSelect();
|
||||
switch (durationTypeSelect) {
|
||||
case EventReminderRepository.DURATION_TYPE_MINUTES:
|
||||
if ((startDateTime.minusMinutes(eventReminder.getDuration()))
|
||||
.isBefore(Beans.get(AppBaseService.class).getTodayDateTime().toLocalDateTime())) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case EventReminderRepository.DURATION_TYPE_HOURS:
|
||||
if ((startDateTime.minusHours(eventReminder.getDuration()))
|
||||
.isBefore(Beans.get(AppBaseService.class).getTodayDateTime().toLocalDateTime())) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case EventReminderRepository.DURATION_TYPE_DAYS:
|
||||
if ((startDateTime.minusDays(eventReminder.getDuration()))
|
||||
.isBefore(Beans.get(AppBaseService.class).getTodayDateTime().toLocalDateTime())) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case EventReminderRepository.DURATION_TYPE_WEEKS:
|
||||
if ((startDateTime.minusWeeks(eventReminder.getDuration()))
|
||||
.isBefore(Beans.get(AppBaseService.class).getTodayDateTime().toLocalDateTime())) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected void generateMessageProcess() {
|
||||
|
||||
MessageRepository messageRepo = Beans.get(MessageRepository.class);
|
||||
|
||||
if (!stop) {
|
||||
|
||||
int i = 0;
|
||||
|
||||
Query q =
|
||||
JPA.em()
|
||||
.createQuery(
|
||||
" SELECT er FROM EventReminder as er WHERE er.isReminded = true and ?1 MEMBER OF er.batchSet");
|
||||
q.setParameter(1, batch);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<EventReminder> eventReminderList = q.getResultList();
|
||||
|
||||
for (EventReminder eventReminder : eventReminderList) {
|
||||
try {
|
||||
eventReminder = eventReminderRepo.find(eventReminder.getId());
|
||||
Message message = messageServiceCrmImpl.createMessage(eventReminder.getEvent());
|
||||
|
||||
// Send reminder to owner of the reminder in any case
|
||||
if (eventReminder.getUser().getPartner() != null
|
||||
&& eventReminder.getUser().getPartner().getEmailAddress() != null) {
|
||||
message.addToEmailAddressSetItem(
|
||||
eventReminder.getUser().getPartner().getEmailAddress());
|
||||
} else if (eventReminder.getUser().getEmail() != null) {
|
||||
message.addToEmailAddressSetItem(
|
||||
findOrCreateEmailAddress(
|
||||
eventReminder.getUser().getEmail(),
|
||||
"[" + eventReminder.getUser().getEmail() + "]"));
|
||||
} else {
|
||||
messageRepo.remove(message);
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.CRM_CONFIG_USER_EMAIL),
|
||||
eventReminder.getUser().getName());
|
||||
}
|
||||
|
||||
// Also send to attendees if needed
|
||||
if (EventReminderRepository.ASSIGN_TO_ALL.equals(eventReminder.getAssignToSelect())
|
||||
&& eventReminder.getEvent().getAttendees() != null) {
|
||||
for (ICalendarUser iCalUser : eventReminder.getEvent().getAttendees()) {
|
||||
if (iCalUser.getUser() != null && iCalUser.getUser().getPartner() != null) {
|
||||
message.addToEmailAddressSetItem(iCalUser.getUser().getPartner().getEmailAddress());
|
||||
} else {
|
||||
message.addToEmailAddressSetItem(
|
||||
findOrCreateEmailAddress(iCalUser.getEmail(), iCalUser.getName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
message = Beans.get(MessageService.class).sendByEmail(message);
|
||||
} catch (Exception e) {
|
||||
|
||||
TraceBackService.trace(
|
||||
new Exception(
|
||||
String.format(
|
||||
I18n.get("Event") + " %s",
|
||||
eventRepo.find(eventReminder.getEvent().getId()).getSubject()),
|
||||
e),
|
||||
ExceptionOriginRepository.CRM,
|
||||
batch.getId());
|
||||
|
||||
incrementAnomaly();
|
||||
|
||||
LOG.error(
|
||||
"Bug(Anomalie) généré(e) pour l'évènement {}",
|
||||
eventRepo.find(eventReminder.getEvent().getId()).getSubject());
|
||||
|
||||
} finally {
|
||||
|
||||
if (i % 1 == 0) {
|
||||
JPA.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* As {@code batch} entity can be detached from the session, call {@code Batch.find()} get the
|
||||
* entity in the persistant context. Warning : {@code batch} entity have to be saved before.
|
||||
*/
|
||||
@Override
|
||||
protected void stop() {
|
||||
|
||||
String comment = I18n.get(IExceptionMessage.BATCH_EVENT_REMINDER_2) + "\n";
|
||||
comment +=
|
||||
String.format(
|
||||
"\t* %s " + I18n.get(IExceptionMessage.BATCH_EVENT_REMINDER_3) + "\n", batch.getDone());
|
||||
comment +=
|
||||
String.format(
|
||||
"\t" + I18n.get(com.axelor.apps.base.exceptions.IExceptionMessage.ALARM_ENGINE_BATCH_4),
|
||||
batch.getAnomaly());
|
||||
|
||||
super.stop();
|
||||
addComment(comment);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
protected EmailAddress findOrCreateEmailAddress(String email, String name) {
|
||||
EmailAddress emailAddress =
|
||||
emailAddressRepo.all().filter("self.name = '" + name + "'").fetchOne();
|
||||
|
||||
if (emailAddress == null) {
|
||||
emailAddress = new EmailAddress();
|
||||
emailAddress.setAddress(email);
|
||||
emailAddress = emailAddressRepo.save(emailAddress);
|
||||
}
|
||||
|
||||
return emailAddress;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service.batch;
|
||||
|
||||
import com.axelor.apps.base.service.administration.AbstractBatch;
|
||||
import com.axelor.apps.crm.db.EventReminder;
|
||||
import com.axelor.apps.crm.db.TargetConfiguration;
|
||||
import com.axelor.apps.crm.db.repo.EventReminderRepository;
|
||||
import com.axelor.apps.crm.message.MessageServiceCrmImpl;
|
||||
import com.axelor.apps.crm.service.TargetService;
|
||||
import com.axelor.apps.message.service.MailAccountService;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
public abstract class BatchStrategy extends AbstractBatch {
|
||||
|
||||
protected MessageServiceCrmImpl messageServiceCrmImpl;
|
||||
protected MailAccountService mailAccountService;
|
||||
protected TargetService targetService;
|
||||
|
||||
@Inject protected EventReminderRepository eventReminderRepo;
|
||||
|
||||
protected BatchStrategy(
|
||||
MessageServiceCrmImpl messageServiceCrmImpl, MailAccountService mailAccountService) {
|
||||
super();
|
||||
this.messageServiceCrmImpl = messageServiceCrmImpl;
|
||||
this.mailAccountService = mailAccountService;
|
||||
}
|
||||
|
||||
protected BatchStrategy(TargetService targetService) {
|
||||
super();
|
||||
this.targetService = targetService;
|
||||
}
|
||||
|
||||
protected void updateEventReminder(EventReminder eventReminder) {
|
||||
|
||||
eventReminder.addBatchSetItem(batchRepo.find(batch.getId()));
|
||||
eventReminder.setIsReminded(true);
|
||||
incrementDone();
|
||||
// eventReminderService.save(eventReminder);
|
||||
}
|
||||
|
||||
// protected void updateEvent( Event event ){
|
||||
//
|
||||
// event.addBatchSetItem( batchRepo.find( batch.getId() ) );
|
||||
//
|
||||
// incrementDone();
|
||||
// }
|
||||
|
||||
protected void updateTargetConfiguration(TargetConfiguration targetConfiguration) {
|
||||
|
||||
targetConfiguration.addBatchSetItem(batchRepo.find(batch.getId()));
|
||||
|
||||
incrementDone();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,111 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service.batch;
|
||||
|
||||
import com.axelor.apps.crm.db.TargetConfiguration;
|
||||
import com.axelor.apps.crm.db.repo.TargetConfigurationRepository;
|
||||
import com.axelor.apps.crm.exception.IExceptionMessage;
|
||||
import com.axelor.apps.crm.service.TargetService;
|
||||
import com.axelor.db.JPA;
|
||||
import com.axelor.exception.db.repo.ExceptionOriginRepository;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.google.inject.Inject;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class BatchTarget extends BatchStrategy {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||
|
||||
@Inject private TargetConfigurationRepository targetConfigurationRepo;
|
||||
|
||||
@Inject
|
||||
public BatchTarget(TargetService targetService) {
|
||||
|
||||
super(targetService);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void process() {
|
||||
|
||||
int i = 0;
|
||||
|
||||
List<TargetConfiguration> targetConfigurationList = new ArrayList<>();
|
||||
if (batch.getCrmBatch().getTargetConfigurationSet() != null
|
||||
&& !batch.getCrmBatch().getTargetConfigurationSet().isEmpty()) {
|
||||
targetConfigurationList.addAll(batch.getCrmBatch().getTargetConfigurationSet());
|
||||
}
|
||||
|
||||
for (TargetConfiguration targetConfiguration : targetConfigurationList) {
|
||||
|
||||
try {
|
||||
|
||||
targetService.createsTargets(targetConfiguration);
|
||||
updateTargetConfiguration(targetConfiguration);
|
||||
i++;
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
TraceBackService.trace(
|
||||
new Exception(
|
||||
String.format(
|
||||
I18n.get(IExceptionMessage.BATCH_TARGET_1),
|
||||
targetConfigurationRepo.find(targetConfiguration.getId()).getCode()),
|
||||
e),
|
||||
ExceptionOriginRepository.CRM,
|
||||
batch.getId()); // TODO
|
||||
|
||||
incrementAnomaly();
|
||||
|
||||
LOG.error(
|
||||
"Bug(Anomalie) généré(e) pour le rappel de l'évènement {}",
|
||||
targetConfigurationRepo.find(targetConfiguration.getId()).getCode());
|
||||
|
||||
} finally {
|
||||
|
||||
if (i % 1 == 0) {
|
||||
JPA.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* As {@code batch} entity can be detached from the session, call {@code Batch.find()} get the
|
||||
* entity in the persistant context. Warning : {@code batch} entity have to be saved before.
|
||||
*/
|
||||
@Override
|
||||
protected void stop() {
|
||||
|
||||
String comment = I18n.get(IExceptionMessage.BATCH_TARGET_2) + "\n";
|
||||
comment +=
|
||||
String.format(
|
||||
"\t* %s " + I18n.get(IExceptionMessage.BATCH_TARGET_3) + "\n", batch.getDone());
|
||||
comment +=
|
||||
String.format(
|
||||
"\t" + I18n.get(com.axelor.apps.base.exceptions.IExceptionMessage.ALARM_ENGINE_BATCH_4),
|
||||
batch.getAnomaly());
|
||||
|
||||
super.stop();
|
||||
addComment(comment);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service.batch;
|
||||
|
||||
import com.axelor.apps.base.db.Batch;
|
||||
import com.axelor.apps.base.exceptions.IExceptionMessage;
|
||||
import com.axelor.apps.base.service.administration.AbstractBatchService;
|
||||
import com.axelor.apps.crm.db.CrmBatch;
|
||||
import com.axelor.apps.crm.db.repo.CrmBatchRepository;
|
||||
import com.axelor.db.Model;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
|
||||
/**
|
||||
* InvoiceBatchService est une classe implémentant l'ensemble des batchs de comptabilité et
|
||||
* assimilé.
|
||||
*
|
||||
* @author Geoffrey DUBAUX
|
||||
* @version 0.1
|
||||
*/
|
||||
public class CrmBatchService extends AbstractBatchService {
|
||||
|
||||
@Override
|
||||
protected Class<? extends Model> getModelClass() {
|
||||
return CrmBatch.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Batch run(Model batchModel) throws AxelorException {
|
||||
|
||||
Batch batch;
|
||||
CrmBatch crmBatch = (CrmBatch) batchModel;
|
||||
|
||||
switch (crmBatch.getActionSelect()) {
|
||||
case CrmBatchRepository.ACTION_BATCH_EVENT_REMINDER:
|
||||
batch = eventReminder(crmBatch);
|
||||
break;
|
||||
|
||||
case CrmBatchRepository.ACTION_BATCH_TARGET:
|
||||
batch = target(crmBatch);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_INCONSISTENCY,
|
||||
I18n.get(IExceptionMessage.BASE_BATCH_1),
|
||||
crmBatch.getActionSelect(),
|
||||
crmBatch.getCode());
|
||||
}
|
||||
|
||||
return batch;
|
||||
}
|
||||
|
||||
public Batch eventReminder(CrmBatch crmBatch) {
|
||||
|
||||
return Beans.get(BatchEventReminder.class).run(crmBatch);
|
||||
}
|
||||
|
||||
public Batch target(CrmBatch crmBatch) {
|
||||
|
||||
return Beans.get(BatchTarget.class).run(crmBatch);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.service.config;
|
||||
|
||||
import com.axelor.apps.base.db.Company;
|
||||
import com.axelor.apps.crm.db.CrmConfig;
|
||||
import com.axelor.apps.crm.exception.IExceptionMessage;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
|
||||
public class CrmConfigService {
|
||||
|
||||
public CrmConfig getCrmConfig(Company company) throws AxelorException {
|
||||
CrmConfig crmConfig = company.getCrmConfig();
|
||||
|
||||
if (crmConfig == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.CRM_CONFIG_1),
|
||||
company.getName());
|
||||
}
|
||||
return crmConfig;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.translation;
|
||||
|
||||
public interface ITranslation {
|
||||
|
||||
public static final String CRM_APP_NAME = /*$$(*/ "value:CRM"; /*)*/
|
||||
public static final String SALE_QUOTATION = /*$$(*/ "Sale quotation" /*)*/;
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.web;
|
||||
|
||||
import com.axelor.apps.crm.service.app.AppCrmService;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
|
||||
public class AppCrmController {
|
||||
|
||||
public void generateCrmConfigurations(ActionRequest request, ActionResponse response) {
|
||||
|
||||
Beans.get(AppCrmService.class).generateCrmConfigurations();
|
||||
|
||||
response.setReload(true);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.web;
|
||||
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.auth.AuthUtils;
|
||||
import com.axelor.auth.db.User;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.meta.schema.actions.ActionView;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class CalendarController {
|
||||
|
||||
private final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||
|
||||
public void showMyEvents(ActionRequest request, ActionResponse response) {
|
||||
User user = AuthUtils.getUser();
|
||||
|
||||
response.setView(
|
||||
ActionView.define(I18n.get("My Calendar"))
|
||||
.model(Event.class.getName())
|
||||
.add("calendar", "event-calendar-color-by-calendar")
|
||||
.add("grid", "event-grid")
|
||||
.add("form", "event-form")
|
||||
.context("_typeSelect", 2)
|
||||
.domain(
|
||||
"self.user.id = :_userId or self.calendar.user.id = :_userId or :_userId IN (SELECT attendee.user FROM self.attendees attendee) or self.organizer.user.id = :_userId")
|
||||
.context("_userId", user.getId())
|
||||
.map());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,301 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.web;
|
||||
|
||||
import com.axelor.apps.base.db.Address;
|
||||
import com.axelor.apps.base.db.AppBase;
|
||||
import com.axelor.apps.base.db.Company;
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.base.db.repo.CompanyRepository;
|
||||
import com.axelor.apps.base.db.repo.PartnerRepository;
|
||||
import com.axelor.apps.base.service.app.AppBaseService;
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.crm.db.repo.LeadRepository;
|
||||
import com.axelor.apps.crm.exception.IExceptionMessage;
|
||||
import com.axelor.apps.crm.service.ConvertLeadWizardService;
|
||||
import com.axelor.apps.crm.service.LeadService;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.meta.schema.actions.ActionView;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.axelor.rpc.Context;
|
||||
import com.google.inject.Singleton;
|
||||
import java.util.Map;
|
||||
|
||||
@Singleton
|
||||
public class ConvertLeadWizardController {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void convertLead(ActionRequest request, ActionResponse response) {
|
||||
|
||||
try {
|
||||
Context context = request.getContext();
|
||||
|
||||
Map<String, Object> leadContext = (Map<String, Object>) context.get("_lead");
|
||||
|
||||
Lead lead =
|
||||
Beans.get(LeadRepository.class).find(((Integer) leadContext.get("id")).longValue());
|
||||
|
||||
Partner partner = createPartnerData(context);
|
||||
Partner contactPartner = null;
|
||||
|
||||
if (partner != null) {
|
||||
contactPartner = createContactData(context, partner);
|
||||
}
|
||||
|
||||
try {
|
||||
lead = Beans.get(LeadService.class).convertLead(lead, partner, contactPartner);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(e);
|
||||
}
|
||||
|
||||
if (lead.getPartner() == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_INCONSISTENCY,
|
||||
I18n.get(IExceptionMessage.CONVERT_LEAD_ERROR));
|
||||
}
|
||||
|
||||
openPartner(response, lead);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private Partner createPartnerData(Context context) throws AxelorException {
|
||||
|
||||
Integer leadToPartnerSelect = (Integer) context.get("leadToPartnerSelect");
|
||||
ConvertLeadWizardService convertLeadWizardService = Beans.get(ConvertLeadWizardService.class);
|
||||
Partner partner = null;
|
||||
|
||||
if (leadToPartnerSelect == LeadRepository.CONVERT_LEAD_CREATE_PARTNER) {
|
||||
Address primaryAddress = convertLeadWizardService.createPrimaryAddress(context);
|
||||
if (primaryAddress != null
|
||||
&& (primaryAddress.getAddressL6() == null
|
||||
|| primaryAddress.getAddressL7Country() == null)) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_MISSING_FIELD,
|
||||
I18n.get(IExceptionMessage.LEAD_PARTNER_MISSING_ADDRESS));
|
||||
}
|
||||
partner =
|
||||
convertLeadWizardService.createPartner(
|
||||
(Map<String, Object>) context.get("partner"), primaryAddress);
|
||||
// TODO check all required fields...
|
||||
} else if (leadToPartnerSelect == LeadRepository.CONVERT_LEAD_SELECT_PARTNER) {
|
||||
Map<String, Object> selectPartnerContext = (Map<String, Object>) context.get("selectPartner");
|
||||
partner =
|
||||
Beans.get(PartnerRepository.class)
|
||||
.find(((Integer) selectPartnerContext.get("id")).longValue());
|
||||
if (!partner.getIsCustomer()) {
|
||||
partner.setIsProspect(true);
|
||||
}
|
||||
}
|
||||
|
||||
return partner;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private Partner createContactData(Context context, Partner partner) throws AxelorException {
|
||||
|
||||
Partner contactPartner = null;
|
||||
Integer leadToContactSelect = (Integer) context.get("leadToContactSelect");
|
||||
ConvertLeadWizardService convertLeadWizardService = Beans.get(ConvertLeadWizardService.class);
|
||||
|
||||
if (leadToContactSelect == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (leadToContactSelect == LeadRepository.CONVERT_LEAD_CREATE_CONTACT
|
||||
&& partner.getPartnerTypeSelect() != PartnerRepository.PARTNER_TYPE_INDIVIDUAL) {
|
||||
Address primaryAddress = convertLeadWizardService.createPrimaryAddress(context);
|
||||
if (primaryAddress != null
|
||||
&& (primaryAddress.getAddressL6() == null
|
||||
|| primaryAddress.getAddressL7Country() == null)) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_MISSING_FIELD,
|
||||
I18n.get(IExceptionMessage.LEAD_CONTACT_MISSING_ADDRESS));
|
||||
}
|
||||
|
||||
contactPartner =
|
||||
convertLeadWizardService.createPartner(
|
||||
(Map<String, Object>) context.get("contactPartner"), primaryAddress);
|
||||
contactPartner.setIsContact(true);
|
||||
// TODO check all required fields...
|
||||
} else if (leadToContactSelect == LeadRepository.CONVERT_LEAD_SELECT_CONTACT
|
||||
&& partner.getPartnerTypeSelect() != PartnerRepository.PARTNER_TYPE_INDIVIDUAL) {
|
||||
Map<String, Object> selectContactContext = (Map<String, Object>) context.get("selectContact");
|
||||
contactPartner =
|
||||
Beans.get(PartnerRepository.class)
|
||||
.find(((Integer) selectContactContext.get("id")).longValue());
|
||||
}
|
||||
|
||||
return contactPartner;
|
||||
}
|
||||
|
||||
private void openPartner(ActionResponse response, Lead lead) {
|
||||
|
||||
Partner partner = lead.getPartner();
|
||||
String form = "partner-customer-form";
|
||||
String grid = "partner-customer-grid";
|
||||
|
||||
if (partner.getIsSupplier() && !partner.getIsCustomer() && !partner.getIsProspect()) {
|
||||
form = "partner-supplier-form";
|
||||
grid = "partner-supplier-grid";
|
||||
}
|
||||
|
||||
response.setFlash(I18n.get(IExceptionMessage.CONVERT_LEAD_1));
|
||||
response.setCanClose(true);
|
||||
response.setView(
|
||||
ActionView.define(I18n.get(IExceptionMessage.CONVERT_LEAD_1))
|
||||
.model(Partner.class.getName())
|
||||
.add("form", form)
|
||||
.add("grid", grid)
|
||||
.context("_showRecord", partner.getId())
|
||||
.map());
|
||||
}
|
||||
|
||||
public void setDefaults(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
|
||||
Lead lead = findLead(request);
|
||||
|
||||
response.setAttr("$primaryAddress", "value", lead.getPrimaryAddress());
|
||||
response.setAttr("$primaryCity", "value", lead.getPrimaryCity());
|
||||
response.setAttr("$primaryState", "value", lead.getPrimaryState());
|
||||
response.setAttr("$primaryPostalCode", "value", lead.getPrimaryPostalCode());
|
||||
response.setAttr("$primaryCountry", "value", lead.getPrimaryCountry());
|
||||
response.setAttr("$contactAddress", "value", lead.getPrimaryAddress());
|
||||
response.setAttr("$contactCity", "value", lead.getPrimaryCity());
|
||||
response.setAttr("$contactState", "value", lead.getPrimaryState());
|
||||
response.setAttr("$contactPostalCode", "value", lead.getPrimaryPostalCode());
|
||||
response.setAttr("$contactCountry", "value", lead.getPrimaryCountry());
|
||||
response.setAttr("$leadToPartnerSelect", "value", 1);
|
||||
response.setAttr("$leadToContactSelect", "value", 1);
|
||||
}
|
||||
|
||||
public void setPartnerDefaults(ActionRequest request, ActionResponse response)
|
||||
throws AxelorException {
|
||||
|
||||
Lead lead = findLead(request);
|
||||
|
||||
AppBase appBase = Beans.get(AppBaseService.class).getAppBase();
|
||||
response.setAttr("name", "value", lead.getEnterpriseName());
|
||||
response.setAttr("industrySector", "value", lead.getIndustrySector());
|
||||
response.setAttr("titleSelect", "value", lead.getTitleSelect());
|
||||
response.setAttr("emailAddress", "value", lead.getEmailAddress());
|
||||
response.setAttr("fax", "value", lead.getFax());
|
||||
response.setAttr("mobilePhone", "value", lead.getMobilePhone());
|
||||
response.setAttr("fixedPhone", "value", lead.getFixedPhone());
|
||||
response.setAttr("webSite", "value", lead.getWebSite());
|
||||
response.setAttr("source", "value", lead.getSource());
|
||||
response.setAttr("department", "value", lead.getDepartment());
|
||||
response.setAttr("team", "value", lead.getTeam());
|
||||
response.setAttr("user", "value", lead.getUser());
|
||||
response.setAttr("isProspect", "value", true);
|
||||
response.setAttr("partnerTypeSelect", "value", "1");
|
||||
response.setAttr("language", "value", appBase.getDefaultPartnerLanguage());
|
||||
}
|
||||
|
||||
public void setIndividualPartner(ActionRequest request, ActionResponse response)
|
||||
throws AxelorException {
|
||||
|
||||
Lead lead = findLead(request);
|
||||
|
||||
response.setAttr("firstName", "value", lead.getFirstName());
|
||||
response.setAttr("name", "value", lead.getName());
|
||||
}
|
||||
|
||||
public void setContactDefaults(ActionRequest request, ActionResponse response)
|
||||
throws AxelorException {
|
||||
|
||||
Lead lead = findLead(request);
|
||||
|
||||
response.setAttr("firstName", "value", lead.getFirstName());
|
||||
response.setAttr("name", "value", lead.getName());
|
||||
response.setAttr("titleSelect", "value", lead.getTitleSelect());
|
||||
response.setAttr("emailAddress", "value", lead.getEmailAddress());
|
||||
response.setAttr("fax", "value", lead.getFax());
|
||||
response.setAttr("mobilePhone", "value", lead.getMobilePhone());
|
||||
response.setAttr("fixedPhone", "value", lead.getFixedPhone());
|
||||
response.setAttr("user", "value", lead.getUser());
|
||||
response.setAttr("team", "value", lead.getTeam());
|
||||
response.setAttr("jobTitleFunction", "value", lead.getJobTitleFunction());
|
||||
}
|
||||
|
||||
public void setConvertLeadIntoOpportunity(ActionRequest request, ActionResponse response)
|
||||
throws AxelorException {
|
||||
|
||||
Lead lead = findLead(request);
|
||||
|
||||
AppBase appBase = Beans.get(AppBaseService.class).getAppBase();
|
||||
response.setAttr("lead", "value", lead);
|
||||
response.setAttr("amount", "value", lead.getEstimatedBudget());
|
||||
response.setAttr("customerDescription", "value", lead.getDescription());
|
||||
response.setAttr("source", "value", lead.getSource());
|
||||
response.setAttr("partner", "value", lead.getPartner());
|
||||
response.setAttr("user", "value", lead.getUser());
|
||||
response.setAttr("team", "value", lead.getTeam());
|
||||
response.setAttr("webSite", "value", lead.getWebSite());
|
||||
response.setAttr("source", "value", lead.getSource());
|
||||
response.setAttr("department", "value", lead.getDepartment());
|
||||
response.setAttr("isCustomer", "value", true);
|
||||
response.setAttr("partnerTypeSelect", "value", "1");
|
||||
response.setAttr("language", "value", appBase.getDefaultPartnerLanguage());
|
||||
|
||||
Company company = null;
|
||||
CompanyRepository companyRepo = Beans.get(CompanyRepository.class);
|
||||
|
||||
if (lead.getUser() != null && lead.getUser().getActiveCompany() != null) {
|
||||
company = lead.getUser().getActiveCompany();
|
||||
} else if (companyRepo.all().count() == 1) {
|
||||
company = companyRepo.all().fetchOne();
|
||||
}
|
||||
|
||||
if (company != null) {
|
||||
response.setAttr("company", "value", company);
|
||||
response.setAttr("currency", "value", company.getCurrency());
|
||||
}
|
||||
}
|
||||
|
||||
protected Lead findLead(ActionRequest request) throws AxelorException {
|
||||
|
||||
Context context = request.getContext();
|
||||
|
||||
Lead lead = null;
|
||||
|
||||
if (context.getParent() != null
|
||||
&& context.getParent().get("_model").equals("com.axelor.apps.base.db.Wizard")) {
|
||||
context = context.getParent();
|
||||
}
|
||||
|
||||
Map leadMap = (Map) context.get("_lead");
|
||||
if (leadMap != null && leadMap.get("id") != null) {
|
||||
lead = Beans.get(LeadRepository.class).find(Long.parseLong(leadMap.get("id").toString()));
|
||||
}
|
||||
|
||||
if (lead == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_NO_VALUE, I18n.get(IExceptionMessage.CONVERT_LEAD_MISSING));
|
||||
}
|
||||
|
||||
return lead;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.web;
|
||||
|
||||
import com.axelor.apps.base.db.Batch;
|
||||
import com.axelor.apps.crm.db.CrmBatch;
|
||||
import com.axelor.apps.crm.db.repo.CrmBatchRepository;
|
||||
import com.axelor.apps.crm.service.batch.CrmBatchService;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.inject.Singleton;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Singleton
|
||||
public class CrmBatchController {
|
||||
|
||||
/**
|
||||
* Lancer le batch de relance
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
public void actionEventReminder(ActionRequest request, ActionResponse response) {
|
||||
|
||||
CrmBatch crmBatch = request.getContext().asType(CrmBatch.class);
|
||||
|
||||
Batch batch =
|
||||
Beans.get(CrmBatchService.class)
|
||||
.eventReminder(Beans.get(CrmBatchRepository.class).find(crmBatch.getId()));
|
||||
|
||||
if (batch != null) response.setFlash(batch.getComments());
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Lancer le batch des objectifs
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
public void actionTarget(ActionRequest request, ActionResponse response) {
|
||||
|
||||
CrmBatch crmBatch = request.getContext().asType(CrmBatch.class);
|
||||
|
||||
Batch batch =
|
||||
Beans.get(CrmBatchService.class)
|
||||
.target(Beans.get(CrmBatchRepository.class).find(crmBatch.getId()));
|
||||
|
||||
if (batch != null) response.setFlash(batch.getComments());
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
// WS
|
||||
|
||||
/**
|
||||
* Lancer le batch à travers un web service.
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @throws AxelorException
|
||||
*/
|
||||
public void run(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
|
||||
Batch batch = Beans.get(CrmBatchService.class).run((String) request.getContext().get("code"));
|
||||
Map<String, Object> mapData = new HashMap<String, Object>();
|
||||
mapData.put("anomaly", batch.getAnomaly());
|
||||
response.setData(mapData);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,648 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.web;
|
||||
|
||||
import com.axelor.apps.ReportFactory;
|
||||
import com.axelor.apps.base.report.IReport;
|
||||
import com.axelor.apps.base.service.MapService;
|
||||
import com.axelor.apps.base.service.app.AppBaseService;
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.crm.db.EventReminder;
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.crm.db.RecurrenceConfiguration;
|
||||
import com.axelor.apps.crm.db.repo.EventReminderRepository;
|
||||
import com.axelor.apps.crm.db.repo.EventRepository;
|
||||
import com.axelor.apps.crm.db.repo.LeadRepository;
|
||||
import com.axelor.apps.crm.db.repo.RecurrenceConfigurationRepository;
|
||||
import com.axelor.apps.crm.exception.IExceptionMessage;
|
||||
import com.axelor.apps.crm.service.CalendarService;
|
||||
import com.axelor.apps.crm.service.EventService;
|
||||
import com.axelor.apps.crm.service.LeadService;
|
||||
import com.axelor.apps.message.db.EmailAddress;
|
||||
import com.axelor.apps.purchase.db.ImportationFolder;
|
||||
import com.axelor.apps.purchase.db.repo.ImportationFolderRepository;
|
||||
import com.axelor.apps.report.engine.ReportSettings;
|
||||
import com.axelor.apps.tool.date.DateTool;
|
||||
import com.axelor.apps.tool.date.DurationTool;
|
||||
import com.axelor.auth.AuthUtils;
|
||||
import com.axelor.auth.db.User;
|
||||
import com.axelor.base.service.ical.ICalendarEventService;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.meta.schema.actions.ActionView;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@Singleton
|
||||
public class EventController {
|
||||
|
||||
@Inject ImportationFolderRepository importationFolderRepository;
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||
|
||||
public void computeFromStartDateTime(ActionRequest request, ActionResponse response) {
|
||||
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
|
||||
LOG.debug("event : {}", event);
|
||||
|
||||
if (event.getStartDateTime() != null) {
|
||||
if (event.getDuration() != null && event.getDuration() != 0) {
|
||||
response.setValue(
|
||||
"endDateTime", DateTool.plusSeconds(event.getStartDateTime(), event.getDuration()));
|
||||
} else if (event.getEndDateTime() != null
|
||||
&& event.getEndDateTime().isAfter(event.getStartDateTime())) {
|
||||
Duration duration =
|
||||
DurationTool.computeDuration(event.getStartDateTime(), event.getEndDateTime());
|
||||
response.setValue("duration", DurationTool.getSecondsDuration(duration));
|
||||
} else {
|
||||
Duration duration = Duration.ofHours(1);
|
||||
response.setValue("duration", DurationTool.getSecondsDuration(duration));
|
||||
response.setValue("endDateTime", event.getStartDateTime().plus(duration));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void computeFromEndDateTime(ActionRequest request, ActionResponse response) {
|
||||
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
|
||||
LOG.debug("event : {}", event);
|
||||
|
||||
if (event.getEndDateTime() != null) {
|
||||
if (event.getStartDateTime() != null
|
||||
&& event.getStartDateTime().isBefore(event.getEndDateTime())) {
|
||||
Duration duration =
|
||||
DurationTool.computeDuration(event.getStartDateTime(), event.getEndDateTime());
|
||||
response.setValue("duration", DurationTool.getSecondsDuration(duration));
|
||||
} else if (event.getDuration() != null) {
|
||||
response.setValue(
|
||||
"startDateTime", DateTool.minusSeconds(event.getEndDateTime(), event.getDuration()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void computeFromDuration(ActionRequest request, ActionResponse response) {
|
||||
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
|
||||
LOG.debug("event : {}", event);
|
||||
|
||||
if (event.getDuration() != null) {
|
||||
if (event.getStartDateTime() != null) {
|
||||
response.setValue(
|
||||
"endDateTime", DateTool.plusSeconds(event.getStartDateTime(), event.getDuration()));
|
||||
} else if (event.getEndDateTime() != null) {
|
||||
response.setValue(
|
||||
"startDateTime", DateTool.minusSeconds(event.getEndDateTime(), event.getDuration()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void computeFromCalendar(ActionRequest request, ActionResponse response) {
|
||||
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
|
||||
LOG.debug("event : {}", event);
|
||||
|
||||
if (event.getStartDateTime() != null && event.getEndDateTime() != null) {
|
||||
Duration duration =
|
||||
DurationTool.computeDuration(event.getStartDateTime(), event.getEndDateTime());
|
||||
response.setValue("duration", DurationTool.getSecondsDuration(duration));
|
||||
}
|
||||
}
|
||||
|
||||
public void saveEventTaskStatusSelect(ActionRequest request, ActionResponse response)
|
||||
throws AxelorException {
|
||||
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
Event persistEvent = Beans.get(EventRepository.class).find(event.getId());
|
||||
persistEvent.setStatusSelect(event.getStatusSelect());
|
||||
Beans.get(EventService.class).saveEvent(persistEvent);
|
||||
}
|
||||
|
||||
public void saveEventTicketStatusSelect(ActionRequest request, ActionResponse response)
|
||||
throws AxelorException {
|
||||
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
Event persistEvent = Beans.get(EventRepository.class).find(event.getId());
|
||||
persistEvent.setStatusSelect(event.getStatusSelect());
|
||||
Beans.get(EventService.class).saveEvent(persistEvent);
|
||||
}
|
||||
|
||||
public void viewMap(ActionRequest request, ActionResponse response) {
|
||||
try {
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
if (event.getLocation() != null) {
|
||||
Map<String, Object> result = Beans.get(MapService.class).getMap(event.getLocation());
|
||||
if (result != null) {
|
||||
Map<String, Object> mapView = new HashMap<>();
|
||||
mapView.put("title", "Map");
|
||||
mapView.put("resource", result.get("url"));
|
||||
mapView.put("viewType", "html");
|
||||
response.setView(mapView);
|
||||
} else
|
||||
response.setFlash(
|
||||
String.format(
|
||||
I18n.get(com.axelor.apps.base.exceptions.IExceptionMessage.ADDRESS_5),
|
||||
event.getLocation()));
|
||||
} else response.setFlash(I18n.get(IExceptionMessage.EVENT_1));
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public void assignToMeLead(ActionRequest request, ActionResponse response) {
|
||||
|
||||
LeadService leadService = Beans.get(LeadService.class);
|
||||
LeadRepository leadRepo = Beans.get(LeadRepository.class);
|
||||
|
||||
if (request.getContext().get("id") != null) {
|
||||
Lead lead = leadRepo.find((Long) request.getContext().get("id"));
|
||||
lead.setUser(AuthUtils.getUser());
|
||||
if (lead.getStatusSelect() == LeadRepository.LEAD_STATUS_NEW)
|
||||
lead.setStatusSelect(LeadRepository.LEAD_STATUS_ASSIGNED);
|
||||
leadService.saveLead(lead);
|
||||
} else if (((List) request.getContext().get("_ids")) != null) {
|
||||
for (Lead lead :
|
||||
leadRepo.all().filter("id in ?1", request.getContext().get("_ids")).fetch()) {
|
||||
lead.setUser(AuthUtils.getUser());
|
||||
if (lead.getStatusSelect() == LeadRepository.LEAD_STATUS_NEW)
|
||||
lead.setStatusSelect(LeadRepository.LEAD_STATUS_ASSIGNED);
|
||||
leadService.saveLead(lead);
|
||||
}
|
||||
}
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public void assignToMeEvent(ActionRequest request, ActionResponse response) {
|
||||
|
||||
EventRepository eventRepository = Beans.get(EventRepository.class);
|
||||
|
||||
if (request.getContext().get("id") != null) {
|
||||
Event event = eventRepository.find((Long) request.getContext().get("id"));
|
||||
event.setUser(AuthUtils.getUser());
|
||||
Beans.get(EventService.class).saveEvent(event);
|
||||
} else if (!((List) request.getContext().get("_ids")).isEmpty()) {
|
||||
for (Event event :
|
||||
eventRepository.all().filter("id in ?1", request.getContext().get("_ids")).fetch()) {
|
||||
event.setUser(AuthUtils.getUser());
|
||||
Beans.get(EventService.class).saveEvent(event);
|
||||
}
|
||||
}
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
public void manageFollowers(ActionRequest request, ActionResponse response)
|
||||
throws AxelorException {
|
||||
try {
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
event = Beans.get(EventRepository.class).find(event.getId());
|
||||
Beans.get(EventService.class).manageFollowers(event);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public void generateRecurrentEvents(ActionRequest request, ActionResponse response)
|
||||
throws AxelorException {
|
||||
try {
|
||||
Long eventId = (Long) request.getContext().get("id");
|
||||
if (eventId == null)
|
||||
throw new AxelorException(
|
||||
Event.class,
|
||||
TraceBackRepository.CATEGORY_INCONSISTENCY,
|
||||
I18n.get(IExceptionMessage.EVENT_SAVED));
|
||||
Event event = Beans.get(EventRepository.class).find(eventId);
|
||||
|
||||
RecurrenceConfigurationRepository confRepo =
|
||||
Beans.get(RecurrenceConfigurationRepository.class);
|
||||
RecurrenceConfiguration conf = event.getRecurrenceConfiguration();
|
||||
if (conf != null) {
|
||||
conf = confRepo.save(conf);
|
||||
Beans.get(EventService.class).generateRecurrentEvents(event, conf);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteThis(ActionRequest request, ActionResponse response) {
|
||||
Long eventId = new Long(request.getContext().getParent().get("id").toString());
|
||||
EventRepository eventRepository = Beans.get(EventRepository.class);
|
||||
Event event = eventRepository.find(eventId);
|
||||
Event child =
|
||||
eventRepository.all().filter("self.parentEvent.id = ?1", event.getId()).fetchOne();
|
||||
if (child != null) {
|
||||
child.setParentEvent(event.getParentEvent());
|
||||
}
|
||||
eventRepository.remove(event);
|
||||
response.setCanClose(true);
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteNext(ActionRequest request, ActionResponse response) {
|
||||
Long eventId = new Long(request.getContext().getParent().get("id").toString());
|
||||
EventRepository eventRepository = Beans.get(EventRepository.class);
|
||||
Event event = eventRepository.find(eventId);
|
||||
Event child =
|
||||
eventRepository.all().filter("self.parentEvent.id = ?1", event.getId()).fetchOne();
|
||||
while (child != null) {
|
||||
child.setParentEvent(null);
|
||||
eventRepository.remove(event);
|
||||
event = child;
|
||||
child = eventRepository.all().filter("self.parentEvent.id = ?1", event.getId()).fetchOne();
|
||||
}
|
||||
response.setCanClose(true);
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void deleteAll(ActionRequest request, ActionResponse response) {
|
||||
Long eventId = new Long(request.getContext().getParent().get("id").toString());
|
||||
EventRepository eventRepository = Beans.get(EventRepository.class);
|
||||
Event event = eventRepository.find(eventId);
|
||||
Event child =
|
||||
eventRepository.all().filter("self.parentEvent.id = ?1", event.getId()).fetchOne();
|
||||
Event parent = event.getParentEvent();
|
||||
while (child != null) {
|
||||
child.setParentEvent(null);
|
||||
eventRepository.remove(event);
|
||||
event = child;
|
||||
child = eventRepository.all().filter("self.parentEvent.id = ?1", event.getId()).fetchOne();
|
||||
}
|
||||
while (parent != null) {
|
||||
Event nextParent = parent.getParentEvent();
|
||||
eventRepository.remove(parent);
|
||||
parent = nextParent;
|
||||
}
|
||||
response.setCanClose(true);
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public void changeAll(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
Long eventId = new Long(request.getContext().getParent().get("id").toString());
|
||||
EventRepository eventRepository = Beans.get(EventRepository.class);
|
||||
Event event = eventRepository.find(eventId);
|
||||
|
||||
Event child =
|
||||
eventRepository.all().filter("self.parentEvent.id = ?1", event.getId()).fetchOne();
|
||||
Event parent = event.getParentEvent();
|
||||
child.setParentEvent(null);
|
||||
Event eventDeleted = child;
|
||||
child =
|
||||
eventRepository.all().filter("self.parentEvent.id = ?1", eventDeleted.getId()).fetchOne();
|
||||
while (child != null) {
|
||||
child.setParentEvent(null);
|
||||
eventRepository.remove(eventDeleted);
|
||||
eventDeleted = child;
|
||||
child =
|
||||
eventRepository.all().filter("self.parentEvent.id = ?1", eventDeleted.getId()).fetchOne();
|
||||
}
|
||||
while (parent != null) {
|
||||
Event nextParent = parent.getParentEvent();
|
||||
eventRepository.remove(parent);
|
||||
parent = nextParent;
|
||||
}
|
||||
|
||||
RecurrenceConfiguration conf = request.getContext().asType(RecurrenceConfiguration.class);
|
||||
RecurrenceConfigurationRepository confRepo = Beans.get(RecurrenceConfigurationRepository.class);
|
||||
conf = confRepo.save(conf);
|
||||
event.setRecurrenceConfiguration(conf);
|
||||
event = eventRepository.save(event);
|
||||
if (conf.getRecurrenceType() == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_RECURRENCE_TYPE));
|
||||
}
|
||||
|
||||
int recurrenceType = conf.getRecurrenceType();
|
||||
|
||||
if (conf.getPeriodicity() == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_PERIODICITY));
|
||||
}
|
||||
|
||||
int periodicity = conf.getPeriodicity();
|
||||
|
||||
if (periodicity < 1) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_PERIODICITY));
|
||||
}
|
||||
|
||||
boolean monday = conf.getMonday();
|
||||
boolean tuesday = conf.getTuesday();
|
||||
boolean wednesday = conf.getWednesday();
|
||||
boolean thursday = conf.getThursday();
|
||||
boolean friday = conf.getFriday();
|
||||
boolean saturday = conf.getSaturday();
|
||||
boolean sunday = conf.getSunday();
|
||||
Map<Integer, Boolean> daysMap = new HashMap<Integer, Boolean>();
|
||||
Map<Integer, Boolean> daysCheckedMap = new HashMap<Integer, Boolean>();
|
||||
if (recurrenceType == 2) {
|
||||
daysMap.put(DayOfWeek.MONDAY.getValue(), monday);
|
||||
daysMap.put(DayOfWeek.TUESDAY.getValue(), tuesday);
|
||||
daysMap.put(DayOfWeek.WEDNESDAY.getValue(), wednesday);
|
||||
daysMap.put(DayOfWeek.THURSDAY.getValue(), thursday);
|
||||
daysMap.put(DayOfWeek.FRIDAY.getValue(), friday);
|
||||
daysMap.put(DayOfWeek.SATURDAY.getValue(), saturday);
|
||||
daysMap.put(DayOfWeek.SUNDAY.getValue(), sunday);
|
||||
|
||||
for (Integer day : daysMap.keySet()) {
|
||||
if (daysMap.get(day)) {
|
||||
daysCheckedMap.put(day, daysMap.get(day));
|
||||
}
|
||||
}
|
||||
if (daysMap.isEmpty()) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_DAYS_CHECKED));
|
||||
}
|
||||
}
|
||||
|
||||
int monthRepeatType = conf.getMonthRepeatType();
|
||||
|
||||
int endType = conf.getEndType();
|
||||
|
||||
int repetitionsNumber = 0;
|
||||
|
||||
if (endType == 1) {
|
||||
if (conf.getRepetitionsNumber() == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_REPETITION_NUMBER));
|
||||
}
|
||||
|
||||
repetitionsNumber = conf.getRepetitionsNumber();
|
||||
|
||||
if (repetitionsNumber < 1) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
IExceptionMessage.RECURRENCE_REPETITION_NUMBER);
|
||||
}
|
||||
}
|
||||
LocalDate endDate = LocalDate.now();
|
||||
if (endType == 2) {
|
||||
if (conf.getEndDate() == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_END_DATE));
|
||||
}
|
||||
|
||||
endDate = conf.getEndDate();
|
||||
|
||||
if (endDate.isBefore(event.getStartDateTime().toLocalDate())
|
||||
&& endDate.isEqual(event.getStartDateTime().toLocalDate())) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.RECURRENCE_END_DATE));
|
||||
}
|
||||
}
|
||||
switch (recurrenceType) {
|
||||
case 1:
|
||||
Beans.get(EventService.class)
|
||||
.addRecurrentEventsByDays(event, periodicity, endType, repetitionsNumber, endDate);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
Beans.get(EventService.class)
|
||||
.addRecurrentEventsByWeeks(
|
||||
event, periodicity, endType, repetitionsNumber, endDate, daysCheckedMap);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
Beans.get(EventService.class)
|
||||
.addRecurrentEventsByMonths(
|
||||
event, periodicity, endType, repetitionsNumber, endDate, monthRepeatType);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
Beans.get(EventService.class)
|
||||
.addRecurrentEventsByYears(event, periodicity, endType, repetitionsNumber, endDate);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
response.setCanClose(true);
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
public void applyChangesToAll(ActionRequest request, ActionResponse response) {
|
||||
EventRepository eventRepository = Beans.get(EventRepository.class);
|
||||
Event thisEvent =
|
||||
eventRepository.find(new Long(request.getContext().get("_idEvent").toString()));
|
||||
Event event = eventRepository.find(thisEvent.getId());
|
||||
|
||||
Beans.get(EventService.class).applyChangesToAll(event);
|
||||
response.setCanClose(true);
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
public void computeRecurrenceName(ActionRequest request, ActionResponse response) {
|
||||
RecurrenceConfiguration recurrConf = request.getContext().asType(RecurrenceConfiguration.class);
|
||||
response.setValue(
|
||||
"recurrenceName", Beans.get(EventService.class).computeRecurrenceName(recurrConf));
|
||||
}
|
||||
|
||||
public void setCalendarDomain(ActionRequest request, ActionResponse response) {
|
||||
User user = AuthUtils.getUser();
|
||||
List<Long> calendarIdlist = Beans.get(CalendarService.class).showSharedCalendars(user);
|
||||
if (calendarIdlist.isEmpty()) {
|
||||
response.setAttr("calendar", "domain", "self.id is null");
|
||||
} else {
|
||||
response.setAttr(
|
||||
"calendar", "domain", "self.id in (" + Joiner.on(",").join(calendarIdlist) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
public void checkRights(ActionRequest request, ActionResponse response) {
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
User user = AuthUtils.getUser();
|
||||
List<Long> calendarIdlist = Beans.get(CalendarService.class).showSharedCalendars(user);
|
||||
if (calendarIdlist.isEmpty() || !calendarIdlist.contains(event.getCalendar().getId())) {
|
||||
response.setAttr("meetingGeneralPanel", "readonly", "true");
|
||||
response.setAttr("addGuestsPanel", "readonly", "true");
|
||||
response.setAttr("meetingAttributesPanel", "readonly", "true");
|
||||
response.setAttr("meetingLinkedPanel", "readonly", "true");
|
||||
}
|
||||
}
|
||||
|
||||
public void changeCreator(ActionRequest request, ActionResponse response) {
|
||||
User user = AuthUtils.getUser();
|
||||
response.setValue("organizer", Beans.get(CalendarService.class).findOrCreateUser(user));
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to add attendees/guests from partner or contact partner or lead
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
public void addGuest(ActionRequest request, ActionResponse response) {
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
try {
|
||||
EmailAddress emailAddress = Beans.get(EventService.class).getEmailAddress(event);
|
||||
if (emailAddress != null) {
|
||||
response.setValue(
|
||||
"attendees", Beans.get(ICalendarEventService.class).addEmailGuest(emailAddress, event));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public void deleteReminder(ActionRequest request, ActionResponse response) {
|
||||
try {
|
||||
EventReminderRepository eventReminderRepository = Beans.get(EventReminderRepository.class);
|
||||
|
||||
EventReminder eventReminder =
|
||||
eventReminderRepository.find((long) request.getContext().get("id"));
|
||||
eventReminderRepository.remove(eventReminder);
|
||||
response.setCanClose(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void setImportationFolderEvent(ActionRequest request, ActionResponse response) {
|
||||
Event event = new Event();
|
||||
|
||||
final ArrayList<String> importationSequences =
|
||||
new ArrayList(
|
||||
Arrays.asList(
|
||||
"PREPARATION",
|
||||
"ENTAME",
|
||||
"VALIDATION COA/FICHE TECHNIQUE",
|
||||
"LOGISTIQUE",
|
||||
"TRANSIT",
|
||||
"DEDOUANEMENT",
|
||||
"RECEPTION"));
|
||||
|
||||
ImportationFolder importationFolder =
|
||||
Beans.get(ImportationFolderRepository.class)
|
||||
.find(request.getContext().asType(ImportationFolder.class).getId());
|
||||
event.setSubject(
|
||||
importationSequences.get(
|
||||
Integer.parseInt(request.getContext().get("statusSelect").toString())));
|
||||
event.setStatusSelect(1);
|
||||
event.setStartDateTime(LocalDateTime.now());
|
||||
event.setEndDateTime(LocalDateTime.now().plusDays(10));
|
||||
event.setUser(AuthUtils.getUser());
|
||||
Beans.get(EventRepository.class).save(event);
|
||||
Beans.get(EventRepository.class).flush();
|
||||
importationFolder.addEvent(event);
|
||||
Beans.get(ImportationFolderRepository.class).save(importationFolder);
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
public void openRoqApplication(ActionRequest request, ActionResponse response) {
|
||||
|
||||
String uri = Beans.get(AppBaseService.class).getAppBase().getRoqURL();
|
||||
|
||||
LOG.debug("link {}", uri + AuthUtils.getUser().getId());
|
||||
|
||||
response.setView(
|
||||
ActionView.define(I18n.get("ROQ"))
|
||||
.model("")
|
||||
.add("html", uri + AuthUtils.getUser().getId())
|
||||
.map());
|
||||
}
|
||||
|
||||
public void printMeeting(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
event = Beans.get(EventRepository.class).find(event.getId());
|
||||
|
||||
String eventName = I18n.get("Event");
|
||||
|
||||
String fileLink =
|
||||
ReportFactory.createReport(IReport.MEETING, event.getSubject() + "-${date}")
|
||||
.addParam("Locale", ReportSettings.getPrintingLocale())
|
||||
.addParam("meetingId", event.getId())
|
||||
.generate()
|
||||
.getFileLink();
|
||||
|
||||
response.setView(ActionView.define(eventName).add("html", fileLink).map());
|
||||
}
|
||||
|
||||
public void sendMailToGuests(ActionRequest request, ActionResponse response)
|
||||
throws AxelorException {
|
||||
|
||||
Event event = request.getContext().asType(Event.class);
|
||||
event = Beans.get(EventRepository.class).find(event.getId());
|
||||
|
||||
Set<User> users = event.getGuestList();
|
||||
if (event.getUser() != null) users.add(event.getUser());
|
||||
users.add(event.getCreatedBy());
|
||||
|
||||
if (!users.isEmpty()) {
|
||||
// Check if all users have an email address
|
||||
for (User user : users) {
|
||||
if (user.getEmail() == null) {
|
||||
response.setFlash(
|
||||
I18n.get(String.format(IExceptionMessage.USER_EMAIL_1, user.getName())));
|
||||
return; // Exit the method if any user lacks an email
|
||||
}
|
||||
}
|
||||
|
||||
// All users have emails; proceed to send emails
|
||||
try {
|
||||
Beans.get(EventService.class).sendEmailMeetingInvitation(event, users);
|
||||
} catch (Exception e) {
|
||||
LOG.error(e.getMessage());
|
||||
return; // Exit if any email fails to send
|
||||
}
|
||||
|
||||
response.setFlash(I18n.get("Emails successfully sent to all guests."));
|
||||
|
||||
} else {
|
||||
response.setFlash(I18n.get(IExceptionMessage.EVENT_MEETING_INVITATION_1));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,177 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.web;
|
||||
|
||||
import com.axelor.apps.ReportFactory;
|
||||
import com.axelor.apps.base.db.ImportConfiguration;
|
||||
import com.axelor.apps.base.db.repo.ImportConfigurationRepository;
|
||||
import com.axelor.apps.base.service.MapService;
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.crm.db.repo.LeadRepository;
|
||||
import com.axelor.apps.crm.db.report.IReport;
|
||||
import com.axelor.apps.crm.exception.IExceptionMessage;
|
||||
import com.axelor.apps.crm.service.LeadService;
|
||||
import com.axelor.apps.report.engine.ReportSettings;
|
||||
import com.axelor.csv.script.ImportLeadConfiguration;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.meta.schema.actions.ActionView;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.inject.Singleton;
|
||||
import java.io.IOException;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.eclipse.birt.core.exception.BirtException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@Singleton
|
||||
public class LeadController {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||
|
||||
/**
|
||||
* Method to generate Lead as a Pdf
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
* @throws BirtException
|
||||
* @throws IOException
|
||||
*/
|
||||
public void print(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
|
||||
Lead lead = request.getContext().asType(Lead.class);
|
||||
String leadIds = "";
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Integer> lstSelectedleads = (List<Integer>) request.getContext().get("_ids");
|
||||
if (lstSelectedleads != null) {
|
||||
for (Integer it : lstSelectedleads) {
|
||||
leadIds += it.toString() + ",";
|
||||
}
|
||||
}
|
||||
|
||||
if (!leadIds.equals("")) {
|
||||
leadIds = leadIds.substring(0, leadIds.length() - 1);
|
||||
lead = Beans.get(LeadRepository.class).find(new Long(lstSelectedleads.get(0)));
|
||||
} else if (lead.getId() != null) {
|
||||
leadIds = lead.getId().toString();
|
||||
}
|
||||
|
||||
if (!leadIds.equals("")) {
|
||||
String title = " ";
|
||||
if (lead.getFirstName() != null) {
|
||||
title += lstSelectedleads == null ? "Lead " + lead.getFirstName() : "Leads";
|
||||
}
|
||||
|
||||
String fileLink =
|
||||
ReportFactory.createReport(IReport.LEAD, title + "-${date}")
|
||||
.addParam("LeadId", leadIds)
|
||||
.addParam("Locale", ReportSettings.getPrintingLocale(lead.getPartner()))
|
||||
.generate()
|
||||
.getFileLink();
|
||||
|
||||
logger.debug("Printing " + title);
|
||||
|
||||
response.setView(ActionView.define(title).add("html", fileLink).map());
|
||||
|
||||
} else {
|
||||
response.setFlash(I18n.get(IExceptionMessage.LEAD_1));
|
||||
}
|
||||
}
|
||||
|
||||
public void showLeadsOnMap(ActionRequest request, ActionResponse response) {
|
||||
try {
|
||||
response.setView(
|
||||
ActionView.define(I18n.get("Leads"))
|
||||
.add("html", Beans.get(MapService.class).getMapURI("lead"))
|
||||
.map());
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void setSocialNetworkUrl(ActionRequest request, ActionResponse response)
|
||||
throws IOException {
|
||||
|
||||
Lead lead = request.getContext().asType(Lead.class);
|
||||
Map<String, String> urlMap =
|
||||
Beans.get(LeadService.class)
|
||||
.getSocialNetworkUrl(lead.getName(), lead.getFirstName(), lead.getEnterpriseName());
|
||||
response.setAttr("googleLabel", "title", urlMap.get("google"));
|
||||
response.setAttr("facebookLabel", "title", urlMap.get("facebook"));
|
||||
response.setAttr("twitterLabel", "title", urlMap.get("twitter"));
|
||||
response.setAttr("linkedinLabel", "title", urlMap.get("linkedin"));
|
||||
response.setAttr("youtubeLabel", "title", urlMap.get("youtube"));
|
||||
}
|
||||
|
||||
public void getLeadImportConfig(ActionRequest request, ActionResponse response) {
|
||||
|
||||
ImportConfiguration leadImportConfig =
|
||||
Beans.get(ImportConfigurationRepository.class)
|
||||
.all()
|
||||
.filter("self.bindMetaFile.fileName = ?1", ImportLeadConfiguration.IMPORT_LEAD_CONFIG)
|
||||
.fetchOne();
|
||||
|
||||
logger.debug("ImportConfig for lead: {}", leadImportConfig);
|
||||
|
||||
if (leadImportConfig == null) {
|
||||
response.setFlash(I18n.get(IExceptionMessage.LEAD_4));
|
||||
} else {
|
||||
response.setView(
|
||||
ActionView.define(I18n.get(IExceptionMessage.LEAD_5))
|
||||
.model("com.axelor.apps.base.db.ImportConfiguration")
|
||||
.add("form", "import-configuration-form")
|
||||
.param("popup", "reload")
|
||||
.param("forceEdit", "true")
|
||||
.param("popup-save", "false")
|
||||
.param("show-toolbar", "false")
|
||||
.context("_showRecord", leadImportConfig.getId().toString())
|
||||
.map());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called from lead view on name change and onLoad. Call {@link
|
||||
* LeadService#isThereDuplicateLead(Lead)}
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
public void checkLeadName(ActionRequest request, ActionResponse response) {
|
||||
Lead lead = request.getContext().asType(Lead.class);
|
||||
response.setAttr(
|
||||
"duplicateLeadText", "hidden", !Beans.get(LeadService.class).isThereDuplicateLead(lead));
|
||||
}
|
||||
|
||||
public void loseLead(ActionRequest request, ActionResponse response) {
|
||||
try {
|
||||
Lead lead = request.getContext().asType(Lead.class);
|
||||
Beans.get(LeadService.class)
|
||||
.loseLead(Beans.get(LeadRepository.class).find(lead.getId()), lead.getLostReason());
|
||||
response.setCanClose(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.web;
|
||||
|
||||
import com.axelor.apps.base.service.MapService;
|
||||
import com.axelor.apps.crm.db.Opportunity;
|
||||
import com.axelor.apps.crm.db.repo.OpportunityRepository;
|
||||
import com.axelor.apps.crm.service.OpportunityService;
|
||||
import com.axelor.auth.AuthUtils;
|
||||
import com.axelor.common.ObjectUtils;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.meta.schema.actions.ActionView;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class OpportunityController {
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public void assignToMe(ActionRequest request, ActionResponse response) {
|
||||
|
||||
OpportunityService opportunityService = Beans.get(OpportunityService.class);
|
||||
OpportunityRepository opportunityRepository = Beans.get(OpportunityRepository.class);
|
||||
if (request.getContext().get("id") != null) {
|
||||
Opportunity opportunity = opportunityRepository.find((Long) request.getContext().get("id"));
|
||||
opportunity.setUser(AuthUtils.getUser());
|
||||
opportunityService.saveOpportunity(opportunity);
|
||||
} else if (ObjectUtils.notEmpty(request.getContext().get("_ids"))) {
|
||||
for (Opportunity opportunity :
|
||||
opportunityRepository
|
||||
.all()
|
||||
.filter("id in ?1", request.getContext().get("_ids"))
|
||||
.fetch()) {
|
||||
opportunity.setUser(AuthUtils.getUser());
|
||||
opportunityService.saveOpportunity(opportunity);
|
||||
}
|
||||
} else {
|
||||
response.setNotify(com.axelor.apps.base.exceptions.IExceptionMessage.RECORD_NONE_SELECTED);
|
||||
return;
|
||||
}
|
||||
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
public void showOpportunitiesOnMap(ActionRequest request, ActionResponse response) {
|
||||
try {
|
||||
response.setView(
|
||||
ActionView.define(I18n.get("Opportunities"))
|
||||
.add("html", Beans.get(MapService.class).getMapURI("opportunity"))
|
||||
.map());
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void createClient(ActionRequest request, ActionResponse response) {
|
||||
try {
|
||||
Opportunity opportunity = request.getContext().asType(Opportunity.class);
|
||||
opportunity = Beans.get(OpportunityRepository.class).find(opportunity.getId());
|
||||
Beans.get(OpportunityService.class).createClientFromLead(opportunity);
|
||||
response.setReload(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(e);
|
||||
response.setError(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.crm.web;
|
||||
|
||||
import com.axelor.apps.crm.db.Target;
|
||||
import com.axelor.apps.crm.db.repo.TargetRepository;
|
||||
import com.axelor.apps.crm.service.TargetService;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class TargetController {
|
||||
|
||||
public void update(ActionRequest request, ActionResponse response) {
|
||||
|
||||
Target target = request.getContext().asType(Target.class);
|
||||
|
||||
try {
|
||||
Beans.get(TargetService.class).update(Beans.get(TargetRepository.class).find(target.getId()));
|
||||
response.setValue("opportunityAmountWon", target.getOpportunityAmountWon());
|
||||
response.setValue("opportunityCreatedNumber", target.getOpportunityCreatedNumber());
|
||||
response.setValue("opportunityCreatedWon", target.getOpportunityCreatedWon());
|
||||
response.setValue("callEmittedNumber", target.getCallEmittedNumber());
|
||||
response.setValue("meetingNumber", target.getMeetingNumber());
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.csv.script;
|
||||
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.crm.db.repo.LeadRepository;
|
||||
import com.axelor.auth.db.User;
|
||||
import com.axelor.auth.db.repo.UserRepository;
|
||||
import com.google.inject.Inject;
|
||||
import java.util.Map;
|
||||
|
||||
public class ImportLead {
|
||||
|
||||
@Inject private UserRepository userRepo;
|
||||
|
||||
@Inject private LeadRepository leadRepo;
|
||||
|
||||
public User importCreatedBy(String importId) {
|
||||
User user = userRepo.all().filter("self.importId = ?1", importId).fetchOne();
|
||||
if (user != null) return user;
|
||||
return userRepo.all().filter("self.code = 'democrm'").fetchOne();
|
||||
}
|
||||
|
||||
public Object saveLead(Object bean, Map<String, Object> values) {
|
||||
|
||||
assert bean instanceof Lead;
|
||||
|
||||
Lead lead = (Lead) bean;
|
||||
|
||||
return leadRepo.save(lead);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.csv.script;
|
||||
|
||||
import com.axelor.apps.base.db.ImportConfiguration;
|
||||
import com.axelor.meta.MetaFiles;
|
||||
import com.google.inject.Inject;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class ImportLeadConfiguration {
|
||||
|
||||
public static final String IMPORT_LEAD_CONFIG = "import-lead-config.xml";
|
||||
public static final String IMPORT_LEAD_CSV = "Lead.csv";
|
||||
public static final String FILES_DIR = "files";
|
||||
|
||||
private final Logger log = LoggerFactory.getLogger(ImportLeadConfiguration.class);
|
||||
@Inject private MetaFiles metaFiles;
|
||||
|
||||
public Object importFiles(Object bean, Map<String, Object> values) {
|
||||
|
||||
assert bean instanceof ImportConfiguration;
|
||||
|
||||
final Path path = (Path) values.get("__path__");
|
||||
|
||||
ImportConfiguration importConfig = (ImportConfiguration) bean;
|
||||
|
||||
try {
|
||||
File file = path.resolve(FILES_DIR + File.separator + IMPORT_LEAD_CONFIG).toFile();
|
||||
importConfig.setBindMetaFile(metaFiles.upload(file));
|
||||
file = path.resolve(FILES_DIR + File.separator + IMPORT_LEAD_CSV).toFile();
|
||||
importConfig.setDataMetaFile(metaFiles.upload(file));
|
||||
} catch (IOException e) {
|
||||
log.debug("Error importing lead import config", e);
|
||||
return null;
|
||||
}
|
||||
|
||||
return importConfig;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.web;
|
||||
|
||||
public interface ITranslation {
|
||||
|
||||
public static final String PIN_CHAR_LEAD = /*$$(*/ "MapRest.PinCharLead" /*)*/;
|
||||
public static final String PIN_CHAR_OPPORTUNITY = /*$$(*/ "MapRest.PinCharOpportunity" /*)*/;
|
||||
}
|
||||
@ -0,0 +1,188 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.web;
|
||||
|
||||
import com.axelor.apps.base.db.Address;
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.base.service.MapRestService;
|
||||
import com.axelor.apps.base.service.MapService;
|
||||
import com.axelor.apps.base.service.PartnerService;
|
||||
import com.axelor.apps.crm.db.Lead;
|
||||
import com.axelor.apps.crm.db.Opportunity;
|
||||
import com.axelor.apps.crm.db.repo.LeadRepository;
|
||||
import com.axelor.apps.crm.db.repo.OpportunityRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.inject.Inject;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
@Path("/map")
|
||||
public class MapRestCrm {
|
||||
|
||||
@Inject private MapRestService mapRestService;
|
||||
|
||||
@Inject private LeadRepository leadRepo;
|
||||
|
||||
@Inject private OpportunityRepository opportunityRepo;
|
||||
|
||||
private JsonNodeFactory factory = JsonNodeFactory.instance;
|
||||
|
||||
@Path("/lead")
|
||||
@GET
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public JsonNode getLeads() {
|
||||
ObjectNode mainNode = factory.objectNode();
|
||||
|
||||
try {
|
||||
List<? extends Lead> leads = leadRepo.all().fetch();
|
||||
ArrayNode arrayNode = factory.arrayNode();
|
||||
|
||||
for (Lead lead : leads) {
|
||||
|
||||
String fullName = lead.getFirstName() + " " + lead.getName();
|
||||
|
||||
if (lead.getEnterpriseName() != null) {
|
||||
fullName = lead.getEnterpriseName() + "<br/>" + fullName;
|
||||
}
|
||||
|
||||
ObjectNode objectNode = factory.objectNode();
|
||||
objectNode.put("fullName", fullName);
|
||||
objectNode.put("fixedPhone", lead.getFixedPhone() != null ? lead.getFixedPhone() : " ");
|
||||
|
||||
if (lead.getEmailAddress() != null) {
|
||||
objectNode.put("emailAddress", lead.getEmailAddress().getAddress());
|
||||
}
|
||||
|
||||
StringBuilder addressString = new StringBuilder();
|
||||
|
||||
if (lead.getPrimaryAddress() != null) {
|
||||
addressString.append(lead.getPrimaryAddress() + "<br/>");
|
||||
}
|
||||
|
||||
if (lead.getPrimaryCity() != null) {
|
||||
addressString.append(lead.getPrimaryCity() + "<br/>");
|
||||
}
|
||||
|
||||
if (lead.getPrimaryPostalCode() != null) {
|
||||
addressString.append(lead.getPrimaryPostalCode() + "<br/>");
|
||||
}
|
||||
|
||||
if (lead.getPrimaryState() != null) {
|
||||
addressString.append(lead.getPrimaryState() + "<br/>");
|
||||
}
|
||||
|
||||
if (lead.getPrimaryCountry() != null) {
|
||||
addressString.append(lead.getPrimaryCountry().getName());
|
||||
}
|
||||
|
||||
String addressFullname = addressString.toString();
|
||||
objectNode.put("address", addressFullname);
|
||||
objectNode.put("pinColor", "yellow");
|
||||
objectNode.put("pinChar", I18n.get(ITranslation.PIN_CHAR_LEAD));
|
||||
|
||||
Map<String, Object> result = Beans.get(MapService.class).getMap(addressFullname);
|
||||
|
||||
if (result != null) {
|
||||
objectNode.put("latit", (BigDecimal) result.get("latitude"));
|
||||
objectNode.put("longit", (BigDecimal) result.get("longitude"));
|
||||
}
|
||||
|
||||
arrayNode.add(objectNode);
|
||||
}
|
||||
|
||||
mapRestService.setData(mainNode, arrayNode);
|
||||
} catch (Exception e) {
|
||||
mapRestService.setError(mainNode, e);
|
||||
}
|
||||
|
||||
return mainNode;
|
||||
}
|
||||
|
||||
@Path("/opportunity")
|
||||
@GET
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public JsonNode getOpportunities() {
|
||||
ObjectNode mainNode = factory.objectNode();
|
||||
|
||||
try {
|
||||
List<? extends Opportunity> opportunities = opportunityRepo.all().fetch();
|
||||
ArrayNode arrayNode = factory.arrayNode();
|
||||
|
||||
for (Opportunity opportunity : opportunities) {
|
||||
|
||||
Partner partner = opportunity.getPartner();
|
||||
|
||||
if (partner == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ObjectNode objectNode = factory.objectNode();
|
||||
|
||||
String currencyCode = "";
|
||||
|
||||
if (opportunity.getCurrency() != null) {
|
||||
currencyCode = opportunity.getCurrency().getCode();
|
||||
}
|
||||
|
||||
String amtLabel = "Amount";
|
||||
|
||||
if (!Strings.isNullOrEmpty(I18n.get("amount"))) {
|
||||
amtLabel = I18n.get("amount");
|
||||
}
|
||||
|
||||
String amount = amtLabel + " : " + opportunity.getAmount() + " " + currencyCode;
|
||||
|
||||
objectNode.put("fullName", opportunity.getName() + "<br/>" + amount);
|
||||
objectNode.put(
|
||||
"fixedPhone", partner.getFixedPhone() != null ? partner.getFixedPhone() : " ");
|
||||
|
||||
if (partner.getEmailAddress() != null) {
|
||||
objectNode.put("emailAddress", partner.getEmailAddress().getAddress());
|
||||
}
|
||||
|
||||
Address address = Beans.get(PartnerService.class).getInvoicingAddress(partner);
|
||||
|
||||
if (address != null) {
|
||||
String addressString = mapRestService.makeAddressString(address, objectNode);
|
||||
objectNode.put("address", addressString);
|
||||
}
|
||||
|
||||
objectNode.put("pinColor", "pink");
|
||||
objectNode.put("pinChar", I18n.get(ITranslation.PIN_CHAR_OPPORTUNITY));
|
||||
arrayNode.add(objectNode);
|
||||
}
|
||||
|
||||
mapRestService.setData(mainNode, arrayNode);
|
||||
} catch (Exception e) {
|
||||
mapRestService.setError(mainNode, e);
|
||||
}
|
||||
|
||||
return mainNode;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="auth_permission.csv" separator=";" type="com.axelor.auth.db.Permission" search="self.name = :name" call="com.axelor.csv.script.ImportPermission:importPermissionToRole">
|
||||
<bind to="canRead" eval="can_read == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canWrite" eval="can_write == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canCreate" eval="can_create == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canRemove" eval="can_remove == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canExport" eval="can_export == 'x' ? 'true' : 'false'"/>
|
||||
</input>
|
||||
|
||||
<input file="base_appCrm.csv" separator=";" type="com.axelor.apps.base.db.AppCrm"
|
||||
call="com.axelor.csv.script.ImportApp:importApp">
|
||||
<bind column="dependsOn" to="dependsOnSet" search="self.code in :dependsOn" eval="dependsOn.split(',') as List"/>
|
||||
</input>
|
||||
|
||||
<input file="crm_eventCategory.csv" separator=";" type="com.axelor.apps.crm.db.EventCategory" search="self.importId = :importId"/>
|
||||
|
||||
<input file="crm_opportunityType.csv" separator=";" type="com.axelor.apps.crm.db.OpportunityType" search="self.code = :code"/>
|
||||
|
||||
<input file="base_importConfiguration.csv" separator=";" type="com.axelor.apps.base.db.ImportConfiguration" call="com.axelor.csv.script.ImportLeadConfiguration:importFiles" />
|
||||
|
||||
<input file="meta_helpEN.csv" separator=";" type="com.axelor.meta.db.MetaHelp">
|
||||
<bind to="language" eval="'en'" />
|
||||
<bind to="type" eval="'tooltip'" />
|
||||
<bind to="model" eval="com.axelor.inject.Beans.get(com.axelor.meta.db.repo.MetaModelRepository.class).findByName(object)?.getFullName()" column="object" />
|
||||
</input>
|
||||
|
||||
<input file="meta_helpFR.csv" separator=";" type="com.axelor.meta.db.MetaHelp">
|
||||
<bind to="language" eval="'fr'" />
|
||||
<bind to="type" eval="'tooltip'" />
|
||||
<bind to="model" eval="com.axelor.inject.Beans.get(com.axelor.meta.db.repo.MetaModelRepository.class).findByName(object)?.getFullName()" column="object" />
|
||||
</input>
|
||||
|
||||
<input file="meta_metaMenu.csv" separator=";" type="com.axelor.meta.db.MetaMenu" search="self.name = :name" update="true" />
|
||||
|
||||
|
||||
</csv-inputs>
|
||||
@ -0,0 +1,2 @@
|
||||
"name";"object";"can_read";"can_write";"can_create";"can_remove";"can_export";"condition";"conditionParams";"roleName"
|
||||
"perm.crm.all";"com.axelor.apps.crm.db.*";"x";"x";"x";"x";"x";;;"Admin"
|
||||
|
@ -0,0 +1,2 @@
|
||||
"name";"code";"installOrder";"description";"imagePath";"modules";"dependsOn";"sequence"
|
||||
"CRM";"crm";2;"CRM configuration";"app-crm.png";"axelor-crm";"base";25
|
||||
|
@ -0,0 +1,2 @@
|
||||
"name";"typeSelect";"user.importId"
|
||||
"import-lead-config";"csv";1
|
||||
|
@ -0,0 +1,7 @@
|
||||
"importId";"name";"code";"typeSelect"
|
||||
1;"Internal Mtg.";"INTM";2
|
||||
2;"Training";"TRAIN";2
|
||||
3;"Customer Mtg";"CTMTG";2
|
||||
4;"Supplier Mtg";"SPMTG";2
|
||||
5;"Event";"EVT";2
|
||||
6;"Prospect Mtg.";"PPMTG";2
|
||||
|
@ -0,0 +1,4 @@
|
||||
"name";"code"
|
||||
"New";"NEW"
|
||||
"Recurring";"RCR"
|
||||
"Existing";"EXT"
|
||||
|
@ -0,0 +1 @@
|
||||
"importId";"titleSelect";"enterpriseName";"name";"firstName";"officeName";"jobTitle";"mobilePhone";"fixedPhone";"department";"fax";"website";"primaryAddress";"primaryPostalCode";"primaryCity";"primaryCountry.alpha3Code";"email";"description";"contactDate";"statusSelect";"source.importId";"statusDescription";"sourceDescription";"campaign.id";"referredBy";"isDoNotCall";"partner.importId";"userImportId";"team.id"
|
||||
|
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="Lead.csv" separator=";" type="com.axelor.apps.crm.db.Lead" search="self.importId = :importId" call="com.axelor.csv.script.ImportLead:saveLead" >
|
||||
<bind column="description" to="description"/>
|
||||
<bind to="jobTitleFunction" search="self.name = :jobTitle">
|
||||
<bind to="name" column="jobTitle"/>
|
||||
</bind>
|
||||
<bind to="emailAddress" search="self.address = :email">
|
||||
<bind to="address" column="email" />
|
||||
</bind>
|
||||
<bind to="contactDate" eval="call:com.axelor.csv.script.ImportDateTime:importDate(contactDate)" column="contactDate"/>
|
||||
<bind to="createdOn" eval="call:com.axelor.csv.script.ImportDateTime:importDate(contactDate)" column="contactDate"/>
|
||||
<bind to="user" search="self.importId = :userImportId" update="true"/>
|
||||
<bind to="createdBy" eval="call:com.axelor.csv.script.ImportLead:importCreatedBy(userImportId)"/>
|
||||
<bind to="statusSelect" column="statusSelect" eval="1" if="statusSelect == null" />
|
||||
</input>
|
||||
|
||||
</csv-inputs>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 777 B |
@ -0,0 +1,21 @@
|
||||
"module";"object";"view";"field";"help"
|
||||
"axelor-crm";"Event";"event-form";"disponibilitySelect";"Enables to specify whether the user wishes to appear as occupied or available (in its calendar) for the duration of the event. "
|
||||
"axelor-crm";"Event";"event-form";"visibilitySelect";"Enables to specify whether this event can be consulted by other users, or is exclusive to the assigned user. "
|
||||
"axelor-crm";"Event";"event-form";"relatedToSelect";"Enables to select another type of object (order, event, project) to be linked to the event. "
|
||||
"axelor-crm";"EventReminder";"event-reminder-form";"assignToSelect";"Enables to choose whether the reminder will be sent only to the active user, the active user and guests of the event, or to everyone. "
|
||||
"axelor-crm";"EventReminder";"event-reminder-form";"duration";"The duration will depend on the type of duration chosen and is determined from the start date. For example, if you have selected ""Minutes"" as the duration type, and you want to receive a reminder 15 minutes before the start of the event, you must specify ""15"" in duration."
|
||||
"axelor-crm";"EventReminder";"event-reminder-form";"durationTypeSelect";"Enables you to choose the type of duration wished for the reminder (minutes, hours, days, weeks). If you want a reminder 2 hours before the start of the event, you must select ""hours"" and enter ""2"" in the ""Duration"" field."
|
||||
"axelor-crm";"Lead";"lead-form";"statusSelect";"Enables to specify the lead's status within the realization process (New/Assigned/In Progress/Converted/Recycled/Lost)"
|
||||
"axelor-crm";"Lead";"lead-form";"isDoNotCall";"Check box to specify that the contact does not wish to be contacted by phone."
|
||||
"axelor-crm";"Lead";"lead-form";"isDoNotSendEmail";"Check box to specify that the contact does not wish to receive emails."
|
||||
"axelor-crm";"Lead";"lead-form";"source";"Enables to select the prospect's source for statistical purposes. The source list can be customized in the CRM configuration. "
|
||||
"axelor-crm";"Lead";"lead-form";"referredBy";"Enables to specify the person who referred the prospect "
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"opportunityType";"Specify whether this opportunity comes from a created need (New), an existing need from the customer (Existing) or a recurring need from the customer (Recurring)"
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"salesStageSelect";"Enables to specify which step of the sale process corresponds to the opportunity's current status. "
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"probability";"Estimated probability of successfully converting the opportunity into a deal. This field is important to estimate the turnover. Opportunities can also be taken into account in the management of stock replenishment. "
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"amount";"Estimated amount of potential revenue to be gained from the opportunity. "
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"bestCase";"Maximum amount of potential revenue to be gained from the opportunity. "
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"worstCase";"Minimum amount of potential revenue to be gained from the opportunity. "
|
||||
"axelor-crm";"TargetConfiguration";"target-configuration-form";"user";"Enables to select the user to which the goal is assigned. "
|
||||
"axelor-crm";"TargetConfiguration";"target-configuration-form";"team";"Enables to select the team to which the goal is assigned. "
|
||||
"axelor-crm";"TargetConfiguration";"target-configuration-form";"periodTypeSelect";"Enables to select an activity period for a goal. If a goal is created for a weekly period and is set to be completed in 6 months, a new goal with the same characteristics will be automatically created each week. "
|
||||
|
@ -0,0 +1,21 @@
|
||||
"module";"object";"view";"field";"help"
|
||||
"axelor-crm";"Event";"event-form";"disponibilitySelect";"Permet de préciser si l'on veut apparaître comme étant occupé ou disponible (dans le calendrier) pendant la durée de l'évènement. "
|
||||
"axelor-crm";"Event";"event-form";"visibilitySelect";"Permet de préciser si cet évènement sera consultable par les autres utilisateurs ou si celui-ci est réservé à celui auquel il est assigné. "
|
||||
"axelor-crm";"Event";"event-form";"relatedToSelect";"Permet de sélectionner un autre type d'objet (commande, évènement, projet) auquel lier l'évènement. "
|
||||
"axelor-crm";"EventReminder";"event-reminder-form";"assignToSelect";"Permet de choisir si le rappel sera envoyé seulement à l'utilisateur actif, à l'utilisateur actif et les invités de l'évènement, ou à tout le monde. "
|
||||
"axelor-crm";"EventReminder";"event-reminder-form";"duration";"La durée va dépendre du type de durée choisie et se détermine à partir de la date de début. Par exemple, si vous avez choisi comme type de durée ""Minutes"", et que vous voulez recevoir un rappel 15 minutes avant le début de l'évènement, vous devez indiquer 15 dans durée."
|
||||
"axelor-crm";"EventReminder";"event-reminder-form";"durationTypeSelect";"Permet de choisir le type de durée souhaité pour le rappel (minutes, heures, jours, semaines). Si vous souhaitez un rappel 2 heures avant le début de l'évènement, vous devez choisir ""heures"", et indiquer ""2"" dans le champs ""Durée""."
|
||||
"axelor-crm";"Lead";"lead-form";"statusSelect";"Permet de renseigner l'avancement de la piste dans le processus de réalisation (Nouveau / Assigné / En cours / Converti / Recyclé / Perdu )"
|
||||
"axelor-crm";"Lead";"lead-form";"isDoNotCall";"Case à cocher permettant de préciser que le contact ne souhaite pas être contacté par téléphone."
|
||||
"axelor-crm";"Lead";"lead-form";"isDoNotSendEmail";"Case à cocher permettant de préciser que le contact ne souhaite pas recevoir d'emails."
|
||||
"axelor-crm";"Lead";"lead-form";"source";"Permet de sélectionner la provenance du prospect à des fins statistiques. La liste de provenance est paramétrable dans les configurations du CRM."
|
||||
"axelor-crm";"Lead";"lead-form";"referredBy";"Permet de renseigner dans le cas de bouche à oreille, la personne ayant référé ce prospect. "
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"opportunityType";"Permet de renseigner si cette opportunité provient d'un besoin créé pour le client (Nouveau), un besoin existant du client (Existant), ou un besoin récurrent du client. (Récurrent)"
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"salesStageSelect";"Permet de renseigner à quelle étape du processus de vente l'opportunité se situe."
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"probability";"Probabilité estimée de réussite de la conversion de l'opportunité en affaire. Ce champ est particulièrement important afin de réaliser des estimations de chiffre d'affaire. De plus, les opportunités peuvent être prises en compte lors de la gestion du réapprovisionnement de stock, ainsi ces probabilités permettent une meilleure gestion de ces réapprovisionnements. "
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"amount";"Montant estimé du chiffre d'affaire potentiel de l'opportunité. "
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"bestCase";"Montant maximal estimé de chiffre d'affaire potentiel de l'opportunité. "
|
||||
"axelor-crm";"Opportunity";"opportunity-form";"worstCase";"Montant minimal estimé de chiffre d'affaire potentiel de l'opportunité. "
|
||||
"axelor-crm";"TargetConfiguration";"target-configuration-form";"user";"Permet de sélectionner un utilisateur à qui l'objectif est assigné. "
|
||||
"axelor-crm";"TargetConfiguration";"target-configuration-form";"team";"Permet de sélectionner une équipe à qui l'objectif est assigné. "
|
||||
"axelor-crm";"TargetConfiguration";"target-configuration-form";"periodTypeSelect";"Permet de sélectionner une période d'activité pour un objectif. Ainsi, si l'on créé un objectif sur une période hebdomadaire mais se déroulant sur 6 mois, on disposera chaque semaine automatiquement d'un nouvel objectif reprenant les variables configurées."
|
||||
|
@ -0,0 +1,37 @@
|
||||
"name";"roles.name"
|
||||
"crm-root";"Admin"
|
||||
"crm-root-customers";"Admin"
|
||||
"crm-root-contacts";"Admin"
|
||||
"crm-root-event";"Admin"
|
||||
"crm-root-lead";"Admin"
|
||||
"crm-root-opportunity";"Admin"
|
||||
"crm-root-meeting-my-calendar";"Admin"
|
||||
"crm-root-meeting-team-calendar";"Admin"
|
||||
"crm-root-meeting-sharedm-calendar";"Admin"
|
||||
"crm-root-report";"Admin"
|
||||
"crm-conf";"Admin"
|
||||
"crm-conf-lead-source";"Admin"
|
||||
"crm-conf-category";"Admin"
|
||||
"crm-conf-target-configuration";"Admin"
|
||||
"crm-conf-target";"Admin"
|
||||
"crm-conf-lost-reason";"Admin"
|
||||
"admin-root-batch-crm";"Admin"
|
||||
"top-menu-crm";"Admin"
|
||||
"top-menu-crm-meetings";"Admin"
|
||||
"top-menu-crm-calls";"Admin"
|
||||
"top-menu-crm-tasks";"Admin"
|
||||
"top-menu-crm-lead";"Admin"
|
||||
"top-menu-crm-opportunity";"Admin"
|
||||
"menu-event-dashboard";"Admin"
|
||||
"menu-event-dashboard-one";"Admin"
|
||||
"menu-lead-dashboard";"Admin"
|
||||
"menu-lead-dashboard-one";"Admin"
|
||||
"menu-target-dashboard";"Admin"
|
||||
"menu-target-user-dashboard";"Admin"
|
||||
"menu-target-team-dashboard";"Admin"
|
||||
"menu-opportunities-dashboard";"Admin"
|
||||
"menu-opportunities-dashboard-1";"Admin"
|
||||
"menu-opportunities-dashboard-2";"Admin"
|
||||
"menu-opportunities-dashboard-3";"Admin"
|
||||
"menu-calls-dashboard";"Admin"
|
||||
"menu-calls-dashboard-1";"Admin"
|
||||
|
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="crm_crmBatch.csv" separator=";" type="com.axelor.apps.crm.db.CrmBatch" search="self.code = :code"/>
|
||||
|
||||
<input file="crm_lead.csv" separator=";" type="com.axelor.apps.crm.db.Lead" search="self.importId = :importId" call="com.axelor.csv.script.ImportLead:saveLead">
|
||||
<bind column="description" to="description"/>
|
||||
<bind to="jobTitleFunction" search="self.name = :jobTitle">
|
||||
<bind to="name" column="jobTitle"/>
|
||||
</bind>
|
||||
<bind to="emailAddress" search="self.address = :email">
|
||||
<bind to="address" column="email" />
|
||||
</bind>
|
||||
<bind to="contactDate" eval="call:com.axelor.csv.script.ImportDateTime:importDate(contactDate)" column="contactDate"/>
|
||||
<bind to="createdOn" eval="call:com.axelor.csv.script.ImportDateTime:importDate(contactDate)" column="contactDate"/>
|
||||
<bind to="user" search="self.importId = :userImportId" update="true"/>
|
||||
<bind to="createdBy" eval="call:com.axelor.csv.script.ImportLead:importCreatedBy(userImportId)"/>
|
||||
</input>
|
||||
|
||||
<input file="crm_eventCategory.csv" separator=";" type="com.axelor.apps.crm.db.EventCategory" search="self.importId = :importId"/>
|
||||
|
||||
<input file="crm_event.csv" separator=";" type="com.axelor.apps.crm.db.Event" search="self.importId = :importId">
|
||||
<bind to="startDateTime" eval="call:com.axelor.csv.script.ImportDateTime:importDateTime(startDateTimeNow)" column="startDateTimeNow"/>
|
||||
<bind to="endDateTime" eval="call:com.axelor.csv.script.ImportDateTime:importDateTime(endDateTimeNow)" column="endDateTimeNow" />
|
||||
</input>
|
||||
|
||||
<input file="crm_event.csv" separator=";" type="com.axelor.apps.crm.db.Event" search="self.importId = :importId">
|
||||
<bind column="subject" to="subjectTeam"/>
|
||||
</input>
|
||||
|
||||
<input file="crm_opportunityType.csv" separator=";" type="com.axelor.apps.crm.db.OpportunityType" search="self.code = :code"/>
|
||||
|
||||
<input file="crm_opportunity.csv" separator=";" type="com.axelor.apps.crm.db.Opportunity" search="self.importId = :importId">
|
||||
<bind to="expectedCloseDate" eval="call:com.axelor.csv.script.ImportDateTime:importDate(expectedCloseDate)" column="expectedCloseDate"/>
|
||||
<bind to="user" search="self.importId = :userImportId" update="true"/>
|
||||
<bind to="createdBy" eval="call:com.axelor.csv.script.ImportLead:importCreatedBy(userImportId)"/>
|
||||
</input>
|
||||
|
||||
</csv-inputs>
|
||||
@ -0,0 +1,3 @@
|
||||
"code";"actionSelect";"company.importId";"durationTypeSelect";"description"
|
||||
"AX_EVENT_REMINDER";21;1;2;"Permet de générer des rappels d’événements toutes les heures."
|
||||
"AX_TARGET";22;1;;"Permet de générer les objectifs en fonction des configurations."
|
||||
|
@ -0,0 +1,52 @@
|
||||
"importId";"typeSelect";"subject";"statusSelect";"startDateTimeNow";"endDateTimeNow";"duration";"eventCategory.importId";"prioritySelect";"relatedToSelect";"relatedToSelectId";"description";"user.importId";"team.importId";"clientPartner.importId";"contactPartner.importId";"lead.importId";"callTypeSelect";"meetingType.importId";"location";"progressSelect";"responsibleUser.importId";"project.importId";"task.importId"
|
||||
1;1;"Call 123 Services";2;"NOW[-5M09H00m]";"NOW[-5M09H30m]";1800;;;;;;9;1;88;89;;1;;;;;;
|
||||
2;1;"Call APOLLO";2;"NOW[-4M09H00m]";"NOW[-4M09H45m]";2700;;;;;;11;2;20;21;;2;;;;;;
|
||||
3;1;"Call BLUEBERRY TELECOM";2;"NOW[-3M09H15m]";"NOW[-3M09H45m]";1800;;;;;;12;2;44;45;;2;;;;;;
|
||||
4;1;"Call BOURGEOIS INDUSTRIE";2;"NOW[-2M09H00m]";"NOW[-2M09H45m]";2700;;;;;;8;3;70;71;;2;;;;;;
|
||||
5;1;"Call GERARD Solutions";2;"NOW[-1M09H00m]";"NOW[-1M10H00m]";3600;;;;;;11;2;77;78;;2;;;;;;
|
||||
6;1;"Call 123 Services";2;"NOW[-21d09H00m]";"NOW[-21d09H50m]";3000;;;;;;9;1;88;90;;2;;;;;;
|
||||
7;1;"Call BOURGEOIS INDUSTRIE";2;"NOW[-14d11H00m]";"NOW[-14d12H00m]";3600;;;;;;8;3;132;133;;2;;;;;;
|
||||
8;1;"Call ESL Banking";2;"NOW[-7d11H00m]";"NOW[-7d11H30m]";1800;;;;;;8;3;136;137;;2;;;;;;
|
||||
9;1;"Call 123 Services";1;"NOW[11H00m]";"NOW[11H45m]";2700;;;;;;9;1;88;89;;2;;;;;;
|
||||
10;1;"Remind 123 Services";1;"NOW[+1d09H00m]";"NOW[+1d09H30m]";1800;;;"com.axelor.apps.sale.db.SaleOrder";6;;9;1;88;89;;2;;;;;;
|
||||
11;1;"Call from ESL Banking";2;"NOW[09H00m]";"NOW[09H30m]";1800;;;"com.axelor.apps.sale.db.SaleOrder";9;;8;3;136;137;;1;;;;;;
|
||||
12;1;"Remind BOURGEOIS (Inv. + Quote)";1;"NOW[+1d14H00m]";"NOW[+1d14H30m]";1800;;;"com.axelor.apps.sale.db.SaleOrder";8;;8;3;132;133;;2;;;;;;
|
||||
13;1;"Call PORTER Services";1;"NOW[10H00m]";"NOW[10H30m]";1800;;;;;;13;3;;;21;2;;;;;;
|
||||
14;1;"Call S&S Conseil";1;"NOW[+1d10H30m]";"NOW[+1d11H00m]";1800;;;;;;10;1;;;27;2;;;;;;
|
||||
200;2;"Offer review 123 Services";2;"NOW[-5M14H00m]";"NOW[-5M16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";1;;9;1;88;89;;;1;"Salle A. Einstein";;;;
|
||||
201;2;"Offer review APOLLO";2;"NOW[-4M14H00m]";"NOW[-4M17H00m]";10800;;;"com.axelor.apps.sale.db.SaleOrder";2;;11;2;20;21;;;1;"Salle A. Einstein";;;;
|
||||
202;2;"Offer review BLUEBERRY TELECOM";2;"NOW[-3M14H00m]";"NOW[-3M16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";3;;11;2;44;45;;;1;"Salle A. Einstein";;;;
|
||||
203;2;"Offer review BOURGEOIS INDUSTRIE";2;"NOW[-2M14H00m]";"NOW[-2M16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";4;;8;3;70;71;;;1;"Salle A. Einstein";;;;
|
||||
204;2;"Offer review GERARD Solutions";2;"NOW[-1M14H00m]";"NOW[-1M16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";5;;12;2;77;78;;;1;"Salle A. Einstein";;;;
|
||||
205;2;"Offer review 123 Services";2;"NOW[-21d14H00m]";"NOW[-21d16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";6;;9;1;88;90;;;1;"Salle A. Einstein";;;;
|
||||
206;2;"Mtg 123 Services";2;"NOW[-14d14H00m]";"NOW[-14d16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";7;;9;1;88;89;;;3;"LILLE";;;;
|
||||
207;2;"Mtg DE KIMPE Engineering";1;"NOW[-7d14H00m]";"NOW[-7d17H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";8;;13;3;185;186;;;3;"BRUXELLES";;;;
|
||||
208;2;"Mtg 123 Services";2;"NOW[-6M+7d10H00m]";"NOW[-6M+7d10H30m]";1800;;;;;;9;1;;;1;;3;"LILLE";;;;
|
||||
209;2;"Mtg APP Solutions";2;"NOW[-5M+7d11H00m]";"NOW[-5M+7d11H30m]";1800;;;;;;11;2;;;2;;3;"NICE";;;;
|
||||
210;2;"Mtg KGM Media";2;"NOW[-4M+7d17H00m]";"NOW[-4M+7d17H30m]";1800;;;;;;13;1;;;5;;3;"LILLE";;;;
|
||||
211;2;"Mtg BT Tech";2;"NOW[-3M+7d16H00m]";"NOW[-3M+7d17H00m]";3600;;;;;;12;2;;;8;;3;"CLERMONT-FERRAND";;;;
|
||||
212;2;"Mtg B&X Web";2;"NOW[-3M+7d17H00m]";"NOW[-3M+7d18H00m]";3600;;;;;;11;2;;;9;;3;"CLERMONT-FERRAND";;;;
|
||||
213;2;"Mtg WIX Solutions";2;"NOW[-2M+7d11H00m]";"NOW[-2M+7d11H30m]";1800;;;;;;13;3;;;10;;3;"MELUN";;;;
|
||||
214;2;"Mtg Q&L Solutions";2;"NOW[-2M+7d14H00m]";"NOW[-2M+7d14H30m]";1800;;;;;;9;1;;;11;;3;"STRASBOURG";;;;
|
||||
215;2;"Mtg GEH Systems";2;"NOW[-2M+14d14H00m]";"NOW[-2M+14d14H30m]";1800;;;;;;8;3;;;12;;3;"PUTEAUX";;;;
|
||||
216;2;"Mtg Z&C Industries";2;"NOW[-1M+7d10H00m]";"NOW[-1M+7d10H30m]";1800;;;;;;8;3;;;19;;3;"TORCY";;;;
|
||||
217;2;"Mtg Shelton Media";2;"NOW[-7d09H00m]";"NOW[-7d09H30m]";1800;;;;;;9;1;;;24;;3;"LILLE";;;;
|
||||
218;2;"Mtg Oister Media";2;"NOW[-7d14H30m]";"NOW[-7d17H30m]";10800;;;;;;8;3;;;26;;3;"MELUN";;;;
|
||||
219;2;"Mtg Connolly Solutions";1;"NOW[+1d10H30m]";"NOW[+1d11H30m]";5400;;;;;;9;1;;;28;;3;"LILLE";;;;
|
||||
220;2;"Mtg GVS Services";1;"NOW[+1d11H00m]";"NOW[+1d12H30m]";5400;;;;;;8;3;;;29;;3;"LONDON";;;;
|
||||
221;2;"Commercial seminar";1;"NOW[+7d09H00m]";"NOW[+8d18H00m]";54000;;;;;;8;3;;;;;1;;;;;
|
||||
222;2;"Commercial seminar";1;"NOW[+7d09H00m]";"NOW[+8d18H00m]";54000;;;;;;13;3;;;;;1;;;;;
|
||||
223;2;"Commercial seminar";1;"NOW[+7d09H00m]";"NOW[+8d18H00m]";54000;;;;;;9;1;;;;;1;;;;;
|
||||
224;2;"Commercial seminar";1;"NOW[+7d09H00m]";"NOW[+8d18H00m]";54000;;;;;;10;1;;;;;1;;;;;
|
||||
300;3;"Prepare sale leaflet";13;"NOW[10H00m]";"NOW[11H00m]";3600;;2;;;;9;1;;;;;;;;;;
|
||||
301;3;"Prepare progress report";11;"NOW[14H00m]";"NOW[15H00m]";3600;;4;;;;9;1;;;;;;;;;;
|
||||
302;3;"Write product sale description";11;"NOW[14H00m]";"NOW[15H30m]";5400;;3;"com.axelor.apps.base.db.Product";3;;8;3;;;;;;;;;;
|
||||
303;3;"Prepare phone call";11;"NOW[15H00m]";"NOW[18H30m]";12600;;4;"com.axelor.apps.base.db.Product";3;;13;3;;;;;;;;;;
|
||||
304;3;"Prepare phone call";11;"NOW[15H00m]";"NOW[18H30m]";12600;;4;"com.axelor.apps.base.db.Product";3;;10;1;;;;;;;;;;
|
||||
305;3;"Prepare progress report";11;"NOW[09H00m]";"NOW[10H00m]";3600;;4;;;;13;3;;;;;;;;;;
|
||||
500;3;"Where to download the ERP source code";23;"NOW[-2d14H00m]";"NOW[-2d16H00m]";300;1;1;;;;8;3;77;78;;;;;100;8;;
|
||||
501;3;"How to access the technical documentation";23;"NOW[-1d09H00m]";"NOW[-1d12H00m]";300;1;1;;;;8;3;70;71;;;;;100;8;;
|
||||
502;3;"Unable to log in with Admin user";23;"NOW[-1d10H00m]";"NOW[09H30m]";1800;1;3;;;;17;4;88;90;;;;;100;17;3;10
|
||||
503;3;"How to attach a file";22;"NOW[-1d14H00m]";"NOW[-1d13H00m]";3600;2;2;;;;9;1;88;90;;;;;10;9;3;10
|
||||
504;3;"How to perform an advanced search";21;"NOW[09H00m]";"NOW[10H00m]";3600;2;3;;;;9;1;88;90;;;;;0;9;3;10
|
||||
505;3;"How to mass update records";21;"NOW[09H30m]";"NOW[10H30m]";3600;2;4;;;;8;3;88;90;;;;;0;8;3;10
|
||||
|
@ -0,0 +1,7 @@
|
||||
"importId";"name";"code";"typeSelect"
|
||||
1;"Internal Mtg.";"INTM";2
|
||||
2;"Training";"TRAIN";2
|
||||
3;"Customer Mtg";"CTMTG";2
|
||||
4;"Supplier Mtg";"SPMTG";2
|
||||
5;"Event";"EVT";2
|
||||
6;"Prospect Mtg.";"PPMTG";2
|
||||
|
@ -0,0 +1,31 @@
|
||||
"importId";"titleSelect";"enterpriseName";"name";"firstName";"officeName";"jobTitle";"mobilePhone";"fixedPhone";"department";"fax";"website";"primaryAddress";"primaryPostalCode";"primaryCity";"primaryCountry.alpha3Code";"email";"description";"contactDate";"statusSelect";"isRecycled";"source.importId";"statusDescription";"sourceDescription";"campaign.id";"referredBy";"isDoNotCall";"partner.importId";"userImportId";"team.id"
|
||||
1;1;"123 Services";"ROGER";"Jean-Marc";;"Chef de projet";"06.75.77.83.99";"03.32.87.70.99";;;;"40 RUE ABELARD";59000;"LILLE";"FRA";"j.roger@123-services.fr";;"TODAY[-6M]";4;"false";3;;"Publicité sur le journal";;;"false";88;9;1
|
||||
2;1;"APP Solutions";"HUBERT";"Bastien";;"Responsable Achats";"06.14.35.90.99";"04.43.32.28.99";;;;"63 BD CARABACEL";"06000";"NICE";"FRA";"b.hubert@app-solutions.fr";;"TODAY[-5M]";3;"false";6;;;;;"true";;11;2
|
||||
5;2;"KGM Media";"RAULT";"Christelle";;"PDG";"07.92.73.59.99";"03.95.84.56.99";;;;"43 RUE D'IENA";59000;"LILLE";"FRA";"c.rault@kgm-media.fr";;"TODAY[-4M]";3;"true";11;;;;;"false";;9;1
|
||||
8;1;"BT Tech";"THIERY";"Marc";;"Consultant";"06.57.68.41.99";"04.47.55.90.99";;;;"40 BD GUSTAVE FAUBERT";63000;"CLERMONT-FERRAND";"FRA";"m.thiery@bttech.fr";;"TODAY[-3M]";2;"false";7;;;;;"true";;12;2
|
||||
9;1;"B&X Web";"DURANT";"Étienne";;"PDG";"07.21.58.12.99";"04.44.58.23.99";;;;"29 BD LAFAYETTE";63000;"CLERMONT-FERRAND";"FRA";"e.durant@bx-web.fr";;"TODAY[-3M]";3;"true";10;;;;;"false";;11;2
|
||||
10;2;"WIX Solutions";"BRAULT";"Claire";;"Gérant";"07.42.74.19.99";"01.72.69.41.99";;;;"350 RUE DU MARECHAL JUIN";77000;"MELUN";"FRA";"c.brault@wix-solutions.fr";;"TODAY[-2M]";2;"false";11;;;;;"true";;8;3
|
||||
11;1;"Q&L Solutions";"LEBLANC";"Nicolas";;"Consultant";"06.52.98.52.99";"03.78.70.85.99";;;;"47 AVENUE DE LA PAIX";67000;"STRASBOURG";"FRA";"n.leblanc@ql-solutions.fr";;"TODAY[-2M]";2;"false";3;;;;;"false";;9;1
|
||||
12;2;"GEH Systems";"GRANGER";"Julia";;"Acheteur";"06.30.46.63.99";"01.43.62.34.99";;;;"51 BD RICHARD WALLACE";92800;"PUTEAUX";"FRA";"j.granger@geh-systems.fr";;"TODAY[-2M]";3;"true";6;;;;;"true";;8;3
|
||||
13;1;"BOWMAN Industries";"MEYER";"Thibaut";;"Chef de projet";"06.81.48.51.99";"04.39.30.14.99";;;;"83 RUE BELLE DE MAI";13003;"MARSEILLE";"FRA";"t.meyer@bowman-industries.fr";;"TODAY[-1M]";2;"false";7;;;;;"false";;12;2
|
||||
14;1;"ILQ Industries";"GRAS";"Thomas";;"Chef de projet";"07.29.72.57.99";"04.70.18.47.99";;;;"54 RUE GARIBALDI";69003;"LYON";"FRA";"t.gras@ilq-industries.fr";;"TODAY[-1M]";3;"false";3;;;;;"true";;11;2
|
||||
17;1;"MOSER Solutions";"GONÇALVES";"Rémy";;"Acheteur";"06.68.41.41.99";;;;;"22 BD FRANCOISE DUPARC";13004;"MARSEILLE";"FRA";"r.gonçalves@moser-solutions.fr";;"TODAY[-1M]";2;"false";6;;;;;"false";;11;2
|
||||
18;2;"WEBSTER International";"COLLIN";"Jennifer";;"Responsable Achats";"07.12.53.44.99";"04.49.73.12.99";;;;"7 AVENUE LACASSAGNE";69003;"LYON";"FRA";"j.collin@webster-international.fr";;"TODAY[-1M]";3;"false";6;;;;;"true";;11;2
|
||||
19;1;"Z&C Industries";"LUCAS";"Enzo";;"Chef de projet";"07.97.51.39.99";"01.86.74.56.99";;;;"1 AVENUE LINGENFELD";77200;"TORCY";"FRA";"e.lucas@zc-industries.fr";;"TODAY[-1M]";2;"false";7;;;;;"false";;8;3
|
||||
20;1;"BALDWIN Industries";"GUYON";"Pierre";;"Consultant";"06.98.86.12.99";"03.52.33.75.99";;;;"20 RUE D'ESQUERMES";59000;"LILLE";"FRA";"p.guyon@baldwin-industries.fr";;"TODAY[-21d]";2;"false";10;;;;;"true";;9;1
|
||||
21;2;"PORTER Services";"BLONDEL";"Laetitia";;"PDG";;"+1 305 507 7799";;;;"500 NORTH MIAMI AVENUE";"FL 33136";"MIAMI";"USA";"l.blondel@porter-services.com";;"TODAY[-14d]";5;"false";11;;;;;"false";;13;3
|
||||
22;2;"BRYANT International";"CHARPENTIER";"Julie";;"Acheteur";"06.59.56.85.99";"04.40.46.91.99";;;;"30 AVENUE PAUL SANTY";69008;"LYON";"FRA";"j.charpentier@bryant-international.fr";;"TODAY[-14d]";3;"false";11;;;;;"true";;12;2
|
||||
23;2;"TAB Technologies";"GUILBERT";"Laurie";;"Gérant";"06.30.39.14.99";;;;;"6 BD GAMBETTA";"06000";"NICE";"FRA";"l.guilbert@tab-technologies.fr";;"TODAY[-14d]";3;"false";7;;;;;"false";;11;2
|
||||
24;2;"SHELTON Media";"GOMEZ";"Vanessa";;"Consultant";"07.45.54.63.99";"03.57.25.17.99";;;;"67 RUE DES POSTES";59000;"LILLE";"FRA";"v.gomez@shelton-media.fr";;"TODAY[-14d]";2;"false";6;;;;;"true";;9;1
|
||||
25;2;"NKJ Technologies";"GOMES";"Anna";;"Chef de projet";"06.64.95.72.99";"05.92.37.61.99";;;;"33 RUE SAINT-GENES";33000;"BORDEAUX";"FRA";"a.gomes@nkj-technologies.fr";;"TODAY[-14d]";3;"true";7;;;;;"false";;11;2
|
||||
26;2;"Oister Media";"VIAL";"Gaëlle";;"PDG";"06.34.27.36.99";"01.18.77.52.99";;;;"350 RUE DU MARECHAL JUIN";77000;"MELUN";"FRA";"g.vial@oistermedia.fr";;"TODAY[-14d]";3;"false";11;;;;;"true";;8;3
|
||||
27;1;"S&S Conseil";"LE-GUEN";"Maxence";;"Gérant";"06.54.31.19.99";"02.96.70.99.99";;;;"53 RUE DE COULMIERS";44000;"NANTES";"FRA";"m.le-guen@ss-conseil.fr";;"TODAY[-14d]";3;"false";3;;;;;"false";;10;1
|
||||
28;1;"CONNOLLY Solutions";"BILLARD";"Gael";;"PDG";"07.19.47.71.99";"03.98.40.84.99";;;;"11 RUE DE L'ARBRISSEAU";59000;"LILLE";"FRA";"g.billard@connolly-solutions.fr";;"TODAY[-7d]";2;"false";3;;;;;"true";;9;1
|
||||
29;2;"GVS Services";"GUICHARD";"Amandine";;"Consultant";;"+44 20 7862 9989";;;;"76 WARDOUR STREET";"W1D 6Q4";"LONDON";"GBR";"a.guichard@gvs-services.co.uk";;"TODAY[-7d]";3;"false";6;;;;;"false";;8;3
|
||||
30;1;"E&U Systems";"POTTIER";"John";;"Consultant";;"+1 310 228 1999";;;;"1500 SOUTH BURNSIDE AVENUE";"CA 90019";"LOS ANGELES";"USA";"j.pottier@eu-systems.com";;"TODAY[-7d]";5;"false";6;;;;;"true";;13;3
|
||||
31;1;"IYT Services";"GAY";"Florent";;"Chef de projet";"06.70.60.31.99";"04.97.59.44.99";;;;"30 AVENUE PAUL SANTY";69008;"LYON";"FRA";"f.gay@iyt-services.fr";;"TODAY[-7d]";5;"false";3;;;;;"false";;11;2
|
||||
32;2;"U&M Media";"MAS";"Amandine";;"Responsable Achats";"06.84.61.64.99";"03.75.68.95.99";;;;"19 BD VICTOR HUGO";59000;"LILLE";"FRA";"a.mas@um-media.fr";;"TODAY";1;"false";3;;;;;"true";;;1
|
||||
33;1;"JENSEN International";"CHATELAIN";"Damien";;"Consultant";"06.15.41.96.99";;;;;"74 RUE BRUNET";13004;"MARSEILLE";"FRA";"d.chatelain@jensen-international.fr";;"TODAY";1;"false";11;;;;;"false";;;2
|
||||
34;2;"ROWE Services";"FAVIER";"Anna";;"PDG";"06.48.82.69.99";"04.99.56.69.99";;;;"88 BD ARISTIDE BRIAND";63000;"CLERMONT-FERRAND";"FRA";"a.favier@rowe-services.fr";;"TODAY";1;"false";6;;;;;"true";;;2
|
||||
35;1;"KAY Consulting";"DUPUIS";"Eric";;"Consultant";;"+1 310 745 1599";;;;"9000 WEST OLYMPIC BD";"CA 90212";"LOS ANGELES";"USA";"e.dupuis@kay-conseil.com";;"TODAY";1;"false";11;;;;;"false";;;3
|
||||
36;2;"GRAY Technologies";"LE-GALL";"Sarah";;"Consultant";;"+44 161 247 6969";;;;"81 STREDFORD ROAD";"M15 4ZY";"MANCHESTER";"GBR";"s.le-gall@gray-technologies.co.uk";;"TODAY";1;"false";7;;;;;"true";;;3
|
||||
|
@ -0,0 +1,39 @@
|
||||
"importId";"name";"partner.importId";"lead.id";"currency.code";"expectedCloseDate";"amount";"opportunityType.id";"bestCase";"worstCase";"salesStageSelect";"probability";"nextStep";"description";"source.id";"company.id";"userImportId";"team.id";"orderByState"
|
||||
1;"Annual Maintenance - 1 ANNEE + Pack Classic - 12 U";;1;"EUR";"TODAY[-6M]";24140;1;28200;20800;2;39;;;3;1;9;1;2
|
||||
2;"Pack Classic - 10 U";;2;"EUR";"TODAY[-5M]";9225;1;10900;7800;2;42;;;6;1;11;2;2
|
||||
3;"Pack Performance - 6 U";;3;"EUR";"TODAY[-5M]";28900;1;36700;23700;1;27;;;7;1;11;2;1
|
||||
4;"Classic server - 6 U";;4;"EUR";"TODAY[-4M]";10500;1;13200;8900;3;81;;;10;1;11;2;3
|
||||
5;"High Performance Server - 5 U";;5;"EUR";"TODAY[-4M]";12500;1;15100;9400;6;93;;;11;1;9;1;6
|
||||
6;"InkJet Printer - 4 U";;6;"EUR";"TODAY[-3M]";1974;1;2500;1800;2;24;;;3;1;12;2;2
|
||||
7;"Laser Printer - 5 U + InkJet Printer - 8 U";;7;"EUR";"TODAY[-3M]";8696;1;11000;7200;2;79;;;6;1;12;2;2
|
||||
8;"Project - 1 U";;8;"EUR";"TODAY[-3M]";8000;1;9000;6100;2;48;;;7;1;12;2;2
|
||||
9;"Project Manager - 10 JR(S) + Consultant - 9 JR(S)";;9;"EUR";"TODAY[-3M]";12000;1;13600;10300;1;66;;;10;1;11;2;1
|
||||
10;"Project - 1 U";;10;"EUR";"TODAY[-2M]";10000;1;11600;7700;2;74;;;11;1;8;3;2
|
||||
11;"InkJet Printer - 4 U";;11;"EUR";"TODAY[-2M]";2961;1;3800;2200;3;90;;;3;1;10;1;3
|
||||
12;"Pack Classic - 7 U";;12;"EUR";"TODAY[-2M]";16605;1;20800;14600;1;48;;;6;1;8;3;1
|
||||
13;"Classic server - 4 U";;13;"EUR";"TODAY[-1M]";15000;1;17900;12600;1;25;;;7;1;12;2;1
|
||||
14;"Laser Printer - 9 U";;14;"EUR";"TODAY[-1M]";4290;1;5500;3500;1;66;;;3;1;11;2;1
|
||||
15;"LED Screen HD 22 inch - 6 U + LED Screen HD 24 inch - 13 U";;15;"EUR";"TODAY[-21d]";3150;1;3700;2300;2;33;;;6;1;11;2;2
|
||||
16;"Project - 1 U";;16;"EUR";"TODAY[-21d]";13000;1;16000;10700;2;22;;;3;1;11;2;2
|
||||
17;"Pack Performance - 6 U";;17;"EUR";"TODAY[-21d]";20230;1;22500;17000;2;34;;;6;1;11;2;2
|
||||
18;"Classic server - 5 U + High Performance Server - 6 U";;18;"EUR";"TODAY[-21d]";41000;1;49200;32000;2;45;;;6;1;11;2;2
|
||||
19;"InkJet Printer - 6 U + Laser Printer - 10 U";;19;"EUR";"TODAY[-21d]";11112;1;12400;9400;1;69;;;7;1;8;3;1
|
||||
20;"Project Manager - 10 JR(S)";;20;"EUR";"TODAY[-21d]";5000;1;5900;4200;3;23;;;10;1;9;1;3
|
||||
21;"Consultant - 9 JR(S)";;21;"EUR";"TODAY[-14d]";4800;1;5500;3700;2;94;;;11;1;13;3;2
|
||||
22;"Annual Maintenance - 1 ANNEE";;22;"EUR";"TODAY[-14d]";2000;1;2600;1700;6;58;;;11;1;12;2;6
|
||||
23;"Project Manager - 4 JR(S) + Consultant - 20 JR(S)";;23;"EUR";"TODAY[-14d]";21000;1;25800;16600;3;79;;;7;1;11;2;3
|
||||
24;"Pack Performance - 5 U";;24;"EUR";"TODAY[-14d]";20230;1;23500;17000;3;62;;;6;1;9;1;3
|
||||
25;"Pack Classic - 10 U";;25;"EUR";"TODAY[-14d]";18450;1;23600;14400;1;78;;;7;1;;2;1
|
||||
26;"LED Screen HD 24 inch - 7 U";;26;"EUR";"TODAY[-14d]";1000;1;1300;800;1;74;;;11;1;;3;1
|
||||
27;"LED Screen HD 22 inch - 7 U + Laser Printer - 13 U";;27;"EUR";"TODAY[-14d]";7864;1;9000;5500;2;58;;;3;1;;1;2
|
||||
28;"Project - 1 U";;28;"EUR";"TODAY[-7d]";8000;1;9900;7000;2;78;;;3;1;;1;2
|
||||
29;"Project Manager - 9 JR(S)";;29;"EUR";"TODAY[-7d]";8000;1;10000;6600;1;61;;;6;1;;3;1
|
||||
30;"InkJet Printer - 6 U + LED Screen HD 22 inch - 8 U";;30;"EUR";"TODAY[-7d]";2316;1;2800;1800;3;57;;;6;1;;3;3
|
||||
31;"Pack Classic - 18 U + InkJet Printer - 2 U";20;;"EUR";"TODAY[-4M-7d]";33868;1;37300;29500;5;84;;;12;1;11;2;5
|
||||
32;"InkJet Printer - 14 U + Classic server - 1 U";44;;"EUR";"TODAY[-3M-7d]";6106;3;7900;5300;5;74;;;12;1;12;2;5
|
||||
33;"Laser Printer - 8 U + High Performance Server - 5 U";70;;"EUR";"TODAY[-2M-7d]";15932;3;20100;13700;5;90;;;12;1;11;2;5
|
||||
34;"Pack Performance - 10 U";77;;"EUR";"TODAY[-1M-7d]";110000;3;125400;77000;4;100;;;12;1;12;2;4
|
||||
35;"Consultant - 11 JR(S)";88;;"EUR";"TODAY[-28d]";8800;3;10400;7000;5;47;;;12;1;9;1;5
|
||||
36;"Project Manager - 10 JR(S) + Annual Maintenance - 1 ANNEE";132;;"EUR";"TODAY[-21d]";12000;3;15200;10000;4;99;;;12;1;8;3;4
|
||||
37;"Project - 1 U + Project Manager - 2 JR(S)";136;;"EUR";"TODAY[-14d]";10000;1;12200;8300;4;54;;;12;1;8;3;4
|
||||
38;"Laser Printer - 6 U + LED Screen HD 24 inch - 10 U";148;;"EUR";"TODAY[-7d]";5861;1;7400;5200;6;59;;;12;1;13;3;6
|
||||
|
@ -0,0 +1,4 @@
|
||||
"name";"code"
|
||||
"New";"NEW"
|
||||
"Recurring";"RCR"
|
||||
"Existing";"EXT"
|
||||
|
@ -0,0 +1,3 @@
|
||||
"code";"actionSelect";"company.importId";"durationTypeSelect";"description"
|
||||
"AX_EVENT_REMINDER";21;1;2;"Permet de générer des rappels d’événements toutes les heures."
|
||||
"AX_TARGET";22;1;;"Permet de générer les objectifs en fonction des configurations."
|
||||
|
@ -0,0 +1,52 @@
|
||||
"importId";"typeSelect";"subject";"statusSelect";"startDateTimeNow";"endDateTimeNow";"duration";"eventCategory.importId";"prioritySelect";"relatedToSelect";"relatedToSelectId";"description";"user.importId";"team.importId";"clientPartner.importId";"contactPartner.importId";"lead.importId";"callTypeSelect";"meetingType.importId";"location";"progressSelect";"responsibleUser.importId";"project.importId";"task.importId"
|
||||
1;1;"Appel de 123 Services";2;"NOW[-5M09H00m]";"NOW[-5M09H30m]";1800;;;;;;9;1;88;89;;1;;;;;;
|
||||
2;1;"Appeler APOLLO";2;"NOW[-4M09H00m]";"NOW[-4M09H45m]";2700;;;;;;11;2;20;21;;2;;;;;;
|
||||
3;1;"Appeler BLUEBERRY TELECOM";2;"NOW[-3M09H15m]";"NOW[-3M09H45m]";1800;;;;;;12;2;44;45;;2;;;;;;
|
||||
4;1;"Appeler BOURGEOIS INDUSTRIE";2;"NOW[-2M09H00m]";"NOW[-2M09H45m]";2700;;;;;;8;3;70;71;;2;;;;;;
|
||||
5;1;"Appeler GERARD Solutions";2;"NOW[-1M09H00m]";"NOW[-1M10H00m]";3600;;;;;;11;2;77;78;;2;;;;;;
|
||||
6;1;"Appeler 123 Services";2;"NOW[-21d09H00m]";"NOW[-21d09H50m]";3000;;;;;;9;1;88;90;;2;;;;;;
|
||||
7;1;"Appeler BOURGEOIS INDUSTRIE";2;"NOW[-14d11H00m]";"NOW[-14d12H00m]";3600;;;;;;8;3;132;133;;2;;;;;;
|
||||
8;1;"Appeler ESL Banking";2;"NOW[-7d11H00m]";"NOW[-7d11H30m]";1800;;;;;;8;3;136;137;;2;;;;;;
|
||||
9;1;"Appeler 123 Services";1;"NOW[11H00m]";"NOW[11H45m]";2700;;;;;;9;1;88;89;;2;;;;;;
|
||||
10;1;"Relancer 123 Services";1;"NOW[+1d09H00m]";"NOW[+1d09H30m]";1800;;;"com.axelor.apps.sale.db.SaleOrder";6;;9;1;88;89;;2;;;;;;
|
||||
11;1;"Appel de ESL Banking";2;"NOW[09H00m]";"NOW[09H30m]";1800;;;"com.axelor.apps.sale.db.SaleOrder";9;;8;3;136;137;;1;;;;;;
|
||||
12;1;"Relancer BOURGEOIS (Fact + Dev)";1;"NOW[+1d14H00m]";"NOW[+1d14H30m]";1800;;;"com.axelor.apps.sale.db.SaleOrder";8;;8;3;132;133;;2;;;;;;
|
||||
13;1;"Appeler PORTER Services";1;"NOW[10H00m]";"NOW[10H30m]";1800;;;;;;13;3;;;21;2;;;;;;
|
||||
14;1;"Appeler S&S Conseil";1;"NOW[+1d10H30m]";"NOW[+1d11H00m]";1800;;;;;;10;1;;;27;2;;;;;;
|
||||
200;2;"Rev. Offre 123 Services";2;"NOW[-5M14H00m]";"NOW[-5M16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";1;;9;1;88;89;;;1;"Salle A. Einstein";;;;
|
||||
201;2;"Rev. Offre APOLLO";2;"NOW[-4M14H00m]";"NOW[-4M17H00m]";10800;;;"com.axelor.apps.sale.db.SaleOrder";2;;11;2;20;21;;;1;"Salle A. Einstein";;;;
|
||||
202;2;"Rev. Offre BLUEBERRY TELECOM";2;"NOW[-3M14H00m]";"NOW[-3M16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";3;;11;2;44;45;;;1;"Salle A. Einstein";;;;
|
||||
203;2;"Rev. Offre BOURGEOIS INDUSTRIE";2;"NOW[-2M14H00m]";"NOW[-2M16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";4;;8;3;70;71;;;1;"Salle A. Einstein";;;;
|
||||
204;2;"Rev. Offre GERARD Solutions";2;"NOW[-1M14H00m]";"NOW[-1M16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";5;;12;2;77;78;;;1;"Salle A. Einstein";;;;
|
||||
205;2;"Rev. Offre 123 Services";2;"NOW[-21d14H00m]";"NOW[-21d16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";6;;9;1;88;90;;;1;"Salle A. Einstein";;;;
|
||||
206;2;"Rdv 123 Services";2;"NOW[-14d14H00m]";"NOW[-14d16H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";7;;9;1;88;89;;;3;"LILLE";;;;
|
||||
207;2;"Rdv DE KIMPE Engineering";1;"NOW[-7d14H00m]";"NOW[-7d17H00m]";7200;;;"com.axelor.apps.sale.db.SaleOrder";8;;13;3;185;186;;;3;"BRUXELLES";;;;
|
||||
208;2;"Rdv 123 Services";2;"NOW[-6M+7d10H00m]";"NOW[-6M+7d10H30m]";1800;;;;;;9;1;;;1;;3;"LILLE";;;;
|
||||
209;2;"Rdv APP Solutions";2;"NOW[-5M+7d11H00m]";"NOW[-5M+7d11H30m]";1800;;;;;;11;2;;;2;;3;"NICE";;;;
|
||||
210;2;"Rdv KGM Media";2;"NOW[-4M+7d17H00m]";"NOW[-4M+7d17H30m]";1800;;;;;;13;1;;;5;;3;"LILLE";;;;
|
||||
211;2;"Rdv BT Tech";2;"NOW[-3M+7d16H00m]";"NOW[-3M+7d17H00m]";3600;;;;;;12;2;;;8;;3;"CLERMONT-FERRAND";;;;
|
||||
212;2;"Rdv B&X Web";2;"NOW[-3M+7d17H00m]";"NOW[-3M+7d18H00m]";3600;;;;;;11;2;;;9;;3;"CLERMONT-FERRAND";;;;
|
||||
213;2;"Rdv WIX Solutions";2;"NOW[-2M+7d11H00m]";"NOW[-2M+7d11H30m]";1800;;;;;;13;3;;;10;;3;"MELUN";;;;
|
||||
214;2;"Rdv Q&L Solutions";2;"NOW[-2M+7d14H00m]";"NOW[-2M+7d14H30m]";1800;;;;;;9;1;;;11;;3;"STRASBOURG";;;;
|
||||
215;2;"Rdv GEH Systems";2;"NOW[-2M+14d14H00m]";"NOW[-2M+14d14H30m]";1800;;;;;;8;3;;;12;;3;"PUTEAUX";;;;
|
||||
216;2;"Rdv Z&C Industries";2;"NOW[-1M+7d10H00m]";"NOW[-1M+7d10H30m]";1800;;;;;;8;3;;;19;;3;"TORCY";;;;
|
||||
217;2;"Rdv Shelton Media";2;"NOW[-7d09H00m]";"NOW[-7d09H30m]";1800;;;;;;9;1;;;24;;3;"LILLE";;;;
|
||||
218;2;"Rdv Oister Media";2;"NOW[-7d14H30m]";"NOW[-7d17H30m]";10800;;;;;;8;3;;;26;;3;"MELUN";;;;
|
||||
219;2;"Rdv Connolly Solutions";1;"NOW[+1d10H30m]";"NOW[+1d11H30m]";5400;;;;;;9;1;;;28;;3;"LILLE";;;;
|
||||
220;2;"Rdv GVS Services";1;"NOW[+1d11H00m]";"NOW[+1d12H30m]";5400;;;;;;8;3;;;29;;3;"LONDON";;;;
|
||||
221;2;"Séminaire commercial";1;"NOW[+7d09H00m]";"NOW[+8d18H00m]";54000;;;;;;8;3;;;;;1;;;;;
|
||||
222;2;"Séminaire commercial";1;"NOW[+7d09H00m]";"NOW[+8d18H00m]";54000;;;;;;13;3;;;;;1;;;;;
|
||||
223;2;"Séminaire commercial";1;"NOW[+7d09H00m]";"NOW[+8d18H00m]";54000;;;;;;9;1;;;;;1;;;;;
|
||||
224;2;"Séminaire commercial";1;"NOW[+7d09H00m]";"NOW[+8d18H00m]";54000;;;;;;10;1;;;;;1;;;;;
|
||||
300;3;"Préparer le support commercial";13;"NOW[10H00m]";"NOW[11H00m]";3600;;2;;;;9;1;;;;;;;;;;
|
||||
301;3;"Sortir le bilan d'activité";11;"NOW[14H00m]";"NOW[15H00m]";3600;;4;;;;9;1;;;;;;;;;;
|
||||
302;3;"Rédiger fiche produit";11;"NOW[14H00m]";"NOW[15H30m]";5400;;3;"com.axelor.apps.base.db.Product";3;;8;3;;;;;;;;;;
|
||||
303;3;"Préparation phoning";11;"NOW[15H00m]";"NOW[18H30m]";12600;;4;"com.axelor.apps.base.db.Product";3;;13;3;;;;;;;;;;
|
||||
304;3;"Préparation phoning";11;"NOW[15H00m]";"NOW[18H30m]";12600;;4;"com.axelor.apps.base.db.Product";3;;10;1;;;;;;;;;;
|
||||
305;3;"Sortir le bilan d'activité";11;"NOW[09H00m]";"NOW[10H00m]";3600;;4;;;;13;3;;;;;;;;;;
|
||||
500;3;"Où télécharger les sources de l'ERP ?";23;"NOW[-2d14H00m]";"NOW[-2d16H00m]";300;1;1;;;;8;3;77;78;;;;;100;8;;
|
||||
501;3;"Comment accéder à la doc technique ? ";23;"NOW[-1d09H00m]";"NOW[-1d12H00m]";300;1;1;;;;8;3;70;71;;;;;100;8;;
|
||||
502;3;"Impossible de se connecter avec l’utilisateur Admin";23;"NOW[-1d10H00m]";"NOW[09H30m]";1800;1;3;;;;17;4;88;90;;;;;100;17;3;10
|
||||
503;3;"Comment joindre un fichier ?";22;"NOW[-1d14H00m]";"NOW[-1d13H00m]";3600;2;2;;;;9;1;88;90;;;;;10;9;3;10
|
||||
504;3;"Comment effectuer une recherche avancée ? ";21;"NOW[09H00m]";"NOW[10H00m]";3600;2;3;;;;9;1;88;90;;;;;0;9;3;10
|
||||
505;3;"Comment effectuer une mise à jour en masse d'enregistrements ?";21;"NOW[09H30m]";"NOW[10H30m]";3600;2;4;;;;8;3;88;90;;;;;0;8;3;10
|
||||
|
@ -0,0 +1,7 @@
|
||||
"importId";"name";"code";"typeSelect"
|
||||
1;"Réunion interne";"RINT";2
|
||||
2;"Formation";"FORM";2
|
||||
3;"Rdv Client";"RDVC";2
|
||||
4;"Rdv Fournisseur";"RDVF";2
|
||||
5;"Evènementiel";"EVNT";2
|
||||
6;"Rdv Prospect";"RDVP";2
|
||||
|
@ -0,0 +1,31 @@
|
||||
"importId";"titleSelect";"enterpriseName";"name";"firstName";"officeName";"jobTitle";"mobilePhone";"fixedPhone";"department";"fax";"website";"primaryAddress";"primaryPostalCode";"primaryCity";"primaryCountry.alpha3Code";"email";"description";"contactDate";"statusSelect";"isRecycled";"source.importId";"statusDescription";"sourceDescription";"campaign.id";"referredBy";"isDoNotCall";"partner.importId";"userImportId";"team.id"
|
||||
1;1;"123 Services";"ROGER";"Jean-Marc";;"Chef de projet";"06.75.77.83.99";"03.32.87.70.99";;;;"40 RUE ABELARD";59000;"LILLE";"FRA";"j.roger@123-services.fr";;"TODAY[-6M]";4;"false";3;;"Publicité sur le journal";;;"false";88;9;1
|
||||
2;1;"APP Solutions";"HUBERT";"Bastien";;"Responsable Achats";"06.14.35.90.99";"04.43.32.28.99";;;;"63 BD CARABACEL";"06000";"NICE";"FRA";"b.hubert@app-solutions.fr";;"TODAY[-5M]";3;"false";6;;;;;"true";;11;2
|
||||
5;2;"KGM Media";"RAULT";"Christelle";;"PDG";"07.92.73.59.99";"03.95.84.56.99";;;;"43 RUE D'IENA";59000;"LILLE";"FRA";"c.rault@kgm-media.fr";;"TODAY[-4M]";3;"true";11;;;;;"false";;9;1
|
||||
8;1;"BT Tech";"THIERY";"Marc";;"Consultant";"06.57.68.41.99";"04.47.55.90.99";;;;"40 BD GUSTAVE FAUBERT";63000;"CLERMONT-FERRAND";"FRA";"m.thiery@bttech.fr";;"TODAY[-3M]";2;"false";7;;;;;"true";;12;2
|
||||
9;1;"B&X Web";"DURANT";"Étienne";;"PDG";"07.21.58.12.99";"04.44.58.23.99";;;;"29 BD LAFAYETTE";63000;"CLERMONT-FERRAND";"FRA";"e.durant@bx-web.fr";;"TODAY[-3M]";3;"true";10;;;;;"false";;11;2
|
||||
10;2;"WIX Solutions";"BRAULT";"Claire";;"Gérant";"07.42.74.19.99";"01.72.69.41.99";;;;"350 RUE DU MARECHAL JUIN";77000;"MELUN";"FRA";"c.brault@wix-solutions.fr";;"TODAY[-2M]";2;"false";11;;;;;"true";;8;3
|
||||
11;1;"Q&L Solutions";"LEBLANC";"Nicolas";;"Consultant";"06.52.98.52.99";"03.78.70.85.99";;;;"47 AVENUE DE LA PAIX";67000;"STRASBOURG";"FRA";"n.leblanc@ql-solutions.fr";;"TODAY[-2M]";2;"false";3;;;;;"false";;9;1
|
||||
12;2;"GEH Systems";"GRANGER";"Julia";;"Acheteur";"06.30.46.63.99";"01.43.62.34.99";;;;"51 BD RICHARD WALLACE";92800;"PUTEAUX";"FRA";"j.granger@geh-systems.fr";;"TODAY[-2M]";3;"true";6;;;;;"true";;8;3
|
||||
13;1;"BOWMAN Industries";"MEYER";"Thibaut";;"Chef de projet";"06.81.48.51.99";"04.39.30.14.99";;;;"83 RUE BELLE DE MAI";13003;"MARSEILLE";"FRA";"t.meyer@bowman-industries.fr";;"TODAY[-1M]";2;"false";7;;;;;"false";;12;2
|
||||
14;1;"ILQ Industries";"GRAS";"Thomas";;"Chef de projet";"07.29.72.57.99";"04.70.18.47.99";;;;"54 RUE GARIBALDI";69003;"LYON";"FRA";"t.gras@ilq-industries.fr";;"TODAY[-1M]";3;"false";3;;;;;"true";;11;2
|
||||
17;1;"MOSER Solutions";"GONÇALVES";"Rémy";;"Acheteur";"06.68.41.41.99";;;;;"22 BD FRANCOISE DUPARC";13004;"MARSEILLE";"FRA";"r.gonçalves@moser-solutions.fr";;"TODAY[-1M]";2;"false";6;;;;;"false";;11;2
|
||||
18;2;"WEBSTER International";"COLLIN";"Jennifer";;"Responsable Achats";"07.12.53.44.99";"04.49.73.12.99";;;;"7 AVENUE LACASSAGNE";69003;"LYON";"FRA";"j.collin@webster-international.fr";;"TODAY[-1M]";3;"false";6;;;;;"true";;11;2
|
||||
19;1;"Z&C Industries";"LUCAS";"Enzo";;"Chef de projet";"07.97.51.39.99";"01.86.74.56.99";;;;"1 AVENUE LINGENFELD";77200;"TORCY";"FRA";"e.lucas@zc-industries.fr";;"TODAY[-1M]";2;"false";7;;;;;"false";;8;3
|
||||
20;1;"BALDWIN Industries";"GUYON";"Pierre";;"Consultant";"06.98.86.12.99";"03.52.33.75.99";;;;"20 RUE D'ESQUERMES";59000;"LILLE";"FRA";"p.guyon@baldwin-industries.fr";;"TODAY[-21d]";2;"false";10;;;;;"true";;9;1
|
||||
21;2;"PORTER Services";"BLONDEL";"Laetitia";;"PDG";;"+1 305 507 7799";;;;"500 NORTH MIAMI AVENUE";"FL 33136";"MIAMI";"USA";"l.blondel@porter-services.com";;"TODAY[-14d]";5;"false";11;;;;;"false";;13;3
|
||||
22;2;"BRYANT International";"CHARPENTIER";"Julie";;"Acheteur";"06.59.56.85.99";"04.40.46.91.99";;;;"30 AVENUE PAUL SANTY";69008;"LYON";"FRA";"j.charpentier@bryant-international.fr";;"TODAY[-14d]";3;"false";11;;;;;"true";;12;2
|
||||
23;2;"TAB Technologies";"GUILBERT";"Laurie";;"Gérant";"06.30.39.14.99";;;;;"6 BD GAMBETTA";"06000";"NICE";"FRA";"l.guilbert@tab-technologies.fr";;"TODAY[-14d]";3;"false";7;;;;;"false";;11;2
|
||||
24;2;"SHELTON Media";"GOMEZ";"Vanessa";;"Consultant";"07.45.54.63.99";"03.57.25.17.99";;;;"67 RUE DES POSTES";59000;"LILLE";"FRA";"v.gomez@shelton-media.fr";;"TODAY[-14d]";2;"false";6;;;;;"true";;9;1
|
||||
25;2;"NKJ Technologies";"GOMES";"Anna";;"Chef de projet";"06.64.95.72.99";"05.92.37.61.99";;;;"33 RUE SAINT-GENES";33000;"BORDEAUX";"FRA";"a.gomes@nkj-technologies.fr";;"TODAY[-14d]";3;"true";7;;;;;"false";;11;2
|
||||
26;2;"Oister Media";"VIAL";"Gaëlle";;"PDG";"06.34.27.36.99";"01.18.77.52.99";;;;"350 RUE DU MARECHAL JUIN";77000;"MELUN";"FRA";"g.vial@oistermedia.fr";;"TODAY[-14d]";3;"false";11;;;;;"true";;8;3
|
||||
27;1;"S&S Conseil";"LE-GUEN";"Maxence";;"Gérant";"06.54.31.19.99";"02.96.70.99.99";;;;"53 RUE DE COULMIERS";44000;"NANTES";"FRA";"m.le-guen@ss-conseil.fr";;"TODAY[-14d]";3;"false";3;;;;;"false";;10;1
|
||||
28;1;"CONNOLLY Solutions";"BILLARD";"Gael";;"PDG";"07.19.47.71.99";"03.98.40.84.99";;;;"11 RUE DE L'ARBRISSEAU";59000;"LILLE";"FRA";"g.billard@connolly-solutions.fr";;"TODAY[-7d]";2;"false";3;;;;;"true";;9;1
|
||||
29;2;"GVS Services";"GUICHARD";"Amandine";;"Consultant";;"+44 20 7862 9989";;;;"76 WARDOUR STREET";"W1D 6Q4";"LONDON";"GBR";"a.guichard@gvs-services.co.uk";;"TODAY[-7d]";3;"false";6;;;;;"false";;8;3
|
||||
30;1;"E&U Systems";"POTTIER";"John";;"Consultant";;"+1 310 228 1999";;;;"1500 SOUTH BURNSIDE AVENUE";"CA 90019";"LOS ANGELES";"USA";"j.pottier@eu-systems.com";;"TODAY[-7d]";5;"false";6;;;;;"true";;13;3
|
||||
31;1;"IYT Services";"GAY";"Florent";;"Chef de projet";"06.70.60.31.99";"04.97.59.44.99";;;;"30 AVENUE PAUL SANTY";69008;"LYON";"FRA";"f.gay@iyt-services.fr";;"TODAY[-7d]";5;"false";3;;;;;"false";;11;2
|
||||
32;2;"U&M Media";"MAS";"Amandine";;"Responsable Achats";"06.84.61.64.99";"03.75.68.95.99";;;;"19 BD VICTOR HUGO";59000;"LILLE";"FRA";"a.mas@um-media.fr";;"TODAY";1;"false";3;;;;;"true";;;1
|
||||
33;1;"JENSEN International";"CHATELAIN";"Damien";;"Consultant";"06.15.41.96.99";;;;;"74 RUE BRUNET";13004;"MARSEILLE";"FRA";"d.chatelain@jensen-international.fr";;"TODAY";1;"false";11;;;;;"false";;;2
|
||||
34;2;"ROWE Services";"FAVIER";"Anna";;"PDG";"06.48.82.69.99";"04.99.56.69.99";;;;"88 BD ARISTIDE BRIAND";63000;"CLERMONT-FERRAND";"FRA";"a.favier@rowe-services.fr";;"TODAY";1;"false";6;;;;;"true";;;2
|
||||
35;1;"KAY Consulting";"DUPUIS";"Eric";;"Consultant";;"+1 310 745 1599";;;;"9000 WEST OLYMPIC BD";"CA 90212";"LOS ANGELES";"USA";"e.dupuis@kay-conseil.com";;"TODAY";1;"false";11;;;;;"false";;;3
|
||||
36;2;"GRAY Technologies";"LE-GALL";"Sarah";;"Consultant";;"+44 161 247 6969";;;;"81 STREDFORD ROAD";"M15 4ZY";"MANCHESTER";"GBR";"s.le-gall@gray-technologies.co.uk";;"TODAY";1;"false";7;;;;;"true";;;3
|
||||
|
@ -0,0 +1,33 @@
|
||||
"importId";"name";"partner.importId";"lead.id";"currency.code";"expectedCloseDate";"amount";"opportunityType.id";"bestCase";"worstCase";"salesStageSelect";"probability";"nextStep";"description";"source.id";"company.id";"userImportId";"team.id";"orderByState"
|
||||
1;"Maintenance annuelle - 1 ANNEE + Pack Classique - 12 U";;1;"EUR";"TODAY[-6M]";24140;1;28200;20800;2;39;;;3;1;9;1;2
|
||||
2;"Pack Classique - 10 U";;2;"EUR";"TODAY[-5M]";9225;1;10900;7800;2;42;;;6;1;11;2;2
|
||||
5;"Serveur haute performance - 5 U";;5;"EUR";"TODAY[-4M]";12500;1;15100;9400;6;93;;;11;1;9;1;6
|
||||
8;"Projet - 1 U";;8;"EUR";"TODAY[-3M]";8000;1;9000;6100;2;48;;;7;1;12;2;2
|
||||
9;"Chef de projet - 10 JR(S) + Consultant - 9 JR(S)";;9;"EUR";"TODAY[-3M]";12000;1;13600;10300;1;66;;;10;1;11;2;1
|
||||
10;"Projet - 1 U";;10;"EUR";"TODAY[-2M]";10000;1;11600;7700;2;74;;;11;1;8;3;2
|
||||
11;"Imprimante Jet d'encre - 4 U";;11;"EUR";"TODAY[-2M]";2961;1;3800;2200;3;90;;;3;1;10;1;3
|
||||
12;"Pack Classique - 7 U";;12;"EUR";"TODAY[-2M]";16605;1;20800;14600;1;48;;;6;1;8;3;1
|
||||
13;"Serveur classique - 4 U";;13;"EUR";"TODAY[-1M]";15000;1;17900;12600;1;25;;;7;1;12;2;1
|
||||
14;"Imprimante Laser - 9 U";;14;"EUR";"TODAY[-1M]";4290;1;5500;3500;1;66;;;3;1;11;2;1
|
||||
17;"Pack Performance - 6 U";;17;"EUR";"TODAY[-21d]";20230;1;22500;17000;2;34;;;6;1;11;2;2
|
||||
18;"Serveur classique - 5 U + Serveur haute performance - 6 U";;18;"EUR";"TODAY[-21d]";41000;1;49200;32000;2;45;;;6;1;11;2;2
|
||||
19;"Imprimante Jet d'encre - 6 U + Imprimante Laser - 10 U";;19;"EUR";"TODAY[-21d]";11112;1;12400;9400;1;69;;;7;1;8;3;1
|
||||
20;"Chef de projet - 10 JR(S)";;20;"EUR";"TODAY[-21d]";5000;1;5900;4200;3;23;;;10;1;9;1;3
|
||||
21;"Consultant - 9 JR(S)";;21;"EUR";"TODAY[-14d]";4800;1;5500;3700;2;94;;;11;1;13;3;2
|
||||
22;"Maintenance annuelle - 1 ANNEE";;22;"EUR";"TODAY[-14d]";2000;1;2600;1700;6;58;;;11;1;12;2;6
|
||||
23;"Chef de projet - 4 JR(S) + Consultant - 20 JR(S)";;23;"EUR";"TODAY[-14d]";21000;1;25800;16600;3;79;;;7;1;11;2;3
|
||||
24;"Pack Performance - 5 U";;24;"EUR";"TODAY[-14d]";20230;1;23500;17000;3;62;;;6;1;9;1;3
|
||||
25;"Pack Classique - 10 U";;25;"EUR";"TODAY[-14d]";18450;1;23600;14400;1;78;;;7;1;;2;1
|
||||
26;"Ecran LED HD 24 pouces - 7 U";;26;"EUR";"TODAY[-14d]";1000;1;1300;800;1;74;;;11;1;;3;1
|
||||
27;"Ecran LED HD 22 pouces - 7 U + Imprimante Laser - 13 U";;27;"EUR";"TODAY[-14d]";7864;1;9000;5500;2;58;;;3;1;;1;2
|
||||
28;"Projet - 1 U";;28;"EUR";"TODAY[-7d]";8000;1;9900;7000;2;78;;;3;1;;1;2
|
||||
29;"Chef de projet - 9 JR(S)";;29;"EUR";"TODAY[-7d]";8000;1;10000;6600;1;61;;;6;1;;3;1
|
||||
30;"Imprimante Jet d'encre - 6 U + Ecran LED HD 22 pouces - 8 U";;30;"EUR";"TODAY[-7d]";2316;1;2800;1800;3;57;;;6;1;;3;3
|
||||
31;"Pack Classique - 18 U + Imprimante Jet d'encre - 2 U";20;;"EUR";"TODAY[-4M-7d]";33868;1;37300;29500;5;84;;;12;1;11;2;5
|
||||
32;"Imprimante Jet d'encre - 14 U + Serveur classique - 1 U";44;;"EUR";"TODAY[-3M-7d]";6106;3;7900;5300;5;74;;;12;1;12;2;5
|
||||
33;"Imprimante Laser - 8 U + Serveur haute performance - 5 U";132;;"EUR";"TODAY[-2M-7d]";15932;3;20100;13700;5;90;;;12;1;11;2;5
|
||||
34;"Pack Performance - 10 U";77;;"EUR";"TODAY[-1M-7d]";110000;3;125400;77000;4;100;;;12;1;12;2;4
|
||||
35;"Consultant - 11 JR(S)";88;;"EUR";"TODAY[-28d]";8800;3;10400;7000;5;47;;;12;1;9;1;5
|
||||
36;"Chef de projet - 10 JR(S) + Maintenance annuelle - 1 ANNEE";132;;"EUR";"TODAY[-21d]";12000;3;15200;10000;4;99;;;12;1;8;3;4
|
||||
37;"Projet - 1 U + Chef de projet - 2 JR(S)";136;;"EUR";"TODAY[-14d]";10000;1;12200;8300;4;54;;;12;1;8;3;4
|
||||
38;"Imprimante Laser - 6 U + Ecran LED HD 24 pouces - 10 U";148;;"EUR";"TODAY[-7d]";5861;1;7400;5200;3;59;;;12;1;13;3;3
|
||||
|
@ -0,0 +1,4 @@
|
||||
"name";"code";"name_en"
|
||||
"Nouveau";"NEW";"New"
|
||||
"Récurrent";"RCR";"Recurring"
|
||||
"Existant";"EXT";"Existing"
|
||||
|
@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="ActionEvent" lang="java" extends="com.axelor.apps.base.db.ICalendarEvent">
|
||||
|
||||
<!-- Commun -->
|
||||
<datetime name="limitDateT" title="Limit Date"/>
|
||||
|
||||
<long name="duration" title="Duration"/>
|
||||
|
||||
<many-to-one name="eventCategory" ref="com.axelor.apps.crm.db.EventCategory" title="Category"/>
|
||||
|
||||
<string name="relatedToSelect" title="Related to" selection="crm.event.related.to.select"/>
|
||||
<long name="relatedToSelectId"/>
|
||||
<integer name="statusSelect" title="Status" selection="crm.event.status.select"/>
|
||||
|
||||
<many-to-one name="team" ref="com.axelor.team.db.Team" title="Team"/>
|
||||
|
||||
<string name="calendarEventUid" title="UID (Calendar)"/>
|
||||
|
||||
<!-- Call -->
|
||||
<integer name="callTypeSelect" title="Call type" selection="crm.event.call.type.select"/>
|
||||
<many-to-many name="guestList" ref="com.axelor.auth.db.User" title="Guest"/>
|
||||
|
||||
<!-- Task -->
|
||||
<boolean name="isRecurrent" title="Recurrent"/>
|
||||
<many-to-one name="parentEvent" ref="com.axelor.apps.crm.db.Event"/>
|
||||
|
||||
<integer name="prioritySelect" title="Priority" selection="crm.event.priority.select" default="2"/>
|
||||
<!-- roq flags -->
|
||||
<integer name="flag" title="Flag" selection="crm.event.flag.select"/>
|
||||
|
||||
|
||||
<string name="uid" column="calendar_uid" unique="true" hashKey="false" title="UID"/>
|
||||
<string name="url" title="URL"/>
|
||||
<string name="subject" required="true" namecolumn="true" title="Subject"/>
|
||||
<string name="description" title="Description" large="true"/>
|
||||
<string name="status" title="Status"/>
|
||||
<datetime name="startDateTime" required="true" title="Start date"/>
|
||||
<datetime name="endDateTime" required="true" title="End date"/>
|
||||
<boolean name="allDay" title="All day"/>
|
||||
<string name="location" title="Location"/>
|
||||
<string name="geo" title="Geo. coordinates"/>
|
||||
|
||||
<many-to-one name="organizer" ref="com.axelor.apps.base.db.ICalendarUser" title="Organizer"/>
|
||||
<one-to-many name="attendees" ref="com.axelor.apps.base.db.ICalendarUser" title="Attendees" mappedBy="event" orphanRemoval="false"/>
|
||||
|
||||
<integer name="visibilitySelect" title="Visibility" selection="i.cal.event.visibility.select" default="1"/>
|
||||
<integer name="disponibilitySelect" title="Availability" selection="i.cal.event.disponibility.select" default="1"/>
|
||||
<string name="subjectTeam"/>
|
||||
<integer name="typeSelect" title="Type" selection="icalendar.event.type.select" required="true" />
|
||||
<many-to-one name="user" column="user_id" ref="com.axelor.auth.db.User" title="Assigned to"/>
|
||||
<finder-method name="findByUid" using="uid" />
|
||||
</entity>
|
||||
</domain-models>
|
||||
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="base" package="com.axelor.apps.base.db"/>
|
||||
|
||||
<entity name="AppCrm" lang="java" extends="App">
|
||||
<integer name="assignableUsers" title="Assignable Users" selection="crm.app.crm.assignable.user.select"/>
|
||||
<many-to-many name="groupsAssignable" title="Groups Assignable" ref="com.axelor.auth.db.Group"/>
|
||||
<boolean name="displayCustomerDescriptionInOpportunity" title="Display customer description in opportunity"/>
|
||||
|
||||
<track>
|
||||
<field name="assignableUsers" on="UPDATE"/>
|
||||
<field name="displayCustomerDescriptionInOpportunity" on="UPDATE"/>
|
||||
</track>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="base" package="com.axelor.apps.base.db"/>
|
||||
|
||||
<entity name="Batch" lang="java" sequential="true">
|
||||
|
||||
<many-to-one name="crmBatch" ref="com.axelor.apps.crm.db.CrmBatch" />
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="base" package="com.axelor.apps.base.db"/>
|
||||
|
||||
<entity name="Company" lang="java" cacheable="true">
|
||||
|
||||
<one-to-one name="crmConfig" ref="com.axelor.apps.crm.db.CrmConfig" title="CRM config" mappedBy="company"/>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="CrmBatch" lang="java">
|
||||
|
||||
<!-- HEADER -->
|
||||
<string name="code" title="Code" namecolumn="true" unique="true"/>
|
||||
<integer name="actionSelect" title="Action" required="true" selection="icrm.batch.action.select"/>
|
||||
<many-to-one name="company" ref="com.axelor.apps.base.db.Company" title="Company" />
|
||||
|
||||
<!-- OTHERS INFORMATIONS -->
|
||||
<string name="description" title="Description" large="true" />
|
||||
<one-to-many name="batchList" ref="com.axelor.apps.base.db.Batch" mappedBy="crmBatch" title="Batchs" />
|
||||
|
||||
<integer name="durationTypeSelect" title="Duration type" selection="crm.eventReminder.duration.type.select"/>
|
||||
|
||||
<many-to-many name="targetConfigurationSet" ref="com.axelor.apps.crm.db.TargetConfiguration" title="Targets configurations"/>
|
||||
|
||||
<extra-code><![CDATA[
|
||||
|
||||
//ACTION SELECT
|
||||
public static final int ACTION_BATCH_EVENT_REMINDER = 21;
|
||||
public static final int ACTION_BATCH_TARGET = 22;
|
||||
|
||||
public static final String CODE_BATCH_EVENT_REMINDER = "AX_EVENT_REMINDER";
|
||||
]]></extra-code>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="CrmConfig" lang="java" cacheable="true">
|
||||
|
||||
<one-to-one name="company" ref="com.axelor.apps.base.db.Company" title="Company" required="true" unique="true"/>
|
||||
<many-to-one name="eventTemplate" ref="com.axelor.apps.message.db.Template" title="Event reminder template"/>
|
||||
<many-to-one name="taskTemplate" ref="com.axelor.apps.message.db.Template" title="Task reminder template"/>
|
||||
<many-to-one name="meetingTemplate" ref="com.axelor.apps.message.db.Template" title="Meeting reminder template"/>
|
||||
<many-to-one name="callTemplate" ref="com.axelor.apps.message.db.Template" title="Call reminder template"/>
|
||||
<many-to-one name="meetingDateChangeTemplate" ref="com.axelor.apps.message.db.Template" title="Meeting's date changed template"/>
|
||||
<many-to-one name="meetingGuestAddedTemplate" ref="com.axelor.apps.message.db.Template" title="Meeting's guest added template"/>
|
||||
<many-to-one name="meetingGuestDeletedTemplate" ref="com.axelor.apps.message.db.Template" title="Meeting's guest deleted template"/>
|
||||
|
||||
<track>
|
||||
<field name="company" on="UPDATE"/>
|
||||
<field name="eventTemplate" on="UPDATE"/>
|
||||
<field name="taskTemplate" on="UPDATE"/>
|
||||
<field name="meetingTemplate" on="UPDATE"/>
|
||||
<field name="callTemplate" on="UPDATE"/>
|
||||
<field name="meetingDateChangeTemplate" on="UPDATE"/>
|
||||
<field name="meetingGuestAddedTemplate" on="UPDATE"/>
|
||||
<field name="meetingGuestDeletedTemplate" on="UPDATE"/>
|
||||
</track>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="message" package="com.axelor.apps.message.db"/>
|
||||
|
||||
<entity name="EmailAddress" lang="java">
|
||||
|
||||
<one-to-one name="lead" ref="com.axelor.apps.crm.db.Lead" title="Lead" mappedBy="emailAddress"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="Event" lang="java" extends="com.axelor.apps.base.db.ICalendarEvent">
|
||||
|
||||
<!-- Commun -->
|
||||
<datetime name="limitDateT" title="Limit Date"/>
|
||||
|
||||
<long name="duration" title="Duration"/>
|
||||
|
||||
<many-to-one name="eventCategory" ref="com.axelor.apps.crm.db.EventCategory" title="Category"/>
|
||||
|
||||
<string name="relatedToSelect" title="Related to" selection="crm.event.related.to.select"/>
|
||||
<long name="relatedToSelectId"/>
|
||||
<integer name="statusSelect" title="Status" selection="crm.event.status.select"/>
|
||||
|
||||
<many-to-one name="team" ref="com.axelor.team.db.Team" title="Team"/>
|
||||
|
||||
<string name="calendarEventUid" title="UID (Calendar)"/>
|
||||
|
||||
<one-to-many name="eventReminderList" ref="com.axelor.apps.crm.db.EventReminder" mappedBy="event" title="Reminders"/>
|
||||
|
||||
<many-to-one name="partner" ref="com.axelor.apps.base.db.Partner" title="Partner"/>
|
||||
<many-to-one name="contactPartner" ref="com.axelor.apps.base.db.Partner" title="Contact"/>
|
||||
<many-to-one name="lead" ref="com.axelor.apps.crm.db.Lead" title="Lead"/>
|
||||
|
||||
<!-- Call -->
|
||||
<integer name="callTypeSelect" title="Call type" selection="crm.event.call.type.select"/>
|
||||
|
||||
<many-to-many name="guestList" ref="com.axelor.auth.db.User" title="Guest"/>
|
||||
|
||||
<many-to-many name="presentGuestList" ref="com.axelor.auth.db.User" title="Present guests"/>
|
||||
|
||||
<!-- Task -->
|
||||
<boolean name="isRecurrent" title="Recurrent"/>
|
||||
<many-to-one name="parentEvent" ref="com.axelor.apps.crm.db.Event"/>
|
||||
|
||||
<integer name="prioritySelect" title="Priority"
|
||||
selection="crm.event.priority.select" default="2"/>
|
||||
|
||||
<many-to-one name="recurrenceConfiguration" ref="com.axelor.apps.crm.db.RecurrenceConfiguration"/>
|
||||
|
||||
<many-to-many ref="com.axelor.apps.base.db.CompanyDepartment" name="departmentList" />
|
||||
<many-to-one ref="com.axelor.apps.base.db.CompanyDepartment" name="departmentEmitter" />
|
||||
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
// TYPE SELECT
|
||||
public static final int TYPE_EVENT = 0;
|
||||
public static final int TYPE_CALL = 1;
|
||||
public static final int TYPE_MEETING = 2;
|
||||
public static final int TYPE_TASK = 3;
|
||||
|
||||
// STATUS SELECT
|
||||
public static final int STATUS_PLANNED = 1;
|
||||
public static final int STATUS_REALIZED = 2;
|
||||
public static final int STATUS_CANCELED = 3;
|
||||
public static final int STATUS_NOT_STARTED = 11;
|
||||
public static final int STATUS_ON_GOING = 12;
|
||||
public static final int STATUS_PENDING = 13;
|
||||
public static final int STATUS_FINISHED = 14;
|
||||
public static final int STATUS_REPORTED = 15;
|
||||
]]>
|
||||
</extra-code>
|
||||
|
||||
</entity>
|
||||
</domain-models>
|
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="EventAttendee" lang="java">
|
||||
|
||||
<many-to-one name="event" ref="com.axelor.apps.crm.db.Event" title="Event"/>
|
||||
|
||||
<integer name="statusSelect" title="Status" selection="crm.event.attendee.status.select"/>
|
||||
<many-to-one name="contactPartner" ref="com.axelor.apps.base.db.Partner" title="Contact"/>
|
||||
<many-to-one name="lead" ref="com.axelor.apps.crm.db.Lead" title="Lead"/>
|
||||
|
||||
<string name="name" title="Attendee"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="EventCategory" lang="java" cacheable="true">
|
||||
<string name="name" title="Name" required="true"/>
|
||||
<string name="code" title="Code" required="true"/>
|
||||
<integer name="typeSelect" title="Type" selection="icalendar.event.type.select"/>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="EventReminder" lang="java">
|
||||
|
||||
<many-to-one name="event" ref="com.axelor.apps.crm.db.Event" title="Event"/>
|
||||
<integer name="typeSelect" title="Type" selection="crm.event.reminder.type.select" default="1"/>
|
||||
<integer name="modeSelect" title="Operation mode" selection="crm.event.reminder.mode.select" default="1" required="true"/>
|
||||
<many-to-one name="user" title="User" column="user_id" ref="com.axelor.auth.db.User" required="true"/>
|
||||
<integer name="duration" title="Duration"/>
|
||||
<integer name="durationTypeSelect" title="Duration type" selection="crm.eventReminder.duration.type.select"/>
|
||||
<integer name="assignToSelect" title="Assign to" selection="crm.eventReminder.assign.to.select" default = "1"/>
|
||||
<boolean name="isReminded" title="Reminded" default="false"/>
|
||||
<datetime name="sendingDateT" title="Sending date"/>
|
||||
<many-to-many name="batchSet" ref="com.axelor.apps.base.db.Batch" title="Batchs"/>
|
||||
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
// ASSIGN TO SELECT
|
||||
public static final Integer ASSIGN_TO_ME = 1;
|
||||
public static final Integer ASSIGN_TO_ALL = 3;
|
||||
|
||||
// MODE SELECT
|
||||
public static final Integer MODE_BEFORE_DATE = 1;
|
||||
public static final Integer MODE_AT_DATE = 2;
|
||||
|
||||
// DURATION TYPE SELECT
|
||||
public static final int DURATION_TYPE_MINUTES = 1;
|
||||
public static final int DURATION_TYPE_HOURS = 2;
|
||||
public static final int DURATION_TYPE_DAYS = 3;
|
||||
public static final int DURATION_TYPE_WEEKS = 4;
|
||||
]]>
|
||||
</extra-code>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="exception" package="com.axelor.exception.db"/>
|
||||
|
||||
<entity name="ExceptionOrigin" lang="java">
|
||||
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
public static final String CRM = "crm";
|
||||
]]>
|
||||
</extra-code>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" ?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="base" package="com.axelor.apps.base.db"/>
|
||||
|
||||
<entity name="ICalendar" table="ICAL_CALENDAR" sequential="true">
|
||||
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
// SYNCHRONISATION SELECT
|
||||
public static final String CRM_SYNCHRO = "Event";
|
||||
]]>
|
||||
</extra-code>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="purchase" package="com.axelor.apps.purchase.db"/>
|
||||
|
||||
<entity name="ImportationFolder" lang="java">
|
||||
|
||||
<one-to-many name="events" ref="com.axelor.apps.crm.db.Event" />
|
||||
|
||||
</entity>
|
||||
</domain-models>
|
||||
@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="Lead" lang="java">
|
||||
|
||||
<string name="titleSelect" title="Title" selection="partner.title.type.select"/>
|
||||
<string name="name" required="true" title="Last name"/>
|
||||
<string name="firstName" title="First name"/>
|
||||
<string name="enterpriseName" title="Enterprise"/>
|
||||
<string name="officeName" title="Office name"/>
|
||||
<many-to-one name="jobTitleFunction" title="Job Title" ref="com.axelor.apps.base.db.Function"/>
|
||||
<string name="mobilePhone" title="Mobile N°"/>
|
||||
<string name="fixedPhone" title="Fixed Phone"/>
|
||||
<string name="department" title="Dep./Div."/>
|
||||
<string name="fax" title="Fax"/>
|
||||
<string name="webSite" title="Website"/>
|
||||
|
||||
<!-- Primary address group -->
|
||||
<string name="primaryAddress" title="Address"/>
|
||||
<string name="primaryCity" title="City"/>
|
||||
<string name="primaryState" title="Region"/>
|
||||
<string name="primaryPostalCode" title="Postal code"/>
|
||||
<many-to-one name="primaryCountry" ref="com.axelor.apps.base.db.Country" title="Country"/>
|
||||
|
||||
<one-to-one name="emailAddress" ref="com.axelor.apps.message.db.EmailAddress" title="Email"/>
|
||||
<binary name="picture" title="Picture" />
|
||||
|
||||
<string name="description" title="Description" large="true"/>
|
||||
<date name="contactDate" title="Contact date" />
|
||||
|
||||
<integer name="statusSelect" title="Status" selection="crm.lead.status.select" default="1" required="true" massUpdate="true"/>
|
||||
<boolean name="isRecycled" title="Recycled"/>
|
||||
<many-to-one name="source" ref="com.axelor.apps.base.db.Source" title="Source"/>
|
||||
<string name="statusDescription" title="Status description" large="true"/>
|
||||
<decimal name="estimatedBudget" title="Estimated budget"/>
|
||||
<string name="sourceDescription" title="Source description" large="true"/>
|
||||
<string name="referredBy" title="Referred by"/>
|
||||
<boolean name="isDoNotCall" title="Rejection of calls"/>
|
||||
<boolean name="isDoNotSendEmail" title="Rejection of e-mails"/>
|
||||
|
||||
<many-to-one name="partner" ref="com.axelor.apps.base.db.Partner" title="Contact" readonly="true"/>
|
||||
|
||||
|
||||
<many-to-one name="user" column="user_id" ref="com.axelor.auth.db.User" title="Assigned to" massUpdate="true"/>
|
||||
<many-to-one name="team" ref="com.axelor.team.db.Team" title="Team" massUpdate="true" />
|
||||
<many-to-one name="industrySector" title="Industry sector" ref="com.axelor.apps.base.db.IndustrySector" massUpdate="true"/>
|
||||
|
||||
<one-to-many name="eventList" ref="com.axelor.apps.crm.db.Event" title="Events" mappedBy="lead"/>
|
||||
<one-to-many name="opportunitiesList" ref="com.axelor.apps.crm.db.Opportunity" title="Opportunities" mappedBy="lead"/>
|
||||
<many-to-one name="lostReason" ref="LostReason" title="Lost reason" />
|
||||
|
||||
<string name="lostReasonStr" title="Lost reason" large="true"/>
|
||||
<string name="fullName" title="Contact name" namecolumn="true" />
|
||||
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
public static final int LEAD_STATUS_NEW = 1;
|
||||
public static final int LEAD_STATUS_ASSIGNED = 2;
|
||||
public static final int LEAD_STATUS_IN_PROCESS = 3;
|
||||
public static final int LEAD_STATUS_CONVERTED = 4;
|
||||
public static final int LEAD_STATUS_LOST = 5;
|
||||
|
||||
public static final int CONVERT_LEAD_CREATE_PARTNER = 1;
|
||||
public static final int CONVERT_LEAD_SELECT_PARTNER = 2;
|
||||
public static final int CONVERT_LEAD_CREATE_CONTACT = 1;
|
||||
public static final int CONVERT_LEAD_SELECT_CONTACT = 2;
|
||||
|
||||
]]>
|
||||
</extra-code>
|
||||
|
||||
<track>
|
||||
<field name="name" />
|
||||
<field name="statusSelect" on="UPDATE"/>
|
||||
<message if="true" on="CREATE">Lead created</message>
|
||||
<message if="statusSelect == 2" tag="important">Lead Assigned</message>
|
||||
<message if="statusSelect == 5" tag="success">Lead Converted</message>
|
||||
</track>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="LostReason" lang="java" cacheable="true">
|
||||
|
||||
<string name="name" title="Name" required="true"/>
|
||||
<boolean name="freeText" title="Free text"/>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="message" package="com.axelor.apps.message.db"/>
|
||||
|
||||
<entity name="Message" lang="java">
|
||||
|
||||
<many-to-one name="event" ref="com.axelor.apps.crm.db.Event" title="Event"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="Opportunity" lang="java">
|
||||
|
||||
<string name="name" title="Name" required="true"/>
|
||||
<many-to-one name="partner" ref="com.axelor.apps.base.db.Partner" title="Customer"/>
|
||||
<many-to-one name="currency" ref="com.axelor.apps.base.db.Currency" title="Currency"/>
|
||||
<date name="expectedCloseDate" title="Expected close date"/>
|
||||
<decimal name="amount" title="Amount"/>
|
||||
<many-to-one name="opportunityType" ref="com.axelor.apps.crm.db.OpportunityType" title="Type of need"/>
|
||||
<string name="bestCase" title="Best case"/>
|
||||
<string name="worstCase" title="Worst case"/>
|
||||
<integer name="salesStageSelect" title="Sales stage" selection="crm.opportunity.sales.stage.select"/>
|
||||
<decimal name="probability" title="Probability (%)"/>
|
||||
<string name="nextStep" title="Next step"/>
|
||||
<string name="description" large="true" title="Description"/>
|
||||
<string name="customerDescription" large="true" title="Customer Description"/>
|
||||
<many-to-one name="source" ref="com.axelor.apps.base.db.Source" title="Source"/>
|
||||
<many-to-one name="company" ref="com.axelor.apps.base.db.Company" title="Company"/>
|
||||
<integer name="orderByState"/>
|
||||
<string name="memo" large="true"/>
|
||||
|
||||
<many-to-one name="lead" ref="com.axelor.apps.crm.db.Lead" title="Lead"/>
|
||||
|
||||
<many-to-one name="user" column="user_id" ref="com.axelor.auth.db.User" title="Assigned to"/>
|
||||
<many-to-one name="team" ref="com.axelor.team.db.Team" title="Team"/>
|
||||
|
||||
<many-to-one name="lostReason" ref="LostReason" title="Lost reason" />
|
||||
<string name="lostReasonStr" title="Lost reason" large="true"/>
|
||||
<many-to-one name="tradingName" ref="com.axelor.apps.base.db.TradingName"/>
|
||||
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
// Stage SELECT
|
||||
public static final int SALES_STAGE_NEW = 1;
|
||||
public static final int SALES_STAGE_QUALIFICATION = 2;
|
||||
public static final int SALES_STAGE_PROPOSITION = 3;
|
||||
public static final int SALES_STAGE_NEGOTIATION = 4;
|
||||
public static final int SALES_STAGE_CLOSED_WON = 5;
|
||||
public static final int SALES_STAGE_CLOSED_LOST = 6;
|
||||
]]>
|
||||
</extra-code>
|
||||
|
||||
|
||||
<track>
|
||||
<field name="name"/>
|
||||
<message if="true" on="CREATE">Opportunity created</message>
|
||||
<message if="salesStageSelect == 5" fields="salesStageSelect" tag="success">Opportunity won</message>
|
||||
<message if="salesStageSelect == 6" fields="salesStageSelect" tag="warning">Opportunity lost</message>
|
||||
</track>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="OpportunityType" lang="java">
|
||||
|
||||
<string name="name" title="Name" required="true"/>
|
||||
<string name="code" title="Code" required="true"/>
|
||||
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="Participant" lang="java">
|
||||
|
||||
<many-to-one name="partner" ref="com.axelor.apps.base.db.Partner" title="Partner"/>
|
||||
<boolean name="isComing" title="Present"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="RecurrenceConfiguration" lang="java">
|
||||
|
||||
<integer name="recurrenceType" title="Recurrence" selection="crm.event.recurrence.type" />
|
||||
<integer name="periodicity" title="Repeat every"/>
|
||||
<boolean name="sunday" title="Su"/>
|
||||
<boolean name="monday" title="Mo"/>
|
||||
<boolean name="tuesday" title="Tu"/>
|
||||
<boolean name="wednesday" title="We"/>
|
||||
<boolean name="thursday" title="Th"/>
|
||||
<boolean name="friday" title="Fr"/>
|
||||
<boolean name="saturday" title="Sa"/>
|
||||
<integer name="monthRepeatType" title="Repeat every:" selection="crm.event.recurrence.month.repeat.type"/>
|
||||
<date name="startDate" title="Start date"/>
|
||||
<integer name="endType" title="End" selection="crm.event.recurrence.end.type"/>
|
||||
<integer name="repetitionsNumber" title="Repetitions number" />
|
||||
<date name="endDate" title="End date" />
|
||||
<string name="recurrenceName" title="Recurrence name" namecolumn="true"/>
|
||||
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
public static final int TYPE_DAY = 1;
|
||||
public static final int TYPE_WEEK = 2;
|
||||
public static final int TYPE_MONTH = 3;
|
||||
public static final int TYPE_YEAR = 4;
|
||||
|
||||
public static final int REPEAT_TYPE_MONTH = 1;
|
||||
public static final int REPEAT_TYPE_WEEK = 2;
|
||||
|
||||
public static final int END_TYPE_REPET = 1;
|
||||
public static final int END_TYPE_DATE = 2;
|
||||
]]>
|
||||
</extra-code>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="Target" lang="java">
|
||||
|
||||
<string name="name" title="Name"/>
|
||||
<string name="code" title="Code"/>
|
||||
<many-to-one name="user" column="user_id" ref="com.axelor.auth.db.User" title="Assigned to"/>
|
||||
<many-to-one name="team" ref="com.axelor.team.db.Team" title="Team"/>
|
||||
|
||||
<!-- Opportunity -->
|
||||
<decimal name="opportunityAmountWon" title="Amount won" readonly="true"/>
|
||||
<integer name="opportunityCreatedNumber" title="Created Nbr." readonly="true"/>
|
||||
<integer name="opportunityCreatedWon" title="Created Won" readonly="true"/>
|
||||
<decimal name="opportunityAmountWonTarget" title="Amount Won"/>
|
||||
<integer name="opportunityCreatedNumberTarget" title="Created Nbr."/>
|
||||
<integer name="opportunityCreatedWonTarget" title="Created Won"/>
|
||||
|
||||
<!-- Sales order -->
|
||||
<!-- <decimal name="saleOrderAmountWon" title="Amount won"/> -->
|
||||
<!-- <integer name="saleOrderCreatedNumber" title="Created number"/> -->
|
||||
<!-- <integer name="saleOrderCreatedWon" title="Created won"/> -->
|
||||
<!-- <decimal name="saleOrderAmountWonTarget" title="Amount won"/> -->
|
||||
<!-- <integer name="saleOrderCreatedNumberTarget" title="Created number"/> -->
|
||||
<!-- <integer name="saleOrderCreatedWonTarget" title="Created won"/> -->
|
||||
|
||||
<!-- Call -->
|
||||
<integer name="callEmittedNumber" title="Call emitted Nbr." readonly="true"/>
|
||||
<integer name="meetingNumber" title="Meeting Nbr." readonly="true"/>
|
||||
<integer name="callEmittedNumberTarget" title="Call emitted Nbr."/>
|
||||
<integer name="meetingNumberTarget" title="Meeting Nbr."/>
|
||||
|
||||
<integer name="periodTypeSelect" title="Period type" selection="crm.target.configuration.period.type.select"/>
|
||||
|
||||
<date name="fromDate" title="Date from"/>
|
||||
<date name="toDate" title="Date to"/>
|
||||
|
||||
|
||||
</entity>
|
||||
</domain-models>
|
||||
@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="TargetConfiguration" lang="java">
|
||||
|
||||
<string name="name" title="Name"/>
|
||||
<string name="code" title="Code"/>
|
||||
<many-to-one name="user" column="user_id" ref="com.axelor.auth.db.User" title="Assigned to"/>
|
||||
<many-to-one name="team" ref="com.axelor.team.db.Team" title="Team"/>
|
||||
|
||||
<!-- Opportunity -->
|
||||
<decimal name="opportunityAmountWon" title="Amount Won"/>
|
||||
<integer name="opportunityCreatedNumber" title="Created Nbr"/>
|
||||
<integer name="opportunityCreatedWon" title="Created Won"/>
|
||||
|
||||
<!-- Sales order -->
|
||||
<!-- <decimal name="saleOrderAmountWon" title="Amount won"/> -->
|
||||
<!-- <integer name="saleOrderCreatedNumber" title="Created number"/> -->
|
||||
<!-- <integer name="saleOrderCreatedWon" title="Created won"/> -->
|
||||
|
||||
<!-- Call -->
|
||||
<integer name="callEmittedNumber" title="Call emitted Nbr"/>
|
||||
<integer name="meetingNumber" title="Meeting Nbr"/>
|
||||
|
||||
<integer name="periodTypeSelect" title="Period type" selection="crm.target.configuration.period.type.select"/>
|
||||
|
||||
<date name="fromDate" title="Date from" required="true"/>
|
||||
<date name="toDate" title="Date to" required="true"/>
|
||||
|
||||
<many-to-many name="batchSet" ref="com.axelor.apps.base.db.Batch" title="Batchs"/>
|
||||
|
||||
<extra-code><![CDATA[
|
||||
|
||||
//PERIOD TYPE
|
||||
public static final int PERIOD_TYPE_NONE = 0;
|
||||
public static final int PERIOD_TYPE_MONTHLY = 1;
|
||||
public static final int PERIOD_TYPE_WEEKLY = 2;
|
||||
public static final int PERIOD_TYPE_DAILY = 3;
|
||||
|
||||
]]></extra-code>
|
||||
|
||||
</entity>
|
||||
</domain-models>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" ?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="helpdesk" package="com.axelor.apps.helpdesk.db"/>
|
||||
|
||||
<entity name="Ticket">
|
||||
|
||||
<many-to-one name="lead" ref="com.axelor.apps.crm.db.Lead" title="Lead"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,525 @@
|
||||
"key","message","comment","context"
|
||||
"%d times",,,
|
||||
"+33000000000",,,
|
||||
"+33100000000",,,
|
||||
"<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />",,,
|
||||
"<a class='fa fa-google' href='http://www.google.com' target='_blank' />",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,,
|
||||
"<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />",,,
|
||||
"<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />",,,
|
||||
"<span class='label label-warning'>The selected date is in the past.</span>",,,
|
||||
"<span class='label label-warning'>There is already a lead with this name.</span>",,,
|
||||
"<span style=""height:21px; line-height: 21px; margin-top:18px; display:inline-block"">VS</span>",,,
|
||||
"A lost reason must be selected",,,
|
||||
"Action",,,
|
||||
"Activities",,,
|
||||
"Add",,,
|
||||
"Add a guest",,,
|
||||
"Address",,,
|
||||
"After n repetitions",,,
|
||||
"All past events",,,
|
||||
"All upcoming events",,,
|
||||
"All users",,,
|
||||
"Amount",,,
|
||||
"Amount Won",,,
|
||||
"Amount won",,,
|
||||
"App Crm",,,
|
||||
"Apply changes to all recurrence's events",,,
|
||||
"Apply changes to this event only",,,
|
||||
"Apply modifications",,,
|
||||
"Apply modifications for all",,,
|
||||
"Are you sure you want to convert the lead?",,,
|
||||
"Assign to",,,
|
||||
"Assign to me",,,
|
||||
"Assignable Users",,,
|
||||
"Assigned",,,
|
||||
"Assigned to",,,
|
||||
"At specific date",,,
|
||||
"At the date",,,
|
||||
"Attendee",,,
|
||||
"Available",,,
|
||||
"Average duration between lead and first opportunity (days)",,,
|
||||
"Batchs",,,
|
||||
"Before start date",,,
|
||||
"Best Open Deals",,,
|
||||
"Best case",,,
|
||||
"Busy",,,
|
||||
"CRM",,,
|
||||
"CRM Activities",,,
|
||||
"CRM Batch",,,
|
||||
"CRM batches",,,
|
||||
"CRM config",,,
|
||||
"CRM config (${ name })",,,
|
||||
"CRM configuration",,,
|
||||
"CRM configurations",,,
|
||||
"CRM events",,,
|
||||
"Call",,,
|
||||
"Call emitted Nbr",,,
|
||||
"Call emitted Nbr.",,,
|
||||
"Call emitted historical",,,
|
||||
"Call filters",,,
|
||||
"Call reminder template",,,
|
||||
"Call type",,,
|
||||
"Calls",,,
|
||||
"Calls Dashboard",,,
|
||||
"Calls Db",,,
|
||||
"Calls by team by user",,,
|
||||
"Calls by user(of a team)",,,
|
||||
"Calls emitted historical",,,
|
||||
"Calls emitted target completed (%)",,,
|
||||
"Calls held by team by type",,,
|
||||
"Calls held by type by user",,,
|
||||
"Calls type by team",,,
|
||||
"Calls type by user",,,
|
||||
"Cancel this reminder",,,
|
||||
"Canceled",,,
|
||||
"Cases",,,
|
||||
"Category",,,
|
||||
"Characteristics",,,
|
||||
"Chart",,,
|
||||
"Check duplicate",,,
|
||||
"City",,,
|
||||
"Civility",,,
|
||||
"Closed Opportunities",,,
|
||||
"Closed lost",,,
|
||||
"Closed won",,,
|
||||
"Code",,,
|
||||
"Company",,,
|
||||
"Configuration",,,
|
||||
"Confirm lost reason",,,
|
||||
"Contact",,,
|
||||
"Contact date",,,
|
||||
"Contact details",,,
|
||||
"Contact function",,,
|
||||
"Contact name",,,
|
||||
"Contacts",,,
|
||||
"Convert",,,
|
||||
"Convert lead",,,
|
||||
"Convert lead (${ fullName })",,,
|
||||
"Convert lead into contact",,,
|
||||
"Convert lead into partner",,,
|
||||
"Converted",,,
|
||||
"Country",,,
|
||||
"Create a new reminder",,,
|
||||
"Create a quotation",,,
|
||||
"Create event",,,
|
||||
"Create new contact",,,
|
||||
"Create new partner",,,
|
||||
"Create opportunity",,,
|
||||
"Create opportunity (${ fullName })",,,
|
||||
"Create order (${ fullName })",,,
|
||||
"Create purchase quotation",,,
|
||||
"Create sale quotation",,,
|
||||
"Created Nbr",,,
|
||||
"Created Nbr.",,,
|
||||
"Created Won",,,
|
||||
"Created by",,,
|
||||
"Created leads by industry sector",,,
|
||||
"Created leads per month",,,
|
||||
"Created leads with at least one opportunity",,,
|
||||
"Created on",,,
|
||||
"Crm batch",,,
|
||||
"Currency",,,
|
||||
"Customer",,,
|
||||
"Customer Description",,,
|
||||
"Customer fixed phone",,,
|
||||
"Customer mobile phone",,,
|
||||
"Customer name",,,
|
||||
"Customer recovery",,,
|
||||
"Customers",,,
|
||||
"Daily",,,
|
||||
"Daily team call summary by user",,,
|
||||
"Dashboard",,,
|
||||
"Date from",,,
|
||||
"Date to",,,
|
||||
"Day of month",,,
|
||||
"Day of week",,,
|
||||
"Days",,,
|
||||
"Delete all events",,,
|
||||
"Delete only this event",,,
|
||||
"Delete this and next events",,,
|
||||
"Delivery Address",,,
|
||||
"Dep./Div.",,,
|
||||
"Description",,,
|
||||
"Display customer description in opportunity",,,
|
||||
"Duration",,,
|
||||
"Duration type",,,
|
||||
"Email",,,
|
||||
"Emails",,,
|
||||
"End",,,
|
||||
"End date",,,
|
||||
"Enterprise",,,
|
||||
"Enterprise name",,,
|
||||
"Error in lead conversion",,,
|
||||
"Estimated budget",,,
|
||||
"Event",,,
|
||||
"Event Categories",,,
|
||||
"Event Dashboard 1",,,
|
||||
"Event Db",,,
|
||||
"Event categories",,,
|
||||
"Event category",,,
|
||||
"Event configuration categories",,,
|
||||
"Event filters",,,
|
||||
"Event reminder",,,
|
||||
"Event reminder %s",,,
|
||||
"Event reminder batch",,,
|
||||
"Event reminder page",,,
|
||||
"Event reminder template",,,
|
||||
"Event reminders",,,
|
||||
"Event's reminder's generation's reporting :",,,
|
||||
"Events",,,
|
||||
"Every %d days",,,
|
||||
"Every %d months the %d",,,
|
||||
"Every %d weeks",,,
|
||||
"Every %d years the %s",,,
|
||||
"Every day",,,
|
||||
"Every month",,,
|
||||
"Every month the",,,
|
||||
"Every week",,,
|
||||
"Every year",,,
|
||||
"Every year the",,,
|
||||
"Expected close date",,,
|
||||
"Fax",,,
|
||||
"Finished",,,
|
||||
"First name",,,
|
||||
"Fixed Phone",,,
|
||||
"Fixed phone",,,
|
||||
"Follow up",,,
|
||||
"Follow-up",,,
|
||||
"For all",,,
|
||||
"For me",,,
|
||||
"Fr",,,
|
||||
"Free text",,,
|
||||
"From Date",,,
|
||||
"From date must be less than the to date",,,
|
||||
"Function",,,
|
||||
"General contact details",,,
|
||||
"Generate CRM configurations",,,
|
||||
"Generate Project",,,
|
||||
"Groups Assignable",,,
|
||||
"Guests",,,
|
||||
"High",,,
|
||||
"Historical Period",,,
|
||||
"Historical events completed",,,
|
||||
"Hours",,,
|
||||
"Import lead",,,
|
||||
"Import leads",,,
|
||||
"In process",,,
|
||||
"Incoming",,,
|
||||
"Industry Sector",,,
|
||||
"Industry sector",,,
|
||||
"Information",,,
|
||||
"Informations",,,
|
||||
"Input location please",,,
|
||||
"Invoicing Address",,,
|
||||
"Job Title",,,
|
||||
"Key accounts",,,
|
||||
"Last name",,,
|
||||
"Lead",,,
|
||||
"Lead Assigned",,,
|
||||
"Lead Converted",,,
|
||||
"Lead Dashboard 1",,,
|
||||
"Lead Db",,,
|
||||
"Lead Db 1",,,
|
||||
"Lead converted",,,
|
||||
"Lead created",,,
|
||||
"Lead filters",,,
|
||||
"Lead.address_information",,,
|
||||
"Lead.company",,,
|
||||
"Lead.email",,,
|
||||
"Lead.fax",,,
|
||||
"Lead.header",,,
|
||||
"Lead.industry",,,
|
||||
"Lead.lead_owner",,,
|
||||
"Lead.name",,,
|
||||
"Lead.other_address",,,
|
||||
"Lead.phone",,,
|
||||
"Lead.primary_address",,,
|
||||
"Lead.source",,,
|
||||
"Lead.status",,,
|
||||
"Lead.title",,,
|
||||
"Leads",,,
|
||||
"Leads Source",,,
|
||||
"Leads by Country",,,
|
||||
"Leads by Salesman by Status",,,
|
||||
"Leads by Source",,,
|
||||
"Leads by Team by Status",,,
|
||||
"Limit Date",,,
|
||||
"Lose",,,
|
||||
"Loss confirmation",,,
|
||||
"Lost",,,
|
||||
"Lost reason",,,
|
||||
"Lost reasons",,,
|
||||
"Low",,,
|
||||
"MapRest.PinCharLead",,,
|
||||
"MapRest.PinCharOpportunity",,,
|
||||
"Marketing",,,
|
||||
"Meeting",,,
|
||||
"Meeting Nbr",,,
|
||||
"Meeting Nbr.",,,
|
||||
"Meeting filters",,,
|
||||
"Meeting number historical",,,
|
||||
"Meeting reminder template",,,
|
||||
"Meeting's date changed template",,,
|
||||
"Meeting's guest added template",,,
|
||||
"Meeting's guest deleted template",,,
|
||||
"Meetings",,,
|
||||
"Meetings number historical",,,
|
||||
"Meetings number target completed (%)",,,
|
||||
"Memo",,,
|
||||
"Minutes",,,
|
||||
"Mo",,,
|
||||
"Mobile N°",,,
|
||||
"Mobile phone",,,
|
||||
"Month",,,
|
||||
"Monthly",,,
|
||||
"Months",,,
|
||||
"My Best Open Deals",,,
|
||||
"My CRM events",,,
|
||||
"My Calendar",,,
|
||||
"My Calls",,,
|
||||
"My Closed Opportunities",,,
|
||||
"My Current Leads",,,
|
||||
"My Key accounts",,,
|
||||
"My Leads",,,
|
||||
"My Meetings",,,
|
||||
"My Open Opportunities",,,
|
||||
"My Opportunities",,,
|
||||
"My Tasks",,,
|
||||
"My Team Best Open Deals",,,
|
||||
"My Team Calls",,,
|
||||
"My Team Closed Opportunities",,,
|
||||
"My Team Key accounts",,,
|
||||
"My Team Leads",,,
|
||||
"My Team Meetings",,,
|
||||
"My Team Open Opportunities",,,
|
||||
"My Team Tasks",,,
|
||||
"My Today Calls",,,
|
||||
"My Today Tasks",,,
|
||||
"My Upcoming Meetings",,,
|
||||
"My Upcoming Tasks",,,
|
||||
"My opportunities",,,
|
||||
"My past events",,,
|
||||
"My team opportunities",,,
|
||||
"My upcoming events",,,
|
||||
"Name",,,
|
||||
"Negotiation",,,
|
||||
"New",,,
|
||||
"Next stage",,,
|
||||
"Next step",,,
|
||||
"No lead import configuration found",,,
|
||||
"No template created in CRM configuration for company %s, emails have not been sent",,,
|
||||
"Non-participant",,,
|
||||
"None",,,
|
||||
"Normal",,,
|
||||
"Not started",,,
|
||||
"Objective",,,
|
||||
"Objective %s is in contradiction with objective's configuration %s",,,
|
||||
"Objectives",,,
|
||||
"Objectives Configurations",,,
|
||||
"Objectives Team Db",,,
|
||||
"Objectives User Db",,,
|
||||
"Objectives configurations",,,
|
||||
"Objectives team Dashboard",,,
|
||||
"Objectives user Dashboard",,,
|
||||
"Objectives' generation's reporting :",,,
|
||||
"Office name",,,
|
||||
"On going",,,
|
||||
"Open Cases by Agents",,,
|
||||
"Open Opportunities",,,
|
||||
"Operation mode",,,
|
||||
"Opportunities",,,
|
||||
"Opportunities By Origin By Stage",,,
|
||||
"Opportunities By Sale Stage",,,
|
||||
"Opportunities By Source",,,
|
||||
"Opportunities By Type",,,
|
||||
"Opportunities Db 1",,,
|
||||
"Opportunities Db 2",,,
|
||||
"Opportunities Db 3",,,
|
||||
"Opportunities Won By Lead Source",,,
|
||||
"Opportunities Won By Partner",,,
|
||||
"Opportunities Won By Salesman",,,
|
||||
"Opportunities amount won historical",,,
|
||||
"Opportunities amount won target competed (%)",,,
|
||||
"Opportunities amount won target completed (%)",,,
|
||||
"Opportunities created number historical",,,
|
||||
"Opportunities created number target completed (%)",,,
|
||||
"Opportunities created won historical",,,
|
||||
"Opportunities created won target completed (%)",,,
|
||||
"Opportunities filters",,,
|
||||
"Opportunity",,,
|
||||
"Opportunity Type",,,
|
||||
"Opportunity created",,,
|
||||
"Opportunity lost",,,
|
||||
"Opportunity type",,,
|
||||
"Opportunity types",,,
|
||||
"Opportunity won",,,
|
||||
"Optional participant",,,
|
||||
"Order by state",,,
|
||||
"Organization",,,
|
||||
"Outgoing",,,
|
||||
"Parent event",,,
|
||||
"Parent lead is missing.",,,
|
||||
"Partner",,,
|
||||
"Partner Details",,,
|
||||
"Pending",,,
|
||||
"Period type",,,
|
||||
"Periodicity must be greater than 0",,,
|
||||
"Picture",,,
|
||||
"Pipeline",,,
|
||||
"Pipeline by Stage and Type",,,
|
||||
"Pipeline next 90 days",,,
|
||||
"Planned",,,
|
||||
"Please complete the contact address.",,,
|
||||
"Please complete the partner address.",,,
|
||||
"Please configure all templates in CRM configuration for company %s",,,
|
||||
"Please configure informations for CRM for company %s",,,
|
||||
"Please save the event before setting the recurrence",,,
|
||||
"Please select a lead",,,
|
||||
"Please select the Lead(s) to print.",,,
|
||||
"Postal code",,,
|
||||
"Present",,,
|
||||
"Previous stage",,,
|
||||
"Previous step",,,
|
||||
"Primary address",,,
|
||||
"Print",,,
|
||||
"Priority",,,
|
||||
"Probability (%)",,,
|
||||
"Proposition",,,
|
||||
"Qualification",,,
|
||||
"Realized",,,
|
||||
"Recent lost deals",,,
|
||||
"Recently created opportunities",,,
|
||||
"Recurrence",,,
|
||||
"Recurrence assistant",,,
|
||||
"Recurrence configuration",,,
|
||||
"Recurrence name",,,
|
||||
"Recurrent",,,
|
||||
"Recycle",,,
|
||||
"Recycled",,,
|
||||
"Reference",,,
|
||||
"References",,,
|
||||
"Referred by",,,
|
||||
"Region",,,
|
||||
"Rejection of calls",,,
|
||||
"Rejection of e-mails",,,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reminded",,,
|
||||
"Reminder",,,
|
||||
"Reminder Templates",,,
|
||||
"Reminder(s) treated",,,
|
||||
"Reminders",,,
|
||||
"Repeat every",,,
|
||||
"Repeat every:",,,
|
||||
"Repeat the:",,,
|
||||
"Repetitions number",,,
|
||||
"Reported",,,
|
||||
"Reportings",,,
|
||||
"Reports",,,
|
||||
"Required participant",,,
|
||||
"Sa",,,
|
||||
"Sale quotation",,,
|
||||
"Sale quotations/orders",,,
|
||||
"Sales Stage",,,
|
||||
"Sales orders amount won historical",,,
|
||||
"Sales orders amount won target completed (%)",,,
|
||||
"Sales orders created number historical",,,
|
||||
"Sales orders created number target completed (%)",,,
|
||||
"Sales orders created won historical",,,
|
||||
"Sales orders created won target completed",,,
|
||||
"Sales orders created won target completed (%)",,,
|
||||
"Sales stage",,,
|
||||
"Salesman",,,
|
||||
"Schedule Event",,,
|
||||
"Schedule Event (${ fullName })",,,
|
||||
"Schedule Event(${ fullName})",,,
|
||||
"Select Contact",,,
|
||||
"Select Partner",,,
|
||||
"Select existing contact",,,
|
||||
"Select existing partner",,,
|
||||
"Send Email",,,
|
||||
"Send email",,,
|
||||
"Sending date",,,
|
||||
"Settings",,,
|
||||
"Show Partner",,,
|
||||
"Show all events",,,
|
||||
"Some user groups",,,
|
||||
"Source",,,
|
||||
"Source description",,,
|
||||
"Start",,,
|
||||
"Start date",,,
|
||||
"State",,,
|
||||
"Status",,,
|
||||
"Status description",,,
|
||||
"Su",,,
|
||||
"Take charge",,,
|
||||
"Target",,,
|
||||
"Target User Dashboard",,,
|
||||
"Target batch",,,
|
||||
"Target configuration",,,
|
||||
"Target configurations",,,
|
||||
"Target page",,,
|
||||
"Target team Dashboard",,,
|
||||
"Target vs Real",,,
|
||||
"Targets configurations",,,
|
||||
"Task",,,
|
||||
"Task reminder template",,,
|
||||
"Tasks",,,
|
||||
"Tasks filters",,,
|
||||
"Team",,,
|
||||
"Th",,,
|
||||
"The end date must be after the start date",,,
|
||||
"The number of repetitions must be greater than 0",,,
|
||||
"Title",,,
|
||||
"To Date",,,
|
||||
"Tools",,,
|
||||
"Trading name",,,
|
||||
"Treated objectives reporting",,,
|
||||
"Tu",,,
|
||||
"Type",,,
|
||||
"Type of need",,,
|
||||
"UID (Calendar)",,,
|
||||
"Unassigned Leads",,,
|
||||
"Unassigned Opportunities",,,
|
||||
"Unassigned opportunities",,,
|
||||
"Upcoming events",,,
|
||||
"Urgent",,,
|
||||
"User",,,
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured.",,,
|
||||
"User %s must have an active company to use templates",,,
|
||||
"Validate",,,
|
||||
"We",,,
|
||||
"Website",,,
|
||||
"Weekly",,,
|
||||
"Weeks",,,
|
||||
"Win",,,
|
||||
"Worst case",,,
|
||||
"Years",,,
|
||||
"You don't have the rights to delete this event",,,
|
||||
"You must choose a recurrence type",,,
|
||||
"You must choose at least one day in the week",,,
|
||||
"amount",,,
|
||||
"com.axelor.apps.crm.job.EventReminderJob",,,
|
||||
"com.axelor.apps.crm.service.batch.CrmBatchService",,,
|
||||
"crm.New",,,
|
||||
"date",,,
|
||||
"every week's day",,,
|
||||
"everyday",,,
|
||||
"fri,",,,
|
||||
"http://www.url.com",,,
|
||||
"important",,,
|
||||
"mon,",,,
|
||||
"on",,,
|
||||
"portal.daily.team.calls.summary.by.user",,,
|
||||
"sat,",,,
|
||||
"success",,,
|
||||
"sun,",,,
|
||||
"thur,",,,
|
||||
"tues,",,,
|
||||
"until the",,,
|
||||
"value:CRM",,,
|
||||
"warning",,,
|
||||
"wed,",,,
|
||||
"whatever@example.com",,,
|
||||
"www.url.com",,,
|
||||
|
@ -0,0 +1,521 @@
|
||||
"key","message","comment","context"
|
||||
"%d times","%d mal",,
|
||||
"+33000000000",,,
|
||||
"+33100000000",,,
|
||||
"<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />","<a class='fa fa fa-facebook' href='http://www.facebook.com' target='_blank' />",,
|
||||
"<a class='fa fa-google' href='http://www.google.com' target='_blank' />","<a class='fa fa fa-google' href='http://www.google.com' target='_blank' />",,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />","<a class='fa fa fa-twitter' href='http://www.twitter.com' target='_blank' />",,
|
||||
"<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />","<a class='fa fa fa-youtube' href='http://www.youtube.com' target='_blank' />",,
|
||||
"<span class='label label-warning'>The selected date is in the past.</span>",,,
|
||||
"<span class='label label-warning'>There is already a lead with this name.</span>","<span class='label label label-warning'>Es gibt bereits einen Lead mit diesem Namen.</span>",,
|
||||
"<span style=""height:21px; line-height: 21px; margin-top:18px; display:inline-block"">VS</span>",,,
|
||||
"A lost reason must be selected","Ein verlorener Grund muss ausgewählt werden.",,
|
||||
"Action","Aktion",,
|
||||
"Activities","Aktivitäten",,
|
||||
"Add","Hinzufügen",,
|
||||
"Add a guest","Einen Gast hinzufügen",,
|
||||
"Address","Adresse",,
|
||||
"After n repetitions","Nach n Wiederholungen",,
|
||||
"All past events","Alle vergangenen Ereignisse",,
|
||||
"All upcoming events","Alle kommenden Veranstaltungen",,
|
||||
"All users",,,
|
||||
"Amount","Betrag",,
|
||||
"Amount Won","Gewonnener Betrag",,
|
||||
"Amount won","Gewonnener Betrag",,
|
||||
"App Crm","App Crm",,
|
||||
"Apply changes to all recurrence's events","Änderungen auf alle Ereignisse des Wiederauftretens anwenden",,
|
||||
"Apply changes to this event only","Änderungen nur auf dieses Ereignis anwenden",,
|
||||
"Apply modifications","Änderungen übernehmen",,
|
||||
"Apply modifications for all","Änderungen für alle anwenden",,
|
||||
"Are you sure you want to convert the lead?","Sind Sie sicher, dass Sie den Lead konvertieren wollen?",,
|
||||
"Assign to","Zuweisen zu",,
|
||||
"Assign to me","Mir zuweisen",,
|
||||
"Assignable Users",,,
|
||||
"Assigned","Zugewiesen",,
|
||||
"Assigned to","Zugeordnet zu",,
|
||||
"At specific date",,,
|
||||
"At the date","Zum Zeitpunkt",,
|
||||
"Attendee","Teilnehmer",,
|
||||
"Available","Verfügbar",,
|
||||
"Average duration between lead and first opportunity (days)",,,
|
||||
"Batchs","Chargen",,
|
||||
"Before start date",,,
|
||||
"Best Open Deals","Beste offene Angebote",,
|
||||
"Best case","Bester Fall",,
|
||||
"Busy","Beschäftigt",,
|
||||
"CRM","CRM",,
|
||||
"CRM Activities","CRM-Aktivitäten",,
|
||||
"CRM Batch","CRM Batch",,
|
||||
"CRM batches","CRM-Batches",,
|
||||
"CRM config","CRM-Konfiguration",,
|
||||
"CRM config (${ name })","CRM-Konfiguration (${ Name })",,
|
||||
"CRM configuration","CRM-Konfiguration",,
|
||||
"CRM configurations","CRM-Konfigurationen",,
|
||||
"CRM events","CRM-Ereignisse",,
|
||||
"Call","Anruf",,
|
||||
"Call emitted Nbr","Anruf gesendet Nbr",,
|
||||
"Call emitted Nbr.","Anruf gesendet Nbr.",,
|
||||
"Call emitted historical","Anruf gesendet historisch",,
|
||||
"Call filters","Anruffilter",,
|
||||
"Call reminder template","Erinnerungsvorlage aufrufen",,
|
||||
"Call type","Anrufart",,
|
||||
"Calls","Anrufe",,
|
||||
"Calls Dashboard","Dashboard aufrufen",,
|
||||
"Calls Db","Anrufe Db",,
|
||||
"Calls by team by user","Anrufe nach Team nach Benutzer",,
|
||||
"Calls by user(of a team)","Anrufe nach Benutzer (eines Teams)",,
|
||||
"Calls emitted historical","Gesendete Anrufe historisch",,
|
||||
"Calls emitted target completed (%)","Anrufe gesendetes Ziel abgeschlossen (%)",,
|
||||
"Calls held by team by type","Anrufe, die vom Team gehalten werden, nach Art der Anrufe",,
|
||||
"Calls held by type by user","Anrufe, die nach Typ und Benutzer geordnet sind.",,
|
||||
"Calls type by team","Anrufe nach Teamtyp",,
|
||||
"Calls type by user","Anrufe nach Benutzertyp",,
|
||||
"Cancel this reminder",,,
|
||||
"Canceled","Abgesagt",,
|
||||
"Cases","Fälle",,
|
||||
"Category","Kategorie",,
|
||||
"Characteristics","Merkmale",,
|
||||
"Chart","Diagramm",,
|
||||
"Check duplicate","Duplikat prüfen",,
|
||||
"City","Stadt",,
|
||||
"Civility","Zivilität",,
|
||||
"Closed Opportunities","Geschlossene Opportunities",,
|
||||
"Closed lost","Geschlossen verloren",,
|
||||
"Closed won","Geschlossener Won",,
|
||||
"Code","Code",,
|
||||
"Company","Unternehmen",,
|
||||
"Configuration","Konfiguration",,
|
||||
"Confirm lost reason","Bestätigen Sie den verlorenen Grund",,
|
||||
"Contact","Kontakt",,
|
||||
"Contact date","Kontaktdatum",,
|
||||
"Contact details","Kontaktdaten",,
|
||||
"Contact name","Kontaktname",,
|
||||
"Contacts","Kontakte",,
|
||||
"Convert","Konvertieren",,
|
||||
"Convert lead","Lead umwandeln",,
|
||||
"Convert lead (${ fullName })","Lead konvertieren (${ fullName })",,
|
||||
"Convert lead into contact",,,
|
||||
"Convert lead into partner",,,
|
||||
"Converted","Konvertiert",,
|
||||
"Country","Land",,
|
||||
"Create a new reminder",,,
|
||||
"Create a quotation",,,
|
||||
"Create event","Veranstaltung erstellen",,
|
||||
"Create new contact","Neuen Kontakt erstellen",,
|
||||
"Create new partner","Neuen Partner anlegen",,
|
||||
"Create opportunity","Opportunity erstellen",,
|
||||
"Create opportunity (${ fullName })","Opportunity erstellen (${ fullName })",,
|
||||
"Create order (${ fullName })","Bestellung erstellen (${ fullName })",,
|
||||
"Create purchase quotation",,,
|
||||
"Create sale quotation",,,
|
||||
"Created Nbr","Erstellte Nbr",,
|
||||
"Created Nbr.","Erstellt Nbr.",,
|
||||
"Created Won","Erstellter Sieg",,
|
||||
"Created by","Erstellt von",,
|
||||
"Created leads by industry sector","Erstellte Leads nach Branchen",,
|
||||
"Created leads per month","Erstellte Leads pro Monat",,
|
||||
"Created leads with at least one opportunity",,,
|
||||
"Created on","Erstellt am",,
|
||||
"Crm batch","Crm-Batch",,
|
||||
"Currency","Währung",,
|
||||
"Customer","Kunde",,
|
||||
"Customer Description",,,
|
||||
"Customer fixed phone","Kundenfestes Telefon",,
|
||||
"Customer mobile phone","Kunden-Handy",,
|
||||
"Customer name","Kundenname",,
|
||||
"Customer recovery",,,
|
||||
"Customers","Kunden",,
|
||||
"Daily","Täglich",,
|
||||
"Daily team call summary by user","Tägliche Zusammenfassung der Teamanrufe nach Benutzern",,
|
||||
"Dashboard","Dashboard",,
|
||||
"Date from","Datum von",,
|
||||
"Date to","Datum bis",,
|
||||
"Day of month","Tag des Monats",,
|
||||
"Day of week","Wochentag",,
|
||||
"Days","Tage",,
|
||||
"Delete all events","Alle Ereignisse löschen",,
|
||||
"Delete only this event","Nur dieses Ereignis löschen",,
|
||||
"Delete this and next events","Diese und die nächsten Termine löschen",,
|
||||
"Delivery Address","Lieferadresse",,
|
||||
"Dep./Div.","Abteilung /Div.",,
|
||||
"Description","Beschreibung",,
|
||||
"Display customer description in opportunity",,,
|
||||
"Duration","Dauer",,
|
||||
"Duration type","Dauerart",,
|
||||
"Email","E-Mail",,
|
||||
"Emails","E-Mails",,
|
||||
"End","Ende",,
|
||||
"End date","Enddatum",,
|
||||
"Enterprise","Unternehmen",,
|
||||
"Enterprise name","Unternehmensname",,
|
||||
"Error in lead conversion","Fehler bei der Lead-Konvertierung",,
|
||||
"Estimated budget","Geschätztes Budget",,
|
||||
"Event","Veranstaltung",,
|
||||
"Event Categories","Event-Kategorien",,
|
||||
"Event Dashboard 1","Ereignis-Dashboard 1",,
|
||||
"Event Db","Ereignis Db",,
|
||||
"Event categories","Eventkategorien",,
|
||||
"Event category","Event-Kategorie",,
|
||||
"Event configuration categories","Kategorien der Eventkonfiguration",,
|
||||
"Event filters","Ereignisfilter",,
|
||||
"Event reminder","Ereignis-Erinnerung",,
|
||||
"Event reminder %s","Ereignis-Erinnerung %s",,
|
||||
"Event reminder batch","Ereignis-Erinnerungscharge",,
|
||||
"Event reminder page","Erinnerungsseite für Ereignisse",,
|
||||
"Event reminder template",,,
|
||||
"Event reminders","Erinnerungen an Ereignisse",,
|
||||
"Event's reminder's generation's reporting :","Die Erinnerung der Ereignisgeneration an die Berichterstattung:",,
|
||||
"Events","Events",,
|
||||
"Every %d days","Alle %d Tage",,
|
||||
"Every %d months the %d","Alle %d Monate wird die %d",,
|
||||
"Every %d weeks","Alle %d Wochen",,
|
||||
"Every %d years the %s","Alle %d Jahre die %s",,
|
||||
"Every day","Jeden Tag",,
|
||||
"Every month","Jeden Monat",,
|
||||
"Every month the","Jeden Monat wird die",,
|
||||
"Every week","Jede Woche",,
|
||||
"Every year","Jedes Jahr",,
|
||||
"Every year the","Jedes Jahr wird die",,
|
||||
"Expected close date","Erwartetes Abschlussdatum",,
|
||||
"Fax","Fax",,
|
||||
"Finished","Fertiggestellt",,
|
||||
"First name","Vorname",,
|
||||
"Fixed Phone","Festes Telefon",,
|
||||
"Fixed phone","Festnetztelefon",,
|
||||
"Follow up","Nachverfolgung",,
|
||||
"Follow-up","Nachbereitung",,
|
||||
"For all","Für alle",,
|
||||
"For me","Für mich",,
|
||||
"Fr","Pater",,
|
||||
"Free text",,,
|
||||
"From Date","Von-Datum",,
|
||||
"From date must be less than the to date","Das Von-Datum muss kleiner als das Bis-Datum sein.",,
|
||||
"Function","Funktion",,
|
||||
"General contact details","Allgemeine Kontaktdaten",,
|
||||
"Generate CRM configurations","CRM-Konfigurationen generieren",,
|
||||
"Generate Project","Projekt generieren",,
|
||||
"Groups Assignable",,,
|
||||
"Guests","Gäste",,
|
||||
"High","Hoch",,
|
||||
"Historical Period","Historischer Zeitraum",,
|
||||
"Historical events completed","Historische Ereignisse abgeschlossen",,
|
||||
"Hours","Stunden",,
|
||||
"Import lead","Lead importieren",,
|
||||
"Import leads","Leads importieren",,
|
||||
"In process","In Bearbeitung",,
|
||||
"Incoming","Eingehende",,
|
||||
"Industry Sector","Industriesektor",,
|
||||
"Industry sector","Industriebereich",,
|
||||
"Information","Informationen",,
|
||||
"Informations","Informationen",,
|
||||
"Input location please","Eingabeposition bitte",,
|
||||
"Invoicing Address","Rechnungsadresse",,
|
||||
"Job Title","Stellenbezeichnung",,
|
||||
"Key accounts","Key Accounts",,
|
||||
"Last name","Nachname",,
|
||||
"Lead","Leitung",,
|
||||
"Lead Assigned","Lead Assigned",,
|
||||
"Lead Converted","Blei konvertiert",,
|
||||
"Lead Dashboard 1","Lead Dashboard 1",,
|
||||
"Lead Db","Leitung Db",,
|
||||
"Lead Db 1","Leitung Db 1",,
|
||||
"Lead converted","Lead konvertiert",,
|
||||
"Lead created","Lead angelegt",,
|
||||
"Lead filters","Leitungsfilter",,
|
||||
"Lead.address_information","Adressinformationen",,
|
||||
"Lead.company","Unternehmen",,
|
||||
"Lead.email","E-Mail",,
|
||||
"Lead.fax","Fax",,
|
||||
"Lead.header","Kopfzeile",,
|
||||
"Lead.industry","Industrie",,
|
||||
"Lead.lead_owner","Haupteigentümer",,
|
||||
"Lead.name","Name",,
|
||||
"Lead.other_address","Andere Adresse",,
|
||||
"Lead.phone","Telefon",,
|
||||
"Lead.primary_address","Primäre Adresse",,
|
||||
"Lead.source","Quelle",,
|
||||
"Lead.status","Status",,
|
||||
"Lead.title","Titel",,
|
||||
"Leads","Leads",,
|
||||
"Leads Source","Leitet die Quelle",,
|
||||
"Leads by Country","Führt nach Land",,
|
||||
"Leads by Salesman by Status","Führt durch den Verkäufer nach Status",,
|
||||
"Leads by Source","Führt nach Quelle",,
|
||||
"Leads by Team by Status","Führungen nach Team nach Status",,
|
||||
"Limit Date","Limit Datum",,
|
||||
"Lose","Verlieren",,
|
||||
"Loss confirmation","Schadensbestätigung",,
|
||||
"Lost","Verloren",,
|
||||
"Lost reason","Verlorener Grund",,
|
||||
"Lost reasons","Verlorene Gründe",,
|
||||
"Low","Niedrig",,
|
||||
"MapRest.PinCharLead","L",,
|
||||
"MapRest.PinCharOpportunity","O",,
|
||||
"Marketing","Marketing",,
|
||||
"Meeting","Besprechung",,
|
||||
"Meeting Nbr","Meeting Nbr",,
|
||||
"Meeting Nbr.","Meeting Nbr.",,
|
||||
"Meeting filters","Meeting-Filter",,
|
||||
"Meeting number historical","Besprechungsnummer historisch",,
|
||||
"Meeting reminder template","Vorlage für Erinnerungen an Besprechungen",,
|
||||
"Meeting's date changed template","Vorlage für die Datumsänderung der Besprechung",,
|
||||
"Meeting's guest added template","Der Gast des Meetings hat eine Vorlage hinzugefügt.",,
|
||||
"Meeting's guest deleted template","Vom Gast des Meetings gelöschte Vorlage",,
|
||||
"Meetings","Besprechungen",,
|
||||
"Meetings number historical","Besprechungsnummer historisch",,
|
||||
"Meetings number target completed (%)","Anzahl der Meetings Ziel erreicht (%)",,
|
||||
"Memo","Memo",,
|
||||
"Minutes","Protokoll",,
|
||||
"Mo","Mo",,
|
||||
"Mobile N°","Handy-Nummer",,
|
||||
"Mobile phone","Handy",,
|
||||
"Month","Monat",,
|
||||
"Monthly","Monatlich",,
|
||||
"Months","Monate",,
|
||||
"My Best Open Deals","Meine besten offenen Angebote",,
|
||||
"My CRM events","Meine CRM-Ereignisse",,
|
||||
"My Calendar","Mein Kalender",,
|
||||
"My Calls","Meine Anrufe",,
|
||||
"My Closed Opportunities","Meine geschlossenen Stellenangebote",,
|
||||
"My Current Leads","Meine aktuellen Leads",,
|
||||
"My Key accounts","Meine Key Accounts",,
|
||||
"My Leads","Meine Leads",,
|
||||
"My Meetings","Meine Meetings",,
|
||||
"My Open Opportunities","Meine offenen Möglichkeiten",,
|
||||
"My Opportunities","Meine Möglichkeiten",,
|
||||
"My Tasks","Meine Aufgaben",,
|
||||
"My Team Best Open Deals","Mein Team Beste Open Deals",,
|
||||
"My Team Calls","Mein Team ruft",,
|
||||
"My Team Closed Opportunities","Mein Team hat die Möglichkeiten geschlossen.",,
|
||||
"My Team Key accounts","Mein Team Großkunden",,
|
||||
"My Team Leads","Mein Team leitet",,
|
||||
"My Team Meetings","Meine Teambesprechungen",,
|
||||
"My Team Open Opportunities","Mein Team Offene Möglichkeiten",,
|
||||
"My Team Tasks","Aufgaben meines Teams",,
|
||||
"My Today Calls","Meine heutigen Anrufe",,
|
||||
"My Today Tasks","Meine heutigen Aufgaben",,
|
||||
"My Upcoming Meetings","Meine nächsten Meetings",,
|
||||
"My Upcoming Tasks","Meine anstehenden Aufgaben",,
|
||||
"My opportunities","Meine Möglichkeiten",,
|
||||
"My past events","Meine vergangenen Veranstaltungen",,
|
||||
"My team opportunities","Möglichkeiten für mein Team",,
|
||||
"My upcoming events","Meine bevorstehenden Veranstaltungen",,
|
||||
"Name","Name",,
|
||||
"Negotiation","Verhandlung",,
|
||||
"New","Neu",,
|
||||
"Next stage","Nächste Stufe",,
|
||||
"Next step","Nächster Schritt",,
|
||||
"No lead import configuration found","Keine Lead-Import-Konfiguration gefunden",,
|
||||
"No template created in CRM configuration for company %s, emails have not been sent","Keine Vorlage in der CRM-Konfiguration für Unternehmen %s erstellt, E-Mails wurden nicht gesendet.",,
|
||||
"Non-participant","Nicht teilnehmender Teilnehmer",,
|
||||
"None","Keine",,
|
||||
"Normal","Normal",,
|
||||
"Not started","Nicht gestartet",,
|
||||
"Objective","Zielsetzung",,
|
||||
"Objective %s is in contradiction with objective's configuration %s","Ziel %s steht im Widerspruch zur Konfiguration des Ziels %s.",,
|
||||
"Objectives","Ziele",,
|
||||
"Objectives Configurations","Zielsetzungen Konfigurationen",,
|
||||
"Objectives Team Db","Ziele Team Db",,
|
||||
"Objectives User Db","Ziele Benutzer Db",,
|
||||
"Objectives configurations","Zielkonfigurationen",,
|
||||
"Objectives team Dashboard","Ziele Team Dashboard",,
|
||||
"Objectives user Dashboard","Ziele Benutzer Dashboard",,
|
||||
"Objectives' generation's reporting :","Berichterstattung der Zielvorgaben-Generation:",,
|
||||
"Office name","Name des Büros",,
|
||||
"On going","Auf dem Weg",,
|
||||
"Open Cases by Agents","Offene Fälle von Agenten",,
|
||||
"Open Opportunities","Offene Möglichkeiten",,
|
||||
"Operation mode",,,
|
||||
"Opportunities","Möglichkeiten",,
|
||||
"Opportunities By Origin By Stage","Opportunities nach Herkunft nach Stufe",,
|
||||
"Opportunities By Sale Stage","Opportunities nach Verkaufsstufe",,
|
||||
"Opportunities By Source","Chancen nach Quelle",,
|
||||
"Opportunities By Type","Opportunities nach Typ",,
|
||||
"Opportunities Db 1","Möglichkeiten Db 1",,
|
||||
"Opportunities Db 2","Möglichkeiten Db 2",,
|
||||
"Opportunities Db 3","Möglichkeiten Db 3",,
|
||||
"Opportunities Won By Lead Source","Gewonnene Chancen durch Lead Source",,
|
||||
"Opportunities Won By Partner","Vom Partner gewonnene Chancen",,
|
||||
"Opportunities Won By Salesman","Vom Verkäufer gewonnene Opportunities",,
|
||||
"Opportunities amount won historical","Opportunity-Betrag gewonnen historisch",,
|
||||
"Opportunities amount won target competed (%)","Opportunity-Betrag gewonnen Ziel erreicht (%)",,
|
||||
"Opportunities amount won target completed (%)","Opportunity-Betrag gewonnen Ziel erreicht (%)",,
|
||||
"Opportunities created number historical","Opportunities erstellt Anzahl historisch",,
|
||||
"Opportunities created number target completed (%)","Opportunities erstellt Anzahl Ziel abgeschlossen (%)",,
|
||||
"Opportunities created won historical","Geschaffene Opportunities gewonnen historisch",,
|
||||
"Opportunities created won target completed (%)","Opportunities erstellt gewonnen Ziel erreicht (%)",,
|
||||
"Opportunities filters","Filter für Opportunities",,
|
||||
"Opportunity","Gelegenheit",,
|
||||
"Opportunity Type","Opportunity-Typ",,
|
||||
"Opportunity created","Opportunity angelegt",,
|
||||
"Opportunity lost","Verlorene Chance",,
|
||||
"Opportunity type","Opportunity-Typ",,
|
||||
"Opportunity types","Opportunity-Typen",,
|
||||
"Opportunity won","Chance gewonnen",,
|
||||
"Optional participant","Optionaler Teilnehmer",,
|
||||
"Order by state","Nach Bundesland sortieren",,
|
||||
"Organization","Unternehmen",,
|
||||
"Outgoing","Ausgehend",,
|
||||
"Parent event","Übergeordnetes Ereignis",,
|
||||
"Parent lead is missing.","Der Elternteil fehlt.",,
|
||||
"Partner","Partner",,
|
||||
"Partner Details","Partnerdetails",,
|
||||
"Pending","Ausstehend",,
|
||||
"Period type","Periodenart",,
|
||||
"Periodicity must be greater than 0","Die Periodizität muss größer als 0 sein.",,
|
||||
"Picture","Bild",,
|
||||
"Pipeline","Rohrleitung",,
|
||||
"Pipeline by Stage and Type","Rohrleitung nach Stufe und Typ",,
|
||||
"Pipeline next 90 days","Pipeline nächste 90 Tage",,
|
||||
"Planned","Geplant",,
|
||||
"Please configure all templates in CRM configuration for company %s","Bitte konfigurieren Sie alle Vorlagen in der CRM-Konfiguration für die Firma %s.",,
|
||||
"Please configure informations for CRM for company %s","Bitte konfigurieren Sie Informationen für CRM für Unternehmen %s.",,
|
||||
"Please save the event before setting the recurrence","Bitte speichern Sie das Ereignis, bevor Sie die Wiederholung einstellen.",,
|
||||
"Please select a lead",,,
|
||||
"Please select the Lead(s) to print.","Bitte wählen Sie die zu druckenden Lead(s) aus.",,
|
||||
"Postal code","Postleitzahl",,
|
||||
"Present","Präsentieren",,
|
||||
"Previous stage","Vorherige Stufe",,
|
||||
"Previous step","Vorheriger Schritt",,
|
||||
"Primary address","Primäre Adresse",,
|
||||
"Print","Drucken",,
|
||||
"Priority","Priorität",,
|
||||
"Probability (%)","Wahrscheinlichkeit (%)",,
|
||||
"Proposition","Vorschlag",,
|
||||
"Qualification","Qualifizierung",,
|
||||
"Realized","Realisiert",,
|
||||
"Recent lost deals","Neueste verlorene Deals",,
|
||||
"Recently created opportunities","Kürzlich geschaffene Möglichkeiten",,
|
||||
"Recurrence","Wiederholung",,
|
||||
"Recurrence assistant","Wiederholungsassistent",,
|
||||
"Recurrence configuration","Wiederholungskonfiguration",,
|
||||
"Recurrence name","Wiederholungsname",,
|
||||
"Recurrent","Wiederkehrend",,
|
||||
"Recycle","Recyceln",,
|
||||
"Recycled","Recycelt",,
|
||||
"Reference","Referenz",,
|
||||
"References","Referenzen",,
|
||||
"Referred by","Verwiesen von",,
|
||||
"Region","Region",,
|
||||
"Rejection of calls","Ablehnung von Anrufen",,
|
||||
"Rejection of e-mails","Ablehnung von E-Mails",,
|
||||
"Related to","In Bezug auf",,
|
||||
"Related to select","Bezogen auf die Auswahl",,
|
||||
"Reminded","Erinnert",,
|
||||
"Reminder",,,
|
||||
"Reminder Templates","Erinnerungsvorlagen",,
|
||||
"Reminder(s) treated","Behandelte Erinnerung(en)",,
|
||||
"Reminders","Erinnerungen",,
|
||||
"Repeat every","Wiederholen Sie alle",,
|
||||
"Repeat every:","Wiederholen Sie dies alle:",,
|
||||
"Repeat the:","Wiederholen Sie die:",,
|
||||
"Repetitions number","Wiederholungsnummer",,
|
||||
"Reported","Berichtet",,
|
||||
"Reportings","Berichte",,
|
||||
"Reports","Berichte",,
|
||||
"Required participant","Gewünschter Teilnehmer",,
|
||||
"Sa","Sa",,
|
||||
"Sale quotations/orders","Verkaufsangebote/Aufträge",,
|
||||
"Sales Stage","Verkaufsstufe",,
|
||||
"Sales orders amount won historical","Kundenauftragsbetrag gewonnen historisch",,
|
||||
"Sales orders amount won target completed (%)","Kundenaufträge gewonnener Betrag Ziel erreicht (%)",,
|
||||
"Sales orders created number historical","Kundenaufträge angelegt Anzahl historisch",,
|
||||
"Sales orders created number target completed (%)","Kundenaufträge angelegt Anzahl Ziel abgeschlossen (%)",,
|
||||
"Sales orders created won historical","Kundenaufträge angelegt gewonnen gewonnen historisch",,
|
||||
"Sales orders created won target completed","Kundenaufträge angelegt gewonnen gewonnen Ziel abgeschlossen",,
|
||||
"Sales orders created won target completed (%)","Kundenaufträge angelegt gewonnen gewonnen Ziel erreicht (%)",,
|
||||
"Sales stage","Verkaufsstufe",,
|
||||
"Salesman","Verkäufer",,
|
||||
"Schedule Event","Veranstaltung planen",,
|
||||
"Schedule Event (${ fullName })","Ereignis planen (${ fullName })",,
|
||||
"Schedule Event(${ fullName})","Ereignis planen (${ fullName})",,
|
||||
"Select Contact","Kontakt auswählen",,
|
||||
"Select Partner","Partner auswählen",,
|
||||
"Select existing contact","Vorhandenen Kontakt auswählen",,
|
||||
"Select existing partner","Vorhandenen Partner auswählen",,
|
||||
"Send Email","E-Mail senden",,
|
||||
"Send email","E-Mail senden",,
|
||||
"Sending date",,,
|
||||
"Settings","Einstellungen",,
|
||||
"Show Partner","Partner anzeigen",,
|
||||
"Show all events","Alle Veranstaltungen anzeigen",,
|
||||
"Some user groups",,,
|
||||
"Source","Quelle",,
|
||||
"Source description","Quellenbeschreibung",,
|
||||
"Start","Start",,
|
||||
"Start date","Startdatum",,
|
||||
"State","Zustand",,
|
||||
"Status","Status",,
|
||||
"Status description","Statusbeschreibung",,
|
||||
"Su","Su",,
|
||||
"Take charge","Übernehmen Sie die Verantwortung",,
|
||||
"Target","Ziel",,
|
||||
"Target User Dashboard","Dashboard für Zielbenutzer",,
|
||||
"Target batch","Zielcharge",,
|
||||
"Target configuration","Zielkonfiguration",,
|
||||
"Target configurations","Zielkonfigurationen",,
|
||||
"Target page","Zielseite",,
|
||||
"Target team Dashboard","Dashboard des Zielteams",,
|
||||
"Target vs Real","Ziel vs. Real",,
|
||||
"Targets configurations","Zielkonfigurationen",,
|
||||
"Task","Aufgabe",,
|
||||
"Task reminder template","Vorlage für die Aufgabenerinnerung",,
|
||||
"Tasks","Aufgaben",,
|
||||
"Tasks filters","Aufgabenfilter",,
|
||||
"Team","Team",,
|
||||
"Th","Th",,
|
||||
"The end date must be after the start date","Das Enddatum muss nach dem Startdatum liegen.",,
|
||||
"The number of repetitions must be greater than 0","Die Anzahl der Wiederholungen muss größer als 0 sein.",,
|
||||
"Title","Titel",,
|
||||
"To Date","Bis heute",,
|
||||
"Tools","Werkzeuge",,
|
||||
"Trading name","Handelsname",,
|
||||
"Treated objectives reporting","Berichterstattung über die behandelten Ziele",,
|
||||
"Tu","Di",,
|
||||
"Type","Typ",,
|
||||
"Type of need",,,
|
||||
"UID (Calendar)","UID (Kalender)",,
|
||||
"Unassigned Leads","Nicht zugeordnete Leads",,
|
||||
"Unassigned Opportunities","Nicht zugeordnete Opportunities",,
|
||||
"Unassigned opportunities","Nicht zugeordnete Opportunities",,
|
||||
"Upcoming events","Bevorstehende Veranstaltungen",,
|
||||
"Urgent","Dringend",,
|
||||
"User","Benutzer",,
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured.",,,
|
||||
"User %s must have an active company to use templates","Benutzer %s muss ein aktives Unternehmen haben, um Vorlagen zu verwenden.",,
|
||||
"Validate","Validieren",,
|
||||
"We","Wir",,
|
||||
"Website","Website",,
|
||||
"Weekly","Wöchentlich",,
|
||||
"Weeks","Wochen",,
|
||||
"Win","Gewinnen",,
|
||||
"Worst case","Im schlimmsten Fall",,
|
||||
"Years","Jahre",,
|
||||
"You don't have the rights to delete this event","Du hast nicht die Berechtigung, dieses Ereignis zu löschen.",,
|
||||
"You must choose a recurrence type","Sie müssen eine Wiederholungsart wählen.",,
|
||||
"You must choose at least one day in the week","Du musst mindestens einen Tag in der Woche wählen.",,
|
||||
"amount","Betrag",,
|
||||
"com.axelor.apps.crm.job.EventReminderJob","com.axelor.apps.crm.job.EventReminderJob",,
|
||||
"com.axelor.apps.crm.service.batch.CrmBatchService","com.axelor.apps.crm.service.batch.CrmBatchServiceService",,
|
||||
"crm.New","Neu",,
|
||||
"date","Datum",,
|
||||
"every week's day","jeder Wochentag",,
|
||||
"everyday","täglich",,
|
||||
"fri,","fri,",,
|
||||
"http://www.url.com","http://www.url.com",,
|
||||
"important","wichtig",,
|
||||
"mon,","Komm schon,",,
|
||||
"on","auf",,
|
||||
"portal.daily.team.calls.summary.by.user","portal.daily.team.calls.summary.by.user.summary.",,
|
||||
"sat,","Saß.",,
|
||||
"success","Erfolg",,
|
||||
"sun,","Sun.",,
|
||||
"thur,","Thur,",,
|
||||
"tues,"," Durchaus.",,
|
||||
"until the","bis zum",,
|
||||
"value:CRM","Wert:CRM",,
|
||||
"warning","Warnung",,
|
||||
"wed,","Mi.",,
|
||||
"whatever@example.com","whatever@example.com",,
|
||||
"www.url.com","www.url.com",,
|
||||
|
@ -0,0 +1,525 @@
|
||||
"key","message","comment","context"
|
||||
"%d times",,,
|
||||
"+33000000000",,,
|
||||
"+33100000000",,,
|
||||
"<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />",,,
|
||||
"<a class='fa fa-google' href='http://www.google.com' target='_blank' />",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,,
|
||||
"<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />",,,
|
||||
"<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />",,,
|
||||
"<span class='label label-warning'>The selected date is in the past.</span>",,,
|
||||
"<span class='label label-warning'>There is already a lead with this name.</span>",,,
|
||||
"<span style=""height:21px; line-height: 21px; margin-top:18px; display:inline-block"">VS</span>",,,
|
||||
"A lost reason must be selected",,,
|
||||
"Action",,,
|
||||
"Activities",,,
|
||||
"Add",,,
|
||||
"Add a guest",,,
|
||||
"Address",,,
|
||||
"After n repetitions",,,
|
||||
"All past events",,,
|
||||
"All upcoming events",,,
|
||||
"All users",,,
|
||||
"Amount",,,
|
||||
"Amount Won",,,
|
||||
"Amount won",,,
|
||||
"App Crm",,,
|
||||
"Apply changes to all recurrence's events",,,
|
||||
"Apply changes to this event only",,,
|
||||
"Apply modifications",,,
|
||||
"Apply modifications for all",,,
|
||||
"Are you sure you want to convert the lead?",,,
|
||||
"Assign to",,,
|
||||
"Assign to me",,,
|
||||
"Assignable Users",,,
|
||||
"Assigned",,,
|
||||
"Assigned to",,,
|
||||
"At specific date",,,
|
||||
"At the date",,,
|
||||
"Attendee",,,
|
||||
"Available",,,
|
||||
"Average duration between lead and first opportunity (days)",,,
|
||||
"Batchs",,,
|
||||
"Before start date",,,
|
||||
"Best Open Deals",,,
|
||||
"Best case",,,
|
||||
"Busy",,,
|
||||
"CRM",,,
|
||||
"CRM Activities",,,
|
||||
"CRM Batch",,,
|
||||
"CRM batches",,,
|
||||
"CRM config",,,
|
||||
"CRM config (${ name })",,,
|
||||
"CRM configuration",,,
|
||||
"CRM configurations",,,
|
||||
"CRM events",,,
|
||||
"Call",,,
|
||||
"Call emitted Nbr",,,
|
||||
"Call emitted Nbr.",,,
|
||||
"Call emitted historical",,,
|
||||
"Call filters",,,
|
||||
"Call reminder template",,,
|
||||
"Call type",,,
|
||||
"Calls",,,
|
||||
"Calls Dashboard",,,
|
||||
"Calls Db",,,
|
||||
"Calls by team by user",,,
|
||||
"Calls by user(of a team)",,,
|
||||
"Calls emitted historical",,,
|
||||
"Calls emitted target completed (%)",,,
|
||||
"Calls held by team by type",,,
|
||||
"Calls held by type by user",,,
|
||||
"Calls type by team",,,
|
||||
"Calls type by user",,,
|
||||
"Cancel this reminder",,,
|
||||
"Canceled",,,
|
||||
"Cases",,,
|
||||
"Category",,,
|
||||
"Characteristics",,,
|
||||
"Chart",,,
|
||||
"Check duplicate",,,
|
||||
"City",,,
|
||||
"Civility",,,
|
||||
"Closed Opportunities",,,
|
||||
"Closed lost",,,
|
||||
"Closed won",,,
|
||||
"Code",,,
|
||||
"Company",,,
|
||||
"Configuration",,,
|
||||
"Confirm lost reason",,,
|
||||
"Contact",,,
|
||||
"Contact date",,,
|
||||
"Contact details",,,
|
||||
"Contact function",,,
|
||||
"Contact name",,,
|
||||
"Contacts",,,
|
||||
"Convert",,,
|
||||
"Convert lead",,,
|
||||
"Convert lead (${ fullName })",,,
|
||||
"Convert lead into contact",,,
|
||||
"Convert lead into partner",,,
|
||||
"Converted",,,
|
||||
"Country",,,
|
||||
"Create a new reminder",,,
|
||||
"Create a quotation",,,
|
||||
"Create event",,,
|
||||
"Create new contact",,,
|
||||
"Create new partner",,,
|
||||
"Create opportunity",,,
|
||||
"Create opportunity (${ fullName })",,,
|
||||
"Create order (${ fullName })",,,
|
||||
"Create purchase quotation",,,
|
||||
"Create sale quotation",,,
|
||||
"Created Nbr",,,
|
||||
"Created Nbr.",,,
|
||||
"Created Won",,,
|
||||
"Created by",,,
|
||||
"Created leads by industry sector",,,
|
||||
"Created leads per month",,,
|
||||
"Created leads with at least one opportunity",,,
|
||||
"Created on",,,
|
||||
"Crm batch",,,
|
||||
"Currency",,,
|
||||
"Customer",,,
|
||||
"Customer Description",,,
|
||||
"Customer fixed phone",,,
|
||||
"Customer mobile phone",,,
|
||||
"Customer name",,,
|
||||
"Customer recovery",,,
|
||||
"Customers",,,
|
||||
"Daily",,,
|
||||
"Daily team call summary by user",,,
|
||||
"Dashboard",,,
|
||||
"Date from",,,
|
||||
"Date to",,,
|
||||
"Day of month",,,
|
||||
"Day of week",,,
|
||||
"Days",,,
|
||||
"Delete all events",,,
|
||||
"Delete only this event",,,
|
||||
"Delete this and next events",,,
|
||||
"Delivery Address",,,
|
||||
"Dep./Div.",,,
|
||||
"Description",,,
|
||||
"Display customer description in opportunity",,,
|
||||
"Duration",,,
|
||||
"Duration type",,,
|
||||
"Email",,,
|
||||
"Emails",,,
|
||||
"End",,,
|
||||
"End date",,,
|
||||
"Enterprise",,,
|
||||
"Enterprise name",,,
|
||||
"Error in lead conversion",,,
|
||||
"Estimated budget",,,
|
||||
"Event",,,
|
||||
"Event Categories",,,
|
||||
"Event Dashboard 1",,,
|
||||
"Event Db",,,
|
||||
"Event categories",,,
|
||||
"Event category",,,
|
||||
"Event configuration categories",,,
|
||||
"Event filters",,,
|
||||
"Event reminder",,,
|
||||
"Event reminder %s",,,
|
||||
"Event reminder batch",,,
|
||||
"Event reminder page",,,
|
||||
"Event reminder template",,,
|
||||
"Event reminders",,,
|
||||
"Event's reminder's generation's reporting :",,,
|
||||
"Events",,,
|
||||
"Every %d days",,,
|
||||
"Every %d months the %d",,,
|
||||
"Every %d weeks",,,
|
||||
"Every %d years the %s",,,
|
||||
"Every day",,,
|
||||
"Every month",,,
|
||||
"Every month the",,,
|
||||
"Every week",,,
|
||||
"Every year",,,
|
||||
"Every year the",,,
|
||||
"Expected close date",,,
|
||||
"Fax",,,
|
||||
"Finished",,,
|
||||
"First name",,,
|
||||
"Fixed Phone",,,
|
||||
"Fixed phone",,,
|
||||
"Follow up",,,
|
||||
"Follow-up",,,
|
||||
"For all",,,
|
||||
"For me",,,
|
||||
"Fr",,,
|
||||
"Free text",,,
|
||||
"From Date",,,
|
||||
"From date must be less than the to date",,,
|
||||
"Function",,,
|
||||
"General contact details",,,
|
||||
"Generate CRM configurations",,,
|
||||
"Generate Project",,,
|
||||
"Groups Assignable",,,
|
||||
"Guests",,,
|
||||
"High",,,
|
||||
"Historical Period",,,
|
||||
"Historical events completed",,,
|
||||
"Hours",,,
|
||||
"Import lead",,,
|
||||
"Import leads",,,
|
||||
"In process",,,
|
||||
"Incoming",,,
|
||||
"Industry Sector",,,
|
||||
"Industry sector",,,
|
||||
"Information",,,
|
||||
"Informations",,,
|
||||
"Input location please",,,
|
||||
"Invoicing Address",,,
|
||||
"Job Title",,,
|
||||
"Key accounts",,,
|
||||
"Last name",,,
|
||||
"Lead",,,
|
||||
"Lead Assigned",,,
|
||||
"Lead Converted",,,
|
||||
"Lead Dashboard 1",,,
|
||||
"Lead Db",,,
|
||||
"Lead Db 1",,,
|
||||
"Lead converted",,,
|
||||
"Lead created",,,
|
||||
"Lead filters",,,
|
||||
"Lead.address_information","Address Information",,
|
||||
"Lead.company","Company",,
|
||||
"Lead.email","Email",,
|
||||
"Lead.fax","Fax",,
|
||||
"Lead.header","Header",,
|
||||
"Lead.industry","Industry",,
|
||||
"Lead.lead_owner","Lead Owner",,
|
||||
"Lead.name","Name",,
|
||||
"Lead.other_address","Other Address",,
|
||||
"Lead.phone","Phone",,
|
||||
"Lead.primary_address","Primary Address",,
|
||||
"Lead.source","Source",,
|
||||
"Lead.status","Status",,
|
||||
"Lead.title","Title",,
|
||||
"Leads",,,
|
||||
"Leads Source",,,
|
||||
"Leads by Country",,,
|
||||
"Leads by Salesman by Status",,,
|
||||
"Leads by Source",,,
|
||||
"Leads by Team by Status",,,
|
||||
"Limit Date",,,
|
||||
"Lose",,,
|
||||
"Loss confirmation",,,
|
||||
"Lost",,,
|
||||
"Lost reason",,,
|
||||
"Lost reasons",,,
|
||||
"Low",,,
|
||||
"MapRest.PinCharLead","L",,
|
||||
"MapRest.PinCharOpportunity","O",,
|
||||
"Marketing",,,
|
||||
"Meeting",,,
|
||||
"Meeting Nbr",,,
|
||||
"Meeting Nbr.",,,
|
||||
"Meeting filters",,,
|
||||
"Meeting number historical",,,
|
||||
"Meeting reminder template",,,
|
||||
"Meeting's date changed template",,,
|
||||
"Meeting's guest added template",,,
|
||||
"Meeting's guest deleted template",,,
|
||||
"Meetings",,,
|
||||
"Meetings number historical",,,
|
||||
"Meetings number target completed (%)",,,
|
||||
"Memo",,,
|
||||
"Minutes",,,
|
||||
"Mo",,,
|
||||
"Mobile N°",,,
|
||||
"Mobile phone",,,
|
||||
"Month",,,
|
||||
"Monthly",,,
|
||||
"Months",,,
|
||||
"My Best Open Deals",,,
|
||||
"My CRM events",,,
|
||||
"My Calendar",,,
|
||||
"My Calls",,,
|
||||
"My Closed Opportunities",,,
|
||||
"My Current Leads",,,
|
||||
"My Key accounts",,,
|
||||
"My Leads",,,
|
||||
"My Meetings",,,
|
||||
"My Open Opportunities",,,
|
||||
"My Opportunities",,,
|
||||
"My Tasks",,,
|
||||
"My Team Best Open Deals",,,
|
||||
"My Team Calls",,,
|
||||
"My Team Closed Opportunities",,,
|
||||
"My Team Key accounts",,,
|
||||
"My Team Leads",,,
|
||||
"My Team Meetings",,,
|
||||
"My Team Open Opportunities",,,
|
||||
"My Team Tasks",,,
|
||||
"My Today Calls",,,
|
||||
"My Today Tasks",,,
|
||||
"My Upcoming Meetings",,,
|
||||
"My Upcoming Tasks",,,
|
||||
"My opportunities",,,
|
||||
"My past events",,,
|
||||
"My team opportunities",,,
|
||||
"My upcoming events",,,
|
||||
"Name",,,
|
||||
"Negotiation",,,
|
||||
"New",,,
|
||||
"Next stage",,,
|
||||
"Next step",,,
|
||||
"No lead import configuration found",,,
|
||||
"No template created in CRM configuration for company %s, emails have not been sent",,,
|
||||
"Non-participant",,,
|
||||
"None",,,
|
||||
"Normal",,,
|
||||
"Not started",,,
|
||||
"Objective",,,
|
||||
"Objective %s is in contradiction with objective's configuration %s",,,
|
||||
"Objectives",,,
|
||||
"Objectives Configurations",,,
|
||||
"Objectives Team Db",,,
|
||||
"Objectives User Db",,,
|
||||
"Objectives configurations",,,
|
||||
"Objectives team Dashboard",,,
|
||||
"Objectives user Dashboard",,,
|
||||
"Objectives' generation's reporting :",,,
|
||||
"Office name",,,
|
||||
"On going",,,
|
||||
"Open Cases by Agents",,,
|
||||
"Open Opportunities",,,
|
||||
"Operation mode",,,
|
||||
"Opportunities",,,
|
||||
"Opportunities By Origin By Stage",,,
|
||||
"Opportunities By Sale Stage",,,
|
||||
"Opportunities By Source",,,
|
||||
"Opportunities By Type",,,
|
||||
"Opportunities Db 1",,,
|
||||
"Opportunities Db 2",,,
|
||||
"Opportunities Db 3",,,
|
||||
"Opportunities Won By Lead Source",,,
|
||||
"Opportunities Won By Partner",,,
|
||||
"Opportunities Won By Salesman",,,
|
||||
"Opportunities amount won historical",,,
|
||||
"Opportunities amount won target competed (%)",,,
|
||||
"Opportunities amount won target completed (%)",,,
|
||||
"Opportunities created number historical",,,
|
||||
"Opportunities created number target completed (%)",,,
|
||||
"Opportunities created won historical",,,
|
||||
"Opportunities created won target completed (%)",,,
|
||||
"Opportunities filters",,,
|
||||
"Opportunity",,,
|
||||
"Opportunity Type",,,
|
||||
"Opportunity created",,,
|
||||
"Opportunity lost",,,
|
||||
"Opportunity type",,,
|
||||
"Opportunity types",,,
|
||||
"Opportunity won",,,
|
||||
"Optional participant",,,
|
||||
"Order by state",,,
|
||||
"Organization",,,
|
||||
"Outgoing",,,
|
||||
"Parent event",,,
|
||||
"Parent lead is missing.",,,
|
||||
"Partner",,,
|
||||
"Partner Details",,,
|
||||
"Pending",,,
|
||||
"Period type",,,
|
||||
"Periodicity must be greater than 0",,,
|
||||
"Picture",,,
|
||||
"Pipeline",,,
|
||||
"Pipeline by Stage and Type",,,
|
||||
"Pipeline next 90 days",,,
|
||||
"Planned",,,
|
||||
"Please complete the contact address.",,,
|
||||
"Please complete the partner address.",,,
|
||||
"Please configure all templates in CRM configuration for company %s",,,
|
||||
"Please configure informations for CRM for company %s",,,
|
||||
"Please save the event before setting the recurrence",,,
|
||||
"Please select a lead",,,
|
||||
"Please select the Lead(s) to print.",,,
|
||||
"Postal code",,,
|
||||
"Present",,,
|
||||
"Previous stage",,,
|
||||
"Previous step",,,
|
||||
"Primary address",,,
|
||||
"Print",,,
|
||||
"Priority",,,
|
||||
"Probability (%)",,,
|
||||
"Proposition",,,
|
||||
"Qualification",,,
|
||||
"Realized",,,
|
||||
"Recent lost deals",,,
|
||||
"Recently created opportunities",,,
|
||||
"Recurrence",,,
|
||||
"Recurrence assistant",,,
|
||||
"Recurrence configuration",,,
|
||||
"Recurrence name",,,
|
||||
"Recurrent",,,
|
||||
"Recycle",,,
|
||||
"Recycled",,,
|
||||
"Reference",,,
|
||||
"References",,,
|
||||
"Referred by",,,
|
||||
"Region",,,
|
||||
"Rejection of calls",,,
|
||||
"Rejection of e-mails",,,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reminded",,,
|
||||
"Reminder",,,
|
||||
"Reminder Templates",,,
|
||||
"Reminder(s) treated",,,
|
||||
"Reminders",,,
|
||||
"Repeat every",,,
|
||||
"Repeat every:",,,
|
||||
"Repeat the:",,,
|
||||
"Repetitions number",,,
|
||||
"Reported",,,
|
||||
"Reportings",,,
|
||||
"Reports",,,
|
||||
"Required participant",,,
|
||||
"Sa",,,
|
||||
"Sale quotation",,,
|
||||
"Sale quotations/orders",,,
|
||||
"Sales Stage",,,
|
||||
"Sales orders amount won historical",,,
|
||||
"Sales orders amount won target completed (%)",,,
|
||||
"Sales orders created number historical",,,
|
||||
"Sales orders created number target completed (%)",,,
|
||||
"Sales orders created won historical",,,
|
||||
"Sales orders created won target completed",,,
|
||||
"Sales orders created won target completed (%)",,,
|
||||
"Sales stage",,,
|
||||
"Salesman",,,
|
||||
"Schedule Event",,,
|
||||
"Schedule Event (${ fullName })",,,
|
||||
"Schedule Event(${ fullName})",,,
|
||||
"Select Contact",,,
|
||||
"Select Partner",,,
|
||||
"Select existing contact",,,
|
||||
"Select existing partner",,,
|
||||
"Send Email",,,
|
||||
"Send email",,,
|
||||
"Sending date",,,
|
||||
"Settings",,,
|
||||
"Show Partner",,,
|
||||
"Show all events",,,
|
||||
"Some user groups",,,
|
||||
"Source",,,
|
||||
"Source description",,,
|
||||
"Start",,,
|
||||
"Start date",,,
|
||||
"State",,,
|
||||
"Status",,,
|
||||
"Status description",,,
|
||||
"Su",,,
|
||||
"Take charge",,,
|
||||
"Target",,,
|
||||
"Target User Dashboard",,,
|
||||
"Target batch",,,
|
||||
"Target configuration",,,
|
||||
"Target configurations",,,
|
||||
"Target page",,,
|
||||
"Target team Dashboard",,,
|
||||
"Target vs Real",,,
|
||||
"Targets configurations",,,
|
||||
"Task",,,
|
||||
"Task reminder template",,,
|
||||
"Tasks",,,
|
||||
"Tasks filters",,,
|
||||
"Team",,,
|
||||
"Th",,,
|
||||
"The end date must be after the start date",,,
|
||||
"The number of repetitions must be greater than 0",,,
|
||||
"Title",,,
|
||||
"To Date",,,
|
||||
"Tools",,,
|
||||
"Trading name",,,
|
||||
"Treated objectives reporting",,,
|
||||
"Tu",,,
|
||||
"Type",,,
|
||||
"Type of need",,,
|
||||
"UID (Calendar)",,,
|
||||
"Unassigned Leads",,,
|
||||
"Unassigned Opportunities",,,
|
||||
"Unassigned opportunities",,,
|
||||
"Upcoming events",,,
|
||||
"Urgent",,,
|
||||
"User",,,
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured.",,,
|
||||
"User %s must have an active company to use templates",,,
|
||||
"Validate",,,
|
||||
"We",,,
|
||||
"Website",,,
|
||||
"Weekly",,,
|
||||
"Weeks",,,
|
||||
"Win",,,
|
||||
"Worst case",,,
|
||||
"Years",,,
|
||||
"You don't have the rights to delete this event",,,
|
||||
"You must choose a recurrence type",,,
|
||||
"You must choose at least one day in the week",,,
|
||||
"amount",,,
|
||||
"com.axelor.apps.crm.job.EventReminderJob",,,
|
||||
"com.axelor.apps.crm.service.batch.CrmBatchService",,,
|
||||
"crm.New","New",,
|
||||
"date",,,
|
||||
"every week's day",,,
|
||||
"everyday",,,
|
||||
"fri,",,,
|
||||
"http://www.url.com",,,
|
||||
"important",,,
|
||||
"mon,",,,
|
||||
"on",,,
|
||||
"portal.daily.team.calls.summary.by.user",,,
|
||||
"sat,",,,
|
||||
"success",,,
|
||||
"sun,",,,
|
||||
"thur,",,,
|
||||
"tues,",,,
|
||||
"until the",,,
|
||||
"value:CRM",,,
|
||||
"warning",,,
|
||||
"wed,",,,
|
||||
"whatever@example.com",,,
|
||||
"www.url.com",,,
|
||||
|
@ -0,0 +1,521 @@
|
||||
"key","message","comment","context"
|
||||
"%d times","%d veces",,
|
||||
"+33000000000",,,
|
||||
"+33100000000",,,
|
||||
"<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />","<http://www.facebook.com DIFUNDE LA PALABRA-ESPAÑOLA-",,
|
||||
"<a class='fa fa-google' href='http://www.google.com' target='_blank' />","<a class='fa fa-google' href='http://www.google.com' target='_blank' />",,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />","<wWw.Subs-Team.Tv P r e s e n t e n t a.",,
|
||||
"<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />","<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />",,
|
||||
"<span class='label label-warning'>The selected date is in the past.</span>",,,
|
||||
"<span class='label label-warning'>There is already a lead with this name.</span>","<span class='label label-warning'>Ya hay una pista con este nombre.</span>",,
|
||||
"<span style=""height:21px; line-height: 21px; margin-top:18px; display:inline-block"">VS</span>",,,
|
||||
"A lost reason must be selected","Se debe seleccionar un motivo de pérdida",,
|
||||
"Action","Acción",,
|
||||
"Activities","Actividades",,
|
||||
"Add","Añadir",,
|
||||
"Add a guest","Añadir un invitado",,
|
||||
"Address","Dirección",,
|
||||
"After n repetitions","Después de n repeticiones",,
|
||||
"All past events","Todos los eventos pasados",,
|
||||
"All upcoming events","Todos los próximos eventos",,
|
||||
"All users",,,
|
||||
"Amount","Importe",,
|
||||
"Amount Won","Importe ganado",,
|
||||
"Amount won","Cantidad ganada",,
|
||||
"App Crm","Aplicación Crm",,
|
||||
"Apply changes to all recurrence's events","Aplicar cambios a todos los eventos de recurrencia",,
|
||||
"Apply changes to this event only","Aplicar cambios sólo a este evento",,
|
||||
"Apply modifications","Aplicar modificaciones",,
|
||||
"Apply modifications for all","Aplicar modificaciones para todos",,
|
||||
"Are you sure you want to convert the lead?","¿Estás seguro de que quieres convertir el plomo?",,
|
||||
"Assign to","Asignar a",,
|
||||
"Assign to me","Asignar a mí",,
|
||||
"Assignable Users",,,
|
||||
"Assigned","Asignado",,
|
||||
"Assigned to","Asignado a",,
|
||||
"At specific date",,,
|
||||
"At the date","En la fecha",,
|
||||
"Attendee","Asistente",,
|
||||
"Available","Disponible",,
|
||||
"Average duration between lead and first opportunity (days)",,,
|
||||
"Batchs","Lotes",,
|
||||
"Before start date",,,
|
||||
"Best Open Deals","Mejores ofertas abiertas",,
|
||||
"Best case","El mejor de los casos",,
|
||||
"Busy","Ocupado",,
|
||||
"CRM","CRM",,
|
||||
"CRM Activities","Actividades de CRM",,
|
||||
"CRM Batch","Lote de CRM",,
|
||||
"CRM batches","Lotes de CRM",,
|
||||
"CRM config","Configuración de CRM",,
|
||||
"CRM config (${ name })","Configuración de CRM (${ nombre })",,
|
||||
"CRM configuration","Configuración de CRM",,
|
||||
"CRM configurations","Configuraciones de CRM",,
|
||||
"CRM events","Eventos de CRM",,
|
||||
"Call","Llamar",,
|
||||
"Call emitted Nbr","Llamada emitida Nbr",,
|
||||
"Call emitted Nbr.","Llamada emitida Nbr.",,
|
||||
"Call emitted historical","Llamada emitida histórica",,
|
||||
"Call filters","Filtros de llamadas",,
|
||||
"Call reminder template","Plantilla de recordatorio de llamada",,
|
||||
"Call type","Tipo de llamada",,
|
||||
"Calls","Llamadas",,
|
||||
"Calls Dashboard","Panel de control de llamadas",,
|
||||
"Calls Db","Llamadas Db",,
|
||||
"Calls by team by user","Llamadas por equipo por usuario",,
|
||||
"Calls by user(of a team)","Llamadas por usuario (de un equipo)",,
|
||||
"Calls emitted historical","Llamadas emitidas históricas",,
|
||||
"Calls emitted target completed (%)","Llamadas emitidas objetivo completado (%)",,
|
||||
"Calls held by team by type","Llamadas realizadas por equipo por tipo",,
|
||||
"Calls held by type by user","Llamadas retenidas por tipo por usuario",,
|
||||
"Calls type by team","Tipo de llamadas por equipo",,
|
||||
"Calls type by user","Tipo de llamadas por usuario",,
|
||||
"Cancel this reminder",,,
|
||||
"Canceled","Cancelado",,
|
||||
"Cases","Casos",,
|
||||
"Category","Categoría",,
|
||||
"Characteristics","Características",,
|
||||
"Chart","Gráfico",,
|
||||
"Check duplicate","Comprobar duplicados",,
|
||||
"City","Ciudad",,
|
||||
"Civility","Cortesía",,
|
||||
"Closed Opportunities","Oportunidades cerradas",,
|
||||
"Closed lost","Cerrado perdido",,
|
||||
"Closed won","Cerrado ganado",,
|
||||
"Code","Código",,
|
||||
"Company","Empresa",,
|
||||
"Configuration","Configuración",,
|
||||
"Confirm lost reason","Confirmar la razón perdida",,
|
||||
"Contact","Contacto",,
|
||||
"Contact date","Fecha de contacto",,
|
||||
"Contact details","Datos de contacto",,
|
||||
"Contact name","Nombre del contacto",,
|
||||
"Contacts","Contactos",,
|
||||
"Convert","Convertir",,
|
||||
"Convert lead","Convertir cable",,
|
||||
"Convert lead (${ fullName })","Convertir un cliente potencial (${ fullName })",,
|
||||
"Convert lead into contact",,,
|
||||
"Convert lead into partner",,,
|
||||
"Converted","Convertido",,
|
||||
"Country","País",,
|
||||
"Create a new reminder",,,
|
||||
"Create a quotation",,,
|
||||
"Create event","Crear evento",,
|
||||
"Create new contact","Crear un nuevo contacto",,
|
||||
"Create new partner","Crear un nuevo interlocutor",,
|
||||
"Create opportunity","Crear oportunidad",,
|
||||
"Create opportunity (${ fullName })","Crear oportunidad (${ nombre completo })",,
|
||||
"Create order (${ fullName })","Crear pedido (${ fullName })",,
|
||||
"Create purchase quotation",,,
|
||||
"Create sale quotation",,,
|
||||
"Created Nbr","Números creados",,
|
||||
"Created Nbr.","Creado Nbr.",,
|
||||
"Created Won","Creado Ganado",,
|
||||
"Created by","Creado por",,
|
||||
"Created leads by industry sector","Líderes creados por sector industrial",,
|
||||
"Created leads per month","Plomos creados por mes",,
|
||||
"Created leads with at least one opportunity",,,
|
||||
"Created on","Creado el",,
|
||||
"Crm batch","Crm lote",,
|
||||
"Currency","Moneda",,
|
||||
"Customer","Cliente",,
|
||||
"Customer Description",,,
|
||||
"Customer fixed phone","Teléfono fijo del cliente",,
|
||||
"Customer mobile phone","Teléfono móvil del cliente",,
|
||||
"Customer name","Nombre del cliente",,
|
||||
"Customer recovery",,,
|
||||
"Customers","Clientes",,
|
||||
"Daily","Diariamente",,
|
||||
"Daily team call summary by user","Resumen diario de llamadas del equipo por usuario",,
|
||||
"Dashboard","Tablero de mandos",,
|
||||
"Date from","Fecha desde",,
|
||||
"Date to","Fecha hasta",,
|
||||
"Day of month","Día del mes",,
|
||||
"Day of week","Día de la semana",,
|
||||
"Days","Días",,
|
||||
"Delete all events","Borrar todos los eventos",,
|
||||
"Delete only this event","Borrar sólo este evento",,
|
||||
"Delete this and next events","Borrar este y los siguientes eventos",,
|
||||
"Delivery Address","Dirección de entrega",,
|
||||
"Dep./Div.","Dpto./Div.",,
|
||||
"Description","Descripción",,
|
||||
"Display customer description in opportunity",,,
|
||||
"Duration","Duración",,
|
||||
"Duration type","Tipo de duración",,
|
||||
"Email","Correo electrónico",,
|
||||
"Emails","Emails",,
|
||||
"End","Fin",,
|
||||
"End date","Fecha de finalización",,
|
||||
"Enterprise","Empresa",,
|
||||
"Enterprise name","Nombre de la empresa",,
|
||||
"Error in lead conversion","Error en la conversión del plomo",,
|
||||
"Estimated budget","Presupuesto estimado",,
|
||||
"Event","Evento",,
|
||||
"Event Categories","Categorías de eventos",,
|
||||
"Event Dashboard 1","Tablero de eventos 1",,
|
||||
"Event Db","Evento Db",,
|
||||
"Event categories","Categorías de eventos",,
|
||||
"Event category","Categoría del evento",,
|
||||
"Event configuration categories","Categorías de configuración de eventos",,
|
||||
"Event filters","Filtros de eventos",,
|
||||
"Event reminder","Recordatorio de evento",,
|
||||
"Event reminder %s","Recordatorio de evento %s",,
|
||||
"Event reminder batch","Lote de recordatorio de evento",,
|
||||
"Event reminder page","Página de recordatorio de eventos",,
|
||||
"Event reminder template",,,
|
||||
"Event reminders","Recordatorios de eventos",,
|
||||
"Event's reminder's generation's reporting :","Informe de la generación del recordatorio del evento:",,
|
||||
"Events","Eventos",,
|
||||
"Every %d days","Cada %d días",,
|
||||
"Every %d months the %d","Cada %d meses el %d",,
|
||||
"Every %d weeks","Cada %d semanas",,
|
||||
"Every %d years the %s","Cada %d años los %s",,
|
||||
"Every day","Todos los días",,
|
||||
"Every month","Cada mes",,
|
||||
"Every month the","Cada mes el",,
|
||||
"Every week","Cada semana",,
|
||||
"Every year","Cada año",,
|
||||
"Every year the","Cada año el",,
|
||||
"Expected close date","Fecha prevista de cierre",,
|
||||
"Fax","Fax",,
|
||||
"Finished","Acabado",,
|
||||
"First name","Nombre de pila",,
|
||||
"Fixed Phone","Teléfono Fijo",,
|
||||
"Fixed phone","Teléfono fijo",,
|
||||
"Follow up","Seguimiento",,
|
||||
"Follow-up","Seguimiento",,
|
||||
"For all","Para todos",,
|
||||
"For me","Para mí",,
|
||||
"Fr","Fr",,
|
||||
"Free text",,,
|
||||
"From Date","Desde la fecha",,
|
||||
"From date must be less than the to date","La fecha de inicio debe ser menor que la fecha de finalización.",,
|
||||
"Function","Función",,
|
||||
"General contact details","Datos generales de contacto",,
|
||||
"Generate CRM configurations","Generar configuraciones de CRM",,
|
||||
"Generate Project","Generar proyecto",,
|
||||
"Groups Assignable",,,
|
||||
"Guests","Invitados",,
|
||||
"High","Alto",,
|
||||
"Historical Period","Período Histórico",,
|
||||
"Historical events completed","Eventos históricos completados",,
|
||||
"Hours","Horas",,
|
||||
"Import lead","Plomo de importación",,
|
||||
"Import leads","Cables de importación",,
|
||||
"In process","En proceso",,
|
||||
"Incoming","Entrante",,
|
||||
"Industry Sector","Sector de la Industria",,
|
||||
"Industry sector","Sector de la industria",,
|
||||
"Information","Información",,
|
||||
"Informations","Informaciones",,
|
||||
"Input location please","Localización de la entrada, por favor",,
|
||||
"Invoicing Address","Dirección de facturación",,
|
||||
"Job Title","Título del puesto",,
|
||||
"Key accounts","Cuentas clave",,
|
||||
"Last name","Apellido",,
|
||||
"Lead","Plomo",,
|
||||
"Lead Assigned","Asignado a un cliente potencial",,
|
||||
"Lead Converted","Plomo Convertido",,
|
||||
"Lead Dashboard 1","Tablero de control de plomo 1",,
|
||||
"Lead Db","Plomo Db",,
|
||||
"Lead Db 1","Plomo Db 1",,
|
||||
"Lead converted","Plomo convertido",,
|
||||
"Lead created","Plomo creado",,
|
||||
"Lead filters","Filtros de plomo",,
|
||||
"Lead.address_information","Información de dirección",,
|
||||
"Lead.company","Empresa",,
|
||||
"Lead.email","Correo electrónico",,
|
||||
"Lead.fax","Fax",,
|
||||
"Lead.header","Cabecera",,
|
||||
"Lead.industry","Industria",,
|
||||
"Lead.lead_owner","Propietario principal",,
|
||||
"Lead.name","Nombre",,
|
||||
"Lead.other_address","Otra dirección",,
|
||||
"Lead.phone","Teléfono",,
|
||||
"Lead.primary_address","Dirección principal",,
|
||||
"Lead.source","Fuente",,
|
||||
"Lead.status","Estado",,
|
||||
"Lead.title","Título",,
|
||||
"Leads","Plomos",,
|
||||
"Leads Source","Fuente de prospectos",,
|
||||
"Leads by Country","Líderes por país",,
|
||||
"Leads by Salesman by Status","Líderes por vendedor por estado",,
|
||||
"Leads by Source","Plomos por fuente",,
|
||||
"Leads by Team by Status","Lidera por Equipo por Estado",,
|
||||
"Limit Date","Fecha límite",,
|
||||
"Lose","Perder",,
|
||||
"Loss confirmation","Notificación de pérdidas",,
|
||||
"Lost","Perdido",,
|
||||
"Lost reason","Razón perdida",,
|
||||
"Lost reasons","Razones perdidas",,
|
||||
"Low","Baja",,
|
||||
"MapRest.PinCharLead","L",,
|
||||
"MapRest.PinCharOpportunity","O",,
|
||||
"Marketing","Comercialización",,
|
||||
"Meeting","Reunión",,
|
||||
"Meeting Nbr","Reunión Nbr",,
|
||||
"Meeting Nbr.","Reunión Nbr.",,
|
||||
"Meeting filters","Filtros de reuniones",,
|
||||
"Meeting number historical","Histórico del número de la reunión",,
|
||||
"Meeting reminder template","Plantilla de recordatorio de reunión",,
|
||||
"Meeting's date changed template","Plantilla de cambio de fecha de la reunión",,
|
||||
"Meeting's guest added template","Plantilla añadida por el invitado a la reunión",,
|
||||
"Meeting's guest deleted template","Plantilla eliminada por el invitado a la reunión",,
|
||||
"Meetings","Reuniones",,
|
||||
"Meetings number historical","Histórico del número de reuniones",,
|
||||
"Meetings number target completed (%)","Número de reuniones objetivo cumplido (%)",,
|
||||
"Memo","Memo",,
|
||||
"Minutes","Actas",,
|
||||
"Mo","Mo",,
|
||||
"Mobile N°","Móvil N°",,
|
||||
"Mobile phone","Teléfono móvil",,
|
||||
"Month","Mes",,
|
||||
"Monthly","Mensualmente",,
|
||||
"Months","Meses",,
|
||||
"My Best Open Deals","Mis Mejores Ofertas Abiertas",,
|
||||
"My CRM events","Mis eventos de CRM",,
|
||||
"My Calendar","Mi Calendario",,
|
||||
"My Calls","Mis llamadas",,
|
||||
"My Closed Opportunities","Mis oportunidades cerradas",,
|
||||
"My Current Leads","Mis contactos actuales",,
|
||||
"My Key accounts","Mis cuentas clave",,
|
||||
"My Leads","Mis pistas",,
|
||||
"My Meetings","Mis reuniones",,
|
||||
"My Open Opportunities","Mis Oportunidades Abiertas",,
|
||||
"My Opportunities","Mis Oportunidades",,
|
||||
"My Tasks","Mis tareas",,
|
||||
"My Team Best Open Deals","Las mejores ofertas de mi equipo",,
|
||||
"My Team Calls","Llamadas de mi equipo",,
|
||||
"My Team Closed Opportunities","Mi Equipo Oportunidades Cerradas",,
|
||||
"My Team Key accounts","Mi equipo Cuentas clave",,
|
||||
"My Team Leads","Líderes de mi equipo",,
|
||||
"My Team Meetings","Reuniones de mi equipo",,
|
||||
"My Team Open Opportunities","Mi equipo Oportunidades abiertas",,
|
||||
"My Team Tasks","Mis tareas de equipo",,
|
||||
"My Today Calls","Mis llamadas de hoy",,
|
||||
"My Today Tasks","Mis tareas de hoy",,
|
||||
"My Upcoming Meetings","Mis próximas reuniones",,
|
||||
"My Upcoming Tasks","Mis próximas tareas",,
|
||||
"My opportunities","Mis oportunidades",,
|
||||
"My past events","Mis eventos pasados",,
|
||||
"My team opportunities","Mis oportunidades en el equipo",,
|
||||
"My upcoming events","Mis próximos eventos",,
|
||||
"Name","Nombre",,
|
||||
"Negotiation","Negociación",,
|
||||
"New","Nuevo",,
|
||||
"Next stage","Próxima etapa",,
|
||||
"Next step","Siguiente paso",,
|
||||
"No lead import configuration found","No se ha encontrado ninguna configuración de importación de clientes potenciales",,
|
||||
"No template created in CRM configuration for company %s, emails have not been sent","No se ha creado ninguna plantilla en la configuración de CRM para los %s de la empresa, no se han enviado correos electrónicos.",,
|
||||
"Non-participant","No participante",,
|
||||
"None","Ninguno",,
|
||||
"Normal","Normal",,
|
||||
"Not started","No iniciado",,
|
||||
"Objective","Objetivo",,
|
||||
"Objective %s is in contradiction with objective's configuration %s","Objetivo %s está en contradicción con la configuración del objetivo %s",,
|
||||
"Objectives","Objetivos",,
|
||||
"Objectives Configurations","Configuraciones de Objetivos",,
|
||||
"Objectives Team Db","Objetivos Equipo Db",,
|
||||
"Objectives User Db","Objetivos Usuario Db",,
|
||||
"Objectives configurations","Configuraciones de objetivos",,
|
||||
"Objectives team Dashboard","Objetivos equipo Dashboard",,
|
||||
"Objectives user Dashboard","Tablero de control de usuarios de Objetivos",,
|
||||
"Objectives' generation's reporting :","Informes de generación de objetivos:",,
|
||||
"Office name","Nombre de la oficina",,
|
||||
"On going","En curso",,
|
||||
"Open Cases by Agents","Casos abiertos por agentes",,
|
||||
"Open Opportunities","Oportunidades abiertas",,
|
||||
"Operation mode",,,
|
||||
"Opportunities","Oportunidades",,
|
||||
"Opportunities By Origin By Stage","Oportunidades por origen por etapa",,
|
||||
"Opportunities By Sale Stage","Oportunidades por etapa de venta",,
|
||||
"Opportunities By Source","Oportunidades por fuente",,
|
||||
"Opportunities By Type","Oportunidades por tipo",,
|
||||
"Opportunities Db 1","Oportunidades Db 1",,
|
||||
"Opportunities Db 2","Oportunidades Db 2",,
|
||||
"Opportunities Db 3","Oportunidades Db 3",,
|
||||
"Opportunities Won By Lead Source","Oportunidades ganadas por la fuente de plomo",,
|
||||
"Opportunities Won By Partner","Oportunidades ganadas por el socio",,
|
||||
"Opportunities Won By Salesman","Oportunidades ganadas por un vendedor",,
|
||||
"Opportunities amount won historical","Cantidad de oportunidades ganadas históricamente",,
|
||||
"Opportunities amount won target competed (%)","Cantidad de oportunidades ganadas objetivo competido (%)",,
|
||||
"Opportunities amount won target completed (%)","Cantidad de oportunidades ganadas objetivo cumplido (%)",,
|
||||
"Opportunities created number historical","Oportunidades creadas número histórico",,
|
||||
"Opportunities created number target completed (%)","Oportunidades creadas número de objetivos cumplidos (%)",,
|
||||
"Opportunities created won historical","Oportunidades creadas ganadas históricamente",,
|
||||
"Opportunities created won target completed (%)","Oportunidades creadas ganadas objetivo cumplido (%)",,
|
||||
"Opportunities filters","Filtros de oportunidades",,
|
||||
"Opportunity","Oportunidad",,
|
||||
"Opportunity Type","Tipo de Oportunidad",,
|
||||
"Opportunity created","Oportunidad creada",,
|
||||
"Opportunity lost","Oportunidad perdida",,
|
||||
"Opportunity type","Tipo de oportunidad",,
|
||||
"Opportunity types","Clases de oportunidad",,
|
||||
"Opportunity won","Oportunidad ganada",,
|
||||
"Optional participant","Participante opcional",,
|
||||
"Order by state","Ordenar por estado",,
|
||||
"Organization","Organización",,
|
||||
"Outgoing","Saliente",,
|
||||
"Parent event","Evento para padres",,
|
||||
"Parent lead is missing.","Falta el plomo de los padres.",,
|
||||
"Partner","Socio",,
|
||||
"Partner Details","Detalles del Socio",,
|
||||
"Pending","Pendiente",,
|
||||
"Period type","Clase de período",,
|
||||
"Periodicity must be greater than 0","La periodicidad debe ser superior a 0",,
|
||||
"Picture","Imagen",,
|
||||
"Pipeline","Tubería",,
|
||||
"Pipeline by Stage and Type","Tubería por Etapa y Tipo",,
|
||||
"Pipeline next 90 days","Tubería en los próximos 90 días",,
|
||||
"Planned","Planeado",,
|
||||
"Please configure all templates in CRM configuration for company %s","Por favor, configure todas las plantillas en la configuración de CRM para los %s de la empresa",,
|
||||
"Please configure informations for CRM for company %s","Por favor, configure la información de CRM para los %s de la empresa",,
|
||||
"Please save the event before setting the recurrence","Por favor, guarde el evento antes de configurar la recurrencia",,
|
||||
"Please select a lead",,,
|
||||
"Please select the Lead(s) to print.","Por favor, seleccione la(s) pista(s) que desea imprimir.",,
|
||||
"Postal code","Código postal",,
|
||||
"Present","Presente",,
|
||||
"Previous stage","Etapa anterior",,
|
||||
"Previous step","Paso anterior",,
|
||||
"Primary address","Dirección principal",,
|
||||
"Print","Imprimir",,
|
||||
"Priority","Prioridad",,
|
||||
"Probability (%)","Probabilidad (%)",,
|
||||
"Proposition","Propuesta",,
|
||||
"Qualification","Calificación",,
|
||||
"Realized","Realizado",,
|
||||
"Recent lost deals","Operaciones perdidas recientes",,
|
||||
"Recently created opportunities","Oportunidades de reciente creación",,
|
||||
"Recurrence","Recurrencia",,
|
||||
"Recurrence assistant","Asistente de repetición",,
|
||||
"Recurrence configuration","Configuración de recurrencia",,
|
||||
"Recurrence name","Nombre de la recurrencia",,
|
||||
"Recurrent","Recurrentes",,
|
||||
"Recycle","Reciclar",,
|
||||
"Recycled","Reciclado",,
|
||||
"Reference","Referencia",,
|
||||
"References","Referencias",,
|
||||
"Referred by","Referido por",,
|
||||
"Region","Región",,
|
||||
"Rejection of calls","Rechazo de llamadas",,
|
||||
"Rejection of e-mails","Rechazo de correos electrónicos",,
|
||||
"Related to","Relacionado con",,
|
||||
"Related to select","Relacionado a select",,
|
||||
"Reminded","Recordado",,
|
||||
"Reminder",,,
|
||||
"Reminder Templates","Plantillas de recordatorio",,
|
||||
"Reminder(s) treated","Recordatorio(s) tratado(s)",,
|
||||
"Reminders","Recordatorios",,
|
||||
"Repeat every","Repetir cada",,
|
||||
"Repeat every:","Repita cada una de ellas:",,
|
||||
"Repeat the:","Repita el procedimiento:",,
|
||||
"Repetitions number","Número de repeticiones",,
|
||||
"Reported","Reportado",,
|
||||
"Reportings","Reportajes",,
|
||||
"Reports","Informes",,
|
||||
"Required participant","Participante requerido",,
|
||||
"Sa","Sa",,
|
||||
"Sale quotations/orders","Ofertas/pedidos de venta",,
|
||||
"Sales Stage","Etapa de venta",,
|
||||
"Sales orders amount won historical","Importe de pedidos de cliente ganados históricos",,
|
||||
"Sales orders amount won target completed (%)","Importe de los pedidos de venta ganados objetivo cumplido (%)",,
|
||||
"Sales orders created number historical","Histórico de pedidos de cliente creados",,
|
||||
"Sales orders created number target completed (%)","Número de pedidos de cliente creados objetivo completado (%)",,
|
||||
"Sales orders created won historical","Pedidos de cliente creados ganados históricos",,
|
||||
"Sales orders created won target completed","Los pedidos de cliente creados ganaron el objetivo completado",,
|
||||
"Sales orders created won target completed (%)","Pedidos de cliente creados ganados y completados (%)",,
|
||||
"Sales stage","Fase de venta",,
|
||||
"Salesman","Vendedor",,
|
||||
"Schedule Event","Programar Evento",,
|
||||
"Schedule Event (${ fullName })","Programar Evento (${ fullName })",,
|
||||
"Schedule Event(${ fullName})","Programar Evento(${ fullName})",,
|
||||
"Select Contact","Seleccione Contacto",,
|
||||
"Select Partner","Seleccione Interlocutor",,
|
||||
"Select existing contact","Seleccione un contacto existente",,
|
||||
"Select existing partner","Seleccione un interlocutor existente",,
|
||||
"Send Email","Enviar correo electrónico",,
|
||||
"Send email","Enviar correo electrónico",,
|
||||
"Sending date",,,
|
||||
"Settings","Ajustes",,
|
||||
"Show Partner","Mostrar Socio",,
|
||||
"Show all events","Mostrar todos los eventos",,
|
||||
"Some user groups",,,
|
||||
"Source","Fuente",,
|
||||
"Source description","Descripción de la fuente",,
|
||||
"Start","Inicio",,
|
||||
"Start date","Fecha de inicio",,
|
||||
"State","Estado",,
|
||||
"Status","Estado",,
|
||||
"Status description","Descripción de status",,
|
||||
"Su","Su",,
|
||||
"Take charge","Hágase cargo",,
|
||||
"Target","Objetivo",,
|
||||
"Target User Dashboard","Panel de control del usuario objetivo",,
|
||||
"Target batch","Lote de destino",,
|
||||
"Target configuration","Configuración del objetivo",,
|
||||
"Target configurations","Configuraciones de destino",,
|
||||
"Target page","Página de destino",,
|
||||
"Target team Dashboard","Equipo objetivo Dashboard",,
|
||||
"Target vs Real","Objetivo vs Real",,
|
||||
"Targets configurations","Configuraciones de objetivos",,
|
||||
"Task","Tarea",,
|
||||
"Task reminder template","Plantilla de recordatorio de tareas",,
|
||||
"Tasks","Tareas",,
|
||||
"Tasks filters","Filtros de tareas",,
|
||||
"Team","Equipo",,
|
||||
"Th","El",,
|
||||
"The end date must be after the start date","La fecha final debe ser posterior a la fecha de inicio.",,
|
||||
"The number of repetitions must be greater than 0","El número de repeticiones debe ser superior a 0",,
|
||||
"Title","Título",,
|
||||
"To Date","Hasta la fecha",,
|
||||
"Tools","Herramientas",,
|
||||
"Trading name","Nombre comercial",,
|
||||
"Treated objectives reporting","Informes de objetivos tratados",,
|
||||
"Tu","Tu",,
|
||||
"Type","Tipo",,
|
||||
"Type of need",,,
|
||||
"UID (Calendar)","UID (Calendario)",,
|
||||
"Unassigned Leads","Cables no asignados",,
|
||||
"Unassigned Opportunities","Oportunidades no asignadas",,
|
||||
"Unassigned opportunities","Oportunidades no asignadas",,
|
||||
"Upcoming events","Próximos eventos",,
|
||||
"Urgent","Urgente",,
|
||||
"User","Usuario",,
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured.",,,
|
||||
"User %s must have an active company to use templates","Los %s de usuarios deben tener una empresa activa para utilizar las plantillas",,
|
||||
"Validate","Validar",,
|
||||
"We","Nosotros",,
|
||||
"Website","Sitio web",,
|
||||
"Weekly","Semanalmente",,
|
||||
"Weeks","Semanas",,
|
||||
"Win","Ganar",,
|
||||
"Worst case","En el peor de los casos",,
|
||||
"Years","Años",,
|
||||
"You don't have the rights to delete this event","Usted no tiene los derechos para borrar este evento",,
|
||||
"You must choose a recurrence type","Debe seleccionar una clase de recurrencia",,
|
||||
"You must choose at least one day in the week","Debe elegir al menos un día de la semana",,
|
||||
"amount","monto",,
|
||||
"com.axelor.apps.crm.job.EventReminderJob","com.axelor.apps.crm.job.EventReminderJob",,
|
||||
"com.axelor.apps.crm.service.batch.CrmBatchService","com.axelor.apps.crm.service.batch.CrmBatchService",,
|
||||
"crm.New","Nuevo",,
|
||||
"date","salir con",,
|
||||
"every week's day","cada día de la semana",,
|
||||
"everyday","cotidiano",,
|
||||
"fri,","vie.",,
|
||||
"http://www.url.com","http://www.url.com",,
|
||||
"important","significativo",,
|
||||
"mon,","mon.",,
|
||||
"on","con",,
|
||||
"portal.daily.team.calls.summary.by.user","Resumen.de.las.llamadas.diarias.del.equipo.del.portal.por.usuario",,
|
||||
"sat,","se sentó.",,
|
||||
"success","triunfo",,
|
||||
"sun,","sol.",,
|
||||
"thur,","thur.",,
|
||||
"tues,","Tues.",,
|
||||
"until the","hasta que el",,
|
||||
"value:CRM","valor:CRM",,
|
||||
"warning","amonestación",,
|
||||
"wed,","wed.",,
|
||||
"whatever@example.com","whatever@example.com",,
|
||||
"www.url.com","www.url.com",,
|
||||
|
@ -0,0 +1,525 @@
|
||||
"key","message","comment","context"
|
||||
"%d times","%d fois",,
|
||||
"+33000000000",,,
|
||||
"+33100000000",,,
|
||||
"<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />",,,
|
||||
"<a class='fa fa-google' href='http://www.google.com' target='_blank' />",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,,
|
||||
"<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />",,,
|
||||
"<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />",,,
|
||||
"<span class='label label-warning'>The selected date is in the past.</span>","<span class='label label-warning'>La date sélectionnée est antérieure à la date du jour.</span>",,
|
||||
"<span class='label label-warning'>There is already a lead with this name.</span>","<span class='label label-warning'>Il y a déjà une piste avec ce nom.</span>",,
|
||||
"<span style=""height:21px; line-height: 21px; margin-top:18px; display:inline-block"">VS</span>",,,
|
||||
"A lost reason must be selected","Une raison de perte doit être selectionnée",,
|
||||
"Action",,,
|
||||
"Activities","Activités",,
|
||||
"Add","Ajouter",,
|
||||
"Add a guest","Ajouter un invité",,
|
||||
"Address","Adresse",,
|
||||
"After n repetitions","Après n répétitions",,
|
||||
"All past events","Tous les événements passés",,
|
||||
"All upcoming events","Tous les événements à venir",,
|
||||
"All users","Tous les utilisateurs",,
|
||||
"Amount","Montant",,
|
||||
"Amount Won","Montant gagné",,
|
||||
"Amount won","Montant gagné",,
|
||||
"App Crm","Application CRM",,
|
||||
"Apply changes to all recurrence's events","Appliquer les changements à tous les événements récurrents",,
|
||||
"Apply changes to this event only","Appliquer les changements à cet événement seulement",,
|
||||
"Apply modifications","Appliquer les modifications",,
|
||||
"Apply modifications for all","Appliquer les modifications à tous",,
|
||||
"Are you sure you want to convert the lead?","Êtes-vous sûr de vouloir convertir cette piste ?",,
|
||||
"Assign to","Assigner à",,
|
||||
"Assign to me","Prendre en charge",,
|
||||
"Assignable Users","Choix des utilisateurs assignés aux clients",,
|
||||
"Assigned","Assigné",,
|
||||
"Assigned to","Assigné à",,
|
||||
"At specific date","À la date",,
|
||||
"At the date","À la date",,
|
||||
"Attendee","Nom",,
|
||||
"Available","Disponible",,
|
||||
"Average duration between lead and first opportunity (days)","Temps moyen entre une piste et sa première opportunité (jours)",,
|
||||
"Batchs","Traitement de masse",,
|
||||
"Before start date","Avant la date de début",,
|
||||
"Best Open Deals","Meilleures Opp. en cours",,
|
||||
"Best case","Au mieux",,
|
||||
"Busy","Occupé",,
|
||||
"CRM","CRM",,
|
||||
"CRM Activities","Activités CRM",,
|
||||
"CRM Batch","Batch CRM",,
|
||||
"CRM batches","Batchs CRM",,
|
||||
"CRM config","Config CRM",,
|
||||
"CRM config (${ name })",,,
|
||||
"CRM configuration","Configuration CRM",,
|
||||
"CRM configurations","Configurations CRM",,
|
||||
"CRM events","Évènements CRM",,
|
||||
"Call","Appel",,
|
||||
"Call emitted Nbr","Nbre d'appels émis",,
|
||||
"Call emitted Nbr.","Nbre d'appels émis",,
|
||||
"Call emitted historical","Histo. appels émis",,
|
||||
"Call filters","Filtres Appels",,
|
||||
"Call reminder template","Modèle de rappel d'appel",,
|
||||
"Call type","Type d'appel",,
|
||||
"Calls","Appels",,
|
||||
"Calls Dashboard","Tbl. Bord Appels",,
|
||||
"Calls Db","Tbl. Bord Appels",,
|
||||
"Calls by team by user","Appels par équipe et par utilisateur",,
|
||||
"Calls by user(of a team)","Appel par utilisateur (par Equipe)",,
|
||||
"Calls emitted historical","Historique des appels émis",,
|
||||
"Calls emitted target completed (%)","Objectif des Appels émis réalisés (%)",,
|
||||
"Calls held by team by type","Appels par équipe par type",,
|
||||
"Calls held by type by user","Appels par type par utilisateur",,
|
||||
"Calls type by team","Appels par équipe",,
|
||||
"Calls type by user","Appels par utilisateur",,
|
||||
"Cancel this reminder","Annuler ce rappel",,
|
||||
"Canceled","Annulé",,
|
||||
"Cases","Tickets",,
|
||||
"Category","Catégorie",,
|
||||
"Characteristics","Caractéristiques",,
|
||||
"Chart","Graphique",,
|
||||
"Check duplicate","Vérifier doublons",,
|
||||
"City","Ville",,
|
||||
"Civility","Civilité",,
|
||||
"Closed Opportunities","Opportunités fermées",,
|
||||
"Closed lost","Fermée perdue",,
|
||||
"Closed won","Fermée gagnée",,
|
||||
"Code","Code",,
|
||||
"Company","Société",,
|
||||
"Configuration","Configuration",,
|
||||
"Confirm lost reason","Confirmer la raison de perte",,
|
||||
"Contact","Coordonnées",,
|
||||
"Contact date","Date de contact",,
|
||||
"Contact details","Coordonnées",,
|
||||
"Contact function","Fonction des contacts",,
|
||||
"Contact name","Nom contact",,
|
||||
"Contacts","Contacts",,
|
||||
"Convert","Convertir",,
|
||||
"Convert lead","Convertir Piste",,
|
||||
"Convert lead (${ fullName })",,,
|
||||
"Convert lead into contact","Conversion de la piste en contact",,
|
||||
"Convert lead into partner","Conversion de la piste en tiers",,
|
||||
"Converted","Converti",,
|
||||
"Country","Pays",,
|
||||
"Create a new reminder","Créer un nouveau rappel",,
|
||||
"Create a quotation","Créer un devis",,
|
||||
"Create event","Créer évènement",,
|
||||
"Create new contact","Créer un nouveau contact",,
|
||||
"Create new partner","Créer nouveau tiers",,
|
||||
"Create opportunity","Créer Opportunité",,
|
||||
"Create opportunity (${ fullName })","Créer Opportunité (${ fullName })",,
|
||||
"Create order (${ fullName })","Créer devis (${ fullName })",,
|
||||
"Create purchase quotation","Créer une commande d'achat",,
|
||||
"Create sale quotation","Créer devis de vente",,
|
||||
"Created Nbr","Nbre Créés",,
|
||||
"Created Nbr.","Nbre Créés",,
|
||||
"Created Won","Créé gagné",,
|
||||
"Created by","Créé par",,
|
||||
"Created leads by industry sector","Pistes créées par secteur de l’industrie",,
|
||||
"Created leads per month","Pistes créées par mois",,
|
||||
"Created leads with at least one opportunity","Pistes créées avec au moins une opportunité",,
|
||||
"Created on","Créé le",,
|
||||
"Crm batch","Traitement de masse",,
|
||||
"Currency","Devise",,
|
||||
"Customer","Client",,
|
||||
"Customer Description","Description du client",,
|
||||
"Customer fixed phone","Tél. fixe du client",,
|
||||
"Customer mobile phone","Tél. mobile du client",,
|
||||
"Customer name","Nom du client",,
|
||||
"Customer recovery","Voir relance client",,
|
||||
"Customers","Clients",,
|
||||
"Daily","Journalier",,
|
||||
"Daily team call summary by user","Appels du jour par utilisateur",,
|
||||
"Dashboard","Tableau de bord",,
|
||||
"Date from","Date de",,
|
||||
"Date to","Date à",,
|
||||
"Day of month","Jour du mois",,
|
||||
"Day of week","Jour de la semaine",,
|
||||
"Days","Jours",,
|
||||
"Delete all events","Supprimer tous les événements",,
|
||||
"Delete only this event","Supprimer seulement cet événement",,
|
||||
"Delete this and next events","Supprimer cet événement et les suivants",,
|
||||
"Delivery Address","Adresse de livraison",,
|
||||
"Dep./Div.","Dépt/Div.",,
|
||||
"Description","Description",,
|
||||
"Display customer description in opportunity","Afficher description du client dans l'opportunité",,
|
||||
"Duration","Durée",,
|
||||
"Duration type","Type durée",,
|
||||
"Email","Email",,
|
||||
"Emails",,,
|
||||
"End","Fin",,
|
||||
"End date","Date de fin",,
|
||||
"Enterprise","Entreprise",,
|
||||
"Enterprise name","Entreprise",,
|
||||
"Error in lead conversion",,,
|
||||
"Estimated budget","Budget estimé",,
|
||||
"Event","Evènement",,
|
||||
"Event Categories","Catégories d’événements",,
|
||||
"Event Dashboard 1","Tbl. Bord Evènements",,
|
||||
"Event Db","Tbl. Bord Evènements",,
|
||||
"Event categories","Catégories d’événements",,
|
||||
"Event category","Catégorie d'évènement",,
|
||||
"Event configuration categories","Les configuration de catégories d'événement",,
|
||||
"Event filters","Filtre d'évènement",,
|
||||
"Event reminder","Rappel d'évènement",,
|
||||
"Event reminder %s","Rappel d'évènement %s",,
|
||||
"Event reminder batch","Batch rappels CRM",,
|
||||
"Event reminder page","Rappel d’évènement",,
|
||||
"Event reminder template",,,
|
||||
"Event reminders","Rappel d'évènement",,
|
||||
"Event's reminder's generation's reporting :",,,
|
||||
"Events","Événements",,
|
||||
"Every %d days","Tous les %d jours",,
|
||||
"Every %d months the %d","Tous les %d mois le %d",,
|
||||
"Every %d weeks","Tous les %d semaines",,
|
||||
"Every %d years the %s","Tous les %d ans le %s",,
|
||||
"Every day","Chaque jour",,
|
||||
"Every month","Chaque mois",,
|
||||
"Every month the","Tous les mois le",,
|
||||
"Every week","Chaque semaine",,
|
||||
"Every year","Chaque année",,
|
||||
"Every year the","Tous les ans le",,
|
||||
"Expected close date","Date prévue clôture",,
|
||||
"Fax","Fax",,
|
||||
"Finished","Terminé",,
|
||||
"First name","Prénom",,
|
||||
"Fixed Phone","N° Fixe",,
|
||||
"Fixed phone","Tél. fixe",,
|
||||
"Follow up","Suivi",,
|
||||
"Follow-up","Suivi",,
|
||||
"For all","Pour tous",,
|
||||
"For me","Pour moi",,
|
||||
"Fr","Ve",,
|
||||
"Free text",,,
|
||||
"From Date","Date de",,
|
||||
"From date must be less than the to date","La date de début doit être antérieure à la date de fin.",,
|
||||
"Function","Fonction",,
|
||||
"General contact details",,,
|
||||
"Generate CRM configurations","Générer les configurations CRM",,
|
||||
"Generate Project","Générer projet",,
|
||||
"Groups Assignable","Groupes assignables",,
|
||||
"Guests","Invités",,
|
||||
"High",,,
|
||||
"Historical Period","Historique",,
|
||||
"Historical events completed","Historique des évènements",,
|
||||
"Hours","Heures",,
|
||||
"Import lead","Importer piste",,
|
||||
"Import leads","Importer les pistes",,
|
||||
"In process","En cours",,
|
||||
"Incoming","Entrant",,
|
||||
"Industry Sector","Secteur de l’industrie",,
|
||||
"Industry sector",,,
|
||||
"Information","Information",,
|
||||
"Informations","Informations",,
|
||||
"Input location please","Saisir le lieu",,
|
||||
"Invoicing Address","Adresse de facturation",,
|
||||
"Job Title","Fonction",,
|
||||
"Key accounts","Compte clé",,
|
||||
"Last name","Nom",,
|
||||
"Lead","Piste",,
|
||||
"Lead Assigned","Piste assignée",,
|
||||
"Lead Converted","Piste convertie",,
|
||||
"Lead Dashboard 1","Tb Piste 1",,
|
||||
"Lead Db","Tb Piste",,
|
||||
"Lead Db 1","Tb Piste 1",,
|
||||
"Lead converted","Piste convertie",,
|
||||
"Lead created","Piste créée",,
|
||||
"Lead filters","Filtres Pistes",,
|
||||
"Lead.address_information","Adresse",,
|
||||
"Lead.company","Entreprise",,
|
||||
"Lead.email","Email Adresse",,
|
||||
"Lead.fax","Fax",,
|
||||
"Lead.header","Piste",,
|
||||
"Lead.industry","Industrie",,
|
||||
"Lead.lead_owner","Piste propriétaire",,
|
||||
"Lead.name","Nom",,
|
||||
"Lead.other_address","Autre Adresse",,
|
||||
"Lead.phone","Téléphone",,
|
||||
"Lead.primary_address","primaire Adresse",,
|
||||
"Lead.source","Source",,
|
||||
"Lead.status","Statut",,
|
||||
"Lead.title","Titre",,
|
||||
"Leads","Pistes",,
|
||||
"Leads Source","Provenances des prospects",,
|
||||
"Leads by Country","Pistes par pays",,
|
||||
"Leads by Salesman by Status","Pistes par commercial par état",,
|
||||
"Leads by Source","Pistes par provenance",,
|
||||
"Leads by Team by Status","Pistes par Equipe par Etat",,
|
||||
"Limit Date","Date limite",,
|
||||
"Lose","Perdre",,
|
||||
"Loss confirmation","Confirmation de perte",,
|
||||
"Lost","Perdu",,
|
||||
"Lost reason","Raison de perte",,
|
||||
"Lost reasons","Raisons de perte",,
|
||||
"Low",,,
|
||||
"MapRest.PinCharLead","P",,
|
||||
"MapRest.PinCharOpportunity","O",,
|
||||
"Marketing","Marketing",,
|
||||
"Meeting","Réunion",,
|
||||
"Meeting Nbr","Nbr. De rendez-vous",,
|
||||
"Meeting Nbr.","Nbr. De rendez-vous",,
|
||||
"Meeting filters","Filtres sur les meetings",,
|
||||
"Meeting number historical","Historique Nbre Rendez-vous",,
|
||||
"Meeting reminder template","Modèle de rappel d’événement",,
|
||||
"Meeting's date changed template","Modèle pour changement de date de réunion",,
|
||||
"Meeting's guest added template","Modèle pour ajout invité à une réunion",,
|
||||
"Meeting's guest deleted template","Modèle pour suppression invité à une réunion",,
|
||||
"Meetings","Rendez-vous",,
|
||||
"Meetings number historical","Historique Nbre Rendez-vous",,
|
||||
"Meetings number target completed (%)","Objectif Nbre de Rdv réalisés (%)",,
|
||||
"Memo","Mémo",,
|
||||
"Minutes","Minutes",,
|
||||
"Mo","Lu",,
|
||||
"Mobile N°","N° Mobile",,
|
||||
"Mobile phone","Tél. mobile",,
|
||||
"Month","Mois",,
|
||||
"Monthly","Mensuel",,
|
||||
"Months","Mois",,
|
||||
"My Best Open Deals","Mes Meilleures Opportunités",,
|
||||
"My CRM events","Mes évènements CRM",,
|
||||
"My Calendar","Mon Calendrier",,
|
||||
"My Calls","Mes Appels",,
|
||||
"My Closed Opportunities","Mes Opportunités fermées",,
|
||||
"My Current Leads","Mes Pistes en cours",,
|
||||
"My Key accounts","Mes meilleurs comptes",,
|
||||
"My Leads","Mes Pistes",,
|
||||
"My Meetings","Mes Rendez-vous",,
|
||||
"My Open Opportunities","Mes Opportunités en cours",,
|
||||
"My Opportunities","Mes Opportunités",,
|
||||
"My Tasks","Mes Tâches",,
|
||||
"My Team Best Open Deals","Meilleures Opportunités de mon équipe",,
|
||||
"My Team Calls","Les Appels de mon Equipe",,
|
||||
"My Team Closed Opportunities","Opp. Fermées de mon Equipe",,
|
||||
"My Team Key accounts","Meilleurs comptes de mon équipe",,
|
||||
"My Team Leads","Pistes de mon Equipe",,
|
||||
"My Team Meetings","Rendez-vous de mon Equipe",,
|
||||
"My Team Open Opportunities","Opp. Ouvertes de mon Equipe",,
|
||||
"My Team Tasks","Tâches de mon Equipe",,
|
||||
"My Today Calls","Mes Appels du jour",,
|
||||
"My Today Tasks","Mes tâches du jour",,
|
||||
"My Upcoming Meetings","Mes prochains Rendez-vous",,
|
||||
"My Upcoming Tasks","Mes Tâches à venir",,
|
||||
"My opportunities","Mes opportunités",,
|
||||
"My past events","Mes événements passés",,
|
||||
"My team opportunities","Opportunités de mon équipe",,
|
||||
"My upcoming events","Mes événements à venir",,
|
||||
"Name","Nom",,
|
||||
"Negotiation","Négociation",,
|
||||
"New","Nouveau",,
|
||||
"Next stage","Étape suivante",,
|
||||
"Next step","Prochaine étape",,
|
||||
"No lead import configuration found","Le fichier de paramétrage pour l'import des leads est manquante.",,
|
||||
"No template created in CRM configuration for company %s, emails have not been sent","Aucun modèle créé dans la configuration CRM pour la société %s, aucun email n'a été envoyé",,
|
||||
"Non-participant","Non-participant",,
|
||||
"None","Aucun",,
|
||||
"Normal",,,
|
||||
"Not started","Non démarré",,
|
||||
"Objective","Objectif",,
|
||||
"Objective %s is in contradiction with objective's configuration %s","L'objectif %s est en contradiction avec la configuration d'objectif %s",,
|
||||
"Objectives","Objectifs",,
|
||||
"Objectives Configurations","Configuration objectifs",,
|
||||
"Objectives Team Db","Tb des objectifs équipes",,
|
||||
"Objectives User Db","Tableau de bord des objectifs utilisateurs",,
|
||||
"Objectives configurations","Configuration des objectifs",,
|
||||
"Objectives team Dashboard","Tb des objectifs équipes",,
|
||||
"Objectives user Dashboard","Tableau de bord des objectifs utilisateurs",,
|
||||
"Objectives' generation's reporting :",,,
|
||||
"Office name","Nom bureau",,
|
||||
"On going","En cours",,
|
||||
"Open Cases by Agents","Tickets ouverts par agent",,
|
||||
"Open Opportunities","Opportunités en cours",,
|
||||
"Operation mode","Mode de fonctionnement",,
|
||||
"Opportunities","Opportunités",,
|
||||
"Opportunities By Origin By Stage","Opp. par Origine par Etape",,
|
||||
"Opportunities By Sale Stage","Opportunités par Etape",,
|
||||
"Opportunities By Source","Opportunités par source",,
|
||||
"Opportunities By Type","Opportunités par type",,
|
||||
"Opportunities Db 1","Tb Opportunités 1",,
|
||||
"Opportunities Db 2","Tb Opportunités 2",,
|
||||
"Opportunities Db 3","Tb Opportunités 3",,
|
||||
"Opportunities Won By Lead Source","Opportunités gagnées par source",,
|
||||
"Opportunities Won By Partner","Opportunités gagnées par tiers",,
|
||||
"Opportunities Won By Salesman","Opp. Gagnées par commercial",,
|
||||
"Opportunities amount won historical","Opportunités gagnées",,
|
||||
"Opportunities amount won target competed (%)","Opportunités gagnées / objectif",,
|
||||
"Opportunities amount won target completed (%)","Opp. Gagnées Vs Objectifs (%)",,
|
||||
"Opportunities created number historical","Historique du nombre opportunités crées",,
|
||||
"Opportunities created number target completed (%)","Objectif Nbre d'Opportunités gagnées (%)",,
|
||||
"Opportunities created won historical","Historique Opp. Créées Gagnées",,
|
||||
"Opportunities created won target completed (%)","Opp. Créées Vs Objectifs (%)",,
|
||||
"Opportunities filters","Filtres Opportunités",,
|
||||
"Opportunity","Opportunité",,
|
||||
"Opportunity Type","Type d'Opportunité",,
|
||||
"Opportunity created","Opportunité créée",,
|
||||
"Opportunity lost","Opportunité manquée",,
|
||||
"Opportunity type","Type d'Opportunité",,
|
||||
"Opportunity types","Types d'opportunité",,
|
||||
"Opportunity won","Opportunité créée",,
|
||||
"Optional participant","Participant optionnel",,
|
||||
"Order by state",,,
|
||||
"Organization","Organisation",,
|
||||
"Outgoing","Sortant",,
|
||||
"Parent event","Événement parent",,
|
||||
"Parent lead is missing.","La piste parente est manquante.",,
|
||||
"Partner","Tiers",,
|
||||
"Partner Details","Détails du tiers",,
|
||||
"Pending","En attente",,
|
||||
"Period type","Type de période",,
|
||||
"Periodicity must be greater than 0","La périodicité doit être supérieure à 0",,
|
||||
"Picture","Image",,
|
||||
"Pipeline","Pipeline",,
|
||||
"Pipeline by Stage and Type","Pipeline par Etape par Type",,
|
||||
"Pipeline next 90 days","Pipeline à 90 jrs.",,
|
||||
"Planned","Planifié",,
|
||||
"Please complete the contact address.","Merci de compléter l'adresse du contact.",,
|
||||
"Please complete the partner address.","Merci de compléter l'adresse du tiers.",,
|
||||
"Please configure all templates in CRM configuration for company %s","Merci de configurer tous les modèles de mails dans la configuration CRM pour la société %s",,
|
||||
"Please configure informations for CRM for company %s","Merci de configurer les informations CRM pour la société %s",,
|
||||
"Please save the event before setting the recurrence",,,
|
||||
"Please select a lead","Veuillez sélectionner une piste",,
|
||||
"Please select the Lead(s) to print.","Merci de sélectionner le(s) prospect(s) à imprimer",,
|
||||
"Postal code","Code Postal",,
|
||||
"Present","Présent(e)",,
|
||||
"Previous stage","Étape précédente",,
|
||||
"Previous step","Étape précédente",,
|
||||
"Primary address","Adresse principale",,
|
||||
"Print","Imprimer",,
|
||||
"Priority","Priorité",,
|
||||
"Probability (%)","Probabilité (%)",,
|
||||
"Proposition",,,
|
||||
"Qualification",,,
|
||||
"Realized","Réalisé",,
|
||||
"Recent lost deals","Opp. récemment perdues",,
|
||||
"Recently created opportunities","Opp. récemment créées",,
|
||||
"Recurrence","Récurrence",,
|
||||
"Recurrence assistant","Assistant récurrence",,
|
||||
"Recurrence configuration","Configuration récurrence",,
|
||||
"Recurrence name",,,
|
||||
"Recurrent","Récurrent",,
|
||||
"Recycle","Recycler",,
|
||||
"Recycled","Recyclé",,
|
||||
"Reference","Références",,
|
||||
"References","Références",,
|
||||
"Referred by","Cité par",,
|
||||
"Region",,,
|
||||
"Rejection of calls","Refus d'appels",,
|
||||
"Rejection of e-mails","Refus d'e-mails",,
|
||||
"Related to","Associé à ",,
|
||||
"Related to select","Relatif à",,
|
||||
"Reminded","Rappel",,
|
||||
"Reminder","Rappel",,
|
||||
"Reminder Templates","Modèle de rappel",,
|
||||
"Reminder(s) treated","Rappel(s) traité(s)",,
|
||||
"Reminders","Rappels",,
|
||||
"Repeat every","Répéter chaque :",,
|
||||
"Repeat every:","Répéter chaque :",,
|
||||
"Repeat the:","Répéter le :",,
|
||||
"Repetitions number","Nombre de répétitions",,
|
||||
"Reported","Reporté",,
|
||||
"Reportings","Rapports",,
|
||||
"Reports",,,
|
||||
"Required participant","Participants requis",,
|
||||
"Sa","Sa",,
|
||||
"Sale quotation","Devis client",,
|
||||
"Sale quotations/orders","Devis/Commandes clients",,
|
||||
"Sales Stage","Etape vente",,
|
||||
"Sales orders amount won historical","Historique Devis/Cmdes signés",,
|
||||
"Sales orders amount won target completed (%)","Cmdes vente gagnées Vs objectif (%)",,
|
||||
"Sales orders created number historical","Nbre de devis réalisés",,
|
||||
"Sales orders created number target completed (%)","Nbre Cmdes vente créées Vs objectif (%)",,
|
||||
"Sales orders created won historical","Historique Cmdes crées et gagnées",,
|
||||
"Sales orders created won target completed",,,
|
||||
"Sales orders created won target completed (%)",,,
|
||||
"Sales stage","Etape de vente",,
|
||||
"Salesman","Commercial",,
|
||||
"Schedule Event",,,
|
||||
"Schedule Event (${ fullName })",,,
|
||||
"Schedule Event(${ fullName})",,,
|
||||
"Select Contact","Sélectionner un contact",,
|
||||
"Select Partner","Sélectionner un tiers",,
|
||||
"Select existing contact","Sélectionner un contact existant",,
|
||||
"Select existing partner","Sélectionner un tiers existant",,
|
||||
"Send Email","Envoyer email",,
|
||||
"Send email","Envoyer email",,
|
||||
"Sending date","Date d'envoi",,
|
||||
"Settings","Configurations",,
|
||||
"Show Partner","Voir Tiers",,
|
||||
"Show all events","Voir tous les événements",,
|
||||
"Some user groups","Certains groupes d'utilisateurs",,
|
||||
"Source","Provenance",,
|
||||
"Source description","Description provenance",,
|
||||
"Start","Démarrer",,
|
||||
"Start date","Date de début",,
|
||||
"State","Statut",,
|
||||
"Status","Statut",,
|
||||
"Status description","Détail Etat",,
|
||||
"Su","Di",,
|
||||
"Take charge","Prendre en charge",,
|
||||
"Target","Objectifs",,
|
||||
"Target User Dashboard","Tableau de bord des objectifs utilisateurs",,
|
||||
"Target batch","Batch des objectifs",,
|
||||
"Target configuration","Configuration objectifs",,
|
||||
"Target configurations","Configuration objectifs",,
|
||||
"Target page","Page obejctif",,
|
||||
"Target team Dashboard","Tb des objectifs équipes",,
|
||||
"Target vs Real","Cible vs Réel",,
|
||||
"Targets configurations","Configuration des objectifs",,
|
||||
"Task","Tâche",,
|
||||
"Task reminder template","Modèle de rappel de tâche",,
|
||||
"Tasks","Tâches",,
|
||||
"Tasks filters","Filtres Tâches",,
|
||||
"Team","Equipe",,
|
||||
"Th","Je",,
|
||||
"The end date must be after the start date","La date de fin doit être après la date de début",,
|
||||
"The number of repetitions must be greater than 0","Le nombre de répétitions doit être supérieur à 0",,
|
||||
"Title","Intitulé",,
|
||||
"To Date","A",,
|
||||
"Tools","Outils",,
|
||||
"Trading name","Enseigne",,
|
||||
"Treated objectives reporting","Configuration des objectifs(s) traité(s)",,
|
||||
"Tu","Ma",,
|
||||
"Type","Type",,
|
||||
"Type of need","Type de besoin",,
|
||||
"UID (Calendar)","UID (Calendrier)",,
|
||||
"Unassigned Leads","Pistes non-assignées",,
|
||||
"Unassigned Opportunities","Opportunités non assignées",,
|
||||
"Unassigned opportunities","Opportunités non assignées",,
|
||||
"Upcoming events","Prochains Evènements",,
|
||||
"Urgent",,,
|
||||
"User","Utilisateur",,
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured.","L’utilisateur %s n’a pas d’adresse email renseignée, il n’est pas non plus lié à un contact avec une adresse email renseignée.",,
|
||||
"User %s must have an active company to use templates","L'utilisateur %s doit avoir une société active pour utiliser les modèles",,
|
||||
"Validate","Valider",,
|
||||
"We","Me",,
|
||||
"Website","Site Web",,
|
||||
"Weekly","Hebdomadaire",,
|
||||
"Weeks","Semaines",,
|
||||
"Win","Gagner",,
|
||||
"Worst case","Au pire",,
|
||||
"Years","Années",,
|
||||
"You don't have the rights to delete this event","Vous n’avez pas les droits suffisants pour supprimer cet événement",,
|
||||
"You must choose a recurrence type","Vous devez choisir un type de récurrence",,
|
||||
"You must choose at least one day in the week","Vous devez choisir au moins un jour de la semaine",,
|
||||
"amount","Montant",,
|
||||
"com.axelor.apps.crm.job.EventReminderJob",,,
|
||||
"com.axelor.apps.crm.service.batch.CrmBatchService",,,
|
||||
"crm.New","Nouvelle",,
|
||||
"date",,,
|
||||
"every week's day","tous les jours de la semaine",,
|
||||
"everyday","tous les jours",,
|
||||
"fri,","ven,",,
|
||||
"http://www.url.com",,,
|
||||
"important",,,
|
||||
"mon,","lun,",,
|
||||
"on","le",,
|
||||
"portal.daily.team.calls.summary.by.user","Appels du jour par utilisateur",,
|
||||
"sat,","sam,",,
|
||||
"success","succès",,
|
||||
"sun,","dim,",,
|
||||
"thur,","jeu,",,
|
||||
"tues,","mar,",,
|
||||
"until the","jusqu'au",,
|
||||
"value:CRM","CRM",,
|
||||
"warning",,,
|
||||
"wed,","mer,",,
|
||||
"whatever@example.com",,,
|
||||
"www.url.com",,,
|
||||
|
@ -0,0 +1,521 @@
|
||||
"key","message","comment","context"
|
||||
"%d times","%d volte",,
|
||||
"+33000000000",,,
|
||||
"+33100000000",,,
|
||||
"<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />","<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />",,
|
||||
"<a class='fa fa-google' href='http://www.google.com' target='_blank' />","<a class='fa fa-google' href='http://www.google.com' target='_blank' />",,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />","<a class='fa fa fa-twitter' href='http://www.twitter.com' target='_blank' />",,
|
||||
"<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />","<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />",,
|
||||
"<span class='label label-warning'>The selected date is in the past.</span>",,,
|
||||
"<span class='label label-warning'>There is already a lead with this name.</span>","<span class='label label-warning'>C'è già un cavo con questo nome.</span>.",,
|
||||
"<span style=""height:21px; line-height: 21px; margin-top:18px; display:inline-block"">VS</span>",,,
|
||||
"A lost reason must be selected","Deve essere selezionata una ragione persa",,
|
||||
"Action","Azione",,
|
||||
"Activities","Attività",,
|
||||
"Add","Aggiungi",,
|
||||
"Add a guest","Aggiungi un ospite",,
|
||||
"Address","Indirizzo",,
|
||||
"After n repetitions","Dopo n ripetizioni",,
|
||||
"All past events","Tutti gli eventi passati",,
|
||||
"All upcoming events","Tutti i prossimi eventi",,
|
||||
"All users",,,
|
||||
"Amount","Importo",,
|
||||
"Amount Won","Importo Vinto",,
|
||||
"Amount won","Importo vinto",,
|
||||
"App Crm","App Crm",,
|
||||
"Apply changes to all recurrence's events","Applicare le modifiche a tutti gli eventi ricorrenti",,
|
||||
"Apply changes to this event only","Applicare le modifiche solo a questo evento",,
|
||||
"Apply modifications","Applicare le modifiche",,
|
||||
"Apply modifications for all","Applicare le modifiche per tutti",,
|
||||
"Are you sure you want to convert the lead?","Sei sicuro di voler convertire il piombo?",,
|
||||
"Assign to","Assegnare a",,
|
||||
"Assign to me","Assegnare a me",,
|
||||
"Assignable Users",,,
|
||||
"Assigned","Assegnato",,
|
||||
"Assigned to","Assegnato a",,
|
||||
"At specific date",,,
|
||||
"At the date","Alla data",,
|
||||
"Attendee","Partecipante",,
|
||||
"Available","Disponibile",,
|
||||
"Average duration between lead and first opportunity (days)",,,
|
||||
"Batchs","Lotti",,
|
||||
"Before start date",,,
|
||||
"Best Open Deals","Le migliori offerte aperte",,
|
||||
"Best case","Caso migliore",,
|
||||
"Busy","Occupato",,
|
||||
"CRM","CRM",,
|
||||
"CRM Activities","Attività di CRM",,
|
||||
"CRM Batch","CRM Batch",,
|
||||
"CRM batches","Lotti CRM",,
|
||||
"CRM config","Configurazione CRM",,
|
||||
"CRM config (${ name })","CRM config (${ nome })",,
|
||||
"CRM configuration","Configurazione CRM",,
|
||||
"CRM configurations","Configurazioni CRM",,
|
||||
"CRM events","Eventi CRM",,
|
||||
"Call","Chiama",,
|
||||
"Call emitted Nbr","Chiamata emessa Nbr",,
|
||||
"Call emitted Nbr.","Chiamata emessa Nbr.",,
|
||||
"Call emitted historical","Chiamata emessa storico",,
|
||||
"Call filters","Filtri di chiamata",,
|
||||
"Call reminder template","Modello di promemoria chiamate",,
|
||||
"Call type","Tipo di chiamata",,
|
||||
"Calls","Chiamate",,
|
||||
"Calls Dashboard","Cruscotto chiamate",,
|
||||
"Calls Db","Chiamate Db",,
|
||||
"Calls by team by user","Chiamate per squadra per utente",,
|
||||
"Calls by user(of a team)","Chiamate per utente (di un team)",,
|
||||
"Calls emitted historical","Chiamate emesse storiche",,
|
||||
"Calls emitted target completed (%)","Chiamate emesse bersaglio completato (%)",,
|
||||
"Calls held by team by type","Chiamate organizzate dalla squadra per tipo",,
|
||||
"Calls held by type by user","Chiamate detenute per tipo di utente",,
|
||||
"Calls type by team","Tipo di chiamate per squadra",,
|
||||
"Calls type by user","Tipo di chiamate per utente",,
|
||||
"Cancel this reminder",,,
|
||||
"Canceled","Annullato",,
|
||||
"Cases","Casi",,
|
||||
"Category","Categoria",,
|
||||
"Characteristics","Caratteristiche",,
|
||||
"Chart","Grafico",,
|
||||
"Check duplicate","Controllare i duplicati",,
|
||||
"City","Città",,
|
||||
"Civility","La civiltà",,
|
||||
"Closed Opportunities","Opportunità chiuse",,
|
||||
"Closed lost","Chiuso perso",,
|
||||
"Closed won","Chiuso ha vinto",,
|
||||
"Code","Codice",,
|
||||
"Company","L'azienda",,
|
||||
"Configuration","Configurazione",,
|
||||
"Confirm lost reason","Confermare la ragione persa",,
|
||||
"Contact","Contatto",,
|
||||
"Contact date","Data di contatto",,
|
||||
"Contact details","Dati di contatto",,
|
||||
"Contact name","Nome del contatto",,
|
||||
"Contacts","Contatti",,
|
||||
"Convert","Convertire",,
|
||||
"Convert lead","Convertire il piombo",,
|
||||
"Convert lead (${ fullName })","Convertire il cavo (${ fullName })",,
|
||||
"Convert lead into contact",,,
|
||||
"Convert lead into partner",,,
|
||||
"Converted","Convertito",,
|
||||
"Country","Paese",,
|
||||
"Create a new reminder",,,
|
||||
"Create a quotation",,,
|
||||
"Create event","Crea evento",,
|
||||
"Create new contact","Creare un nuovo contatto",,
|
||||
"Create new partner","Creare un nuovo partner",,
|
||||
"Create opportunity","Creare opportunità",,
|
||||
"Create opportunity (${ fullName })","Crea opportunità (${ fullName })",,
|
||||
"Create order (${ fullName })","Crea ordine (${ fullName })",,
|
||||
"Create purchase quotation",,,
|
||||
"Create sale quotation",,,
|
||||
"Created Nbr","Creato Nbr",,
|
||||
"Created Nbr.","Creato Nbr.",,
|
||||
"Created Won","Creato Won",,
|
||||
"Created by","Creato da",,
|
||||
"Created leads by industry sector","Creati leader per settore industriale",,
|
||||
"Created leads per month","Cavi creati al mese",,
|
||||
"Created leads with at least one opportunity",,,
|
||||
"Created on","Creato su",,
|
||||
"Crm batch","Lotto di Crm",,
|
||||
"Currency","Valuta",,
|
||||
"Customer","Cliente",,
|
||||
"Customer Description",,,
|
||||
"Customer fixed phone","Telefono fisso",,
|
||||
"Customer mobile phone","Telefono cellulare del cliente",,
|
||||
"Customer name","Nome del cliente",,
|
||||
"Customer recovery",,,
|
||||
"Customers","I clienti",,
|
||||
"Daily","Tutti i giorni",,
|
||||
"Daily team call summary by user","Riassunto giornaliero delle chiamate di squadra per utente",,
|
||||
"Dashboard","Cruscotto",,
|
||||
"Date from","Data a partire da",,
|
||||
"Date to","Data a",,
|
||||
"Day of month","Giorno del mese",,
|
||||
"Day of week","Giorno della settimana",,
|
||||
"Days","Giorni",,
|
||||
"Delete all events","Cancella tutti gli eventi",,
|
||||
"Delete only this event","Cancella solo questo evento",,
|
||||
"Delete this and next events","Cancella questo e i prossimi eventi",,
|
||||
"Delivery Address","Indirizzo di consegna",,
|
||||
"Dep./Div.","Dep./Div.",,
|
||||
"Description","Descrizione",,
|
||||
"Display customer description in opportunity",,,
|
||||
"Duration","Durata",,
|
||||
"Duration type","Tipo di durata",,
|
||||
"Email","Email eMail",,
|
||||
"Emails","Email",,
|
||||
"End","Fine",,
|
||||
"End date","Data di fine",,
|
||||
"Enterprise","Impresa",,
|
||||
"Enterprise name","Nome dell'azienda",,
|
||||
"Error in lead conversion","Errore nella conversione degli elettrocateteri",,
|
||||
"Estimated budget","Bilancio stimato",,
|
||||
"Event","Evento",,
|
||||
"Event Categories","Categorie di eventi",,
|
||||
"Event Dashboard 1","Cruscotto evento 1",,
|
||||
"Event Db","Evento Db",,
|
||||
"Event categories","Categorie di eventi",,
|
||||
"Event category","Categoria dell'evento",,
|
||||
"Event configuration categories","Categorie di configurazione degli eventi",,
|
||||
"Event filters","Filtri eventi",,
|
||||
"Event reminder","Promemoria eventi",,
|
||||
"Event reminder %s","Promemoria eventi %s",,
|
||||
"Event reminder batch","Promemoria eventi batch",,
|
||||
"Event reminder page","Pagina di promemoria eventi",,
|
||||
"Event reminder template",,,
|
||||
"Event reminders","Promemoria eventi",,
|
||||
"Event's reminder's generation's reporting :","Promemoria eventi, promemoria della generazione di report :",,
|
||||
"Events","Eventi",,
|
||||
"Every %d days","Ogni %d giorni",,
|
||||
"Every %d months the %d","Ogni %d mesi la %d",,
|
||||
"Every %d weeks","Ogni %d settimane",,
|
||||
"Every %d years the %s","Ogni anno la %s %s",,
|
||||
"Every day","Ogni giorno",,
|
||||
"Every month","Ogni mese",,
|
||||
"Every month the","Ogni mese il",,
|
||||
"Every week","Ogni settimana",,
|
||||
"Every year","Ogni anno",,
|
||||
"Every year the","Ogni anno il",,
|
||||
"Expected close date","Data di chiusura prevista",,
|
||||
"Fax","Fax",,
|
||||
"Finished","Finito",,
|
||||
"First name","Nome",,
|
||||
"Fixed Phone","Telefono fisso",,
|
||||
"Fixed phone","Telefono fisso",,
|
||||
"Follow up","Seguito",,
|
||||
"Follow-up","Seguito",,
|
||||
"For all","Per tutti",,
|
||||
"For me","Per me",,
|
||||
"Fr","Fr",,
|
||||
"Free text",,,
|
||||
"From Date","Da Data",,
|
||||
"From date must be less than the to date","Dalla data deve essere inferiore alla data di oggi",,
|
||||
"Function","Funzione",,
|
||||
"General contact details","Dati generali di contatto",,
|
||||
"Generate CRM configurations","Generazione di configurazioni CRM",,
|
||||
"Generate Project","Genera progetto",,
|
||||
"Groups Assignable",,,
|
||||
"Guests","Gli ospiti",,
|
||||
"High","Alto",,
|
||||
"Historical Period","Periodo Storico",,
|
||||
"Historical events completed","Eventi storici completati",,
|
||||
"Hours","Orario",,
|
||||
"Import lead","Importazione di piombo",,
|
||||
"Import leads","Importazione di cavi",,
|
||||
"In process","In corso",,
|
||||
"Incoming","In arrivo",,
|
||||
"Industry Sector","Settore Industriale",,
|
||||
"Industry sector","Settore industriale",,
|
||||
"Information","Informazioni",,
|
||||
"Informations","Informazioni",,
|
||||
"Input location please","Luogo di ingresso per favore",,
|
||||
"Invoicing Address","Indirizzo di fatturazione",,
|
||||
"Job Title","Titolo di lavoro",,
|
||||
"Key accounts","Conti chiave",,
|
||||
"Last name","Cognome",,
|
||||
"Lead","Piombo",,
|
||||
"Lead Assigned","Cavo assegnato",,
|
||||
"Lead Converted","Piombo convertito",,
|
||||
"Lead Dashboard 1","Cruscotto di piombo 1",,
|
||||
"Lead Db","Piombo Db",,
|
||||
"Lead Db 1","Piombo Db 1",,
|
||||
"Lead converted","Piombo convertito",,
|
||||
"Lead created","Piombo creato",,
|
||||
"Lead filters","Filtri al piombo",,
|
||||
"Lead.address_information","Informazioni sull'indirizzo",,
|
||||
"Lead.company","L'azienda",,
|
||||
"Lead.email","Email eMail",,
|
||||
"Lead.fax","Fax",,
|
||||
"Lead.header","Intestazione",,
|
||||
"Lead.industry","L'industria",,
|
||||
"Lead.lead_owner","Proprietario del cavo",,
|
||||
"Lead.name","Nome",,
|
||||
"Lead.other_address","Altro indirizzo",,
|
||||
"Lead.phone","Telefono",,
|
||||
"Lead.primary_address","Indirizzo primario",,
|
||||
"Lead.source","Fonte",,
|
||||
"Lead.status","Stato",,
|
||||
"Lead.title","Titolo",,
|
||||
"Leads","Piombi",,
|
||||
"Leads Source","Fonte dei conduttori",,
|
||||
"Leads by Country","Piombo per Paese",,
|
||||
"Leads by Salesman by Status","Leader per Venditore per Stato",,
|
||||
"Leads by Source","Piombo per fonte",,
|
||||
"Leads by Team by Status","Conduce per squadra per stato",,
|
||||
"Limit Date","Data limite",,
|
||||
"Lose","Perdere",,
|
||||
"Loss confirmation","Conferma della perdita",,
|
||||
"Lost","Perduto",,
|
||||
"Lost reason","Ragione persa",,
|
||||
"Lost reasons","Ragioni perse",,
|
||||
"Low","Basso",,
|
||||
"MapRest.PinCharLead","L",,
|
||||
"MapRest.PinCharOpportunity","O",,
|
||||
"Marketing","Marketing",,
|
||||
"Meeting","Riunione",,
|
||||
"Meeting Nbr","Riunione Nbr",,
|
||||
"Meeting Nbr.","Incontro con Nbr.",,
|
||||
"Meeting filters","Filtri per riunioni",,
|
||||
"Meeting number historical","Numero di riunione storico",,
|
||||
"Meeting reminder template","Modello di promemoria delle riunioni",,
|
||||
"Meeting's date changed template","Modificato il modello di data della riunione",,
|
||||
"Meeting's guest added template","L'ospite della riunione ha aggiunto il modello",,
|
||||
"Meeting's guest deleted template","Modello cancellato ospite della riunione",,
|
||||
"Meetings","Riunioni",,
|
||||
"Meetings number historical","Numero di riunioni storiche",,
|
||||
"Meetings number target completed (%)","Numero di riunioni obiettivo completato (%)",,
|
||||
"Memo","Memo",,
|
||||
"Minutes","Processo verbale",,
|
||||
"Mo","Mo",,
|
||||
"Mobile N°","Numero di cellulare",,
|
||||
"Mobile phone","Telefono cellulare",,
|
||||
"Month","Mese",,
|
||||
"Monthly","Mensile",,
|
||||
"Months","Mesi",,
|
||||
"My Best Open Deals","I miei migliori affari",,
|
||||
"My CRM events","I miei eventi CRM",,
|
||||
"My Calendar","Il mio calendario",,
|
||||
"My Calls","Le mie chiamate",,
|
||||
"My Closed Opportunities","Le mie opportunità chiuse",,
|
||||
"My Current Leads","I miei conduttori attuali",,
|
||||
"My Key accounts","I miei account chiave",,
|
||||
"My Leads","I miei conduttori",,
|
||||
"My Meetings","I miei incontri",,
|
||||
"My Open Opportunities","Le mie opportunità aperte",,
|
||||
"My Opportunities","Le mie opportunità",,
|
||||
"My Tasks","I miei compiti",,
|
||||
"My Team Best Open Deals","Le migliori offerte aperte della mia squadra",,
|
||||
"My Team Calls","Il mio team chiama",,
|
||||
"My Team Closed Opportunities","La mia squadra ha chiuso le opportunità",,
|
||||
"My Team Key accounts","Il mio team Conti chiave",,
|
||||
"My Team Leads","Il mio team conduce",,
|
||||
"My Team Meetings","Le mie riunioni di squadra",,
|
||||
"My Team Open Opportunities","Il mio team Opportunità aperte",,
|
||||
"My Team Tasks","I miei compiti di squadra",,
|
||||
"My Today Calls","Le mie chiamate di oggi",,
|
||||
"My Today Tasks","I miei compiti di oggi",,
|
||||
"My Upcoming Meetings","I miei prossimi incontri",,
|
||||
"My Upcoming Tasks","I miei prossimi compiti",,
|
||||
"My opportunities","Le mie opportunità",,
|
||||
"My past events","I miei eventi passati",,
|
||||
"My team opportunities","Le opportunità del mio team",,
|
||||
"My upcoming events","I miei prossimi eventi",,
|
||||
"Name","Nome",,
|
||||
"Negotiation","Negoziazione",,
|
||||
"New","Nuovo",,
|
||||
"Next stage","Prossima tappa",,
|
||||
"Next step","Passo successivo",,
|
||||
"No lead import configuration found","Nessuna configurazione di importazione di piombo trovata",,
|
||||
"No template created in CRM configuration for company %s, emails have not been sent","Nessun modello creato in configurazione CRM per la %s aziendale, le email non sono state inviate.",,
|
||||
"Non-participant","Non partecipante",,
|
||||
"None","Nessuna",,
|
||||
"Normal","Normale",,
|
||||
"Not started","Non iniziato",,
|
||||
"Objective","Obiettivo",,
|
||||
"Objective %s is in contradiction with objective's configuration %s","L'obiettivo %s è in contraddizione con la configurazione dell'obiettivo %s",,
|
||||
"Objectives","Obiettivi",,
|
||||
"Objectives Configurations","Obiettivi Configurazioni",,
|
||||
"Objectives Team Db","Obiettivi Team Db",,
|
||||
"Objectives User Db","Obiettivi Utente Db",,
|
||||
"Objectives configurations","Configurazioni degli obiettivi",,
|
||||
"Objectives team Dashboard","Obiettivi team Dashboard",,
|
||||
"Objectives user Dashboard","Obiettivi utente Dashboard",,
|
||||
"Objectives' generation's reporting :","Relazione sulla generazione di obiettivi :",,
|
||||
"Office name","Nome dell'ufficio",,
|
||||
"On going","In corso",,
|
||||
"Open Cases by Agents","Casi aperti da parte di agenti",,
|
||||
"Open Opportunities","Opportunità aperte",,
|
||||
"Operation mode",,,
|
||||
"Opportunities","Opportunità",,
|
||||
"Opportunities By Origin By Stage","Opportunità per origine per fase",,
|
||||
"Opportunities By Sale Stage","Opportunità per fase di vendita",,
|
||||
"Opportunities By Source","Opportunità per fonte",,
|
||||
"Opportunities By Type","Opportunità per tipo",,
|
||||
"Opportunities Db 1","Opportunità Db 1",,
|
||||
"Opportunities Db 2","Opportunità Db 2",,
|
||||
"Opportunities Db 3","Opportunità Db 3",,
|
||||
"Opportunities Won By Lead Source","Opportunità vinte dalla fonte principale",,
|
||||
"Opportunities Won By Partner","Opportunità vinte dai partner",,
|
||||
"Opportunities Won By Salesman","Opportunità vinte dai venditori",,
|
||||
"Opportunities amount won historical","Opportunità importo vinto storico",,
|
||||
"Opportunities amount won target competed (%)","Opportunità quantità di opportunità vinte target gareggiato (%)",,
|
||||
"Opportunities amount won target completed (%)","Opportunità importo obiettivo vinto completato (%)",,
|
||||
"Opportunities created number historical","Opportunità create numero storico",,
|
||||
"Opportunities created number target completed (%)","Opportunità create numero target completato (%)",,
|
||||
"Opportunities created won historical","Opportunità create vinte storiche",,
|
||||
"Opportunities created won target completed (%)","Opportunità create, obiettivo vinto completato (%)",,
|
||||
"Opportunities filters","Filtri di opportunità",,
|
||||
"Opportunity","Opportunità",,
|
||||
"Opportunity Type","Tipo di opportunità",,
|
||||
"Opportunity created","Opportunità creata",,
|
||||
"Opportunity lost","Opportunità persa",,
|
||||
"Opportunity type","Tipo di opportunità",,
|
||||
"Opportunity types","Tipi di opportunità",,
|
||||
"Opportunity won","Opportunità vinta",,
|
||||
"Optional participant","Partecipante facoltativo",,
|
||||
"Order by state","Ordine per stato",,
|
||||
"Organization","Organizzazione",,
|
||||
"Outgoing","In uscita",,
|
||||
"Parent event","Evento dei genitori",,
|
||||
"Parent lead is missing.","Il cavo genitore è scomparso.",,
|
||||
"Partner","Partner",,
|
||||
"Partner Details","Dettagli partner",,
|
||||
"Pending","In attesa",,
|
||||
"Period type","Tipo di periodo",,
|
||||
"Periodicity must be greater than 0","La periodicità deve essere superiore allo 0",,
|
||||
"Picture","Immagine",,
|
||||
"Pipeline","Conduttura",,
|
||||
"Pipeline by Stage and Type","Pipeline per fase e tipo",,
|
||||
"Pipeline next 90 days","Pipeline prossimi 90 giorni",,
|
||||
"Planned","Pianificato",,
|
||||
"Please configure all templates in CRM configuration for company %s","Si prega di configurare tutti i modelli in configurazione CRM per l'azienda %s",,
|
||||
"Please configure informations for CRM for company %s","Si prega di configurare le informazioni per il CRM per l'azienda %s",,
|
||||
"Please save the event before setting the recurrence","Si prega di salvare l'evento prima di impostare la ricorrenza",,
|
||||
"Please select a lead",,,
|
||||
"Please select the Lead(s) to print.","Selezionare l'elettrocatetere da stampare.",,
|
||||
"Postal code","Codice di avviamento postale",,
|
||||
"Present","Presente",,
|
||||
"Previous stage","Tappa precedente",,
|
||||
"Previous step","Passo precedente",,
|
||||
"Primary address","Indirizzo principale",,
|
||||
"Print","Stampa",,
|
||||
"Priority","Priorità",,
|
||||
"Probability (%)","Probabilità (%)",,
|
||||
"Proposition","La proposta",,
|
||||
"Qualification","Qualificazioni",,
|
||||
"Realized","Realizzato",,
|
||||
"Recent lost deals","Offerte perse di recente",,
|
||||
"Recently created opportunities","Opportunità create di recente",,
|
||||
"Recurrence","Ricorrenza",,
|
||||
"Recurrence assistant","Assistente di ricorrenza",,
|
||||
"Recurrence configuration","Configurazione di ricorrenza",,
|
||||
"Recurrence name","Nome di ricorrenza",,
|
||||
"Recurrent","Ricorrenti",,
|
||||
"Recycle","Riciclare",,
|
||||
"Recycled","Riciclato",,
|
||||
"Reference","Riferimento",,
|
||||
"References","Riferimenti",,
|
||||
"Referred by","Riferito da",,
|
||||
"Region","Regione",,
|
||||
"Rejection of calls","Rifiuto delle chiamate",,
|
||||
"Rejection of e-mails","Rifiuto di e-mail",,
|
||||
"Related to","Relativo a",,
|
||||
"Related to select","Relativo alla selezione",,
|
||||
"Reminded","Ricordato",,
|
||||
"Reminder",,,
|
||||
"Reminder Templates","Modelli di promemoria",,
|
||||
"Reminder(s) treated","Promemoria trattati",,
|
||||
"Reminders","Promemoria",,
|
||||
"Repeat every","Ripetere ogni",,
|
||||
"Repeat every:","Ripetere ogni volta:",,
|
||||
"Repeat the:","Ripetere l'operazione:",,
|
||||
"Repetitions number","Numero di ripetizioni",,
|
||||
"Reported","Segnalato",,
|
||||
"Reportings","Rapporti",,
|
||||
"Reports","Rapporti",,
|
||||
"Required participant","Partecipante richiesto",,
|
||||
"Sa","Sa",,
|
||||
"Sale quotations/orders","Preventivi di vendita/ordini",,
|
||||
"Sales Stage","Fase di vendita",,
|
||||
"Sales orders amount won historical","Importo degli ordini di vendita vinti storico",,
|
||||
"Sales orders amount won target completed (%)","Importo degli ordini di vendita vinti obiettivo raggiunto (%)",,
|
||||
"Sales orders created number historical","Ordini di vendita creati numero storico",,
|
||||
"Sales orders created number target completed (%)","Ordini di vendita creati numero target completato (%)",,
|
||||
"Sales orders created won historical","Gli ordini di vendita creati hanno vinto storico",,
|
||||
"Sales orders created won target completed","Gli ordini di vendita creati hanno vinto il target completato",,
|
||||
"Sales orders created won target completed (%)","Gli ordini di vendita creati hanno vinto il target completato (%)",,
|
||||
"Sales stage","Fase di vendita",,
|
||||
"Salesman","Venditore",,
|
||||
"Schedule Event","Pianificare l'evento",,
|
||||
"Schedule Event (${ fullName })","Pianificare l'evento (${ fullName })",,
|
||||
"Schedule Event(${ fullName})","Pianificare l'evento (${ nome completo})",,
|
||||
"Select Contact","Seleziona contatto",,
|
||||
"Select Partner","Seleziona partner",,
|
||||
"Select existing contact","Selezionare il contatto esistente",,
|
||||
"Select existing partner","Seleziona un partner esistente",,
|
||||
"Send Email","Invia e-mail",,
|
||||
"Send email","Invia e-mail",,
|
||||
"Sending date",,,
|
||||
"Settings","Impostazioni",,
|
||||
"Show Partner","Mostra partner",,
|
||||
"Show all events","Mostra tutti gli eventi",,
|
||||
"Some user groups",,,
|
||||
"Source","Fonte",,
|
||||
"Source description","Descrizione della fonte",,
|
||||
"Start","Inizio",,
|
||||
"Start date","Data d'inizio",,
|
||||
"State","Stato",,
|
||||
"Status","Stato",,
|
||||
"Status description","Descrizione dello stato",,
|
||||
"Su","Su",,
|
||||
"Take charge","Prendere in carico",,
|
||||
"Target","Obiettivo",,
|
||||
"Target User Dashboard","Dashboard utente di destinazione",,
|
||||
"Target batch","Lotto di destinazione",,
|
||||
"Target configuration","Configurazione del target",,
|
||||
"Target configurations","Configurazioni di destinazione",,
|
||||
"Target page","Pagina di destinazione",,
|
||||
"Target team Dashboard","Cruscotto della squadra di destinazione",,
|
||||
"Target vs Real","Obiettivo vs reale",,
|
||||
"Targets configurations","Configurazioni degli obiettivi",,
|
||||
"Task","Compito",,
|
||||
"Task reminder template","Modello di promemoria delle attività",,
|
||||
"Tasks","Compiti",,
|
||||
"Tasks filters","Compiti filtri",,
|
||||
"Team","Squadra",,
|
||||
"Th","Th",,
|
||||
"The end date must be after the start date","La data di fine deve essere successiva alla data di inizio.",,
|
||||
"The number of repetitions must be greater than 0","Il numero di ripetizioni deve essere maggiore di 0",,
|
||||
"Title","Titolo",,
|
||||
"To Date","Fino ad oggi",,
|
||||
"Tools","Strumenti",,
|
||||
"Trading name","Nome commerciale",,
|
||||
"Treated objectives reporting","Segnalazione degli obiettivi trattati",,
|
||||
"Tu","Tu",,
|
||||
"Type","Tipo",,
|
||||
"Type of need",,,
|
||||
"UID (Calendar)","UID (Calendario)",,
|
||||
"Unassigned Leads","Piombi non assegnati",,
|
||||
"Unassigned Opportunities","Opportunità non assegnate",,
|
||||
"Unassigned opportunities","Opportunità non assegnate",,
|
||||
"Upcoming events","Prossimi eventi",,
|
||||
"Urgent","Urgente",,
|
||||
"User","Utente",,
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured.",,,
|
||||
"User %s must have an active company to use templates","Gli utenti %s devono avere un'azienda attiva per utilizzare i modelli",,
|
||||
"Validate","Convalida",,
|
||||
"We","Noi",,
|
||||
"Website","Sito web",,
|
||||
"Weekly","Settimanale",,
|
||||
"Weeks","Settimane",,
|
||||
"Win","Vincere",,
|
||||
"Worst case","Caso peggiore",,
|
||||
"Years","Anni",,
|
||||
"You don't have the rights to delete this event","Non hai il diritto di cancellare questo evento",,
|
||||
"You must choose a recurrence type","È necessario scegliere un tipo di ricorrenza",,
|
||||
"You must choose at least one day in the week","È necessario scegliere almeno un giorno della settimana",,
|
||||
"amount","importo",,
|
||||
"com.axelor.apps.crm.job.EventReminderJob","com.axelor.apps.crm.lavoro.eventoReminderJob",,
|
||||
"com.axelor.apps.crm.service.batch.CrmBatchService","com.axelor.apps.crm.service.batch.CrmBatchService.",,
|
||||
"crm.New","Nuovo",,
|
||||
"date","dattero",,
|
||||
"every week's day","ogni giorno della settimana",,
|
||||
"everyday","quotidiane",,
|
||||
"fri,","Fri,",,
|
||||
"http://www.url.com","http://www.url.com",,
|
||||
"important","importante",,
|
||||
"mon,","Lun.",,
|
||||
"on","in funzione",,
|
||||
"portal.daily.team.calls.summary.by.user","portale chiamate di gruppo giornaliere di riepilogo delle chiamate di gruppo da parte dell'utente",,
|
||||
"sat,","Seduto.",,
|
||||
"success","riuscita",,
|
||||
"sun,","sole.",,
|
||||
"thur,","thur,",,
|
||||
"tues,","Marte.",,
|
||||
"until the","fino a quando il",,
|
||||
"value:CRM","valore:CRM",,
|
||||
"warning","ammonimento",,
|
||||
"wed,","Sposarsi.",,
|
||||
"whatever@example.com","whatever@example.com",,
|
||||
"www.url.com","www.url.com",,
|
||||
|
@ -0,0 +1,521 @@
|
||||
"key","message","comment","context"
|
||||
"%d times","%d tijden",,
|
||||
"+33000000000",,,
|
||||
"+33100000000",,,
|
||||
"<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />","<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />",,
|
||||
"<a class='fa fa-google' href='http://www.google.com' target='_blank' />","<a class='fa fa-google' href='http://www.google.com' target='_blank' />",,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />","<a class='fa-twitter' href='http://www.twitter.com' target='_blank' />",,
|
||||
"<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />","<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />",,
|
||||
"<span class='label label-warning'>The selected date is in the past.</span>",,,
|
||||
"<span class='label label-warning'>There is already a lead with this name.</span>","<span class='label labelwaarschuwing'>Er is al een voorsprong met deze naam.</span>",,
|
||||
"<span style=""height:21px; line-height: 21px; margin-top:18px; display:inline-block"">VS</span>",,,
|
||||
"A lost reason must be selected","Er moet een verloren reden worden gekozen",,
|
||||
"Action","Actie",,
|
||||
"Activities","Activiteiten",,
|
||||
"Add","Toevoegen",,
|
||||
"Add a guest","Een gast toevoegen",,
|
||||
"Address","Adres",,
|
||||
"After n repetitions","Na n herhalingen",,
|
||||
"All past events","Alle evenementen uit het verleden",,
|
||||
"All upcoming events","Alle komende evenementen",,
|
||||
"All users",,,
|
||||
"Amount","Bedrag",,
|
||||
"Amount Won","Gewonnen bedrag",,
|
||||
"Amount won","Gewonnen bedrag",,
|
||||
"App Crm","App Crm",,
|
||||
"Apply changes to all recurrence's events","Pas wijzigingen toe op alle gebeurtenissen die zich opnieuw voordoen",,
|
||||
"Apply changes to this event only","Pas alleen wijzigingen toe op dit evenement",,
|
||||
"Apply modifications","Pas wijzigingen toe",,
|
||||
"Apply modifications for all","Pas wijzigingen toe voor alle",,
|
||||
"Are you sure you want to convert the lead?","Weet u zeker dat u de lead wilt converteren?",,
|
||||
"Assign to","Toewijzen aan",,
|
||||
"Assign to me","Aan mij toewijzen",,
|
||||
"Assignable Users",,,
|
||||
"Assigned","Toegewezen",,
|
||||
"Assigned to","Toegewezen aan",,
|
||||
"At specific date",,,
|
||||
"At the date","Op de datum",,
|
||||
"Attendee","Deelnemer",,
|
||||
"Available","Beschikbaar",,
|
||||
"Average duration between lead and first opportunity (days)",,,
|
||||
"Batchs","Partijen",,
|
||||
"Before start date",,,
|
||||
"Best Open Deals","Beste open deals",,
|
||||
"Best case","Beste geval",,
|
||||
"Busy","Bezig",,
|
||||
"CRM","CRM",,
|
||||
"CRM Activities","CRM-activiteiten",,
|
||||
"CRM Batch","CRM-batch",,
|
||||
"CRM batches","CRM-batches",,
|
||||
"CRM config","CRM-configuratie",,
|
||||
"CRM config (${ name })","CRM-configuratie (${naam })",,
|
||||
"CRM configuration","CRM-configuratie",,
|
||||
"CRM configurations","CRM-configuraties",,
|
||||
"CRM events","CRM-evenementen",,
|
||||
"Call","Oproep",,
|
||||
"Call emitted Nbr","Oproep uitgezonden Nbr",,
|
||||
"Call emitted Nbr.","Oproep uitgezonden Nbr.",,
|
||||
"Call emitted historical","Uitgezonden oproep historisch",,
|
||||
"Call filters","Oproepfilters",,
|
||||
"Call reminder template","De sjabloon van de vraagherinnering",,
|
||||
"Call type","Type oproep",,
|
||||
"Calls","Gesprekken",,
|
||||
"Calls Dashboard","Oproepen Dashboard",,
|
||||
"Calls Db","Gesprekken Db",,
|
||||
"Calls by team by user","Gesprekken per team per gebruiker",,
|
||||
"Calls by user(of a team)","Oproepen door de gebruiker (van een team)",,
|
||||
"Calls emitted historical","Uitgezonden oproepen historisch",,
|
||||
"Calls emitted target completed (%)","Uitgezonden uitnodigingen doelstelling voltooid (%)",,
|
||||
"Calls held by team by type","Gesprekken per team per type",,
|
||||
"Calls held by type by user","Gesprekken per type per gebruiker",,
|
||||
"Calls type by team","Gesprekken per team",,
|
||||
"Calls type by user","Gesprekken van type per gebruiker",,
|
||||
"Cancel this reminder",,,
|
||||
"Canceled","Geannuleerd",,
|
||||
"Cases","Gevallen",,
|
||||
"Category","Categorie",,
|
||||
"Characteristics","Kenmerken",,
|
||||
"Chart","Grafiek",,
|
||||
"Check duplicate","Controleer duplicaat",,
|
||||
"City","Stad",,
|
||||
"Civility","Beleefdheid",,
|
||||
"Closed Opportunities","Gesloten Kansen",,
|
||||
"Closed lost","Gesloten verloren",,
|
||||
"Closed won","Gesloten gewonnen",,
|
||||
"Code","Code",,
|
||||
"Company","Bedrijf",,
|
||||
"Configuration","Configuratie",,
|
||||
"Confirm lost reason","Verloren reden bevestigen",,
|
||||
"Contact","Contact",,
|
||||
"Contact date","Datum contact",,
|
||||
"Contact details","Contactgegevens",,
|
||||
"Contact name","Naam contactpersoon",,
|
||||
"Contacts","Contacten",,
|
||||
"Convert","Omzetten",,
|
||||
"Convert lead","Lood omzetten",,
|
||||
"Convert lead (${ fullName })","Lood omzetten (${volledige naam })",,
|
||||
"Convert lead into contact",,,
|
||||
"Convert lead into partner",,,
|
||||
"Converted","Omgezet",,
|
||||
"Country","Land",,
|
||||
"Create a new reminder",,,
|
||||
"Create a quotation",,,
|
||||
"Create event","Creëer een evenement",,
|
||||
"Create new contact","Creëer nieuwe contactpersonen",,
|
||||
"Create new partner","Nieuwe partner aanmaken",,
|
||||
"Create opportunity","Creëer een kans",,
|
||||
"Create opportunity (${ fullName })","Mogelijkheid creëren (${volledige naam })",,
|
||||
"Create order (${ fullName })","Bestelling maken (${volledige naam })",,
|
||||
"Create purchase quotation",,,
|
||||
"Create sale quotation",,,
|
||||
"Created Nbr","Gemaakt Nbr",,
|
||||
"Created Nbr.","Gemaakt Nbr.",,
|
||||
"Created Won","Gemaakt Won",,
|
||||
"Created by","Gemaakt door",,
|
||||
"Created leads by industry sector","Leiderschap gecreëerd door de industriesector",,
|
||||
"Created leads per month","Gemaakte afleidingen per maand",,
|
||||
"Created leads with at least one opportunity",,,
|
||||
"Created on","Gemaakt op",,
|
||||
"Crm batch","Crm-batch",,
|
||||
"Currency","Valuta",,
|
||||
"Customer","Klant",,
|
||||
"Customer Description",,,
|
||||
"Customer fixed phone","Vaste telefoon",,
|
||||
"Customer mobile phone","Mobiele telefoon van de klant",,
|
||||
"Customer name","Naam van de klant",,
|
||||
"Customer recovery",,,
|
||||
"Customers","Klanten",,
|
||||
"Daily","Dagelijks",,
|
||||
"Daily team call summary by user","Dagelijkse samenvatting van het teamgesprek per gebruiker",,
|
||||
"Dashboard","Dashboard",,
|
||||
"Date from","Datum van",,
|
||||
"Date to","Datum tot",,
|
||||
"Day of month","Dag van de maand",,
|
||||
"Day of week","Dag van de week",,
|
||||
"Days","dagen",,
|
||||
"Delete all events","Alle gebeurtenissen verwijderen",,
|
||||
"Delete only this event","Alleen deze gebeurtenis verwijderen",,
|
||||
"Delete this and next events","Verwijder deze en volgende gebeurtenissen",,
|
||||
"Delivery Address","Leveringsadres",,
|
||||
"Dep./Div.","Dep./Div.",,
|
||||
"Description","Beschrijving",,
|
||||
"Display customer description in opportunity",,,
|
||||
"Duration","Duur",,
|
||||
"Duration type","Soort duur",,
|
||||
"Email","E-mail",,
|
||||
"Emails","E-mails",,
|
||||
"End","Einde",,
|
||||
"End date","Einddatum",,
|
||||
"Enterprise","Onderneming",,
|
||||
"Enterprise name","Naam van de onderneming",,
|
||||
"Error in lead conversion","Fout in de loodconversie",,
|
||||
"Estimated budget","Geschatte begroting",,
|
||||
"Event","Evenement",,
|
||||
"Event Categories","Evenement Categorieën",,
|
||||
"Event Dashboard 1","Evenement Dashboard 1",,
|
||||
"Event Db","Evenement Db",,
|
||||
"Event categories","Evenement categorieën",,
|
||||
"Event category","Categorie evenement",,
|
||||
"Event configuration categories","Categorieën voor de configuratie van evenementen",,
|
||||
"Event filters","Evenement filters",,
|
||||
"Event reminder","Evenement herinnering",,
|
||||
"Event reminder %s","Gebeurtenis herinnering %s",,
|
||||
"Event reminder batch","Gebeurtenisherinnering batch",,
|
||||
"Event reminder page","Evenement herinnering pagina",,
|
||||
"Event reminder template",,,
|
||||
"Event reminders","Evenement herinneringen",,
|
||||
"Event's reminder's generation's reporting :","De rapportages van de generatie van de herinneringen van het evenement:",,
|
||||
"Events","Evenementen",,
|
||||
"Every %d days","Elke %d dagen",,
|
||||
"Every %d months the %d","Elke %d maanden de %d",,
|
||||
"Every %d weeks","Elke %d weken",,
|
||||
"Every %d years the %s","Elke %d jaar de %s",,
|
||||
"Every day","Elke dag",,
|
||||
"Every month","Elke maand",,
|
||||
"Every month the","Elke maand wordt de",,
|
||||
"Every week","Elke week",,
|
||||
"Every year","Elk jaar",,
|
||||
"Every year the","Elk jaar wordt de",,
|
||||
"Expected close date","Verwachte sluitingsdatum",,
|
||||
"Fax","Fax",,
|
||||
"Finished","Afgewerkt",,
|
||||
"First name","Voornaam",,
|
||||
"Fixed Phone","Vaste telefoon",,
|
||||
"Fixed phone","Vaste telefoon",,
|
||||
"Follow up","Follow-up",,
|
||||
"Follow-up","Follow-up",,
|
||||
"For all","Voor iedereen",,
|
||||
"For me","Voor mij",,
|
||||
"Fr","Fr",,
|
||||
"Free text",,,
|
||||
"From Date","Vanaf datum",,
|
||||
"From date must be less than the to date","Vanaf de datum moet kleiner zijn dan de tot op heden",,
|
||||
"Function","Functie",,
|
||||
"General contact details","Algemene contactgegevens",,
|
||||
"Generate CRM configurations","CRM-configuraties genereren",,
|
||||
"Generate Project","Genereer Project",,
|
||||
"Groups Assignable",,,
|
||||
"Guests","Gasten",,
|
||||
"High","Hoog",,
|
||||
"Historical Period","Historische periode",,
|
||||
"Historical events completed","Historische gebeurtenissen voltooid",,
|
||||
"Hours","Uren",,
|
||||
"Import lead","Lood importeren",,
|
||||
"Import leads","Importeren van leads",,
|
||||
"In process","Aan de gang",,
|
||||
"Incoming","Inkomende",,
|
||||
"Industry Sector","Industriesector",,
|
||||
"Industry sector","Industrie",,
|
||||
"Information","Informatie",,
|
||||
"Informations","Informatie",,
|
||||
"Input location please","Invoerlocatie a.u.b.",,
|
||||
"Invoicing Address","Facturatie Adres",,
|
||||
"Job Title","Functieomschrijving",,
|
||||
"Key accounts","Sleutelrekeningen",,
|
||||
"Last name","Achternaam",,
|
||||
"Lead","Lood",,
|
||||
"Lead Assigned","Toegewezen lood",,
|
||||
"Lead Converted","Lood geconverteerd",,
|
||||
"Lead Dashboard 1","Lood Dashboard 1",,
|
||||
"Lead Db","Lood Db",,
|
||||
"Lead Db 1","Lood Db 1",,
|
||||
"Lead converted","Lood omgezet",,
|
||||
"Lead created","Lood gemaakt",,
|
||||
"Lead filters","Loodfilters",,
|
||||
"Lead.address_information","Adres Informatie",,
|
||||
"Lead.company","Bedrijf",,
|
||||
"Lead.email","E-mail",,
|
||||
"Lead.fax","Fax",,
|
||||
"Lead.header","Kopbal",,
|
||||
"Lead.industry","Industrie",,
|
||||
"Lead.lead_owner","Hoofdeigenaar",,
|
||||
"Lead.name","Naam",,
|
||||
"Lead.other_address","Ander adres",,
|
||||
"Lead.phone","Telefoon",,
|
||||
"Lead.primary_address","Primair adres",,
|
||||
"Lead.source","Bron",,
|
||||
"Lead.status","Status",,
|
||||
"Lead.title","Titel",,
|
||||
"Leads","Leads",,
|
||||
"Leads Source","Leads Bron",,
|
||||
"Leads by Country","Leads per land",,
|
||||
"Leads by Salesman by Status","Leidt door verkoper naar status",,
|
||||
"Leads by Source","Leads per bron",,
|
||||
"Leads by Team by Status","Leidt per team per status",,
|
||||
"Limit Date","Limiet Datum",,
|
||||
"Lose","Verlies",,
|
||||
"Loss confirmation","Verlies bevestiging",,
|
||||
"Lost","Verloren",,
|
||||
"Lost reason","Verloren reden",,
|
||||
"Lost reasons","Verloren redenen",,
|
||||
"Low","Laag",,
|
||||
"MapRest.PinCharLead","L",,
|
||||
"MapRest.PinCharOpportunity","O",,
|
||||
"Marketing","Marketing",,
|
||||
"Meeting","Vergadering",,
|
||||
"Meeting Nbr","Vergadering Nbr",,
|
||||
"Meeting Nbr.","Vergadering Nbr.",,
|
||||
"Meeting filters","Vergadering filters",,
|
||||
"Meeting number historical","Vergaderingsnummer historisch",,
|
||||
"Meeting reminder template","Template voor de herinnering aan de vergadering",,
|
||||
"Meeting's date changed template","Datum vergadering gewijzigd sjabloon",,
|
||||
"Meeting's guest added template","Gast toegevoegd sjabloon voor de vergadering",,
|
||||
"Meeting's guest deleted template","Gasten van de vergadering verwijderd sjabloon",,
|
||||
"Meetings","Vergaderingen",,
|
||||
"Meetings number historical","Vergaderingen aantal historische",,
|
||||
"Meetings number target completed (%)","Voldoen aan aantal voltooide doelstellingen (%)",,
|
||||
"Memo","Memo",,
|
||||
"Minutes","Notulen",,
|
||||
"Mo","Mo",,
|
||||
"Mobile N°","Mobiel nr.",,
|
||||
"Mobile phone","Mobiele telefoon",,
|
||||
"Month","Maand",,
|
||||
"Monthly","Maandelijks",,
|
||||
"Months","Maanden",,
|
||||
"My Best Open Deals","Mijn beste open deals",,
|
||||
"My CRM events","Mijn CRM-evenementen",,
|
||||
"My Calendar","Mijn kalender",,
|
||||
"My Calls","Mijn gesprekken",,
|
||||
"My Closed Opportunities","Mijn Gesloten Kansen",,
|
||||
"My Current Leads","Mijn huidige leads",,
|
||||
"My Key accounts","Mijn key accounts",,
|
||||
"My Leads","Mijn Leads",,
|
||||
"My Meetings","Mijn vergaderingen",,
|
||||
"My Open Opportunities","Mijn open mogelijkheden",,
|
||||
"My Opportunities","Mijn mogelijkheden",,
|
||||
"My Tasks","Mijn taken",,
|
||||
"My Team Best Open Deals","Mijn team beste open deals",,
|
||||
"My Team Calls","Mijn teamgesprekken",,
|
||||
"My Team Closed Opportunities","Mijn team heeft kansen gesloten",,
|
||||
"My Team Key accounts","Mijn Team Sleutelaccounts",,
|
||||
"My Team Leads","Mijn team leidt",,
|
||||
"My Team Meetings","Mijn teamvergaderingen",,
|
||||
"My Team Open Opportunities","Mijn Team Open Mogelijkheden",,
|
||||
"My Team Tasks","Mijn team taken",,
|
||||
"My Today Calls","Mijn huidige gesprekken",,
|
||||
"My Today Tasks","Mijn taken van vandaag",,
|
||||
"My Upcoming Meetings","Mijn komende vergaderingen",,
|
||||
"My Upcoming Tasks","Mijn komende taken",,
|
||||
"My opportunities","Mijn mogelijkheden",,
|
||||
"My past events","Mijn voorbije evenementen",,
|
||||
"My team opportunities","Mijn teamkansen",,
|
||||
"My upcoming events","Mijn komende evenementen",,
|
||||
"Name","Naam",,
|
||||
"Negotiation","Onderhandelingen",,
|
||||
"New","Nieuw",,
|
||||
"Next stage","Volgende stap",,
|
||||
"Next step","Volgende stap",,
|
||||
"No lead import configuration found","Geen loodimportconfiguratie gevonden",,
|
||||
"No template created in CRM configuration for company %s, emails have not been sent","Geen sjabloon gemaakt in CRM-configuratie voor bedrijf %s, e-mails zijn niet verzonden.",,
|
||||
"Non-participant","Niet-deelnemer",,
|
||||
"None","Geen",,
|
||||
"Normal","Normaal",,
|
||||
"Not started","Niet gestart",,
|
||||
"Objective","Doel",,
|
||||
"Objective %s is in contradiction with objective's configuration %s","Doelstelling %s is in tegenspraak met de configuratie van de doelstelling %s",,
|
||||
"Objectives","Doelstellingen",,
|
||||
"Objectives Configurations","Doelstellingen Configuraties",,
|
||||
"Objectives Team Db","Doelstellingen Team Db",,
|
||||
"Objectives User Db","Doelstellingen Gebruiker Db",,
|
||||
"Objectives configurations","Objectieven configuraties",,
|
||||
"Objectives team Dashboard","Doelstellingen team Dashboard",,
|
||||
"Objectives user Dashboard","Doelstellingen gebruiker Dashboard",,
|
||||
"Objectives' generation's reporting :","Verslaglegging over de generatie van doelstellingen :",,
|
||||
"Office name","Naam van het kantoor",,
|
||||
"On going","Aan de gang",,
|
||||
"Open Cases by Agents","Openstaande zaken door agenten",,
|
||||
"Open Opportunities","Open Mogelijkheden",,
|
||||
"Operation mode",,,
|
||||
"Opportunities","Mogelijkheden",,
|
||||
"Opportunities By Origin By Stage","Mogelijkheden naar herkomst per stadium",,
|
||||
"Opportunities By Sale Stage","Mogelijkheden per verkoopstadium",,
|
||||
"Opportunities By Source","Kansen per bron",,
|
||||
"Opportunities By Type","Mogelijkheden per type",,
|
||||
"Opportunities Db 1","Mogelijkheden Db 1",,
|
||||
"Opportunities Db 2","Mogelijkheden Db 2",,
|
||||
"Opportunities Db 3","Mogelijkheden Db 3",,
|
||||
"Opportunities Won By Lead Source","Kansen gewonnen door Lead Source",,
|
||||
"Opportunities Won By Partner","Kansen gewonnen door partner",,
|
||||
"Opportunities Won By Salesman","Kansen gewonnen door verkoper",,
|
||||
"Opportunities amount won historical","Kansen bedrag gewonnen historisch",,
|
||||
"Opportunities amount won target competed (%)","Kansen bedrag van het gewonnen doelwit (%)",,
|
||||
"Opportunities amount won target completed (%)","Gegarandeerde kansen bedrag van de gewonnen doelstelling (%)",,
|
||||
"Opportunities created number historical","Kansen gecreëerd aantal historische",,
|
||||
"Opportunities created number target completed (%)","Aantal gecreëerde kansen aantal doelstelling voltooid (%)",,
|
||||
"Opportunities created won historical","Geopportuniteiten gecreëerd gewonnen historische kansen",,
|
||||
"Opportunities created won target completed (%)","Gemaakte kansen gecreëerd gewonnen doel (in %)",,
|
||||
"Opportunities filters","Kansen filters",,
|
||||
"Opportunity","Mogelijkheid",,
|
||||
"Opportunity Type","Kans Type",,
|
||||
"Opportunity created","Kans gecreëerd",,
|
||||
"Opportunity lost","Gederfde kans",,
|
||||
"Opportunity type","Kans type",,
|
||||
"Opportunity types","Opportuniteitstypes",,
|
||||
"Opportunity won","Geselecteerde kans",,
|
||||
"Optional participant","Optionele deelnemer",,
|
||||
"Order by state","Volgorde per staat",,
|
||||
"Organization","Organisatie",,
|
||||
"Outgoing","Uitgaand",,
|
||||
"Parent event","Ouderevenement",,
|
||||
"Parent lead is missing.","Ouderlijk lood ontbreekt.",,
|
||||
"Partner","Partner",,
|
||||
"Partner Details","Partner details",,
|
||||
"Pending","In afwachting van",,
|
||||
"Period type","Type periode",,
|
||||
"Periodicity must be greater than 0","De periodiciteit moet groter zijn dan 0",,
|
||||
"Picture","Afbeelding",,
|
||||
"Pipeline","Pijpleiding",,
|
||||
"Pipeline by Stage and Type","Pijpleiding per stadium en type",,
|
||||
"Pipeline next 90 days","Pijpleiding volgende 90 dagen",,
|
||||
"Planned","Gepland",,
|
||||
"Please configure all templates in CRM configuration for company %s","Configureer alle sjablonen in CRM-configuratie voor bedrijf %s",,
|
||||
"Please configure informations for CRM for company %s","Configureer informatie voor CRM voor bedrijf %s",,
|
||||
"Please save the event before setting the recurrence","Sla de gebeurtenis op voordat u de herhaling instelt",,
|
||||
"Please select a lead",,,
|
||||
"Please select the Lead(s) to print.","Selecteer de afleiding(en) om af te drukken.",,
|
||||
"Postal code","Postcode",,
|
||||
"Present","Aanwezig",,
|
||||
"Previous stage","Vorige fase",,
|
||||
"Previous step","Vorige stap",,
|
||||
"Primary address","Primair adres",,
|
||||
"Print","Afdrukken",,
|
||||
"Priority","Prioriteit",,
|
||||
"Probability (%)","Waarschijnlijkheid (%)",,
|
||||
"Proposition","Stelling",,
|
||||
"Qualification","Kwalificatie",,
|
||||
"Realized","Gerealiseerd",,
|
||||
"Recent lost deals","Recente verloren deals",,
|
||||
"Recently created opportunities","Onlangs gecreëerde mogelijkheden",,
|
||||
"Recurrence","Herhaling",,
|
||||
"Recurrence assistant","Assistent voor herhaling",,
|
||||
"Recurrence configuration","Herhaling configuratie",,
|
||||
"Recurrence name","Naam van de herhaling",,
|
||||
"Recurrent","Terugkerend",,
|
||||
"Recycle","Recyclen",,
|
||||
"Recycled","Gerecycleerd",,
|
||||
"Reference","Referentie",,
|
||||
"References","Referenties",,
|
||||
"Referred by","Verwezen door",,
|
||||
"Region","Regio",,
|
||||
"Rejection of calls","Afwijzing van oproepen",,
|
||||
"Rejection of e-mails","Afwijzing van e-mails",,
|
||||
"Related to","Met betrekking tot",,
|
||||
"Related to select","Gerelateerd aan de selectie",,
|
||||
"Reminded","Herinnerd",,
|
||||
"Reminder",,,
|
||||
"Reminder Templates","Herinneringssjablonen",,
|
||||
"Reminder(s) treated","Behandelde herinnering(en)",,
|
||||
"Reminders","Herinneringen",,
|
||||
"Repeat every","Herhaal elke",,
|
||||
"Repeat every:","Herhaal elke keer:",,
|
||||
"Repeat the:","Herhaal dit:",,
|
||||
"Repetitions number","Herhaling nummer",,
|
||||
"Reported","Gerapporteerd",,
|
||||
"Reportings","Meldingen",,
|
||||
"Reports","Rapporten",,
|
||||
"Required participant","Vereiste deelnemer",,
|
||||
"Sa","Sa",,
|
||||
"Sale quotations/orders","Verkoopoffertes/bestellingen",,
|
||||
"Sales Stage","Verkoopstadium",,
|
||||
"Sales orders amount won historical","Verkoopt bedrag van de verkooporders in het verleden",,
|
||||
"Sales orders amount won target completed (%)","Verkooporders bedrag van de gewonnen target voltooid (%)",,
|
||||
"Sales orders created number historical","Verkooporders aangemaakt aantal historische nummers",,
|
||||
"Sales orders created number target completed (%)","Verkooporders aangemaakt aantal voltooide verkooporders (%)",,
|
||||
"Sales orders created won historical","Aangemaakte verkooporders gewonnen historische orders",,
|
||||
"Sales orders created won target completed","Verkooporders gemaakt gewonnen target afgerond",,
|
||||
"Sales orders created won target completed (%)","Verkooporders aangemaakt gewonnen target voltooid (%)",,
|
||||
"Sales stage","Verkoopstadium",,
|
||||
"Salesman","Verkoper",,
|
||||
"Schedule Event","Evenement plannen",,
|
||||
"Schedule Event (${ fullName })","Evenement plannen (${volledige naam })",,
|
||||
"Schedule Event(${ fullName})","Plan een evenement (${volledige naam})",,
|
||||
"Select Contact","Selecteer contactpersoon",,
|
||||
"Select Partner","Selecteer partner",,
|
||||
"Select existing contact","Selecteer een bestaand contactpersoon",,
|
||||
"Select existing partner","Selecteer bestaande partner",,
|
||||
"Send Email","Verstuur e-mail",,
|
||||
"Send email","Verstuur e-mail",,
|
||||
"Sending date",,,
|
||||
"Settings","Instellingen",,
|
||||
"Show Partner","Toon partner",,
|
||||
"Show all events","Toon alle evenementen",,
|
||||
"Some user groups",,,
|
||||
"Source","Bron",,
|
||||
"Source description","Bron beschrijving",,
|
||||
"Start","Begin",,
|
||||
"Start date","Startdatum",,
|
||||
"State","Staat",,
|
||||
"Status","Status",,
|
||||
"Status description","Status beschrijving",,
|
||||
"Su","Su",,
|
||||
"Take charge","Neem de leiding",,
|
||||
"Target","Doel",,
|
||||
"Target User Dashboard","Doelgebruiker Dashboard",,
|
||||
"Target batch","Doelgroep",,
|
||||
"Target configuration","Doelconfiguratie",,
|
||||
"Target configurations","Doelconfiguraties",,
|
||||
"Target page","Doel pagina",,
|
||||
"Target team Dashboard","Doelgroep Dashboard",,
|
||||
"Target vs Real","Doelwit vs Echt",,
|
||||
"Targets configurations","Doelstellingen configuraties",,
|
||||
"Task","Taak",,
|
||||
"Task reminder template","Taakherinneringssjabloon",,
|
||||
"Tasks","Taken",,
|
||||
"Tasks filters","Taken filters",,
|
||||
"Team","Team",,
|
||||
"Th","De",,
|
||||
"The end date must be after the start date","De einddatum moet na de begindatum liggen",,
|
||||
"The number of repetitions must be greater than 0","Het aantal herhalingen moet groter zijn dan 0",,
|
||||
"Title","Titel",,
|
||||
"To Date","Tot op heden",,
|
||||
"Tools","Gereedschap",,
|
||||
"Trading name","Handelsnaam",,
|
||||
"Treated objectives reporting","Behandelde doelstellingen rapportage",,
|
||||
"Tu","Tu",,
|
||||
"Type","Type",,
|
||||
"Type of need",,,
|
||||
"UID (Calendar)","UID (kalender)",,
|
||||
"Unassigned Leads","Niet-toegewezen Leads",,
|
||||
"Unassigned Opportunities","Niet-toegewezen mogelijkheden",,
|
||||
"Unassigned opportunities","Niet-toegewezen mogelijkheden",,
|
||||
"Upcoming events","Komende evenementen",,
|
||||
"Urgent","Dringend",,
|
||||
"User","Gebruiker",,
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured.",,,
|
||||
"User %s must have an active company to use templates","Gebruiker %s moet een actief bedrijf hebben om sjablonen te kunnen gebruiken",,
|
||||
"Validate","Valideren",,
|
||||
"We","Wij",,
|
||||
"Website","Website",,
|
||||
"Weekly","Wekelijks",,
|
||||
"Weeks","Weken",,
|
||||
"Win","Winnen",,
|
||||
"Worst case","Slechtste geval",,
|
||||
"Years","Jaren",,
|
||||
"You don't have the rights to delete this event","Je hebt niet het recht om dit evenement te verwijderen",,
|
||||
"You must choose a recurrence type","U moet een herhalingstype kiezen",,
|
||||
"You must choose at least one day in the week","U moet ten minste één dag in de week kiezen",,
|
||||
"amount","hoeveelheid",,
|
||||
"com.axelor.apps.crm.job.EventReminderJob","com.axelor.apps.crm.crm.job.EventReminderJob",,
|
||||
"com.axelor.apps.crm.service.batch.CrmBatchService","com.axelor.apps.crm.crm.service.batch.CrmBatchService",,
|
||||
"crm.New","Nieuw",,
|
||||
"date","afspraakje",,
|
||||
"every week's day","elke weekdag",,
|
||||
"everyday","alledaags",,
|
||||
"fri,","fri,.",,
|
||||
"http://www.url.com","http://www.url.com",,
|
||||
"important","belangrijk",,
|
||||
"mon,","mon, mon,",,
|
||||
"on","aan",,
|
||||
"portal.daily.team.calls.summary.by.user","portaal.dagelijks.team.oproepen.van.de.gebruiker.samenvattend.samenvattend.door.de.gebruiker.",,
|
||||
"sat,","zat,",,
|
||||
"success","succes",,
|
||||
"sun,","zon,",,
|
||||
"thur,","thur, thur,",,
|
||||
"tues,","tues,.",,
|
||||
"until the","totdat de",,
|
||||
"value:CRM","waarde: CRM",,
|
||||
"warning","verwittiging",,
|
||||
"wed,","trouwen, trouwen",,
|
||||
"whatever@example.com","whatever@example.com",,
|
||||
"www.url.com","www.url.com",,
|
||||
|
@ -0,0 +1,521 @@
|
||||
"key","message","comment","context"
|
||||
"%d times","%d razy",,
|
||||
"+33000000000",,,
|
||||
"+33100000000",,,
|
||||
"<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />","<a class='fa-facebook' href='http://www.facebook.com' target='_blank' />",,
|
||||
"<a class='fa fa-google' href='http://www.google.com' target='_blank' />","<a class='fa-google' href='http://www.google.com' target='_blank' />",,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />","<a class='fa-twitter' href='http://www.twitter.com' target='_blank' />",,
|
||||
"<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />","<a class='fa-youtube' href='http://www.youtube.com' target='_blank' />",,
|
||||
"<span class='label label-warning'>The selected date is in the past.</span>",,,
|
||||
"<span class='label label-warning'>There is already a lead with this name.</span>","<span class='label label-warning'>There is already a lead with this name.</span>",,
|
||||
"<span style=""height:21px; line-height: 21px; margin-top:18px; display:inline-block"">VS</span>",,,
|
||||
"A lost reason must be selected","Należy wybrać stracony powód",,
|
||||
"Action","Działanie",,
|
||||
"Activities","Działania",,
|
||||
"Add","Dodaj",,
|
||||
"Add a guest","Dodaj gościa",,
|
||||
"Address","Adres",,
|
||||
"After n repetitions","Po n powtórzeniach",,
|
||||
"All past events","Wszystkie wydarzenia z przeszłości",,
|
||||
"All upcoming events","Wszystkie nadchodzące wydarzenia",,
|
||||
"All users",,,
|
||||
"Amount","Kwota",,
|
||||
"Amount Won","Kwota Won",,
|
||||
"Amount won","Kwota wygrana",,
|
||||
"App Crm","App Crm",,
|
||||
"Apply changes to all recurrence's events","Zastosuj zmiany do wszystkich powtarzających się zdarzeń",,
|
||||
"Apply changes to this event only","Stosować zmiany tylko do tego zdarzenia",,
|
||||
"Apply modifications","Zastosuj modyfikacje",,
|
||||
"Apply modifications for all","Zastosuj modyfikacje dla wszystkich",,
|
||||
"Are you sure you want to convert the lead?","Czy na pewno chcesz przekonwertować ołów?",,
|
||||
"Assign to","Przydziel do",,
|
||||
"Assign to me","Przypisz do mnie",,
|
||||
"Assignable Users",,,
|
||||
"Assigned","Przydzielone",,
|
||||
"Assigned to","Przypisany do",,
|
||||
"At specific date",,,
|
||||
"At the date","W dniu",,
|
||||
"Attendee","Uczestnik",,
|
||||
"Available","Dostępne",,
|
||||
"Average duration between lead and first opportunity (days)",,,
|
||||
"Batchs","Partie",,
|
||||
"Before start date",,,
|
||||
"Best Open Deals","Najlepsze otwarte transakcje",,
|
||||
"Best case","Najlepszy przypadek",,
|
||||
"Busy","zapracowany",,
|
||||
"CRM","CRM",,
|
||||
"CRM Activities","Działalność w zakresie zarządzania relacjami z klientami (CRM)",,
|
||||
"CRM Batch","Partia CRM",,
|
||||
"CRM batches","Partie CRM",,
|
||||
"CRM config","Konfiguracja CRM",,
|
||||
"CRM config (${ name })","Konfiguracja CRM (${ nazwa })",,
|
||||
"CRM configuration","Konfiguracja CRM",,
|
||||
"CRM configurations","Konfiguracje CRM",,
|
||||
"CRM events","Wydarzenia CRM",,
|
||||
"Call","Połączenie telefoniczne",,
|
||||
"Call emitted Nbr","Wywołanie wyemitowane Nbr",,
|
||||
"Call emitted Nbr.","Wywołanie wyemitowane Nbr.",,
|
||||
"Call emitted historical","Wywołanie wyemitowane historycznie",,
|
||||
"Call filters","Filtry wywołań",,
|
||||
"Call reminder template","Szablon przypomnienia o wywołaniu",,
|
||||
"Call type","Typ połączenia",,
|
||||
"Calls","Wywołania",,
|
||||
"Calls Dashboard","Tablica połączeń",,
|
||||
"Calls Db","Połączenia Db",,
|
||||
"Calls by team by user","Wywołania zespołowe przez użytkownika",,
|
||||
"Calls by user(of a team)","Połączenia użytkownika (zespołu)",,
|
||||
"Calls emitted historical","Połączenia emitowane w przeszłości",,
|
||||
"Calls emitted target completed (%)","Połączenia wyemitowane docelowe zakończone (%)",,
|
||||
"Calls held by team by type","Połączenia wykonywane przez zespół według typu",,
|
||||
"Calls held by type by user","Rozmowy w zależności od typu użytkownika",,
|
||||
"Calls type by team","Typ połączeń według zespołu",,
|
||||
"Calls type by user","Typ połączeń według użytkownika",,
|
||||
"Cancel this reminder",,,
|
||||
"Canceled","Anulowany",,
|
||||
"Cases","Przypadki",,
|
||||
"Category","Kategoria",,
|
||||
"Characteristics","Charakterystyka",,
|
||||
"Chart","Wykres",,
|
||||
"Check duplicate","Sprawdź duplikat",,
|
||||
"City","Miasto",,
|
||||
"Civility","Obywatelstwo",,
|
||||
"Closed Opportunities","Zamknięte możliwości",,
|
||||
"Closed lost","Zamknięte zaginione",,
|
||||
"Closed won","Zamknięte wygrane",,
|
||||
"Code","Kod",,
|
||||
"Company","Firma",,
|
||||
"Configuration","Konfiguracja",,
|
||||
"Confirm lost reason","Potwierdzić utracony powód",,
|
||||
"Contact","Kontakt",,
|
||||
"Contact date","Data kontaktu",,
|
||||
"Contact details","Dane kontaktowe",,
|
||||
"Contact name","Nazwa kontaktu",,
|
||||
"Contacts","Kontakty",,
|
||||
"Convert","Konwersja",,
|
||||
"Convert lead","Konwersja ołowiu",,
|
||||
"Convert lead (${ fullName })","Konwertuj lead (${pełna nazwa })",,
|
||||
"Convert lead into contact",,,
|
||||
"Convert lead into partner",,,
|
||||
"Converted","Przetworzone",,
|
||||
"Country","Kraj",,
|
||||
"Create a new reminder",,,
|
||||
"Create a quotation",,,
|
||||
"Create event","Utwórz wydarzenie",,
|
||||
"Create new contact","Utwórz nowy kontakt",,
|
||||
"Create new partner","Utwórz nowego partnera",,
|
||||
"Create opportunity","Stwórz szansę",,
|
||||
"Create opportunity (${ fullName })","Utwórz możliwość (${pełna nazwa })",,
|
||||
"Create order (${ fullName })","Utwórz zlecenie (${pełna nazwa })",,
|
||||
"Create purchase quotation",,,
|
||||
"Create sale quotation",,,
|
||||
"Created Nbr","Utworzony Nbr",,
|
||||
"Created Nbr.","Utworzony Nbr.",,
|
||||
"Created Won","Utworzony Won",,
|
||||
"Created by","Stworzony przez",,
|
||||
"Created leads by industry sector","Tworzone przez sektor przemysłu",,
|
||||
"Created leads per month","Tworzenie leadów miesięcznie",,
|
||||
"Created leads with at least one opportunity",,,
|
||||
"Created on","Utworzony na",,
|
||||
"Crm batch","Partia termiczna",,
|
||||
"Currency","Waluta",,
|
||||
"Customer","Klient",,
|
||||
"Customer Description",,,
|
||||
"Customer fixed phone","Telefon stacjonarny klienta",,
|
||||
"Customer mobile phone","Telefon komórkowy klienta",,
|
||||
"Customer name","Nazwa klienta",,
|
||||
"Customer recovery",,,
|
||||
"Customers","Klienci",,
|
||||
"Daily","Codziennie",,
|
||||
"Daily team call summary by user","Codzienne podsumowanie rozmowy zespołowej przez użytkownika",,
|
||||
"Dashboard","Tablica rozdzielcza",,
|
||||
"Date from","Data od dnia",,
|
||||
"Date to","Data do",,
|
||||
"Day of month","Dzień miesiąca",,
|
||||
"Day of week","Dzień tygodnia",,
|
||||
"Days","Dni",,
|
||||
"Delete all events","Usuń wszystkie zdarzenia",,
|
||||
"Delete only this event","Usuń tylko to zdarzenie",,
|
||||
"Delete this and next events","Usuń to i następne wydarzenia",,
|
||||
"Delivery Address","Adres dostawy",,
|
||||
"Dep./Div.","Dep./Div.",,
|
||||
"Description","Opis",,
|
||||
"Display customer description in opportunity",,,
|
||||
"Duration","Czas trwania pomocy",,
|
||||
"Duration type","Czas trwania pomocy",,
|
||||
"Email","Poczta elektroniczna",,
|
||||
"Emails","Poczta elektroniczna",,
|
||||
"End","Koniec",,
|
||||
"End date","Data końcowa",,
|
||||
"Enterprise","Przedsiębiorstwo",,
|
||||
"Enterprise name","Nazwa przedsiębiorstwa",,
|
||||
"Error in lead conversion","Błąd w konwersji ołowiu",,
|
||||
"Estimated budget","Szacunkowy budżet",,
|
||||
"Event","Wydarzenie",,
|
||||
"Event Categories","Kategorie zdarzeń",,
|
||||
"Event Dashboard 1","Event Dashboard 1",,
|
||||
"Event Db","Wydarzenie Db",,
|
||||
"Event categories","Kategorie zdarzeń",,
|
||||
"Event category","Kategoria zdarzeń",,
|
||||
"Event configuration categories","Kategorie konfiguracji zdarzeń",,
|
||||
"Event filters","Filtry zdarzeń",,
|
||||
"Event reminder","Przypomnienie o wydarzeniu",,
|
||||
"Event reminder %s","Przypomnienie o zdarzeniach %s",,
|
||||
"Event reminder batch","Przypomnienie o zdarzeniach",,
|
||||
"Event reminder page","Strona przypominania o zdarzeniach",,
|
||||
"Event reminder template",,,
|
||||
"Event reminders","Przypomnienia o wydarzeniach",,
|
||||
"Event's reminder's generation's reporting :","Raportowanie przypomnienia o wydarzeniu :",,
|
||||
"Events","Wydarzenia",,
|
||||
"Every %d days","Codziennie %d dni",,
|
||||
"Every %d months the %d","Co miesiąc %d %d",,
|
||||
"Every %d weeks","Co tydzień",,
|
||||
"Every %d years the %s","Co roku %d lat %s",,
|
||||
"Every day","Codziennie",,
|
||||
"Every month","Co miesiąc",,
|
||||
"Every month the","Każdego miesiąca",,
|
||||
"Every week","Co tydzień",,
|
||||
"Every year","Każdego roku",,
|
||||
"Every year the","Każdego roku",,
|
||||
"Expected close date","Przewidywana data zamknięcia",,
|
||||
"Fax","Faks",,
|
||||
"Finished","Gotowe",,
|
||||
"First name","Imię i nazwisko",,
|
||||
"Fixed Phone","Telefon stacjonarny",,
|
||||
"Fixed phone","Telefon stacjonarny",,
|
||||
"Follow up","Działania następcze",,
|
||||
"Follow-up","Działania następcze",,
|
||||
"For all","Dla wszystkich",,
|
||||
"For me","Dla mnie",,
|
||||
"Fr","ks. ks.",,
|
||||
"Free text",,,
|
||||
"From Date","Od daty",,
|
||||
"From date must be less than the to date","Od daty musi być mniej niż do dnia dzisiejszego",,
|
||||
"Function","Funkcja",,
|
||||
"General contact details","Ogólne dane kontaktowe",,
|
||||
"Generate CRM configurations","Generowanie konfiguracji CRM",,
|
||||
"Generate Project","Generuj projekt",,
|
||||
"Groups Assignable",,,
|
||||
"Guests","Goście",,
|
||||
"High","Wysoki",,
|
||||
"Historical Period","Okres historyczny",,
|
||||
"Historical events completed","Zakończone wydarzenia historyczne",,
|
||||
"Hours","Godziny",,
|
||||
"Import lead","Przywóz ołowiu",,
|
||||
"Import leads","Przywozowe wskazówki dotyczące przywozu",,
|
||||
"In process","W trakcie realizacji",,
|
||||
"Incoming","Przychodzące",,
|
||||
"Industry Sector","Sektor przemysłu",,
|
||||
"Industry sector","Sektor przemysłu",,
|
||||
"Information","Informacje",,
|
||||
"Informations","Informacje",,
|
||||
"Input location please","Proszę podać lokalizację wejścia",,
|
||||
"Invoicing Address","Adres do fakturowania",,
|
||||
"Job Title","Praca Tytuł pracy",,
|
||||
"Key accounts","Kluczowi klienci",,
|
||||
"Last name","Nazwisko",,
|
||||
"Lead","Ołów",,
|
||||
"Lead Assigned","Przydzielone ołowiane",,
|
||||
"Lead Converted","Ołów Przekształcony",,
|
||||
"Lead Dashboard 1","Tablica rozdzielcza ołowiu 1",,
|
||||
"Lead Db","Ołów Db",,
|
||||
"Lead Db 1","Ołów Db 1",,
|
||||
"Lead converted","Ołów przetworzony",,
|
||||
"Lead created","Utworzony ołów",,
|
||||
"Lead filters","Filtry ołowiane",,
|
||||
"Lead.address_information","Informacje adresowe",,
|
||||
"Lead.company","Firma",,
|
||||
"Lead.email","Poczta elektroniczna",,
|
||||
"Lead.fax","Faks",,
|
||||
"Lead.header","Nagłówek",,
|
||||
"Lead.industry","Przemysł",,
|
||||
"Lead.lead_owner","Właściciel wiodący",,
|
||||
"Lead.name","Nazwa",,
|
||||
"Lead.other_address","Inny adres",,
|
||||
"Lead.phone","Telefon",,
|
||||
"Lead.primary_address","Adres podstawowy",,
|
||||
"Lead.source","Źródło: Opracowanie własne.",,
|
||||
"Lead.status","Status",,
|
||||
"Lead.title","Tytuł",,
|
||||
"Leads","Ołowiane",,
|
||||
"Leads Source","Ołowiane Źródło: Źródła",,
|
||||
"Leads by Country","Ołów według krajów",,
|
||||
"Leads by Salesman by Status","Ołów według statusu sprzedawcy",,
|
||||
"Leads by Source","Ołów według źródła",,
|
||||
"Leads by Team by Status","Kierownictwo w podziale na zespoły według statusu",,
|
||||
"Limit Date","Data graniczna",,
|
||||
"Lose","Luźne",,
|
||||
"Loss confirmation","Potwierdzenie straty",,
|
||||
"Lost","Utracone",,
|
||||
"Lost reason","Utracony powód",,
|
||||
"Lost reasons","Zagubione przyczyny",,
|
||||
"Low","Niskie",,
|
||||
"MapRest.PinCharLead","L",,
|
||||
"MapRest.PinCharOpportunity","O",,
|
||||
"Marketing","Wprowadzanie do obrotu",,
|
||||
"Meeting","Spotkanie",,
|
||||
"Meeting Nbr","Spotkanie Nbr",,
|
||||
"Meeting Nbr.","Spotkanie Nbr.",,
|
||||
"Meeting filters","Spotkanie z filtrami",,
|
||||
"Meeting number historical","Numer spotkania historyczny",,
|
||||
"Meeting reminder template","Wzór przypomnienia o spotkaniu",,
|
||||
"Meeting's date changed template","Zmieniony szablon daty spotkania",,
|
||||
"Meeting's guest added template","Szablon dodany przez gościa spotkania",,
|
||||
"Meeting's guest deleted template","Usunięty szablon gościa spotkania",,
|
||||
"Meetings","Spotkania",,
|
||||
"Meetings number historical","Liczba spotkań historycznych",,
|
||||
"Meetings number target completed (%)","Liczba zrealizowanych spotkań docelowa liczba zrealizowanych spotkań (%)",,
|
||||
"Memo","Memo",,
|
||||
"Minutes","Protokoły",,
|
||||
"Mo","Mo",,
|
||||
"Mobile N°","Nr telefonu komórkowego",,
|
||||
"Mobile phone","Telefon komórkowy",,
|
||||
"Month","Miesiąc",,
|
||||
"Monthly","Miesięcznie",,
|
||||
"Months","Miesiące",,
|
||||
"My Best Open Deals","Moje najlepsze otwarte oferty",,
|
||||
"My CRM events","Moje zdarzenia CRM",,
|
||||
"My Calendar","Mój kalendarz",,
|
||||
"My Calls","Moje połączenia",,
|
||||
"My Closed Opportunities","Moje zamknięte możliwości",,
|
||||
"My Current Leads","Moje obecne przewodzenie",,
|
||||
"My Key accounts","Moje kluczowe konta",,
|
||||
"My Leads","Moje przywództwa",,
|
||||
"My Meetings","Moje spotkania",,
|
||||
"My Open Opportunities","Moje otwarte możliwości",,
|
||||
"My Opportunities","Moje możliwości",,
|
||||
"My Tasks","Moje zadania",,
|
||||
"My Team Best Open Deals","Mój zespół Najlepsze otwarte transakcje",,
|
||||
"My Team Calls","Mój zespół dzwoni",,
|
||||
"My Team Closed Opportunities","Mój zespół ma zamknięte możliwości",,
|
||||
"My Team Key accounts","Moje Team Key accounts",,
|
||||
"My Team Leads","Mój zespół kieruje",,
|
||||
"My Team Meetings","Moje spotkania zespołu",,
|
||||
"My Team Open Opportunities","Mój zespół Otwarte możliwości",,
|
||||
"My Team Tasks","Zadania mojego zespołu",,
|
||||
"My Today Calls","Moje dzisiejsze połączenia",,
|
||||
"My Today Tasks","Moje dzisiejsze zadania",,
|
||||
"My Upcoming Meetings","Moje nadchodzące spotkania",,
|
||||
"My Upcoming Tasks","Moje nadchodzące zadania",,
|
||||
"My opportunities","Moje możliwości",,
|
||||
"My past events","Moje wydarzenia z przeszłości",,
|
||||
"My team opportunities","Możliwości dla mojego zespołu",,
|
||||
"My upcoming events","Moje nadchodzące wydarzenia",,
|
||||
"Name","Nazwa",,
|
||||
"Negotiation","Negocjacje",,
|
||||
"New","Nowy",,
|
||||
"Next stage","Następny etap",,
|
||||
"Next step","Następny krok",,
|
||||
"No lead import configuration found","Nie znaleziono konfiguracji importu ołowiu",,
|
||||
"No template created in CRM configuration for company %s, emails have not been sent","Brak szablonu utworzonego w konfiguracji CRM dla firmy %s, wiadomości e-mail nie zostały wysłane.",,
|
||||
"Non-participant","Nieuczestniczący",,
|
||||
"None","Brak.",,
|
||||
"Normal","Normalny",,
|
||||
"Not started","Nie rozpoczęto.",,
|
||||
"Objective","Cel pomocy",,
|
||||
"Objective %s is in contradiction with objective's configuration %s","Cel % jest sprzeczny z konfiguracją celu %s",,
|
||||
"Objectives","Cele",,
|
||||
"Objectives Configurations","Konfiguracja celów",,
|
||||
"Objectives Team Db","Cele Zespół Db",,
|
||||
"Objectives User Db","Cele Użytkownik Db",,
|
||||
"Objectives configurations","Konfiguracja celów",,
|
||||
"Objectives team Dashboard","Zespół celów Tablica rozdzielcza",,
|
||||
"Objectives user Dashboard","Cele użytkownika Tablica rozdzielcza",,
|
||||
"Objectives' generation's reporting :","Raportowanie generowania celów :",,
|
||||
"Office name","Nazwa biura",,
|
||||
"On going","W trakcie podróży",,
|
||||
"Open Cases by Agents","Sprawy otwarte prowadzone przez agentów",,
|
||||
"Open Opportunities","Otwarte możliwości",,
|
||||
"Operation mode",,,
|
||||
"Opportunities","Możliwości",,
|
||||
"Opportunities By Origin By Stage","Możliwości według pochodzenia według etapu",,
|
||||
"Opportunities By Sale Stage","Możliwości na etapie sprzedaży",,
|
||||
"Opportunities By Source","Możliwości według źródła",,
|
||||
"Opportunities By Type","Możliwości według typu",,
|
||||
"Opportunities Db 1","Możliwości Db 1",,
|
||||
"Opportunities Db 2","Możliwości Db 2",,
|
||||
"Opportunities Db 3","Możliwości Db 3",,
|
||||
"Opportunities Won By Lead Source","Szanse wygrały według źródła wiodącego",,
|
||||
"Opportunities Won By Partner","Szanse wygrane przez partnera",,
|
||||
"Opportunities Won By Salesman","Szanse wygrał Salesman",,
|
||||
"Opportunities amount won historical","Szanse kwota wygrana historycznie",,
|
||||
"Opportunities amount won target competed (%)","Ilość szans zdobyta w konkursie docelowym (%)",,
|
||||
"Opportunities amount won target completed (%)","Kwota szans zdobyta kwota docelowa ukończona (%)",,
|
||||
"Opportunities created number historical","Możliwości stworzone liczba historyczna",,
|
||||
"Opportunities created number target completed (%)","Stworzone możliwości Liczba zakończonych projektów (%)",,
|
||||
"Opportunities created won historical","Stworzone możliwości wygrały historycznie",,
|
||||
"Opportunities created won target completed (%)","Stworzone szanse wygrał cel ukończony (%)",,
|
||||
"Opportunities filters","Filtry możliwości",,
|
||||
"Opportunity","Możliwości",,
|
||||
"Opportunity Type","Rodzaj możliwości",,
|
||||
"Opportunity created","Stworzone możliwości",,
|
||||
"Opportunity lost","Utracona szansa",,
|
||||
"Opportunity type","Typ możliwości",,
|
||||
"Opportunity types","Rodzaje możliwości",,
|
||||
"Opportunity won","Szansa wygrana",,
|
||||
"Optional participant","Uczestnik fakultatywny",,
|
||||
"Order by state","Zarządzenie według państwa",,
|
||||
"Organization","Organizacja",,
|
||||
"Outgoing","Wychodzący",,
|
||||
"Parent event","Zdarzenie rodzicielskie",,
|
||||
"Parent lead is missing.","Brak jest ołowiu rodzicielskiego.",,
|
||||
"Partner","Partner",,
|
||||
"Partner Details","Szczegóły dotyczące partnerów",,
|
||||
"Pending","W trakcie oczekiwania",,
|
||||
"Period type","Typ okresu",,
|
||||
"Periodicity must be greater than 0","Okresowość musi być większa niż 0",,
|
||||
"Picture","Zdjęcie",,
|
||||
"Pipeline","Rurociąg",,
|
||||
"Pipeline by Stage and Type","Rurociąg według etapów i typów",,
|
||||
"Pipeline next 90 days","Rurociąg następne 90 dni",,
|
||||
"Planned","Planowane",,
|
||||
"Please configure all templates in CRM configuration for company %s","Proszę skonfigurować wszystkie szablony w konfiguracji CRM dla firmy %s",,
|
||||
"Please configure informations for CRM for company %s","Proszę skonfigurować informacje dla CRM dla firmy %s",,
|
||||
"Please save the event before setting the recurrence","Proszę zapisać zdarzenie przed ustawieniem powtarzalności",,
|
||||
"Please select a lead",,,
|
||||
"Please select the Lead(s) to print.","Proszę wybrać Linie Lead(s) do wydruku.",,
|
||||
"Postal code","Kod pocztowy",,
|
||||
"Present","Obecność",,
|
||||
"Previous stage","Poprzedni etap",,
|
||||
"Previous step","Poprzedni krok",,
|
||||
"Primary address","Adres podstawowy",,
|
||||
"Print","Drukuj",,
|
||||
"Priority","Priorytet",,
|
||||
"Probability (%)","Prawdopodobieństwo (%)",,
|
||||
"Proposition","Propozycja",,
|
||||
"Qualification","Kwalifikacje",,
|
||||
"Realized","Zrealizowane",,
|
||||
"Recent lost deals","Niedawno przegrane transakcje",,
|
||||
"Recently created opportunities","Ostatnio stworzone możliwości",,
|
||||
"Recurrence","Powtarzalność",,
|
||||
"Recurrence assistant","Asystentka ds. powtarzalności",,
|
||||
"Recurrence configuration","Konfiguracja powtarzalności",,
|
||||
"Recurrence name","Nazwa powtarzalności",,
|
||||
"Recurrent","Powtarzające się",,
|
||||
"Recycle","Recykling",,
|
||||
"Recycled","Recyklowane",,
|
||||
"Reference","Odniesienie",,
|
||||
"References","Odniesienia",,
|
||||
"Referred by","Odsyłany przez",,
|
||||
"Region","Region",,
|
||||
"Rejection of calls","Odrzucenie połączeń",,
|
||||
"Rejection of e-mails","Odrzucenie wiadomości e-mail",,
|
||||
"Related to","Związane z",,
|
||||
"Related to select","W odniesieniu do wyboru",,
|
||||
"Reminded","Przypomniany",,
|
||||
"Reminder",,,
|
||||
"Reminder Templates","Szablony przypomnień",,
|
||||
"Reminder(s) treated","Przypomnienie(-a), które zostało(-ą) przetworzone",,
|
||||
"Reminders","Przypomnienia",,
|
||||
"Repeat every","Powtórzyć każdy",,
|
||||
"Repeat every:","Powtórzyć każdy:",,
|
||||
"Repeat the:","Powtórzyć:",,
|
||||
"Repetitions number","Numer powtórek",,
|
||||
"Reported","Zgłoszone",,
|
||||
"Reportings","Sprawozdania",,
|
||||
"Reports","Sprawozdania",,
|
||||
"Required participant","Wymagany uczestnik",,
|
||||
"Sa","Sa",,
|
||||
"Sale quotations/orders","Kwotowania sprzedaży/zamówienia",,
|
||||
"Sales Stage","Etap sprzedaży",,
|
||||
"Sales orders amount won historical","Kwota wygranych zamówień sprzedaży historyczna",,
|
||||
"Sales orders amount won target completed (%)","Kwota wygenerowanych zamówień sprzedaży docelowa kwota zrealizowanych zamówień (%)",,
|
||||
"Sales orders created number historical","Utworzone zlecenia sprzedaży liczba historyczna",,
|
||||
"Sales orders created number target completed (%)","Liczba utworzonych zleceń sprzedaży liczba zakończonych zamówień (%)",,
|
||||
"Sales orders created won historical","Utworzone zlecenia sprzedaży wygrały historycznie",,
|
||||
"Sales orders created won target completed","Utworzone zlecenia sprzedaży wygrały cel zrealizowany",,
|
||||
"Sales orders created won target completed (%)","Utworzone zlecenia sprzedaży wygrały cel zrealizowany (%)",,
|
||||
"Sales stage","Etap sprzedaży",,
|
||||
"Salesman","Sprzedawca",,
|
||||
"Schedule Event","Harmonogram zdarzeń",,
|
||||
"Schedule Event (${ fullName })","Zdarzenie harmonogramu (${pełna nazwa })",,
|
||||
"Schedule Event(${ fullName})","Zdarzenie wg harmonogramu (${ pełna nazwa})",,
|
||||
"Select Contact","Wybierz Kontakt",,
|
||||
"Select Partner","Wybierz partnera",,
|
||||
"Select existing contact","Wybierz istniejący kontakt.",,
|
||||
"Select existing partner","Wybierz istniejącego partnera",,
|
||||
"Send Email","Wyślij e-mail",,
|
||||
"Send email","Wyślij wiadomość e-mail",,
|
||||
"Sending date",,,
|
||||
"Settings","Ustawienia",,
|
||||
"Show Partner","Pokaż partnera",,
|
||||
"Show all events","Pokaż wszystkie wydarzenia",,
|
||||
"Some user groups",,,
|
||||
"Source","Źródło: Opracowanie własne.",,
|
||||
"Source description","Opis źródłowy",,
|
||||
"Start","Start",,
|
||||
"Start date","Data początkowa",,
|
||||
"State","państwo",,
|
||||
"Status","Status",,
|
||||
"Status description","Opis statusu",,
|
||||
"Su","Su",,
|
||||
"Take charge","Przejmij obowiązki",,
|
||||
"Target","Cel",,
|
||||
"Target User Dashboard","Tablica rozdzielcza użytkownika docelowego",,
|
||||
"Target batch","Partia docelowa",,
|
||||
"Target configuration","Konfiguracja celów",,
|
||||
"Target configurations","Konfiguracje docelowe",,
|
||||
"Target page","Strona docelowa",,
|
||||
"Target team Dashboard","Zespół docelowy Tablica rozdzielcza",,
|
||||
"Target vs Real","Cel a rzeczywistość",,
|
||||
"Targets configurations","Konfiguracje celów",,
|
||||
"Task","Zadanie",,
|
||||
"Task reminder template","Szablon przypomnienia o zadaniu",,
|
||||
"Tasks","Zadania",,
|
||||
"Tasks filters","Filtry zadaniowe",,
|
||||
"Team","Zespół",,
|
||||
"Th","Th",,
|
||||
"The end date must be after the start date","Data końcowa musi być późniejsza niż data rozpoczęcia",,
|
||||
"The number of repetitions must be greater than 0","Liczba powtórzeń musi być większa niż 0",,
|
||||
"Title","Tytuł",,
|
||||
"To Date","Do daty",,
|
||||
"Tools","Narzędzia",,
|
||||
"Trading name","Nazwa handlowa",,
|
||||
"Treated objectives reporting","Sprawozdawczość w zakresie celów poddanych działaniu",,
|
||||
"Tu","Tu",,
|
||||
"Type","Typ",,
|
||||
"Type of need",,,
|
||||
"UID (Calendar)","UID (kalendarz)",,
|
||||
"Unassigned Leads","Ołów nieprzypisany",,
|
||||
"Unassigned Opportunities","Możliwości nieprzypisane",,
|
||||
"Unassigned opportunities","Nieprzypisane możliwości",,
|
||||
"Upcoming events","Nadchodzące wydarzenia",,
|
||||
"Urgent","Pilny",,
|
||||
"User","Użytkownik",,
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured.",,,
|
||||
"User %s must have an active company to use templates","Użytkownik %s musi mieć aktywną firmę, aby korzystać z szablonów",,
|
||||
"Validate","Zatwierdzić",,
|
||||
"We","My",,
|
||||
"Website","Strona internetowa",,
|
||||
"Weekly","Tygodniowo",,
|
||||
"Weeks","Tygodnie",,
|
||||
"Win","Wygraj",,
|
||||
"Worst case","Najgorszy przypadek",,
|
||||
"Years","Lata",,
|
||||
"You don't have the rights to delete this event","Nie masz prawa do usunięcia tego zdarzenia",,
|
||||
"You must choose a recurrence type","Musisz wybrać typ powtarzalności",,
|
||||
"You must choose at least one day in the week","Musisz wybrać przynajmniej jeden dzień w tygodniu",,
|
||||
"amount","wielkość",,
|
||||
"com.axelor.apps.crm.job.EventReminderJob","com.axelor.apps.crm.job.EventReminderJob",,
|
||||
"com.axelor.apps.crm.service.batch.CrmBatchService","com.axelor.apps.crm.service.batch.CrmBatchService",,
|
||||
"crm.New","Nowy",,
|
||||
"date","daktyl",,
|
||||
"every week's day","każdego dnia tygodnia",,
|
||||
"everyday","codzienny",,
|
||||
"fri,","fri, fri",,
|
||||
"http://www.url.com","http://www.url.com",,
|
||||
"important","ważny",,
|
||||
"mon,","mon,, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon, mon",,
|
||||
"on","w sprawie",,
|
||||
"portal.daily.team.calls.summary.by.user","Portal.codzienne.połączenia.zespołu.telefonicznego.przez.użytkownika",,
|
||||
"sat,","sat,, sat.",,
|
||||
"success","powodzenie",,
|
||||
"sun,","słońce.",,
|
||||
"thur,","thur",,
|
||||
"tues,","należności",,
|
||||
"until the","aż do momentu, gdy",,
|
||||
"value:CRM","wartość:CRM",,
|
||||
"warning","ostrzegawczy",,
|
||||
"wed,","weselem, weselnym, weselnym, weselnym, weselnym, weselnym, weselnym, weselnym, weselnym, weselnym, weselnym,, weselnym,, weselnym,, weselnym,, weselnym,, weselnym,, weselnym,, weselnym,, weselnym,,, weselnym,, weselnym,, weselnym,, weselnym,.",,
|
||||
"whatever@example.com","whatever@example.com",,
|
||||
"www.url.com","www.url.com",,
|
||||
|
@ -0,0 +1,521 @@
|
||||
"key","message","comment","context"
|
||||
"%d times","%d vezes",,
|
||||
"+33000000000",,,
|
||||
"+33100000000",,,
|
||||
"<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />","<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />",,
|
||||
"<a class='fa fa-google' href='http://www.google.com' target='_blank' />","<a class='fa fa-google' href='http://www.google.com' target='_blank' />",,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa fa-linkingin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />","<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />",,
|
||||
"<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />","<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />",,
|
||||
"<span class='label label-warning'>The selected date is in the past.</span>",,,
|
||||
"<span class='label label-warning'>There is already a lead with this name.</span>","<span class='label label-warning'>Existe já uma pista com este nome.</span>",,
|
||||
"<span style=""height:21px; line-height: 21px; margin-top:18px; display:inline-block"">VS</span>",,,
|
||||
"A lost reason must be selected","Um motivo perdido deve ser selecionado",,
|
||||
"Action","Ação",,
|
||||
"Activities","Atividades",,
|
||||
"Add","Adicionar",,
|
||||
"Add a guest","Adicionar um convidado",,
|
||||
"Address","Morada",,
|
||||
"After n repetitions","Após n repetições",,
|
||||
"All past events","Todos os eventos passados",,
|
||||
"All upcoming events","Todos os próximos eventos",,
|
||||
"All users",,,
|
||||
"Amount","Montante",,
|
||||
"Amount Won","Montante ganho",,
|
||||
"Amount won","Montante ganho",,
|
||||
"App Crm","Aplicativo Crm",,
|
||||
"Apply changes to all recurrence's events","Aplicar alterações a todos os eventos de recorrência",,
|
||||
"Apply changes to this event only","Aplicar alterações apenas a este evento",,
|
||||
"Apply modifications","Aplicar modificações",,
|
||||
"Apply modifications for all","Aplicar modificações para todos",,
|
||||
"Are you sure you want to convert the lead?","Tens a certeza que queres converter o chumbo?",,
|
||||
"Assign to","Atribuir a",,
|
||||
"Assign to me","Atribuir-me",,
|
||||
"Assignable Users",,,
|
||||
"Assigned","Atribuído",,
|
||||
"Assigned to","Atribuído a",,
|
||||
"At specific date",,,
|
||||
"At the date","Na data",,
|
||||
"Attendee","Participante",,
|
||||
"Available","Disponível",,
|
||||
"Average duration between lead and first opportunity (days)",,,
|
||||
"Batchs","Lotes",,
|
||||
"Before start date",,,
|
||||
"Best Open Deals","Melhores Ofertas Abertas",,
|
||||
"Best case","Melhor caso",,
|
||||
"Busy","Ocupado",,
|
||||
"CRM","CRM",,
|
||||
"CRM Activities","Atividades de CRM",,
|
||||
"CRM Batch","CRM Batch",,
|
||||
"CRM batches","Lotes de CRM",,
|
||||
"CRM config","Configuração de CRM",,
|
||||
"CRM config (${ name })","Configuração do CRM (${ nome })",,
|
||||
"CRM configuration","Configuração do CRM",,
|
||||
"CRM configurations","Configurações de CRM",,
|
||||
"CRM events","Eventos de CRM",,
|
||||
"Call","Chamada",,
|
||||
"Call emitted Nbr","Chamada emitida Nbr",,
|
||||
"Call emitted Nbr.","Chamada emitida Nbr.",,
|
||||
"Call emitted historical","Chamada histórica emitida",,
|
||||
"Call filters","Filtros de chamada",,
|
||||
"Call reminder template","Modelo de lembrete de chamada",,
|
||||
"Call type","Tipo de chamada",,
|
||||
"Calls","Chamadas",,
|
||||
"Calls Dashboard","Painel de Chamadas",,
|
||||
"Calls Db","Chamadas Db",,
|
||||
"Calls by team by user","Chamadas por equipe por usuário",,
|
||||
"Calls by user(of a team)","Chamadas por usuário(de uma equipe)",,
|
||||
"Calls emitted historical","Chamadas históricas emitidas",,
|
||||
"Calls emitted target completed (%)","Chamadas emitidas alvo completadas (%)",,
|
||||
"Calls held by team by type","Chamadas realizadas por equipe por tipo",,
|
||||
"Calls held by type by user","Chamadas mantidas por tipo por usuário",,
|
||||
"Calls type by team","Chamadas tipo por equipe",,
|
||||
"Calls type by user","Tipo de chamadas por usuário",,
|
||||
"Cancel this reminder",,,
|
||||
"Canceled","Cancelado",,
|
||||
"Cases","Casos",,
|
||||
"Category","Categoria: Categoria",,
|
||||
"Characteristics","Características",,
|
||||
"Chart","Gráfico",,
|
||||
"Check duplicate","Verificar duplicado",,
|
||||
"City","Cidade",,
|
||||
"Civility","Civilidade",,
|
||||
"Closed Opportunities","Oportunidades Fechadas",,
|
||||
"Closed lost","Fechado perdido",,
|
||||
"Closed won","Fechado venceu",,
|
||||
"Code","Código",,
|
||||
"Company","Empresa",,
|
||||
"Configuration","Configuração",,
|
||||
"Confirm lost reason","Confirmar razão perdida",,
|
||||
"Contact","Contato",,
|
||||
"Contact date","Data de contacto",,
|
||||
"Contact details","Detalhes de contato",,
|
||||
"Contact name","Nome do contato",,
|
||||
"Contacts","Contactos",,
|
||||
"Convert","Converter",,
|
||||
"Convert lead","Converter chumbo",,
|
||||
"Convert lead (${ fullName })","Converter chumbo (${ fullName })",,
|
||||
"Convert lead into contact",,,
|
||||
"Convert lead into partner",,,
|
||||
"Converted","Convertidos",,
|
||||
"Country","País de Origem",,
|
||||
"Create a new reminder",,,
|
||||
"Create a quotation",,,
|
||||
"Create event","Criar evento",,
|
||||
"Create new contact","Criar novo contacto",,
|
||||
"Create new partner","Criar novo parceiro",,
|
||||
"Create opportunity","Criar oportunidade",,
|
||||
"Create opportunity (${ fullName })","Criar oportunidade (${ fullName })",,
|
||||
"Create order (${ fullName })","Criar ordem (${ fullName })",,
|
||||
"Create purchase quotation",,,
|
||||
"Create sale quotation",,,
|
||||
"Created Nbr","Criado Nbr",,
|
||||
"Created Nbr.","Criado em Nbr.",,
|
||||
"Created Won","Criado Won",,
|
||||
"Created by","Criado por",,
|
||||
"Created leads by industry sector","Criação de leads por setor de atividade",,
|
||||
"Created leads per month","Criou leads por mês",,
|
||||
"Created leads with at least one opportunity",,,
|
||||
"Created on","Criado em",,
|
||||
"Crm batch","Lote Crm",,
|
||||
"Currency","Moeda",,
|
||||
"Customer","Cliente",,
|
||||
"Customer Description",,,
|
||||
"Customer fixed phone","Telefone fixo do cliente",,
|
||||
"Customer mobile phone","Telefone celular do cliente",,
|
||||
"Customer name","Nome do cliente",,
|
||||
"Customer recovery",,,
|
||||
"Customers","Clientes",,
|
||||
"Daily","Diariamente",,
|
||||
"Daily team call summary by user","Resumo diário das chamadas da equipe por usuário",,
|
||||
"Dashboard","Painel de instrumentos",,
|
||||
"Date from","Data de",,
|
||||
"Date to","Data até",,
|
||||
"Day of month","Dia do mês",,
|
||||
"Day of week","Dia da semana",,
|
||||
"Days","Dias",,
|
||||
"Delete all events","Eliminar todos os eventos",,
|
||||
"Delete only this event","Eliminar apenas este evento",,
|
||||
"Delete this and next events","Eliminar este e os próximos eventos",,
|
||||
"Delivery Address","Endereço de entrega",,
|
||||
"Dep./Div.","Dep./Div.",,
|
||||
"Description","Descrição do produto",,
|
||||
"Display customer description in opportunity",,,
|
||||
"Duration","Duração",,
|
||||
"Duration type","Tipo de duração",,
|
||||
"Email","Email",,
|
||||
"Emails","Emails",,
|
||||
"End","Fim",,
|
||||
"End date","Data final",,
|
||||
"Enterprise","Empresa",,
|
||||
"Enterprise name","Nome da empresa",,
|
||||
"Error in lead conversion","Erro na conversão de leads",,
|
||||
"Estimated budget","Orçamento estimado",,
|
||||
"Event","Evento",,
|
||||
"Event Categories","Categorias de eventos",,
|
||||
"Event Dashboard 1","Painel de Eventos 1",,
|
||||
"Event Db","Evento Db",,
|
||||
"Event categories","Categorias de eventos",,
|
||||
"Event category","Categoria de evento",,
|
||||
"Event configuration categories","Categorias de configuração de eventos",,
|
||||
"Event filters","Filtros de eventos",,
|
||||
"Event reminder","Lembrete de evento",,
|
||||
"Event reminder %s","Lembrete de eventos %s",,
|
||||
"Event reminder batch","Lote de lembrete de evento",,
|
||||
"Event reminder page","Página de lembrete de evento",,
|
||||
"Event reminder template",,,
|
||||
"Event reminders","Lembretes de eventos",,
|
||||
"Event's reminder's generation's reporting :","Relatório de geração de relatórios de lembretes de eventos:",,
|
||||
"Events","Eventos",,
|
||||
"Every %d days","Cada %d dias",,
|
||||
"Every %d months the %d","A cada %d meses a %d",,
|
||||
"Every %d weeks","Cada %d semanas",,
|
||||
"Every %d years the %s","A cada %d anos os %s",,
|
||||
"Every day","Todos os dias",,
|
||||
"Every month","Todos os meses",,
|
||||
"Every month the","Todos os meses o",,
|
||||
"Every week","Todas as semanas",,
|
||||
"Every year","Todos os anos",,
|
||||
"Every year the","Todos os anos o",,
|
||||
"Expected close date","Data de encerramento prevista",,
|
||||
"Fax","Fax",,
|
||||
"Finished","Acabado",,
|
||||
"First name","Nome próprio",,
|
||||
"Fixed Phone","Telefone Fixo",,
|
||||
"Fixed phone","Telefone fixo",,
|
||||
"Follow up","Acompanhamento",,
|
||||
"Follow-up","Acompanhamento",,
|
||||
"For all","Para todos",,
|
||||
"For me","Para mim",,
|
||||
"Fr","Fr",,
|
||||
"Free text",,,
|
||||
"From Date","Data de início",,
|
||||
"From date must be less than the to date","A data de início deve ser menor que a data de término",,
|
||||
"Function","Função",,
|
||||
"General contact details","Dados gerais de contacto",,
|
||||
"Generate CRM configurations","Gerar configurações de CRM",,
|
||||
"Generate Project","Gerar projeto",,
|
||||
"Groups Assignable",,,
|
||||
"Guests","Convidados",,
|
||||
"High","Alto",,
|
||||
"Historical Period","Período Histórico",,
|
||||
"Historical events completed","Eventos históricos concluídos",,
|
||||
"Hours","Horas",,
|
||||
"Import lead","Importar liderança",,
|
||||
"Import leads","Importar leads",,
|
||||
"In process","Em processo",,
|
||||
"Incoming","Entrada",,
|
||||
"Industry Sector","Setor Industrial",,
|
||||
"Industry sector","Sector da indústria",,
|
||||
"Information","Informação",,
|
||||
"Informations","Informações",,
|
||||
"Input location please","Localização da entrada, por favor",,
|
||||
"Invoicing Address","Endereço de faturamento",,
|
||||
"Job Title","Título do Trabalho",,
|
||||
"Key accounts","Principais contas",,
|
||||
"Last name","Sobrenome",,
|
||||
"Lead","Chumbo",,
|
||||
"Lead Assigned","Chefe de fila atribuído",,
|
||||
"Lead Converted","Chumbo convertido",,
|
||||
"Lead Dashboard 1","Painel de comando 1",,
|
||||
"Lead Db","Chumbo Db",,
|
||||
"Lead Db 1","Chumbo Db 1",,
|
||||
"Lead converted","Chumbo convertido",,
|
||||
"Lead created","Chumbo criado",,
|
||||
"Lead filters","Filtros de chumbo",,
|
||||
"Lead.address_information","Informações de endereço",,
|
||||
"Lead.company","Empresa",,
|
||||
"Lead.email","Email",,
|
||||
"Lead.fax","Fax",,
|
||||
"Lead.header","Cabeçalho",,
|
||||
"Lead.industry","Indústria",,
|
||||
"Lead.lead_owner","Proprietário Principal",,
|
||||
"Lead.name","Nome e Sobrenome",,
|
||||
"Lead.other_address","Outro Endereço",,
|
||||
"Lead.phone","Telefone",,
|
||||
"Lead.primary_address","Endereço principal",,
|
||||
"Lead.source","Origem",,
|
||||
"Lead.status","Estado",,
|
||||
"Lead.title","Título",,
|
||||
"Leads","Leads",,
|
||||
"Leads Source","Leads Fonte",,
|
||||
"Leads by Country","Líderes por País",,
|
||||
"Leads by Salesman by Status","Leads por vendedor por status",,
|
||||
"Leads by Source","Líderes por Fonte",,
|
||||
"Leads by Team by Status","Lidera por Equipe por Status",,
|
||||
"Limit Date","Data limite",,
|
||||
"Lose","Perder",,
|
||||
"Loss confirmation","Confirmação de perdas",,
|
||||
"Lost","Perdido",,
|
||||
"Lost reason","Razão perdida",,
|
||||
"Lost reasons","Razões perdidas",,
|
||||
"Low","Baixo",,
|
||||
"MapRest.PinCharLead","L",,
|
||||
"MapRest.PinCharOpportunity","O",,
|
||||
"Marketing","Marketing",,
|
||||
"Meeting","Reuniões",,
|
||||
"Meeting Nbr","Reunião Nbr",,
|
||||
"Meeting Nbr.","Reunião de Nbr.",,
|
||||
"Meeting filters","Filtros de reunião",,
|
||||
"Meeting number historical","Número da reunião histórico",,
|
||||
"Meeting reminder template","Modelo de lembrete de reunião",,
|
||||
"Meeting's date changed template","Modelo alterado da data da reunião",,
|
||||
"Meeting's guest added template","Modelo adicionado pelo convidado da reunião",,
|
||||
"Meeting's guest deleted template","Modelo apagado do convidado da reunião",,
|
||||
"Meetings","Reuniões",,
|
||||
"Meetings number historical","Número de reuniões históricas",,
|
||||
"Meetings number target completed (%)","Número de reuniões meta completada (%)",,
|
||||
"Memo","Memorando",,
|
||||
"Minutes","Minutos",,
|
||||
"Mo","Mo",,
|
||||
"Mobile N°","N° Móvel",,
|
||||
"Mobile phone","Telemóvel",,
|
||||
"Month","Mês",,
|
||||
"Monthly","Mensal",,
|
||||
"Months","Meses",,
|
||||
"My Best Open Deals","Minhas Melhores Ofertas Abertas",,
|
||||
"My CRM events","Meus eventos de CRM",,
|
||||
"My Calendar","Meu Calendário",,
|
||||
"My Calls","Minhas chamadas",,
|
||||
"My Closed Opportunities","Minhas oportunidades fechadas",,
|
||||
"My Current Leads","Meus Leads Atuais",,
|
||||
"My Key accounts","Minhas contas-chave",,
|
||||
"My Leads","Meus Leads",,
|
||||
"My Meetings","Minhas Reuniões",,
|
||||
"My Open Opportunities","Minhas oportunidades em aberto",,
|
||||
"My Opportunities","Minhas Oportunidades",,
|
||||
"My Tasks","Minhas Tarefas",,
|
||||
"My Team Best Open Deals","Minha Equipe Melhor Ofertas Abertas",,
|
||||
"My Team Calls","Minha Equipe Chama",,
|
||||
"My Team Closed Opportunities","Minha Equipe Oportunidades Fechadas",,
|
||||
"My Team Key accounts","Minha equipe Principais contas",,
|
||||
"My Team Leads","A minha equipa lidera",,
|
||||
"My Team Meetings","Minhas Reuniões de Equipe",,
|
||||
"My Team Open Opportunities","Minha Equipe Oportunidades Abertas",,
|
||||
"My Team Tasks","Tarefas da minha equipe",,
|
||||
"My Today Calls","Minhas chamadas de hoje",,
|
||||
"My Today Tasks","Minhas Tarefas de Hoje",,
|
||||
"My Upcoming Meetings","Minhas próximas reuniões",,
|
||||
"My Upcoming Tasks","Minhas próximas tarefas",,
|
||||
"My opportunities","Minhas oportunidades",,
|
||||
"My past events","Meus eventos passados",,
|
||||
"My team opportunities","Oportunidades para a minha equipa",,
|
||||
"My upcoming events","Meus próximos eventos",,
|
||||
"Name","Nome e Sobrenome",,
|
||||
"Negotiation","Negociação",,
|
||||
"New","Novo",,
|
||||
"Next stage","Próximo estágio",,
|
||||
"Next step","Próximo passo",,
|
||||
"No lead import configuration found","Nenhuma configuração de importação de chumbo encontrada",,
|
||||
"No template created in CRM configuration for company %s, emails have not been sent","Nenhum modelo criado na configuração do CRM para a empresa %s, os e-mails não foram enviados",,
|
||||
"Non-participant","Não participante",,
|
||||
"None","Nenhum",,
|
||||
"Normal","Normal",,
|
||||
"Not started","Não iniciado",,
|
||||
"Objective","Objetivo",,
|
||||
"Objective %s is in contradiction with objective's configuration %s","Objetivo %s está em contradição com a configuração do objetivo %s",,
|
||||
"Objectives","Objetivos",,
|
||||
"Objectives Configurations","Configurações de Objetivos",,
|
||||
"Objectives Team Db","Objetivos Equipe Db",,
|
||||
"Objectives User Db","Objetivos Usuário Db",,
|
||||
"Objectives configurations","Configurações de objetivos",,
|
||||
"Objectives team Dashboard","Objectivos da equipa Dashboard",,
|
||||
"Objectives user Dashboard","Objetivos do painel de controle do usuário",,
|
||||
"Objectives' generation's reporting :","Relatórios de geração de relatórios dos objetivos :",,
|
||||
"Office name","Nome do escritório",,
|
||||
"On going","Continuando",,
|
||||
"Open Cases by Agents","Casos abertos por agentes",,
|
||||
"Open Opportunities","Oportunidades abertas",,
|
||||
"Operation mode",,,
|
||||
"Opportunities","Oportunidades",,
|
||||
"Opportunities By Origin By Stage","Oportunidades por origem por etapa",,
|
||||
"Opportunities By Sale Stage","Oportunidades por etapa de venda",,
|
||||
"Opportunities By Source","Oportunidades por Fonte",,
|
||||
"Opportunities By Type","Oportunidades por tipo",,
|
||||
"Opportunities Db 1","Oportunidades Db 1",,
|
||||
"Opportunities Db 2","Oportunidades Db 2",,
|
||||
"Opportunities Db 3","Oportunidades Db 3",,
|
||||
"Opportunities Won By Lead Source","Oportunidades ganhas por fonte principal",,
|
||||
"Opportunities Won By Partner","Oportunidades ganhas por parceiro",,
|
||||
"Opportunities Won By Salesman","Oportunidades ganhas pelo vendedor",,
|
||||
"Opportunities amount won historical","Histórico do montante das oportunidades ganhas",,
|
||||
"Opportunities amount won target competed (%)","Valor das oportunidades ganhas alvo competido (%)",,
|
||||
"Opportunities amount won target completed (%)","Montante de oportunidades ganho meta concluída (%)",,
|
||||
"Opportunities created number historical","Histórico do número de oportunidades criadas",,
|
||||
"Opportunities created number target completed (%)","Oportunidades criadas número alvo concluído (%)",,
|
||||
"Opportunities created won historical","As oportunidades criadas ganharam histórico",,
|
||||
"Opportunities created won target completed (%)","Oportunidades criadas ganhou destino concluído (%)",,
|
||||
"Opportunities filters","Filtros de oportunidades",,
|
||||
"Opportunity","Oportunidade",,
|
||||
"Opportunity Type","Tipo de oportunidade",,
|
||||
"Opportunity created","Oportunidade criada",,
|
||||
"Opportunity lost","Oportunidade perdida",,
|
||||
"Opportunity type","Tipo de oportunidade",,
|
||||
"Opportunity types","Tipos de oportunidades",,
|
||||
"Opportunity won","Oportunidade ganha",,
|
||||
"Optional participant","Participante opcional",,
|
||||
"Order by state","Ordem por estado",,
|
||||
"Organization","Organização",,
|
||||
"Outgoing","Saída",,
|
||||
"Parent event","Evento dos pais",,
|
||||
"Parent lead is missing.","A pista dos pais desapareceu.",,
|
||||
"Partner","Parceiro",,
|
||||
"Partner Details","Detalhes do parceiro",,
|
||||
"Pending","Pendente",,
|
||||
"Period type","Tipo de período",,
|
||||
"Periodicity must be greater than 0","A periodicidade deve ser superior a 0",,
|
||||
"Picture","Retrato",,
|
||||
"Pipeline","Gasoduto",,
|
||||
"Pipeline by Stage and Type","Gasoduto por Estágio e Tipo",,
|
||||
"Pipeline next 90 days","Gasoduto nos próximos 90 dias",,
|
||||
"Planned","Planejado",,
|
||||
"Please configure all templates in CRM configuration for company %s","Por favor, configure todos os modelos na configuração de CRM para empresas %s",,
|
||||
"Please configure informations for CRM for company %s","Por favor, configure as informações de CRM para empresas %s",,
|
||||
"Please save the event before setting the recurrence","Por favor, salve o evento antes de definir a recorrência",,
|
||||
"Please select a lead",,,
|
||||
"Please select the Lead(s) to print.","Selecione o(s) Líder(es) a ser(em) impresso(s).",,
|
||||
"Postal code","Código Postal",,
|
||||
"Present","Presente",,
|
||||
"Previous stage","Etapa anterior",,
|
||||
"Previous step","Etapa anterior",,
|
||||
"Primary address","Endereço primário",,
|
||||
"Print","Imprimir",,
|
||||
"Priority","Prioridade",,
|
||||
"Probability (%)","Probabilidade (%)",,
|
||||
"Proposition","Proposta",,
|
||||
"Qualification","Qualificação",,
|
||||
"Realized","Realizado",,
|
||||
"Recent lost deals","Transacções perdidas recentemente",,
|
||||
"Recently created opportunities","Oportunidades recentemente criadas",,
|
||||
"Recurrence","Recorrência",,
|
||||
"Recurrence assistant","Assistente de recorrência",,
|
||||
"Recurrence configuration","Configuração de recorrência",,
|
||||
"Recurrence name","Nome da recorrência",,
|
||||
"Recurrent","Recorrente",,
|
||||
"Recycle","Reciclar",,
|
||||
"Recycled","Reciclado",,
|
||||
"Reference","Referência",,
|
||||
"References","Referências",,
|
||||
"Referred by","Referido por",,
|
||||
"Region","Região",,
|
||||
"Rejection of calls","Rejeição de chamadas",,
|
||||
"Rejection of e-mails","Rejeição de e-mails",,
|
||||
"Related to","Relacionado a",,
|
||||
"Related to select","Relacionado a selecionar",,
|
||||
"Reminded","Relembrado",,
|
||||
"Reminder",,,
|
||||
"Reminder Templates","Modelos de Lembrete",,
|
||||
"Reminder(s) treated","Lembrete(s) tratado(s)",,
|
||||
"Reminders","Lembretes",,
|
||||
"Repeat every","Repita cada",,
|
||||
"Repeat every:","Repita todos:",,
|
||||
"Repeat the:","Repita o procedimento:",,
|
||||
"Repetitions number","Número de repetições",,
|
||||
"Reported","Reportado",,
|
||||
"Reportings","Relatórios",,
|
||||
"Reports","Relatórios",,
|
||||
"Required participant","Participante obrigatório",,
|
||||
"Sa","Sa",,
|
||||
"Sale quotations/orders","Cotações de venda/encomendas",,
|
||||
"Sales Stage","Estágio de vendas",,
|
||||
"Sales orders amount won historical","Histórico de pedidos de venda ganhos",,
|
||||
"Sales orders amount won target completed (%)","Montante de pedidos de venda conquistado destino concluído (%)",,
|
||||
"Sales orders created number historical","Histórico do número de ordens do cliente criadas",,
|
||||
"Sales orders created number target completed (%)","Número de ordens do cliente criadas número teórico concluído (%)",,
|
||||
"Sales orders created won historical","Os pedidos de venda criados ganharam histórico",,
|
||||
"Sales orders created won target completed","Pedidos de venda criados ganharam destino concluído",,
|
||||
"Sales orders created won target completed (%)","Ordens de venda criadas ganhas destino concluídas (%)",,
|
||||
"Sales stage","Etapa de vendas",,
|
||||
"Salesman","Vendedor",,
|
||||
"Schedule Event","Agendar Evento",,
|
||||
"Schedule Event (${ fullName })","Agendar Evento (${ nome completo })",,
|
||||
"Schedule Event(${ fullName})","Agendar Evento (${ nome completo})",,
|
||||
"Select Contact","Selecione Contato",,
|
||||
"Select Partner","Selecionar Parceiro",,
|
||||
"Select existing contact","Selecionar contato existente",,
|
||||
"Select existing partner","Selecionar parceiro existente",,
|
||||
"Send Email","Enviar e-mail",,
|
||||
"Send email","Enviar e-mail",,
|
||||
"Sending date",,,
|
||||
"Settings","Ajustes",,
|
||||
"Show Partner","Mostrar Parceiro",,
|
||||
"Show all events","Mostrar todos os eventos",,
|
||||
"Some user groups",,,
|
||||
"Source","Origem",,
|
||||
"Source description","Descrição da fonte",,
|
||||
"Start","Início",,
|
||||
"Start date","Data de início",,
|
||||
"State","Estado",,
|
||||
"Status","Estado",,
|
||||
"Status description","Descrição do status",,
|
||||
"Su","Su",,
|
||||
"Take charge","Assumir o comando",,
|
||||
"Target","Alvo",,
|
||||
"Target User Dashboard","Painel do Usuário Alvo",,
|
||||
"Target batch","Lote teórico",,
|
||||
"Target configuration","Configuração de destino",,
|
||||
"Target configurations","Configurações de destino",,
|
||||
"Target page","Página de destino",,
|
||||
"Target team Dashboard","Equipa alvo Painel de instrumentos",,
|
||||
"Target vs Real","Alvo vs Real",,
|
||||
"Targets configurations","Configurações de alvos",,
|
||||
"Task","Tarefa",,
|
||||
"Task reminder template","Modelo de lembrete de tarefa",,
|
||||
"Tasks","Tarefas",,
|
||||
"Tasks filters","Filtros de tarefas",,
|
||||
"Team","Equipe",,
|
||||
"Th","Th",,
|
||||
"The end date must be after the start date","A data final deve ser posterior à data de início",,
|
||||
"The number of repetitions must be greater than 0","O número de repetições deve ser maior que 0",,
|
||||
"Title","Título",,
|
||||
"To Date","Até à data",,
|
||||
"Tools","Ferramentas",,
|
||||
"Trading name","Nome comercial",,
|
||||
"Treated objectives reporting","Relatórios sobre os objectivos tratados",,
|
||||
"Tu","Tu",,
|
||||
"Type","Tipo de",,
|
||||
"Type of need",,,
|
||||
"UID (Calendar)","UID (Calendário)",,
|
||||
"Unassigned Leads","Leads não atribuídos",,
|
||||
"Unassigned Opportunities","Oportunidades não atribuídas",,
|
||||
"Unassigned opportunities","Oportunidades não atribuídas",,
|
||||
"Upcoming events","Próximos eventos",,
|
||||
"Urgent","Urgente",,
|
||||
"User","Usuário",,
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured.",,,
|
||||
"User %s must have an active company to use templates","Os User %s devem ter uma empresa ativa para utilizar modelos",,
|
||||
"Validate","Validar",,
|
||||
"We","Nós",,
|
||||
"Website","Sítio Web",,
|
||||
"Weekly","Semanal",,
|
||||
"Weeks","Semanas",,
|
||||
"Win","Ganhar",,
|
||||
"Worst case","Pior caso",,
|
||||
"Years","Anos",,
|
||||
"You don't have the rights to delete this event","Você não tem o direito de apagar este evento",,
|
||||
"You must choose a recurrence type","É necessário selecionar um tipo de recorrência",,
|
||||
"You must choose at least one day in the week","Você deve escolher pelo menos um dia da semana",,
|
||||
"amount","quantia",,
|
||||
"com.axelor.apps.crm.job.EventReminderJob","com.axelor.apps.crm.job.EventReminderJob",,
|
||||
"com.axelor.apps.crm.service.batch.CrmBatchService","com.axelor.apps.crm.service.batch.batch.CrmBatchService",,
|
||||
"crm.New","Novo",,
|
||||
"date","data",,
|
||||
"every week's day","todos os dias da semana",,
|
||||
"everyday","cotidiano",,
|
||||
"fri,","fri,",,
|
||||
"http://www.url.com","http://www.url.com",,
|
||||
"important","importante",,
|
||||
"mon,","mon,",,
|
||||
"on","sobre",,
|
||||
"portal.daily.team.calls.summary.by.user","portal.daily.team.calls.summary.by.user",,
|
||||
"sat,","sentado,",,
|
||||
"success","êxito",,
|
||||
"sun,","Sol,",,
|
||||
"thur,","Thur,",,
|
||||
"tues,","Tues,",,
|
||||
"until the","até que o",,
|
||||
"value:CRM","valor:CRM",,
|
||||
"warning","advertência",,
|
||||
"wed,","casar, casar.",,
|
||||
"whatever@example.com","whatever@example.com",,
|
||||
"www.url.com","www.url.com",,
|
||||
|
@ -0,0 +1,521 @@
|
||||
"key","message","comment","context"
|
||||
"%d times","%d раз",,
|
||||
"+33000000000",,,
|
||||
"+33100000000",,,
|
||||
"<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />","<a class='fa fa-facebook' href='http://www.facebook.com' target='_blank' />",,
|
||||
"<a class='fa fa-google' href='http://www.google.com' target='_blank' />","<a class='fa-google' href='http://www.google.com' target='_blank' />",,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />","<a class='fa fa-twitter' href='http://www.twitter.com' target='_blank' />",,
|
||||
"<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />","<a class='fa fa-youtube' href='http://www.youtube.com' target='_blank' />",,
|
||||
"<span class='label label-warning'>The selected date is in the past.</span>",,,
|
||||
"<span class='label label-warning'>There is already a lead with this name.</span>","<span class='label-warning'>Класс разворота='label-warning'>Там уже есть зацепка с этим именем.</span>.",,
|
||||
"<span style=""height:21px; line-height: 21px; margin-top:18px; display:inline-block"">VS</span>",,,
|
||||
"A lost reason must be selected","Должна быть выбрана потерянная причина",,
|
||||
"Action","Действие",,
|
||||
"Activities","Мероприятия",,
|
||||
"Add","Добавить",,
|
||||
"Add a guest","Добавить гостя",,
|
||||
"Address","Адрес",,
|
||||
"After n repetitions","После n повторений",,
|
||||
"All past events","Все прошлые события",,
|
||||
"All upcoming events","Все предстоящие события",,
|
||||
"All users",,,
|
||||
"Amount","Сумма",,
|
||||
"Amount Won","Сумма вон",,
|
||||
"Amount won","Сумма выиграна",,
|
||||
"App Crm","App Crm",,
|
||||
"Apply changes to all recurrence's events","Применять изменения во всех повторяющихся событиях",,
|
||||
"Apply changes to this event only","Применять изменения только к этому событию",,
|
||||
"Apply modifications","Применять изменения",,
|
||||
"Apply modifications for all","Применять изменения для всех случаев",,
|
||||
"Are you sure you want to convert the lead?","Ты уверен, что хочешь преобразовать свинец?",,
|
||||
"Assign to","Назначить",,
|
||||
"Assign to me","Назначить мне",,
|
||||
"Assignable Users",,,
|
||||
"Assigned","Назначенный",,
|
||||
"Assigned to","Назначенный",,
|
||||
"At specific date",,,
|
||||
"At the date","На дату",,
|
||||
"Attendee","Посетитель",,
|
||||
"Available","В наличии",,
|
||||
"Average duration between lead and first opportunity (days)",,,
|
||||
"Batchs","Пакеты",,
|
||||
"Before start date",,,
|
||||
"Best Open Deals","Лучшие открытые сделки",,
|
||||
"Best case","В лучшем случае",,
|
||||
"Busy","Занят",,
|
||||
"CRM","CRM",,
|
||||
"CRM Activities","Деятельность по СО",,
|
||||
"CRM Batch","Пакет CRM",,
|
||||
"CRM batches","партии СО",,
|
||||
"CRM config","конфигурация CRM",,
|
||||
"CRM config (${ name })","CRM-конфигурация (${ название })",,
|
||||
"CRM configuration","конфигурация CRM",,
|
||||
"CRM configurations","конфигурации CRM",,
|
||||
"CRM events","события CRM",,
|
||||
"Call","Звонок",,
|
||||
"Call emitted Nbr","Звонок испускается кистью.",,
|
||||
"Call emitted Nbr.","Звонок испускается кистью.",,
|
||||
"Call emitted historical","Звонок исходил из истории",,
|
||||
"Call filters","Фильтры вызовов",,
|
||||
"Call reminder template","Шаблон напоминания о вызове",,
|
||||
"Call type","Тип вызова",,
|
||||
"Calls","Звонки",,
|
||||
"Calls Dashboard","Приборная панель вызовов",,
|
||||
"Calls Db","Вызовы Db",,
|
||||
"Calls by team by user","Звонки от команды по пользователям",,
|
||||
"Calls by user(of a team)","Звонки от пользователя (команды)",,
|
||||
"Calls emitted historical","Звонки, которые были сделаны в прошлом.",,
|
||||
"Calls emitted target completed (%)","Цель выполнена (%) Переданные вызовы завершены",,
|
||||
"Calls held by team by type","Звонки, выполняемые командой по типу",,
|
||||
"Calls held by type by user","Разбивка звонков по типу по пользователям",,
|
||||
"Calls type by team","Тип звонков по командам",,
|
||||
"Calls type by user","Тип звонков по пользователям",,
|
||||
"Cancel this reminder",,,
|
||||
"Canceled","Отмена",,
|
||||
"Cases","Корпуса",,
|
||||
"Category","Категория",,
|
||||
"Characteristics","Характеристики",,
|
||||
"Chart","Диаграмма",,
|
||||
"Check duplicate","Проверьте дубликат",,
|
||||
"City","Город",,
|
||||
"Civility","Вежливость",,
|
||||
"Closed Opportunities","Закрытые возможности",,
|
||||
"Closed lost","Закрытый потерянный",,
|
||||
"Closed won","Закрытый выиграл",,
|
||||
"Code","Код",,
|
||||
"Company","Компания",,
|
||||
"Configuration","Конфигурация",,
|
||||
"Confirm lost reason","Подтвердите утерянную причину",,
|
||||
"Contact","Контакт",,
|
||||
"Contact date","Дата контакта",,
|
||||
"Contact details","Контактная информация",,
|
||||
"Contact name","Имя контакта",,
|
||||
"Contacts","Контакты",,
|
||||
"Convert","Преобразовать",,
|
||||
"Convert lead","Преобразовать свинец",,
|
||||
"Convert lead (${ fullName })","Преобразовать свинец (${полное имя })",,
|
||||
"Convert lead into contact",,,
|
||||
"Convert lead into partner",,,
|
||||
"Converted","Преобразован",,
|
||||
"Country","Страна",,
|
||||
"Create a new reminder",,,
|
||||
"Create a quotation",,,
|
||||
"Create event","Создать событие",,
|
||||
"Create new contact","Создать новый контакт",,
|
||||
"Create new partner","Создать нового партнера",,
|
||||
"Create opportunity","Создать возможность",,
|
||||
"Create opportunity (${ fullName })","Создать возможность (${полное имя })",,
|
||||
"Create order (${ fullName })","Создать заказ (${ полное имя })",,
|
||||
"Create purchase quotation",,,
|
||||
"Create sale quotation",,,
|
||||
"Created Nbr","Созданный Нбр",,
|
||||
"Created Nbr.","Создан Нбр.",,
|
||||
"Created Won","Созданный Вон",,
|
||||
"Created by","Созданный",,
|
||||
"Created leads by industry sector","Созданы лидерами по отраслям промышленности",,
|
||||
"Created leads per month","Созданные ссылки в месяц",,
|
||||
"Created leads with at least one opportunity",,,
|
||||
"Created on","Созданный на",,
|
||||
"Crm batch","Партия термостатов",,
|
||||
"Currency","Валюта",,
|
||||
"Customer","Клиент",,
|
||||
"Customer Description",,,
|
||||
"Customer fixed phone","Стационарный телефон",,
|
||||
"Customer mobile phone","Клиент мобильного телефона",,
|
||||
"Customer name","Имя клиента",,
|
||||
"Customer recovery",,,
|
||||
"Customers","Клиенты",,
|
||||
"Daily","Ежедневно",,
|
||||
"Daily team call summary by user","Ежедневный сводный отчет о звонках в команду по пользователям",,
|
||||
"Dashboard","Приборная панель",,
|
||||
"Date from","Дата от",,
|
||||
"Date to","Дата",,
|
||||
"Day of month","День месяца",,
|
||||
"Day of week","День недели",,
|
||||
"Days","Дни",,
|
||||
"Delete all events","Удалить все события",,
|
||||
"Delete only this event","Удалить только это событие",,
|
||||
"Delete this and next events","Удалить это и последующие события",,
|
||||
"Delivery Address","Адрес доставки",,
|
||||
"Dep./Div.","Деп./Див.",,
|
||||
"Description","Описание",,
|
||||
"Display customer description in opportunity",,,
|
||||
"Duration","Продолжительность",,
|
||||
"Duration type","Тип продолжительности",,
|
||||
"Email","Электронная почта",,
|
||||
"Emails","Электронная почта",,
|
||||
"End","Конец",,
|
||||
"End date","Дата окончания",,
|
||||
"Enterprise","Предприятие",,
|
||||
"Enterprise name","Название предприятия",,
|
||||
"Error in lead conversion","Ошибка преобразования свинца в свинец",,
|
||||
"Estimated budget","Сметный бюджет",,
|
||||
"Event","Событие",,
|
||||
"Event Categories","Категории мероприятий",,
|
||||
"Event Dashboard 1","Приборная панель событий 1",,
|
||||
"Event Db","Событие Db",,
|
||||
"Event categories","Категории мероприятий",,
|
||||
"Event category","Категория мероприятия",,
|
||||
"Event configuration categories","Категории конфигурации событий",,
|
||||
"Event filters","Фильтры событий",,
|
||||
"Event reminder","Напоминание о событии",,
|
||||
"Event reminder %s","Напоминание о событии %s",,
|
||||
"Event reminder batch","Пакет напоминаний о событии",,
|
||||
"Event reminder page","Страница напоминания о событии",,
|
||||
"Event reminder template",,,
|
||||
"Event reminders","Напоминания о событиях",,
|
||||
"Event's reminder's generation's reporting :","Отчет поколения напоминания о событии:",,
|
||||
"Events","События",,
|
||||
"Every %d days","Каждый день",,
|
||||
"Every %d months the %d","Каждые %d месяцев %d",,
|
||||
"Every %d weeks","Каждые %d недели",,
|
||||
"Every %d years the %s","Каждые % в год %s",,
|
||||
"Every day","Каждый день",,
|
||||
"Every month","Каждый месяц",,
|
||||
"Every month the","Каждый месяц",,
|
||||
"Every week","Каждую неделю",,
|
||||
"Every year","Каждый год",,
|
||||
"Every year the","Каждый год",,
|
||||
"Expected close date","Ожидаемая дата закрытия",,
|
||||
"Fax","Факс",,
|
||||
"Finished","Готово",,
|
||||
"First name","Имя",,
|
||||
"Fixed Phone","Фиксированный телефон",,
|
||||
"Fixed phone","Стационарный телефон",,
|
||||
"Follow up","Последующие действия",,
|
||||
"Follow-up","Последующая деятельность",,
|
||||
"For all","Для всех",,
|
||||
"For me","Для меня",,
|
||||
"Fr","Отец",,
|
||||
"Free text",,,
|
||||
"From Date","С даты",,
|
||||
"From date must be less than the to date","С сегодняшнего дня должно быть меньше, чем на сегодняшний день.",,
|
||||
"Function","Функция",,
|
||||
"General contact details","Общие контактные данные",,
|
||||
"Generate CRM configurations","Генерация конфигураций CRM",,
|
||||
"Generate Project","Создать проект",,
|
||||
"Groups Assignable",,,
|
||||
"Guests","Гости",,
|
||||
"High","Высоко",,
|
||||
"Historical Period","Исторический период",,
|
||||
"Historical events completed","Завершены исторические события",,
|
||||
"Hours","Часы",,
|
||||
"Import lead","Импорт свинца",,
|
||||
"Import leads","Заказы на импорт",,
|
||||
"In process","В процессе",,
|
||||
"Incoming","Входящий",,
|
||||
"Industry Sector","Промышленный сектор",,
|
||||
"Industry sector","Промышленный сектор",,
|
||||
"Information","Информация",,
|
||||
"Informations","Информация",,
|
||||
"Input location please","Место ввода, пожалуйста.",,
|
||||
"Invoicing Address","Адрес выставления счетов",,
|
||||
"Job Title","Название работы",,
|
||||
"Key accounts","Ключевые клиенты",,
|
||||
"Last name","Фамилия",,
|
||||
"Lead","Свинец",,
|
||||
"Lead Assigned","Назначенный свинец",,
|
||||
"Lead Converted","Свинец Преобразован",,
|
||||
"Lead Dashboard 1","Приборная панель 1 со свинцом",,
|
||||
"Lead Db","Свинец Db",,
|
||||
"Lead Db 1","Свинец Db 1",,
|
||||
"Lead converted","Преобразование свинца",,
|
||||
"Lead created","Свинец создан",,
|
||||
"Lead filters","Свинцовые фильтры",,
|
||||
"Lead.address_information","Адрес Информация",,
|
||||
"Lead.company","Компания",,
|
||||
"Lead.email","Электронная почта",,
|
||||
"Lead.fax","Факс",,
|
||||
"Lead.header","Заголовок",,
|
||||
"Lead.industry","Промышленность",,
|
||||
"Lead.lead_owner","Ведущий владелец",,
|
||||
"Lead.name","Имя",,
|
||||
"Lead.other_address","Другой адрес",,
|
||||
"Lead.phone","Телефон",,
|
||||
"Lead.primary_address","Основной адрес",,
|
||||
"Lead.source","Источник",,
|
||||
"Lead.status","Статус",,
|
||||
"Lead.title","Название",,
|
||||
"Leads","Зацепки",,
|
||||
"Leads Source","Ссылки на источник",,
|
||||
"Leads by Country","Ведущие позиции по странам",,
|
||||
"Leads by Salesman by Status","Ведущие позиции по статусу у продавца",,
|
||||
"Leads by Source","Ссылки на источник",,
|
||||
"Leads by Team by Status","Руководит командой по статусу",,
|
||||
"Limit Date","Предельная дата",,
|
||||
"Lose","Потерял",,
|
||||
"Loss confirmation","Подтверждение убытков",,
|
||||
"Lost","Потерянный",,
|
||||
"Lost reason","Потерянная причина",,
|
||||
"Lost reasons","Потерянные причины",,
|
||||
"Low","Низкий",,
|
||||
"MapRest.PinCharLead","L",,
|
||||
"MapRest.PinCharOpportunity","O",,
|
||||
"Marketing","Маркетинг",,
|
||||
"Meeting","Встреча",,
|
||||
"Meeting Nbr","Встреча с Нбром",,
|
||||
"Meeting Nbr.","Встреча с Нбр.",,
|
||||
"Meeting filters","Фильтры совещаний",,
|
||||
"Meeting number historical","Номер совещания исторический",,
|
||||
"Meeting reminder template","Шаблон напоминания о встрече",,
|
||||
"Meeting's date changed template","Дата проведения собрания изменена шаблон",,
|
||||
"Meeting's guest added template","Шаблон, добавленный гостем совещания",,
|
||||
"Meeting's guest deleted template","Удаленный шаблон гостя совещания",,
|
||||
"Meetings","Встречи",,
|
||||
"Meetings number historical","Номер встречи исторический",,
|
||||
"Meetings number target completed (%)","Целевой показатель числа завершенных заседаний (%)",,
|
||||
"Memo","Записка",,
|
||||
"Minutes","Минуты",,
|
||||
"Mo","Мо",,
|
||||
"Mobile N°","Мобильный N°",,
|
||||
"Mobile phone","Мобильный телефон",,
|
||||
"Month","Месяц",,
|
||||
"Monthly","Ежемесячно",,
|
||||
"Months","Месяцы",,
|
||||
"My Best Open Deals","Мои лучшие открытые сделки",,
|
||||
"My CRM events","Мои CRM-события",,
|
||||
"My Calendar","Мой календарь",,
|
||||
"My Calls","Мои звонки",,
|
||||
"My Closed Opportunities","Мои закрытые возможности",,
|
||||
"My Current Leads","Мои текущие ссылки",,
|
||||
"My Key accounts","Мои ключевые клиенты",,
|
||||
"My Leads","Мои ссылки",,
|
||||
"My Meetings","Мои встречи",,
|
||||
"My Open Opportunities","Мои открытые возможности",,
|
||||
"My Opportunities","Мои возможности",,
|
||||
"My Tasks","Мои задачи",,
|
||||
"My Team Best Open Deals","Лучшие открытые сделки моей команды",,
|
||||
"My Team Calls","Звонки моей команды",,
|
||||
"My Team Closed Opportunities","Моя команда закрыла возможности",,
|
||||
"My Team Key accounts","Ключевые клиенты моей команды",,
|
||||
"My Team Leads","Руководители моей команды",,
|
||||
"My Team Meetings","Собрания моей команды",,
|
||||
"My Team Open Opportunities","Моя команда открывает возможности",,
|
||||
"My Team Tasks","Задачи моей команды",,
|
||||
"My Today Calls","Мои сегодняшние звонки",,
|
||||
"My Today Tasks","Мои сегодняшние задачи",,
|
||||
"My Upcoming Meetings","Мои предстоящие встречи",,
|
||||
"My Upcoming Tasks","Мои ближайшие задачи",,
|
||||
"My opportunities","Мои возможности",,
|
||||
"My past events","Мои прошлые события",,
|
||||
"My team opportunities","Возможности моей команды",,
|
||||
"My upcoming events","Мои ближайшие события",,
|
||||
"Name","Имя",,
|
||||
"Negotiation","Переговоры",,
|
||||
"New","Новый",,
|
||||
"Next stage","Следующий этап",,
|
||||
"Next step","Следующий шаг",,
|
||||
"No lead import configuration found","Конфигурация импорта свинца не найдена",,
|
||||
"No template created in CRM configuration for company %s, emails have not been sent","Нет шаблона, созданного в CRM конфигурации для % компании, электронная почта не была отправлена.",,
|
||||
"Non-participant","Неучастник",,
|
||||
"None","Нет",,
|
||||
"Normal","Нормальный",,
|
||||
"Not started","Не начал",,
|
||||
"Objective","Цель",,
|
||||
"Objective %s is in contradiction with objective's configuration %s","Объективные %s противоречат конфигурации объекта %s",,
|
||||
"Objectives","Цели",,
|
||||
"Objectives Configurations","Задачи Конфигурации Задачи Конфигурации",,
|
||||
"Objectives Team Db","Цели Команда Db",,
|
||||
"Objectives User Db","Задачи Пользователь Db",,
|
||||
"Objectives configurations","Конфигурации целей",,
|
||||
"Objectives team Dashboard","Задачи команды Приборная панель",,
|
||||
"Objectives user Dashboard","Задачи пользователя Панель управления",,
|
||||
"Objectives' generation's reporting :","Поколение отчетов о достижении целей :",,
|
||||
"Office name","Название офиса",,
|
||||
"On going","Продолжаем",,
|
||||
"Open Cases by Agents","Открытые дела агентов",,
|
||||
"Open Opportunities","Открытые возможности",,
|
||||
"Operation mode",,,
|
||||
"Opportunities","Возможности",,
|
||||
"Opportunities By Origin By Stage","Возможности по происхождению по этапам",,
|
||||
"Opportunities By Sale Stage","Возможности по этапам продаж",,
|
||||
"Opportunities By Source","Возможности по источникам",,
|
||||
"Opportunities By Type","Возможности по типу",,
|
||||
"Opportunities Db 1","Возможности Db 1",,
|
||||
"Opportunities Db 2","Возможности Db 2",,
|
||||
"Opportunities Db 3","Возможности Db 3",,
|
||||
"Opportunities Won By Lead Source","Возможности, выигранные от использования свинца",,
|
||||
"Opportunities Won By Partner","Возможности, выигранные партнером",,
|
||||
"Opportunities Won By Salesman","Возможности, выигранные продавцом",,
|
||||
"Opportunities amount won historical","Возможности сумма выигранных исторических выигрышей",,
|
||||
"Opportunities amount won target competed (%)","Количество выигранных возможностей Количество выигранных целевых показателей (%)",,
|
||||
"Opportunities amount won target completed (%)","Количество выигранных возможностей целевой показатель выполнен (%)",,
|
||||
"Opportunities created number historical","Созданные возможности имеют историческую значимость",,
|
||||
"Opportunities created number target completed (%)","Целевое число созданных возможностей выполнено (%)",,
|
||||
"Opportunities created won historical","Созданные возможности завоевали исторический успех",,
|
||||
"Opportunities created won target completed (%)","Созданные возможности целевой показатель выполнен (%)",,
|
||||
"Opportunities filters","Фильтры возможностей",,
|
||||
"Opportunity","Возможность",,
|
||||
"Opportunity Type","Тип возможностей",,
|
||||
"Opportunity created","Созданные возможности",,
|
||||
"Opportunity lost","Потерянная возможность",,
|
||||
"Opportunity type","Тип возможностей",,
|
||||
"Opportunity types","Типы возможностей",,
|
||||
"Opportunity won","Выигранная возможность",,
|
||||
"Optional participant","Необязательный участник",,
|
||||
"Order by state","Государственный заказ",,
|
||||
"Organization","Организация",,
|
||||
"Outgoing","Отбывающий",,
|
||||
"Parent event","Родительское мероприятие",,
|
||||
"Parent lead is missing.","Родительский свинец пропал.",,
|
||||
"Partner","Партнер",,
|
||||
"Partner Details","Информация о партнере",,
|
||||
"Pending","В ожидании",,
|
||||
"Period type","Тип периода",,
|
||||
"Periodicity must be greater than 0","Периодичность должна быть больше 0",,
|
||||
"Picture","Фотография",,
|
||||
"Pipeline","Трубопровод",,
|
||||
"Pipeline by Stage and Type","Трубопровод по этапам и типам строительства",,
|
||||
"Pipeline next 90 days","Трубопровод в ближайшие 90 дней",,
|
||||
"Planned","Запланированный",,
|
||||
"Please configure all templates in CRM configuration for company %s","Пожалуйста, настройте все шаблоны в конфигурации CRM для %s компании.",,
|
||||
"Please configure informations for CRM for company %s","Пожалуйста, настройте информацию для CRM для %s компании.",,
|
||||
"Please save the event before setting the recurrence","Пожалуйста, сохраните событие перед установкой рецидива.",,
|
||||
"Please select a lead",,,
|
||||
"Please select the Lead(s) to print.","Выберите Ссылку(ы) для печати.",,
|
||||
"Postal code","Почтовый индекс",,
|
||||
"Present","Подарок",,
|
||||
"Previous stage","Предыдущий этап",,
|
||||
"Previous step","Предыдущий шаг",,
|
||||
"Primary address","Основной адрес",,
|
||||
"Print","Печать",,
|
||||
"Priority","Приоритет",,
|
||||
"Probability (%)","Вероятность (%)",,
|
||||
"Proposition","Предложение",,
|
||||
"Qualification","Квалификация",,
|
||||
"Realized","Реализован",,
|
||||
"Recent lost deals","Последние проигранные сделки",,
|
||||
"Recently created opportunities","Недавно созданные возможности",,
|
||||
"Recurrence","Повторение",,
|
||||
"Recurrence assistant","Помощник по повторениям",,
|
||||
"Recurrence configuration","Повторяющаяся конфигурация",,
|
||||
"Recurrence name","Повторяющееся имя",,
|
||||
"Recurrent","Повторяющийся",,
|
||||
"Recycle","Переработка",,
|
||||
"Recycled","Вторичная переработка",,
|
||||
"Reference","Ссылка",,
|
||||
"References","Ссылки",,
|
||||
"Referred by","Ссылаясь на",,
|
||||
"Region","Регион",,
|
||||
"Rejection of calls","Отклонение вызовов",,
|
||||
"Rejection of e-mails","Отклонение электронных писем",,
|
||||
"Related to","Связанный с",,
|
||||
"Related to select","Связанные с выбором",,
|
||||
"Reminded","Напомнил",,
|
||||
"Reminder",,,
|
||||
"Reminder Templates","Напоминания Шаблоны",,
|
||||
"Reminder(s) treated","Напоминание(и) обработано(ы)",,
|
||||
"Reminders","Напоминания",,
|
||||
"Repeat every","Повторите каждый",,
|
||||
"Repeat every:","Повторите все:",,
|
||||
"Repeat the:","Повторите:",,
|
||||
"Repetitions number","Номер повтора",,
|
||||
"Reported","Сообщено",,
|
||||
"Reportings","Отчеты",,
|
||||
"Reports","Отчеты",,
|
||||
"Required participant","Требуемый участник",,
|
||||
"Sa","Са",,
|
||||
"Sale quotations/orders","Продажа котировок/заказов",,
|
||||
"Sales Stage","Этап продаж",,
|
||||
"Sales orders amount won historical","Количество выигранных заказов на продажу за прошлые годы",,
|
||||
"Sales orders amount won target completed (%)","Объем полученных заказов на продажу выполнен целевой показатель (%)",,
|
||||
"Sales orders created number historical","Количество созданных заказов на продажу за прошлые периоды",,
|
||||
"Sales orders created number target completed (%)","Целевой показатель количества созданных заказов на продажу выполнен (%)",,
|
||||
"Sales orders created won historical","Созданные заказы на продажу завоевали исторический успех",,
|
||||
"Sales orders created won target completed","Созданные заказы на продажу были успешно выполнены.",,
|
||||
"Sales orders created won target completed (%)","Созданные заказы на продажу выполнены (%) целевой показатель выполнен",,
|
||||
"Sales stage","Стадия продаж",,
|
||||
"Salesman","Продавец",,
|
||||
"Schedule Event","Расписание Событие",,
|
||||
"Schedule Event (${ fullName })","Расписание мероприятий (${полное имя })",,
|
||||
"Schedule Event(${ fullName})","Расписание мероприятия (${полное имя})",,
|
||||
"Select Contact","Выберите Контакт",,
|
||||
"Select Partner","Выберите партнера",,
|
||||
"Select existing contact","Выбор существующего контакта",,
|
||||
"Select existing partner","Выберите существующего партнера",,
|
||||
"Send Email","Отправить электронную почту",,
|
||||
"Send email","Отправить электронное письмо",,
|
||||
"Sending date",,,
|
||||
"Settings","Настройки",,
|
||||
"Show Partner","Партнер выставки",,
|
||||
"Show all events","Показать все события",,
|
||||
"Some user groups",,,
|
||||
"Source","Источник",,
|
||||
"Source description","Описание источника",,
|
||||
"Start","Начать",,
|
||||
"Start date","Дата начала",,
|
||||
"State","Государство",,
|
||||
"Status","Статус",,
|
||||
"Status description","Описание статуса",,
|
||||
"Su","Су",,
|
||||
"Take charge","Возьмите на себя ответственность",,
|
||||
"Target","Цель",,
|
||||
"Target User Dashboard","Целевая панель управления пользователя",,
|
||||
"Target batch","Целевая партия",,
|
||||
"Target configuration","Целевая конфигурация",,
|
||||
"Target configurations","Целевые конфигурации",,
|
||||
"Target page","Целевая страница",,
|
||||
"Target team Dashboard","Целевая группа Приборная панель",,
|
||||
"Target vs Real","Цель против реального",,
|
||||
"Targets configurations","Конфигурации целей",,
|
||||
"Task","Задача",,
|
||||
"Task reminder template","Шаблон напоминания о задачах",,
|
||||
"Tasks","Задачи",,
|
||||
"Tasks filters","Задачи фильтров",,
|
||||
"Team","Команда",,
|
||||
"Th","*",,
|
||||
"The end date must be after the start date","Дата окончания должна быть после даты старта.",,
|
||||
"The number of repetitions must be greater than 0","Количество повторений должно быть больше 0.",,
|
||||
"Title","Название",,
|
||||
"To Date","На свидание",,
|
||||
"Tools","Инструменты",,
|
||||
"Trading name","Торговое название",,
|
||||
"Treated objectives reporting","Отчетность по целям лечения",,
|
||||
"Tu","Ту",,
|
||||
"Type","Тип",,
|
||||
"Type of need",,,
|
||||
"UID (Calendar)","UID (календарь)",,
|
||||
"Unassigned Leads","Назначенные ссылки",,
|
||||
"Unassigned Opportunities","Неиспользованные возможности",,
|
||||
"Unassigned opportunities","Неиспользованные возможности",,
|
||||
"Upcoming events","Предстоящие мероприятия",,
|
||||
"Urgent","Срочно",,
|
||||
"User","Пользователь",,
|
||||
"User %s does not have an email address configured nor is it linked to a partner with an email address configured.",,,
|
||||
"User %s must have an active company to use templates","Пользователь %s должен иметь действующую компанию для использования шаблонов",,
|
||||
"Validate","Подтвердить",,
|
||||
"We","Мы",,
|
||||
"Website","Веб-сайт",,
|
||||
"Weekly","Еженедельно",,
|
||||
"Weeks","Недели",,
|
||||
"Win","Выиграть",,
|
||||
"Worst case","В худшем случае",,
|
||||
"Years","Годы",,
|
||||
"You don't have the rights to delete this event","Вы не имеете права удалять это событие.",,
|
||||
"You must choose a recurrence type","Вы должны выбрать тип повторения",,
|
||||
"You must choose at least one day in the week","Вы должны выбрать по крайней мере один день в неделю",,
|
||||
"amount","величина",,
|
||||
"com.axelor.apps.crm.job.EventReminderJob","com.axelor.apps.crm.job.EventReminderJob",,
|
||||
"com.axelor.apps.crm.service.batch.CrmBatchService","com.axelor.apps.crm.service.batch.CrmBatchService",,
|
||||
"crm.New","Новый",,
|
||||
"date","свидание",,
|
||||
"every week's day","еженедельный день",,
|
||||
"everyday","повседневный",,
|
||||
"fri,","Фри,",,
|
||||
"http://www.url.com","http://www.url.com",,
|
||||
"important","значимый",,
|
||||
"mon,","Мон.",,
|
||||
"on","вперёд",,
|
||||
"portal.daily.team.calls.summary.by.user","портал.ежедневные.звонки.команды.пользователей.по.обобщению.информации.о.вызове.пользователей.",,
|
||||
"sat,","Садись.",,
|
||||
"success","преуспевание",,
|
||||
"sun,","Солнце.",,
|
||||
"thur,","Тур.",,
|
||||
"tues,","Tues,",,
|
||||
"until the","пока",,
|
||||
"value:CRM","значение:CRM",,
|
||||
"warning","предостережение",,
|
||||
"wed,","Свадьба.",,
|
||||
"whatever@example.com","whatever@example.com",,
|
||||
"www.url.com","www.url.com",,
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user