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

class VencimientosCobro_model extends CI_Model {

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

        $this->db->select('
            c.*,
            cl.razon_social as cliente,
            cl.nro_documento as cliente_ruc,
            tc.nombre as tipo_comprobante,
            m.abreviado as moneda,
            DATEDIFF(c.fecvencimiento, CURDATE()) as dias_para_vencer
        ');
        $this->db->from('vt_comprobante c');
        $this->db->join('vt_cliente cl',         'cl.id = c.cliente_id');
        $this->db->join('mt_tipo_comprobante tc', 'tc.id = c.comprobante_id', 'left');
        $this->db->join('mt_moneda m',            'm.id = c.moneda_id',        'left');
        $this->db->where_in('c.estado_id', array(23, 27));
        $this->db->where('c.saldo >', 0);
        $this->db->where('c.fecvencimiento IS NOT NULL');
        $this->db->where('c.fecvencimiento >=', date('Y-m-d'));
        $this->db->where('c.fecvencimiento <=', $fecha_limite);
        if ($cliente_id) $this->db->where('c.cliente_id', $cliente_id);
        $this->db->order_by('c.fecvencimiento', 'ASC');
        return $this->db->get()->result();
    }

    public function listar_vencidos($cliente_id = null) {
        $this->db->select('
            c.*,
            cl.razon_social as cliente,
            cl.nro_documento as cliente_ruc,
            tc.nombre as tipo_comprobante,
            m.abreviado as moneda,
            DATEDIFF(CURDATE(), c.fecvencimiento) as dias_vencido
        ');
        $this->db->from('vt_comprobante c');
        $this->db->join('vt_cliente cl',         'cl.id = c.cliente_id');
        $this->db->join('mt_tipo_comprobante tc', 'tc.id = c.comprobante_id', 'left');
        $this->db->join('mt_moneda m',            'm.id = c.moneda_id',        'left');
        $this->db->where_in('c.estado_id', array(23, 27));
        $this->db->where('c.saldo >', 0);
        $this->db->where('c.fecvencimiento IS NOT NULL');
        $this->db->where('c.fecvencimiento <', date('Y-m-d'));
        if ($cliente_id) $this->db->where('c.cliente_id', $cliente_id);
        $this->db->order_by('c.fecvencimiento', 'ASC');
        return $this->db->get()->result();
    }

    public function listar_clientes_con_saldo() {
        return $this->db
            ->select('cl.id, cl.razon_social, cl.nro_documento')
            ->from('vt_comprobante c')
            ->join('vt_cliente cl', 'cl.id = c.cliente_id')
            ->where_in('c.estado_id', array(23, 27))
            ->where('c.saldo >', 0)
            ->group_by('cl.id')
            ->order_by('cl.razon_social', 'ASC')
            ->get()->result();
    }
}
