endi.views.admin.expense package

Submodules

endi.views.admin.expense.accounting module

class endi.views.admin.expense.accounting.ExpenseAccountingView(context, request=None)

Bases : BaseConfigView

children = []
dbsession: DBSESSION
info_message = "\n<h4>Variables utilisables dans les gabarits de libellés</h4>    <p>Il est possible de personaliser les libellés comptables à l'aide d'un gabarit. Plusieurs variables sont disponibles :</p>    <ul>    <li><code>{beneficiaire}</code> : nom/prénoms de la personne ayant avancé les frais</li>    <li><code>{beneficiaire_LASTNAME}</code> : nom, en capitales, de la personne ayant avancé les frais</li>    <li><code>{titre}</code> : titre de la note de dépenses (si renseigné)</li>    <li>        <code>{expense_date}</code> : date de la note de dépenses, qu'il est posisble de formatter de différentes manières :        <ul>        <li><code>{expense_date:%-m %Y}</code> : produira <code>6 2017</code> pour Juin 2017</li>        <li><code>{expense_date:%-m/%Y}</code> : produira <code>6/2017</code> pour Juin 2017</li>        <li><code>{expense_date:%m/%Y}</code> : produira <code>06/2017</code> pour Juin 2017</li>        </ul>    </li>    </ul>\n\n    <p><strong>Si le dégroupage de l'export des notes de dépenses est activé</strong>, sont également disponibles :\n    </p>\n    <ul>        <li>         <code>{expense_description}</code> :          description de la dépense telle que saisie par l'entrepreneur\n        </li>        <li>          <code>{supplier_label}</code> :           nom du fournisseur tel que saisi par l'entrepreneur, si renseigné\n        </li>        <li>          <code>{invoice_number}</code> :           numéro de facture, tel que saisi par l'entrepreneur, si renseigné\n        </li>    </ul>\n    <p>NB : Penser à séparer les variables, par exemple par des espaces, sous peine de libellés peu lisibles.</p>    "
keys = ('bookentry_expense_label_template', 'code_journal_ndf', 'compte_cg_ndf', 'ungroup_expenses_ndf')
redirect_route_name = '/admin/expenses'
request: Request
route_name = '/admin/expenses/accounting'
schema = <colander.Schema object at 140624187053456 (named )>

Colander schema instance to be used to create the form instance. Provide your schema in your derived class.

session: ISession
title = 'Export comptable des notes de dépenses'
validation_msg = "L'export comptable des notes de dépenses a bien été configuré"
class endi.views.admin.expense.accounting.ExpensePaymentAccountingView(context, request=None)

Bases : BaseConfigView

children = []
dbsession: DBSESSION
info_message = "\n<h4>Variables utilisables dans les gabarits de libellés</h4>    <p>Il est possible de personaliser les libellés comptables à l'aide d'un gabarit. Plusieurs variables sont disponibles :</p>    <ul>    <li><code>{beneficiaire}</code> : nom/prénoms de la personne ayant avancé les frais</li>    <li><code>{beneficiaire_LASTNAME}</code> : nom, en capitales, de la personne ayant avancé les frais</li>    <li><code>{titre}</code> : titre de la note de dépenses (si renseigné)</li>    <li>        <code>{expense_date}</code> : date de la note de dépenses, qu'il est posisble de formatter de différentes manières :        <ul>        <li><code>{expense_date:%-m %Y}</code> : produira <code>6 2017</code> pour Juin 2017</li>        <li><code>{expense_date:%-m/%Y}</code> : produira <code>6/2017</code> pour Juin 2017</li>        <li><code>{expense_date:%m/%Y}</code> : produira <code>06/2017</code> pour Juin 2017</li>        </ul>    </li>    </ul>\n\n    <p><strong>Si le dégroupage de l'export des notes de dépenses est activé</strong>, sont également disponibles :\n    </p>\n    <ul>        <li>         <code>{expense_description}</code> :          description de la dépense telle que saisie par l'entrepreneur\n        </li>        <li>          <code>{supplier_label}</code> :           nom du fournisseur tel que saisi par l'entrepreneur, si renseigné\n        </li>        <li>          <code>{invoice_number}</code> :           numéro de facture, tel que saisi par l'entrepreneur, si renseigné\n        </li>    </ul>\n    <p>NB : Penser à séparer les variables, par exemple par des espaces, sous peine de libellés peu lisibles.</p>    "
keys = ('bookentry_expense_payment_main_label_template', 'bookentry_expense_payment_waiver_label_template', 'code_journal_waiver_ndf', 'compte_cg_waiver_ndf', 'code_tva_ndf')
redirect_route_name = '/admin/expenses'
request: Request
route_name = '/admin/expenses/payment_accounting'
schema = <colander.Schema object at 140624186513424 (named )>

