/** * * @param array $condiciones (grupo_dispo_cab_id, color_ventas_id, calidad_variedad_id, cadena_color_ventas_ids, cadena_calidad_variedad_ids) * @return array */ public function listadoDisponibilidadPorProveedor($condiciones, $omitir_registros_vacios = false) { $GrupoDispoCabDAO = new GrupoDispoCabDAO(); $DispoDAO = new DispoDAO(); $CalidadDAO = new CalidadDAO(); $ParametrizarDAO = new ParametrizarDAO(); $GrupoDispoCabDAO->setEntityManager($this->getEntityManager()); $DispoDAO->setEntityManager($this->getEntityManager()); $CalidadDAO->setEntityManager($this->getEntityManager()); $ParametrizarDAO->setEntityManager($this->getEntityManager()); $condiciones["dispo_rotacion_dias_inicio"] = $ParametrizarDAO->getValorParametro('dispo_rotacion_ini'); /*-------En caso que no exita la condicion['arr_fechas_cajas'] se le pone un valor nulo por defecto------*/ if (!array_key_exists('arr_fechas_cajas', $condiciones)) { $condiciones["arr_fechas_cajas"] = null; } //end if /*-------------------------------------------------------------------------------------------------------*/ $arr_grados = array('40', '50', '60', '70', '80', '90', '100', '110'); /** * Se obtiene el registro CABECERA de la DISPO X GRUPO */ $reg_grupoDispoCab = $GrupoDispoCabDAO->consultarArray($condiciones['grupo_dispo_cab_id']); if (empty($reg_grupoDispoCab)) { return null; } //end if $CalidadData = $CalidadDAO->consultar($reg_grupoDispoCab['calidad_id']); $clasifica_fox = $CalidadData->getClasificaFox(); if (!array_key_exists('cadena_color_ventas_ids', $condiciones)) { $condiciones['cadena_color_ventas_ids'] = ''; } if (!array_key_exists('cadena_calidad_variedad_ids', $condiciones)) { $condiciones['cadena_calidad_variedad_ids'] = ''; } /** * Se obtiene los registro de la DISPO GENERAL (UNIVERSO) */ /* $condiciones2 = array( "inventario_id" => $reg_grupoDispoCab['inventario_id'], "proveedor_id" => null, "clasifica" => $reg_grupoDispoCab['clasifica_fox'], "color_ventas_id" => $condiciones['color_ventas_id'], "calidad_variedad_id" => $condiciones['calidad_variedad_id'], "cadena_color_ventas_ids" => $condiciones['cadena_color_ventas_ids'], "cadena_calidad_variedad_ids" => $condiciones['cadena_calidad_variedad_ids'], "group_by_proveedor_id" => true ); $result_dispo_temp = $DispoDAO->listado($condiciones2); $result_dispo = $DispoDAO->TransformarResultIndexadoProveedor($result_dispo_temp); */ /** * Se obtiene los registros de la DISPO POR GRUPO */ $condiciones2 = array("grupo_dispo_cab_id" => $condiciones['grupo_dispo_cab_id'], "color_ventas_id" => $condiciones['color_ventas_id'], "calidad_variedad_id" => $condiciones['calidad_variedad_id'], "cadena_color_ventas_ids" => $condiciones['cadena_color_ventas_ids'], "cadena_calidad_variedad_ids" => $condiciones['cadena_calidad_variedad_ids']); $result_dispo_grupo = $GrupoDispoCabDAO->listado($condiciones2); /** * Se realizar el proceso de consolidacion de informacion */ $result = null; foreach ($result_dispo_grupo as $reg) { if ($omitir_registros_vacios == true) { if ($reg['40'] == 0 && $reg['50'] == 0 && $reg['60'] == 0 && $reg['70'] == 0 && $reg['80'] == 0 && $reg['90'] == 0 && $reg['100'] == 0 && $reg['110'] == 0) { continue; } //end if } //end if $reg_new = null; $reg_new['producto_id'] = $reg['producto_id']; $reg_new['variedad_id'] = $reg['variedad_id']; $reg_new['variedad'] = trim($reg['variedad']); $reg_new['tallos_x_bunch'] = $reg['tallos_x_bunch']; $reg_new['color_ventas_nombre'] = $reg['color_ventas_nombre']; $reg_new['40']['bunchs']['total'] = $reg['40']; $reg_new['50']['bunchs']['total'] = $reg['50']; $reg_new['60']['bunchs']['total'] = $reg['60']; $reg_new['70']['bunchs']['total'] = $reg['70']; $reg_new['80']['bunchs']['total'] = $reg['80']; $reg_new['90']['bunchs']['total'] = $reg['90']; $reg_new['100']['bunchs']['total'] = $reg['100']; $reg_new['110']['bunchs']['total'] = $reg['110']; /*$reg_new['40']['cajas']['total'] = 0; $reg_new['50']['cajas']['total'] = 0; $reg_new['60']['cajas']['total'] = 0; $reg_new['70']['cajas']['total'] = 0; $reg_new['80']['cajas']['total'] = 0; $reg_new['90']['cajas']['total'] = 0; $reg_new['100']['cajas']['total'] = 0; $reg_new['110']['cajas']['total'] = 0; */ /* $DispoDAO->consultarInventarioPorProveedor($proveedor_id, $inventario_id, $producto_id, $variedad_id, $grado_id, $tallos_x_bunch, $clasifica_fox); $DispoDAO->consultarPorInventarioPorCalidadPorProveedorPorGradoPorTallo($inventario_id, $clasifica_fox, $proveedor_id, $variedad_id, $grado_id, $tallos_x_bunch) */ /* * El resultado se encuentra ordenado del MAYOR STOCK al MENOR STOCK */ $result_dispo = $DispoDAO->consultarPorInventarioPorClasificaPorVariedadPorTallos($reg['producto_id'], $reg_grupoDispoCab['inventario_id'], $clasifica_fox, $reg['variedad_id'], $reg['tallos_x_bunch'], $condiciones['opcion_dispo'], $condiciones['dispo_rotacion_dias_inicio'], $condiciones['arr_fechas_cajas']); foreach ($arr_grados as $grado) { $stock_grupo = $reg[$grado]; if (!empty($result_dispo)) { if (array_key_exists($grado, $result_dispo)) { foreach ($result_dispo[$grado] as $key_proveedor => $stock_proveedor) { if ($stock_grupo > $stock_proveedor) { $valor = $stock_proveedor; $reg_new[$grado]['bunchs']['fincas'][$key_proveedor] = $valor; //$reg_new[$grado]['cajas']['fincas'][$key_proveedor] = 0; $stock_grupo = $stock_grupo - $valor; } else { $valor = $stock_grupo; $reg_new[$grado]['bunchs']['fincas'][$key_proveedor] = $valor; //$reg_new[$grado]['cajas']['fincas'][$key_proveedor] = 0; $stock_grupo = 0; } //end if } //end foreach } else { $debug = 1; //$valor = $stock_proveedor; //$reg_new[$grado]['bunchs']['fincas'][$key_proveedor]= 0; } //end if } else { $debug = 1; } //end if } //end foreach $result[$reg['producto_id'] . '-' . $reg['variedad_id'] . '-' . $reg['tallos_x_bunch']] = $reg_new; } //end foreach return $result; }