mirror of
https://github.com/frappe/erpnext.git
synced 2026-02-21 10:26:30 +00:00
fix: validate inter-company transaction address links
(cherry picked from commit aed46ad5b9)
This commit is contained in:
@@ -2286,6 +2286,18 @@ def make_inter_company_transaction(doctype, source_name, target_doc=None):
|
|||||||
set_purchase_references(target)
|
set_purchase_references(target)
|
||||||
|
|
||||||
def update_details(source_doc, target_doc, source_parent):
|
def update_details(source_doc, target_doc, source_parent):
|
||||||
|
def _validate_address_link(address, link_doctype, link_name):
|
||||||
|
return frappe.db.get_value(
|
||||||
|
"Dynamic Link",
|
||||||
|
{
|
||||||
|
"parent": address,
|
||||||
|
"parenttype": "Address",
|
||||||
|
"link_doctype": link_doctype,
|
||||||
|
"link_name": link_name,
|
||||||
|
},
|
||||||
|
"parent",
|
||||||
|
)
|
||||||
|
|
||||||
target_doc.inter_company_invoice_reference = source_doc.name
|
target_doc.inter_company_invoice_reference = source_doc.name
|
||||||
if target_doc.doctype in ["Purchase Invoice", "Purchase Order"]:
|
if target_doc.doctype in ["Purchase Invoice", "Purchase Order"]:
|
||||||
currency = frappe.db.get_value("Supplier", details.get("party"), "default_currency")
|
currency = frappe.db.get_value("Supplier", details.get("party"), "default_currency")
|
||||||
@@ -2296,16 +2308,34 @@ def make_inter_company_transaction(doctype, source_name, target_doc=None):
|
|||||||
target_doc.buying_price_list = source_doc.selling_price_list
|
target_doc.buying_price_list = source_doc.selling_price_list
|
||||||
|
|
||||||
# Invert Addresses
|
# Invert Addresses
|
||||||
update_address(target_doc, "supplier_address", "address_display", source_doc.company_address)
|
if source_doc.company_address and _validate_address_link(
|
||||||
update_address(
|
source_doc.company_address, "Supplier", details.get("party")
|
||||||
target_doc, "dispatch_address", "dispatch_address_display", source_doc.dispatch_address_name
|
):
|
||||||
)
|
update_address(target_doc, "supplier_address", "address_display", source_doc.company_address)
|
||||||
update_address(
|
if source_doc.dispatch_address_name and _validate_address_link(
|
||||||
target_doc, "shipping_address", "shipping_address_display", source_doc.shipping_address_name
|
source_doc.dispatch_address_name, "Company", details.get("company")
|
||||||
)
|
):
|
||||||
update_address(
|
update_address(
|
||||||
target_doc, "billing_address", "billing_address_display", source_doc.customer_address
|
target_doc,
|
||||||
)
|
"dispatch_address",
|
||||||
|
"dispatch_address_display",
|
||||||
|
source_doc.dispatch_address_name,
|
||||||
|
)
|
||||||
|
if source_doc.shipping_address_name and _validate_address_link(
|
||||||
|
source_doc.shipping_address_name, "Company", details.get("company")
|
||||||
|
):
|
||||||
|
update_address(
|
||||||
|
target_doc,
|
||||||
|
"shipping_address",
|
||||||
|
"shipping_address_display",
|
||||||
|
source_doc.shipping_address_name,
|
||||||
|
)
|
||||||
|
if source_doc.customer_address and _validate_address_link(
|
||||||
|
source_doc.customer_address, "Company", details.get("company")
|
||||||
|
):
|
||||||
|
update_address(
|
||||||
|
target_doc, "billing_address", "billing_address_display", source_doc.customer_address
|
||||||
|
)
|
||||||
|
|
||||||
if currency:
|
if currency:
|
||||||
target_doc.currency = currency
|
target_doc.currency = currency
|
||||||
@@ -2326,13 +2356,22 @@ def make_inter_company_transaction(doctype, source_name, target_doc=None):
|
|||||||
target_doc.customer = details.get("party")
|
target_doc.customer = details.get("party")
|
||||||
target_doc.selling_price_list = source_doc.buying_price_list
|
target_doc.selling_price_list = source_doc.buying_price_list
|
||||||
|
|
||||||
update_address(
|
if source_doc.supplier_address and _validate_address_link(
|
||||||
target_doc, "company_address", "company_address_display", source_doc.supplier_address
|
source_doc.supplier_address, "Company", details.get("company")
|
||||||
)
|
):
|
||||||
update_address(
|
update_address(
|
||||||
target_doc, "shipping_address_name", "shipping_address", source_doc.shipping_address
|
target_doc, "company_address", "company_address_display", source_doc.supplier_address
|
||||||
)
|
)
|
||||||
update_address(target_doc, "customer_address", "address_display", source_doc.shipping_address)
|
if source_doc.shipping_address and _validate_address_link(
|
||||||
|
source_doc.shipping_address, "Customer", details.get("party")
|
||||||
|
):
|
||||||
|
update_address(
|
||||||
|
target_doc, "shipping_address_name", "shipping_address", source_doc.shipping_address
|
||||||
|
)
|
||||||
|
if source_doc.shipping_address and _validate_address_link(
|
||||||
|
source_doc.shipping_address, "Customer", details.get("party")
|
||||||
|
):
|
||||||
|
update_address(target_doc, "customer_address", "address_display", source_doc.shipping_address)
|
||||||
|
|
||||||
if currency:
|
if currency:
|
||||||
target_doc.currency = currency
|
target_doc.currency = currency
|
||||||
|
|||||||
@@ -1152,6 +1152,18 @@ def make_inter_company_transaction(doctype, source_name, target_doc=None):
|
|||||||
frappe.throw(_("All items have already been received"))
|
frappe.throw(_("All items have already been received"))
|
||||||
|
|
||||||
def update_details(source_doc, target_doc, source_parent):
|
def update_details(source_doc, target_doc, source_parent):
|
||||||
|
def _validate_address_link(address, link_doctype, link_name):
|
||||||
|
return frappe.db.get_value(
|
||||||
|
"Dynamic Link",
|
||||||
|
{
|
||||||
|
"parent": address,
|
||||||
|
"parenttype": "Address",
|
||||||
|
"link_doctype": link_doctype,
|
||||||
|
"link_name": link_name,
|
||||||
|
},
|
||||||
|
"parent",
|
||||||
|
)
|
||||||
|
|
||||||
target_doc.inter_company_invoice_reference = source_doc.name
|
target_doc.inter_company_invoice_reference = source_doc.name
|
||||||
if target_doc.doctype == "Purchase Receipt":
|
if target_doc.doctype == "Purchase Receipt":
|
||||||
target_doc.company = details.get("company")
|
target_doc.company = details.get("company")
|
||||||
@@ -1161,16 +1173,34 @@ def make_inter_company_transaction(doctype, source_name, target_doc=None):
|
|||||||
target_doc.inter_company_reference = source_doc.name
|
target_doc.inter_company_reference = source_doc.name
|
||||||
|
|
||||||
# Invert the address on target doc creation
|
# Invert the address on target doc creation
|
||||||
update_address(target_doc, "supplier_address", "address_display", source_doc.company_address)
|
if source_doc.company_address and _validate_address_link(
|
||||||
update_address(
|
source_doc.company_address, "Supplier", details.get("party")
|
||||||
target_doc, "dispatch_address", "dispatch_address_display", source_doc.dispatch_address_name
|
):
|
||||||
)
|
update_address(target_doc, "supplier_address", "address_display", source_doc.company_address)
|
||||||
update_address(
|
if source_doc.dispatch_address_name and _validate_address_link(
|
||||||
target_doc, "shipping_address", "shipping_address_display", source_doc.shipping_address_name
|
source_doc.dispatch_address_name, "Company", details.get("company")
|
||||||
)
|
):
|
||||||
update_address(
|
update_address(
|
||||||
target_doc, "billing_address", "billing_address_display", source_doc.customer_address
|
target_doc,
|
||||||
)
|
"dispatch_address",
|
||||||
|
"dispatch_address_display",
|
||||||
|
source_doc.dispatch_address_name,
|
||||||
|
)
|
||||||
|
if source_doc.shipping_address_name and _validate_address_link(
|
||||||
|
source_doc.shipping_address_name, "Company", details.get("company")
|
||||||
|
):
|
||||||
|
update_address(
|
||||||
|
target_doc,
|
||||||
|
"shipping_address",
|
||||||
|
"shipping_address_display",
|
||||||
|
source_doc.shipping_address_name,
|
||||||
|
)
|
||||||
|
if source_doc.customer_address and _validate_address_link(
|
||||||
|
source_doc.customer_address, "Company", details.get("company")
|
||||||
|
):
|
||||||
|
update_address(
|
||||||
|
target_doc, "billing_address", "billing_address_display", source_doc.customer_address
|
||||||
|
)
|
||||||
|
|
||||||
update_taxes(
|
update_taxes(
|
||||||
target_doc,
|
target_doc,
|
||||||
@@ -1190,13 +1220,22 @@ def make_inter_company_transaction(doctype, source_name, target_doc=None):
|
|||||||
target_doc.inter_company_reference = source_doc.name
|
target_doc.inter_company_reference = source_doc.name
|
||||||
|
|
||||||
# Invert the address on target doc creation
|
# Invert the address on target doc creation
|
||||||
update_address(
|
if source_doc.supplier_address and _validate_address_link(
|
||||||
target_doc, "company_address", "company_address_display", source_doc.supplier_address
|
source_doc.supplier_address, "Company", details.get("company")
|
||||||
)
|
):
|
||||||
update_address(
|
update_address(
|
||||||
target_doc, "shipping_address_name", "shipping_address", source_doc.shipping_address
|
target_doc, "company_address", "company_address_display", source_doc.supplier_address
|
||||||
)
|
)
|
||||||
update_address(target_doc, "customer_address", "address_display", source_doc.shipping_address)
|
if source_doc.shipping_address and _validate_address_link(
|
||||||
|
source_doc.shipping_address, "Customer", details.get("party")
|
||||||
|
):
|
||||||
|
update_address(
|
||||||
|
target_doc, "shipping_address_name", "shipping_address", source_doc.shipping_address
|
||||||
|
)
|
||||||
|
if source_doc.shipping_address and _validate_address_link(
|
||||||
|
source_doc.shipping_address, "Customer", details.get("party")
|
||||||
|
):
|
||||||
|
update_address(target_doc, "customer_address", "address_display", source_doc.shipping_address)
|
||||||
|
|
||||||
update_taxes(
|
update_taxes(
|
||||||
target_doc,
|
target_doc,
|
||||||
|
|||||||
Reference in New Issue
Block a user