<?php

namespace App\Observers;

use App\Models\Sale;
use App\Models\CashTransaction;
use App\Models\Account;

class SaleObserver
{
    public function created(Sale $sale): void
    {
        // KITA HANYA PROSES JIKA INI ADALAH "SALDO AWAL"
        if (!$sale->is_opening_balance) {
            return;
        }

        // 1. SIAPKAN AKUN
        $akunPiutang = Account::where('code', '1-1003')->first(); // Piutang Usaha (Aset)
        $akunModal   = Account::where('code', '3-1001')->first(); // Modal Awal (Penyeimbang)

        if ($akunPiutang && $akunModal) {
            // 2. BUAT JURNAL OTOMATIS
            // Logika: Debit Piutang (Aset Bertambah), Kredit Modal Awal (Modal Bertambah)
            
            CashTransaction::create([
                'branch_id' => $sale->branch_id,
                'transaction_date' => $sale->created_at,
                'transaction_number' => 'OPN-PIU-' . $sale->invoice_number,
                'type' => 'income', // Income = Menambah saldo akun Tujuan (Debit)
                'amount' => $sale->grand_total,
                
                // Kredit: Modal Awal (Modal Bertambah)
                'source_account_id' => $akunModal->id,
                
                // Debit: Piutang Usaha (Aset Bertambah)
                'destination_account_id' => $akunPiutang->id,
                
                'note' => 'Saldo Awal Piutang: ' . $sale->customer->name,
                'user_id' => auth()->id() ?? 1,
            ]);
        }
    }
}