Example #1
0
    def get_slave_summary(self, obj, ar):
        vtypes = set()
        for m in dd.models_by_base(vat.VatDocument):
            vtypes.add(
                VoucherTypes.get_by_value(dd.full_model_name(m)))

        elems = []
        actions = []

        def add_action(btn):
            if btn is None:
                return False
            actions.append(btn)
            return True

        for jnl in Journal.objects.filter(voucher_type__in=vtypes):
            sar = ar.spawn(
                InvoicesByJournal,
                master_instance=jnl,
                known_values=dict(partner=obj))
            # logger.info(
            #     "20140604 sar.requesting_panel %s",
            #     sar.requesting_panel)
            if add_action(sar.insert_button(unicode(jnl), icon_name=None)):
                actions.append(' ')

        elems += [E.br(), _("Create voucher in journal ")] + actions
        return E.div(*elems)
Example #2
0
def update_reminders_for_user(user,ar):
    n = 0 
    for model in dd.models_by_base(EventGenerator):
        for obj in model.objects.filter(user=user):
            obj.update_reminders(ar)
            #~ logger.info("--> %s",unicode(obj))
            n += 1
    return n
Example #3
0
 def get_invoiceables_for(cls, partner, max_date=None):
     if settings.SITE.site_config.site_company:
         if partner.id == settings.SITE.site_config.site_company.id:
             return
     #~ logger.info('20130711 get_invoiceables_for (%s,%s)', partner, max_date)
     for m in dd.models_by_base(cls):
         flt = m.get_partner_filter(partner)
         qs = m.objects.filter(flt)
         for obj in qs.order_by(m.invoiceable_date_field):
             if obj.get_invoiceable_product() is not None:
                 yield obj
Example #4
0
    def get_data_rows(self, ar):
        obj = ar.master_instance
        rows = []
        if obj is not None:
            for M in dd.models_by_base(vat.VatDocument):
                rows += list(M.objects.filter(partner=obj))

            def by_date(a, b):
                return cmp(b.date, a.date)

            rows.sort(by_date)
        return rows
Example #5
0
 def run_from_ui(self,ar,**kw):
     row = ar.selected_rows[0]
     #~ self.client_model = dd.resolve_model(self.client_model)
     cmc = list(dd.models_by_base(BeIdCardHolder))
     if len(cmc) != 1:
         raise Exception("There must be exactly one BeIdCardHolder model in your Site!")
     self.client_model = cmc[0]
     data = ar.request.POST
     attrs = self.used_plugin.card2client(data)
     #~ logger.info("20130103 BeIdReadCardAction.run_from_ui() : %s -> %s",data,attrs)
     #~ print 20121117, attrs
     #~ ssin = data['nationalNumber']
     #~ ssin = attrs['national_id']
     
     qs = self.client_model.objects.filter(national_id=attrs['national_id'])
     if not row.national_id and qs.count() == 0:
         row.national_id = attrs['national_id']
         row.full_clean()
         row.save()
         #~ qs = self.client_model.objects.filter(national_id=attrs['national_id'])
         
     elif row.national_id != attrs['national_id']:
         if qs.count() > 1:
             return ar.error(self.sorry_msg % 
                 _("There is more than one client with national id %(national_id)s in our database.")
                 % attrs)
         if qs.count() == 0:
             fkw = dict(last_name__iexact=attrs['last_name'],first_name__iexact=attrs['first_name'])
             """
             if a client with same last_name and first_name 
             exists, the user cannot (automatically) create a new client from eid card.
             """
             #~ fkw.update(national_id__isnull=True)
             qs = self.client_model.objects.filter(**fkw)
             if qs.count() == 0:
                 def yes(ar):
                     obj = self.client_model(**attrs)
                     obj.full_clean()
                     obj.save()
                     #~ changes.log_create(ar.request,obj)
                     dd.pre_ui_create.send(obj,request=ar.request)
                     return self.goto_client_response(ar,obj,
                         _("New client %s has been created") % obj)
                 return ar.confirm(yes,
                     _("Create new client %(first_name)s %(last_name)s : Are you sure?") % attrs)
             elif qs.count() > 1:
                 return ar.error(self.sorry_msg % 
                     _("There is more than one client named %(first_name)s %(last_name)s in our database.")
                     % attrs,alert=_("Oops!"))
                     
         assert qs.count() == 1
         row = qs[0]
     return self.process_row(ar,row,attrs)
Example #6
0
File: std.py Project: raffas/lino
def objects():
    ExcerptType = dd.resolve_model('excerpts.ExcerptType')
    for cls in dd.models_by_base(Certifiable):
        kw = dd.str2kw(cls._meta.verbose_name, 'name')
        if False:
            kw.update(backward_compat=True)
        yield ExcerptType(
            template='Default.odt',
            primary=True,
            certifying=True,
            content_type=ContentType.objects.get_for_model(cls),
            **kw)
Example #7
0
File: model.py Project: cuchac/lino
 def collect(m):
     for c in dd.models_by_base(m):
         #~ if c is not m and (m in c.__bases__):
         #~ if c is not m:
         #~ if m in c.__bases__:
         if c is not m:
             ok = True
             #~ for cb in c.__bases__:
                 #~ if cb in m.mro():
                     #~ ok = False
             if ok:
                 pairs.append(
                     (m._meta.verbose_name, c._meta.verbose_name))
             collect(c)
Example #8
0
def site_setup(site):
    if site.is_installed('products'):
        site.modules.products.Products.add_detail_tab("sales",
            """
            sales.InvoiceItemsByProduct
            """,
            label=MODULE_LABEL)
    #~ for t in (site.modules.partners.Partners,
              #~ site.modules.partners.Persons,
              #~ site.modules.partners.Organisations):
    for m in dd.models_by_base(site.modules.contacts.Partner):
        t = m.get_default_table()
        if not hasattr(t.detail_layout,'sales'):
            t.add_detail_tab("sales", """
            invoicing_address vat_regime imode payment_term 
            sales.InvoicesByPartner
            """,
            label=MODULE_LABEL)
Example #9
0
 def get_invoiceables_for(cls,partner,max_date=None):
     if settings.SITE.site_config.site_company:
         if partner.id == settings.SITE.site_config.site_company.id:
             return
     #~ logger.info('20130711 get_invoiceables_for (%s,%s)', partner, max_date)
     for m in dd.models_by_base(cls):
         flt = m.get_partner_filter(partner)
         #~ fkw = dict()
         #~ fkw[m.invoiceable_partner_field] = partner
         #~ fkw.update(invoice__isnull=True)
         #~ if max_date is not None:
             #~ fkw["%s__lte" % m.invoiceable_date_field] = max_date
         #~ logger.info('20130711 %s %s', m, fkw)
         qs = m.objects.filter(flt)
         #~ qs = qs.exclude(company=settings.SITE.site_config.site_company)
         for obj in qs.order_by(m.invoiceable_date_field):
             if obj.get_invoiceable_product() is not None:
                 yield obj
Example #10
0
def holder_model():
    cmc = list(dd.models_by_base(BeIdCardHolder))
    if len(cmc) != 1:
        raise Exception(
            "There must be exactly one BeIdCardHolder model in your Site!")
    return cmc[0]
Example #11
0
 def on_post_analyze(sender, **kw):
     for m in dd.models_by_base(VatDocument):
         dd.post_init.connect(set_default_item_vat, sender=m)