def expense_options(request): """ Return options related to the expense configuration """ # Load types already used in this expense current_expenses_used_types = load_type_ids_from_expense(request.context) options = {"expense_types": [], "expensekm_types": [], "expensetel_types": []} for etype in ExpenseType.query(): if etype.id in current_expenses_used_types or etype.active: key = "%s_types" % etype.type options[key].append(etype) options["categories"] = [ {"value": "1", "label": u"Frais", "description": u"Frais liés au fonctionnement de l'entreprise"}, { "value": "2", "label": u"Achats", "description": u"Frais concernant directement votre activité \ auprès de vos clients", }, ] options["bookmarks"] = get_bookmarks(request) expense_sheet = request.context month = expense_sheet.month year = expense_sheet.year date = datetime.date(year, month, 1) options["today"] = date return options
def add_expense_type(type_, **kwargs): if type_ == 'km': e = ExpenseKmType(**kwargs) elif type_ == 'tel': e = ExpenseTelType(**kwargs) else: e = ExpenseType(**kwargs) session = DBSESSION() session.add(e) session.flush()
def expense_options(request): """ Return options related to the expense configuration """ # Load types already used in this expense current_expenses_used_types = load_type_ids_from_expense(request.context) options = { "expense_types": [], "expensekm_types": [], "expensetel_types": [], } for etype in ExpenseType.query(): if etype.id in current_expenses_used_types or etype.active: key = "%s_types" % etype.type options[key].append(etype) options['categories'] = [{ 'value': '1', "label": u"Frais", 'description': u"Frais liés au fonctionnement de l'entreprise" }, { 'value': '2', "label": u"Achats", 'description': u"Frais concernant directement votre activité \ auprès de vos clients" }] options['bookmarks'] = get_bookmarks(request) expense_sheet = request.context month = expense_sheet.month year = expense_sheet.year date = datetime.date(year, month, 1) options['today'] = date return options
def check_config(self, config): """ Check all configuration values are set for export :param config: The application configuration dict """ contribution_is_active = False for type_ in ExpenseType.query().filter(ExpenseType.active == True): if not type_.code: # or not type_.compte_tva or not type_.code_tva: return False if type_.contribution: contribution_is_active = True for key in self.config_keys: if not config.get(key): return False if contribution_is_active: for key in self.contribution_config_keys: if not config.get(key): return False return True
def deferred_type_id_validator(node, kw): """ Return a validator for the expensetype """ ids = [t.id for t in ExpenseType.query()] return colander.OneOf(ids)
def expensetype(dbsession): type_ = ExpenseType(label=u"Restauration", code="000065588") dbsession.add(type_) dbsession.flush() return type_
def get_columns(self): """ Retrieve all columns and define a global column attribute :param internal: are we asking columns for internal expenses """ columns = [] # Add the two first columns columns.append(StaticColumn(label='Date', key='date')) columns.append( StaticColumn( label='Description', key='description', nb_col=3 ) ) # Telephonic fees are only available as internal expenses tel_column = self.get_tel_column() if tel_column is not None: columns.append(tel_column) km_column = self.get_km_column() if km_column: columns.append(km_column) kmtype_code = km_column.code else: kmtype_code = None commontypes = ExpenseType.query()\ .filter(ExpenseType.type == "expense")\ .filter(ExpenseType.active == True) for type_ in commontypes: # Here's a hack to allow to group km fee types and displacement fees if kmtype_code is not None and \ type_.code != kmtype_code: columns.append(TypedColumn(type_)) columns.extend(self.get_disabled_types_columns()) # Add the last columns columns.append( StaticColumn( label='Tva', key='tva', formatter=integer_to_amount ) ) columns.append( StaticColumn( label="Total", key="total", formatter=integer_to_amount, style=NUMBER_CELL, ) ) # We set the appropriate letter to each column index = 0 for col in columns: letter = ASCII_UPPERCASE[index] additional_cell_nb = col.additional_cell_nb if additional_cell_nb: last_letter = ASCII_UPPERCASE[index + additional_cell_nb] index += additional_cell_nb + 1 else: last_letter = letter index += 1 col.set_letter(letter, last_letter) return columns