Regis, não sei se para vc seria uma opção…
Eu desisti de usar grafico Gant no SC…
Estou agora gerando o XML para “openproject” que está 10x melhor que usar Gant pelo SC.
########################
sc_lookup(dataset,“SELECT dbo.tblObra.obra
FROM dbo.PlanilhaOrcamentoTCPO INNER JOIN
dbo.tblObra ON dbo.PlanilhaOrcamentoTCPO.idObra = dbo.tblObra.idObra
WHERE (dbo.PlanilhaOrcamentoTCPO.idObra = {idObra})”);
$_titulo = {dataset[0][0]};
$arquivo = “Orcamento.xml”;//DAMOS UM NOME AO ARQUIVO A SER GERADO
$ponteiro = fopen($arquivo, "w");//CRIA O ARQUIVO E ABRE PARA EDIÇÃO
fwrite($ponteiro, "<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?>");
fwrite($ponteiro, "<Project xmlns='http://schemas.microsoft.com/project'>");
//conteúdo do cabeçado do projeto padrão OPENPROJ E MICROSOFT PROJECT
$conteudo = "<Name>$_titulo</Name>";//Nome do Projeto
$conteudo .= "<Title>$_titulo</Title>";//Título do Projeto
$conteudo .= "<Manager>{engenheiro}</Manager>";//Identifica o Engenheiro Responsável pelo Orçamento
$conteudo .= "<ScheduleFromStart>1</ScheduleFromStart>";//valor estático
$conteudo .= "<StartDate>{data_licitacao}T08:00:00</StartDate>";//Data e Hora inicial
$conteudo .= "<FinishDate>{data_licitacao}T17:00:00</FinishDate>";//Data e Hora final
$conteudo .= "<FYStartDate>1</FYStartDate>";
$conteudo .= "<CriticalSlackLimit>0</CriticalSlackLimit>";
$conteudo .= "<CurrencyDigits>2</CurrencyDigits>";
$conteudo .= "<CurrencySymbol>$</CurrencySymbol>";
$conteudo .= "<CurrencySymbolPosition>0</CurrencySymbolPosition>";
$conteudo .= "<CalendarUID>1</CalendarUID>";
$conteudo .= "<DefaultStartTime>08:00:00</DefaultStartTime>";
$conteudo .= "<DefaultFinishTime>17:00:00</DefaultFinishTime>";
$conteudo .= "<MinutesPerDay>480</MinutesPerDay>";
$conteudo .= "<MinutesPerWeek>2400</MinutesPerWeek>";
$conteudo .= "<DaysPerMonth>20</DaysPerMonth>";
$conteudo .= "<DefaultTaskType>0</DefaultTaskType>";
$conteudo .= "<DefaultFixedCostAccrual>2</DefaultFixedCostAccrual>";
$conteudo .= "<DefaultStandardRate>10</DefaultStandardRate>";
$conteudo .= "<DefaultOvertimeRate>15</DefaultOvertimeRate>";
$conteudo .= "<DurationFormat>7</DurationFormat>";
$conteudo .= "<WorkFormat>2</WorkFormat>";
$conteudo .= "<EditableActualCosts>0</EditableActualCosts>";
$conteudo .= "<HonorConstraints>0</HonorConstraints>";
$conteudo .= "<EarnedValueMethod>0</EarnedValueMethod>";
$conteudo .= "<InsertedProjectsLikeSummary>0</InsertedProjectsLikeSummary>";
$conteudo .= "<MultipleCriticalPaths>0</MultipleCriticalPaths>";
$conteudo .= "<NewTasksEffortDriven>0</NewTasksEffortDriven>";
$conteudo .= "<NewTasksEstimated>1</NewTasksEstimated>";
$conteudo .= "<SplitsInProgressTasks>0</SplitsInProgressTasks>";
$conteudo .= "<SpreadActualCost>0</SpreadActualCost>";
$conteudo .= "<SpreadPercentComplete>0</SpreadPercentComplete>";
$conteudo .= "<TaskUpdatesResource>1</TaskUpdatesResource>";
$conteudo .= "<FiscalYearStart>0</FiscalYearStart>";
$conteudo .= "<WeekStartDay>1</WeekStartDay>";
$conteudo .= "<MoveCompletedEndsBack>0</MoveCompletedEndsBack>";
$conteudo .= "<MoveRemainingStartsBack>0</MoveRemainingStartsBack>";
$conteudo .= "<MoveRemainingStartsForward>0</MoveRemainingStartsForward>";
$conteudo .= "<MoveCompletedEndsForward>0</MoveCompletedEndsForward>";
$conteudo .= "<BaselineForEarnedValue>0</BaselineForEarnedValue>";
$conteudo .= "<AutoAddNewResourcesAndTasks>1</AutoAddNewResourcesAndTasks>";
$conteudo .= "<CurrentDate>{data_criacao}</CurrentDate>";
$conteudo .= "<MicrosoftProjectServerURL>1</MicrosoftProjectServerURL>";
$conteudo .= "<Autolink>1</Autolink>";
$conteudo .= "<NewTaskStartDate>0</NewTaskStartDate>";
$conteudo .= "<DefaultTaskEVMethod>0</DefaultTaskEVMethod>";
$conteudo .= "<ProjectExternallyEdited>0</ProjectExternallyEdited>";
$conteudo .= "<ActualsInSync>0</ActualsInSync>";
$conteudo .= "<RemoveFileProperties>0</RemoveFileProperties>";
$conteudo .= "<AdminProject>0</AdminProject>";
fwrite($ponteiro, $conteudo);
fwrite($ponteiro, “”);
//busca as tarefas
sc_lookup(servicos,“SELECT dbo.tbl_composicao_componente.descricao AS composicao
FROM dbo.DetalheOrcamentoTCPO INNER JOIN
dbo.tbl_composicao_componente ON dbo.DetalheOrcamentoTCPO.cod_compos_compon = dbo.tbl_composicao_componente.cod_compos_compon
WHERE DetalheOrcamentoTCPO.idorcamentotcpo = {idorcamentotcpo}”);
$row = count({servicos});//conta quantas tarefas exitem na planilha
for($x=0;$x<$row;$x++){
$_composicao = {servicos[$x][0]};
$_nivel = $x+1;
$_tarefas = "<Task>";//registra as tarefas
$_tarefas .= "<UID>$_nivel</UID>";
$_tarefas .= "<ID>$_nivel</ID>";
$_tarefas .= "<Name>$_composicao</Name>";
$_tarefas .= "<Type>0</Type>";
$_tarefas .= "<IsNull>0</IsNull>";
$_tarefas .= "<CreateDate>2015-03-09T10:18:00</CreateDate>";
$_tarefas .= "<WBS/>";
$_tarefas .= "<OutlineNumber>$_nivel</OutlineNumber>";
$_tarefas .= "<OutlineLevel>1</OutlineLevel>";
$_tarefas .= "<Priority>500</Priority>";
$_tarefas .= "<Start>{data_licitacao}T08:00:00</Start>";
$_tarefas .= "<Finish>{data_licitacao}T17:00:00</Finish>";
$_tarefas .= "<Duration>PT8H0M0S</Duration>";
$_tarefas .= "<DurationFormat>7</DurationFormat>";
$_tarefas .= "<Work>PT0H0M0S</Work>";
$_tarefas .= "<ResumeValid>0</ResumeValid>";
$_tarefas .= "<EffortDriven>1</EffortDriven>";
$_tarefas .= "<Recurring>0</Recurring>";
$_tarefas .= "<OverAllocated>0</OverAllocated>";
$_tarefas .= "<Estimated>1</Estimated>";
$_tarefas .= "<Milestone>0</Milestone>";
$_tarefas .= "<Summary>0</Summary>";
$_tarefas .= "<Critical>1</Critical>";
$_tarefas .= "<IsSubproject>0</IsSubproject>";
$_tarefas .= "<IsSubprojectReadOnly>0</IsSubprojectReadOnly>";
$_tarefas .= "<ExternalTask>0</ExternalTask>";
$_tarefas .= "<StartVariance>0</StartVariance>";
$_tarefas .= "<FinishVariance>0</FinishVariance>";
$_tarefas .= "<WorkVariance>0</WorkVariance>";
$_tarefas .= "<FreeSlack>0</FreeSlack>";
$_tarefas .= "<TotalSlack>0</TotalSlack>";
$_tarefas .= "<FixedCost>0</FixedCost>";
$_tarefas .= "<FixedCostAccrual>2</FixedCostAccrual>";
$_tarefas .= "<Cost>0</Cost>";
$_tarefas .= "<OvertimeCost>0</OvertimeCost>";
$_tarefas .= "<OvertimeWork>PT0H0M0S</OvertimeWork>";
$_tarefas .= "<ActualDuration>PT0H0M0S</ActualDuration>";
$_tarefas .= "<ActualCost>0</ActualCost>";
$_tarefas .= "<ActualOvertimeCost>0</ActualOvertimeCost>";
$_tarefas .= "<ActualWork>PT0H0M0S</ActualWork>";
$_tarefas .= "<ActualOvertimeWork>PT0H0M0S</ActualOvertimeWork>";
$_tarefas .= "<RegularWork>PT0H0M0S</RegularWork>";
$_tarefas .= "<RemainingDuration>PT8H0M0S</RemainingDuration>";
$_tarefas .= "<RemainingCost>0</RemainingCost>";
$_tarefas .= "<RemainingWork>PT0H0M0S</RemainingWork>";
$_tarefas .= "<RemainingOvertimeCost>0</RemainingOvertimeCost>";
$_tarefas .= "<RemainingOvertimeWork>PT0H0M0S</RemainingOvertimeWork>";
$_tarefas .= "<ACWP>0</ACWP>";
$_tarefas .= "<CV>0</CV>";
$_tarefas .= "<ConstraintType>0</ConstraintType>";
$_tarefas .= "<CalendarUID>-1</CalendarUID>";
$_tarefas .= "<ConstraintDate>{data_licitacao}T00:00:00</ConstraintDate>";
$_tarefas .= "<LevelAssignments>0</LevelAssignments>";
$_tarefas .= "<LevelingCanSplit>0</LevelingCanSplit>";
$_tarefas .= "<LevelingDelay>0</LevelingDelay>";
$_tarefas .= "<LevelingDelayFormat>5</LevelingDelayFormat>";
$_tarefas .= "<IgnoreResourceCalendar>0</IgnoreResourceCalendar>";
$_tarefas .= "<Notes/>";
$_tarefas .= "<HideBar>0</HideBar>";
$_tarefas .= "<Rollup>0</Rollup>";
$_tarefas .= "<BCWS>0</BCWS>";
$_tarefas .= "<BCWP>0</BCWP>";
$_tarefas .= "<EarnedValueMethod>0</EarnedValueMethod>";
$_tarefas .= "<ActualWorkProtected>PT0H0M0S</ActualWorkProtected>";
$_tarefas .= "<ActualOvertimeWorkProtected>PT0H0M0S</ActualOvertimeWorkProtected>";
$_tarefas .= "</Task>";//finaliza o registro de tarefas
fwrite($ponteiro, $_tarefas);//insere todas as tarefas
}
fwrite($ponteiro,"</Tasks>");//encerra a escrita das tarefas
fwrite($ponteiro,"<Resources>");
//busca recursos
sc_lookup(recursos,“SELECT tbl_composicao_componente.descricao, View_lista_mat_servicos.preco
FROM View_lista_mat_servicos INNER JOIN
tbl_composicao_componente ON View_lista_mat_servicos.CP = tbl_composicao_componente.cod_compos_compon
WHERE View_lista_mat_servicos.idorcamentotcpo = {idorcamentotcpo}”);
$rowr = count({recursos});//conta quantos recursos exitem na planilha
for($xr=0;$xr<$rowr;$xr++){
$_item = {recursos[$xr][0]};
$_preco = {recursos[$xr][1]};
$_recursos = "<Resource>";
$_recursos .= "<UID>$xr</UID>";
$_recursos .= "<ID>$xr</ID>";
$_recursos .= "<Name>$_item</Name>";
$_recursos .= "<IsNull>0</IsNull>";
$_recursos .= "<Initials>E</Initials>";
$_recursos .= "<Group/>";
$_recursos .= "<EmailAddress/>";
$_recursos .= "<MaxUnits>0.01000000000000000020816681711721685132943093776702880859375</MaxUnits>";
$_recursos .= "<PeakUnits>1</PeakUnits>";
$_recursos .= "<CanLevel>0</CanLevel>";
$_recursos .= "<AccrueAt>3</AccrueAt>";
$_recursos .= "<Work>PT0H0M0S</Work>";
$_recursos .= "<RegularWork>PT0H0M0S</RegularWork>";
$_recursos .= "<OvertimeWork>PT0H0M0S</OvertimeWork>";
$_recursos .= "<ActualWork>PT0H0M0S</ActualWork>";
$_recursos .= "<RemainingWork>PT0H0M0S</RemainingWork>";
$_recursos .= "<ActualOvertimeWork>PT0H0M0S</ActualOvertimeWork>";
$_recursos .= "<RemainingOvertimeWork>PT0H0M0S</RemainingOvertimeWork>";
$_recursos .= "<StandardRate>0</StandardRate>";
$_recursos .= "<StandardRateFormat>3</StandardRateFormat>";
$_recursos .= "<Cost>$_preco</Cost>";
$_recursos .= "<OvertimeRate>0</OvertimeRate>";
$_recursos .= "<OvertimeRateFormat>3</OvertimeRateFormat>";
$_recursos .= "<OvertimeCost>0</OvertimeCost>";
$_recursos .= "<CostPerUse>0</CostPerUse>";
$_recursos .= "<ActualCost>0</ActualCost>";
$_recursos .= "<ActualOvertimeCost>0</ActualOvertimeCost>";
$_recursos .= "<RemainingCost>0</RemainingCost>";
$_recursos .= "<RemainingOvertimeCost>0</RemainingOvertimeCost>";
$_recursos .= "<WorkVariance>0</WorkVariance>";
$_recursos .= "<CostVariance>0</CostVariance>";
$_recursos .= "<SV>0</SV>";
$_recursos .= "<CV>0</CV>";
$_recursos .= "<ACWP>0</ACWP>";
$_recursos .= "<CalendarUID>18</CalendarUID>";
$_recursos .= "<Notes/>";
$_recursos .= "<BCWS>0</BCWS>";
$_recursos .= "<BCWP>0</BCWP>";
$_recursos .= "<IsGeneric>0</IsGeneric>";
$_recursos .= "<IsInactive>0</IsInactive>";
$_recursos .= "<IsEnterprise>0</IsEnterprise>";
$_recursos .= "<ActualWorkProtected>PT0H0M0S</ActualWorkProtected>";
$_recursos .= "<ActualOvertimeWorkProtected>PT0H0M0S</ActualOvertimeWorkProtected>";
$_recursos .= "</Resource>";
fwrite($ponteiro, $_recursos);
}
fwrite($ponteiro,"</Resources>");
fwrite($ponteiro,"</Project>");//encerra a escrita no arquivo
fclose($ponteiro);//fecha o arquivo