/**
  * @param Mana_Db_Model_Formula_Context $context
  * @param string[] $formulas
  * @return Mana_Db_Model_Formula_Field[]
  */
 protected function _getFieldFormulas($context, $formulas, $options = array())
 {
     $result = array();
     $entity = $context->getTargetEntity();
     /* @var $dbConfig Mana_Db_Helper_Config */
     $dbConfig = Mage::helper('mana_db/config');
     /* @var $fieldsXml Varien_Simplexml_Element */
     /** @noinspection PhpUndefinedFieldInspection */
     $fieldsXml = $dbConfig->getScopeXml($entity)->fields;
     foreach ($fieldsXml->children() as $name => $fieldXml) {
         if (empty($options['process_all_fields']) && !isset($formulas[$name])) {
             continue;
         }
         /* @var $field Mana_Db_Model_Formula_Field */
         $field = Mage::getModel('mana_db/formula_field');
         $field->setName($name)->setRole(isset($fieldXml->role) ? (string) $fieldXml->role : '')->setType((string) $fieldXml->type);
         if (isset($fieldXml->no)) {
             $field->setNo((string) $fieldXml->no);
         }
         if (isset($formulas[$name])) {
             $field->setFormulaString($formulas[$name])->setFormula($this->parse($formulas[$name]))->setDependencies($this->depends($context, $field->getFormula()));
         } elseif (isset($fieldXml->default_formula)) {
             $field->setFormulaString((string) $fieldXml->default_formula)->setFormula($this->parse((string) $fieldXml->default_formula))->setDependencies($this->depends($context, $field->getFormula()));
         } elseif (isset($fieldXml->default_value)) {
             $field->setValue((string) $fieldXml->default_value);
         }
         $result[$name] = $field;
     }
     $this->_sortByDependency($result);
     return $result;
 }