File: /var/www/dtw.bradford/app/Models/OdooAccountMoves.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class OdooAccountMoves extends Model
{
use HasFactory;
protected $table = 'odoo_account_moves_view';
public $timestamps = false;
protected $fillable = [
'account_move_id',
'name',
'display_name',
'state',
'move_type',
'ref',
'date',
'currency_id',
'currency',
'amount_total',
'amount_total_words',
'partner_id',
'partner',
'journal_id',
'journal',
'partner_bank_id',
'partner_bank',
'company_id',
'company',
'create_uid_id',
'create_uid_name',
'account_move_lines' // JSON con los detalles de el asiento contable
];
// Método para obtener detalles de líneas de el asiento contable
protected function details()
{
// Decode JSON from account_move_lines to an array
return collect(json_decode($this->account_move_lines, true))->map(function ($line) {
return [
'line_id' => $line['line_id'],
'move_id' => $line['move_id'],
'name' => $line['name'],
'account_id' => $line['account_id'],
'account' => $line['account'],
'company_id' => $line['company_id'],
'company' => $line['company'],
'debit' => $line['debit'],
'credit' => $line['credit'],
];
});
}
// Sobrescribir el método toArray
public function toArray()
{
$array = parent::toArray();
$array['account_move_lines'] = $this->details(); // Añadir las líneas formateadas
return $array;
}
}