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

class CuentasCobrar extends MY_Controller {

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

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

        $cliente_id   = $this->input->get('cliente_id', TRUE) ?: null;
        $estado_cobro = $this->input->get('estado_cobro', TRUE);
        $fecha_desde  = $this->input->get('fecha_desde', TRUE) ?: null;
        $fecha_hasta  = $this->input->get('fecha_hasta', TRUE) ?: null;

        $comprobantes = $this->CuentasCobrar_model->listar($cliente_id, $estado_cobro, $fecha_desde, $fecha_hasta);

        // Agrupar por cliente
        $agrupado = array();
        foreach ($comprobantes as $item) {
            $clave = $item->cliente . ' (' . $item->cliente_ruc . ')';
            if (!isset($agrupado[$clave])) {
                $agrupado[$clave] = array('items' => array(), 'total' => 0, 'cobrado' => 0, 'saldo' => 0);
            }
            $agrupado[$clave]['items'][]  = $item;
            $agrupado[$clave]['total']   += (float)$item->pago_neto;
            $agrupado[$clave]['cobrado'] += (float)$item->pago_neto - (float)$item->saldo;
            $agrupado[$clave]['saldo']   += (float)$item->saldo;
        }

        $data['titulo']               = 'Reporte de Cuentas por Cobrar';
        $data['agrupado']             = $agrupado;
        $data['clientes']             = $this->CuentasCobrar_model->listar_clientes();
        $data['cliente_id']           = $cliente_id;
        $data['estado_cobro']         = $estado_cobro;
        $data['fecha_desde']          = $fecha_desde;
        $data['fecha_hasta']          = $fecha_hasta;
        $data['fecha_reporte']        = date('d/m/Y H:i');
        $data['total_general']        = array_sum(array_column($agrupado, 'total'));
        $data['total_general_cobrado']= array_sum(array_column($agrupado, 'cobrado'));
        $data['total_general_saldo']  = array_sum(array_column($agrupado, 'saldo'));
        $data['empresa']              = $this->Empresa_model->obtener_activa();

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