Preparations¶
- Check that the requirements are met.
Installation¶
Get .bak-file from Consultancy Base in Café and create a new solution
Dependencies to add in your solution¶
To add this package to your solution, run:
poetry add limepkg-consultancy@latest
Dependencies needed by the package¶
First block is more mandatory, second block is more optional and depends on customer needs. Latest versions are to recommend. (Adding with @latest)
lime-bi = "^3.35.0"
addon-infotiles = "^4.9.6"
limepkg_consultancy_resourcehandling = "^2.4.4"
limepkg-filter-editor = "^1.0.5"
limepkg-document-templates = "^1.25.2"
limepkg-status-flow = "^1.2.3"
limepkg-basic-lead = "^2.0.4"
limepkg-option-visualizer = "^2.0.0"
limepkg-favorites = "^1.1.0"
<!-- if the customer has bought these addons -->
limepkg-credit-info = "^2.2.4"
limepkg-erp-connector = "^9.1.2"
limepkg-esign = "^7.2.4"
addon-acd = "^7.18.3"
<!-- Optional, read more in the package -->
limepkg-type-selector = "^1.1.0"
So run at least:
poetry add lime-bi, addon-infotiles, limepkg_consultancy_resourcehandling, limepkg-filter-editor, limepkg-document-templates, limepkg-status-flow, limepkg-basic-lead, limepkg-base-solution-helpers, limepkg-option-visualizer
Mandatory Limeobjects¶
To get consultancy functionality you need to add the limeobjects at the bottom of this page.
Lime BI¶
Lime resourcehandling¶
Everything is set up, just some configuration needed. Add configuration to application config according to:
limepkg-consultancy-resourcehandling:
deal_limetype: 'deal'
date_kind: 'month'
charging_field: 'chargingtype'
where deal_limetype could be deal, opportunity or maybe business. date_kind can be changed to week if the customer wants to plan their time in a bit more detail. Read more here
Favorites (if wanted)¶
If desktop, install lip-package - Configuration - LIP
Credit info¶
See separate documentation
ERP connector¶
See separate documentation
Esign¶
See separate documentation
Limeobjects¶
Attention! Link to all files can be used to just copy all into your solution. But you need to run this command and remove the auto generated files 'limeobject_class.py' and 'limeobject_class_test.py':
lime-project generate limeobject
Limeobject assignment¶
import logging
from lime_type.limeobjects import LimeObject
from limepkg_consultancy.decorators.assignment import consultancy_assignment
logger = logging.getLogger(__name__)
@consultancy_assignment()
class Assignment(LimeObject):
"""Summarize the function of a Assignment object here"""
def before_update(self, uow, **kwargs):
super().before_update(uow, **kwargs)
def before_delete(self, uow, **kwargs):
super().before_delete(uow, **kwargs)
def after_update(self, unsaved_self, **kwargs):
super().after_update(unsaved_self, **kwargs)
def register_limeobject_classes(register_class):
register_class('assignment', Assignment)
Limeobject competence¶
import logging
from lime_type.limeobjects import LimeObject
from limepkg_consultancy.decorators.competence import consultancy_competence
logger = logging.getLogger(__name__)
@consultancy_competence()
class Competence(LimeObject):
"""Summarize the function of a competence object here"""
def before_update(self, uow, **kwargs):
super().before_update(uow, **kwargs)
def before_delete(self, uow, **kwargs):
super().before_delete(uow, **kwargs)
def after_update(self, unsaved_self, **kwargs):
super().after_update(unsaved_self, **kwargs)
def register_limeobject_classes(register_class):
register_class('competence', Competence)
Limeobject consultant¶
import logging
from lime_type.limeobjects import LimeObject
from limepkg_consultancy.decorators.consultant import consultancy_consultant
logger = logging.getLogger(__name__)
@consultancy_consultant()
class Consultant(LimeObject):
"""Summarize the function of a consultant object here"""
def before_update(self, uow, **kwargs):
super().before_update(uow, **kwargs)
def before_delete(self, uow, **kwargs):
super().before_delete(uow, **kwargs)
def after_update(self, unsaved_self, **kwargs):
super().after_update(unsaved_self, **kwargs)
def register_limeobject_classes(register_class):
register_class('consultant', Consultant)
Limeobject deal¶
import logging
from lime_type.limeobjects import LimeObject
from limepkg_consultancy.decorators.deal import consultancy_deal
logger = logging.getLogger(__name__)
@consultancy_deal()
class Deal(LimeObject):
"""Summarize the function of a deal object here"""
def before_update(self, uow, **kwargs):
super().before_update(uow, **kwargs)
def before_delete(self, uow, **kwargs):
super().before_delete(uow, **kwargs)
def after_update(self, unsaved_self, **kwargs):
super().after_update(unsaved_self, **kwargs)
def register_limeobject_classes(register_class):
register_class('deal', Deal)
Limeobject document¶
import logging
from lime_type.limeobjects import LimeObject
from limepkg_consultancy.decorators.document import consultancy_document
logger = logging.getLogger(__name__)
@consultancy_document()
class Document(LimeObject):
"""Summarize the function of a document object here"""
def before_update(self, uow, **kwargs):
super().before_update(uow, **kwargs)
def before_delete(self, uow, **kwargs):
super().before_delete(uow, **kwargs)
def after_update(self, unsaved_self, **kwargs):
super().after_update(unsaved_self, **kwargs)
def register_limeobject_classes(register_class):
register_class('document', Document)
Limeobject history¶
import logging
from lime_type.limeobjects import LimeObject
from limepkg_consultancy.decorators.history import consultancy_history
logger = logging.getLogger(__name__)
@consultancy_history()
class History(LimeObject):
"""Summarize the function of a history object here"""
def before_update(self, uow, **kwargs):
super().before_update(uow, **kwargs)
def before_delete(self, uow, **kwargs):
super().before_delete(uow, **kwargs)
def after_update(self, unsaved_self, **kwargs):
super().after_update(unsaved_self, **kwargs)
def register_limeobject_classes(register_class):
register_class('history', History)
Limeobject lead¶
import logging
import limepkg_basic_lead.decorators as lead_decorators
from lime_type.limeobjects import LimeObject
from limepkg_base_solution_helpers.common.common import format_phone
from limepkg_base_solution_helpers.limeobject_classes.general import (
set_name_from_firstname_lastname,
)
from limepkg_consultancy.decorators.lead import consultancy_lead
logger = logging.getLogger(__name__)
@consultancy_lead()
@lead_decorators.lead()
class Lead(LimeObject):
"""Summarize the function of a lead object here"""
def before_update(self, uow, **kwargs):
super().before_update(uow, **kwargs)
if self.properties.phone.is_dirty():
self.properties.phone.value = format_phone(
self.properties.phone.value)
set_name_from_firstname_lastname(self)
def before_delete(self, uow, **kwargs):
super().before_delete(uow, **kwargs)
def after_update(self, unsaved_self, **kwargs):
super().after_update(unsaved_self, **kwargs)
def register_limeobject_classes(register_class):
register_class('lead', Lead)
Limeobject person¶
import logging
from lime_type.limeobjects import LimeObject
from limepkg_consultancy.decorators.person import consultancy_person
logger = logging.getLogger(__name__)
@consultancy_person()
class Person(LimeObject):
"""Summarize the function of a person object here"""
def before_update(self, uow, **kwargs):
super().before_update(uow, **kwargs)
def before_delete(self, uow, **kwargs):
super().before_delete(uow, **kwargs)
def after_update(self, unsaved_self, **kwargs):
super().after_update(unsaved_self, **kwargs)
def register_limeobject_classes(register_class):
register_class('person', Person)
Limeobject resourceforecast¶
import logging
from lime_type.limeobjects import LimeObject
from limepkg_consultancy.decorators.resourceforecast import (
consultancy_resourceforecast
)
logger = logging.getLogger(__name__)
@consultancy_resourceforecast()
class Resourceforecast(LimeObject):
"""Summarize the function of a resourceforecast object here"""
def before_update(self, uow, **kwargs):
super().before_update(uow, **kwargs)
def before_delete(self, uow, **kwargs):
super().before_delete(uow, **kwargs)
def after_update(self, unsaved_self, **kwargs):
super().after_update(unsaved_self, **kwargs)
def register_limeobject_classes(register_class):
register_class('resourceforecast', Resourceforecast)
Limeobject todo¶
import logging
from lime_type.limeobjects import LimeObject
from limepkg_consultancy.decorators.todo import consultancy_todo
logger = logging.getLogger(__name__)
@consultancy_todo()
class Todo(LimeObject):
"""Summarize the function of a todo object here"""
def before_update(self, uow, **kwargs):
super().before_update(uow, **kwargs)
def before_delete(self, uow, **kwargs):
super().before_delete(uow, **kwargs)
def after_update(self, unsaved_self, **kwargs):
super().after_update(unsaved_self, **kwargs)
def register_limeobject_classes(register_class):
register_class('todo', Todo)