Exemplo n.º 1
0
 public function testForgettingAModelWithAddingAManyToManyRelation()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     //Setup test data owned by the super user.
     $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super);
     $contact = ContactTestHelper::createContactWithAccountByNameForOwner('superContact', $super, $account);
     $contactId = $contact->id;
     OpportunityTestHelper::createOpportunityStagesIfDoesNotExist();
     $opportunity = OpportunityTestHelper::createOpportunityWithAccountByNameForOwner('superOpp', $super, $account);
     $opportunityId = $opportunity->id;
     //Model forgets ok.
     $contact->forget();
     $contact = Contact::getById($contactId);
     $opportunity->contacts->add($contact);
     $opportunity->save();
     //Still forgets ok, because we are forgetting both opportunity and contact. If we forget just contact,
     //it would break later when you try to look at $contact->oppportunities or $opportunity->contacts
     $contact->forget();
     $opportunity->forget();
     $contact = Contact::getById($contactId);
     $opportunity = Opportunity::getById($opportunityId);
     //Finds many-to-many relationships ok on both sides
     $this->assertEquals(1, $opportunity->contacts->count());
     $this->assertEquals(1, $contact->opportunities->count());
     $this->assertEquals($opportunity, $contact->opportunities[0]);
     $this->assertEquals($contact, $opportunity->contacts[0]);
 }
