51 lines
1.3 KiB
PHP
51 lines
1.3 KiB
PHP
<?php
|
|
namespace Contabilidad;
|
|
|
|
use Carbon\Carbon;
|
|
use DateTime;
|
|
use ProVM\Common\Alias\Model;
|
|
|
|
/**
|
|
* @property int $id
|
|
* @property DateTime $fecha
|
|
* @property Moneda $desde_id
|
|
* @property Moneda $hasta_id
|
|
* @property float $valor
|
|
*/
|
|
class TipoCambio extends Model {
|
|
const DESDE = -1;
|
|
const HASTA = 1;
|
|
|
|
public static $_table = 'tipos_cambio';
|
|
protected static $fields = ['fecha', 'valor', 'desde_id', 'hasta_id'];
|
|
|
|
protected $desde;
|
|
public function desde() {
|
|
if ($this->desde === null) {
|
|
$this->desde = $this->childOf(Moneda::class, [Model::SELF_KEY => 'desde_id']);
|
|
}
|
|
return $this->desde;
|
|
}
|
|
protected $hasta;
|
|
public function hasta() {
|
|
if ($this->hasta === null) {
|
|
$this->hasta = $this->childOf(Moneda::class, [Model::SELF_KEY => 'hasta_id']);
|
|
}
|
|
return $this->hasta;
|
|
}
|
|
public function fecha(DateTime $fecha = null) {
|
|
if ($fecha === null) {
|
|
return Carbon::parse($this->fecha);
|
|
}
|
|
$this->fecha = $fecha->format('Y-m-d H:i:s');
|
|
return $this;
|
|
}
|
|
|
|
public function transform(float $valor, int $direction = TipoCambio::HASTA): float {
|
|
if ($direction == TipoCambio::HASTA) {
|
|
return $valor * $this->valor;
|
|
}
|
|
return $valor / $this->valor;
|
|
}
|
|
}
|