endi.views.accounting package

Submodules

endi.views.accounting.balance_sheet_measures module

class endi.views.accounting.balance_sheet_measures.BalanceSheetGridCompute(grid)

Bases : object

Computation grid collecting the rows of the Balance Sheet and providing an easy to use interface used for html rendering

Collect static database stored datas Compute dynamically computed rows

compile_rows(active)

Compile values for Treasury presentation

class endi.views.accounting.balance_sheet_measures.CompanyBalanceSheetMeasuresListView(*args, **kwargs)

Bases : BaseListView

add_template_vars = ('info_msg', 'current_grid', 'last_grid')
current_grid
dbsession: DBSESSION
filter_button_css = 'btn btn-primary'
filter_button_icon = False
filter_button_label = 'Changer'
filter_year(query, appstruct)
get_company_id()
property info_msg
last_grid
query()

The main query, should be overrided by a subclass

request: Request
schema = <endi.forms.lists.BaseListsSchema object at 140624200568208 (named )>
session: ISession
title = 'Bilan'
use_paginate = False
year = None
endi.views.accounting.balance_sheet_measures.includeme(config)

endi.views.accounting.bank_remittances module

Bank remittances views

class endi.views.accounting.bank_remittances.BankRemittanceCloseView(context, request=None)

Bases : BaseView

View to close bank remittance

endi.views.accounting.bank_remittances.BankRemittanceCsvView(context, request)

Return a csv output of the bank remittance

class endi.views.accounting.bank_remittances.BankRemittanceListView(*args, **kwargs)

Bases : BaseListView

Bank Remittances listing view

dbsession: DBSESSION
default_direction = 'desc'
default_sort = 'created_at'
filter_bank(query, appstruct)
filter_closed(query, appstruct)
filter_payment_mode(query, appstruct)
filter_remittance_id(query, appstruct)
query()

The main query, should be overrided by a subclass

request: Request
schema = <endi.forms.lists.BaseListsSchema object at 140624199856336 (named )>
session: ISession
sort_columns = {'created_at': <sqlalchemy.orm.attributes.InstrumentedAttribute object>, 'id': <sqlalchemy.orm.attributes.InstrumentedAttribute object>, 'remittance_date': <sqlalchemy.orm.attributes.InstrumentedAttribute object>}
title = 'Liste des remises en banque'
class endi.views.accounting.bank_remittances.BankRemittanceOpenView(context, request=None)

Bases : BaseView

View to reopen bank remittance

endi.views.accounting.bank_remittances.BankRemittancePdfView(context, request)

Return a pdf output of the bank remittance

class endi.views.accounting.bank_remittances.BankRemittanceView(*args, **kwargs)

Bases : BaseListView

Bank Remittance detail view

add_template_vars = ('stream_main_actions',)
dbsession: DBSESSION
default_direction = 'desc'
default_sort = 'created_at'
populate_actionmenu(appstruct)

Used to populate an actionmenu (if there’s one in the page) actionmenu is a request attribute used to automate the integration of actionmenus in pages

query()

The main query, should be overrided by a subclass

request: Request
session: ISession
stream_main_actions()
property title
endi.views.accounting.bank_remittances.includeme(config)

Add module’s views

endi.views.accounting.company_general_ledger module

General ledger vizualisation per company

class endi.views.accounting.company_general_ledger.CompanyGeneralLedgerOperationsListTools

Bases : object

Tools for general legder uploads for the current company

default_direction = 'desc'
default_sort = 'date'
filter_cae_config_general_account(query, appstruct)

Filter general_account from cae configuration :param query: :param appstruct: :return: query

filter_credit(query, appstruct)
filter_date(query, appstruct)
filter_debit(query, appstruct)
filter_general_account(query, appstruct)

Filter general_account from filter form :param query: :param appstruct: :return: query

get_wording_dict()
query()
schema = <endi.forms.lists.BaseListsSchema object at 140624199277712 (named )>
sort_columns = {'date': <sqlalchemy.orm.attributes.InstrumentedAttribute object>, 'general_account': <sqlalchemy.orm.attributes.InstrumentedAttribute object>}
title = 'Liste des écritures extraites du Grand livre'
class endi.views.accounting.company_general_ledger.CompanyGeneralLedgerOperationsListView(*args, **kwargs)

Bases : CompanyGeneralLedgerOperationsListTools, BaseListView

View for listing general ledger operations of a company

add_template_vars = ('title', 'get_wording_dict')
endi.views.accounting.company_general_ledger.includeme(config)

endi.views.accounting.income_statement_measures module

endi.views.accounting.operations module

endi.views.accounting.rest_api module

Accounting rest api

Used to populate the accounting database from desktop tools

class endi.views.accounting.rest_api.AccountingOperationRestView(*args, **kwargs)

Bases : BaseRestView

bulk_post()

