示例#1
0
 def test_get_next_order(self, dbsession):
     from autonomie.models.accounting.income_statement_measures import (
         IncomeStatementMeasureTypeCategory,
     )
     assert IncomeStatementMeasureTypeCategory.get_next_order() == 0
     self.get_them(dbsession)
     assert IncomeStatementMeasureTypeCategory.get_next_order() == 5
示例#2
0
 def test_insert(self, dbsession):
     from autonomie.models.accounting.income_statement_measures import (
         IncomeStatementMeasureTypeCategory,
     )
     cats = self.get_them(dbsession)
     IncomeStatementMeasureTypeCategory.insert(cats[2], 4)
     assert cats[2].order == 4
     assert cats[-1].order == 3
示例#3
0
 def test_get_by_label(self, dbsession):
     from autonomie.models.accounting.income_statement_measures import (
         IncomeStatementMeasureTypeCategory,
     )
     cats = self.get_them(dbsession)
     assert IncomeStatementMeasureTypeCategory.get_by_label('label_2') == \
         cats[2]
     assert IncomeStatementMeasureTypeCategory.get_by_label('wrong') is None
示例#4
0
    def test_reorder(self, dbsession):
        from autonomie.models.accounting.income_statement_measures import (
            IncomeStatementMeasureTypeCategory,
        )
        cats = self.get_them(dbsession)

        cats[2].order = 15
        dbsession.merge(cats[2])
        IncomeStatementMeasureTypeCategory.reorder()
        assert cats[2].order == 4
示例#5
0
def populate_accounting_income_statement_measure_types(session):
    """
    Populate the database with treasury measure types
    """
    from autonomie.models.accounting.income_statement_measures import (
        IncomeStatementMeasureTypeCategory, )

    if IncomeStatementMeasureTypeCategory.query().count() == 0:
        for order, category in enumerate(
            (u"Produits", u"Achats", u"Charges", u"Salaires et Cotisations")):
            session.add(
                IncomeStatementMeasureTypeCategory(label=category,
                                                   order=order))

        session.flush()
示例#6
0
 def on_enable(self):
     """
     on enable we set order to 1
     """
     order = IncomeStatementMeasureTypeCategory.get_next_order()
     self.context.order = order
     self.request.dbsession.merge(self.context)
示例#7
0
def income_measure_type_category(dbsession):
    from autonomie.models.accounting.income_statement_measures import (
        IncomeStatementMeasureTypeCategory, )
    cat = IncomeStatementMeasureTypeCategory(label=u"Produits")
    dbsession.add(cat)
    dbsession.flush()
    return cat
 def on_enable(self):
     """
     on enable we set order to 1
     """
     order = IncomeStatementMeasureTypeCategory.get_next_order()
     self.context.order = order
     self.request.dbsession.merge(self.context)
示例#9
0
def income_measure_type_categories(dbsession):
    from autonomie.models.accounting.income_statement_measures import (
        IncomeStatementMeasureTypeCategory,
    )
    result = []
    for i in (u"Produits", u"Achats"):
        cat = IncomeStatementMeasureTypeCategory(label=i)
        dbsession.add(cat)
        result.append(cat)
    dbsession.flush()
    return result
示例#10
0
 def get_them(self, dbsession):
     from autonomie.models.accounting.income_statement_measures import (
         IncomeStatementMeasureTypeCategory,
     )
     cats = [
         IncomeStatementMeasureTypeCategory(
             label='label_%s' % i,
             order=i
         ) for i in range(5)
     ]
     for cat in cats:
         dbsession.add(cat)
     dbsession.flush()
     return cats
示例#11
0
    def __call__(self):
        navigation = []
        for category in IncomeStatementMeasureTypeCategory.get_categories():
            label = u'Indicateurs de type %s' % category.label
            url = self.request.route_path(
                TYPE_CATEGORY_URL,
                category_id=category.id,
            )
            navigation.append(dict(label=label, url=url, icon="fa fa-braille"))

        return dict(title=self.title,
                    help_message=self.help_message,
                    navigation=navigation,
                    breadcrumb=self.breadcrumb,
                    back_link=self.back_link)
