mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-11 13:41:47 +00:00
fix: reuse the existing UTM Campaign mirror when campaign_name is edited
This commit is contained in:
@@ -32,14 +32,16 @@ class Campaign(Document):
|
||||
self.sync_utm_campaign()
|
||||
|
||||
def sync_utm_campaign(self):
|
||||
# look up the existing mirror by the stable Campaign link first, so editing
|
||||
# campaign_name updates that mirror instead of creating a duplicate
|
||||
existing = frappe.db.get_value("UTM Campaign", {"crm_campaign": self.name}) or self.campaign_name
|
||||
try:
|
||||
mc = frappe.get_doc("UTM Campaign", self.campaign_name)
|
||||
mc = frappe.get_doc("UTM Campaign", existing)
|
||||
except frappe.DoesNotExistError:
|
||||
mc = frappe.new_doc("UTM Campaign")
|
||||
mc.name = self.campaign_name
|
||||
mc.campaign_description = self.description
|
||||
# link to this Campaign by its document name, which differs from campaign_name
|
||||
# when a naming series is used
|
||||
# link by the document name, which differs from campaign_name when a naming series is used
|
||||
mc.crm_campaign = self.name
|
||||
mc.save(ignore_permissions=True)
|
||||
|
||||
|
||||
@@ -42,3 +42,11 @@ class TestCampaign(ERPNextTestSuite):
|
||||
utm = frappe.get_doc("UTM Campaign", campaign.campaign_name)
|
||||
self.assertEqual(utm.campaign_description, "Spring push")
|
||||
self.assertEqual(utm.crm_campaign, campaign.name)
|
||||
|
||||
def test_editing_campaign_name_reuses_the_same_utm_campaign(self):
|
||||
campaign = self.make_campaign(campaign_name="_Test Campaign Rename A")
|
||||
campaign.campaign_name = "_Test Campaign Rename B"
|
||||
campaign.save()
|
||||
# the edit updates the existing mirror rather than creating a second one
|
||||
mirrors = frappe.get_all("UTM Campaign", filters={"crm_campaign": campaign.name})
|
||||
self.assertEqual(len(mirrors), 1)
|
||||
|
||||
Reference in New Issue
Block a user