Skip to content

Preparations

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)
Back to top