Ejemplo n.º 1
0
 /**
  * Obtiene la dispo
  * 
  * @param string $cliente_id
  * @param int $usuario_id
  * @param int $marcacion_sec
  * @param string $tipo_caja_id
  * @param string $variedad_id
  * @param int $grado_id
  * @param boolean $get_fincas
  * @param boolean $rebajar_cajas_pedido
  * @param string $producto_id
  * @param int $tallos_x_bunch
  * @return array
  */
 function getDispo($cliente_id, $usuario_id, $marcacion_sec, $tipo_caja_id = null, $variedad_id = null, $grado_id = null, $get_fincas = false, $rebajar_cajas_pedido = true, $validar_variedad_faltante = false, $producto_id = null, $tallos_x_bunch = null)
 {
     $UsuarioDAO = new UsuarioDAO();
     $DispoDAO = new DispoDAO();
     $TipoCajaMatrizDAO = new TipoCajaMatrizDAO();
     $PedidoDetDAO = new PedidoDetDAO();
     $VariedadDAO = new VariedadDAO();
     /*		$this->getEntityManager()->getConnection()->beginTransaction();
     		try 
     		{
     */
     $UsuarioDAO->setEntityManager($this->getEntityManager());
     $DispoDAO->setEntityManager($this->getEntityManager());
     $TipoCajaMatrizDAO->setEntityManager($this->getEntityManager());
     $PedidoDetDAO->setEntityManager($this->getEntityManager());
     $VariedadDAO->setEntityManager($this->getEntityManager());
     /**
      * Consulta el GRUPO_DISPO_CAB_ID del usuario de cliente
      */
     $row_usuario = $UsuarioDAO->consultar($usuario_id, \Application\Constants\ResultType::MATRIZ);
     if (empty($row_usuario)) {
         //'Usuario no tiene asignado un grupo'
         $result = array('respuesta_code' => '01', 'respuesta_msg' => '00 - Availability Unassigned, please contact to your executive');
         return $result;
     } else {
         $grupo_precio_cab_id = $row_usuario['grupo_precio_cab_id'];
         //MORONITOR
         $grupo_dispo_cab_id = $row_usuario['grupo_dispo_cab_id'];
         $inventario_id = $row_usuario['inventario_id'];
         $clasifica_fox = $row_usuario['clasifica_fox'];
         $calidad_id = $row_usuario['calidad_id'];
     }
     //end if
     /**
      * Se obtiene el inventario para el cliente por proveedor y tipo de inventario especifico,
      * por lo que dara los bunches disponibles, y posteriormente si existe una
      * RESTRICCION en GRUPO_DISPO se aplica la regla para la dispo por grupo
      */
     if (empty($inventario_id)) {
         //Usuario no tiene inventario, comuniquese con su asesor
         $result = array('respuesta_code' => '02', 'respuesta_msg' => '01 - Stock unloaded, please contact to your executive');
         return $result;
     }
     //end if
     if (empty($clasifica_fox)) {
         //'Calidad no tiene clasifica_fox, comuniquese con su asesor'
         $result = array('respuesta_code' => '02', 'respuesta_msg' => '02 - Settings unloaded, please contact to your executive');
         return $result;
     }
     //end if
     if (empty($grupo_precio_cab_id)) {
         //'Usuario no tiene asignado GRUPO PRECIO, comuniquese con su asesor'
         $result = array('respuesta_code' => '02', 'respuesta_msg' => '03 - Price unloaded, please contact to your executive');
         return $result;
     }
     //end if
     if (empty($grupo_dispo_cab_id)) {
         //Usuario no tiene asignado GRUPO DISPO, comuniquese con su asesor
         $result = array('respuesta_code' => '02', 'respuesta_msg' => '04 - Stock unloaded, please contact to your executive');
         return $result;
     }
     //end if
     if ($row_usuario['inventario_id'] != $row_usuario['grupo_precio_cab_inventario_id']) {
         //INCOMPATIBILIDAD DE CONFIGURACION DE POLITICA DE INVENTARIO (GRUPO PRECIO)
         $result = array('respuesta_code' => 'NO-CONFIG-INV-PRECIO', 'respuesta_msg' => '05 - Stock unloaded, please contact to your executive');
         return $result;
     }
     //end if
     if ($row_usuario['inventario_id'] != $row_usuario['grupo_dispo_cab_inventario_id']) {
         //INCOMPATIBILIDAD DE CONFIGURACION DE POLITICA DE INVENTARIO (GRUPO DISPO)
         $result = array('respuesta_code' => 'NO-CONFIG-INV-DISPO', 'respuesta_msg' => '06 - Stock unloaded, please contact to your executive');
         return $result;
     }
     //end if
     if ($row_usuario['calidad_id'] != $row_usuario['grupo_precio_cab_calidad_id']) {
         //INCOMPATIBILIDAD DE CONFIGURACION DE POLITICA DE CALIDAD (GRUPO PRECIO)
         $result = array('respuesta_code' => 'NO-CONFIG-CAL-PRECIO', 'respuesta_msg' => '07 - Settings unloaded, please contact to your executive');
         return $result;
     }
     //end if
     if ($row_usuario['calidad_id'] != $row_usuario['grupo_dispo_cab_calidad_id']) {
         //INCOMPATIBILIDAD DE CONFIGURACION DE POLITICA DE CALIDAD (GRUPO DISPO)
         $result = array('respuesta_code' => 'NO-CONFIG-CAL-DISPO', 'respuesta_msg' => '08 - Settings unloaded, please contact to your executive');
         return $result;
     }
     //end if
     $result = $DispoDAO->consultarInventarioPorUsuario($usuario_id, $producto_id, $variedad_id, $grado_id, $clasifica_fox);
     /**
      *Ajusta el stock de los bunch de las fincas para mostrar la dispo de acuerdo al GRUPO_DISPO_DET
      *se debe de hacer un quiebre por producto, variedad, grado, tallos_x_bunch y  finca, para ajustar la dispo segun las restricciones
      */
     $producto_id_ant = null;
     $variedad_id_ant = null;
     $grado_id_ant = null;
     $tallos_x_bunch_ant = null;
     $grupo_dispo_det_cantidad_bunch_disponible = 0;
     //while($row = $result->fetch_array(MYSQLI_ASSOC))
     if (empty($result)) {
         if ($validar_variedad_faltante) {
             $VariedadData = $VariedadDAO->consultar($variedad_id);
             $result = array('respuesta_code' => '12', 'respuesta_msg' => 'Do not exist any box of: ' . $tipo_caja_id . ' ' . $VariedadData->getNombre() . ' ' . $grado_id . ' cm');
             unset($VariedadData);
             return $result;
         }
         //end if
     }
     //end if
     $result_dispo = null;
     foreach ($result as $row) {
         if ($row['variedad_id'] == 'ALB' && $row['grado_id'] == '60') {
             $debug = 1;
         }
         //end if
         //$porcentaje = 100/100;
         if (empty($row['grupo_dispo_det_cantidad_bunch_disponible'])) {
             $tot_bunch_disponibles = 0;
             /*------------------------------------*/
             if (empty($tot_bunch_disponibles)) {
                 if ($validar_variedad_faltante) {
                     //$VariedadData = $VariedadDAO->consultar($variedad_id);
                     $result = array('respuesta_code' => '13', 'respuesta_msg' => 'Do not exist any box of: ' . $tipo_caja_id . ' ' . $row['variedad_nombre'] . ' ' . $grado_id . ' cm');
                     //unset($VariedadData);
                     return $result;
                 }
                 //end if
             }
             //end if
             /*------------------------------------*/
             //$porcentaje = $row['grupo_dispo_det_cantidad_bunch_disponible']/100;
         } else {
             if ($row['grupo_dispo_det_cantidad_bunch_disponible'] > $row['tot_bunch_disponible']) {
                 $tot_bunch_disponibles = $row['tot_bunch_disponible'];
             } else {
                 $tot_bunch_disponibles = $row['grupo_dispo_det_cantidad_bunch_disponible'];
             }
         }
         //end if
         if ($row['precio'] == 0) {
             continue;
             //MORONITOR
         }
         //Si varia la variedad_id y el grado_id se indica la cantidad de bunch disponibles del GRUPO DISPO
         if ($producto_id_ant != $row['producto_id'] || $variedad_id_ant != $row['variedad_id'] || $grado_id_ant != $row['grado_id'] || $tallos_x_bunch_ant != $row['tallos_x_bunch']) {
             if (empty($row['grupo_dispo_det_cantidad_bunch_disponible'])) {
                 $grupo_dispo_det_cantidad_bunch_disponible = 0;
             } else {
                 $grupo_dispo_det_cantidad_bunch_disponible = $row['grupo_dispo_det_cantidad_bunch_disponible'];
             }
             //end if
             $producto_id_ant = $row['producto_id'];
             $variedad_id_ant = $row['variedad_id'];
             $grado_id_ant = $row['grado_id'];
             $tallos_x_bunch_ant = $row['tallos_x_bunch'];
         }
         //end if
         $grupo_dispo_det_cantidad_bunch_disponible_ant = $grupo_dispo_det_cantidad_bunch_disponible;
         //configura la cantidad de bunch de la FINCA en relacion del GRUPO DISPO
         if ($grupo_dispo_det_cantidad_bunch_disponible > $row['tot_bunch_disponible']) {
             $tot_bunch_disponibles = $row['tot_bunch_disponible'];
             $grupo_dispo_det_cantidad_bunch_disponible = $grupo_dispo_det_cantidad_bunch_disponible - $row['tot_bunch_disponible'];
         } else {
             $tot_bunch_disponibles = $grupo_dispo_det_cantidad_bunch_disponible;
             $grupo_dispo_det_cantidad_bunch_disponible = 0;
         }
         //end if
         if (!empty($tot_bunch_disponibles)) {
             $row_dispo = $row;
             $row_dispo['producto_id'] = $row_dispo['producto_id'];
             $row_dispo['variedad_nombre'] = trim($row_dispo['variedad_nombre']);
             $row_dispo['proveedor_id'] = $row_dispo['proveedor_id'];
             $row_dispo['variedad_id'] = $row_dispo['variedad_id'];
             $row_dispo['grado_id'] = $row_dispo['grado_id'];
             //$row_dispo['tallos_x_bunch']		= $row_dispo['tallos_x_bunch'];
             $row_dispo['precio'] = $row_dispo['precio'];
             $row_dispo['precio_oferta'] = $row_dispo['precio_oferta'];
             $row_dispo['grupo_dispo_det_cantidad_bunch_disponible'] = $grupo_dispo_det_cantidad_bunch_disponible_ant;
             //$row_dispo['tot_bunch_disponible'] 	= floor($row_dispo['tot_bunch_disponible']*$porcentaje);
             $row_dispo['tot_bunch_disponible'] = $tot_bunch_disponibles;
             $row_dispo['tallos_x_bunch'] = $row_dispo['tot_tallos_x_bunch'] / $row_dispo['veces_tallos_x_bunch'];
             $row_dispo['color_nombre'] = $row_dispo['color_nombre'];
             $row_dispo['url_ficha'] = $row_dispo['url_ficha'];
             //Los siguientes se llenaran más adelante
             $row_dispo['tipo_caja_origen_estado'] = NULL;
             $row_dispo['tipo_caja_origen_id'] = NULL;
             $row_dispo['tipo_caja_unds_bunch'] = NULL;
             $row_dispo['nro_cajas'] = NULL;
             $result_dispo[] = $row_dispo;
         }
         //end if
     }
     //end foreach
     if (empty($result_dispo)) {
         $result = array('respuesta_code' => '08', 'respuesta_msg' => 'Dispo unavailable');
         return $result;
         //NO HAY DISPO
     }
     foreach ($result_dispo as &$row_dispo) {
         $row = $TipoCajaMatrizDAO->consultaPorInventarioPorMarcacionPorVariedadPorGrado($inventario_id, $marcacion_sec, $row_dispo['variedad_id'], $row_dispo['grado_id'], $tipo_caja_id);
         if (!empty($row)) {
             //echo("<pre>");var_dump($row);echo("</pre>"); //DEBUG
             $row_dispo['tipo_caja_id'] = $row['tipo_caja_id'];
             $row_dispo['tipo_caja_origen_estado'] = $row['tipo_caja_origen_estado'];
             $row_dispo['tipo_caja_origen_id'] = $row['tipo_caja_origen_id'];
             $row_dispo['tipo_caja_unds_bunch'] = $row['tipo_caja_unds_bunch'];
             $row_dispo['tallos_x_bunch'] = $row_dispo['tallos_x_bunch'];
             //MEJORA POR LOS BUNCHS
             if (empty($row['tipo_caja_unds_bunch'])) {
                 $row_dispo['nro_cajas'] = 0;
             } else {
                 $row_dispo['nro_cajas'] = floor($row_dispo['tot_bunch_disponible'] / $row['tipo_caja_unds_bunch']);
             }
             //end if
             //obtiene la dispo por proveedores
             if ($get_fincas == true) {
                 $row_dispo_temp = null;
                 $row_dispo_temp['proveedor_id'] = $row_dispo['proveedor_id'];
                 $row_dispo_temp['tot_bunch_disponible'] = $row_dispo['tot_bunch_disponible'];
                 $row_dispo_temp['nro_cajas'] = $row_dispo['nro_cajas'];
                 $proveedores_dispo[] = $row_dispo_temp;
             }
             //end if
         } else {
             $result = array('respuesta_code' => '03', 'respuesta_msg' => $row_dispo['variedad_nombre'] . ' ' . $row_dispo['grado_id'] . ' cm variety have not ' . $tipo_caja_id . ' box available');
             //throw new Exception('Error, no tiene caja disponible');
             return $result;
         }
         //end if
     }
     //end foreach
     /**
      * Consolida las cajas de los proveedores (a nivel FINCAS)
      */
     $result_consolidado = NULL;
     $bd_1era_vez = true;
     $producto_id_ant = NULL;
     $variedad_id_ant = NULL;
     $grado_id_ant = NULL;
     $tallos_x_bunch_ant = NULL;
     //echo("<pre>");var_dump($result_dispo);echo("</pre>"); exit
     foreach ($result_dispo as $row) {
         if ($bd_1era_vez == true || $producto_id_ant != $row['producto_id'] || $variedad_id_ant != $row['variedad_id'] || $grado_id_ant != $row['grado_id'] || $tallos_x_bunch_ant != $row['tallos_x_bunch']) {
             if ($bd_1era_vez == false) {
                 if (!empty($row_new['nro_cajas'])) {
                     $key = $producto_id_ant . '-' . $variedad_id_ant . '-' . trim($grado_id_ant) . '-' . $tallos_x_bunch_ant;
                     $result_consolidado[$key] = $row_new;
                 }
                 //end if
             }
             //end if
             $bd_1era_vez = false;
             //Inicializa los campos totalizadores
             $row_new = NULL;
             $row_new['nro_cajas'] = 0;
             $row_new['tot_bunch_disponible'] = 0;
         }
         //end if
         //Se totaliza el registro
         $row_new['producto_id'] = $row['producto_id'];
         $row_new['inventario_id'] = $inventario_id;
         $row_new['grado_id'] = $row['grado_id'];
         $row_new['variedad_id'] = $row['variedad_id'];
         $row_new['variedad_nombre'] = $row['variedad_nombre'];
         $row_new['tipo_caja_id'] = $row['tipo_caja_id'];
         $row_new['tipo_caja_origen_estado'] = $row['tipo_caja_origen_estado'];
         $row_new['tipo_caja_origen_id'] = $row['tipo_caja_origen_id'];
         $row_new['cantidad_bunch'] = $row['tipo_caja_unds_bunch'];
         $row_new['tipo_caja_default_id'] = $tipo_caja_id;
         $row_new['nro_cajas'] = $row_new['nro_cajas'] + $row['nro_cajas'];
         $row_new['tot_bunch_disponible'] = $row_new['tot_bunch_disponible'] + $row['tot_bunch_disponible'];
         $row_new['tallos_x_bunch'] = $row['tallos_x_bunch'];
         $row_new['color_nombre'] = $row['color_nombre'];
         $row_new['url_ficha'] = $row['url_ficha'];
         $row_new['precio'] = $row['precio'];
         $row_new['precio_oferta'] = $row['precio_oferta'];
         //Control para el quiebre
         $producto_id_ant = $row['producto_id'];
         $variedad_id_ant = $row['variedad_id'];
         $grado_id_ant = $row['grado_id'];
         $tallos_x_bunch_ant = $row['tallos_x_bunch'];
     }
     //end foreach
     if ($bd_1era_vez == false) {
         if (!empty($row_new['nro_cajas'])) {
             $key = $producto_id_ant . '-' . $variedad_id_ant . '-' . trim($grado_id_ant) . '-' . $tallos_x_bunch_ant;
             $result_consolidado[$key] = $row_new;
         }
         //end if
     }
     //end if
     /**
      * Consulta todos los pedido del cliente en estado comprando
      * para poder homologar las cajas para poderlas restar del stock
      */
     $result = $PedidoDetDAO->consultarPedidosEstadoComprando($cliente_id, $inventario_id, $producto_id, $variedad_id, $grado_id, $tallos_x_bunch, $calidad_id);
     //Ajusta el porcentaje de acuerdo a la restriccion de GRUPO_DISPO
     //var_dump($result_consolidado);
     $nro_cajas = 0;
     foreach ($result as $row) {
         $key = $row['producto_id'] . '-' . $row['variedad_id'] . '-' . trim($row['grado_id']) . '-' . $row['tallos_x_bunch'];
         $row_consolidado =& $result_consolidado[$key];
         if ($rebajar_cajas_pedido == true) {
             $nro_cajas_homologada = $PedidoDetDAO->getCajasHomologadaPedido($inventario_id, $cliente_id, $marcacion_sec, $row['variedad_id'], $row['grado_id'], "C", $row_consolidado['tipo_caja_id'], $row['tallos_x_bunch'], $calidad_id);
         } else {
             $nro_cajas_homologada = 0;
         }
         $row_consolidado['nro_cajas'] = $row_consolidado['nro_cajas'] - $nro_cajas_homologada;
         if ($row_consolidado['nro_cajas'] < 0) {
             $row_consolidado['nro_cajas'] = 0;
         }
         //end if
     }
     //end foreach
     /**
      * Se quita el key del array, para que no afecte al pasarlo por JSON
      */
     $result_consolidado2 = null;
     if (!empty($result_consolidado)) {
         foreach ($result_consolidado as $reg) {
             if ($reg['nro_cajas'] > 0) {
                 $result_cajas = $TipoCajaMatrizDAO->consultarTipoCajaPorInventarioPorVariedadPorGrado($inventario_id, $reg['variedad_id'], $reg['grado_id']);
                 $cajas = null;
                 foreach ($result_cajas as $row_caja) {
                     $cajas[] = $row_caja['tipo_caja_id'];
                 }
                 //end while
                 $reg['cajas'] = $cajas;
                 //obtiene la dispo por proveedores
                 if ($get_fincas == true) {
                     $reg['proveedores_dispo'] = $proveedores_dispo;
                 }
                 //end if
                 $result_consolidado2[] = $reg;
             }
             //end if
         }
         //end foreach
     }
     //end if
     //$this->getEntityManager()->getConnection()->commit();
     $result = array('respuesta_code' => 'OK', 'respuesta_msg' => '', 'result_dispo' => $result_consolidado2);
     //return $result_consolidado2;
     /*			echo('<pre>');
     			var_dump($result);
     			echo('</pre>');
     			die();
     */
     return $result;
     /*		} catch (Exception $e) {
     			$this->getEntityManager()->getConnection()->rollback();
     			$this->getEntityManager()->close();
     			throw $e;
     		}		
     */
 }