Colander schema instance to be used to create the form instance. Provide your schema in your derived class.

session: ISession
title = 'Export comptable des décaissements (paiement des notes de dépenses)'
validation_msg = "L'export comptable des décaissements a bien été configuré"
endi.views.admin.expense.accounting.includeme(config)

endi.views.admin.expense.numbers module

class endi.views.admin.expense.numbers.ExpenseNumberingConfigView(context, request=None)

Bases : BaseConfigView

children = []
dbsession: DBSESSION
description = 'Configurer la manière dont sont numérotées les notes de dépenses'
info_message = "Il est possible de personaliser le gabarit du numéro de note de dépense.<br/ ><p>Plusieurs variables et séquences chronologiques sont à disposition.</p><h4>Variables :</h4><ul><li><code>{YYYY}</code> : année, sur 4 digits</li><li><code>{YY}</code> : année, sur 2 digits</li><li><code>{MM}</code> : mois, sur 2 digits</li><li><code>{ANA}</code> : code analytique de l'enseigne</li></ul><h4>Numéros de séquence :</h4><ul><li><code>{SEQGLOBAL}</code> : numéro de séquence global (aucun ràz)</li><li><code>{SEQYEAR}</code> : numéro de séquence annuel (ràz chaque année)</li><li><code>{SEQMONTH}</code> : numéro de séquence mensuel (ràz chaque mois)</li><li><code>{SEQMONTHANA}</code>: numéro de séquence par enseigne et par mois (ràz chaque mois)</li></ul><p>Dans le cas d'une migration depuis un autre outil de gestion, il est possible d'initialiser les séquences à une valeur différente de zéro.</p>    "
keys = ('expensesheet_number_template', 'global_expensesheet_sequence_init_value', 'year_expensesheet_sequence_init_value', 'year_expensesheet_sequence_init_date', 'month_expensesheet_sequence_init_value', 'month_expensesheet_sequence_init_date')
request: Request
route_name = '/admin/expenses/numbering'
schema = <colander.Schema object at 140624169648656 (named )>

Colander schema instance to be used to create the form instance. Provide your schema in your derived class.

session: ISession
title = 'Numérotation des notes de dépenses'
endi.views.admin.expense.numbers.add_routes(config)
endi.views.admin.expense.numbers.includeme(config)

endi.views.admin.expense.types module

class endi.views.admin.expense.types.ExpenseKmTypeAddView(context, request=None)

Bases : ExpenseTypeAddView

View used to add Expense Km types Custom methods are added here to keep the year param in the url and in the form

before(form)

Performs some processing on the form prior to rendering.

By default, this method does nothing. Override this method in your dervived class to modify the form. Your function will be executed immediately after instansiating the form instance in __call__() (thus before obtaining widget resources, considering buttons, or rendering).

children = []
dbsession: DBSESSION
factory

alias de ExpenseKmType

request: Request
route_name = '/admin/expenses/expensekm/{year}'
schema = <colanderalchemy.schema.SQLAlchemySchemaNode object at 140624167688656 (named )>

