コード例 #1
0
 /**
  *
  *Actualizar? los tipo de cambio con respecto a la moneda base de la empresa.
  *
  * @param id_empresa int El id de la empresa
  * @param monedas json Los valores de las equivalencias de las monedas activas con respecto a la moneda base
  * @param moneda_base string El codigo de la moneda base, una cadena de tres caracteres: "MXN"
  **/
 public static function ActualizarTiposCambio($id_empresa, $monedas, $moneda_base, $servicios)
 {
     $json_guardar = array();
     $json_guardar["servicio"] = $servicios;
     $json_guardar["fecha"] = time();
     $json_guardar["moneda_origen"] = $moneda_base;
     $json_guardar["tipos_cambio"] = array();
     foreach ($monedas as $moneda) {
         if (!is_numeric($moneda->equivalencia)) {
             Logger::Log("La moneda {$moneda} no tiene un valor numerico asignado");
             throw new BusinessLogicException("La moneda {$moneda} no tiene un valor numerico asignado");
         } else {
             $obj = new stdClass();
             $obj->moneda = $moneda->codigo;
             $obj->equivalencia = $moneda->equivalencia;
             $obj->conversion = "1 {$moneda_base} = " . $moneda->equivalencia . " " . $moneda->codigo;
             array_push($json_guardar["tipos_cambio"], $obj);
         }
     }
     $json_almacenar = json_encode($json_guardar);
     $c = new Configuracion();
     $s = SesionController::getCurrentUser();
     $c->setDescripcion("tipo_cambio");
     $conf = ConfiguracionDAO::search($c);
     //se crea el registro de configuracion tipo_cambio
     if (count($conf) < 1) {
         $c->setValor($json_almacenar);
         $c->setFecha(time());
         $c->setIdUsuario($s->getIdUsuario());
         try {
             ConfiguracionDAO::save($c);
             $c_e = new ConfiguracionEmpresa();
             $c_e->setIdConfiguracionEmpresa($c->getIdConfiguracion());
             $c_e->setIdEmpresa($id_empresa);
             ConfiguracionEmpresaDAO::save($c_e);
         } catch (Exception $e) {
             Logger::error("No se pudo crear la configuracion de monedas: " . $e->getMessage());
             throw new InvalidDatabaseOperationException("No se pudo crear la configuracion de monedas " . $e->getMessage());
         }
     } else {
         $editar = $conf[0];
         $editar->setValor($json_almacenar);
         $editar->setFecha(time());
         $editar->setIdUsuario($s->getIdUsuario());
         try {
             ConfiguracionDAO::save($editar);
         } catch (Exception $e) {
             Logger::error("No se pudo crear la configuracion de monedas: " . $e->getMessage());
             throw new InvalidDatabaseOperationException("No se pudo crear la configuracion de monedas " . $e->getMessage());
         }
     }
     $monedabase = new Moneda();
     $monedabase->setSimbolo($moneda_base);
     $mb = MonedaDAO::search($monedabase);
     $historial_tc = new HistorialTipoCambio();
     $historial_tc->setFecha(time());
     $historial_tc->setJsonEquivalencias($json_almacenar);
     $historial_tc->setIdEmpresa($id_empresa);
     $historial_tc->setIdMonedaBase($mb[0]->getIdMoneda());
     try {
         HistorialTipoCambioDAO::save($historial_tc);
     } catch (Exception $e) {
         Logger::error("No se pudo guardar el historial tipo cambio: " . $e->getMessage());
         throw new InvalidDatabaseOperationException("No se pudo guardar el historial tipo cambio: " . $e->getMessage());
     }
     return array("status" => "ok");
 }