コード例 #1
0
 /**
  * Set the Sales Status based on the associated RLI's sales_stage
  *
  * @param Opportunity $bean
  * @param string $event
  * @param array $args
  */
 public static function setSalesStatus(Opportunity $bean, $event, $args)
 {
     if (static::useRevenueLineItems() && $bean->ACLFieldAccess('sales_status', 'write')) {
         // we have a new bean so set the value to new and dump out
         if (empty($bean->fetched_row)) {
             $bean->sales_status = Opportunity::STATUS_NEW;
             return;
         }
         // Load forecast config so we have the sales_stage data.
         static::loadForecastSettings();
         // we don't have a new row, so figure out what we need to set it to
         $closed_won = static::$settings['sales_stage_won'];
         $closed_lost = static::$settings['sales_stage_lost'];
         $won_rlis = count($bean->get_linked_beans('revenuelineitems', 'RevenueLineItems', array(), 0, -1, 0, "sales_stage in ('" . join("', '", $closed_won) . "')"));
         $lost_rlis = count($bean->get_linked_beans('revenuelineitems', 'RevenueLineItems', array(), 0, -1, 0, "sales_stage in ('" . join("', '", $closed_lost) . "')"));
         $total_rlis = count($bean->get_linked_beans('revenuelineitems', 'RevenueLineItems'));
         if ($total_rlis > $won_rlis + $lost_rlis || $total_rlis === 0) {
             // still in progress
             $bean->sales_status = Opportunity::STATUS_IN_PROGRESS;
         } else {
             // they are equal so if the total lost == total rlis then it's closed lost,
             // otherwise it's always closed won
             if ($lost_rlis == $total_rlis) {
                 $bean->sales_status = Opportunity::STATUS_CLOSED_LOST;
             } else {
                 $bean->sales_status = Opportunity::STATUS_CLOSED_WON;
             }
         }
     }
 }
コード例 #2
0
 function addRealty(&$bean)
 {
     $bean->load_relationship("realty_contracts");
     $bean->realty_contracts->delete($bean->id);
     $opp = new Opportunity();
     $opp->retrieve($bean->opp_id);
     $realty_list = $opp->get_linked_beans('realty_opportunities', 'Opportunities');
     foreach ($realty_list as $realty) {
         $bean->realty_contracts->add($realty->id);
     }
 }
コード例 #3
0
 /**
  * Commit All Related Products from an Opportunity
  *
  * @param Opportunity $opp
  * @param $isCommit
  */
 public function saveOpportunityProducts(Opportunity $opp, $isCommit = false)
 {
     // remove the relationship if it exists as it could cause errors with the cached beans in the BeanFactory
     if (isset($opp->revenuelineitems)) {
         unset($opp->revenuelineitems);
     }
     // now save all related products to the opportunity
     // commit every product associated with the Opportunity
     $revenuelineitems = $opp->get_linked_beans('revenuelineitems', 'RevenueLineItems');
     /* @var $product Product */
     foreach ($revenuelineitems as $revenuelineitem) {
         /* @var $product_wkst ForecastWorksheet */
         $product_wkst = BeanFactory::getBean('ForecastWorksheets');
         $product_wkst->saveRelatedProduct($revenuelineitem, $isCommit);
         unset($product_wkst);
         // clear the cache
     }
 }