Colander schema instance to be used to create the form instance. Provide your schema in your derived class.

session: ISession
class endi.views.admin.expense.types.ExpenseKmTypeDisableView(context, request=None)

Bases : ExpenseTypeDisableView

children = []
dbsession: DBSESSION
factory

alias de ExpenseKmType

request: Request
route_name = '/admin/expenses/expensekm/{year}/{id}'
session: ISession
class endi.views.admin.expense.types.ExpenseKmTypeEditView(context, request=None)

Bases : ExpenseTypeEditView

children = []
dbsession: DBSESSION
factory

alias de ExpenseKmType

request: Request
route_name = '/admin/expenses/expensekm/{year}/{id}'
schema = <colanderalchemy.schema.SQLAlchemySchemaNode object at 140624167452240 (named )>

Colander schema instance to be used to create the form instance. Provide your schema in your derived class.

session: ISession
class endi.views.admin.expense.types.ExpenseKmTypeListView(context, request=None)

Bases : ExpenseTypeListView

children = []
columns = ['Libellé', 'Compte de charge', 'Indemnité kilométrique']
dbsession: DBSESSION
factory

alias de ExpenseKmType

get_actions(items)

Return the description of additionnal main actions buttons

Type renvoyé:

generator

item_route = '/admin/expenses/expensekm/{year}/{id}'
load_items(year=None)

Load the items we will display

Renvoie:

A SQLAlchemy query

request: Request
route_name = '/admin/expenses/expensekm/{year}'
session: ISession
stream_actions(expense_type)

Stream the actions available for the given expense_type object :param obj expense_type: ExpenseType instance :returns: List of 4-uples (url, label, title, icon,)

stream_columns(expense_type)

Stream a column object (called from within the template)

Paramètres:

expense_type (obj) – The object to display

Renvoie:

A generator of labels representing the different columns of

our list :rtype: generator

property title

str(object=””) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to “strict”.

property tree_url
class endi.views.admin.expense.types.ExpenseKmTypesDuplicateView(context, request=None)

Bases : BaseView

Expense km list Duplication view

Allows to duplicate :

to next (default)

