fix: removed values out of sync validation from stock transactions
This commit is contained in:
parent
6588a936d5
commit
5d5dc56f94
@ -11,7 +11,7 @@ from frappe.utils import cint, cstr, flt, get_link_to_form, getdate
|
||||
|
||||
import erpnext
|
||||
from erpnext.accounts.general_ledger import make_gl_entries, make_reverse_gl_entries, process_gl_map
|
||||
from erpnext.accounts.utils import check_if_stock_and_account_balance_synced, get_fiscal_year
|
||||
from erpnext.accounts.utils import get_fiscal_year
|
||||
from erpnext.controllers.accounts_controller import AccountsController
|
||||
from erpnext.stock import get_warehouse_account_map
|
||||
from erpnext.stock.stock_ledger import get_valuation_rate
|
||||
@ -497,9 +497,6 @@ class StockController(AccountsController):
|
||||
})
|
||||
if future_sle_exists(args):
|
||||
create_repost_item_valuation_entry(args)
|
||||
elif not is_reposting_pending():
|
||||
check_if_stock_and_account_balance_synced(self.posting_date,
|
||||
self.company, self.doctype, self.name)
|
||||
|
||||
@frappe.whitelist()
|
||||
def make_quality_inspections(doctype, docname, items):
|
||||
|
@ -0,0 +1,36 @@
|
||||
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
|
||||
// For license information, please see license.txt
|
||||
/* eslint-disable */
|
||||
|
||||
frappe.query_reports["Incorrect Stock Value Report"] = {
|
||||
"filters": [
|
||||
{
|
||||
"label": __("Company"),
|
||||
"fieldname": "company",
|
||||
"fieldtype": "Link",
|
||||
"options": "Company",
|
||||
"reqd": 1,
|
||||
"default": frappe.defaults.get_user_default("Company")
|
||||
},
|
||||
{
|
||||
"label": __("Account"),
|
||||
"fieldname": "account",
|
||||
"fieldtype": "Link",
|
||||
"options": "Account",
|
||||
get_query: function() {
|
||||
var company = frappe.query_report.get_filter_value('company');
|
||||
return {
|
||||
filters: {
|
||||
"account_type": "Stock",
|
||||
"company": company
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": __("From Date"),
|
||||
"fieldname": "from_date",
|
||||
"fieldtype": "Date"
|
||||
}
|
||||
]
|
||||
};
|
@ -0,0 +1,29 @@
|
||||
{
|
||||
"add_total_row": 0,
|
||||
"columns": [],
|
||||
"creation": "2021-06-22 15:35:05.148177",
|
||||
"disable_prepared_report": 0,
|
||||
"disabled": 0,
|
||||
"docstatus": 0,
|
||||
"doctype": "Report",
|
||||
"filters": [],
|
||||
"idx": 0,
|
||||
"is_standard": "Yes",
|
||||
"modified": "2021-06-22 15:35:05.148177",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Stock",
|
||||
"name": "Incorrect Stock Value Report",
|
||||
"owner": "Administrator",
|
||||
"prepared_report": 0,
|
||||
"ref_doctype": "Stock Ledger Entry",
|
||||
"report_name": "Incorrect Stock Value Report",
|
||||
"report_type": "Script Report",
|
||||
"roles": [
|
||||
{
|
||||
"role": "Stock User"
|
||||
},
|
||||
{
|
||||
"role": "Accounts Manager"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,141 @@
|
||||
# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
import erpnext
|
||||
from frappe import _
|
||||
from six import iteritems
|
||||
from frappe.utils import add_days, today, getdate
|
||||
from erpnext.stock.utils import get_stock_value_on
|
||||
from erpnext.accounts.utils import get_stock_and_account_balance
|
||||
|
||||
def execute(filters=None):
|
||||
if not erpnext.is_perpetual_inventory_enabled(filters.company):
|
||||
frappe.throw(_("Perpetual inventory required for the company {0} to view this report.")
|
||||
.format(filters.company))
|
||||
|
||||
data = get_data(filters)
|
||||
columns = get_columns(filters)
|
||||
|
||||
return columns, data
|
||||
|
||||
def get_unsync_date(filters):
|
||||
date = filters.from_date
|
||||
if not date:
|
||||
date = frappe.db.sql(""" SELECT min(posting_date) from `tabStock Ledger Entry`""")
|
||||
date = date[0][0]
|
||||
|
||||
if not date:
|
||||
return
|
||||
|
||||
while getdate(date) < getdate(today()):
|
||||
account_bal, stock_bal, warehouse_list = get_stock_and_account_balance(posting_date=date,
|
||||
company=filters.company, account = filters.account)
|
||||
|
||||
if abs(account_bal - stock_bal) > 0.1:
|
||||
return date
|
||||
|
||||
date = add_days(date, 1)
|
||||
|
||||
def get_data(report_filters):
|
||||
from_date = get_unsync_date(report_filters)
|
||||
|
||||
if not from_date:
|
||||
return []
|
||||
|
||||
result = []
|
||||
|
||||
voucher_wise_dict = {}
|
||||
data = frappe.db.sql('''
|
||||
SELECT
|
||||
name, posting_date, posting_time, voucher_type, voucher_no,
|
||||
stock_value_difference, stock_value, warehouse, item_code
|
||||
FROM
|
||||
`tabStock Ledger Entry`
|
||||
WHERE
|
||||
posting_date
|
||||
= %s and company = %s
|
||||
and is_cancelled = 0
|
||||
ORDER BY timestamp(posting_date, posting_time) asc, creation asc
|
||||
''', (from_date, report_filters.company), as_dict=1)
|
||||
|
||||
for d in data:
|
||||
voucher_wise_dict.setdefault((d.item_code, d.warehouse), []).append(d)
|
||||
|
||||
closing_date = add_days(from_date, -1)
|
||||
for key, stock_data in iteritems(voucher_wise_dict):
|
||||
prev_stock_value = get_stock_value_on(posting_date = closing_date, item_code=key[0], warehouse =key[1])
|
||||
for data in stock_data:
|
||||
expected_stock_value = prev_stock_value + data.stock_value_difference
|
||||
if abs(data.stock_value - expected_stock_value) > 0.1:
|
||||
data.difference_value = abs(data.stock_value - expected_stock_value)
|
||||
data.expected_stock_value = expected_stock_value
|
||||
result.append(data)
|
||||
|
||||
return result
|
||||
|
||||
def get_columns(filters):
|
||||
return [
|
||||
{
|
||||
"label": _("Stock Ledger ID"),
|
||||
"fieldname": "name",
|
||||
"fieldtype": "Link",
|
||||
"options": "Stock Ledger Entry",
|
||||
"width": "80"
|
||||
},
|
||||
{
|
||||
"label": _("Posting Date"),
|
||||
"fieldname": "posting_date",
|
||||
"fieldtype": "Date"
|
||||
},
|
||||
{
|
||||
"label": _("Posting Time"),
|
||||
"fieldname": "posting_time",
|
||||
"fieldtype": "Time"
|
||||
},
|
||||
{
|
||||
"label": _("Voucher Type"),
|
||||
"fieldname": "voucher_type",
|
||||
"width": "110"
|
||||
},
|
||||
{
|
||||
"label": _("Voucher No"),
|
||||
"fieldname": "voucher_no",
|
||||
"fieldtype": "Dynamic Link",
|
||||
"options": "voucher_type",
|
||||
"width": "110"
|
||||
},
|
||||
{
|
||||
"label": _("Item Code"),
|
||||
"fieldname": "item_code",
|
||||
"fieldtype": "Link",
|
||||
"options": "Item",
|
||||
"width": "110"
|
||||
},
|
||||
{
|
||||
"label": _("Warehouse"),
|
||||
"fieldname": "warehouse",
|
||||
"fieldtype": "Link",
|
||||
"options": "Warehouse",
|
||||
"width": "110"
|
||||
},
|
||||
{
|
||||
"label": _("Expected Stock Value"),
|
||||
"fieldname": "expected_stock_value",
|
||||
"fieldtype": "Currency",
|
||||
"width": "150"
|
||||
},
|
||||
{
|
||||
"label": _("Stock Value"),
|
||||
"fieldname": "stock_value",
|
||||
"fieldtype": "Currency",
|
||||
"width": "120"
|
||||
},
|
||||
{
|
||||
"label": _("Difference Value"),
|
||||
"fieldname": "difference_value",
|
||||
"fieldtype": "Currency",
|
||||
"width": "150"
|
||||
}
|
||||
]
|
Loading…
Reference in New Issue
Block a user