Ejemplo n.º 2
0
 /**
  *
  * @param array $condiciones (criterio_busqueda, busqueda_color , busqueda_estado)
  */
 public function generarExcel($condiciones)
 {
     set_time_limit(0);
     ini_set('memory_limit', '-1');
     $ColorVentasBO = new ColorVentasBO();
     $VariedadDAO = new VariedadDAO();
     $ColorVentasBO->setEntityManager($this->getEntityManager());
     $VariedadDAO->setEntityManager($this->getEntityManager());
     //----------------Se configura las Etiquetas de Seleccion-----------------
     $texto_criterio_busqueda = 'TODOS';
     $texto_color = 'TODOS';
     $texto_estado = 'TODOS';
     if (!empty($condiciones['criterio_busqueda'])) {
         $texto_criterio_busqueda = $condiciones['criterio_busqueda'];
     }
     //end if
     switch ($condiciones['busqueda_estado']) {
         case 'A':
             $texto_estado = 'ACTIVO';
             break;
         case 'I':
             $texto_estado = 'INACTIVO';
             break;
     }
     //end switch
     if (!empty($condiciones['busqueda_color'])) {
         //$ColorVentasData 		= $ColorVentasBO->consultar($condiciones['busqueda_color']);
         $texto_color = $condiciones['busqueda_color'];
     }
     //end if
     //----------------Se inicia la configuracion del PHPExcel-----------------
     $PHPExcelApp = new PHPExcelApp();
     $objPHPExcel = new \PHPExcel();
     // Set document properties
     $PHPExcelApp->setUserName('');
     $PHPExcelApp->setMetaDataDocument($objPHPExcel);
     $objPHPExcel->setActiveSheetIndex(0);
     //Configura el tamaño del Papel
     $objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(\PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
     $objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(\PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
     //Se establece la escala de la pagina
     $objPHPExcel->getActiveSheet()->getPageSetup()->setFitToWidth(1);
     $objPHPExcel->getActiveSheet()->getPageSetup()->setFitToHeight(0);
     //Se establece los margenes de la pagina
     $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.1);
     $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0.1);
     $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.1);
     $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
     //------------------------------Registra la cabecera--------------------------------
     $row = 1;
     $col_ini = $PHPExcelApp->getNameFromNumber(0);
     $col_fin = $PHPExcelApp->getNameFromNumber(11);
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, 1, "LISTADO DE VARIEDADES");
     $objPHPExcel->getActiveSheet()->mergeCells($col_ini . $row . ':' . $col_fin . $row);
     $objPHPExcel->getActiveSheet()->getStyle($col_ini . $row . ':' . $col_fin . $row)->applyFromArray($PHPExcelApp->getStyleArray($PHPExcelApp::STYLE_ARRAY_NEGRILLA));
     $objPHPExcel->getActiveSheet()->getStyle($col_ini . $row . ':' . $col_fin . $row)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
     //------------------------------Registra criterios linea 1--------------------------
     $row = 2;
     $col_ini = $PHPExcelApp->getNameFromNumber(0);
     $col_fin = $PHPExcelApp->getNameFromNumber(11);
     $objRichText = new \PHPExcel_RichText();
     $objRichText->createText('');
     $objCriterio = $objRichText->createTextRun('  Criterio: ');
     $objCriterio->getFont()->setBold(true);
     $objCriterio->getFont()->setColor(new \PHPExcel_Style_Color(\PHPExcel_Style_Color::COLOR_DARKGREEN));
     $objRichText->createText($texto_criterio_busqueda);
     $objColor = $objRichText->createTextRun('    Color Ventas: ');
     $objColor->getFont()->setBold(true);
     $objColor->getFont()->setColor(new \PHPExcel_Style_Color(\PHPExcel_Style_Color::COLOR_DARKGREEN));
     $objRichText->createText($texto_color);
     $objEstado = $objRichText->createTextRun('   Estado: ');
     $objEstado->getFont()->setBold(true);
     $objEstado->getFont()->setColor(new \PHPExcel_Style_Color(\PHPExcel_Style_Color::COLOR_DARKGREEN));
     $objRichText->createText($texto_estado);
     $objPHPExcel->getActiveSheet()->getCell($col_ini . $row)->setValue($objRichText);
     $objPHPExcel->getActiveSheet()->mergeCells($col_ini . $row . ':' . $col_fin . $row);
     //------------------------------ Registro de Fecha de Generacion --------------------------------
     $row = 3;
     $col_ini = $PHPExcelApp->getNameFromNumber(0);
     $col_fin = $PHPExcelApp->getNameFromNumber(11);
     //$etiqueta = "";
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $row, "Generado: " . \Application\Classes\Fecha::getFechaHoraActualServidor());
     $objPHPExcel->getActiveSheet()->mergeCells($col_ini . $row . ':' . $col_fin . $row);
     $objPHPExcel->getActiveSheet()->getStyle($col_ini . $row)->applyFromArray($PHPExcelApp->getStyleArray($PHPExcelApp::STYLE_ARRAY_NEGRILLA));
     $objPHPExcel->getActiveSheet()->getStyle($col_ini . $row)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
     //-------------------------ESTABLECE TITULO DE COLUMNAS----------------------------
     $row = $row + 1;
     $row_detalle_ini = $row;
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $row, "Nro");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $row, "Codigo");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, $row, "Variedad");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, $row, "Link");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(4, $row, "Calidad");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(5, $row, "Obtentor");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(6, $row, "Bunch");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(7, $row, "Color Base");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(8, $row, "Color Venta");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9, $row, "Solido");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(10, $row, "Real");
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(11, $row, "Estado");
     //-------------------------ESTABLECE ANCHO DE COLUMNAS----------------------------
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(0)->setAutoSize(true);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(1)->setAutoSize(true);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(2)->setWidth(25);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(3)->setWidth(6);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(4)->setAutoSize(true);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(5)->setAutoSize(true);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(6)->setAutoSize(true);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(7)->setAutoSize(true);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(8)->setWidth(11);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(9)->setWidth(6);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(10)->setWidth(6);
     $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn(11)->setWidth(7);
     $objPHPExcel->getActiveSheet()->getStyle($col_ini . $row . ':' . $col_fin . $row)->applyFromArray($PHPExcelApp->getStyleArray($PHPExcelApp::STYLE_ARRAY_NEGRILLA));
     $objPHPExcel_getActiveSheet = $objPHPExcel->getActiveSheet();
     $result = $this->listadoExcel($condiciones);
     $cont_linea = 0;
     foreach ($result as $reg) {
         $cont_linea++;
         $row = $row + 1;
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $row, $cont_linea);
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $row, $cont_linea);
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $row, $reg['id']);
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, $row, $reg['nombre']);
         if (!empty($reg['url_ficha'])) {
             $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, $row, 'FOTO');
             $objPHPExcel->getActiveSheet()->getCell('D' . $row)->getHyperlink()->setUrl($reg['url_ficha']);
         } else {
             $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, $row, '');
         }
         //end if
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(4, $row, $reg['calidad']);
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(5, $row, $reg['nombre_obtentor']);
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(6, $row, $reg['nombre_bunch']);
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(7, $row, $reg['color_base']);
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(8, $row, $reg['color_venta']);
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9, $row, $reg['solido']);
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(10, $row, $reg['es_real']);
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(11, $row, $reg['estado']);
     }
     //end foreach
     //$objPHPExcel->getActiveSheet()->getStyle($col_ini.$row.':'.$col_fin.$row)->applyFromArray($PHPExcelApp->getStyleArray($PHPExcelApp::STYLE_ARRAY_NEGRILLA));
     //Margenes
     $col_ini = $PHPExcelApp->getNameFromNumber(0);
     $col_fin = $PHPExcelApp->getNameFromNumber(11);
     $objPHPExcel->getActiveSheet()->getStyle($col_ini . $row_detalle_ini . ":" . $col_fin . $row)->applyFromArray($PHPExcelApp->getStyleArray($PHPExcelApp::STYLE_ARRAY_BORDE_TODO));
     // Rename worksheet
     $objPHPExcel->getActiveSheet()->setTitle('Listado Variedades');
     $PHPExcelApp->save($objPHPExcel, $PHPExcelApp::FORMAT_EXCEL_2007, "Listado_Variedades.xlsx");
 }
 /**
  * @param string
  * @param array $condiciones  (grupo_precio_cab_id)
  * @return array
  */
 public function listado($tipo_precio, $condiciones)
 {
     $GrupoPrecioCabDAO = new GrupoPrecioCabDAO();
     $GrupoDispoDetDAO = new GrupoPrecioDetDAO();
     $DispoDAO = new DispoDAO();
     $VariedadDAO = new VariedadDAO();
     $GrupoPrecioCabDAO->setEntityManager($this->getEntityManager());
     $GrupoDispoDetDAO->setEntityManager($this->getEntityManager());
     $DispoDAO->setEntityManager($this->getEntityManager());
     $VariedadDAO->setEntityManager($this->getEntityManager());
     /**
      * Se obtiene el registro CABECERA de la DISPO X GRUPO
      */
     $reg_grupoPrecioCab = $GrupoPrecioCabDAO->consultarArray($condiciones['grupo_precio_cab_id']);
     if (empty($reg_grupoPrecioCab)) {
         return null;
     }
     //end if
     /**
      * Se obtiene los registro de la lista de VARIEDADES (UNIVERSO)
      */
     $condiciones2 = array("clasifica_fox" => $reg_grupoPrecioCab['clasifica_fox'], "color_ventas_id" => $condiciones['color_ventas_id']);
     $result_dispo = $VariedadDAO->listadoDispo($condiciones2);
     /**
      * Se obtiene los registro de la DISPO GENERAL  (UNIVERSO)
      */
     /*		$condiciones2 = array(
     				"inventario_id"	=> $reg_grupoPrecioCab['inventario_id'],
     				"proveedor_id"	=> null,
     				"clasifica"		=> $reg_grupoPrecioCab['clasifica_fox'],
     				"color_ventas_id"	=> $condiciones['color_ventas_id']				
     		);
     		$result_dispo = $DispoDAO->listado($condiciones2);
     */
     /**
      * Se obtiene los registros de el PRECIO POR GRUPO
      */
     $condiciones2 = array("grupo_precio_cab_id" => $condiciones['grupo_precio_cab_id'], "color_ventas_id" => $condiciones['color_ventas_id']);
     $result_dispo_grupo = $GrupoDispoDetDAO->listado($tipo_precio, $condiciones2);
     /**
      * Se realizar el proceso de consolidacion de informacion
      */
     //Indexar el RESULT de la DISPO GENERAL
     $result = null;
     foreach ($result_dispo as $reg) {
         $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'] = 0;
         $reg_new['50'] = 0;
         $reg_new['60'] = 0;
         $reg_new['70'] = 0;
         $reg_new['80'] = 0;
         $reg_new['90'] = 0;
         $reg_new['100'] = 0;
         $reg_new['110'] = 0;
         $reg_new['ofer40'] = 0;
         $reg_new['ofer50'] = 0;
         $reg_new['ofer60'] = 0;
         $reg_new['ofer70'] = 0;
         $reg_new['ofer80'] = 0;
         $reg_new['ofer90'] = 0;
         $reg_new['ofer100'] = 0;
         $reg_new['ofer110'] = 0;
         $reg_new['existe'] = 0;
         //$result[$reg['producto_id'].'-'.$reg['variedad_id'].'-'.$reg['tallos_x_bunch']] = $reg_new;
         $result[$reg['producto_id'] . '-' . $reg['variedad_id']] = $reg_new;
     }
     //end foreach
     //Completa los campos del RESULT con la DISPO POR GRUPO
     foreach ($result_dispo_grupo as $reg) {
         //Se puede dar el caso que el registro exista en la lista de precios y no exista en el dispo
         //esto se puede deber a que de la dispo general lo han quitado por alguna razon de comercializacion
         //$key = $reg['producto_id'].'-'.$reg['variedad_id'].'-'.$reg['tallos_x_bunch'];
         $key = $reg['producto_id'] . '-' . $reg['variedad_id'];
         if (!array_key_exists($key, $result)) {
             $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'] = 0;
             $reg_new['50'] = 0;
             $reg_new['60'] = 0;
             $reg_new['70'] = 0;
             $reg_new['80'] = 0;
             $reg_new['90'] = 0;
             $reg_new['100'] = 0;
             $reg_new['110'] = 0;
             $reg_new['ofer40'] = 0;
             $reg_new['ofer50'] = 0;
             $reg_new['ofer60'] = 0;
             $reg_new['ofer70'] = 0;
             $reg_new['ofer80'] = 0;
             $reg_new['ofer90'] = 0;
             $reg_new['ofer100'] = 0;
             $reg_new['ofer110'] = 0;
             $result[$key] = $reg_new;
         }
         //end if
         $reg_result =& $result[$key];
         $reg_result['40'] = $reg['40'];
         $reg_result['50'] = $reg['50'];
         $reg_result['60'] = $reg['60'];
         $reg_result['70'] = $reg['70'];
         $reg_result['80'] = $reg['80'];
         $reg_result['90'] = $reg['90'];
         $reg_result['100'] = $reg['100'];
         $reg_result['110'] = $reg['110'];
         $reg_result['ofer40'] = $reg['ofer40'];
         $reg_result['ofer50'] = $reg['ofer50'];
         $reg_result['ofer60'] = $reg['ofer60'];
         $reg_result['ofer70'] = $reg['ofer70'];
         $reg_result['ofer80'] = $reg['ofer80'];
         $reg_result['ofer90'] = $reg['ofer90'];
         $reg_result['ofer100'] = $reg['ofer100'];
         $reg_result['ofer110'] = $reg['ofer110'];
         $reg_result['existe'] = 1;
     }
     //end foreach
     return $result;
 }