'integer', 'user_id' => 'integer', ]; } /** * @return BelongsTo */ public function tenant(): BelongsTo { return $this->belongsTo(Tenant::class, 'tenant_codigo', 'codigo'); } /** * @return BelongsTo */ public function user(): BelongsTo { return $this->belongsTo(User::class); } /** * @return BelongsTo */ public function cart(): BelongsTo { return $this->belongsTo(Cart::class, 'cart_id'); } /** * @return HasMany */ public function items(): HasMany { return $this->hasMany(PurchaseItem::class, 'compra_id'); } /** * @return \Illuminate\Database\Eloquent\Relations\HasOne */ public function telepagosQr() { return $this->hasOne(TelepagosQr::class, 'compra_id'); } /** * @return HasMany */ public function telepagosPayments(): HasMany { return $this->hasMany(TelepagosPayment::class, 'compra_id'); } public function getTotalAmount(): float { if ($this->items()->exists()) { return (float) $this->items()->sum('total'); } $cart = $this->relationLoaded('cart') ? $this->getRelation('cart') : $this->cart()->first(); if (! $cart) { return 0.0; } return $cart->getTotalAmount(); } public function finalize(): void { $this->update([ 'status' => 'pagado', // Or the equivalent final status in your system 'payment_status' => 'paid', ]); } }