Merge branch 'version-13-hotfix' into fix-payment-reconciliation-jv-cost-center
This commit is contained in:
@@ -8,7 +8,11 @@ from frappe.model.document import Document
|
|||||||
from frappe.utils import flt, getdate, nowdate, today
|
from frappe.utils import flt, getdate, nowdate, today
|
||||||
|
|
||||||
import erpnext
|
import erpnext
|
||||||
from erpnext.accounts.utils import get_outstanding_invoices, reconcile_against_document
|
from erpnext.accounts.utils import (
|
||||||
|
get_outstanding_invoices,
|
||||||
|
reconcile_against_document,
|
||||||
|
update_reference_in_payment_entry,
|
||||||
|
)
|
||||||
from erpnext.controllers.accounts_controller import get_advance_payment_entries
|
from erpnext.controllers.accounts_controller import get_advance_payment_entries
|
||||||
|
|
||||||
|
|
||||||
@@ -190,6 +194,23 @@ class PaymentReconciliation(Document):
|
|||||||
inv.currency = entry.get("currency")
|
inv.currency = entry.get("currency")
|
||||||
inv.outstanding_amount = flt(entry.get("outstanding_amount"))
|
inv.outstanding_amount = flt(entry.get("outstanding_amount"))
|
||||||
|
|
||||||
|
def get_difference_amount(self, allocated_entry):
|
||||||
|
if allocated_entry.get("reference_type") != "Payment Entry":
|
||||||
|
return
|
||||||
|
|
||||||
|
dr_or_cr = (
|
||||||
|
"credit_in_account_currency"
|
||||||
|
if erpnext.get_party_account_type(self.party_type) == "Receivable"
|
||||||
|
else "debit_in_account_currency"
|
||||||
|
)
|
||||||
|
|
||||||
|
row = self.get_payment_details(allocated_entry, dr_or_cr)
|
||||||
|
|
||||||
|
doc = frappe.get_doc(allocated_entry.reference_type, allocated_entry.reference_name)
|
||||||
|
update_reference_in_payment_entry(row, doc, do_not_save=True)
|
||||||
|
|
||||||
|
return doc.difference_amount
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def allocate_entries(self, args):
|
def allocate_entries(self, args):
|
||||||
self.validate_entries()
|
self.validate_entries()
|
||||||
@@ -205,12 +226,16 @@ class PaymentReconciliation(Document):
|
|||||||
res = self.get_allocated_entry(pay, inv, pay["amount"])
|
res = self.get_allocated_entry(pay, inv, pay["amount"])
|
||||||
inv["outstanding_amount"] = flt(inv.get("outstanding_amount")) - flt(pay.get("amount"))
|
inv["outstanding_amount"] = flt(inv.get("outstanding_amount")) - flt(pay.get("amount"))
|
||||||
pay["amount"] = 0
|
pay["amount"] = 0
|
||||||
|
|
||||||
|
res.difference_amount = self.get_difference_amount(res)
|
||||||
|
|
||||||
if pay.get("amount") == 0:
|
if pay.get("amount") == 0:
|
||||||
entries.append(res)
|
entries.append(res)
|
||||||
break
|
break
|
||||||
elif inv.get("outstanding_amount") == 0:
|
elif inv.get("outstanding_amount") == 0:
|
||||||
entries.append(res)
|
entries.append(res)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,6 @@ def adjust_account(data, period_list, consolidated=False):
|
|||||||
for d in data:
|
for d in data:
|
||||||
for period in period_list:
|
for period in period_list:
|
||||||
key = period if consolidated else period.key
|
key = period if consolidated else period.key
|
||||||
d[key] = totals[d["account"]]
|
|
||||||
d["total"] = totals[d["account"]]
|
d["total"] = totals[d["account"]]
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|||||||
@@ -894,6 +894,7 @@ class GSPConnector:
|
|||||||
return self.e_invoice_settings.auth_token
|
return self.e_invoice_settings.auth_token
|
||||||
|
|
||||||
def make_request(self, request_type, url, headers=None, data=None):
|
def make_request(self, request_type, url, headers=None, data=None):
|
||||||
|
res = None
|
||||||
try:
|
try:
|
||||||
if request_type == "post":
|
if request_type == "post":
|
||||||
res = make_post_request(url, headers=headers, data=data)
|
res = make_post_request(url, headers=headers, data=data)
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
|
from frappe.query_builder import Field
|
||||||
|
from frappe.query_builder.functions import Min, Timestamp
|
||||||
from frappe.utils import add_days, getdate, today
|
from frappe.utils import add_days, getdate, today
|
||||||
from six import iteritems
|
from six import iteritems
|
||||||
|
|
||||||
@@ -29,7 +31,7 @@ def execute(filters=None):
|
|||||||
def get_unsync_date(filters):
|
def get_unsync_date(filters):
|
||||||
date = filters.from_date
|
date = filters.from_date
|
||||||
if not date:
|
if not date:
|
||||||
date = frappe.db.sql(""" SELECT min(posting_date) from `tabStock Ledger Entry`""")
|
date = (frappe.qb.from_("Stock Ledger Entry").select(Min(Field("posting_date")))).run()
|
||||||
date = date[0][0]
|
date = date[0][0]
|
||||||
|
|
||||||
if not date:
|
if not date:
|
||||||
@@ -55,22 +57,27 @@ def get_data(report_filters):
|
|||||||
result = []
|
result = []
|
||||||
|
|
||||||
voucher_wise_dict = {}
|
voucher_wise_dict = {}
|
||||||
data = frappe.db.sql(
|
sle = frappe.qb.DocType("Stock Ledger Entry")
|
||||||
"""
|
data = (
|
||||||
SELECT
|
frappe.qb.from_(sle)
|
||||||
name, posting_date, posting_time, voucher_type, voucher_no,
|
.select(
|
||||||
stock_value_difference, stock_value, warehouse, item_code
|
sle.name,
|
||||||
FROM
|
sle.posting_date,
|
||||||
`tabStock Ledger Entry`
|
sle.posting_time,
|
||||||
WHERE
|
sle.voucher_type,
|
||||||
posting_date
|
sle.voucher_no,
|
||||||
= %s and company = %s
|
sle.stock_value_difference,
|
||||||
and is_cancelled = 0
|
sle.stock_value,
|
||||||
ORDER BY timestamp(posting_date, posting_time) asc, creation asc
|
sle.warehouse,
|
||||||
""",
|
sle.item_code,
|
||||||
(from_date, report_filters.company),
|
|
||||||
as_dict=1,
|
|
||||||
)
|
)
|
||||||
|
.where(
|
||||||
|
(sle.posting_date == from_date)
|
||||||
|
& (sle.company == report_filters.company)
|
||||||
|
& (sle.is_cancelled == 0)
|
||||||
|
)
|
||||||
|
.orderby(Timestamp(sle.posting_date, sle.posting_time), sle.creation)
|
||||||
|
).run(as_dict=True)
|
||||||
|
|
||||||
for d in data:
|
for d in data:
|
||||||
voucher_wise_dict.setdefault((d.item_code, d.warehouse), []).append(d)
|
voucher_wise_dict.setdefault((d.item_code, d.warehouse), []).append(d)
|
||||||
|
|||||||
Reference in New Issue
Block a user