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

class EstadoCuenta extends MY_Controller {

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

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

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

        $proveedor     = null;
        $comprobantes  = array();
        $totales       = array(
            'total_deuda'   => 0,
            'total_pagado'  => 0,
            'total_saldo'   => 0
        );

        if ($proveedor_id) {
            $proveedor    = $this->EstadoCuenta_model->obtener_proveedor($proveedor_id);
            $comprobantes = $this->EstadoCuenta_model->obtener_comprobantes(
                $proveedor_id, $fecha_desde, $fecha_hasta
            );

            // Agregar pagos a cada comprobante y calcular totales
            foreach ($comprobantes as &$cp) {
                $cp->pagos          = $this->EstadoCuenta_model->obtener_pagos_comprobante($cp->id);
                $cp->total_pagado   = (float)$cp->total - (float)$cp->saldo;
                $totales['total_deuda']  += (float)$cp->total;
                $totales['total_pagado'] += $cp->total_pagado;
                $totales['total_saldo']  += (float)$cp->saldo;
            }
            unset($cp);
        }

        $data['titulo']        = 'Estado de Cuenta por Proveedor';
        $data['proveedores']   = $this->EstadoCuenta_model->listar_proveedores();
        $data['proveedor']     = $proveedor;
        $data['proveedor_id']  = $proveedor_id;
        $data['comprobantes']  = $comprobantes;
        $data['totales']       = $totales;
        $data['fecha_desde']   = $fecha_desde;
        $data['fecha_hasta']   = $fecha_hasta;
        $data['fecha_reporte'] = date('d/m/Y H:i');
        $data['empresa']       = $this->Empresa_model->obtener_activa();

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