<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class HistorialPagos extends MY_Controller {

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

    public function index() {
        $this->validar_permiso('historial_pagos_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');
        $proveedor_id   = $this->input->get('proveedor_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;

        $pagos = $this->HistorialPagos_model->listar(
            $fecha_desde, $fecha_hasta, $proveedor_id, $medio_pago_id, $banco_cuenta_id
        );

        // Agrupar por medio de pago
        $por_medio_pago = array();
        foreach ($pagos as $pago) {
            $medio = $pago->medio_pago;
            if (!isset($por_medio_pago[$medio])) {
                $por_medio_pago[$medio] = 0;
            }
            $por_medio_pago[$medio] += (float)$pago->importe;
        }

        // Agrupar por cuenta bancaria
        $por_cuenta = array();
        foreach ($pagos as $pago) {
            if (empty($pago->banco_cuenta_id)) continue;
            $cuenta = $pago->banco . ' — ' . $pago->cuenta_descripcion;
            if (!isset($por_cuenta[$cuenta])) {
                $por_cuenta[$cuenta] = 0;
            }
            $por_cuenta[$cuenta] += (float)$pago->importe;
        }

        $total_general = array_sum(array_column(
            array_map(function($p){ return (array)$p; }, $pagos), 'importe'
        ));

        $data['titulo']          = 'Historial de Pagos';
        $data['pagos']           = $pagos;
        $data['por_medio_pago']  = $por_medio_pago;
        $data['por_cuenta']      = $por_cuenta;
        $data['total_general']   = $total_general;
        $data['proveedores']     = $this->HistorialPagos_model->listar_proveedores_con_pagos();
        $data['medios_pago']     = $this->HistorialPagos_model->listar_medios_pago();
        $data['cuentas']         = $this->HistorialPagos_model->listar_cuentas_bancarias();
        $data['fecha_desde']     = $fecha_desde;
        $data['fecha_hasta']     = $fecha_hasta;
        $data['proveedor_id']    = $proveedor_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('logistica/historial_pagos/index', $data);
    }
}