from previous (if “from_previous” is set in the GET params

load_items(year)
route_name = '/admin/expenses/expensekm/{year}'
class endi.views.admin.expense.types.ExpenseKmTypesIndexView(context, request=None)

Bases : BaseView, TreeMixin

Entry point to the km expense types configuration

children = []
description = 'Configurer les types de dépenses kilométriques par année'
route_name = '/admin/expenses/expensekm'
title = 'Types de dépenses kilométriques'
class endi.views.admin.expense.types.ExpenseTelTypeAddView(context, request=None)

Bases : ExpenseTypeAddView

children = []
dbsession: DBSESSION
factory

alias de ExpenseTelType

request: Request
route_name = '/admin/expenses/expensetel'
schema = <colanderalchemy.schema.SQLAlchemySchemaNode object at 140624167689104 (named )>

Colander schema instance to be used to create the form instance. Provide your schema in your derived class.

session: ISession
class endi.views.admin.expense.types.ExpenseTelTypeDisableView(context, request=None)

Bases : ExpenseTypeDisableView

children = []
dbsession: DBSESSION
factory

alias de ExpenseTelType

request: Request
route_name = '/admin/expenses/expensetel/{id}'
session: ISession
class endi.views.admin.expense.types.ExpenseTelTypeEditView(context, request=None)

Bases : ExpenseTypeEditView

children = []
dbsession: DBSESSION
factory

alias de ExpenseTelType

request: Request
route_name = '/admin/expenses/expensetel/{id}'
schema = <colanderalchemy.schema.SQLAlchemySchemaNode object at 140624167490064 (named )>

Colander schema instance to be used to create the form instance. Provide your schema in your derived class.

session: ISession
class endi.views.admin.expense.types.ExpenseTelTypeListView(context, request=None)

Bases : ExpenseTypeListView

children = []
columns = ['Libellé', 'Compte de charge', 'Pourcentage indemnisé']
dbsession: DBSESSION
description = 'Configurer des types spécifiques donnant lieu à un remboursement en pourcentage de la dépense déclarée'
factory

alias de ExpenseTelType

item_route = '/admin/expenses/expensetel/{id}'
request: Request
route_name = '/admin/expenses/expensetel'
session: ISession
stream_columns(expense_type)

Stream a column object (called from within the template)

Paramètres:

expense_type (obj) – The object to display

Renvoie:

A generator of labels representing the different columns of

our list :rtype: generator

title = 'Types de dépenses téléphoniques'
class endi.views.admin.expense.types.ExpenseTypeAddView(context, request=None)

Bases : ExpenseTypeJSMixin, BaseAdminAddView

children = []
dbsession: DBSESSION
factory

alias de ExpenseType

classmethod get_type()
request: Request
route_name = '/admin/expenses/expense'
schema = <colanderalchemy.schema.SQLAlchemySchemaNode object at 140624167686480 (named )>

Colander schema instance to be used to create the form instance. Provide your schema in your derived class.

session: ISession
title = 'Ajouter'
class endi.views.admin.expense.types.ExpenseTypeDisableView(context, request=None)

Bases : BaseAdminDisableView

children = []
dbsession: DBSESSION
disable_msg = "L'élément a bien été désactivé"
enable_msg = "L'élément a bien été activé"
factory

alias de ExpenseType

classmethod get_type()
request: Request
route_name = '/admin/expenses/expense/{id}'
session: ISession
class endi.views.admin.expense.types.ExpenseTypeEditView(context, request=None)

Bases : ExpenseTypeJSMixin, BaseAdminEditView

children = []
dbsession: DBSESSION
factory

alias de ExpenseType

classmethod get_type()
request: Request
route_name = '/admin/expenses/expense/{id}'
schema = <colanderalchemy.schema.SQLAlchemySchemaNode object at 140624167449040 (named )>

Colander schema instance to be used to create the form instance. Provide your schema in your derived class.

session: ISession
title = 'Modifier'
class endi.views.admin.expense.types.ExpenseTypeJSMixin

Bases : object

before(form)
class endi.views.admin.expense.types.ExpenseTypeListView(context, request=None)

Bases : AdminCrudListView

children = []
columns = ['Libellé', 'Compte de charge', 'TVA sur marge']
dbsession: DBSESSION
factory

alias de ExpenseType

get_addurl()

Return the url for the add view

Renvoie:

The url to access the add form

Type renvoyé:

str

classmethod get_type()
item_route = '/admin/expenses/expense/{id}'
load_items(year=None)

Return the sqlalchemy models representing current queried elements :rtype: SQLAlchemy.Query object

request: Request
route_name = '/admin/expenses/expense'
session: ISession
stream_actions(expense_type)

Stream the actions available for the given expense_type object :param obj expense_type: ExpenseType instance :returns: List of 4-uples (url, label, title, icon,)

stream_columns(expense_type)

Stream a column object (called from within the template)

Paramètres:

expense_type (obj) – The object to display

Renvoie:

A generator of labels representing the different columns of

our list :rtype: generator

title = 'Types de dépenses'
endi.views.admin.expense.types.add_routes(config)

Add the routes related to the current module

endi.views.admin.expense.types.includeme(config)
endi.views.admin.expense.types.move_view(context, request)

Reorder the current context moving it up in the category’s hierarchy

Paramètres:

context (obj) – The given ExpenseType instance

Module contents

class endi.views.admin.expense.ExpenseIndexView(context, request=None)

Bases : BaseAdminIndexView

children = []
dbsession: DBSESSION
description = 'Configurer les types de dépenses, les exports comptables'
request: Request
route_name = '/admin/expenses'
session: ISession
title = 'Module Notes de dépenses'
endi.views.admin.expense.includeme(config)