Merge branch 'develop' into PACKING-SLIP-FOR-DN-PACKED-ITEMS
This commit is contained in:
commit
7e4dc11c4c
@ -326,7 +326,7 @@ erpnext.patches.v13_0.update_docs_link
|
|||||||
erpnext.patches.v15_0.update_asset_value_for_manual_depr_entries
|
erpnext.patches.v15_0.update_asset_value_for_manual_depr_entries
|
||||||
erpnext.patches.v15_0.update_gpa_and_ndb_for_assdeprsch
|
erpnext.patches.v15_0.update_gpa_and_ndb_for_assdeprsch
|
||||||
erpnext.patches.v14_0.create_accounting_dimensions_for_closing_balance
|
erpnext.patches.v14_0.create_accounting_dimensions_for_closing_balance
|
||||||
erpnext.patches.v14_0.update_closing_balances #10-05-2023
|
erpnext.patches.v14_0.update_closing_balances #17-05-2023
|
||||||
execute:frappe.db.set_single_value("Accounts Settings", "merge_similar_account_heads", 0)
|
execute:frappe.db.set_single_value("Accounts Settings", "merge_similar_account_heads", 0)
|
||||||
# below migration patches should always run last
|
# below migration patches should always run last
|
||||||
erpnext.patches.v14_0.migrate_gl_to_payment_ledger
|
erpnext.patches.v14_0.migrate_gl_to_payment_ledger
|
||||||
|
@ -13,8 +13,8 @@ from erpnext.accounts.utils import get_fiscal_year
|
|||||||
def execute():
|
def execute():
|
||||||
frappe.db.truncate("Account Closing Balance")
|
frappe.db.truncate("Account Closing Balance")
|
||||||
|
|
||||||
|
i = 0
|
||||||
company_wise_order = {}
|
company_wise_order = {}
|
||||||
get_opening_entries = True
|
|
||||||
for pcv in frappe.db.get_all(
|
for pcv in frappe.db.get_all(
|
||||||
"Period Closing Voucher",
|
"Period Closing Voucher",
|
||||||
fields=["company", "posting_date", "name"],
|
fields=["company", "posting_date", "name"],
|
||||||
@ -29,6 +29,7 @@ def execute():
|
|||||||
pcv.posting_date, pcv.fiscal_year, company=pcv.company
|
pcv.posting_date, pcv.fiscal_year, company=pcv.company
|
||||||
)[1]
|
)[1]
|
||||||
|
|
||||||
|
# get gl entries against pcv
|
||||||
gl_entries = frappe.db.get_all(
|
gl_entries = frappe.db.get_all(
|
||||||
"GL Entry", filters={"voucher_no": pcv.name, "is_cancelled": 0}, fields=["*"]
|
"GL Entry", filters={"voucher_no": pcv.name, "is_cancelled": 0}, fields=["*"]
|
||||||
)
|
)
|
||||||
@ -37,20 +38,31 @@ def execute():
|
|||||||
entry["closing_date"] = pcv_doc.posting_date
|
entry["closing_date"] = pcv_doc.posting_date
|
||||||
entry["period_closing_voucher"] = pcv_doc.name
|
entry["period_closing_voucher"] = pcv_doc.name
|
||||||
|
|
||||||
|
# get all gl entries for the year
|
||||||
closing_entries = frappe.db.get_all(
|
closing_entries = frappe.db.get_all(
|
||||||
"GL Entry",
|
"GL Entry",
|
||||||
filters={
|
filters={
|
||||||
"is_cancelled": 0,
|
"is_cancelled": 0,
|
||||||
"voucher_no": ["!=", pcv.name],
|
"voucher_no": ["!=", pcv.name],
|
||||||
"posting_date": ["<=", pcv.posting_date],
|
"posting_date": ["between", [pcv_doc.year_start_date, pcv.posting_date]],
|
||||||
|
"is_opening": "No",
|
||||||
},
|
},
|
||||||
fields=["*"],
|
fields=["*"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if i == 0:
|
||||||
|
# add opening entries only for the first pcv
|
||||||
|
closing_entries += frappe.db.get_all(
|
||||||
|
"GL Entry",
|
||||||
|
filters={"is_cancelled": 0, "is_opening": "Yes"},
|
||||||
|
fields=["*"],
|
||||||
|
)
|
||||||
|
|
||||||
for entry in closing_entries:
|
for entry in closing_entries:
|
||||||
entry["closing_date"] = pcv_doc.posting_date
|
entry["closing_date"] = pcv_doc.posting_date
|
||||||
entry["period_closing_voucher"] = pcv_doc.name
|
entry["period_closing_voucher"] = pcv_doc.name
|
||||||
|
|
||||||
make_closing_entries(gl_entries + closing_entries, voucher_name=pcv.name)
|
make_closing_entries(gl_entries + closing_entries, voucher_name=pcv.name)
|
||||||
company_wise_order[pcv.company].append(pcv.posting_date)
|
company_wise_order[pcv.company].append(pcv.posting_date)
|
||||||
get_opening_entries = False
|
|
||||||
|
i += 1
|
||||||
|
@ -25,15 +25,12 @@
|
|||||||
"documentation_url": "https://docs.erpnext.com/docs/v14/user/manual/en/setting-up/company-setup",
|
"documentation_url": "https://docs.erpnext.com/docs/v14/user/manual/en/setting-up/company-setup",
|
||||||
"idx": 0,
|
"idx": 0,
|
||||||
"is_complete": 0,
|
"is_complete": 0,
|
||||||
"modified": "2023-05-16 13:13:24.043792",
|
"modified": "2023-05-20 19:45:03.936741",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Setup",
|
"module": "Setup",
|
||||||
"name": "Home",
|
"name": "Home",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"steps": [
|
"steps": [
|
||||||
{
|
|
||||||
"step": "Navigation Help"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"step": "Create an Item"
|
"step": "Create an Item"
|
||||||
},
|
},
|
||||||
@ -47,7 +44,7 @@
|
|||||||
"step": "Create a Quotation"
|
"step": "Create a Quotation"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"subtitle": "Item, Customer, Supplier, Navigation Help and Quotation",
|
"subtitle": "Item, Customer, Supplier and Quotation",
|
||||||
"success_message": "You're ready to start your journey with ERPNext",
|
"success_message": "You're ready to start your journey with ERPNext",
|
||||||
"title": "Let's begin your journey with ERPNext"
|
"title": "Let's begin your journey with ERPNext"
|
||||||
}
|
}
|
@ -9,7 +9,7 @@
|
|||||||
"is_complete": 0,
|
"is_complete": 0,
|
||||||
"is_single": 0,
|
"is_single": 0,
|
||||||
"is_skipped": 0,
|
"is_skipped": 0,
|
||||||
"modified": "2023-05-16 12:54:54.112364",
|
"modified": "2023-05-16 20:01:34.202622",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"name": "Create a Customer",
|
"name": "Create a Customer",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
"is_complete": 0,
|
"is_complete": 0,
|
||||||
"is_single": 0,
|
"is_single": 0,
|
||||||
"is_skipped": 0,
|
"is_skipped": 0,
|
||||||
"modified": "2023-05-16 12:55:08.610113",
|
"modified": "2023-05-19 15:32:55.069257",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"name": "Create a Supplier",
|
"name": "Create a Supplier",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
|
@ -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
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
@ -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}"))
|
||||||
|
@ -256,8 +256,6 @@ def get_incoming_rate(args, raise_error_if_no_rate=True):
|
|||||||
if isinstance(args, str):
|
if isinstance(args, str):
|
||||||
args = json.loads(args)
|
args = json.loads(args)
|
||||||
|
|
||||||
voucher_no = args.get("voucher_no") or args.get("name")
|
|
||||||
|
|
||||||
in_rate = None
|
in_rate = None
|
||||||
if (args.get("serial_no") or "").strip():
|
if (args.get("serial_no") or "").strip():
|
||||||
in_rate = get_avg_purchase_rate(args.get("serial_no"))
|
in_rate = get_avg_purchase_rate(args.get("serial_no"))
|
||||||
@ -280,12 +278,13 @@ def get_incoming_rate(args, raise_error_if_no_rate=True):
|
|||||||
in_rate = (
|
in_rate = (
|
||||||
_get_fifo_lifo_rate(previous_stock_queue, args.get("qty") or 0, valuation_method)
|
_get_fifo_lifo_rate(previous_stock_queue, args.get("qty") or 0, valuation_method)
|
||||||
if previous_stock_queue
|
if previous_stock_queue
|
||||||
else 0
|
else None
|
||||||
)
|
)
|
||||||
elif valuation_method == "Moving Average":
|
elif valuation_method == "Moving Average":
|
||||||
in_rate = previous_sle.get("valuation_rate") or 0
|
in_rate = previous_sle.get("valuation_rate")
|
||||||
|
|
||||||
if in_rate is None:
|
if in_rate is None:
|
||||||
|
voucher_no = args.get("voucher_no") or args.get("name")
|
||||||
in_rate = get_valuation_rate(
|
in_rate = get_valuation_rate(
|
||||||
args.get("item_code"),
|
args.get("item_code"),
|
||||||
args.get("warehouse"),
|
args.get("warehouse"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user