Exemplo n.º 2
0
 public function actionCopy($id)
 {
     $copyToOpportunity = new Opportunity();
     $postVariableName = get_class($copyToOpportunity);
     if (!isset($_POST[$postVariableName])) {
         $opportunity = Opportunity::getById((int) $id);
         ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($opportunity);
         ZurmoCopyModelUtil::copy($opportunity, $copyToOpportunity);
     }
     $this->processEdit($copyToOpportunity);
 }
 public function testSuperUserAllDefaultControllerActions()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     //Test all default controller actions that do not require any POST/GET variables to be passed.
     //This does not include portlet controller actions.
     $this->runControllerWithNoExceptionsAndGetContent('opportunities/default');
     $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/index');
     $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/create');
     $content = $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/list');
     $this->assertFalse(strpos($content, 'anyMixedAttributes') === false);
     //Test the search or paging of the listview.
     Yii::app()->clientScript->reset();
     //to make sure old js doesn't make it to the UI
     $this->setGetArray(array('ajax' => 'list-view'));
     $content = $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/list');
     $this->assertTrue(strpos($content, 'anyMixedAttributes') === false);
     $this->resetGetArray();
     //Default Controller actions requiring some sort of parameter via POST or GET
     //Load Model Edit Views
     $opportunities = Opportunity::getAll();
     $this->assertEquals(12, count($opportunities));
     $superOpportunityId = self::getModelIdByModelNameAndName('Opportunity', 'superOpp');
     $superOpportunityId2 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp2');
     $superOpportunityId3 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp3');
     $superOpportunityId4 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp4');
     $superOpportunityId5 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp5');
     $superOpportunityId6 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp6');
     $superOpportunityId7 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp7');
     $superOpportunityId8 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp8');
     $superOpportunityId9 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp9');
     $superOpportunityId10 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp10');
     $superOpportunityId11 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp11');
     $superOpportunityId12 = self::getModelIdByModelNameAndName('Opportunity', 'superOpp12');
     $this->setGetArray(array('id' => $superOpportunityId));
     $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/edit');
     //Save opportunity.
     $superOpportunity = Opportunity::getById($superOpportunityId);
     $this->assertEquals(null, $superOpportunity->description);
     $this->setPostArray(array('Opportunity' => array('description' => '456765421')));
     $this->runControllerWithRedirectExceptionAndGetContent('opportunities/default/edit');
     $superOpportunity = Opportunity::getById($superOpportunityId);
     $this->assertEquals('456765421', $superOpportunity->description);
     //Test having a failed validation on the opportunity during save.
     $this->setGetArray(array('id' => $superOpportunityId));
     $this->setPostArray(array('Opportunity' => array('name' => '')));
     $content = $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/edit');
     $this->assertFalse(strpos($content, 'Name cannot be blank') === false);
     //Load Model Detail Views
     $this->setGetArray(array('id' => $superOpportunityId));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/details');
     //Load Model MassEdit Views.
     //MassEdit view for single selected ids
     $this->setGetArray(array('selectedIds' => '4,5,6,7,8,9', 'selectAll' => ''));
     // Not Coding Standard
     $this->resetPostArray();
     $content = $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/massEdit');
     $this->assertFalse(strpos($content, '<strong>6</strong>&#160;records selected for updating') === false);
     //MassEdit view for all result selected ids
     $this->setGetArray(array('selectAll' => '1'));
     $this->resetPostArray();
     $content = $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/massEdit');
     $this->assertFalse(strpos($content, '<strong>12</strong>&#160;records selected for updating') === false);
     //save Model MassEdit for selected Ids
     //Test that the 2 contacts do not have the office phone number we are populating them with.
     $opportunity1 = Opportunity::getById($superOpportunityId);
     $opportunity2 = Opportunity::getById($superOpportunityId2);
     $opportunity3 = Opportunity::getById($superOpportunityId3);
     $opportunity4 = Opportunity::getById($superOpportunityId4);
     $this->assertNotEquals('7788', $opportunity1->description);
     $this->assertNotEquals('7788', $opportunity2->description);
     $this->assertNotEquals('7788', $opportunity3->description);
     $this->assertNotEquals('7788', $opportunity4->description);
     $this->setGetArray(array('selectedIds' => $superOpportunityId . ',' . $superOpportunityId2, 'selectAll' => '', 'Opportunity_page' => 1));
     $this->setPostArray(array('Opportunity' => array('description' => '7788'), 'MassEdit' => array('description' => 1)));
     $pageSize = Yii::app()->pagination->getForCurrentUserByType('massEditProgressPageSize');
     $this->assertEquals(5, $pageSize);
     Yii::app()->pagination->setForCurrentUserByType('massEditProgressPageSize', 20);
     $this->runControllerWithRedirectExceptionAndGetContent('opportunities/default/massEdit');
     Yii::app()->pagination->setForCurrentUserByType('massEditProgressPageSize', $pageSize);
     //Test that the 2 opportunities have the new office phone number and the other contacts do not.
     $opportunity1 = Opportunity::getById($superOpportunityId);
     $opportunity2 = Opportunity::getById($superOpportunityId2);
     $opportunity3 = Opportunity::getById($superOpportunityId3);
     $opportunity4 = Opportunity::getById($superOpportunityId4);
     $opportunity5 = Opportunity::getById($superOpportunityId5);
     $opportunity6 = Opportunity::getById($superOpportunityId6);
     $opportunity7 = Opportunity::getById($superOpportunityId7);
     $opportunity8 = Opportunity::getById($superOpportunityId8);
     $opportunity9 = Opportunity::getById($superOpportunityId9);
     $opportunity10 = Opportunity::getById($superOpportunityId10);
     $opportunity11 = Opportunity::getById($superOpportunityId11);
     $opportunity12 = Opportunity::getById($superOpportunityId12);
     $this->assertEquals('7788', $opportunity1->description);
     $this->assertEquals('7788', $opportunity2->description);
     $this->assertNotEquals('7788', $opportunity3->description);
     $this->assertNotEquals('7788', $opportunity4->description);
     $this->assertNotEquals('7788', $opportunity5->description);
     $this->assertNotEquals('7788', $opportunity6->description);
     $this->assertNotEquals('7788', $opportunity7->description);
     $this->assertNotEquals('7788', $opportunity8->description);
     $this->assertNotEquals('7788', $opportunity9->description);
     $this->assertNotEquals('7788', $opportunity10->description);
     $this->assertNotEquals('7788', $opportunity11->description);
     $this->assertNotEquals('7788', $opportunity12->description);
     //save Model MassEdit for entire search result
     $this->setGetArray(array('selectAll' => '1', 'Opportunity_page' => 1));
     $this->setPostArray(array('Opportunity' => array('description' => '6654'), 'MassEdit' => array('description' => 1)));
     $pageSize = Yii::app()->pagination->getForCurrentUserByType('massEditProgressPageSize');
     $this->assertEquals(5, $pageSize);
     Yii::app()->pagination->setForCurrentUserByType('massEditProgressPageSize', 20);
     $this->runControllerWithRedirectExceptionAndGetContent('opportunities/default/massEdit');
     Yii::app()->pagination->setForCurrentUserByType('massEditProgressPageSize', $pageSize);
     //Test that all opportunities have the new description.
     $opportunity1 = Opportunity::getById($superOpportunityId);
     $opportunity2 = Opportunity::getById($superOpportunityId2);
     $opportunity3 = Opportunity::getById($superOpportunityId3);
     $opportunity4 = Opportunity::getById($superOpportunityId4);
     $opportunity5 = Opportunity::getById($superOpportunityId5);
     $opportunity6 = Opportunity::getById($superOpportunityId6);
     $opportunity7 = Opportunity::getById($superOpportunityId7);
     $opportunity8 = Opportunity::getById($superOpportunityId8);
     $opportunity9 = Opportunity::getById($superOpportunityId9);
     $opportunity10 = Opportunity::getById($superOpportunityId10);
     $opportunity11 = Opportunity::getById($superOpportunityId11);
     $opportunity12 = Opportunity::getById($superOpportunityId12);
     $this->assertEquals('6654', $opportunity1->description);
     $this->assertEquals('6654', $opportunity2->description);
     $this->assertEquals('6654', $opportunity3->description);
     $this->assertEquals('6654', $opportunity4->description);
     $this->assertEquals('6654', $opportunity5->description);
     $this->assertEquals('6654', $opportunity6->description);
     $this->assertEquals('6654', $opportunity7->description);
     $this->assertEquals('6654', $opportunity8->description);
     $this->assertEquals('6654', $opportunity9->description);
     $this->assertEquals('6654', $opportunity10->description);
     $this->assertEquals('6654', $opportunity11->description);
     $this->assertEquals('6654', $opportunity12->description);
     //Run Mass Update using progress save.
     $pageSize = Yii::app()->pagination->getForCurrentUserByType('massEditProgressPageSize');
     $this->assertEquals(5, $pageSize);
     Yii::app()->pagination->setForCurrentUserByType('massEditProgressPageSize', 1);
     //The page size is smaller than the result set, so it should exit.
     $this->runControllerWithExitExceptionAndGetContent('opportunities/default/massEdit');
     //save Modal MassEdit using progress load for page 2, 3 and 4.
     $this->setGetArray(array('selectAll' => '1', 'Opportunity_page' => 2));
     $content = $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/massEditProgressSave');
     $this->assertFalse(strpos($content, '"value":16') === false);
     $this->setGetArray(array('selectAll' => '1', 'Opportunity_page' => 3));
     $content = $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/massEditProgressSave');
     $this->assertFalse(strpos($content, '"value":25') === false);
     $this->setGetArray(array('selectAll' => '1', 'Opportunity_page' => 4));
     $content = $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/massEditProgressSave');
     $this->assertFalse(strpos($content, '"value":33') === false);
     //Set page size back to old value.
     Yii::app()->pagination->setForCurrentUserByType('massEditProgressPageSize', $pageSize);
     //save Model MassEdit for selected Ids
     //Test that the 2 contacts do not have the closed date populating them with.
     //Test that closed dates are properly updated
     $opportunity1 = Opportunity::getById($superOpportunityId);
     $opportunity2 = Opportunity::getById($superOpportunityId2);
     $opportunity3 = Opportunity::getById($superOpportunityId3);
     $opportunity4 = Opportunity::getById($superOpportunityId4);
     $this->assertNotEquals('2012-12-05', $opportunity1->closeDate);
     $this->assertNotEquals('2012-12-05', $opportunity2->closeDate);
     $this->assertNotEquals('2012-12-05', $opportunity3->closeDate);
     $this->assertNotEquals('2012-12-05', $opportunity4->closeDate);
     $this->setGetArray(array('selectedIds' => $superOpportunityId . ',' . $superOpportunityId2, 'selectAll' => '', 'Opportunity_page' => 1));
     $this->setPostArray(array('Opportunity' => array('closeDate' => '12/5/12'), 'MassEdit' => array('closeDate' => 1)));
     $pageSize = Yii::app()->pagination->getForCurrentUserByType('massEditProgressPageSize');
     $this->assertEquals(5, $pageSize);
     Yii::app()->pagination->setForCurrentUserByType('massEditProgressPageSize', 20);
     $content = $this->runControllerWithRedirectExceptionAndGetContent('opportunities/default/massEdit');
     $opportunity1 = Opportunity::getById($superOpportunityId);
     $opportunity2 = Opportunity::getById($superOpportunityId2);
     $opportunity3 = Opportunity::getById($superOpportunityId3);
     $opportunity4 = Opportunity::getById($superOpportunityId4);
     $this->assertEquals('2012-12-05', $opportunity1->closeDate);
     $this->assertEquals('2012-12-05', $opportunity2->closeDate);
     $this->assertNotEquals('2012-12-05', $opportunity3->closeDate);
     $this->assertNotEquals('2012-12-05', $opportunity4->closeDate);
     //Autocomplete for Opportunity
     $this->setGetArray(array('term' => 'super'));
     $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/autoComplete');
     //actionModalList
     $this->setGetArray(array('modalTransferInformation' => array('sourceIdFieldId' => 'x', 'sourceNameFieldId' => 'y', 'modalId' => 'z')));
     $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/modalList');
     //actionAuditEventsModalList
     $this->setGetArray(array('id' => $superOpportunityId));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/auditEventsModalList');
     //Select a related Opportunity for this contact. Go to the select screen.
     $superContactId = self::getModelIdByModelNameAndName('Contact', 'superContact superContactson');
     $opportunity1->forget();
     $opportunity = Opportunity::getById($superOpportunityId);
     $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('OpportunityDetailsAndRelationsView', $super->id, array());
     $this->assertEquals(2, count($portlets));
     $this->assertEquals(3, count($portlets[1]));
     $contact = Contact::getById($superContactId);
     $this->assertEquals(0, $contact->opportunities->count());
     $this->assertEquals(0, $opportunity->contacts->count());
     $this->setGetArray(array('portletId' => $portlets[1][1]->id, 'relationAttributeName' => 'opportunities', 'relationModuleId' => 'opportunities', 'relationModelId' => $superOpportunityId, 'uniqueLayoutId' => 'OpportunityDetailsAndRelationsView_' . $portlets[1][1]->id));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('contacts/default/SelectFromRelatedList');
     //Now add an opportunity to a contact via the select from related list action.
     $this->setGetArray(array('portletId' => $portlets[1][1]->id, 'modelId' => $superContactId, 'relationAttributeName' => 'opportunities', 'relationModuleId' => 'opportunities', 'relationModelId' => $superOpportunityId, 'uniqueLayoutId' => 'OpportunityDetailsAndRelationsView_' . $portlets[1][1]->id));
     $this->resetPostArray();
     $this->runControllerWithRedirectExceptionAndGetContent('contacts/defaultPortlet/SelectFromRelatedListSave');
     //Run forget in order to refresh the contact and opportunity showing the new relation
     $contact->forget();
     $opportunity->forget();
     $contact = Contact::getById($superContactId);
     $opportunity = Opportunity::getById($superOpportunityId);
     $this->assertEquals(1, $opportunity->contacts->count());
     $this->assertEquals($contact, $opportunity->contacts[0]);
     $this->assertEquals(1, $contact->opportunities->count());
     $this->assertEquals($opportunity->id, $contact->opportunities[0]->id);
 }
 /**
  * @depends testEditOfTheOpportunityForTheTagCloudFieldAfterRemovingAllTagsPlacedForOpportunitiesModule
  */
 public function testEditOfTheOpportunityForTheCustomFieldsPlacedForOpportunitiesModule()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     //Set the date and datetime variable values here.
     $date = Yii::app()->dateFormatter->format(DateTimeUtil::getLocaleDateFormatForInput(), time());
     $dateAssert = date('Y-m-d');
     $datetime = Yii::app()->dateFormatter->format(DateTimeUtil::getLocaleDateTimeFormatForInput(), time());
     $datetimeAssert = date('Y-m-d H:i:') . "00";
     $baseCurrency = Currency::getByCode(Yii::app()->currencyHelper->getBaseCode());
     //Retrieve the account id, the super user id and opportunity Id.
     $accountId = self::getModelIdByModelNameAndName('Account', 'superAccount');
     $superUserId = $super->id;
     $explicitReadWriteModelPermission = ExplicitReadWriteModelPermissionsUtil::MIXED_TYPE_EVERYONE_GROUP;
     $opportunity = Opportunity::getByName('myEditOpportunity');
     $opportunityId = $opportunity[0]->id;
     //Edit a new Opportunity based on the custom fields.
     $this->setGetArray(array('id' => $opportunityId));
     $this->setPostArray(array('Opportunity' => array('name' => 'myEditOpportunity', 'amount' => array('value' => 288000, 'currency' => array('id' => $baseCurrency->id)), 'account' => array('id' => $accountId), 'closeDate' => $date, 'stage' => array('value' => 'Qualification'), 'source' => array('value' => 'Inbound Call'), 'description' => 'This is the Edit Description', 'owner' => array('id' => $superUserId), 'explicitReadWriteModelPermissions' => array('type' => $explicitReadWriteModelPermission), 'checkboxCstm' => '0', 'currencyCstm' => array('value' => 40, 'currency' => array('id' => $baseCurrency->id)), 'decimalCstm' => '12', 'dateCstm' => $date, 'datetimeCstm' => $datetime, 'picklistCstm' => array('value' => 'b'), 'multiselectCstm' => array('values' => array('gg', 'hh')), 'tagcloudCstm' => array('values' => array('reading', 'surfing')), 'countrylistCstm' => array('value' => 'aaaa'), 'statelistCstm' => array('value' => 'aaa1'), 'citylistCstm' => array('value' => 'ab1'), 'integerCstm' => '11', 'phoneCstm' => '259-784-2069', 'radioCstm' => array('value' => 'e'), 'textCstm' => 'This is a test Edit Text', 'textareaCstm' => 'This is a test Edit TextArea', 'urlCstm' => 'http://wwww.abc-edit.com')));
     $this->runControllerWithRedirectExceptionAndGetUrl('opportunities/default/edit');
     //Check the details if they are saved properly for the custom fields.
     $opportunityId = self::getModelIdByModelNameAndName('Opportunity', 'myEditOpportunity');
     $opportunity = Opportunity::getById($opportunityId);
     //Retrieve the permission of the opportunity.
     $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::makeBySecurableItem($opportunity);
     $readWritePermitables = $explicitReadWriteModelPermissions->getReadWritePermitables();
     $readOnlyPermitables = $explicitReadWriteModelPermissions->getReadOnlyPermitables();
     $this->assertEquals($opportunity->name, 'myEditOpportunity');
     $this->assertEquals($opportunity->amount->value, '288000');
     $this->assertEquals($opportunity->amount->currency->id, $baseCurrency->id);
     $this->assertEquals($opportunity->account->id, $accountId);
     $this->assertEquals($opportunity->probability, '25');
     $this->assertEquals($opportunity->stage->value, 'Qualification');
     $this->assertEquals($opportunity->source->value, 'Inbound Call');
     $this->assertEquals($opportunity->description, 'This is the Edit Description');
     $this->assertEquals($opportunity->owner->id, $superUserId);
     $this->assertEquals(1, count($readWritePermitables));
     $this->assertEquals(0, count($readOnlyPermitables));
     $this->assertEquals($opportunity->checkboxCstm, '0');
     $this->assertEquals($opportunity->currencyCstm->value, 40);
     $this->assertEquals($opportunity->currencyCstm->currency->id, $baseCurrency->id);
     $this->assertEquals($opportunity->dateCstm, $dateAssert);
     $this->assertEquals($opportunity->datetimeCstm, $datetimeAssert);
     $this->assertEquals($opportunity->decimalCstm, '12');
     $this->assertEquals($opportunity->picklistCstm->value, 'b');
     $this->assertEquals($opportunity->integerCstm, 11);
     $this->assertEquals($opportunity->phoneCstm, '259-784-2069');
     $this->assertEquals($opportunity->radioCstm->value, 'e');
     $this->assertEquals($opportunity->textCstm, 'This is a test Edit Text');
     $this->assertEquals($opportunity->textareaCstm, 'This is a test Edit TextArea');
     $this->assertEquals($opportunity->urlCstm, 'http://wwww.abc-edit.com');
     $this->assertEquals($opportunity->dateCstm, $dateAssert);
     $this->assertEquals($opportunity->datetimeCstm, $datetimeAssert);
     $this->assertEquals($opportunity->countrylistCstm->value, 'aaaa');
     $this->assertEquals($opportunity->statelistCstm->value, 'aaa1');
     $this->assertEquals($opportunity->citylistCstm->value, 'ab1');
     $this->assertContains('gg', $opportunity->multiselectCstm->values);
     $this->assertContains('hh', $opportunity->multiselectCstm->values);
     $this->assertContains('reading', $opportunity->tagcloudCstm->values);
     $this->assertContains('surfing', $opportunity->tagcloudCstm->values);
     $metadata = CalculatedDerivedAttributeMetadata::getByNameAndModelClassName('calcnumber', 'Opportunity');
     $testCalculatedValue = CalculatedNumberUtil::calculateByFormulaAndModelAndResolveFormat($metadata->getFormula(), $opportunity);
     $this->assertEquals(132, $testCalculatedValue);
 }
