def _get_existing_expenses_options(self): """ Return other existing expenses available for expense line duplication """ result = [{ "label": u"{month_label} / {year} (feuille courante)".format( month_label=strings.month_name(self.context.month), year=self.context.year, ), "id": self.context.id, }] all_expenses = ExpenseSheet.query().filter_by( user_id=self.context.user_id) all_expenses = all_expenses.filter_by( company_id=self.context.company_id) all_expenses = all_expenses.filter(ExpenseSheet.id != self.context.id) all_expenses = all_expenses.filter( ExpenseSheet.status.in_(['draft', 'invalid'])) all_expenses = all_expenses.order_by( ExpenseSheet.year.desc()).order_by(ExpenseSheet.month.desc()) result.extend([{ "label": u"{month_label} / {year}".format(month_label=strings.month_name( e.month), year=e.year), "id": e.id } for e in all_expenses]) return result
def write_period(self): """ write the period in the header """ period = u"{0} {1}".format(strings.month_name(self.model.month), self.model.year) self._write_inline(u"Période de la demande", period)
def write_period(self): """ write the period in the header """ period = u"{0} {1}".format( strings.month_name(self.model.month), self.model.year ) self._write_inline(u"Période de la demande", period)
def set_static_cols(self): SageExpensePaymentMain.set_static_cols(self) self.code_journal = self.config.get('code_journal_waiver_ndf') if not self.code_journal: self.code_journal = self.config['code_journal_ndf'] self.mode = u"Abandon de créance" self.code_taxe = "" self.libelle = u"Abandon de créance {name} {month}/{year}".format( name=self.user.lastname.upper(), month=month_name(self.expense.month), year=self.expense.year, )
def set_static_cols(self): # set static fields values self.reference = u"{0}".format(self.expense.id) self.code_journal = self.payment.bank.code_journal self.date = format_sage_date(self.payment.date) self.mode = self.payment.mode self.libelle = u"{nom} / REMB FRAIS {mois}/{annee}".format( nom=self.user.lastname.upper(), mois=month_name(self.expense.month), annee=self.expense.year, ) self.num_analytique = self.company.code_compta self.code_taxe = self.config['code_tva_ndf']
def _init_writer(self): writer = self._factory() writer.add_title(u"Compte de résultat de {} pour l'année {}".format( self.context.name, self.year, ), width=15) writer.add_breakline() headers = [month_name(i).capitalize() for i in range(1, 13)] headers.insert(0, u"") headers.append(u"Total") headers.append(u"% Chiffre d'Affaire") writer.add_headers(headers) return writer
def _get_existing_expenses_options(self): """ Return other existing expenses available for expense line duplication """ result = [{ "label": u"{month_label} / {year} (feuille courante)".format( month_label=strings.month_name(self.context.month), year=self.context.year, ), "id": self.context.id, }] all_expenses = ExpenseSheet.query().filter_by( user_id=self.context.user_id ) all_expenses = all_expenses.filter_by( company_id=self.context.company_id ) all_expenses = all_expenses.filter(ExpenseSheet.id != self.context.id) all_expenses = all_expenses.filter( ExpenseSheet.status.in_(['draft', 'invalid']) ) all_expenses = all_expenses.order_by( ExpenseSheet.year.desc() ).order_by( ExpenseSheet.month.desc() ) result.extend([ { "label": u"{month_label} / {year}".format( month_label=strings.month_name(e.month), year=e.year ), "id": e.id } for e in all_expenses ]) return result
def submit_failure(self, e): errors = e.error.asdict() if 'month' in errors and 'year' in errors: appstruct = self.request.POST sheet = self._find_existing(appstruct) if sheet is not None: sheet = self.context self.request.session.flash( u"Impossible de dupliquer cette note de dépenses." u"Une note de dépense existe déjà pour la période " u"de {0} {1}.".format( strings.month_name(appstruct['month']), appstruct['year'], ), 'error') return self.redirect(self.context) BaseFormView.submit_failure(self, e)
def submit_failure(self, e): errors = e.error.asdict() if 'month' in errors and 'year' in errors: appstruct = self.request.POST sheet = self._find_existing(appstruct) if sheet is not None: sheet = self.context self.request.session.flash( u"Impossible de dupliquer cette note de dépenses." u"Une note de dépense existe déjà pour la période " u"de {0} {1}.".format( strings.month_name(appstruct['month']), appstruct['year'], ), 'error' ) return self.redirect(self.context) BaseFormView.submit_failure(self, e)
def validator(node, value): """ The validator """ month = value['month'] year = value['year'] query = ExpenseSheet.query().filter_by(month=month) query = query.filter_by(year=year) query = query.filter_by(user_id=user_id) query = query.filter_by(company_id=company_id) if query.count() > 0: exc = colander.Invalid( node, u"Une note de dépense pour la période {0} {1} existe " u"déjà".format( strings.month_name(month), year, )) exc['month'] = u"Une note de dépense existe" exc['year'] = u"Une note de dépense existe" raise exc
def __json__(self, request): return dict(id=self.id, name=self.name, created_at=self.created_at.isoformat(), updated_at=self.updated_at.isoformat(), company_id=self.company_id, user_id=self.user_id, paid_status=self.paid_status, justified=self.justified, status=self.status, status_user_id=self.status_user_id, status_date=self.status_date.isoformat(), lines=[line.__json__(request) for line in self.lines], kmlines=[line.__json__(request) for line in self.kmlines], month=self.month, month_label=strings.month_name(self.month), year=self.year, attachments=[ f.__json__(request) for f in self.children if f.type_ == 'file' ])
def validator(node, value): """ The validator """ month = value['month'] year = value['year'] query = ExpenseSheet.query().filter_by(month=month) query = query.filter_by(year=year) query = query.filter_by(user_id=user_id) query = query.filter_by(company_id=company_id) if query.count() > 0: exc = colander.Invalid( node, u"Une note de dépense pour la période {0} {1} existe " u"déjà".format( strings.month_name(month), year, ) ) exc['month'] = u"Une note de dépense existe" exc['year'] = u"Une note de dépense existe" raise exc
def __json__(self, request): return dict( id=self.id, name=self.name, created_at=self.created_at.isoformat(), updated_at=self.updated_at.isoformat(), company_id=self.company_id, user_id=self.user_id, paid_status=self.paid_status, justified=self.justified, status=self.status, status_user_id=self.status_user_id, status_date=self.status_date.isoformat(), lines=[line.__json__(request) for line in self.lines], kmlines=[line.__json__(request) for line in self.kmlines], month=self.month, month_label=strings.month_name(self.month), year=self.year, attachments=[ f.__json__(request)for f in self.children if f.type_ == 'file' ] )
def title(self): return u"Dupliquer la note de dépenses de {0} {1}".format( strings.month_name(self.context.month), self.context.year, )
def get_month_options(): return [(index, strings.month_name(index)) for index in range(1, 13)]
def get_month_options(): return [(index, strings.month_name(index)) for index in range(1, 13)]
def stream_headers(self): yield "" for i in range(1, 13): yield month_name(i) yield "Total" yield "% CA"