Skip to content

Commit

Permalink
Merge pull request frappe#37595 from vorasmit/purchase-gl
Browse files Browse the repository at this point in the history
fix: add regional support to extend purchase gl entries
  • Loading branch information
deepeshgarg007 authored Oct 20, 2023
2 parents 14b009b + ff7108a commit 2a7d1c4
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1066,7 +1066,7 @@ def get_asset_gl_entry(self, gl_entries):
"debit_in_account_currency": (
base_asset_amount if cwip_account_currency == self.company_currency else asset_amount
),
"cost_center": self.cost_center,
"cost_center": item.cost_center or self.cost_center,
"project": item.project or self.project,
},
item=item,
Expand Down
12 changes: 10 additions & 2 deletions erpnext/controllers/stock_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ def make_gl_entries(self, gl_entries=None, from_repost=False):
elif self.doctype in ["Purchase Receipt", "Purchase Invoice"] and self.docstatus == 1:
gl_entries = []
gl_entries = self.get_asset_gl_entry(gl_entries)
update_regional_gl_entries(gl_entries, self)
make_gl_entries(gl_entries, from_repost=from_repost)

def validate_serialized_batch(self):
Expand Down Expand Up @@ -855,8 +856,9 @@ def add_gl_entry(

@frappe.whitelist()
def show_accounting_ledger_preview(company, doctype, docname):
filters = {"company": company, "include_dimensions": 1}
filters = frappe._dict(company=company, include_dimensions=1)
doc = frappe.get_doc(doctype, docname)
doc.run_method("before_gl_preview")

gl_columns, gl_data = get_accounting_ledger_preview(doc, filters)

Expand All @@ -867,8 +869,9 @@ def show_accounting_ledger_preview(company, doctype, docname):

@frappe.whitelist()
def show_stock_ledger_preview(company, doctype, docname):
filters = {"company": company}
filters = frappe._dict(company=company)
doc = frappe.get_doc(doctype, docname)
doc.run_method("before_sl_preview")

sl_columns, sl_data = get_stock_ledger_preview(doc, filters)

Expand Down Expand Up @@ -1216,3 +1219,8 @@ def create_item_wise_repost_entries(voucher_type, voucher_no, allow_zero_rate=Fa
repost_entries.append(repost_entry)

return repost_entries


@erpnext.allow_regional
def update_regional_gl_entries(gl_list, doc):
return
36 changes: 21 additions & 15 deletions erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,7 @@ def get_gl_entries(self, warehouse_account=None):
self.make_item_gl_entries(gl_entries, warehouse_account=warehouse_account)
self.make_tax_gl_entries(gl_entries)
self.get_asset_gl_entry(gl_entries)
update_regional_gl_entries(gl_entries, self)

return process_gl_map(gl_entries)

Expand Down Expand Up @@ -821,16 +822,14 @@ def update_billing_status(self, update_modified=True):
po_details.append(d.purchase_order_item)

if po_details:
updated_pr += update_billed_amount_based_on_po(po_details, update_modified)
updated_pr += update_billed_amount_based_on_po(po_details, update_modified, self)

for pr in set(updated_pr):
pr_doc = self if (pr == self.name) else frappe.get_doc("Purchase Receipt", pr)
update_billing_percentage(pr_doc, update_modified=update_modified)

self.load_from_db()


def update_billed_amount_based_on_po(po_details, update_modified=True):
def update_billed_amount_based_on_po(po_details, update_modified=True, pr_doc=None):
po_billed_amt_details = get_billed_amount_against_po(po_details)

# Get all Purchase Receipt Item rows against the Purchase Order Items
Expand Down Expand Up @@ -859,13 +858,19 @@ def update_billed_amount_based_on_po(po_details, update_modified=True):
po_billed_amt_details[pr_item.purchase_order_item] = billed_against_po

if pr_item.billed_amt != billed_amt_agianst_pr:
frappe.db.set_value(
"Purchase Receipt Item",
pr_item.name,
"billed_amt",
billed_amt_agianst_pr,
update_modified=update_modified,
)
# update existing doc if possible
if pr_doc and pr_item.parent == pr_doc.name:
pr_item = next((item for item in pr_doc.items if item.name == pr_item.name), None)
pr_item.db_set("billed_amt", billed_amt_agianst_pr, update_modified=update_modified)

else:
frappe.db.set_value(
"Purchase Receipt Item",
pr_item.name,
"billed_amt",
billed_amt_agianst_pr,
update_modified=update_modified,
)

updated_pr.append(pr_item.parent)

Expand Down Expand Up @@ -941,9 +946,6 @@ def get_billed_amount_against_po(po_items):


def update_billing_percentage(pr_doc, update_modified=True, adjust_incoming_rate=False):
# Reload as billed amount was set in db directly
pr_doc.load_from_db()

# Update Billing % based on pending accepted qty
total_amount, total_billed_amount = 0, 0
item_wise_returned_qty = get_item_wise_returned_qty(pr_doc)
Expand All @@ -969,7 +971,6 @@ def update_billing_percentage(pr_doc, update_modified=True, adjust_incoming_rate

percent_billed = round(100 * (total_billed_amount / (total_amount or 1)), 6)
pr_doc.db_set("per_billed", percent_billed)
pr_doc.load_from_db()

if update_modified:
pr_doc.set_status(update=True)
Expand Down Expand Up @@ -1255,3 +1256,8 @@ def get_item_account_wise_additional_cost(purchase_document):

def on_doctype_update():
frappe.db.add_index("Purchase Receipt", ["supplier", "is_return", "return_against"])


@erpnext.allow_regional
def update_regional_gl_entries(gl_list, doc):
return

0 comments on commit 2a7d1c4

Please sign in to comment.