Exemplo n.º 5
0
 /**
  * @depends testCreateAndGetOpportunityById
  */
 public function testSetStageAndSourceAndRetrieveDisplayName()
 {
     Yii::app()->user->userModel = User::getByUsername('super');
     $user = User::getByUsername('billy');
     $stageValues = array('Prospecting', 'Negotiating', 'Closed Won');
     $stageFieldData = CustomFieldData::getByName('SalesStages');
     $stageFieldData->serializedData = serialize($stageValues);
     $this->assertTrue($stageFieldData->save());
     $sourceValues = array('Word of Mouth', 'Outbound', 'Trade Show');
     $sourceFieldData = CustomFieldData::getByName('LeadSources');
     $sourceFieldData->serializedData = serialize($sourceValues);
     $this->assertTrue($sourceFieldData->save());
     $currencies = Currency::getAll();
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 500.54;
     $currencyValue->currency = $currencies[0];
     $opportunity = new Opportunity();
     $opportunity->owner = $user;
     $opportunity->name = '1000 Widgets';
     $opportunity->amount = $currencyValue;
     $opportunity->closeDate = '2011-01-01';
     //eventually fix to make correct format
     $opportunity->stage->value = $stageValues[1];
     $opportunity->source->value = $sourceValues[1];
     $saved = $opportunity->save();
     $this->assertTrue($saved);
     $this->assertTrue($opportunity->id !== null);
     $id = $opportunity->id;
     unset($opportunity);
     $opportunity = Opportunity::getById($id);
     $this->assertEquals('Negotiating', $opportunity->stage->value);
     $this->assertEquals('Outbound', $opportunity->source->value);
     $this->assertEquals(1, $currencies[0]->rateToBase);
 }
