<?php

class Notasalida_model extends CI_Model {

	public function getAll($tabla) {
		return $this->db->get($tabla)->result();
	}

	public function getAlls($tabla) {
		$this->db->from($tabla);
		return $this->db->count_all_results();
	}

	public function getCaja() {
		return $this->db->where('estado', '1')->where('usuario', $this->usuario)->get('caja')->row();
	}

	public function maximoC() {
    return $this->db->where('usuario', $this->usuario)->get('caja')->last_row();
  }

	/* public function codigos($tabla) {
		return $this->db->select_max('id')->where('empresa', $this->empresa)->get($tabla)->row();
	} */
	public function codigos($tabla) {
		return $this->db->select_max('correlativo')->where('empresa', $this->empresa)->get($tabla)->row();
	}

	public function completarproducto($q) {
		$this->db->like('nombre', $q);
		$this->db->where('tipo', '0');
		$query = $this->db->get('producto');
		if($query->num_rows() > 0) {
			foreach ($query->result() as $row) {
				$marca = $this->get($row->categoria, 'productocategoria');
				$nombre = $marca ? $marca->nombre : '';
        $stock = $this->getStock($row->id);
				$cantidad = $stock ? $stock->cantidad : 0;
				$row_set[] = array(
					'label' => $row->codigo.' | '.$row->nombre.' '.$nombre.' | Stock: '.$cantidad,
					'producto' => $row->id,
          'costo' => $row->preciocompra,
          'stock' => $cantidad
				);
			}
			echo json_encode($row_set);
		}
	}

  public function completarempresa($q) {
		$this->db->like('razonsocial', $q);
		$this->db->or_like('ruc', $q);
		$query = $this->db->get('empresa');
		if($query->num_rows() > 0) {
			foreach ($query->result() as $row) {
				$row_set[] = array(
					'label' => $row->ruc.' | '.$row->razonsocial,
					'empresa' => $row->id,
				);
			}
			echo json_encode($row_set);
		}
	}

  public function completarusuario($q) {
		$this->db->like('nombre', $q);
		$this->db->or_like('dni', $q);
		$query = $this->db->get('usuario');
		if($query->num_rows() > 0) {
			foreach ($query->result() as $row) {
				$row_set[] = array(
					'label' => $row->dni.' | '.$row->nombre.' '.$row->apellido,
					'usuario' => $row->id,
				);
			}
			echo json_encode($row_set);
		}
	}

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

  public function getStock($producto) {
		return $this->db->where('producto', $producto)->get('stock')->row();
  }

	public function detalleduplicado($notaingreso, $producto) {
		return $this->db->where('notasalida', $notaingreso)->where('producto', $producto)->get('notasalidadetalle')->row();
	}

  public function getDetalle($id, $tabla) {
		return $this->db->where('notasalida', $id)->get($tabla)->result();
  }

	public function contador($id) {
		return $this->db->from('notasalidadetalle')->where('notasalida', $id)->count_all_results();
	}

	public function eliminar($id, $tabla) {
		return $this->db->where('id', $id)->delete($tabla);
	}

	public function generar($id, $tabla) {
		$data['estado'] = '2';
    return $this->db->where('id', $id)->update($tabla, $data);
	}

	public function actualizar($tabla) {
		$data['origen'] = $this->input->post('origen');
    return $this->db->where('id', $this->input->post('id'))->update($tabla, $data);
	}

	public function anular($id, $tabla) {
		$data['estado'] = '3';
		$data['aprobado'] = $this->session->userdata('usuario');
		$data['updated'] = date('Y-m-d');
    return $this->db->where('id', $id)->update($tabla, $data);
	}

	public function desaprobar($id, $tabla) {
		$data['estado'] = '0';
    return $this->db->where('id', $id)->update($tabla, $data);
	}

	public function save($tabla, $data) {
		$this->db->insert($tabla, $data);
		return $this->db->insert_id();
	}

  public function update($where, $data, $tabla) {
		$this->db->update($tabla, $data, $where);
		return $this->db->affected_rows();
	}

	public function delete_by_id($id, $tabla) {
		$this->db->where('id', $id);
		return $this->db->delete($tabla);
	}

}