示例#12
0
def deferred_complexe_total_description(node, kw):
    categories = ",".join([
        i.label for i in IncomeStatementMeasureTypeCategory.get_categories(
            keys=('label', ))
    ])
    types = ",".join(
        (i.label
         for i in IncomeStatementMeasureType.get_types(keys=('label', ))))

    return u"""
Combiner plusieurs catégories et indicateurs au travers d'opérations
arithmétiques.
Les noms des variables (catégories ou indicateurs) doivent être encadrés de {}.
Exemple : {Salaires et Cotisations} + {Charges} / 100.
Liste des catégories : %s. Liste des indicateurs : %s""" % (categories, types)
示例#13
0
def deferred_complexe_total_description(node, kw):
    categories = ",".join(
        [i.label for i in
         IncomeStatementMeasureTypeCategory.get_categories(keys=('label',))
         ]
    )
    types = ",".join((
        i.label
        for i in IncomeStatementMeasureType.get_types(keys=('label',))
    ))

    return u"""
Combiner plusieurs catégories et indicateurs au travers d'opérations
arithmétiques.
Les noms des variables (catégories ou indicateurs) doivent être encadrés de {}.
Exemple : {Salaires et Cotisations} + {Charges} / 100.
Liste des catégories : %s. Liste des indicateurs : %s""" % (categories, types)
    def __call__(self):
        navigation = []
        for category in IncomeStatementMeasureTypeCategory.get_categories():
            label = u'Indicateurs de type %s' % category.label
            url = self.request.route_path(
                TYPE_CATEGORY_URL,
                category_id=category.id,
            )
            navigation.append(dict(label=label, url=url, icon="fa fa-braille"))

        return dict(
            title=self.title,
            help_message=self.help_message,
            navigation=navigation,
            breadcrumb=self.breadcrumb,
            back_link=self.back_link
        )
    def __init__(self, grids, types, turnover):
        if not grids:
            self.is_void = True
        else:
            self.is_void = False
        self.categories = IncomeStatementMeasureTypeCategory.get_categories()
        # Month grids stored by month number
        self.grids = self._grid_by_month(grids)

        # Types by category id
        self.types = self._type_by_category(types)
        self.turnover = turnover

        # Totals by category_id, by month
        self.category_totals = self._get_default_category_totals()
        # Totals by type_ id, by month
        self.type_totals = self._get_default_type_totals()

        self.rows = self.compile_rows()
def type_category_list_view(request):
    """
    List categories of Income Statement Measures we can edit
    """
    menus = []
    menus.append({
        'label': u"Retour",
        "route_name": BASE_URL,
        "title": "",
        "icon": "fa fa-step-backward",
    })

    for category in IncomeStatementMeasureTypeCategory.get_categories():
        label = u'Configuration des indicateurs de type %s' % category.label
        url = request.route_path(
            TYPE_CATEGORY_URL,
            category_id=category.id,
        )
        menus.append(dict(label=label, url=url, icon="fa fa-braille"))

    return dict(
        title=u"Configuration des indicateurs de Compte de résultat",
        help_message=u"""Les indicateurs de comptes de résultat permettent de
        regrouper les écritures comptables derrière un même libellé afin de les
        regrouper au sein d'un tableau annuel présentant le compte de résultat
        de chaque entreprise.<br />
        Les indicateurs sont divisés en 4 catégories (dans l'ordre de
        présentation )<br />
        <ul>
        <li>Produits</li>
        <li>Achats</li>
        <li>Charges</li>
        <li>Salaires et Cotisations</li>
        </ul>
        Depuis cette interface, vous pouvez configurer, par
        catégorie, l'ensemble des indicateurs qui composeront les comptes de
        résultat de vos entrepreneurs.""",
        menus=menus)
示例#17
0
    def get_them(self, dbsession, cat):
        from autonomie.models.accounting.income_statement_measures import (
            IncomeStatementMeasureTypeCategory,
            IncomeStatementMeasureType,
        )
        cat2 = IncomeStatementMeasureTypeCategory(label='label_2', order=2)
        dbsession.add(cat2)
        dbsession.flush()

        types_ = [
            IncomeStatementMeasureType(
                order=i,
                label="label_%s" % i,
                category_id=cat.id
            )
            for i in range(5)
        ]
        types_[-1].category_id = cat2.id
        types_[-1].order = 1
        for type_ in types_:
            dbsession.add(type_)
        dbsession.flush()
        return types_
 def on_delete(self):
     """
     On disable we reset the order
     """
     IncomeStatementMeasureTypeCategory.reorder()
 def __init__(self, *args, **kwargs):
     AdminCrudListView.__init__(self, *args, **kwargs)
     self.max_order = IncomeStatementMeasureTypeCategory.get_next_order() - 1
示例#20
0
 def on_delete(self):
     """
     On disable we reset the order
     """
     IncomeStatementMeasureTypeCategory.reorder()
示例#21
0
 def __init__(self, *args, **kwargs):
     AdminCrudListView.__init__(self, *args, **kwargs)
     self.max_order = IncomeStatementMeasureTypeCategory.get_next_order(
     ) - 1
示例#22
0
 def test_get_categories(self, dbsession):
     from autonomie.models.accounting.income_statement_measures import (
         IncomeStatementMeasureTypeCategory,
     )
     cats = self.get_them(dbsession)
     assert IncomeStatementMeasureTypeCategory.get_categories() == cats