Thanks Nathalia, <div><br></div><div>I added one table to save the relations </div><div><br></div><div><div><br></div><div>CREATE TABLE IF NOT EXISTS `vtiger_activity_relations` (</div><div>  `id` int(11) NOT NULL,</div><div>

  `id_related` int(11) NOT NULL,</div><div>  PRIMARY KEY (`id`,`id_related`)</div><div>) ENGINE=MyISAM DEFAULT CHARSET=utf8;</div></div><div><br></div><div>Then I modified the code of RepeatEvents.php and I added two functions:</div>

<div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>/**</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> * </div><div><span class="Apple-tab-span" style="white-space:pre">        </span> * Save data of relation (Antoni Bertran 20111217)</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span> * @param int $id</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> * @param int $id_related</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> */</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>static function save_relation($id, $id_related) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>//</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>global $adb;</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>$sql = &quot;insert into vtiger_activity_relations values (?,?)&quot;;</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>return $adb-&gt;pquery($sql, array($id, $id_related));</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>/**</div>
<div>
<span class="Apple-tab-span" style="white-space:pre">        </span>*</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>* Delete previous relation (Antoni Bertran 20111217)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>* @param int $id</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>* @param int $id_related</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>*/</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>static function delete_previous_relation($id) {</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>//</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>global $adb;</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$new_focus = new Activity();</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>//Antoni Eliminem els fills repetits 20111217</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$fieldRes = $adb-&gt;pquery(&#39;SELECT id_related FROM vtiger_activity_relations  WHERE id=?&#39;, array($id));</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>$numOfFields = $adb-&gt;num_rows($fieldRes);</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>for ($i=0; $i&lt;$numOfFields; $i++) {</div>

<div><span class="Apple-tab-span" style="white-space:pre">                        </span>$id_related = $adb-&gt;query_result($fieldRes, $i, &#39;id_related&#39;);</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>$new_focus-&gt;trash(&#39;Calendar&#39;, $id_related);</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>return $adb-&gt;pquery(&#39;DELETE FROM vtiger_activity_relations  WHERE id=?&#39;, array($id));</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><span style="border-collapse:collapse"><div style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px">

<span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;border-collapse:collapse;color:rgb(31,73,125)"><span style="color:rgb(0,0,0)"><br></span></span></div><div style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px">

<span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;border-collapse:collapse;color:rgb(31,73,125)"><span style="color:rgb(0,0,0)">Then I call from repeat function</span></span></div><div><span style="border-collapse:collapse;font-size:12px"><font class="Apple-style-span" face="Verdana, Arial, Helvetica, sans-serif"><div>

<br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>/**</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> * Repeat Activity instance till given limit.</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> */</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>static function repeat($focus) {</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>global $log;</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$repeat = getrecurringObjValue();</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span><b>//Antoni gets id</b></div><div><b><span class="Apple-tab-span" style="white-space:pre">                </span>$id = $focus-&gt;id;</b></div><div><b><span class="Apple-tab-span" style="white-space:pre">                </span>//Antoni delete previous relation</b></div>

<div><b><span class="Apple-tab-span" style="white-space:pre">                </span>self::delete_previous_relation($id);</b></div><div><span class="Apple-tab-span" style="white-space:pre"><b>                </b></span>$frequency = $repeat-&gt;recur_freq;</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>$repeattype= $repeat-&gt;recur_type;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$base_focus = new Activity();</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>$base_focus-&gt;retrieve_entity_info($focus-&gt;id,&#39;Events&#39;);</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$base_focus-&gt;id = $_REQUEST[&#39;record&#39;];</div>

<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$base_focus_start = $base_focus-&gt;column_fields[&#39;date_start&#39;].&#39; &#39;.$base_focus-&gt;column_fields[&#39;time_start&#39;];</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>$base_focus_end = $base_focus-&gt;column_fields[&#39;due_date&#39;].&#39; &#39;.$base_focus-&gt;column_fields[&#39;time_end&#39;];</div><div><br></div><div>

<span class="Apple-tab-span" style="white-space:pre">                </span>$repeat_limit = getDBInsertDateValue($_REQUEST[&#39;calendar_repeat_limit_date&#39;]).&#39; &#39;.$base_focus-&gt;column_fields[&#39;time_start&#39;];</div><div>

<br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$repeatIntervals = self::getRepeatInterval($repeattype, $frequency, $repeat, $base_focus_start, $repeat_limit);</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$base_focus_start = self::mktime($base_focus_start);</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>$base_focus_end   = self::mktime($base_focus_end);</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$skip_focus_fields = Array (&#39;record_id&#39;, &#39;createdtime&#39;, &#39;modifiedtime&#39;, &#39;recurringtype&#39;);</div>

<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>/** Create instance before and reuse */</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$new_focus = new Activity();</div>

<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$numberOfRepeats = count($repeatIntervals);</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>foreach($repeatIntervals as $index =&gt; $interval) {</div>

<div><span class="Apple-tab-span" style="white-space:pre">                        </span>$new_focus_start_timing = self::nexttime($base_focus_start, &quot;+$interval days&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>$new_focus_start_timing = self::splittime(self::formattime($new_focus_start_timing));</div>

<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>$new_focus_end_timing = self::nexttime($base_focus_end, &quot;+$interval days&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>$new_focus_end_timing = self::splittime(self::formattime($new_focus_end_timing));</div>

<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>// Reset the new_focus and prepare for reuse</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>if(isset($new_focus-&gt;id)) unset($new_focus-&gt;id);</div>

<div><span class="Apple-tab-span" style="white-space:pre">                        </span>$new_focus-&gt;column_fields = array();</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>foreach($base_focus-&gt;column_fields as $key=&gt;$value) {</div>

<div><span class="Apple-tab-span" style="white-space:pre">                                </span>if(in_array($key, $skip_focus_fields)) {</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>// skip copying few fields</div><div>

<span class="Apple-tab-span" style="white-space:pre">                                </span>} else if($key == &#39;date_start&#39;) {</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>$new_focus-&gt;column_fields[&#39;date_start&#39;] = $new_focus_start_timing[0];<span class="Apple-tab-span" style="white-space:pre">                                </span></div>

<div><span class="Apple-tab-span" style="white-space:pre">                                </span>} else if($key == &#39;time_start&#39;) {</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>$new_focus-&gt;column_fields[&#39;time_start&#39;] = $new_focus_start_timing[1];<span class="Apple-tab-span" style="white-space:pre">                                </span></div>

<div><span class="Apple-tab-span" style="white-space:pre">                                </span>} else if($key == &#39;time_end&#39;) {</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>$new_focus-&gt;column_fields[&#39;time_end&#39;]   = $new_focus_end_timing[1];<span class="Apple-tab-span" style="white-space:pre">                                </span></div>

<div><span class="Apple-tab-span" style="white-space:pre">                                </span>} else if($key == &#39;due_date&#39;) {</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>$new_focus-&gt;column_fields[&#39;due_date&#39;]   = $new_focus_end_timing[0];<span class="Apple-tab-span" style="white-space:pre">                                </span></div>

<div><span class="Apple-tab-span" style="white-space:pre">                                </span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>//$new_focus-&gt;column_fields[$key]         = $value;</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>//Antoni 20111217 per evitar que surti els acutes obtenint els valors orginals</div>

<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>$new_focus-&gt;column_fields[$key]         = $_REQUEST[$key];</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>}</div>

<div><span class="Apple-tab-span" style="white-space:pre">                        </span>//Antoni Don&#39;t send repeats emails 20121217</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>//if($numberOfRepeats &gt; 10 &amp;&amp; $index &gt; 10) {</div>

<div><span class="Apple-tab-span" style="white-space:pre">                                </span>unset($new_focus-&gt;column_fields[&#39;sendnotification&#39;]);</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>//}</div><div>

<span class="Apple-tab-span" style="white-space:pre">                        </span>$new_focus-&gt;save(&#39;Calendar&#39;);</div><div><b><span class="Apple-tab-span" style="white-space:pre">                        </span>//Antoni obtenim ID del fill creat per relacionar-ho</b></div>

<div><span class="Apple-tab-span" style="white-space:pre">                        </span><b>$id_related = $new_focus-&gt;id;</b></div><div><b><span class="Apple-tab-span" style="white-space:pre">                        </span>self::save_relation($id, $id_related);</b></div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div></font></span></div><div style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px">

<span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;border-collapse:collapse;color:rgb(31,73,125)"><span style="color:rgb(0,0,0)"><br></span></span></div><div style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px">

<span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;border-collapse:collapse;color:rgb(31,73,125)"><span style="color:rgb(0,0,0)">Then the last hack is in Activity.php </span></span></div><div><span style="border-collapse:collapse;font-size:12px"><font class="Apple-style-span" face="Verdana, Arial, Helvetica, sans-serif"><div>

// Function to unlink all the dependent entities of the given Entity by Id</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>function unlinkDependencies($module, $id) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>global $log;</div>

<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$sql = &#39;DELETE FROM vtiger_activity_reminder WHERE activity_id=?&#39;;</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$this-&gt;db-&gt;pquery($sql, array($id));</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>$sql = &#39;DELETE FROM vtiger_recurringevents WHERE activityid=?&#39;;</div><div>

<span class="Apple-tab-span" style="white-space:pre">                </span>$this-&gt;db-&gt;pquery($sql, array($id));</div><div><span class="Apple-tab-span" style="white-space:pre">                </span></div><div><b><span class="Apple-tab-span" style="white-space:pre">                </span>//Antoni repeats delete</b></div>

<div><b><span class="Apple-tab-span" style="white-space:pre">                </span>$fieldRes = $this-&gt;db-&gt;pquery(&#39;SELECT id_related FROM vtiger_activity_relations  WHERE id=?&#39;, array($id));</b></div><div><b><span class="Apple-tab-span" style="white-space:pre">                </span>$numOfFields = $this-&gt;db-&gt;num_rows($fieldRes);</b></div>

<div><b><span class="Apple-tab-span" style="white-space:pre">                </span>for ($i=0; $i&lt;$numOfFields; $i++) {</b></div><div><b><span class="Apple-tab-span" style="white-space:pre">                        </span>$id_related = $this-&gt;db-&gt;query_result($fieldRes, $i, &#39;id_related&#39;);</b></div>

<div><b><span class="Apple-tab-span" style="white-space:pre">                        </span>$this-&gt;mark_deleted($id_related);</b></div><div><b><span class="Apple-tab-span" style="white-space:pre">                        </span>$this-&gt;unlinkDependencies($module, $id_related);</b></div>

<div><b><span class="Apple-tab-span" style="white-space:pre">                </span>}</b></div><div><span class="Apple-tab-span" style="white-space:pre">                </span><span class="Apple-tab-span" style="white-space:pre">                </span></div><div>

<span class="Apple-tab-span" style="white-space:pre">                </span>parent::unlinkDependencies($module, $id);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div>I tested and works correctly, there is only one important thing to know if you modify a related Task and then go back and modify parent task, the modifications on related task will be lost.</div>

<div><br></div><div>Bests Regards,</div></font></span></div><div style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px"><span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;border-collapse:collapse;color:rgb(31,73,125)"><span style="color:rgb(0,0,0)"><br>

</span></span></div><font class="Apple-style-span" face="Verdana, Arial, Helvetica, sans-serif"><span class="Apple-style-span" style="font-size:12px">Antoni Bertran Bellido</span></font><br><span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;color:rgb(0,0,0)">3&amp;Punt Solucions Informàtiques SLL</span><br>

<span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;color:rgb(0,0,0)">935325991 - 935325992</span><br><span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;color:rgb(0,0,0)">C.Aragó 390, àtic 3</span><br>

<span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;color:rgb(0,0,0)">08013 Barcelona<br><a href="http://www.tresipunt.com" style="color:rgb(0,101,204)" target="_blank">www.tresipunt.com</a><br>Tel        935325991<br>

Mob        677410818<br>Fax        935325992<br><br><span style="font-size:xx-small">Aquest missatge pot contenir informació confidencial, en propietat o legalment protegida i està destinada únicament per l&#39;ús de la persona destinataria. Si vostè no és la persona destinataria d&#39;aquest missatge, per la present se&#39;l comunica que no ha d&#39;emprar, difondre, copiar de cap manera, ni emprendre cap acció en relació amb ella. Si vostè ha rebut aquest missatge per error, per favor li preguem que l&#39;esborri, així com qualsevol còpia del mateix i notifiqui aquest fet al remitent. <br>

 <span><span title="Aquest missatge pot contenir informació confidencial, en propietat o legalment protegida i està destinada únicament per l&#39;ús de la persona destinataria.">Este mensaje puede contener información confidencial, en propiedad o legalmente protegida y está destinada únicamente para el uso de la persona destinataria. </span><span title="Si vostè no és la persona destinataria d&#39;aquest missatge, per la present se&#39;l comunica que no ha d&#39;emprar, difondre, copiar de cap manera, ni emprendre cap acció en relació amb ella.">Si usted no es la persona destinataria de este mensaje, por la presente se le comunica que no tiene que utilizar, difundir, copiar de ninguna manera, ni emprender ninguna acción en relación con ella. </span><span title="Si vostè ha rebut aquest missatge per error, per favor li preguem que l&#39;esborri, així com qualsevol còpia del mateix i notifiqui aquest fet al remitent.">Si usted ha recibido este mensaje por error, por favor le rogamos que lo borre, así como cualquier copia del mismo y notifique este hecho al remitente.</span></span></span></span></span><br>


<br><br><div class="gmail_quote">2011/12/17 Nathalia França <span dir="ltr">&lt;<a href="mailto:nath.campreguer@gmail.com">nath.campreguer@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="gmail_quote"><div>Antoni,</div><div><br></div><div>I&#39;m trying to understand how Calendar module works and it relates to activities somehow. Researching the database i found tables where activities data is saved.</div>



<div>I&#39;m not sure that it&#39;s correct but i&#39;ll tell what i found maybe it will help you.</div><div> </div><div>- Vtiger_activity is the table that keeps data of the main activities. </div><div>- Vtiger_recurringevents is the table that keeps data of the recurring activities(The type of activities that can be repeated are events on Calendar module)</div>



<div><br></div><div>Both tables are related trought activityid column.</div><div><br></div><div>I think the best way to delete and update activities is using the visual mode because that way you won&#39;t corrupt your database. But if you need to delete it in another way search for tables with events, fields and activity on their names. It´s quite easy to understand their relation. </div>



<div><br></div><div><br></div><div>Please send me your progress it will help me too!</div><div>Nathalia Campreguer França</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



---------- Forwarded message ----------<br>From: Antoni Bertran &lt;<a href="mailto:tunyafix@gmail.com" target="_blank">tunyafix@gmail.com</a>&gt;<br>To: <a href="mailto:vtigercrm-developers@lists.vtigercrm.com" target="_blank">vtigercrm-developers@lists.vtigercrm.com</a><br>



Cc: <br>Date: Wed, 14 Dec 2011 11:36:24 +0100<br>Subject: [Vtigercrm-developers] Repeat Activities, vtiger 5.2.1<br><div>Hello! I have a question about Repeat Activities. I will post my questions and my assumption</div><div>



<br></div><div>When I active the Repeat there is any difference between indicate &quot;Until date&quot; or not? If I indicate Until Date then create N activities. If I don&#39;t indicate Until Date I think the reminder doesn&#39;t work correctly.</div>





<div><br></div><div>There is a database_schema but don&#39;t explain for what is using the tables. </div><div><a href="http://wiki.vtiger.com/index.php/Database_schema" target="_blank">http://wiki.vtiger.com/index.php/Database_schema</a> </div>





<div>There is any table to keep the relations between Main Activities and Repeated Activities?</div><div><br></div><div>To delete and update related Activities what have to do?  </div><div><br></div><div>Thanks!</div><div>





<br></div><div>Antoni</div><div><br></div></blockquote></div>
<br>_______________________________________________<br>
<a href="http://www.vtiger.com/" target="_blank">http://www.vtiger.com/</a><br></blockquote></div><br></div>