Exemplo n.º 6
0
 /**
  * @depends testConstructDerivedWithUserDefaultCurrency
  */
 public function testIsCurrencyInUseByIdAndChangRateIfValueChangesOrCurrencyChanges()
 {
     $currencyHelper = Yii::app()->currencyHelper;
     $euro = Currency::getByCode('EUR');
     $this->assertFalse(CurrencyValue::isCurrencyInUseById($euro->id));
     $opportunity = new Opportunity();
     $opportunity->name = 'Tyfe';
     $opportunity->stage->value = 'Starting Up';
     $opportunity->closeDate = '2008-10-05';
     $opportunity->amount->value = 456.78;
     $opportunity->amount->currency = $euro;
     $this->assertTrue($opportunity->save());
     $this->assertEquals(1.5, $opportunity->amount->rateToBase);
     $this->assertTrue(CurrencyValue::isCurrencyInUseById($euro->id));
     //change the currency rate for the euro.
     $euro->rateToBase = 3;
     $this->assertTrue($euro->save());
     //Now test saving the opportunity again but not changing the amount value. The rate should stay the same.
     $id = $opportunity->id;
     unset($opportunity);
     $opportunity = Opportunity::getById($id);
     $this->assertEquals(456.78, $opportunity->amount->value);
     $opportunity->amount->value = 456.78;
     $this->assertTrue($opportunity->save());
     $this->assertEquals(456.78, $opportunity->amount->value);
     $this->assertEquals(1.5, $opportunity->amount->rateToBase);
     //Now change amount. the exchange rate should change.
     $opportunity->amount->value = 566.0;
     $this->assertTrue($opportunity->save());
     $this->assertEquals(3, $opportunity->amount->rateToBase);
     //Now change the currency only. should change rate.
     $id = $opportunity->id;
     unset($opportunity);
     $opportunity = Opportunity::getById($id);
     $opportunity->amount->currency = Currency::getByCode('USD');
     $this->assertTrue($opportunity->save());
     $this->assertEquals(1, $opportunity->amount->rateToBase);
 }
 /**
  * @depends testCreateWithRelations
  */
 public function testUpdateWithRelations()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $authenticationData = $this->login();
     $headers = array('Accept: application/json', 'ZURMO_SESSION_ID: ' . $authenticationData['sessionId'], 'ZURMO_TOKEN: ' . $authenticationData['token'], 'ZURMO_API_REQUEST_TYPE: REST');
     $contact = ContactTestHelper::createContactByNameForOwner('Simon', $super);
     $opportunity = OpportunityTestHelper::createOpportunityByNameForOwner('My Opportunity', $super);
     $compareData = $this->getModelToApiDataUtilData($contact);
     $contact->forget();
     $data['modelRelations'] = array('opportunities' => array(array('action' => 'add', 'modelId' => $opportunity->id, 'modelClassName' => 'Opportunity')));
     $data['firstName'] = 'Fred';
     $response = $this->createApiCallWithRelativeUrl('update/' . $compareData['id'], 'PUT', $headers, array('data' => $data));
     $response = json_decode($response, true);
     unset($response['data']['modifiedDateTime']);
     unset($compareData['modifiedDateTime']);
     $compareData['firstName'] = 'Fred';
     $this->assertEquals(ApiResponse::STATUS_SUCCESS, $response['status']);
     $this->assertEquals($compareData, $response['data']);
     RedBeanModel::forgetAll();
     $contact = Contact::getById($compareData['id']);
     $this->assertEquals(1, count($contact->opportunities));
     $this->assertEquals($opportunity->id, $contact->opportunities[0]->id);
     $opportunity = Opportunity::getById($opportunity->id);
     $this->assertEquals(1, count($opportunity->contacts));
     $this->assertEquals($contact->id, $opportunity->contacts[0]->id);
     // Now test remove relations
     $data['modelRelations'] = array('opportunities' => array(array('action' => 'remove', 'modelId' => $opportunity->id, 'modelClassName' => 'Opportunity')));
     $response = $this->createApiCallWithRelativeUrl('update/' . $compareData['id'], 'PUT', $headers, array('data' => $data));
     $response = json_decode($response, true);
     $this->assertEquals(ApiResponse::STATUS_SUCCESS, $response['status']);
     RedBeanModel::forgetAll();
     $contact = Contact::getById($compareData['id']);
     $this->assertEquals(0, count($contact->opportunities));
     $opportunity = Opportunity::getById($opportunity->id);
     $this->assertEquals(0, count($opportunity->contacts));
 }
 public function actionEdit($id, $redirectUrl = null)
 {
     $contract = Contract::getById(intval($id));
     $sql = "select * from contract_opportunity where contract_id=" . $id;
     $rec = Yii::app()->db->createCommand($sql)->queryRow();
     $rec_t['value'] = $rec_c['value'] = '';
     if (!empty($rec) && !empty($rec['opportunity_id'])) {
         $getopportunity = Opportunity::getById(intval($rec['opportunity_id']));
         $sql1 = "select * from opportunity where id=" . $rec['opportunity_id'];
         $rec1 = Yii::app()->db->createCommand($sql1)->queryRow();
     }
     if (isset($rec1['totalbulkpricstm_currencyvalue_id']) && !empty($rec1['totalbulkpricstm_currencyvalue_id'])) {
         //get totalbuilprice
         $sql_t = "select * from currencyvalue where id=" . $rec1['totalbulkpricstm_currencyvalue_id'];
         $rec_t = Yii::app()->db->createCommand($sql_t)->queryRow();
     }
     if (isset($rec1['constructcoscstm_currencyvalue_id']) && !empty($rec1['constructcoscstm_currencyvalue_id'])) {
         $sql_c = "select * from currencyvalue where id=" . $rec1['constructcoscstm_currencyvalue_id'];
         $rec_c = Yii::app()->db->createCommand($sql_c)->queryRow();
     }
     $getaccount = Account::getById(intval($getopportunity->account->id));
     $_SESSION['unitsCstmCstm'] = !empty($getaccount->unitsCstmCstm) ? $getaccount->unitsCstmCstm : 1;
     $_SESSION['totalbulkpricstm'] = !empty($rec_t['value']) ? $rec_t['value'] : 1;
     $_SESSION['totalcostprccstm'] = !empty($rec_c['value']) ? $_SESSION['unitsCstmCstm'] * $rec_c['value'] : $_SESSION['unitsCstmCstm'] * 1;
     ControllerSecurityUtil::resolveAccessCanCurrentUserWriteModel($contract);
     $this->processEdit($contract, $redirectUrl);
 }
 /**
  * Resolves the opportunities sent via post request
  * @param Project $project
  * @param array $postData
  * @return array containing opportunities
  */
 public static function resolveProjectManyManyOpportunitiesFromPost(Project $project, $postData)
 {
     assert('$project instanceof Project');
     $newOpportunity = array();
     if (isset($postData['opportunityIds']) && strlen($postData['opportunityIds']) > 0) {
         $opportunityIds = explode(",", $postData['opportunityIds']);
         // Not Coding Standard
         foreach ($opportunityIds as $opportunityId) {
             $newOpportunity[$opportunityId] = Opportunity::getById((int) $opportunityId);
         }
         if ($project->opportunities->count() > 0) {
             $project->opportunities->removeAll();
         }
         //Now add missing contacts
         foreach ($newOpportunity as $opportunity) {
             $project->opportunities->add($opportunity);
         }
     } else {
         //remove all opportunities
         $project->opportunities->removeAll();
     }
     return $newOpportunity;
 }
 public function makeOpportunityProductSelection($datas, $opportunityId)
 {
     $content = '';
     $opptProducts = OpportunityProduct::getAllByOpptId(intval($opportunityId));
     $opportunity = Opportunity::getById($opportunityId);
     $count = count($opptProducts);
     $totalDirectCost = 0;
     $totalMH = 0;
     $suggestedPrice = 0;
     $opptPdctMap;
     if (count($opptProducts) > 0) {
         foreach ($opptProducts as $row) {
             $opptPdctMap[$row->Category][] = $row;
         }
         $tableCreation = '';
         $tableCreation .= '<div class="view-toolbar-container clearfix">
                                 <div style="background-color:#E0D1D1; color:black;padding:0.5%; font-weight:bold; font-size: 13px;">
                                     Estimate Summary
                                 </div>
                                 <div style="font-weight: bold; padding: 10px;">Number Of Products :' . $count . '</div>';
         $tableCreation .= '<table  border="1" width="100%" class="items">
                          <colgroup span="5"></colgroup>';
         $tableCreation .= '<thead style="font-weight: bold; background-color:#E6E6E6; color: black;padding: 5px;">
                                <tr style="border: 1px solid gray;">
                                    <th colspan="13" style="font-weight: bold;padding: 10px;text-align:center;">Opportunity Products</th>
                                </tr>                                         
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">Product Code</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">Product Name</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">Unit of Measure</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">Quantity</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">Frequency</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">MH</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">L</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">B</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">M</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">E</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">S</th>
                                     <th style="font-weight: bold;padding: 10px;text-align:center;">O</th>
                                     <th style="font-weight: bold;padding-top: 10px;text-align:center;">Total Direct Cost</th>
                                </thead><tbody>';
         foreach ($opptPdctMap as $key => $optpdctArray) {
             $tableCreation .= '<th  style="padding: 3px;font-weight: bold;background-color:gray;color:white;" colspan="13">' . $key . '</th>';
             foreach ($optpdctArray as $optKey => $optpdt) {
                 $totalDirectCost += $optpdt->Total_Direct_Cost->value;
                 $suggestedPrice += $optpdt->Final_Cost->value;
                 $totalMH += $optpdt->Total_MHR;
                 $tableCreation .= '<tr>
                         <td style="width: 8%; text-align: left; padding: 3px;">' . $optpdt->costbook->productcode . '</td>
                         <td style="width: 15%; text-align: left; padding: 3px;">' . $optpdt->name . '</td>
                         <td style="width: 4%; text-align: center; padding: 3px;">' . $optpdt->costbook->unitofmeasure . '</td>
                         <td style="width: 5%; text-align: center; padding: 3px">' . $optpdt->Quantity . '</td>
                         <td style="width: 5%; text-align: center; padding: 3px">' . $optpdt->Frequency . '</td>
                         <td style="width: 6%; text-align: center; padding: 3px">' . $optpdt->Total_MHR . '</td>
                         <td style="width: 6%;padding-top: 2px; text-align: right; padding: 3px">' . OpportunityProductUtils::getCurrencyType() . $optpdt->Labor_Cost . '</td>
                         <td style="width: 6%;  padding-top: 2px; text-align: right; padding: 3px">' . OpportunityProductUtils::getCurrencyType() . $optpdt->Burden_Cost . '</td>
                         <td style="width: 6%;padding-top: 2px; text-align: right; padding: 3px">' . OpportunityProductUtils::getCurrencyType() . $optpdt->Materials_Cost . '</td>
                         <td style="width: 6%;padding-top: 2px; text-align: right; padding: 3px">' . OpportunityProductUtils::getCurrencyType() . $optpdt->Equipment_Cost . '</td>
                         <td style="width: 6%;  padding-top: 2px; text-align: right; padding: 3px">' . OpportunityProductUtils::getCurrencyType() . $optpdt->Sub_Cost . '</td>
                         <td style="width: 6%;  padding-top: 2px; text-align: right; padding: 3px">' . OpportunityProductUtils::getCurrencyType() . $optpdt->Other_Cost . '</td>
                         <td style="width: 16%;  padding-top: 2px; text-align: right; padding: 3px">' . OpportunityProductUtils::getCurrencyType() . $optpdt->Total_Direct_Cost->value . '</td>
                     </tr>';
             }
         }
         $tableCreation .= '</tbody></table>';
         $tableCreation .= '<table style="margin-left: 20%; margin-top:2%;" border="0"
                             cellpadding="2" width="60%" text-align="right">
                     <tr>
                         <td rowspan="2" style="text-align:center; font-weight: bold;color:black;">Direct Cost</td>
                         <td style="text-align:right; font-weight: bold;color:black;">Total</td>
                         <td style="text-align:right;"></td>
                         <td style="text-align:right; font-weight: bold;color:black;">Suggested</td>
                         <td style="text-align:right; font-weight: bold;color:black;">Final</td>
                     </tr>
                     <tr>
                         <td style="text-align:right; color:black;">' . OpportunityProductUtils::getCurrencyType() . number_format($totalDirectCost, 2) . '</td>
                         <td style="text-align:right; font-weight: bold;color:black;">Price</td>
                         <td style="text-align:right; color:green;">' . OpportunityProductUtils::getCurrencyType() . number_format($suggestedPrice, 2) . '</td>
                         <td style="text-align:right; color:green;">' . OpportunityProductUtils::getCurrencyType() . number_format($opportunity->amount->value, 2) . '</td>
                     </tr>
                     <tr>
                         <td style="text-align:center; font-weight: bold;color:black;">MH</td>
                         <td style="text-align:right; color:black;">' . $totalMH . '</td>
                         <td style="text-align:right; font-weight: bold;color:black;">Rev/MH</td>
                         <td style="text-align:right; color:black;">' . OpportunityProductUtils::getCurrencyType() . number_format($suggestedPrice / $totalMH, 2) . '</td>
                         <td style="text-align:right;">' . OpportunityProductUtils::getCurrencyType() . number_format($opportunity->amount->value / $totalMH, 2) . '</td>
                     </tr>
                     <tr>
                         <td colspan="2" style="text-align:right;"></td>
                         <td style="text-align:right; font-weight: bold;color:black;">Aggregate GPM%</td>
                         <td style="text-align:right; color:black;">' . number_format(($suggestedPrice - $totalDirectCost) / $suggestedPrice * 100, 2) . ' </td>
                         <td style="text-align:right; color:black;">' . number_format(($opportunity->amount->value - $totalDirectCost) / $opportunity->amount->value * 100, 2) . '</td>
                     </tr>
                 </table>';
         $tableCreation .= '</div><br/><br/><div style="background-color:#E0D1D1; color:black;padding:0.5%; margin-bottom:1%; font-weight:bold; font-size: 13px;">Charts</div>';
         -($tableCreation .= OpportunityProductUtils::estimatorSummaryPiechartView($opportunityId));
         -($tableCreation .= '<hr>');
         $tableCreation .= '</div>';
         $content .= $tableCreation;
     }
     $content .= '</tbody></table>
             <input value="" name="list-view-selectedIds" id="list-view-selectedIds" type="hidden">
     </div>';
     return $content;
 }
 /**
  * @depends testSuperUserKanbanBoardListAction
  */
 public function testUpdateAttributeValueAction()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $this->assertEquals('Negotiating', self::$opportunity->stage->value);
     //actionUpdateAttributeValue($id, $attribute, $value)
     $this->setGetArray(array('id' => self::$opportunity->id, 'attribute' => 'stage', 'value' => 'Verbal'));
     $this->runControllerWithNoExceptionsAndGetContent('opportunities/default/updateAttributeValue', true);
     $id = self::$opportunity->id;
     self::$opportunity->forget();
     self::$opportunity = Opportunity::getById($id);
     $this->assertEquals('Verbal', self::$opportunity->stage->value);
 }
