mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-19 06:45:11 +00:00
feat: change make_gl_entries to work with new data structure
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user