Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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,
     )
Ejemplo n.º 5
0
 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']
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    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
Ejemplo n.º 11
0
 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'
                 ])
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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'
            ]
        )
Ejemplo n.º 14
0
 def title(self):
     return u"Dupliquer la note de dépenses de {0} {1}".format(
         strings.month_name(self.context.month),
         self.context.year,
     )
Ejemplo n.º 15
0
def get_month_options():
    return [(index, strings.month_name(index)) for index in range(1, 13)]
Ejemplo n.º 16
0
def get_month_options():
    return [(index, strings.month_name(index)) for index in range(1, 13)]
Ejemplo n.º 17
0
 def stream_headers(self):
     yield ""
     for i in range(1, 13):
         yield month_name(i)
     yield "Total"
     yield "% CA"