Handle bulk insertion of AccountingOperation entries

expect json body with {“datas”: [list of AccountingOperation]}

Respond to a Http POST request

E.g:

Setting:

endi.accounting_api_key=06dda91136f6ad4688cdf6c8fd991696

in the development.ini

import requests from hashlib import md5 import time

params = {“datas”: [{

“analytical_account”: « ANALYTICAL », « general_account »: « GENERAL », « date »: « 2018-01-01 », “label”: « LABEL », « debit »: « 15 », « credit »: « 15 », « balance »: « 25 »

}]

}

def send_post_request(params, api_key):

timestamp = str(time.time()) secret = « %s-%s » % (timestamp, api_key) encoded = md5(secret.encode(“utf-8”)).hexdigest() url = « http://127.0.0.1:8080/api/v1/accounting/operations » headers = {

« Authorization » : « HMAC-MD5 %s » % encoded, « Timestamp »: timestamp

} resp = requests.post(url, json=params, headers=headers) return resp

resp = send_post_request(

params, « 06dda91136f6ad4688cdf6c8fd991696 »

)

Renvoie:

The inserted entries

collection_delete()

Handle bulk AccountingOperation deletion

Respond to a Http DELETE request

expects json body with filters on the AccountingOperation attributes Filters follow a format used in statistics

e.g:

import requests import time params = {“filters”: [{“key”: “date”, “type”: “date”, “method”:

“dr”, “search1”: “2018-01-01”, “search2”: “2018-02-01”}]}

def send_del_request(params, api_key):

timestamp = str(time.time()) secret = « %s-%s » % (timestamp, api_key) encoded = md5(secret.encode(“utf-8”)).hexdigest() url = « http://127.0.0.1:8080/api/v1/accounting/operations » headers = {

« Authorization »: « HMAC-MD5 %s » % encoded, « Timestamp »: timestamp

} resp = requests.delete(url, json=params, headers=headers)

send_del_request(

params, « 06dda91136f6ad4688cdf6c8fd991696 »

)

collection_get()
dbsession: DBSESSION
encodings = ('cp1252', 'iso8859-1', 'iso8859-16', 'utf16', 'utf32')
post_format(entry, edit, attributes)

Set company id if possible after datas validation and model creation

Paramètres:
  • entry (obj) – The newly created model

  • edit (bool) – Is it edition ?

  • attributes (dict) – The validated form attributes

Renvoie:

The entry

request: Request
schema = <colanderalchemy.schema.SQLAlchemySchemaNode object at 140624197300688 (named )>
session: ISession
endi.views.accounting.rest_api.authentification_check_view(context, request)

Allows to chek if the accounting authentication is valid without firing any additionnal action

Paramètres:
  • context (obj) – The View’s context

  • request (obj) – The Pyramid Request object

endi.views.accounting.rest_api.includeme(config)

endi.views.accounting.routes module

endi.views.accounting.routes.includeme(config)

endi.views.accounting.treasury_measures module

class endi.views.accounting.treasury_measures.CompanyTreasuryMeasuresListView(*args, **kwargs)

Bases : BaseListView

add_template_vars = ('info_msg', 'current_grid', 'stream_actions', 'last_grid', 'highlight_entry')
current_grid
dbsession: DBSESSION
default_direction = 'desc'
default_sort = 'date'
filter_year(query, appstruct)
get_company_id()
property highlight_entry
property info_msg
last_grid
query()

The main query, should be overrided by a subclass

request: Request
schema = <endi.forms.lists.BaseListsSchema object at 140624197538000 (named )>
session: ISession
sort_columns = {'date': 'date'}
stream_actions(item)
title = 'État de trésorerie'
class endi.views.accounting.treasury_measures.TreasuryGridCompute(grid)

Bases : object

Computation grid collecting the rows of the Treasury and providing an easy to use interface used for html rendering

Collect static database stored datas Compute dynamically computed rows

compile_rows()

Compile values for Treasury presentation

class endi.views.accounting.treasury_measures.TreasuryGridListView(*args, **kwargs)

Bases : BaseListView

add_template_vars = ('stream_actions', 'highlight_entry')
dbsession: DBSESSION
default_direction = 'asc'
default_sort = 'company'
filter_company_id(query, appstruct)
property highlight_entry
populate_actionmenu(appstruct)

Used to populate an actionmenu (if there’s one in the page) actionmenu is a request attribute used to automate the integration of actionmenus in pages

query()

The main query, should be overrided by a subclass

request: Request
schema = <endi.forms.lists.BaseListsSchema object at 140624197426640 (named )>
session: ISession
sort_by_company(query, appstruct)
sort_columns = {'company': 'Custom'}
stream_actions(item)
title = 'Liste des états de trésorerie'
endi.views.accounting.treasury_measures.includeme(config)

Module contents

endi.views.accounting.includeme(config)