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

class Producto_model extends CI_Model {

    public function listar() {
        return $this->db
            ->select('
                p.*,
                c.nombre as categoria,
                mc.abreviado as moneda_compra,
                mv.abreviado as moneda_venta,
                uc.abreviado as um_compra,
                uv.abreviado as um_venta,
                t.nombre as tafigv,
                d.nombre as detraccion
            ')
            ->from('vt_producto p')
            ->join('mt_producto_categoria c', 'c.id = p.categoria_id')
            ->join('mt_moneda mc', 'mc.id = p.moneda_id_compra', 'left')
            ->join('mt_moneda mv', 'mv.id = p.moneda_id_venta', 'left')
            ->join('mt_unidad_medida uc', 'uc.id = p.um_id_compra', 'left')
            ->join('mt_unidad_medida uv', 'uv.id = p.um_id_venta', 'left')
            ->join('mt_tipo_afectacion_igv t', 't.id = p.tafigv_id')
            ->join('mt_detraccion d', 'd.id = p.detraccion_id', 'left')
            ->order_by('p.id', 'DESC')
            ->get()
            ->result();
    }

    public function obtener($id) {
        return $this->db->where('id', $id)->get('vt_producto')->row();
    }

    public function insertar($data) {
        $this->db->insert('vt_producto', $data);
        return $this->db->insert_id();
    }

    public function actualizar($id, $data) {
        return $this->db->where('id', $id)->update('vt_producto', $data);
    }

    public function cambiarEstado($id, $estado, $usuario_id = null) {
        return $this->db->where('id', $id)->update('vt_producto', array(
            'estado' => $estado,
            'updated_at' => date('Y-m-d H:i:s'),
            'updated_by' => $usuario_id
        ));
    }

    public function existe_codigo($codigo, $id = null) {
        $this->db->where('codigo', $codigo);
        if ($id !== null) $this->db->where('id !=', $id);
        return $this->db->get('vt_producto')->num_rows() > 0;
    }

    public function listar_categorias() {
        return $this->db->where('estado', 1)->order_by('nombre', 'ASC')->get('mt_producto_categoria')->result();
    }

    public function listar_monedas() {
        return $this->db->where('estado', 1)->order_by('nombre', 'ASC')->get('mt_moneda')->result();
    }

    public function listar_unidades() {
        return $this->db->where('estado', 1)->order_by('nombre', 'ASC')->get('mt_unidad_medida')->result();
    }

    public function listar_tafigv() {
        return $this->db->where('estado', 1)->order_by('codigo_sunat', 'ASC')->get('mt_tipo_afectacion_igv')->result();
    }

    public function listar_detracciones() {
        return $this->db->where('estado', 1)->order_by('nombre', 'ASC')->get('mt_detraccion')->result();
    }


}