Exemplo n.º 12
0
 public function getsessionvalues($relationid)
 {
     $sql = "select * from opportunity where id=" . $relationid;
     $rec = Yii::app()->db->createCommand($sql)->queryRow();
     $rec_t['value'] = $rec_c['value'] = $rec_v['value'] = $rec_a['value'] = $rec_i['value'] = $rec_p['value'] = $bulkval = '';
     if (isset($rec['totalbulkpricstm_currencyvalue_id']) && !empty($rec['totalbulkpricstm_currencyvalue_id'])) {
         //get totalbuilprice
         $sql_t = "select * from currencyvalue where id=" . $rec['totalbulkpricstm_currencyvalue_id'];
         $rec_t = Yii::app()->db->createCommand($sql_t)->queryRow();
     }
     if (isset($rec['constructcoscstm_currencyvalue_id']) && !empty($rec['constructcoscstm_currencyvalue_id'])) {
         $sql_c = "select * from currencyvalue where id=" . $rec['constructcoscstm_currencyvalue_id'];
         $rec_c = Yii::app()->db->createCommand($sql_c)->queryRow();
     }
     if (isset($rec['vidpricingcscstm_currencyvalue_id']) && !empty($rec['vidpricingcscstm_currencyvalue_id'])) {
         $sql_v = "select * from currencyvalue where id=" . $rec['vidpricingcscstm_currencyvalue_id'];
         $rec_v = Yii::app()->db->createCommand($sql_v)->queryRow();
     }
     if (isset($rec['alarmbulkcstcstm_currencyvalue_id']) && !empty($rec['alarmbulkcstcstm_currencyvalue_id'])) {
         $sql_a = "select * from currencyvalue where id=" . $rec['alarmbulkcstcstm_currencyvalue_id'];
         $rec_a = Yii::app()->db->createCommand($sql_a)->queryRow();
     }
     if (isset($rec['internetbulkcstm_currencyvalue_id']) && !empty($rec['internetbulkcstm_currencyvalue_id'])) {
         $sql_i = "select * from currencyvalue where id=" . $rec['internetbulkcstm_currencyvalue_id'];
         $rec_i = Yii::app()->db->createCommand($sql_i)->queryRow();
     }
     if (isset($rec['phonebulkcstcstm_currencyvalue_id']) && !empty($rec['phonebulkcstcstm_currencyvalue_id'])) {
         $sql_p = "select * from currencyvalue where id=" . $rec['phonebulkcstcstm_currencyvalue_id'];
         $rec_p = Yii::app()->db->createCommand($sql_p)->queryRow();
     }
     if (isset($rec['bulkservprcscstm_multiplevaluescustomfield_id']) && !empty($rec['bulkservprcscstm_multiplevaluescustomfield_id'])) {
         $sql_va = "select * from customfieldvalue where multiplevaluescustomfield_id=" . $rec['bulkservprcscstm_multiplevaluescustomfield_id'];
         $rec_va = Yii::app()->db->createCommand($sql_va)->queryAll();
         foreach ($rec_va as $key => $value) {
             $bulkval .= $value['value'] . ",";
         }
         $bulkval = rtrim($bulkval, ",");
     }
     $getopportunity = Opportunity::getById(intval($relationid));
     $getaccount = Account::getById(intval($getopportunity->account->id));
     $_SESSION['unitsCstmCstm'] = !empty($getaccount->unitsCstmCstm) ? $getaccount->unitsCstmCstm : $_SESSION['unitsCstmCstm'] * 1;
     $_SESSION['totalbulkpricstm'] = !empty($rec_t['value']) ? $rec_t['value'] : 1;
     $_SESSION['totalcostprccstm'] = !empty($rec_c['value']) ? $_SESSION['unitsCstmCstm'] * $rec_c['value'] : 1;
     $_SESSION['videopricstm'] = !empty($rec_v['value']) ? $rec_v['value'] : 0;
     $_SESSION['alarampricstm'] = !empty($rec_a['value']) ? $rec_a['value'] : 0;
     $_SESSION['phonepricstm'] = !empty($rec_p['value']) ? $rec_p['value'] : 0;
     $_SESSION['internetpricstm'] = !empty($rec_i['value']) ? $rec_i['value'] : 0;
     $_SESSION['bulkval'] = $bulkval;
     if ($rec['closedate'] != '') {
         $opportunity_closedate = explode("-", $rec['closedate']);
         if (!empty($opportunity_closedate)) {
             $_SESSION['opportunity_closedate'] = $opportunity_closedate[1] . "/" . $opportunity_closedate[2] . "/" . $opportunity_closedate[0];
         }
     }
 }