Merge pull request #35365 from rohitwaghchaure/create-reposting-entries-from-report

feat: provision to make reposting entries from Stock and Account Value Comparison Report
This commit is contained in:
rohitwaghchaure 2023-05-20 17:06:13 +05:30 committed by GitHub
commit 44cd76bb48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 69 additions and 1 deletions

View File

@ -33,5 +33,40 @@ frappe.query_reports["Stock and Account Value Comparison"] = {
"fieldtype": "Date", "fieldtype": "Date",
"default": frappe.datetime.get_today(), "default": frappe.datetime.get_today(),
}, },
] ],
get_datatable_options(options) {
return Object.assign(options, {
checkboxColumn: true,
});
},
onload(report) {
report.page.add_inner_button(__("Create Reposting Entries"), function() {
let message = `<div>
<p>
Reposting Entries will change the value of
accounts Stock In Hand, and Stock Expenses
in the Trial Balance report and will also change
the Balance Value in the Stock Balance report.
</p>
<p>Are you sure you want to create Reposting Entries?</p>
</div>
`;
frappe.confirm(__(message), () => {
let indexes = frappe.query_report.datatable.rowmanager.getCheckedRows();
let selected_rows = indexes.map(i => frappe.query_report.data[i]);
frappe.call({
method: "erpnext.stock.report.stock_and_account_value_comparison.stock_and_account_value_comparison.create_reposting_entries",
args: {
rows: selected_rows,
company: frappe.query_report.get_filter_values().company
}
});
});
});
}
}; };

View File

@ -4,6 +4,7 @@
import frappe import frappe
from frappe import _ from frappe import _
from frappe.utils import get_link_to_form, parse_json
import erpnext import erpnext
from erpnext.accounts.utils import get_currency_precision, get_stock_accounts from erpnext.accounts.utils import get_currency_precision, get_stock_accounts
@ -134,3 +135,35 @@ def get_columns(filters):
"width": "120", "width": "120",
}, },
] ]
@frappe.whitelist()
def create_reposting_entries(rows, company):
if isinstance(rows, str):
rows = parse_json(rows)
entries = []
for row in rows:
row = frappe._dict(row)
try:
doc = frappe.get_doc(
{
"doctype": "Repost Item Valuation",
"based_on": "Transaction",
"status": "Queued",
"voucher_type": row.voucher_type,
"voucher_no": row.voucher_no,
"posting_date": row.posting_date,
"company": company,
"allow_nagative_stock": 1,
}
).submit()
entries.append(get_link_to_form("Repost Item Valuation", doc.name))
except frappe.DuplicateEntryError:
pass
if entries:
entries = ", ".join(entries)
frappe.msgprint(_(f"Reposting entries created: {entries}"))