diff --git a/management/commands/import_nk15.py b/management/commands/import_nk15.py index 1d60a2f..7425963 100644 --- a/management/commands/import_nk15.py +++ b/management/commands/import_nk15.py @@ -19,6 +19,7 @@ from note.models import Alias from note.models import TemplateCategory, TransactionTemplate, \ Transaction, RecurrentTransaction, SpecialTransaction from member.models import Club, Membership +from treasury.models import RemittanceType, Remittance, SpecialTransactionProxy """ Script d'import de la nk15: @@ -43,6 +44,7 @@ MAP_IDBDE = { MAP_IDACTIVITY = {} MAP_NAMEACTIVITY = {} MAP_NAMEGUEST = {} +MAP_IDSPECIALTRANSACTION = {} def update_line(n, total, content): @@ -210,7 +212,9 @@ def import_transaction(cur): obj_dict["last_name"] = actor.club.name else: raise Exception("You should'nt be there") - SpecialTransaction.objects.create(**obj_dict) + tr = SpecialTransaction.objects.create(**obj_dict) + if "cheques" in row["description"]: + MAP_IDSPECIALTRANSACTION[row["id"]] = tr elif ttype == "adhésion": # Since BDE and Kfet are distinct, don't import membership transaction and use our custom transactions. pass @@ -389,6 +393,50 @@ def import_memberships(cur): raise e +@transaction.atomic +def import_remittances(cur): + cur.execute("SELECT * FROM remises ORDER by id") + map_idremittance = {} + n = cur.rowcount + check_type = RemittanceType.objects.get(note__name="Chèque") + for idx, row in enumerate(cur): + update_line(idx, n, row["date"]) + obj_dict = { + "date": row["date"][10:], + "remittance_type": check_type, + "comment": row["commentaire"], + "closed": row["close"], + } + try: + with transaction.atomic(): + remittance = Remittance.objects.get_or_create(**obj_dict) + map_idremittance[row["id"]] = remittance + except IntegrityError as e: + raise e + + print("remittances are imported") + print("imported checks") + + cur.execute("SELECT * FROM cheques ORDER by id") + n = cur.rowcount + for idx, row in enumerate(cur): + update_line(idx, n, row["date"]) + obj_dict = { + "date": row["date"][10:], + "remittance_type": check_type, + "comment": row["commentaire"], + "closed": row["close"], + } + tr = MAP_IDSPECIALTRANSACTION[row["idtransaction"]] + proxy = SpecialTransactionProxy.objects.get_or_create(transaction=tr) + proxy.remittance = map_idremittance[row["idremise"]] + try: + with transaction.atomic(): + proxy.save() + except IntegrityError as e: + raise e + + class Command(BaseCommand): """ Command for importing the database of NK15. @@ -405,6 +453,7 @@ class Command(BaseCommand): parser.add_argument('-al', '--aliases', action='store_true', help="import aliases") parser.add_argument('-ac', '--activities', action='store_true', help="import activities") parser.add_argument('-M', '--memberships', action='store_true', help="import memberships") + parser.add_argument('-r', '--remittances', action='store_true', help="import check remittances") parser.add_argument('-s', '--save', action='store', help="save mapping of idbde") parser.add_argument('-m', '--map', action='store', help="import mapping of idbde") parser.add_argument('-d', '--nk15db', action='store', default='nk15', help='NK15 database name') @@ -452,3 +501,6 @@ class Command(BaseCommand): if kwargs["memberships"]: import_memberships(cur) self.print_success("memberships imported\n") + if kwargs["remittances"]: + import_remittances(cur) + self.print_success("remittances imported\n")