<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Miracle_costos{
	public function get($id,$add_iva){
		$CI =& get_instance();
		$costos=(object) array("promedio"=>0,"ultimo"=>0);
		/*Obtener TODAS las transacciones*/
		$sqlStmt="(SELECT  'entrada' as trans, id_entrada as id,fecha_entrada as fecha,concepto_entrada as concepto,(cant_entrada*unidades_representativas) as entrada, '0' as salida,(costo_entrada/unidades_representativas) as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, 0 as venta FROM entrada_productos LEFT JOIN devoluciones ON entrada_productos.id_devolucion=devoluciones.id_devolucion LEFT JOIN ventas ON devoluciones.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $id."')";
		$sqlStmt.=" UNION ALL "; 
		$sqlStmt.="(SELECT  'salida' as trans,id_salida as id,fecha_salida as fecha,concepto_salida as concepto,'0' as entrada,(cant_salida*unidades_representativas) as salida,0 as costo, ventas.documento_venta as  documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, salida_productos.id_venta as venta FROM salida_productos LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '".$id."')";
		$sqlStmt.=" ORDER BY fecha"; 
		$trans=$CI->Generic_model->sql_custom($sqlStmt);
		$costo_promedio_producto = 0;
		$costo_ultimacompra_producto = 0;
		if(count($trans)){
			$total_entradas_producto=0;
			$total_salidas_producto=0;
			$costo_promedio_producto=0;
			$costo_ultimacompra_producto=0;
			$costos_compra_totales_producto=0;
			$cantidad_compra_totales_producto=0;
			$primera_entrada=true;
			foreach($trans as $tran){
				$total_entradas_producto+=$tran->entrada;
				$total_salidas_producto+=$tran->salida;
				$total_existencia_producto=$total_entradas_producto-$total_salidas_producto;
				/*Calculo del coste*/
				if($tran->trans=='entrada'){
					if($primera_entrada){
						$primera_entrada=false;
						if($tran->concepto==1 || $tran->concepto==0  || $tran->concepto==9){ /*primera entrada*/
							$costo_promedio_producto=$tran->costo;
							$costo_ultimacompra_producto=$tran->costo;
						}
					}else{
						if($tran->concepto==1){ /*Compras*/
							$costo_total_anterior=($total_existencia_producto-$tran->entrada)*$costo_promedio_producto;
							$costo_transaccion_actual=$tran->costo*$tran->entrada;
							if($total_existencia_producto>0){
								$costo_promedio_producto=($costo_total_anterior+$costo_transaccion_actual)/$total_existencia_producto;
							}
							$costo_ultimacompra_producto=$tran->costo;
						}
					}	
				}
			}
		}
		if($add_iva){
			$costo_promedio_producto=$costo_promedio_producto+($costo_promedio_producto*0.13);
			$costo_ultimacompra_producto=$costo_ultimacompra_producto+($costo_ultimacompra_producto*0.13);
		}
		$costos->promedio=$costo_promedio_producto;
		$costos->ultimo=$costo_ultimacompra_producto;
		return $costos;
	}
}
?>