<?php
// ===================================================
// Controller: HistorialCobros.php
// Ruta: application/controllers/cobranzas/
// ===================================================
defined('BASEPATH') OR exit('No direct script access allowed');

class HistorialCobros extends MY_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('cobranzas/HistorialCobros_model');
        $this->load->model('configuracion/Empresa_model');
    }

    public function index() {
        $this->validar_permiso('historial_cobros_ver');

        $fecha_desde     = $this->input->get('fecha_desde', TRUE) ?: date('Y-m-01');
        $fecha_hasta     = $this->input->get('fecha_hasta', TRUE) ?: date('Y-m-d');
        $cliente_id      = $this->input->get('cliente_id', TRUE) ?: null;
        $medio_pago_id   = $this->input->get('medio_pago_id', TRUE) ?: null;
        $banco_cuenta_id = $this->input->get('banco_cuenta_id', TRUE) ?: null;

        $cobros = $this->HistorialCobros_model->listar(
            $fecha_desde, $fecha_hasta, $cliente_id, $medio_pago_id, $banco_cuenta_id
        );

        // Agrupar por medio de pago y cuenta bancaria
        $por_medio_pago = array();
        $por_cuenta     = array();

        foreach ($cobros as $cobro) {
            $medio = $cobro->medio_pago;
            $por_medio_pago[$medio] = ($por_medio_pago[$medio] ?? 0) + (float)$cobro->importe;

            if (!empty($cobro->banco_cuenta_id)) {
                $cuenta = $cobro->banco . ' — ' . $cobro->cuenta_descripcion;
                $por_cuenta[$cuenta] = ($por_cuenta[$cuenta] ?? 0) + (float)$cobro->importe;
            }
        }

        $total_general = array_sum(array_map(function($c){ return (float)$c->importe; }, $cobros));

        $data['titulo']          = 'Historial de Cobros';
        $data['cobros']          = $cobros;
        $data['por_medio_pago']  = $por_medio_pago;
        $data['por_cuenta']      = $por_cuenta;
        $data['total_general']   = $total_general;
        $data['clientes']        = $this->HistorialCobros_model->listar_clientes_con_cobros();
        $data['medios_pago']     = $this->HistorialCobros_model->listar_medios_pago();
        $data['cuentas']         = $this->HistorialCobros_model->listar_cuentas_bancarias();
        $data['fecha_desde']     = $fecha_desde;
        $data['fecha_hasta']     = $fecha_hasta;
        $data['cliente_id']      = $cliente_id;
        $data['medio_pago_id']   = $medio_pago_id;
        $data['banco_cuenta_id'] = $banco_cuenta_id;
        $data['fecha_reporte']   = date('d/m/Y H:i');
        $data['empresa']         = $this->Empresa_model->obtener_activa();

        $this->layout('cobranzas/historial_cobros/index', $data);
    }
}