/**
  * Verifica que el origen de datos esté totalmente configurado
  * 1) Que no tenga ningún campo sin significado
  * 2) Que tenga un campo con significado "calculo"
  */
 public function estaConfigurado(OrigenDatos $origen)
 {
     $tiene_campo_calculo = false;
     $tiene_descripcion = false;
     $tiene_pk = false;
     $tiene_null = false;
     $campos = $origen->getCampos();
     foreach ($campos as $campo) {
         $sig = $campo->getSignificado();
         if ($sig != null) {
             $significado = $sig->getCodigo();
             if ($origen->getEsCatalogo()) {
                 if ($significado == 'pk') {
                     $tiene_pk = true;
                 } elseif ($significado == 'descripcion') {
                     $tiene_descripcion = true;
                 }
             } else {
                 if ($significado == 'calculo') {
                     $tiene_campo_calculo = true;
                 }
             }
         } else {
             $tiene_null = true;
         }
     }
     if ($origen->getEsCatalogo()) {
         if (!$tiene_pk or $tiene_null or !$tiene_descripcion) {
             return false;
         } else {
             return true;
         }
     } elseif ($origen->getAreaCosteo() != '') {
         if ($tiene_null) {
             return false;
         } else {
             return true;
         }
     } else {
         if (!$tiene_campo_calculo or $tiene_null) {
             return false;
         } else {
             return true;
         }
     }
 }
 /**
  * {@inheritDoc}
  */
 public function getAreaCosteo()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getAreaCosteo', array());
     return parent::getAreaCosteo();
 }