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

class Compras extends CI_Controller {

	public function __construct() {
		parent::__construct();
		if (!$this->Usuario->try()) {
			redirect('login');
		}
	}

	/**
	 * Muestra listado de compras agrupadas por mes
	 * En la parte superior existe un formulario para agregar una nueva venta
	 */
	public function index($tipo_compra = 1) {
		$periodo = $this->input->get('periodo') ?? date('Ym');
		$data['tipo_compra'] = $tipo_compra;
		//Se consultan productos ordenados por proveedor, nombre
		$data['compras'] = $this->Compra->get_all($tipo_compra, $periodo);
		$data['meses_compras'] = $this->Compra->get_meses_compras(true, $tipo_compra);
		$data['productos'] = $this->Producto->lista();
		$data['costo_productos'] = $this->Producto->list_costos();
		$data['proveedores'] = $this->Proveedor->lista();
		$data['totales'] = $this->Compra->get_totales();
		$data['categorias_compras'] = $this->Compra->list_categorias_compras();

		//formateamos proveedores para escribir objetos js
		$data['proveedoresNombres'] = array_flip($data['proveedores']);

		$this->load->model('Almacen_model', 'Almacen');
		$data['almacenes'] = $this->Almacen->lista();

		$data['tipos_compras'] = $this->Compra->list_tipos();
		$data['linkActivo']['section'] = $tipo_compra == 6 ? 'Ventas' : 'Compras';

		$linksActivos = [
			1 => 'Facturas Afectas',
			2 => 'DINs',
			3 => 'Internacionales',
			4 => 'Facturas Excentas',
			5 => 'Notas de Débito',
			6 => 'Notas de Crédito',
		];
		$data['linkActivo']['activo'] = $linksActivos[$tipo_compra];

		$data['view'] = 'compras/index';
		$data['title'] = $linksActivos[$tipo_compra];
		if ($tipo_compra == 6) {
			$data['title'] .= ' Emitidas';
		}
		$data['content'] = $this->load->view('compras/index', $data , true);
		$this->load->view('default', $data);
	}

	/*
	 * Entrega información de la venta por id
	 */
	public function get() {
		//Se revisa si se está creando una venta
		if (!empty($this->input->post('id'))) {
			$result = $this->Compra->get($this->input->post('id'));
		}
		else if(!empty($this->input->get('id'))) {
			$result = $this->Compra->get($this->input->get('id'));
		}
		else {
			$result['error'] = TRUE;
		}
		echo json_encode($result);
	}


	public function save() {
		//Se revisa si se está creando una compra
		if (!empty($_POST)) {
			$result = $this->Compra->save($_POST);
			echo json_encode($result);
		}
	}

	/**
	 * Elimina una venta de la lista, llevandolo a deleted 1
	 * se eliminan todos los productos_compras asociados
	 */
	public function delete() {
		if ($this->input->post('id')) {
			$result = $this->Compra->delete($this->input->post('id'));
			return true;
			die;
		}
		return false;
	}

	/**
	 * Elimina una venta de la lista, llevandolo a deleted 1
	 * se eliminan todos los productos_compras asociados
	 */
	public function revisar() {
		if ($this->input->post('id')) {
			$result = $this->Compra->revisar($this->input->post('id'), $this->input->post('revisado'));
			return true;
			die;
		}
		return false;
	}
}
