/** * the singleton pattern * * @return SoEventManager_Controller_SoEvent */ public static function getInstance() { if (self::$_instance === NULL) { self::$_instance = new self(); } return self::$_instance; }
public function getCalculationVariants($receiptId) { $productionCostController = Billing_Controller_ProductionCost::getInstance(); $aVariantSum = array(); $positions = $this->getOrderPositions($receiptId)->toArray(); $aVariantSum['I']['variant'] = 'I'; $aVariantSum['I']['ek_total'] = 0; $aVariantSum['I']['total_netto'] = 0; $aVariantSum['I']['profit'] = 0; $aVariantSum['I']['has_delivery'] = false; $aVarTypeMap = array(); foreach ($positions as $pos) { $variants = $productionCostController->getByOrderPositionId($pos['id'])->toArray(); if (count($variants) == 0) { $it = new ArrayIterator($aVariantSum); foreach ($it as $var) { $var['ek_total'] += 0; $var['total_netto'] += $pos['total_netto']; $var['profit'] += $var['total_netto'] - $var['ek_total']; } } foreach ($variants as $var) { if (!array_key_exists($var['category'], $aVariantSum)) { $aVariantSum[$var['category']] = array('variant' => $var['category'], 'ek_total' => 0, 'total_netto' => 0, 'profit' => 0, 'has_delivery' => false); } if ($var['type'] == 'DELIVERY') { $aVariantSum[$var['category']]['has_delivery'] = true; } $aVariantSum[$var['category']]['ek_total'] += (int) $pos['amount'] * (double) $var['ek_netto']; $aVariantSum[$var['category']]['total_netto'] += $pos['total_netto']; $aVariantSum[$var['category']]['profit'] += $aVariantSum[$var['category']]['total_netto'] - $aVariantSum[$var['category']]['ek_total']; } } $result = array(); foreach ($aVariantSum as $aVariant) { $result[] = $aVariant; } return array('totalcount' => count($result), 'success' => true, 'results' => $result); }
public function saveProductionCost($recordData) { return $this->_save($recordData, Billing_Controller_ProductionCost::getInstance(), 'ProductionCost'); }