public function testAttributesToAccount() { Yii::app()->user->userModel = User::getByUsername('super'); $super = Yii::app()->user->userModel; $account = AccountTestHelper::createAccountByNameForOwner('Account1', $super); $contact = ContactTestHelper::createContactByNameForOwner('Contact1', $super); $contact->officePhone = '12345'; $contact->officeFax = '12345'; $saved = $contact->save(); $this->assertTrue($saved); $account = LeadsUtil::attributesToAccount($contact, $account); $this->assertEquals($contact->officePhone, $account->officePhone); $this->assertEquals($contact->officeFax, $account->officeFax); }
public function actionConvert($id) { assert('!empty($id)'); LeadsUtil::removeFromSession(LeadsUtil::LEAD_CONVERSION_ACCOUNT_DATA_SESSION_KEY); $contact = Contact::getById(intval($id)); if (!LeadsUtil::isStateALead($contact->state)) { $urlParams = array('/contacts/' . $this->getId() . '/details', 'id' => $contact->id); $this->redirect($urlParams); } $convertToAccountSetting = LeadsModule::getConvertToAccountSetting(); $selectAccountForm = new AccountSelectForm(); $account = new Account(); ControllerSecurityUtil::resolveAccessCanCurrentUserWriteModel($contact); $userCanAccessContacts = RightsUtil::canUserAccessModule('ContactsModule', Yii::app()->user->userModel); $userCanAccessAccounts = RightsUtil::canUserAccessModule('AccountsModule', Yii::app()->user->userModel); $userCanCreateAccount = RightsUtil::doesUserHaveAllowByRightName('AccountsModule', AccountsModule::RIGHT_CREATE_ACCOUNTS, Yii::app()->user->userModel); LeadsControllerSecurityUtil::resolveCanUserProperlyConvertLead($userCanAccessContacts, $userCanAccessAccounts, $convertToAccountSetting); if (isset($_POST['AccountSelectForm'])) { $selectAccountForm->setAttributes($_POST['AccountSelectForm']); if ($selectAccountForm->validate()) { $account = Account::getById(intval($selectAccountForm->accountId)); $accountPostData = array('accountId' => intval($selectAccountForm->accountId), 'SelectAccount' => true); LeadsUtil::storeIntoSession(LeadsUtil::LEAD_CONVERSION_ACCOUNT_DATA_SESSION_KEY, $accountPostData); $this->redirect(array('/leads/default/convertFinal', 'id' => $contact->id)); } } elseif (isset($_POST['Account'])) { $account = LeadsUtil::attributesToAccountWithNoPostData($contact, $account, $_POST['Account']); $savedSuccessfully = false; $modelToStringValue = null; $postData = $_POST['Account']; $controllerUtil = static::getZurmoControllerUtil(); $account = $controllerUtil->saveModelFromPost($postData, $account, $savedSuccessfully, $modelToStringValue, true); if (!$account->getErrors()) { $accountPostData = $postData; $accountPostData['CreateAccount'] = true; LeadsUtil::storeIntoSession(LeadsUtil::LEAD_CONVERSION_ACCOUNT_DATA_SESSION_KEY, $accountPostData); $this->redirect(array('/leads/default/convertFinal', 'id' => $contact->id)); } } elseif (isset($_POST['AccountSkip']) || $convertToAccountSetting == LeadsModule::CONVERT_NO_ACCOUNT || $convertToAccountSetting == LeadsModule::CONVERT_ACCOUNT_NOT_REQUIRED && !$userCanAccessAccounts) { $accountPostData = array('AccountSkip' => true); LeadsUtil::storeIntoSession(LeadsUtil::LEAD_CONVERSION_ACCOUNT_DATA_SESSION_KEY, $accountPostData); $this->redirect(array('/leads/default/convertFinal', 'id' => $contact->id)); } else { $account = LeadsUtil::attributesToAccount($contact, $account); } $progressBarAndStepsView = new LeadConversionStepsAndProgressBarForWizardView(); $convertView = new LeadConvertView($this->getId(), $this->getModule()->getId(), $contact->id, strval($contact), $selectAccountForm, $account, $convertToAccountSetting, $userCanCreateAccount); $view = new LeadsPageView(ZurmoDefaultViewUtil::makeTwoStandardViewsForCurrentUser($this, $progressBarAndStepsView, $convertView)); echo $view->render(); }
public function actionConvert($id) { assert('!empty($id)'); $contact = Contact::getById(intval($id)); if (!LeadsUtil::isStateALead($contact->state)) { $urlParams = array('/contacts/' . $this->getId() . '/details', 'id' => $contact->id); $this->redirect($urlParams); } $convertToAccountSetting = LeadsModule::getConvertToAccountSetting(); $selectAccountForm = new AccountSelectForm(); $account = new Account(); ControllerSecurityUtil::resolveAccessCanCurrentUserWriteModel($contact); $userCanAccessContacts = RightsUtil::canUserAccessModule('ContactsModule', Yii::app()->user->userModel); $userCanAccessAccounts = RightsUtil::canUserAccessModule('AccountsModule', Yii::app()->user->userModel); $userCanCreateAccount = RightsUtil::doesUserHaveAllowByRightName('AccountsModule', AccountsModule::RIGHT_CREATE_ACCOUNTS, Yii::app()->user->userModel); LeadsControllerSecurityUtil::resolveCanUserProperlyConvertLead($userCanAccessContacts, $userCanAccessAccounts, $convertToAccountSetting); if (isset($_POST['AccountSelectForm'])) { $selectAccountForm->setAttributes($_POST['AccountSelectForm']); if ($selectAccountForm->validate()) { $account = Account::getById(intval($selectAccountForm->accountId)); $this->actionSaveConvertedContact($contact, $account); } } elseif (isset($_POST['Account'])) { $account = LeadsUtil::attributesToAccountWithNoPostData($contact, $account, $_POST['Account']); $account->setAttributes($_POST['Account']); if ($account->save()) { $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::makeBySecurableItem($contact); ExplicitReadWriteModelPermissionsUtil::resolveExplicitReadWriteModelPermissions($account, $explicitReadWriteModelPermissions); if (!$account->save()) { throw new NotSupportedException(); } $this->actionSaveConvertedContact($contact, $account); } } elseif (isset($_POST['AccountSkip']) || $convertToAccountSetting == LeadsModule::CONVERT_NO_ACCOUNT || $convertToAccountSetting == LeadsModule::CONVERT_ACCOUNT_NOT_REQUIRED && !$userCanAccessAccounts) { $this->actionSaveConvertedContact($contact); } else { $account = LeadsUtil::attributesToAccount($contact, $account); } $convertView = new LeadConvertView($this->getId(), $this->getModule()->getId(), $contact->id, strval($contact), $selectAccountForm, $account, $convertToAccountSetting, $userCanCreateAccount); $view = new LeadsPageView(ZurmoDefaultViewUtil::makeStandardViewForCurrentUser($this, $convertView)); echo $view->render(); }
/** * @depends testCreateStateValues */ public function testAttributesToAccount() { Yii::app()->user->userModel = User::getByUsername('super'); $industries = array('Automotive', 'Adult Entertainment', 'Financial Services', 'Mercenaries & Armaments'); $industryFieldData = CustomFieldData::getByName('Industries'); $industryFieldData->serializedData = serialize($industries); $this->assertTrue($industryFieldData->save()); $user = UserTestHelper::createBasicUser('Bobby'); $contact = new Contact(); $contact->owner = $user; $contact->title->value = 'Mr.'; $contact->firstName = 'Super'; $contact->lastName = 'Man'; $contact->companyName = 'ABC Company'; $stateIds = ContactsUtil::getContactStateDataKeyedById(); foreach ($stateIds as $stateId => $notUsed) { $stateToUse = ContactState::getById($stateId); break; } $contact->state = $stateToUse; //grab first state. $contact->officePhone = '1234567890'; $contact->officeFax = '1222222222'; $contact->industry->value = $industries[1]; $contact->website = 'http://www.something.com'; $contact->primaryAddress->street1 = '129 Noodle Boulevard'; $contact->primaryAddress->street2 = 'Apartment 6000A'; $contact->primaryAddress->city = 'Noodleville'; $contact->primaryAddress->postalCode = '23453'; $contact->primaryAddress->country = 'The Good Old US of A'; $contact->secondaryAddress->street1 = '25 de Agosto 2543'; $contact->secondaryAddress->street2 = 'Local 3'; $contact->secondaryAddress->city = 'Ciudad de Los Fideos'; $contact->secondaryAddress->postalCode = '5123-4'; $contact->secondaryAddress->country = 'Latinoland'; $this->assertTrue($contact->save()); $id = $contact->id; unset($contact); $contact = Contact::getById($id); $account = new Account(); $account = LeadsUtil::attributesToAccount($contact, $account); $this->assertTrue($account->save()); $id = $account->id; unset($account); $account = Account::getById($id); $this->assertEquals('ABC Company', $account->name); $this->assertEquals('1234567890', $account->officePhone); $this->assertEquals('1222222222', $account->officeFax); $this->assertEquals('http://www.something.com', $account->website); $this->assertEquals($industries[1], $account->industry->value); $this->assertEquals('super', $account->owner->username); $this->assertEquals('129 Noodle Boulevard', $account->billingAddress->street1); $this->assertEquals('Apartment 6000A', $account->billingAddress->street2); $this->assertEquals('Noodleville', $account->billingAddress->city); $this->assertEquals('23453', $account->billingAddress->postalCode); $this->assertEquals('The Good Old US of A', $account->billingAddress->country); $this->assertEquals('25 de Agosto 2543', $account->shippingAddress->street1); $this->assertEquals('Local 3', $account->shippingAddress->street2); $this->assertEquals('Ciudad de Los Fideos', $account->shippingAddress->city); $this->assertEquals('5123-4', $account->shippingAddress->postalCode); $this->assertEquals('Latinoland', $account->shippingAddress->country); }