def handle(self, filepath, **options): if not os.path.isfile(filepath): raise CommandError("Filepath %r doesn't exist." % filepath) self.verbosity = int(options.get('verbosity', 1)) try: Rechnung.objects.all().delete() except Rechnung.DoesNotExist: pass try: RechnungsPosten.objects.all().delete() except RechnungsPosten.DoesNotExist: pass try: Lieferant.objects.all().delete() except Lieferant.DoesNotExist: pass for line in _get_dictlist(filepath): notiz = "" raw_summe = line["Wert"] if self.verbosity >= 3: self.stdout.write("_" * 80) self.stdout.write("\n") self.stdout.write(pprint.pformat(line)) self.stdout.write("\n") if raw_summe == "" or line["Rechnungstext"].startswith("^^^"): self.stdout.write(" *** SKIP *** \n") continue if self.verbosity >= 3: self.stdout.write(" -" * 40) self.stdout.write("\n") #---------------------------------------------------------------------- raw_summe = raw_summe.split(" ")[0] summe = _get_decimal(raw_summe) if self.verbosity >= 3: self.stdout.write("Betrag: %r\n" % summe) #---------------------------------------------------------------------- kunden_nummer1 = line["K.Nr."] if kunden_nummer1 == "" or kunden_nummer1 == "999": # Kein kunde eingetragen kunde = None else: kunden_nummer2 = int(kunden_nummer1) kunde = Kunde.objects.get(nummer=kunden_nummer2) if self.verbosity >= 3: self.stdout.write("Kunde: %r\n" % kunde) #---------------------------------------------------------------------- datum = _get_datum(raw_datum=line["R.Datum"]) raw_valuta_datum = line["gezahlt\nEingang"] try: valuta = _get_datum(raw_datum=raw_valuta_datum) except ValueError, err: self.stdout.write("ValueError: %s\n" % err) notiz += raw_valuta_datum #---------------------------------------------------------------------- re_posten = _get_re_posten(line["Rechnungstext"], summe) if self.verbosity >= 3: self.stdout.write("RE.Posten:\n") if len(re_posten) > 1: self.stdout.write(" *" * 40) self.stdout.write("\n") self.stdout.write(pprint.pformat(re_posten)) self.stdout.write("\n") #---------------------------------------------------------------------- raw_nr = line["R.Nr."] if raw_nr == "": re_nr = None else: re_nr = int(raw_nr) #---------------------------------------------------------------------- if summe < 0: self.stdout.write("TODO: Ausgabe - Eingangsrechnung\n") if self.verbosity >= 2: self.stdout.write("*" * 79) self.stdout.write("\n") continue if re_nr == None: self.stdout.write("Fehler: Rechnung ohne Re.Nummer???\n") continue rechnung = Rechnung( createtime=datum, nummer=re_nr, kunde=kunde, datum=datum, valuta=valuta, ) rechnung.save() reversion.revision.comment = "KRB import" for menge, txt, preis in re_posten: p = RechnungsPosten( menge=menge, beschreibung=txt, einzelpreis=preis, rechnung=rechnung ) p.save() reversion.revision.comment = "KRB import" self.stdout.write("Einnahme - Rechnung %s erstellt.\n" % rechnung)
continue else: sys.stderr.write("Fehler: Mehrere Rechnungen vom %s mit %s€ gefunden:\n" % (datum, summe)) print len(rechnungen) for rechnung in rechnungen: print "rechnung: %s" % rechnung continue rechnung = Rechnung( rechnungs_typ=rechnungs_typ, notizen="Raw MMS import line: %r" % line, datum=datum, valuta=datum, status=self.status_bezahlt, ) rechnung.save() reversion.revision.comment = "Neu erstellt beim MMS import." p = RechnungsPosten( rechnung=rechnung, menge=1, konto=konto, gegenkonto=ggkto, beschreibung="MMS import", notizen="Raw MMS import line: %r" % line, einzelpreis=summe, mwst=mwst, ) p.save() reversion.revision.comment = "Neu erstellt beim MMS import."