Calculated Fields not updating on $bean->save()

Hi all.

I've been racking my brain on this one now, I tried $bean->updateCalculatedFields(); but it's not working. Currently I am filling in missing records, so I am creating: Lead -> Contact/Account -> Opportunity -> Meeting, they all have a "unique" ID between them that is generated. On all modules apart from the Lead it is a calculated field. But when adding the links between the modules and doing a $bean->save() it's not actually adding the calculated fields in.

I tried another save after the fact as well but had no luck. Here's an example of the creation:

//Create Account
		$account = BeanFactory::newBean('Accounts');
		$account->customer_salutation_c = $title;
		$account->customer_first_name_c = $firstName;
		$account->customer_last_name_c = $lastName;
		$account->first_name_c = $firstName;
		$account->last_name_c = $lastName;
		$account->name = "$firstName $lastName ($firstName $lastName)"; //This matches formula on leads
		$account->gender_c = $gender;
		$account->date_of_birth_c = $dateOfBirth;
		$account->age_c = $age;
		$account->billing_address_street = $street;
		$account->billing_address_city = $town;
		$account->billing_address_state = $county;
		$account->billing_address_postalcode = $postCode;
		$account->phone_home_c = $phone;
		$account->phone_mobile_c = $mobile;
		$account->email1 = $email;
		//$account->a_branch_accounts_name = $branch; //Should link branches automatically
		$account->created_by = 1;
		$account->save();
		
		//Create Contact
		$contact = BeanFactory::newBean('Contacts');
		$contact->salutation = $title;
		$contact->first_name = $firstName;
		$contact->last_name = $lastName;
		$contact->name = "$firstName $lastName"; //This matches formula on leads
		$contact->gender_c = $gender;
		$contact->date_of_birth_c = $dateOfBirth;
		$contact->age_c = $age;
		$contact->primary_address_street = $street;
		$contact->primary_address_city = $town;
		$contact->primary_address_state = $county;
		$contact->primary_address_postalcode = $postCode;
		$contact->phone_home = $phone;
		$contact->phone_mobile = $mobile;
		$contact->email1 = $email;
		$contact->created_by = 1;
		$contact->save();

		//Create Opp
		$opp = BeanFactory::newBean('Opportunities');
		$opp->customer_salutation_c = $title;
		$opp->customer_first_name_c = $firstName;
		$opp->customer_last_name_c = $lastName;
		$opp->name = "$firstName $lastName"; //This matches formula on leads
		$opp->customer_full_name_c = "$firstName $lastName"; //This matches formula on leads
		$opp->gender_c = $gender;
		$opp->date_of_birth_c = $dateOfBirth;
		$opp->age_c = $age;
		$opp->primary_address_street_c = $street;
		$opp->primary_address_city_c = $town;
		$opp->primary_address_state_c = $county;
		$opp->primary_address_postalcode_c = $postCode;
		$opp->phone_home_c = $phone;
		$opp->phone_mobile_c = $mobile;
		$opp->email1 = $email;
		$opp->created_by = 1;
		$opp->save();

		//Create Lead
		$lead = BeanFactory::newBean('Leads');
		$lead->customer_salutation_c = $title;
		$lead->customer_first_name_c = $firstName;
		$lead->customer_last_name_c = $lastName;
		$lead->first_name = $firstName;
		$lead->last_name = $lastName;
		$lead->name = "$firstName $lastName"; //This matches formula on leads
		$lead->gender_c = $gender;
		$lead->date_of_birth_c = $dateOfBirth;
		$lead->age_c = $age;
		$lead->primary_address_street = $street;
		$lead->primary_address_city = $town;
		$lead->primary_address_state = $county;
		$lead->primary_address_postalcode = $postCode;
		$lead->phone_home = $phone;
		$lead->phone_mobile = $mobile;
		$lead->email1 = $email;
		//Non fields
		$lead->status = 'Converted';
		$lead->converted = 1;
		$lead->contact_id = $contact->id;
		$lead->account_id = $account->id;
		$lead->team_id = 1;
		$lead->team_set_id = 1;
		$lead->created_by = 1;
		$lead->save();
		
		//Process relationships
		$contact->load_relationship('leads');
		$contact->leads->add($lead->id);
		
		$account->load_relationship('contacts');
		$account->contacts->add($contact->id);
		
		$opp->load_relationship('accounts');
		$opp->accounts->add($account->id);
		
		$contact->save();
		$account->save();
		$opp->save();

Thanks!

Parents
  • Hello,

    Could this come from from the way the links are created?
    When we work with new Beans and Relationships we find best to generate the ids before linking the modules and saving:

    $bean->id = Sugarcrm\Sugarcrm\Util\Uuid::uuid4();
    $bean->new_with_id = true;

    I think the reason was that ids are generated after the relationship save in the SugarBean save method.
    Or something similar, I may not remember it exactly :).

    Hoping it helps.
    Laurent

Reply
  • Hello,

    Could this come from from the way the links are created?
    When we work with new Beans and Relationships we find best to generate the ids before linking the modules and saving:

    $bean->id = Sugarcrm\Sugarcrm\Util\Uuid::uuid4();
    $bean->new_with_id = true;

    I think the reason was that ids are generated after the relationship save in the SugarBean save method.
    Or something similar, I may not remember it exactly :).

    Hoping it helps.
    Laurent

Children
No Data