コード例 #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
コード例 #8
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)
コード例 #9
0
ファイル: conftest.py プロジェクト: tonthon/autonomie
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
ファイル: accounting.py プロジェクト: tonthon/autonomie
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)
コード例 #14
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
        )
コード例 #15
0
    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()
コード例 #16
0
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_
コード例 #18
0
 def on_delete(self):
     """
     On disable we reset the order
     """
     IncomeStatementMeasureTypeCategory.reorder()
コード例 #19
0
 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