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

class Vencimientos_model extends CI_Model {

    public function listar($dias = 30, $proveedor_id = null) {
        $hoy         = date('Y-m-d');
        $fecha_limite = date('Y-m-d', strtotime('+' . (int)$dias . ' days'));

        $this->db->select('
            cp.*,
            p.razon_social as proveedor,
            p.nro_documento as proveedor_ruc,
            p.telefono as proveedor_telefono,
            p.email as proveedor_email,
            m.abreviado as moneda,
            fp.nombre as forma_pago,
            DATEDIFF(cp.fecha_vencimiento, CURDATE()) as dias_para_vencer
        ');
        $this->db->from('cp_comprobante_proveedor cp');
        $this->db->join('lt_proveedor p',   'p.id = cp.proveedor_id');
        $this->db->join('mt_moneda m',      'm.id = cp.moneda_id',  'left');
        $this->db->join('mt_forma_pago fp', 'fp.id = cp.fp_id',     'left');
        $this->db->where('cp.estado', 1); // Solo PENDIENTES
        $this->db->where('cp.saldo >', 0);
        $this->db->where('cp.fecha_vencimiento IS NOT NULL');
        $this->db->where('cp.fecha_vencimiento <=', $fecha_limite);

        if ($proveedor_id) {
            $this->db->where('cp.proveedor_id', $proveedor_id);
        }

        $this->db->order_by('cp.fecha_vencimiento', 'ASC');
        return $this->db->get()->result();
    }

    public function listar_vencidos($proveedor_id = null) {
        $this->db->select('
            cp.*,
            p.razon_social as proveedor,
            p.nro_documento as proveedor_ruc,
            p.telefono as proveedor_telefono,
            p.email as proveedor_email,
            m.abreviado as moneda,
            fp.nombre as forma_pago,
            DATEDIFF(CURDATE(), cp.fecha_vencimiento) as dias_vencido
        ');
        $this->db->from('cp_comprobante_proveedor cp');
        $this->db->join('lt_proveedor p',   'p.id = cp.proveedor_id');
        $this->db->join('mt_moneda m',      'm.id = cp.moneda_id',  'left');
        $this->db->join('mt_forma_pago fp', 'fp.id = cp.fp_id',     'left');
        $this->db->where('cp.estado', 1);
        $this->db->where('cp.saldo >', 0);
        $this->db->where('cp.fecha_vencimiento IS NOT NULL');
        $this->db->where('cp.fecha_vencimiento <', date('Y-m-d'));

        if ($proveedor_id) {
            $this->db->where('cp.proveedor_id', $proveedor_id);
        }

        $this->db->order_by('cp.fecha_vencimiento', 'ASC');
        return $this->db->get()->result();
    }

    public function listar_proveedores_con_deuda() {
        return $this->db
            ->select('p.id, p.razon_social, p.nro_documento')
            ->from('cp_comprobante_proveedor cp')
            ->join('lt_proveedor p', 'p.id = cp.proveedor_id')
            ->where('cp.estado', 1)
            ->where('cp.saldo >', 0)
            ->group_by('p.id')
            ->order_by('p.razon_social', 'ASC')
            ->get()->result();
    }
}
