From 25708b36c3fc00b414908e9e6b203c50f7f3abe3 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Thu, 23 Sep 2021 20:14:45 +0200 Subject: [PATCH] feat: change make_gl_entries to work with new data structure --- erpnext/accounts/doctype/dunning/dunning.py | 67 +++++++++------------ 1 file changed, 28 insertions(+), 39 deletions(-) diff --git a/erpnext/accounts/doctype/dunning/dunning.py b/erpnext/accounts/doctype/dunning/dunning.py index 591379f0ca4..af0e5763163 100644 --- a/erpnext/accounts/doctype/dunning/dunning.py +++ b/erpnext/accounts/doctype/dunning/dunning.py @@ -7,12 +7,8 @@ from __future__ import unicode_literals import json import frappe -from frappe.utils import cint, flt, getdate -from six import string_types +from frappe.utils import getdate -from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( - get_accounting_dimensions, -) from erpnext.accounts.general_ledger import make_gl_entries, make_reverse_gl_entries from erpnext.controllers.accounts_controller import AccountsController @@ -50,42 +46,35 @@ class Dunning(AccountsController): def make_gl_entries(self): if not self.dunning_amount: return - gl_entries = [] - invoice_fields = ["project", "cost_center", "debit_to", "party_account_currency", "conversion_rate", "cost_center"] - inv = frappe.db.get_value("Sales Invoice", self.sales_invoice, invoice_fields, as_dict=1) - accounting_dimensions = get_accounting_dimensions() - invoice_fields.extend(accounting_dimensions) + cost_center = self.cost_center or frappe.get_cached_value("Company", self.company, "cost_center") - dunning_in_company_currency = flt(self.dunning_amount * inv.conversion_rate) - default_cost_center = frappe.get_cached_value("Company", self.company, "cost_center") - - gl_entries.append( - self.get_gl_dict({ - "account": inv.debit_to, - "party_type": "Customer", - "party": self.customer, - "due_date": self.due_date, - "against": self.income_account, - "debit": dunning_in_company_currency, - "debit_in_account_currency": self.dunning_amount, - "against_voucher": self.name, - "against_voucher_type": "Dunning", - "cost_center": inv.cost_center or default_cost_center, - "project": inv.project - }, inv.party_account_currency, item=inv) + make_gl_entries( + [ + self.get_gl_dict({ + "account": self.debit_to, + "party_type": "Customer", + "party": self.customer, + "due_date": self.due_date, + "against": self.income_account, + "debit": self.dunning_amount, + "debit_in_account_currency": self.dunning_amount, + "against_voucher": self.name, + "against_voucher_type": "Dunning", + "cost_center": cost_center + }), + self.get_gl_dict({ + "account": self.income_account, + "against": self.customer, + "credit": self.dunning_amount, + "cost_center": cost_center, + "credit_in_account_currency": self.dunning_amount + }) + ], + cancel=(self.docstatus == 2), + update_outstanding="No", + merge_entries=False ) - gl_entries.append( - self.get_gl_dict({ - "account": self.income_account, - "against": self.customer, - "credit": dunning_in_company_currency, - "cost_center": inv.cost_center or default_cost_center, - "credit_in_account_currency": self.dunning_amount, - "project": inv.project - }, item=inv) - ) - make_gl_entries(gl_entries, cancel=(self.docstatus == 2), update_outstanding="No", merge_entries=False) def resolve_dunning(doc, state): @@ -100,7 +89,7 @@ def resolve_dunning(doc, state): @frappe.whitelist() def get_dunning_letter_text(dunning_type, doc, language=None): - if isinstance(doc, string_types): + if isinstance(doc, str): doc = json.loads(doc) if language: filters = {"parent": dunning_type, "language": language}