<commit_before><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class stock_sap_model extends CI_Model {

	var $bd_logistica     = 'bd_logistica..';
	var $bd_planificacion = 'bd_planificacion..';

	public function __construct()
	{
		parent::__construct();
	}


	public function get_stock($tipo_op = '', $mostrar = array(), $filtrar = array())
	{
		if ($tipo_op == 'MOVIL')
		{
			return $this->_get_stock_movil($mostrar, $filtrar);
		}
		else
		{
			return $this->_get_stock_fijo($mostrar, $filtrar);
		}
	}


	public function _get_stock_movil($mostrar = array(), $filtrar = array())
	{
		$arr_result = array();

		// fecha stock
		if (in_array('fecha', $mostrar))
		{
			$this->db->select('s.fecha_stock');
			$this->db->group_by('s.fecha_stock');
			$this->db->order_by('fecha_stock');
		}

		// tipo de almacen
		if ($filtrar['sel_tiposalm'] == 'sel_tiposalm')
		{
			if (in_array('tipo_alm', $mostrar))
			{
				$this->db->select('t.tipo as tipo_almacen');
				$this->db->group_by('t.tipo');
				$this->db->order_by('t.tipo');
			}

			// almacenes
			if (in_array('almacen', $mostrar))
			{
				$this->db->select('ta.centro, ta.cod_almacen, a.des_almacen');
				$this->db->group_by('ta.centro, ta.cod_almacen, a.des_almacen');
				$this->db->order_by('ta.centro, ta.cod_almacen, a.des_almacen');
			}
		}
		else
		{
			$this->db->select('a.centro, s.cod_bodega, a.des_almacen');
			$this->db->group_by('a.centro, s.cod_bodega, a.des_almacen');
			$this->db->order_by('a.centro, s.cod_bodega, a.des_almacen');
		}

		// tipos de articulos
		if (in_array('tipo_articulo', $mostrar))
		{
			$this->db->select('s.tipo_articulo');
			$this->db->group_by('s.tipo_articulo');
			$this->db->order_by('tipo_articulo');
		}

		// materiales
		if (in_array('material', $mostrar))
		{
			$this->db->select('s.cod_articulo');
			$this->db->group_by('s.cod_articulo');
			$this->db->order_by('s.cod_articulo');
		}

		// lotes
		if (in_array('lote', $mostrar))
		{
			$this->db->select('s.lote');
			$this->db->group_by('s.lote');
		}

		// cantidades y tipos de stock
		if (in_array('tipo_stock', $mostrar))
		{
			$this->db->select_sum('s.LU','LU');
			$this->db->select_sum('s.BQ','BQ');
			$this->db->select_sum('s.CC','CC');
			$this->db->select_sum('s.TT','TT');
			$this->db->select_sum('s.OT','OT');

			$this->db->select_sum('s.V_LU','VAL_LU');
			$this->db->select_sum('s.V_BQ','VAL_BQ');
			$this->db->select_sum('s.V_CC','VAL_CC');
			$this->db->select_sum('s.V_TT','VAL_TT');
			$this->db->select_sum('s.V_OT','VAL_OT');
		}
		$this->db->select_sum('s.cant','total');
		$this->db->select_sum('s.monto','monto');

		// tablas
		if ($filtrar['sel_tiposalm'] == 'sel_tiposalm')
		{
			$this->db->from($this->bd_logistica . 'cp_tiposalm t');
			$this->db->join($this->bd_logistica . 'cp_tipos_almacenes ta', 'ta.id_tipo = t.id_tipo');
			$this->db->join($this->bd_logistica . 'cp_almacenes a',        'a.centro = ta.centro and a.cod_almacen=ta.cod_almacen', 'left');
			$this->db->join($this->bd_logistica . 'stock_scl_res01 s',     's.centro = ta.centro and s.cod_bodega=ta.cod_almacen');<commit_msg>Corrige reporte de stock al seleccionar material<commit_after><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class stock_sap_model extends CI_Model {

	var $bd_logistica     = 'bd_logistica..';
	var $bd_planificacion = 'bd_planificacion..';

	public function __construct()
	{
		parent::__construct();
	}


	public function get_stock($tipo_op = '', $mostrar = array(), $filtrar = array())
	{
		if ($tipo_op == 'MOVIL')
		{
			return $this->_get_stock_movil($mostrar, $filtrar);
		}
		else
		{
			return $this->_get_stock_fijo($mostrar, $filtrar);
		}
	}


	public function _get_stock_movil($mostrar = array(), $filtrar = array())
	{
		$arr_result = array();

		// fecha stock
		if (in_array('fecha', $mostrar))
		{
			$this->db->select('s.fecha_stock');
			$this->db->group_by('s.fecha_stock');
			$this->db->order_by('fecha_stock');
		}

		// tipo de almacen
		if ($filtrar['sel_tiposalm'] == 'sel_tiposalm')
		{
			if (in_array('tipo_alm', $mostrar))
			{
				$this->db->select('t.tipo as tipo_almacen');
				$this->db->group_by('t.tipo');
				$this->db->order_by('t.tipo');
			}

			// almacenes
			if (in_array('almacen', $mostrar))
			{
				$this->db->select('ta.centro, ta.cod_almacen, a.des_almacen');
				$this->db->group_by('ta.centro, ta.cod_almacen, a.des_almacen');
				$this->db->order_by('ta.centro, ta.cod_almacen, a.des_almacen');
			}
		}
		else
		{
			$this->db->select('a.centro, s.cod_bodega, a.des_almacen');
			$this->db->group_by('a.centro, s.cod_bodega, a.des_almacen');
			$this->db->order_by('a.centro, s.cod_bodega, a.des_almacen');
		}

		// tipos de articulos
		if (in_array('tipo_articulo', $mostrar))
		{
			if (in_array('material', $mostrar))
			{
				$this->db->select("CASE WHEN (substring(cod_articulo,1,8)='PKGCLOTK' OR substring(cod_articulo,1,2)='TS') THEN 'SIMCARD' WHEN substring(cod_articulo, 1,2) in ('TM','TO','TC','PK','PO') THEN 'EQUIPOS' ELSE 'OTROS' END as tipo_articulo", FALSE);
				$this->db->group_by("CASE WHEN (substring(cod_articulo,1,8)='PKGCLOTK' OR substring(cod_articulo,1,2)='TS') THEN 'SIMCARD' WHEN substring(cod_articulo, 1,2) in ('TM','TO','TC','PK','PO') THEN 'EQUIPOS' ELSE 'OTROS' END", FALSE);
			}
			else
			{
				$this->db->select('s.tipo_articulo');
				$this->db->group_by('s.tipo_articulo');
				$this->db->order_by('tipo_articulo');				
			}
		}

		// materiales
		if (in_array('material', $mostrar))
		{
			$this->db->select('s.cod_articulo');
			$this->db->group_by('s.cod_articulo');
			$this->db->order_by('s.cod_articulo');
		}

		// lotes
		if (in_array('lote', $mostrar))
		{
			$this->db->select('s.lote');
			$this->db->group_by('s.lote');
		}

		// cantidades y tipos de stock
		if (in_array('tipo_stock', $mostrar))
		{
			$this->db->select_sum('s.LU','LU');
			$this->db->select_sum('s.BQ','BQ');
			$this->db->select_sum('s.CC','CC');
			$this->db->select_sum('s.TT','TT');
			$this->db->select_sum('s.OT','OT');

			$this->db->select_sum('s.V_LU','VAL_LU');
			$this->db->select_sum('s.V_BQ','VAL_BQ');
			$this->db->select_sum('s.V_CC','VAL_CC');
			$this->db->select_sum('s.V_TT','VAL_TT');
			$this->db->select_sum('s.V_OT','VAL_OT');
		}
		
		if (in_array('material', $mostrar))
		{
			$this->db->select_sum('s.libre_utilizacion + s.bloqueado + s.contro_calidad + s.transito_traslado + s.otros','total');
			$this->db->select_sum('(s.libre_utilizacion + s.bloqueado + s.contro_calidad + s.transito_traslado + s.otros)*p.pmp','monto');
		}
		else
		{
			$this->db->select_sum('s.cant','total');
			$this->db->select_sum('s.monto','monto');
		}

		// tablas
		if ($filtrar['sel_tiposalm'] == 'sel_tiposalm')
		{
			$this->db->from($this->bd_logistica . 'cp_tiposalm t');
			$this->db->join($this->bd_logistica . 'cp_tipos_almacenes ta', 'ta.id_tipo = t.id_tipo');
			$this->db->join($this->bd_logistica . 'cp_almacenes a',        'a.centro = ta.centro and a.cod_almacen=ta.cod_almacen', 'left');
			if (in_array('material', $mostrar))
			{
				$this->db->join($this->bd_logistica . 'stock_scl s',     's.centro = ta.centro and s.cod_bodega=ta.cod_almacen');
				$this->db->join($this->bd_planificacion . 'ca_stock_sap_04 p', "p.centro = s.centro and p.material=s.cod_articulo and p.lote=s.lote and p.estado_stock='01'",'left');

			}
			else
			{
				$this->db->join($this->bd_logistica . 'stock_scl_res01 s',     's.centro = ta.centro and s.cod_bodega=ta.cod_almacen');

			}				
{'fraction_non_alphanumeric': 0.22163167685357427, 'fraction_numerical': 0.0026574541589157587, 'mean_word_length': 4.031417112299465, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 173, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1543982', 'n_tokens_mistral': 3620, 'n_tokens_neox': 3228, 'n_words': 405}