feat: change make_gl_entries to work with new data structure

This commit is contained in:
barredterra
2021-09-23 20:14:45 +02:00
parent 353db2f612
commit 25708b36c3

View File

@@ -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}