diff --git a/erpnext/accounts/deferred_revenue.py b/erpnext/accounts/deferred_revenue.py index 13c57fe326..e638fc7b17 100644 --- a/erpnext/accounts/deferred_revenue.py +++ b/erpnext/accounts/deferred_revenue.py @@ -60,7 +60,7 @@ def get_booking_dates(doc, item, start_date=None, end_date=None): deferred_account = "deferred_revenue_account" if doc.doctype=="Sales Invoice" else "deferred_expense_account" last_gl_entry, skip = False, False - booking_end_date = getdate(add_days(today(), -1)) if not end_date else end_date + booking_end_date = getdate(add_days(today(), -1) if not end_date else end_date) if booking_end_date < item.service_start_date or \ (item.service_stop_date and booking_end_date.month > item.service_stop_date.month): return None, None, None, True @@ -71,7 +71,7 @@ def get_booking_dates(doc, item, start_date=None, end_date=None): last_gl_entry = True booking_end_date = item.service_stop_date - booking_start_date = getdate(add_months(today(), -1)) if not start_date else start_date + booking_start_date = getdate(add_months(today(), -1) if not start_date else start_date) booking_start_date = booking_start_date \ if booking_start_date > item.service_start_date else item.service_start_date @@ -113,7 +113,6 @@ def calculate_amount_and_base_amount(doc, item, last_gl_entry, total_days, total group by voucher_detail_no '''.format(total_credit_debit, total_credit_debit_currency), (doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name), as_dict=True) - already_booked_amount = gl_entries_details[0].total_credit if gl_entries_details else 0 base_amount = flt(item.base_net_amount - already_booked_amount, item.precision("base_net_amount")) if account_currency==doc.company_currency: @@ -140,7 +139,7 @@ def book_deferred_income_or_expense(doc, start_date=None, end_date=None): get_booking_dates(doc, item, start_date, end_date) if skip: continue - total_days = date_diff(item.service_end_date, item.service_start_date) + total_days = date_diff(item.service_end_date, item.service_start_date) + 1 total_booking_days = date_diff(booking_end_date, booking_start_date) + 1 account_currency = get_account_currency(item.expense_account) @@ -179,6 +178,10 @@ def book_deferred_income_or_expense(doc, start_date=None, end_date=None): 'project': project }, account_currency) ) - if gl_entries: - make_gl_entries(gl_entries, cancel=(doc.docstatus == 2), merge_entries=True) + try: + make_gl_entries(gl_entries, cancel=(doc.docstatus == 2), merge_entries=True) + frappe.db.commit() + except: + frappe.db.rollback() + frappe.log_error(message = frappe.get_traceback(), title = _("Error while processing deferred accounting for {0}").format(doc.name)) \ No newline at end of file diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py index d17adf6369..97a8ea7e3c 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py @@ -276,8 +276,8 @@ class ProductionPlan(Document): item_dict[(d.item_code, d.material_request_item, d.warehouse)] = item_details else: item_details.update({ - "qty":flt(item_dict.get((d.item_code, d.sales_order, d.warehouse),{}) - .get("qty")) + flt(d.planned_qty) + "qty": flt(item_dict.get((d.item_code, d.sales_order, d.warehouse),{}) + .get("qty")) + (flt(d.planned_qty) - flt(d.ordered_qty)) }) item_dict[(d.item_code, d.sales_order, d.warehouse)] = item_details