]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/SugarTestOpportunityUtilities.php
Release 6.5.8
[Github/sugarcrm.git] / tests / SugarTestOpportunityUtilities.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2012 SugarCRM Inc.
5  * 
6  * This program is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  * 
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
16  * details.
17  * 
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  * 
23  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
25  * 
26  * The interactive user interfaces in modified source and object code versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  * 
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the "Powered by
32  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33  * technical reasons, the Appropriate Legal Notices must display the words
34  * "Powered by SugarCRM".
35  ********************************************************************************/
36
37 require_once 'modules/Opportunities/Opportunity.php';
38
39 class SugarTestOpportunityUtilities
40 {
41     
42     private static $_createdOpportunities = array();
43     
44     private static $_createdAccount = null;
45     
46     private function __construct()
47     {
48     }
49     
50     private function _createAccount($time)
51     {
52         if (self::$_createdAccount === null) 
53         {
54             $name = 'SugarOpportunityAccount';
55             $account = new Account();
56             $account->name = $name . $time;
57             $account->email1 = 'account@' . $time . 'sugar.com';
58             $account->save();
59             
60             $GLOBALS['db']->commit();
61             self::$_createdAccount = $account;
62         }
63
64         return self::$_createdAccount;
65     }
66     
67     private function _createOpportunity($id, $time, $account)
68     {
69         global $timedate;
70         $name = 'SugarOpportunity';
71
72         $opportunity = new Opportunity();
73             
74         if (!empty($id)) 
75         {
76             $opportunity->new_with_id = true;
77             $opportunity->id = $id;
78         }
79
80         $opportunity->name         = $name . $time;
81         $opportunity->amount       = 10000;
82         $opportunity->account_id   = $account->id;
83         $opportunity->account_name = $account->name;
84         $opportunity->date_closed  = $timedate->to_display_date_time(gmdate("Y-m-d H:i:s"));
85         $opportunity->save();
86
87         $GLOBALS['db']->commit();
88         
89         self::$_createdOpportunities[] = $opportunity;
90         
91         return $opportunity;
92     }
93     
94     public static function createOpportunity($id = '', Account $account = null)
95     {
96         $time = mt_rand();
97
98         if ($account === null)
99         {
100             $account = self::_createAccount($time);
101         }
102
103         $opportunity = self::_createOpportunity($id, $time, $account);
104         
105         return $opportunity;
106     }
107     
108     public static function setCreatedOpportunity($opportunity_ids)
109     {
110         foreach ($opportunity_ids as $opportunity_id) 
111         {
112             $opportunity = new Opportunity();
113             $opportunity->id = $opportunity_id;
114             self::$_createdOpportunities[] = $opportunity;
115         }
116     }
117     
118     public static function removeAllCreatedOpportunities()
119     {
120         $opportunity_ids = self::getCreatedOpportunityIds();
121         
122         if (!empty($opportunity_ids))
123         {
124             $GLOBALS['db']->query('DELETE FROM opportunities WHERE id IN (\'' . implode("', '", $opportunity_ids) . '\')');
125             $GLOBALS['db']->query('DELETE FROM opportunities_contacts WHERE opportunity_id IN (\'' . implode("', '", $opportunity_ids) . '\')');
126         }
127
128         if (self::$_createdAccount !== null && self::$_createdAccount->id)
129         {
130             $GLOBALS['db']->query('DELETE FROM accounts WHERE id = \'' . self::$_createdAccount->id . '\'');
131         }
132     }
133     
134     public static function getCreatedOpportunityIds()
135     {
136         $opportunity_ids = array();
137         
138         foreach (self::$_createdOpportunities as $opportunity) 
139         {
140             $opportunity_ids[] = $opportunity->id;
141         }
142         
143         return $opportunity_ids;
144     }
145 }
146 ?>