AnsweredAssumed Answered

close all tasks and resources for time entry

Question asked by otahri on Jan 30, 2014
Latest reply on Jan 31, 2014 by Chris Wuenstel

Hi!

I need to clean my old projects, and i have to close all resources , tasks for time entry and set the ETC to 0 for all tasks.

How can i do this by a gelscript-xog ?

here are what i started to do

 

<?xml version="1.0" encoding="UTF-8"?>
<customScript languageCode="gel">
    <scriptText>
        <gel:script
        xmlns:core="jelly:core"
        xmlns:gel="jelly:com.niku.union.gel.GELTagLibrary"
        xmlns:soap="jelly:com.niku.union.gel.SOAPTagLibrary"
        xmlns:soap-env="http://schema.xmlsoap.org/soap/envelope/"
        xmlns:sql="jelly:sql"
        xmlns:xog="http://www.niku.com/xog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        
        <!-- Liste des paramètres -->
                
            <!-- Utilisateur admin -->
            <gel:parameter var="loginClarity" default="111111"/>
            <gel:parameter var="passClarity" default="Password" secure="true"/>
        
            <!-- Serveur Clarity  -->
                <gel:parameter var="hostClarity" default="http://hvmd0103.macif.fr:7000" />
        
            <!-- Connexion à la base de données -->
            <gel:setDataSource dbId="Niku" var="BDD"/>
                                
            <!-- Connexion à Clarity -->
            <gel:log category="XOG" level="info" message="[-] connecting to ${hostClarity}..."/>
            <soap:invoke endpoint="${hostClarity}/niku/xog" var="auth">
                <soap:message>
                    <soap-env:Envelope>
                    <soap-env:Header/>
                        <soap-env:Body>
                            <xog:Login>
                                <xog:Username>${loginClarity}</xog:Username>
                                <xog:Password>${passClarity}</xog:Password>
                            </xog:Login>
                        </soap-env:Body>
                    </soap-env:Envelope>
                </soap:message>
            </soap:invoke>
            <gel:set asString="true" select="$auth//xog:SessionID/text()" var="sessionID"/>
            <core:choose>
                <core:when test="${sessionID == null}">
                    <gel:log level="error" message="[-] Identification error. Please check login and pasword."/>        
                </core:when>
                <core:otherwise>
                    <gel:log category="XOG" level="info" message="Connected to ${hostClarity}"/>
                </core:otherwise>
            </core:choose>        
            
            <sql:query dataSource="${BDD}" var="req">
                
        select inv.id id inv.code code, inv.name name
        from niku.INV_INVESTMENTS inv
        where inv.IS_ACTIVE=1
        and (
                ID in( select prid from niku.INV_PROJECTS where LAST_UPDATED_DATE  between @WHERE:PARAM:USER_DEF:DATE:date_debut@ and @WHERE:PARAM:USER_DEF:DATE:date_fin@)
            and ID in (select tsk.PRPROJECTID from niku.PRTASK tsk where LAST_UPDATED_DATE  between @WHERE:PARAM:USER_DEF:DATE:date_debut@ and @WHERE:PARAM:USER_DEF:DATE:date_fin@)
            and ID in (select eq.PRPROJECTID from niku.PRTEAM eq where LAST_UPDATED_DATE  between @WHERE:PARAM:USER_DEF:DATE:date_debut@ and @WHERE:PARAM:USER_DEF:DATE:date_fin@)
            and ID in (select bsl.PROJECT_ID from niku.PRJ_BASELINES bsl where LAST_UPDATED_DATE  between @WHERE:PARAM:USER_DEF:DATE:date_debut@ and @WHERE:PARAM:USER_DEF:DATE:date_fin@)
            and ID in (
                        
                        select ASSOC_OBJ_ID from niku.CLB_DMS_FOLDERS fd
                        where  ASSOC_OBJ_TYPE='Projects' --and ASSOC_OBJ_ID=5064313
            
                        and LAST_UPDATED_DATE  between @WHERE:PARAM:USER_DEF:DATE:date_debut@ and @WHERE:PARAM:USER_DEF:DATE:date_fin@
                        or fd.id in (select ANCESTOR_ID from niku.CLB_DMS_FLAT_HIERARCHY
                                                         where ANCESTOR_ID=5106730
                                                         and CHILD_ID in
                                                                    (select ID from  niku.CLB_DMS_FOLDERS
                                                                     where  LAST_UPDATED_DATE  between @WHERE:PARAM:USER_DEF:DATE:date_debut@ and @WHERE:PARAM:USER_DEF:DATE:date_fin@)
                                                    
                                    )
                      )
            )
                
                
            </sql:query>
            <core:choose>
            <core:when test="${req.rowCount == 0}">
                <gel:log category="INFO" level="info" message="no project found"/>
            </core:when>            
            <core:otherwise>
                       
                <gel:parse var="XOG_PROJECT">

                <!-- ** Construction OF XOG ** -->
                
                <NikuDataBus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     xsi:noNamespaceSchemaLocation="../xsd/nikuxog_project.xsd">
                      <Header version="6.0.11" action="write" objectType="project" externalSource="NIKU">
                            <args name="include_tasks" value="true"/>
                            <args name="include_dependencies" value="false"/>
                            <args name="include_subprojects" value="false"/>
                            <args name="include_resources" value="true"/>
                            <args name="include_baselines" value="false"/>
                            <args name="include_allocations" value="false"/>
                            <args name="include_estimates" value="true"/>
                            <args name="include_actuals" value="false"/>
                            <args name="include_custom" value="false"/>
                        </Header>
                
                <Projects>
                    <core:forEach items="${req.rows}" trim="true" var="row">
                    
                    <!--** modification **-->
                    <Project
                    name="${row.get('name')}"
                    projectID="${row.get('code')}"
                    active="false" closed="true"
                    openForTimeEntry="false"
                    >    
                        <Resources>
                            <Resource
                            openForTimeEntry="false"  resourceID="?">
                        
                            </Resource>
                        </Resources>
                        <Tasks>
                            <task openForTimeEntry="true" taskID="?">
                                <Assignments>
                                    <TaskLabor  resourceID="?">
                                        <EstCurve>
                                            <Segment  sum="0"/>
                                        </EstCurve>
                                    </TaskLabor>
                                </Assignments>
                            </task>
                        </Tasks>
                        </Project>
                    
                    
                    </core:forEach>    
                    </Projects>    
                    </NikuDataBus>
                </gel:parse>

                
                <gel:log category="XOG" level="info" message="Sending XOG for updating projects"/>
                
                <core:catch var="exception">
                    <soap:invoke endpoint="${hostClarity}/niku/xog" var="output">
                        <soap:message>
                            <soap-env:Envelope>
                                <soap-env:Header>
                                    <xog:Auth>
                                        <xog:SessionID>${sessionID}</xog:SessionID>
                                    </xog:Auth>
                                </soap-env:Header>
                                <soap-env:Body>
                                    <gel:include select="$XOG_PROJECT"/>
                                </soap-env:Body>
                            </soap-env:Envelope>
                        </soap:message>
                    </soap:invoke>
                        
                    <core:set value="0" var="exception"/>
                </core:catch>
                <core:choose>

                    <core:when test="${exception != 0}">
                        <gel:log level="error" message="[-] Error while sending XOG"/>
                        <gel:log category="SOAP" level="info" message="${exception}"/>
                    </core:when>
                    <core:otherwise>
                            <gel:set asString="true" select="$output//XOGOutput/ErrorInformation/Exception/text()"
                            var="DocErrTxt1"/>
                            <gel:set asString="true"
                            select="$output//XOGOutput/Records/Record/ErrorInformation/Exception/text()"
                            var="DocErrTxt2"/>
                            <core:choose>
                                <core:when test="${DocErrTxt1 != null || DocErrTxt2 != null}">
                                        <gel:log category="SOAP" level="error"
                                        message="Error when updating !!"/>
                                        <gel:set asString="true"
                                        select="$output//XOGOutput/Records/Record/ErrorInformation/Description/text()"
                                        var="DescErr"/>
                                        <gel:log category="XOG" level="info"
                                        message="${DescErr}"/>
                                        <gel:log category="XOG" level="info"
                                        message="${DocErrTxt2}"/>
                                        <gel:set
                                        asString="true"
                                        select="$XOG_PROJECT" var="xogIn"/>
                                        <gel:log category="XOG" level="info"
                                        message="${xogIn}"/>
                                    </core:when>
                                <core:otherwise>
                                    <gel:log category="SOAP" level="info"
                                    message="Modification Done !!"/>
                                </core:otherwise>
                            </core:choose>
                    </core:otherwise>
                </core:choose>
                
            </core:otherwise>
            </core:choose>
        </gel:script>        
    </scriptText>
</customScript>

 

how can i replace the '?' by all resources or tasks

 

Outcomes