mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-28 14:18:24 +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()
|
self.sync_utm_campaign()
|
||||||
|
|
||||||
def sync_utm_campaign(self):
|
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:
|
try:
|
||||||
mc = frappe.get_doc("UTM Campaign", self.campaign_name)
|
mc = frappe.get_doc("UTM Campaign", existing)
|
||||||
except frappe.DoesNotExistError:
|
except frappe.DoesNotExistError:
|
||||||
mc = frappe.new_doc("UTM Campaign")
|
mc = frappe.new_doc("UTM Campaign")
|
||||||
mc.name = self.campaign_name
|
mc.name = self.campaign_name
|
||||||
mc.campaign_description = self.description
|
mc.campaign_description = self.description
|
||||||
# link to this Campaign by its document name, which differs from campaign_name
|
# link by the document name, which differs from campaign_name when a naming series is used
|
||||||
# when a naming series is used
|
|
||||||
mc.crm_campaign = self.name
|
mc.crm_campaign = self.name
|
||||||
mc.save(ignore_permissions=True)
|
mc.save(ignore_permissions=True)
|
||||||
|
|
||||||
|
|||||||
@@ -42,3 +42,11 @@ class TestCampaign(ERPNextTestSuite):
|
|||||||
utm = frappe.get_doc("UTM Campaign", campaign.campaign_name)
|
utm = frappe.get_doc("UTM Campaign", campaign.campaign_name)
|
||||||
self.assertEqual(utm.campaign_description, "Spring push")
|
self.assertEqual(utm.campaign_description, "Spring push")
|
||||||
self.assertEqual(utm.crm_campaign, campaign.name)
|
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