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

class CuentasPagar_model extends CI_Model {

    public function listar($proveedor_id = null, $estado = null, $fecha_desde = null, $fecha_hasta = null) {
        $this->db->select('
            cp.*,
            p.razon_social as proveedor,
            p.nro_documento as proveedor_ruc,
            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');

        if ($proveedor_id) {
            $this->db->where('cp.proveedor_id', $proveedor_id);
        }
        if ($estado !== null && $estado !== '') {
            $this->db->where('cp.estado', $estado);
        } else {
            $this->db->where_in('cp.estado', array(1, 2)); // Excluir anulados
        }
        if ($fecha_desde) {
            $this->db->where('cp.fecha_emision >=', $fecha_desde);
        }
        if ($fecha_hasta) {
            $this->db->where('cp.fecha_emision <=', $fecha_hasta . ' 23:59:59');
        }

        $this->db->order_by('p.razon_social', 'ASC');
        $this->db->order_by('cp.fecha_vencimiento', 'ASC');

        return $this->db->get()->result();
    }

    public function listar_proveedores_con_comprobantes() {
        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_in('cp.estado', array(1, 2))
            ->group_by('p.id')
            ->order_by('p.razon_social', 'ASC')
            ->get()->result();
    }
}
