예제 #1
0
    def handle(self, *args, **options):
        if options['force_update']:
            self.force_update = True

        medlem_csv = self.get_filename(args, 0, 'MEDLEM_CSV', 'nmu-medl.csv')
        lag_csv = self.get_filename(args, 1, 'LAG_CSV', 'nmu-lag.csv')
        bet_csv = self.get_filename(args, 2, 'GIRO_CSV', 'nmu-bet.csv')

        if options['importer'] == 'nmu_access':
            imp = nmu.AccessImporter(medlem_csv, lag_csv, bet_csv)
        elif options['importer'] == 'nmu_mamut':
            imp = nmu.MamutImporter(medlem_csv, lag_csv, bet_csv)
        else:
            raise CommandError("Importeren finst ikkje ({0})".format(options['importer']).encode('utf8'))

        for i in imp.import_lag().values():
            self.stdout.write(u"Lag: {0}\n".format(i))

        for i in imp.import_medlem():
            self.stdout.write(u"Medlem: {0}\n".format(i))

        for i in imp.import_bet(force_update=self.force_update):
            self.stdout.write(u"Betaling: {0}\n".format(i))

        update_denormalized_fields()
        update_lokallagstat()
        send_overvakingar()
예제 #2
0
파일: tests.py 프로젝트: imclab/medlemssys
 def test_utmeldt_delete_unpaid_giro_on_denormalized(self):
     # Unpaid giros are deleted after member is utmeldt and
     # update_denormalized_fields has run
     m = lagMedlem(29, har_betalt=True)
     g = Giro(medlem=m, belop=10)
     g.save()
     self.assertEqual(
         [g.belop for g in m.giroar.all()], [10, 80])
     m.utmeldt_dato = datetime.date.today()
     m.save()
     models.update_denormalized_fields()
     self.assertEqual(
         [g.belop for g in m.giroar.all()], [80])
예제 #3
0
파일: ocr.py 프로젝트: imclab/medlemssys
    def process_to_db(self):
        for f in self.data:
            f['msg'] = []
            f['giro'] = None
            f['processed'] = False
            try:
                giro = Giro.objects.get(
                        Q(oppretta__year=f['dato'].year) | Q(oppretta__year=(f['dato'].year - 1)),
                        kid=f['kid'])
            except Giro.DoesNotExist:
                msg = "Fann ikkje giroen, {dato:6s} {belop:4n} {kid:12s} {transaksjon}".format(**f)
                logger.warning(msg)
                f['msg'].append(msg)
                continue
            f['giro'] = giro
            if giro.betalt():
                msg = "Giroen ({0}) er allereie betalt".format(giro.admin_change())
                f['msg'].append(msg)
                logger.warning("{giro.medlem}: {msg}".format(giro=giro, msg=msg))
                continue

            if f['belop'] < giro.belop:
                msg = "{giro}: for lite betalt! Rekna {giro.belop}, fekk {belop} ({giro.pk})".format(giro=giro, belop=f['belop'])
                logger.warning("{giro.medlem}: {msg}".format(giro=giro, msg=msg))
                f['msg'].append(msg)
            elif f['belop'] > giro.belop:
                # XXX: Splitt opp? Registrer ein donasjon?
                msg = "{giro}: Betalte meir, venta {giro.belop}, fekk {belop} ({giro.pk})".format(giro=giro, belop=f['belop'])
                logger.info("{giro.medlem}: {msg}".format(giro=giro, msg=msg))
                f['msg'].append(msg)
                giro.innbetalt = f['dato']
            else:
                giro.innbetalt = f['dato']
                #self.err("{belop:3n}kr ({giro.pk}) {giro} ".format(giro=giro, belop=f['belop']))

            giro.innbetalt_belop = f['belop']
            giro.konto = 'A' # Medlemskonto (KID)
            if giro.desc:
                giro.desc += '\nOCR'
            else:
                giro.desc = 'OCR'
            giro.save()
            f['processed'] = True

            if giro.medlem.status == 'I' and giro.innbetalt_belop >= giro.belop:
                f['msg'].append("{medlem} var infoperson, flyttar til medlem etter betaling".format(medlem=giro.medlem))
                giro.medlem.status = 'M'
                giro.medlem.save()

        update_denormalized_fields()
예제 #4
0
    def handle(self, *args, **options):
        if len(args):
            fn = args[0]
        else:
            fn = getattr(settings, 'OCR_FIL', 'ocr.txt')

        if not os.path.isfile(fn):
            raise CommandError("Fila finst ikkje ({0})".format(fn).encode('utf8'))

        ocr_file = open(fn)
        ocr = parse_ocr(ocr_file)

        for f in ocr:
            try:
                giro = Giro.objects.get(
                        Q(oppretta__year=f['dato'].year) | Q(oppretta__year=(f['dato'].year - 1)),
                        kid=f['kid'],
                    )
            except Giro.DoesNotExist:
                self.err("Fann ikkje giroen, {dato:6s} {belop:4n} {kid:12s} {transaksjon}".format(**f))
                continue

            if f['belop'] < giro.belop:
                self.err("{giro}: for lite betalt! Rekna {giro.belop}, fekk {belop} ({giro.pk})".format(giro=giro, belop=f['belop']))
            elif f['belop'] > giro.belop:
                # XXX: Splitt opp? Registrer ein donasjon?
                self.err("{giro}: Betalte meir, venta {giro.belop}, fekk {belop} ({giro.pk})".format(giro=giro, belop=f['belop']))
                giro.innbetalt = f['dato']
            else:
                giro.innbetalt = f['dato']
                #self.err("{belop:3n}kr ({giro.pk}) {giro} ".format(giro=giro, belop=f['belop']))

            giro.innbetalt_belop = f['belop']
            giro.status = 'F'
            if giro.desc:
                giro.desc += '\nOCR'
            else:
                giro.desc = 'OCR'
            giro.save()
            self.err(u"{giro}: Betalte {giro.belop} ({giro.pk})".format(giro=giro))

            if giro.medlem.status == 'I' and giro.innbetalt_belop >= giro.belop:
                self.err("{medlem} var infoperson, flyttar til medlem etter betaling".format(medlem=giro.medlem))
                giro.medlem.status = 'M'
                giro.medlem.save()

        update_denormalized_fields()