From cd226e4fbe6e4b392d7d68566f96972e93bf7444 Mon Sep 17 00:00:00 2001 From: Beate Trzensiok Date: Thu, 29 Sep 2022 14:21:18 +0200 Subject: [PATCH] Anpassung --- .../auto_invoice_generator.py | 61 +++++++++++++------ 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/msp/msp/doctype/auto_invoice_generator/auto_invoice_generator.py b/msp/msp/doctype/auto_invoice_generator/auto_invoice_generator.py index a941d01..276f7b7 100644 --- a/msp/msp/doctype/auto_invoice_generator/auto_invoice_generator.py +++ b/msp/msp/doctype/auto_invoice_generator/auto_invoice_generator.py @@ -132,6 +132,8 @@ class AutoInvoiceGenerator(Document): cust_count += 1 items = self.get_invoicing_items_for_cust(cust) print(items) + print("len Items") + print(len(items)) invoicing_items = [] if cust_doc.billing_mode == "ASAP": @@ -152,27 +154,48 @@ class AutoInvoiceGenerator(Document): else: item_group_separation_dict = get_item_group_assignment_table(cust) print(item_group_separation_dict) + separation_item_groups = [[item_group_separation_dict[x].item_group,item_group_separation_dict[x].filter] for x in range(1, len(item_group_separation_dict) + 1) ] if cust_doc.billing_mode == "per Item Group": + print("vor Separation") + print(len(items)) for el in separation_item_groups: print(el[1]) + print(items) a = [] - for item in items: + items_list = items.copy() + for item in items_list: + # for i in item_name: + # item = filter(lambda item: item['name'] == i, items) + print(item) + + #print(item.item_group) if item.item_group in el[1]: + print(True) invoice_doc_item = self.create_invoice_doc_item(item) + print(invoice_doc_item) a.append(invoice_doc_item) items.remove(item) + print(len(a)) + print(len(items)) + + else: + print(False) if len(a) > 0: self.create_invoice(cust, a, el[0] + " " +cust_doc.customer_name) invoice_count +=1 - + print("nach Separation") + print(len(items)) i_items = [self.create_invoice_doc_item(item) for item in items] + if len(i_items) > 0: self.create_invoice(cust, i_items, "Abrechnung " + cust_doc.customer_name) invoice_count += 1 + if cust_doc.billing_mode == "per Sales Order, remaining per Item Group": sales_order_items = [] - for item in items: + item_list = items.copy() + for item in item_list: if item.against_sales_order: invoice_doc_item = self.create_invoice_doc_item(item) sales_order_items.append(invoice_doc_item) @@ -190,15 +213,19 @@ class AutoInvoiceGenerator(Document): for el in separation_item_groups: print(el[1]) a = [] - for item in items: + it_list = items.copy() + for item in it_list: if item.item_group in el[1]: invoice_doc_item = self.create_invoice_doc_item(item) a.append(invoice_doc_item) items.remove(item) - self.create_invoice(cust, a, el[0] + " " +cust_doc.customer_name) - + if len(a) > 0: + self.create_invoice(cust, a, el[0] + " " +cust_doc.customer_name) + invoice_count += 1 i_items = [self.create_invoice_doc_item(item) for item in items] - self.create_invoice(cust, i_items, "Abrechnung " + cust_doc.customer_name) + if len(i_items) > 0: + self.create_invoice(cust, i_items, "Abrechnung " + cust_doc.customer_name) + invoice_count += 1 frappe.msgprint("Für " + str(cust_count)+ " Kunden wurden " + str(invoice_count) + " Rechnungen erstellt.") self.date = datetime.today().strftime('%Y-%m-%d') self.invoice_count = invoice_count @@ -231,7 +258,7 @@ class AutoInvoiceGenerator(Document): "items": invoice_doc_items }) if len(invoice_doc_items)>0: - self.validate_items(invoice_doc_items) + settings_doc = frappe.get_single("Auto Invoice Generator Settings") customer_doc = frappe.get_doc("Customer", cust ) @@ -257,12 +284,12 @@ class AutoInvoiceGenerator(Document): invoice_doc.append("taxes", new_tax) invoice_doc.save() - def validate_items(self,item_list): - print("len(item_list):") - print(len(item_list)) - print("len(set(item_list)):") - print(len(set(item_list))) - if len(item_list) == len(set(item_list)): - return True - else: - frappe.msgprint("Rechnungspositionen doppelt") + # def validate_items(self,item_list): + # print("len(item_list):") + # print(len(item_list)) + # print("len(set(item_list)):") + # print(len(set(item_list))) + # if len(item_list) == len(set(item_list)): + # return True + # else: + # frappe.msgprint("Rechnungspositionen doppelt")