/**
  * 
  * @param ArrTipoCajaMatrizData[]  $ArrTipoCajaMatrizData
  * @throws Exception
  * @return string
  */
 function registrarCajaMatriz($ArrTipoCajaMatrizData)
 {
     $this->getEntityManager()->getConnection()->beginTransaction();
     try {
         $TipoCajaMatrizData = new TipoCajaMatrizData();
         $TipoCajaMatrizDAO = new TipoCajaMatrizDAO();
         $TipoCajaMatrizDAO->setEntityManager($this->getEntityManager());
         //$TipoCajaMatrizData = new TipoCajaMatrizData();
         foreach ($ArrTipoCajaMatrizData as $TipoCajaMatrizData) {
             $TipoCajaMatrizData2 = $TipoCajaMatrizDAO->consultarPorClaveAlterna($TipoCajaMatrizData->getInventarioId(), $TipoCajaMatrizData->getTipoCajaId(), $TipoCajaMatrizData->getTallosxBunch(), $TipoCajaMatrizData->getTamanoBunchId(), $TipoCajaMatrizData->getGradoId());
             if (!empty($TipoCajaMatrizData2)) {
                 //SI  EXISTE EL REGISTRO LO ACTUALIZA
                 $clave_alterna = $TipoCajaMatrizData2->getId();
                 $TipoCajaMatrizData->setId($clave_alterna);
                 $id = $TipoCajaMatrizDAO->modificar($TipoCajaMatrizData);
             } else {
                 //SI NO EXISTE EL REGISTRO LO INSERTA
                 $id = $TipoCajaMatrizDAO->ingresar($TipoCajaMatrizData);
             }
             //end if
         }
         //end foreach
         $this->getEntityManager()->getConnection()->commit();
         $result['validacion_code'] = 'OK';
         $result['respuesta_mensaje'] = 'Registros procesados correctamente';
         return $result;
     } catch (Exception $e) {
         $this->getEntityManager()->getConnection()->rollback();
         $this->getEntityManager()->close();
         throw $e;
     }
     //end try
 }
 /**
  *
  * @param string $inventario_id
  * @param string $tipo_caja_id
  * @param int $tallos_x_bunch
  * @param string $tamano_bunch_id
  * @param int $grado_id 
  * @return \Dispo\Data\TipoCajaMatrizData|NULL
  */
 public function consultarPorClaveAlterna($inventario_id, $tipo_caja_id, $tallos_x_bunch, $tamano_bunch_id, $grado_id, $resultType = \Application\Constants\ResultType::OBJETO)
 {
     $TipoCajaMatrizData = new TipoCajaMatrizData();
     $sql = ' SELECT tipo_caja_matriz.* ' . ' FROM tipo_caja_matriz ' . " WHERE tipo_caja_matriz.inventario_id\t\t\t\t= '" . $inventario_id . "'" . "\t\t\tAND tipo_caja_matriz.tipo_caja_id \t\t= '" . $tipo_caja_id . "'" . "\t\t\tAND tipo_caja_matriz.tallos_x_bunch \t= " . $tallos_x_bunch . "\t\t\tAND tipo_caja_matriz.tamano_bunch_id \t= '" . $tamano_bunch_id . "'" . "\t\t\tAND tipo_caja_matriz.grado_id \t\t\t= '" . $grado_id . "'";
     $stmt = $this->getEntityManager()->getConnection()->prepare($sql);
     //$stmt->bindValue(':id',$id);
     $stmt->execute();
     $row = $stmt->fetch();
     //Se utiliza el fecth por que es un registro
     if ($row) {
         $TipoCajaMatrizData->setId($row['id']);
         $TipoCajaMatrizData->setInventarioId($row['inventario_id']);
         $TipoCajaMatrizData->setTipoCajaId($row['tipo_caja_id']);
         $TipoCajaMatrizData->setTallosxBunch($row['tallos_x_bunch']);
         $TipoCajaMatrizData->setTamanoBunchId($row['tamano_bunch_id']);
         $TipoCajaMatrizData->setGradoId($row['grado_id']);
         $TipoCajaMatrizData->setUndsBunch($row['unds_bunch']);
         $TipoCajaMatrizData->setUsuarioIngId($row['usuario_ing_id']);
         $TipoCajaMatrizData->setFecIngreso($row['fec_ingreso']);
         $TipoCajaMatrizData->setUsuarioModId($row['usuario_mod_id']);
         $TipoCajaMatrizData->setFecModifica($row['fec_modifica']);
         return $TipoCajaMatrizData;
     } else {
         return null;
     }
 }