22:44:54 web.1         | Traceback (most recent call last):
22:44:54 web.1         |   File "apps/frappe/frappe/app.py", line 114, in application
22:44:54 web.1         |     response = frappe.api.handle(request)
22:44:54 web.1         |   File "apps/frappe/frappe/api/__init__.py", line 49, in handle
22:44:54 web.1         |     data = endpoint(**arguments)
22:44:54 web.1         |   File "apps/frappe/frappe/api/v1.py", line 36, in handle_rpc_call
22:44:54 web.1         |     return frappe.handler.handle()
22:44:54 web.1         |   File "apps/frappe/frappe/handler.py", line 49, in handle
22:44:54 web.1         |     data = execute_cmd(cmd)
22:44:54 web.1         |   File "apps/frappe/frappe/handler.py", line 85, in execute_cmd
22:44:54 web.1         |     return frappe.call(method, **frappe.form_dict)
22:44:54 web.1         |   File "apps/frappe/frappe/__init__.py", line 1768, in call
22:44:54 web.1         |     return fn(*args, **newargs)
22:44:54 web.1         |   File "apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
22:44:54 web.1         |     return func(*args, **kwargs)
22:44:54 web.1         |   File "apps/frappe/frappe/desk/form/save.py", line 39, in savedocs
22:44:54 web.1         |     doc.save()
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 337, in save
22:44:54 web.1         |     return self._save(*args, **kwargs)
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 359, in _save
22:44:54 web.1         |     return self.insert()
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 291, in insert
22:44:54 web.1         |     self.run_before_save_methods()
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 1092, in run_before_save_methods
22:44:54 web.1         |     self.run_method("before_save")
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 962, in run_method
22:44:54 web.1         |     out = Document.hook(fn)(self, *args, **kwargs)
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 1322, in composer
22:44:54 web.1         |     return composed(self, method, *args, **kwargs)
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 1304, in runner
22:44:54 web.1         |     add_to_return_value(self, fn(self, *args, **kwargs))
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 959, in fn
22:44:54 web.1         |     return method_object(*args, **kwargs)
22:44:54 web.1         |   File "apps/taakd_app/taakd_app/taakd_app/doctype/applicant_invitation/applicant_invitation.py", line 21, in before_save
22:44:54 web.1         |     self.create_sales_invoice(customer)
22:44:54 web.1         |   File "apps/taakd_app/taakd_app/taakd_app/doctype/applicant_invitation/applicant_invitation.py", line 98, in create_sales_invoice
22:44:54 web.1         |     sales_invoice.save(ignore_permissions = True)
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 337, in save
22:44:54 web.1         |     return self._save(*args, **kwargs)
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 359, in _save
22:44:54 web.1         |     return self.insert()
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 291, in insert
22:44:54 web.1         |     self.run_before_save_methods()
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 1091, in run_before_save_methods
22:44:54 web.1         |     self.run_method("validate")
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 962, in run_method
22:44:54 web.1         |     out = Document.hook(fn)(self, *args, **kwargs)
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 1322, in composer
22:44:54 web.1         |     return composed(self, method, *args, **kwargs)
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 1304, in runner
22:44:54 web.1         |     add_to_return_value(self, fn(self, *args, **kwargs))
22:44:54 web.1         |   File "apps/frappe/frappe/model/document.py", line 959, in fn
22:44:54 web.1         |     return method_object(*args, **kwargs)
22:44:54 web.1         |   File "apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py", line 265, in validate
22:44:54 web.1         |     super().validate()
22:44:54 web.1         |   File "apps/erpnext/erpnext/controllers/selling_controller.py", line 29, in validate
22:44:54 web.1         |     super().validate()
22:44:54 web.1         |   File "apps/erpnext/erpnext/controllers/stock_controller.py", line 52, in validate
22:44:54 web.1         |     super().validate()
22:44:54 web.1         |   File "apps/erpnext/erpnext/controllers/accounts_controller.py", line 180, in validate
22:44:54 web.1         |     self.set_missing_values(for_validate=True)
22:44:54 web.1         |   File "apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
22:44:54 web.1         |     return func(*args, **kwargs)
22:44:54 web.1         |   File "apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py", line 669, in set_missing_values
22:44:54 web.1         |     self.due_date = get_due_date(self.posting_date, "Customer", self.customer, self.company)
22:44:54 web.1         |   File "apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
22:44:54 web.1         |     return func(*args, **kwargs)
22:44:54 web.1         |   File "apps/erpnext/erpnext/accounts/party.py", line 574, in get_due_date
22:44:54 web.1         |     template_name = get_payment_terms_template(party, party_type, company)
22:44:54 web.1         |   File "apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
22:44:54 web.1         |     return func(*args, **kwargs)
22:44:54 web.1         |   File "apps/erpnext/erpnext/accounts/party.py", line 718, in get_payment_terms_template
22:44:54 web.1         |     template = customer.payment_terms
22:44:54 web.1         | AttributeError: 'NoneType' object has no attribute 'payment_terms'