<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Models\MonthlyStockBalance;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;

class StockReopen extends Command
{
    // Cara pakai: php artisan stock:reopen --month=3 --year=2026
    protected $signature = 'stock:reopen {--month= : Bulan yang ingin dibuka (1-12)} {--year= : Tahun yang ingin dibuka}';
    protected $description = 'Membuka kembali data closing stok bulan tertentu untuk diperbaiki.';

    public function handle()
    {
        $month = $this->option('month');
        $year = $this->option('year') ?? date('Y');

        if (!$month) {
            $this->error("Gagal: Anda harus menentukan bulan dengan --month=X");
            return;
        }

        // Tentukan tanggal akhir bulan tersebut
        $period = Carbon::create($year, $month, 1)->endOfMonth()->startOfDay();

        $this->warn("PERINGATAN: Anda akan menghapus data closing stok periode: " . $period->format('F Y'));
        
        if ($this->confirm('Apakah Anda yakin ingin melanjutkan?')) {
            try {
                $deleted = MonthlyStockBalance::whereDate('period', $period)->delete();

                if ($deleted > 0) {
                    $this->info("Berhasil: {$deleted} baris data closing berhasil dihapus.");
                    $this->info("Silakan perbaiki data transaksi Anda, lalu jalankan kembali 'php artisan stock:close'.");
                } else {
                    $this->warn("Tidak ada data closing yang ditemukan untuk periode tersebut.");
                }
            } catch (\Exception $e) {
                $this->error("Gagal membuka closing: " . $e->getMessage());
            }
        }
    }
}