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

class CuentasPagar extends MY_Controller {

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

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

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

        $comprobantes = $this->CuentasPagar_model->listar(
            $proveedor_id, $estado, $fecha_desde, $fecha_hasta
        );

        // Agrupar por proveedor
        $agrupado = array();
        foreach ($comprobantes as $item) {
            $prov = $item->proveedor . ' (' . $item->proveedor_ruc . ')';
            if (!isset($agrupado[$prov])) {
                $agrupado[$prov] = array(
                    'items'         => array(),
                    'total_deuda'   => 0,
                    'total_pagado'  => 0,
                    'total_saldo'   => 0
                );
            }
            $agrupado[$prov]['items'][]       = $item;
            $agrupado[$prov]['total_deuda']  += (float)$item->total;
            $agrupado[$prov]['total_pagado'] += (float)$item->total - (float)$item->saldo;
            $agrupado[$prov]['total_saldo']  += (float)$item->saldo;
        }

        $data['titulo']       = 'Reporte de Cuentas por Pagar';
        $data['agrupado']     = $agrupado;
        $data['proveedores']  = $this->CuentasPagar_model->listar_proveedores_con_comprobantes();
        $data['proveedor_id'] = $proveedor_id;
        $data['estado']       = $estado;
        $data['fecha_desde']  = $fecha_desde;
        $data['fecha_hasta']  = $fecha_hasta;
        $data['fecha_reporte']= date('d/m/Y H:i');
        $data['total_general_deuda']  = array_sum(array_column($agrupado, 'total_deuda'));
        $data['total_general_pagado'] = array_sum(array_column($agrupado, 'total_pagado'));
        $data['total_general_saldo']  = array_sum(array_column($agrupado, 'total_saldo'));
        $data['empresa']              = $this->Empresa_model->obtener_activa();

        $this->layout('logistica/cuentas_pagar/index', $data);
    }
}