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()
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])
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()
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()