array(
'name' => t('Proyectos Operativos'),
'description' => '',
'has_title' => TRUE,
'title_label' => 'Nombre del proyecto',
'has_body' => FALSE,
'body_label' => 'Cuerpo',
'module' => 'proyectos_operativos',
),
);
}
/*
* Implementation of hook_form()
*/
function proyectos_operativos_form(&$node, $form_state) {
return node_content_form($node, $form_state);
}
/*
* Implementation of hook_access()
*/
function proyectos_operativos_access($op, $node, $account) {
if ($op == 'view') {
return user_access('ver planificador');
}
if ($op == 'create') {
return user_access('admin planificador');
}
if ($op == 'update') {
return user_access('admin planificador');
}
if ($op == 'delete') {
return user_access('admin planificador');
//return (user_access('admin planificador') || _proyectos_operativos_edita_datos_ae_access($node));
}
}
/*
* Implementation of hook_ente_procesos_alter()
*/
function proyectos_operativos_ente_procesos_alter(&$procesos, $type) {
if ($type == 'status') {
$procesos['proyectos_operativos'] = array(
'title' => t('Proyectos Operativos'),
'description' => t('Definición de Proyectos Direccionales'),
'weight' => -9,
);
}
else {
$procesos['proyectos_operativos_formular'] = array(
'title' => t('Formular Proyectos Operativos'),
'description' => t('Permite agregar, modificar y eliminar los Proyectos Operativos'),
'message' => 'Se podrá registrar y/o modificar las Proyectos Operativos desde %fecha hasta la fecha %fecha1',
'message_expire' => 'Registrar y/o modificar las Proyectos Operativos no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
'weight' => 3,
'proceso' => 'proyectos_operativos',
);
}
}
/*
* Implementation of proyectos_operativos_status_planificacion_proyectos_operativos()
*/
function proyectos_operativos_status_planificacion_proyectos_operativos($ente_planificador, $tipo = 2) {
$datos_proyectos_operativos_status = array();
$tipo_plan = 'proyectos_operativos_formular';
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
$year = variable_get('proyectos_operativos_anho_creacion', 0);
$estado_aprobado = variable_get('proyectos_operativos_state_aprobado', NULL);
$estado_naprobado = variable_get('proyectos_operativos_state_naprobado', NULL);
//se obtienen todos los proyectos agregados que sean diferentes a Cancelados
$cantidad_proyectos = db_fetch_object(db_query("SELECT count(ac.nid) AS cantidad FROM {proyectos_operativos} AS ac INNER JOIN {workflow_node} AS w ON w.nid = ac.nid WHERE ac.ente = %d AND year = %d AND w.sid <> %d", $ente_planificador, $year, $estado_naprobado))->cantidad;
$cantidad_proyectos_aprobados = db_fetch_object(db_query("SELECT count(ac.nid) AS cantidad FROM {proyectos_operativos} AS ac INNER JOIN {workflow_node} AS w ON w.nid = ac.nid WHERE ac.ente = %d AND year = %d AND w.sid = %d", $ente_planificador, $year, $estado_aprobado))->cantidad;
$porc = $cantidad_proyectos != 0 ? ($cantidad_proyectos_aprobados) / $cantidad_proyectos : 0;
//se verifica que exista la planificacion, si existe al menos los datos de familiarizacion fueron ingresados
$datos_proyectos_operativos_status['proyectos_operativos_formular']['value'] = $porc;
$datos_proyectos_operativos_status['proyectos_operativos_formular']['title'] = t('Registrar Proyectos Operativos para el año @year', array('@year' => $year));
$datos_proyectos_operativos_status['proyectos_operativos_formular']['link'] = 'proyectos_operativos';
$datos_proyectos_operativos_status['proyectos_operativos_formular']['mylink'] = 'proyectos_operativos';
$datos_proyectos_operativos_status['proyectos_operativos_formular']['weight'] = -10;
return $datos_proyectos_operativos_status;
}
/**
* Menu access control callback. Determine access to Workflow tab.
*/
function _proyectos_operativos_edita_datos_generales_access($node = NULL) {
$acceso = _proyectos_operativos_access_editar($node);
if (!$acceso) {
return FALSE;
}
return TRUE;
}
/*
* Implementation of hook_nodeapi()
*/
function proyectos_operativos_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
switch ($op) {
case 'insert':
if ($node->type == 'proyectos_operativos') {
$year = variable_get('proyectos_operativos_anho_creacion', 0) ? variable_get('proyectos_operativos_anho_creacion', 0) : date("Y");
db_query('INSERT INTO {proyectos_operativos} (nid, year, ente) VALUES (%d, %d, %d)', $node->nid, $year, $node->field_proyecto_ente[0]['nid']);
}
break;
case 'update':
if ($node->type == 'proyectos_operativos') {
$result = db_query("SELECT ente FROM {proyectos_operativos} WHERE nid = %d", $node->nid);
$proyectos_operativos = db_fetch_array($result);
//print_r($proyectos_operativos);
if ($proyectos_operativos && $proyectos_operativos['ente'] != $node->field_proyecto_ente[0]['nid']){
db_query('update {proyectos_operativos} set ente = %d WHERE nid = %d', $node->field_proyecto_ente[0]['nid'], $node->nid);
}
}
break;
case 'load':
if ($node->type == 'proyectos_operativos') {
$titulo = isset($node->field_proyecto_titulo[0]['value']) && trim($node->field_proyecto_titulo[0]['value']) != '' ? $node->field_proyecto_titulo[0]['value'] : $node->title;
$node->titulo_asignado = $titulo;
$result = db_query("SELECT year FROM {proyectos_operativos} WHERE nid = %d", $node->nid);
if (!($proyectos_operativos = db_fetch_array($result))){
$year = variable_get('proyectos_operativos_anho_creacion', 0) ? variable_get('proyectos_operativos_anho_creacion', 0) : date("Y");
db_query('INSERT INTO {proyectos_operativos} (nid, year, ente) VALUES (%d, %d, %d)', $node->nid, $year, $node->field_proyecto_ente[0]['nid']);
$result = db_query("SELECT year FROM {proyectos_operativos} WHERE nid = %d", $node->nid);
$proyectos_operativos = db_fetch_array($result);
}
$node->anhoproyectos_operativos = $proyectos_operativos['year'];
}
elseif ($node->type == 'accion_especifica') {
$titulo = isset($node->field_accion_titulo[0]['value']) && trim($node->field_accion_titulo[0]['value']) != '' ? $node->field_accion_titulo[0]['value'] : $node->title;
$node->titulo_asignado = $titulo;
}
break;
case 'delete':
//eliminar todas las ae del proyecto
if ($node->type == 'proyectos_operativos') {
foreach($node->field_proyecto_accion_esp as $accion) {
if ($accion['nid']) {
node_delete($accion['nid']);
}
}
db_query('DELETE FROM {proyectos_operativos} WHERE nid = %d', $node->nid);
}
break;
case 'view':
if ($node->type == 'proyectos_operativos') {
module_load_include('inc', 'workflow', 'workflow.pages');
$output = '
' . t('Flujo de Trabajo') . ':
';
$wid = workflow_get_workflow_for_type($node->type);
$states_per_page = variable_get('workflow_states_per_page', 20);
$result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 1 ORDER BY sid");
while ($data = db_fetch_object($result)) {
$states[$data->sid] = check_plain(t($data->state));
}
$deleted_states = array();
$result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 0 ORDER BY sid");
while ($data = db_fetch_object($result)) {
$deleted_states[$data->sid] = check_plain(t($data->state));
}
$current = workflow_node_current_state($node);
// theme_workflow_current_state() must run state through check_plain().
$output .= ''. t('Current state: !state', array('!state' => theme('workflow_current_state', $states[$current]))) . "
\n";
$result = db_query("SELECT h.*, u.name FROM {workflow_node_history} h LEFT JOIN {users} u ON h.uid = u.uid WHERE nid = %d ORDER BY hid DESC", $node->nid);
$rows = array();
while ($history = db_fetch_object($result)) {
if ($history->sid == $current && !isset($deleted_states[$history->sid]) && !isset($current_themed)) {
// Theme the current state differently so it stands out.
$state_name = theme('workflow_current_state', $states[$history->sid]);
// Make a note that we have themed the current state; other times in the history
// of this node where the node was in this state do not need to be specially themed.
$current_themed = TRUE;
}
elseif (isset($deleted_states[$history->sid])) {
// The state has been deleted, but we include it in the history.
$state_name = theme('workflow_deleted_state', $deleted_states[$history->sid]);
$footer_needed = TRUE;
}
else {
// Regular state.
$state_name = check_plain(t($states[$history->sid]));
}
if (isset($deleted_states[$history->old_sid])) {
$old_state_name = theme('workflow_deleted_state', $deleted_states[$history->old_sid]);
$footer_needed = TRUE;
}
else {
$old_state_name = check_plain(t($states[$history->old_sid]));
}
$rows[] = theme('workflow_history_table_row', $history, $old_state_name, $state_name);
}
$output .= theme('workflow_history_table', $rows, !empty($footer_needed));
$node->content['proyectos_operativos_flujo'] = array(
'#value' => $output,
'#weight' => 100,
);
}
elseif ($node->type == 'accion_especifica') {
$node->title = $node->titulo_asignado;
$format_number = array(
'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
);
$ftypes = array(
'value' => t('January'),
'value_1' => t('February'),
'value_2' => t('March'),
'value_3' => t('April'),
'value_4' => t('May'),
'value_5' => t('June'),
'value_6' => t('July'),
'value_7' => t('August'),
'value_8' => t('September'),
'value_9' => t('Octuber'),
'value_10' => t('November'),
'value_11' => t('December'),
);
$proyecto = node_load($node->field_accion_esp_proyecto[0]['nid']);
$field = content_fields('field_accion_esp_programacion', 'accion_especifica');
$tree = taxonomy_get_tree($field['vid']);
$vtid = $field['vtid'];
$partidas = array();
if ($tree) {
foreach ($tree as $term) {
if (isset($vtid[$term->tid])) {
if ($term && module_exists('i18ntaxonomy') && i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) {
$term->name = tt("taxonomy:term:$term->tid:name", $unidad_medida_term->name);
}
$partidas[$term->tid] = $term->name;
}
}
}
$partidas_nodo = array();
foreach ($node->field_accion_esp_programacion as $partida) {
if(!empty($partida['tid'])) {
$partidas_nodo[$partida['tid']] = $partida;
}
}
$output = '';
$output .= '' . t('Distribución por Partidas Presupuestarias (Bs.)') . ' ';
$header = array();
$header[] = array('data' => t('Partidas'));
foreach($ftypes as $id_field => $texto) {
$header[] = array('data' => $texto);
}
$header[] = array('data' => t('TOTAL'));
$rows = array();
$rowsF = array();
$totales = array();
$totalT = 0;
$plant = array();
$sumaplan = 0;
$sumaplanm = array();
foreach($partidas as $tid => $grupo) {
$total = 0;
$total1 = 0;
$row = array();
$row[] = array('data' => $grupo);
foreach($ftypes as $id_field => $texto) {
$min = $partidas_nodo[$tid][$id_field];
if (!isset($plant[$tid])) {
$plant[$tid] = 0;
}
$totalT += $min;
$plant[$tid] += $min;
$total += $min;
$sumaplan += $min;
if (!isset($sumaplanm[$id_field])) {
$sumaplanm[$id_field] = 0;
}
$sumaplanm[$id_field] += $min;
$row[] = array('data' => number_format($min, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), );
}
$row[] = array('data' => number_format($plant[$tid], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), );
if ($plant[$tid] > 0) {
$rows[] = $row;
}
}
$row = array();
$row[] = array('data' => '' . t('TOTAL POR PARTIDAS') . ' ', 'align' => 'right');
foreach($ftypes as $id_field => $texto) {
$row[] = array('data' => '' . number_format($sumaplanm[$id_field], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' ', );
}
$row[] = array('data' => '' . number_format($totalT, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' ', );
$rows[] = $row;
$output .= theme('table', $header, $rows);
$output .= ' ';
$node->content['accion_especifica_partidas_reformulado'] = array(
'#value' => $output,
'#weight' => 101,
);
$output = '';
//financiamiento
$arreglo_financiamiento = array();
$accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4);
for($i = 0; $i < $accion_especifica_number_fields; $i++) {
$arreglo_financiamiento['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_label_' . $i, '') ? variable_get('accion_especifica_financiamiento_label_' . $i, '') : '';
$arreglo_financiamiento_fields['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_options_' . $i, array());
}
$rows = array();
$row = array();
$row1 = array();
$sumalT = 0;
foreach($arreglo_financiamiento as $id_items => $titulo) {
if (variable_get('enable_' . $id_items, false)) {
$sumal = 0;
$output1 = '' . $titulo . ' ';
foreach($arreglo_financiamiento_fields[$id_items] as $id1) {
if ($id1) {
$field = content_fields($id1, 'accion_especifica');
$min = $node->{$id1}[0]['value'];
if (!isset($sumafinm[$id_items])) {
$sumafinm[$id_items] = 0;
}
$sumafinm[$id_items] += $min;
$sumatotalf += $min;
$field = content_fields($id1, 'accion_especifica');
$sumal += $min;
$sumalT += $min;
$output1 .= '' . $field['widget']['label'] . ':
' . '
' . number_format($min, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
' . '
';
}
}
$output1 .= ' ';
$row[] = array('data' => $output1, );
//$row1[] = array('data' => '' . t('SUBTOTAL ') . ': ', 'colspan' => 2, 'align' => 'right');
$row1[] = array('data' => '' . t('SUBTOTAL ') . ': ' . number_format($sumal, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center');
}
}
$rows[] = $row;
$rows[] = $row1;
$row = array();
$cantifuentes = count($arreglo_financiamiento);
$row[] = array('data' => '' . t('TOTAL FUENTES DE FINANCIAMIENTO') . ': ' . '' . number_format($sumalT, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' ', 'colspan' => ($cantifuentes), 'align' => 'center');
//$row[] = array('data' => '' . number_format($sumalT, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' ', );
$rows[] = $row;
$output .= '' . t('Distribución por fuentes de Financiamiento (Bs.)') . ' ' . theme('table', array(), $rows) . ' ';
$node->content['accion_especifica_fuentesfinanc_reformulado'] = array(
'#value' => $output,
'#weight' => 102,
);
$node->content['field_accion_esp_monto_finan']['#weight'] = 106;
$node->content['field_accion_esp_total_fuent']['#weight'] = 107;
$node->content['field_accion_esp_localizacion']['#weight'] = 108;
}
break;
}
}
/**
* Implementation of _proyectos_operativos_edita_datos_indicadores_access()
* Menu access control callback. Determina si un proyecto tiene acceso a indicadores.
*/
function _proyectos_operativos_edita_datos_indicadores_access($node = NULL) {
global $user;
$acceso = _proyectos_operativos_access_editar($node);
if (!$acceso) {
return FALSE;
}
return $node->field_proyecto_og[0]['value'];
}
/**
* Implementation of _proyectos_operativos_edita_datos_ae_access()
* Menu access control callback. Determina si un proyecto tiene acceso a acciones especificas.
*/
function _proyectos_operativos_edita_datos_ae_access($node = NULL) {
global $user;
$acceso = _proyectos_operativos_access_editar($node);
if (!$acceso) {
return FALSE;
}
return $node->field_proyecto_unidadm[0]['value'];
}
/**
* Implementation of _proyectos_operativos_edita_datos_financieros_access()
* Menu access control callback. Determina si un proyecto tiene acceso a los datos financieros.
*/
function _proyectos_operativos_edita_datos_financieros_access($node = NULL) {
if (!_proyectos_operativos_edita_datos_ae_access($node)) {
return FALSE;
}
foreach($node->field_proyecto_accion_esp as $accion) {
if ($accion['nid'] && $nid != $accion['nid']) {
$accion_load = node_load($accion['nid']);
if ($accion_load && $accion_load->type == 'accion_especifica') {
if ($accion_load->field_accion_esp_programacion[0]['tid']) {
foreach($accion_load->field_accion_esp_programacion as $programacion) {
foreach($programacion as $id_value => $mesp){
if ($id_value != 'tid') {
$montos +=$mesp;
}
}
}
}
$acciones_especificas[$accion_load->nid] = $accion_load;
$porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1;
$ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value'];
}
}
elseif($nid = $accion['nid']) {
$acciones_especificas[$ae->nid] = $ae;
}
}
$monto_restante = $node->field_proyecto_monto_anual[0]['value'] - $montos;
$et = 100 - $ejecucion;
return (($monto_restante == 0) && ($et == 0));
}
/**
* Implementation of _proyectos_operativos_ver_datos_wk_access()
* Menu access control callback. Determina si un usuario tiene acceso al flujo de trabajo
*/
function _proyectos_operativos_ver_datos_wk_access($node = NULL) {
return (user_access('ver planificador') && $node->type == 'proyectos_operativos');
}
/**
* Implementation of _proyectos_operativos_ver_datos_wk_access()
* Menu access control callback. Determina si un usuario tiene acceso a editar el flujo de trabajo
*/
/*
function _proyectos_operativos_edita_datos_wk_access($node = NULL) {
global $user;
print "";
print_r($node);
print " ";
$fecha = FALSE;
$ente = usuario_tiene_ente($user->uid);
if ($ente->nid == $ente_planificador->nid) {
$fecha = TRUE;
}
elseif (!user_access('admin planificador')) {
$fecha = FALSE;
}
$accesso = workflow_node_tab_access($node);
return $fecha && $accesso && _proyectos_operativos_edita_datos_financieros_access($node);
}
*/
function _proyectos_operativos_edita_datos_wk_access($node = NULL) {
global $user;
if (!isset($node->field_proyecto_ente[0]['nid'])) {
return FALSE;
}
$fecha = FALSE;
$ente = usuario_tiene_ente($user->uid);
$ente_planificador = ente_planificador_leer_ente_planificadores($node->field_proyecto_ente[0]['nid']);
$children = FALSE;
if (user_access('admin planificador')) {
$fecha = TRUE;
}
elseif ($ente_planificador->nid == $ente->nid) {
$fecha = TRUE;
}
elseif (module_exists('ente_planificador_hierarchical')) {
$fathers = _ente_planificador_hierarchical_get_descbyid($ente_planificador->nid, 1);
$fecha = isset($fathers[$ente->nid]) ? TRUE : FALSE;
}
//print $fecha . "hola";
$accesso = workflow_node_tab_access($node);
//print _proyectos_operativos_edita_datos_financieros_access($node) . "aa";
/*
print "";
print_r($node);
print " ";
*/
return $fecha && $accesso && _proyectos_operativos_edita_datos_financieros_access($node);
}
/**
* Implementation of _proyectos_operativos_edita_datos_agregar()
* Menu access control callback. Determina si un usuario tiene acceso a crear un nuevo proyecto
*/
function _proyectos_operativos_edita_datos_agregar($enteagregar = 0) {
global $user;
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$ente = usuario_tiene_ente($user->uid);
$ente_planificador = 0;
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
elseif (user_access('admin planificador') && $enteagregar) {
$ente_planificador = ente_planificador_leer_ente_planificadores($enteagregar);
}
if (!$ente_planificador) {
return FALSE;
}
if (!variable_get('proyectos_operativos_perm_nuevos', TRUE) && module_exists('ente_planificador_hierarchical')) {
$permiso_padres = FALSE;
$entes_permitidos = variable_get('proyectos_operativos_add_entes', array());
$tam = count($entes_permitidos);
if ($tam && count($ente_planificador->ente_planificador_hierarchical['fathers'])) {
foreach($ente_planificador->ente_planificador_hierarchical['fathers'] as $valor) {
if (isset($valor['nid']) && in_array($valor['nid'], $entes_permitidos)) {
$permiso_padres = TRUE;
}
}
}
if (!$tam && !$permiso_padres) {
return FALSE;
}
if (!isset($entes_permitidos[$ente_planificador->nid]) && !$permiso_padres) {
return FALSE;
}
}
$first_state = 0;
if (!user_access('admin planificador') && module_exists('workflow')) {
$states = _proyectos_operativos_reformula_obtiene_estados();
if ($states['wid']) {
$first_state = _workflow_creation_state($states['wid']);
}
if ($first_state) {
$roles_perm = FALSE;
$roles_allow = variable_get('proyectos_operativos_state_m_' . $first_state, array());
$roles = array_keys($user->roles);
if (count($roles)) {
foreach($roles as $rol) {
if($roles_allow[$rol]) {
$roles_perm = TRUE;
}
elseif ($rol == -1 && $node->uid == $user->uid) {
$roles_perm = TRUE;
}
}
}
if (!$roles_perm) {
return FALSE;
}
}
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
return $mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time;
}
/**
* Implementation of _proyectos_operativos_access_editar()
* Menu access control callback. Determina si un usuario tiene acceso a editar un proyecto
*/
function _proyectos_operativos_access_editar($node) {
global $user;
/* if (module_exists('workflow')) {
$estado_aprobado = variable_get('proyectos_operativos_state_aprobado', NULL);
$estado_naprobado = variable_get('proyectos_operativos_state_naprobado', NULL);
if ($node->_workflow == $estado_aprobado || $node->_workflow == $estado_naprobado) {
return FALSE;
}
}*/
if ($node->anhoproyectos_operativos != variable_get('proyectos_operativos_anho_creacion', 0)) {
return FALSE;
}
$ente_planificador = ente_planificador_leer_ente_planificadores($node->field_proyecto_ente[0]['nid']);
if (!$ente_planificador || !$ente_planificador->nid) {
return FALSE;
}
if (!variable_get('proyectos_operativos_perm_edit', TRUE) && module_exists('ente_planificador_hierarchical')) {
$permiso_padres = FALSE;
$entes_permitidos = variable_get('proyectos_operativos_updt_entes', array());
$tam = count($entes_permitidos);
if ($tam && count($ente_planificador->ente_planificador_hierarchical['fathers'])) {
foreach($ente_planificador->ente_planificador_hierarchical['fathers'] as $valor) {
if (isset($valor['nid']) && in_array($valor['nid'], $entes_permitidos)) {
$permiso_padres = TRUE;
}
}
}
if (!$tam && !$permiso_padres) {
return FALSE;
}
if (!isset($entes_permitidos[$ente_planificador->nid]) && !$permiso_padres) {
return FALSE;
}
}
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$fecha = FALSE;
$ente = usuario_tiene_ente($user->uid);
/*
$children = FALSE;
if (module_exists('ente_planificador_hierarchical')) {
$fathers = _ente_planificador_hierarchical_get_descbyid($ente_planificador->nid,1);
$children = isset($fathers[$ente->nid]) ? TRUE : FALSE;
//$childrens = _ente_planificador_hierarchical_get_descbyid($fathers['nid'], 0);
//$children = isset($childrens[$ente->nid]) ? TRUE : FALSE;
}
if (($ente_planificador->nid != $ente->nid && !$children) && !user_access('admin planificador')) {
return FALSE;
}
*/
if ($ente_planificador->nid != $ente->nid && !user_access('admin planificador')) {
return FALSE;
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if ($fecha) {
if ($ente->nid == $ente_planificador->nid || $children) {
$fecha = TRUE;
}
elseif (!user_access('admin planificador')) {
$fecha = FALSE;
}
}
$roles_perm = TRUE;
if (module_exists('workflow') && $fecha && !user_access('admin planificador')) {
$roles_perm = FALSE;
$roles_allow = variable_get('proyectos_operativos_state_m_' . $node->_workflow, array());
$roles = array_keys($user->roles);
if (count($roles)) {
foreach($roles as $rol) {
if($roles_allow[$rol]) {
$roles_perm = TRUE;
}
elseif ($rol == -1 && $node->uid == $user->uid) {
$roles_perm = TRUE;
}
}
}
}
return $fecha && $roles_perm;
}
/*
* Implementation of hook_menu()
*/
function proyectos_operativos_menu() {
$items = array();
//consultar proyectos operativos
$items['proyectos_operativos'] = array(
'title' => t('Consultar Proyectos Operativos'),
'page callback' => 'proyectos_operativos_search_ac_display',
'access arguments' => array('ver planificador'),
'type' => MENU_NORMAL_ITEM,
);
//editar proyectos operativos (basicos)
$items['proyectosopedit/%proyectosop'] = array(
'title callback' => 'node_page_title',
'title arguments' => array(1),
'page callback' => 'drupal_get_form',
'page arguments' => array('proyectos_operativos_proyecto_basico_form', 1),
'access callback' => '_proyectos_operativos_access_editar',
'access arguments' => array(1),
'type' => MENU_CALLBACK,
);
$items['proyectosopedit/%proyectosop/basicos'] = array(
'title' => t('Datos Básicos'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10
);
//editar proyectos operativos (generales)
$items['proyectosopedit/%proyectosop/generales'] = array(
'title' => t('Datos Generales'),
'page callback' => 'drupal_get_form',
'page arguments' => array('proyectos_operativos_proyecto_generales_form', 1),
'access callback' => '_proyectos_operativos_edita_datos_generales_access',
'access arguments' => array(1),
'weight' => -7,
'type' => MENU_LOCAL_TASK,
);
//editar proyectos operativos (indicadores)
$items['proyectosopedit/%proyectosop/indicadores'] = array(
'title' => t('Indicadores del Proyecto'),
'page callback' => 'drupal_get_form',
'page arguments' => array('proyectos_operativos_proyecto_indicadores_form', 1),
'access callback' => '_proyectos_operativos_edita_datos_indicadores_access',
'access arguments' => array(1),
'weight' => -6,
'type' => MENU_LOCAL_TASK,
);
//editar proyectos operativos (acciones especificas)
$items['proyectosopedit/%proyectosop/ae'] = array(
'title' => t('Acciones Específicas'),
'page callback' => '_proyectos_operativos_proyecto_ae',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_edita_datos_ae_access',
'access arguments' => array(1),
'weight' => -5,
'type' => MENU_LOCAL_TASK,
);
$items['proyectosopedit/%proyectosop/ae/ver'] = array(
'title' => t('Acciones Especificas'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10
);
//editar proyectos operativos (editar acciones especificas)
$items['proyectosopedit/%proyectosop/ae/%accion_especifical/edit'] = array(
'title' => t('Editar'),
'page callback' => '_proyectos_operativos_proyecto_ae',
'page arguments' => array(1, 3),
'access callback' => '_proyectos_operativos_edita_datos_ae_access',
'access arguments' => array(1),
'weight' => -4,
'type' => MENU_LOCAL_TASK,
);
//editar proyectos operativos (borrar acciones especificas)
$items['proyectosopedit/%proyectosop/ae/%accion_especifical/remove'] = array(
'title' => t('Eliminar'),
'page callback' => 'drupal_get_form',
'page arguments' => array('proyectos_operativos_remove_ac_form', 1, 3),
'access callback' => '_proyectos_operativos_edita_datos_ae_access',
'access arguments' => array(1),
'weight' => -4,
'type' => MENU_LOCAL_TASK,
);
//editar proyectos operativos (datos financieros)
$items['proyectosopedit/%proyectosop/finacieros'] = array(
'title' => t('Datos Financieros'),
'page callback' => '_proyectos_operativos_proyecto_financieros',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_edita_datos_financieros_access',
'access arguments' => array(1),
'weight' => -4,
'type' => MENU_LOCAL_TASK,
);
//ver ficha del proyecto
$items['proyectosopedit/%proyectosop/ficha'] = array(
'title' => t('Ficha'),
'page callback' => '_proyectos_operativos_proyecto_ficha_proyecto',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_edita_datos_financieros_access',
'access arguments' => array(1),
'weight' => -3,
'type' => MENU_LOCAL_TASK,
);
//consulta proyecto operativo
$items['proyectosopedit/%proyectosop/ver'] = array(
'title' => 'Consultar',
'page callback' => '_proyectos_operativos_proyecto_regresa_ver',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_ver_datos_wk_access',
'access arguments' => array(1),
'type' => MENU_LOCAL_TASK
);
//agregar proyecto operativo
$items['agregarproyectosop'] = array(
'title' => t('Agregar Proyecto'),
'page callback' => '_proyectos_operativos_proyecto_agregar_proyecto',
'access callback' => '_proyectos_operativos_edita_datos_agregar',
'weight' => -7,
'type' => MENU_NORMAL_ITEM,
);
$items['agregarproyectosop/%'] = array(
'title' => t('Agregar Proyecto'),
'page callback' => '_proyectos_operativos_proyecto_agregar_proyecto',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_edita_datos_agregar',
'access arguments' => array(1),
'weight' => -7,
'type' => MENU_NORMAL_ITEM,
);
//configuracion proyectos operativos
$items['agregar_proyectoopente'] = array(
'title' => t('Agregar Proyectos Operativos por ente'),
'page callback' => 'proyectos_operativos_agregar_proyectoente',
'access arguments' => array('admin planificador'),
'weight' => -6,
'type' => MENU_NORMAL_ITEM,
);
//consulta proyecto operativo
$items['proyectosop/%proyectosop'] = array(
'title' => t('Ver'),
'page callback' => '_proyectos_operativos_proyecto_campos',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_ver_datos_wk_access',
'access arguments' => array(1),
'weight' => -7,
'type' => MENU_CALLBACK,
);
$items['proyectosop/%proyectosop/ver'] = array(
'title' => t('Ver'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10
);
$items['proyectosop/%proyectosop/ficha'] = array(
'title' => t('Ficha'),
'page callback' => '_proyectos_operativos_proyecto_ficha_proyecto',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_ver_datos_wk_access',
'access arguments' => array(1),
'weight' => -6,
'type' => MENU_LOCAL_TASK,
);
//consulta proyecto operativo (accion especificas)
$items['proyectosop/%proyectosop/ae'] = array(
'title' => t('Acciones Especificas'),
'page callback' => '_list_proyectos_operativos_proyecto_ae',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_ver_datos_wk_access',
'access arguments' => array(1),
'weight' => -5,
'type' => MENU_LOCAL_TASK,
);
$items['proyectosop/%proyectosop/ae/%accion_especifical/ver'] = array(
'title' => t('Consultar Acción Específica'),
'page callback' => 'node_view',
'page arguments' => array(3),
'access callback' => '_proyectos_operativos_ver_datos_wk_access',
'access arguments' => array(1),
'weight' => -4,
'type' => MENU_LOCAL_TASK,
);
//editar proyectos operativos (borrar acciones especificas)
$items['proyectosop/%proyectosop/ae/%accion_especifical/remove'] = array(
'title' => t('Eliminar'),
'page callback' => 'drupal_get_form',
'page arguments' => array('proyectos_operativos_remove_ac_form', 1, 3),
'access callback' => '_proyectos_operativos_edita_datos_ae_access',
'access arguments' => array(1),
'weight' => -4,
'type' => MENU_CALLBACK,
);
//consulta proyecto operativo (datos financieros)
$items['proyectosop/%proyectosop/finacieros'] = array(
'title' => t('Datos Financieros'),
'page callback' => '_proyectos_operativos_proyecto_financieros',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_ver_datos_wk_access',
'access arguments' => array(1),
'weight' => -4,
'type' => MENU_LOCAL_TASK,
);
//consulta proyecto operativo (flujo de trabajo)
$items['proyectosop/%proyectosop/workflow'] = array(
'title' => t('Workflow'),
'page callback' => '_proyectos_operativos_proyecto_ver_workflow',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_edita_datos_wk_access',
'access arguments' => array(1),
'weight' => -4,
'type' => MENU_LOCAL_TASK,
);
//editar proyecto operativo
$items['proyectosop/%proyectosop/edit'] = array(
'title' => t('Edit'),
'page callback' => '_proyectos_operativos_proyecto_editar',
'page arguments' => array(1),
'access callback' => '_proyectos_operativos_access_editar',
'access arguments' => array(1),
'weight' => -3,
'type' => MENU_LOCAL_TASK,
);
//editar proyecto operativo
$items['proyectosop/%proyectosop/remove'] = array(
'title' => t('Eliminar'),
'page callback' => 'drupal_get_form',
'page arguments' => array('proyectos_operativos_remove_proyectosop_form', 1),
'access callback' => '_proyectos_operativos_access_editar',
'access arguments' => array(1),
'weight' => -3,
'type' => MENU_LOCAL_TASK,
);
//configuracion proyectos operativos
$items['admin/settings/ente_planificador/proyectos_operativos'] = array(
'title' => t('Proyectos Operativos'),
'page callback' => 'drupal_get_form',
'page arguments' => array('proyectos_operativos_admin_settings'),
'access arguments' => array('admin planificador'),
'weight' => -6,
'type' => MENU_LOCAL_TASK,
'file' => 'proyectos_operativos.admin.inc',
);
$items['admin/settings/ente_planificador/proyectos_operativos/configurar'] = array(
'title' => t('Configurar'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10
);
if (module_exists('workflow')) {
//configuracion proyectos operativos
$items['admin/settings/ente_planificador/proyectos_operativos/worflow'] = array(
'title' => t('Workflow'),
'page callback' => 'drupal_get_form',
'page arguments' => array('proyectos_operativos_admin_workflow_settings'),
'access arguments' => array('admin planificador'),
'weight' => -6,
'type' => MENU_LOCAL_TASK,
'file' => 'proyectos_operativos.admin.inc',
);
}
$items['proyectos_operativos_proyecto_generales_agrega_talento_js_util'] = array(
'title' => 'JS utilities',
'page callback' => 'proyectos_operativos_proyecto_generales_agrega_talento_js_util',
'access arguments' => array('ver planificador'),
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Implementation of _proyectos_operativos_proyecto_financieros().
* Ver datos financieros (proyectos operativos).
*/
function _proyectos_operativos_proyecto_ficha_proyecto($proyecto = 0) {
drupal_set_title(t('Ficha del Proyecto'));
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
if ($node->nid) {
$breadcrumb[] = l(check_plain($node->title), 'proyectosop/' . $node->nid);
}
$breadcrumb[] = t('Ficha del Proyecto');
drupal_set_breadcrumb($breadcrumb);
return theme('proyectos_operativos_ficha_proyecto', $proyecto);
}
/*
* proyectos_operativos_proyecto_generales_agrega_talento_js_util
* Generates AJAX responses of talento humano
*/
function proyectos_operativos_proyecto_generales_agrega_talento_js_util($tipo) {
$arreglov['talento'] = array(
'field_proyecto_institucionth' => 'field_proyecto_institucionth',
'field_proyecto_nombres_a' => 'field_proyecto_nombres_a',
'field_proyecto_cargo_th' => 'field_proyecto_cargo_th',
'field_proyecto_rol_th' => 'field_proyecto_rol_th',
'field_proyecto_esfuerzo' => 'field_proyecto_esfuerzo',
'field_proyecto_formacion' => 'field_proyecto_formacion',
);
$arreglov['capacidades'] = array(
'field_proyecto_institucion_alc' => 'field_proyecto_institucion_alc',
'field_proyecto_infraestructura' => 'field_proyecto_infraestructura',
'field_proyecto_equipos' => 'field_proyecto_equipos',
'field_proyecto_insumos' => 'field_proyecto_insumos',
'field_proyectos_servicios' => 'field_proyectos_servicios',
);
$arreglov['beneficiario'] = array(
'field_proyecto_beneficiario' => 'field_proyecto_beneficiario',
'field_proyectos_masculino_d' => 'field_proyectos_masculino_d',
'field_proyectos_femenino_d' => 'field_proyectos_femenino_d',
);
if (variable_get('proyectos_operativos_muestra_beneficiarios_indirectos', TRUE)) {
$arreglov['beneficiario']['field_proyectos_masculino_i'] = 'field_proyectos_masculino_i';
$arreglov['beneficiario']['field_proyectos_femenino_i'] = 'field_proyectos_femenino_i';
}
if (array_key_exists($tipo, $arreglov)) {
$arreglo = $arreglov[$tipo];
}
else {
drupal_not_found();
}
$cantidad = intval($_POST['cantidad_' . $tipo]) > 0 ? intval($_POST['cantidad_' . $tipo]) : 0;
$form_state = array('submitted' => FALSE);
$form_build_id = $_POST['form_build_id'];
// Add the new element to the stored form. Without adding the element to the
// form, Drupal is not aware of this new elements existence and will not
// process it. We retreive the cached form, add the element, and resave.
$form = form_get_cache($form_build_id, $form_state);
$node_type = content_types('proyectos_operativos');
$fields = $node_type['fields'];
foreach($arreglo as $field_id => $field) {
$fields_extra_form1[] = $field_id;
$prefixC .= '' . $fields[$field_id]['widget']['label'] . ' ';
}
$format_number = array(
'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
);
// $sumas = array();
$cantidad++;
$texto_1_aux = $tipo == 'talento' ? 'talento-humano' : $tipo;
if ($tipo == 'talento' || $tipo == 'capacidades') {
for ($i = 0; $i < $cantidad; $i++) {
$prefix = '';
if ($i == 0) {
$prefix = '' . $prefixC . ' ';
}
else {
$prefix .= ' ';
}
$aux = '';
$aui = '';
foreach($arreglo as $field_id => $field) {
$new_form[$field_id . '_' . $i] = array(
'#type' => 'textfield',
'#size' => 18,
'#maxlength' => 255,
'#prefix' => $prefix,
'#suffix' => ' ',
);
if ($field_id == 'field_proyecto_esfuerzo') {
$new_form[$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',);
}
$aux = $field_id;
$aui = $i;
$prefix = '';
$form[$tipo][$field_id . '_' . $i] = $new_form[$field_id . '_' . $i];
}
$new_form[$aux . '_' . $aui]['#suffix'] .= ' ';
$form[$tipo][$aux . '_' . $aui] = $new_form[$aux . '_' . $aui];
}
$new_form[$aux . '_' . $aui]['#suffix'] .= '
';
$form[$tipo][$aux . '_' . $aui] = $new_form[$aux . '_' . $aui];
$new_form['cantidad_' . $tipo] = array('#type' => 'hidden', '#value' => $cantidad, '#suffix' => '
');
unset($form[$tipo]['cantidad_' . $tipo]);
$form[$tipo]['cantidad_' . $tipo] = $new_form['cantidad_' . $tipo];
}
elseif($tipo == 'beneficiario') {
$prefixC .= '' . t('Total') . ' ';
$vid = variable_get('proyectos_operativos_extra_bene', 0);
//$terms = taxonomy_get_tree($vid);
$tree = taxonomy_get_tree($vid);
$options = array();
$options[''] = t('Seleccionar');
if ($tree) {
foreach ($tree as $term) {
$options[$term->name] = $term->name;
}
}
for ($i = 0; $i < $cantidad; $i++) {
$subtotal = 0;
$prefix = '';
if ($i == 0) {
$prefix = '' . $prefixC . ' ';
}
else {
$prefix .= ' ';
}
$aux = '';
$aui = '';
foreach($arreglo as $field_id => $field) {
//$field_id1 = 'edit-' . str_replace('_', '-', $field_id . '_' . $i);
$_POST[$field_id . '_' . $i] = str_replace($format_number['dec_point'], '', $_POST[$field_id . '_' . $i]);
$valor = intval($_POST[$field_id . '_' . $i]) > 0 ? intval($_POST[$field_id . '_' . $i]) : 0;
if ($field_id == 'field_proyecto_beneficiario') {
$new_form[$field_id . '_' . $i] = array(
'#type' => 'select',
'#default_value' => $valor,
'#options' => $options,
'#prefix' => $prefix,
'#suffix' => ' ',
);
}
else {
$new_form[$field_id . '_' . $i] = array(
'#type' => 'textfield',
'#default_value' => $valor,
'#size' => 10,
'#maxlength' => 255,
'#prefix' => $prefix,
'#suffix' => '',
);
}
if ($field_id != 'field_proyecto_beneficiario') {
if (!isset($total_arreglo[$field_id])) {
$total_arreglo[$field_id] = 0;
}
$subtotal += (int) $valor;
$totales += (int) $valor;
$total_arreglo[$field_id] += (int) $valor;
$sumas['beneficiarios']['beneficiario_' . $i] = 'beneficiario_' . $i;
$new_form[$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',);
$new_form[$field_id . '_' . $i]['#attributes'] = array('class' => 'number beneficiario_' . $i . ' todosbeneficiarios beneficiarios_' . $field_id, 'onchange' => "sumabeneficiario('beneficiario_$i');sumabeneficiario('todosbeneficiarios');sumabeneficiario('beneficiarios_$field_id');");
$form[$tipo][$field_id . '_' . $i] = $new_form[$field_id . '_' . $i];
}
$aux = $field_id;
$aui = $i;
$prefix = '';
$form[$tipo][$field_id . '_' . $i] = $new_form[$field_id . '_' . $i];
}
$new_form[$aux . '_' . $aui]['#suffix'] .= ' ' . number_format($subtotal, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
';
$new_form[$aux . '_' . $aui]['#suffix'] .= ' ';
$form[$tipo][$aux . '_' . $aui] = $new_form[$aux . '_' . $aui];
}
$new_form[$aux . '_' . $aui]['#suffix'] .= '' . t('TOTAL') . ' ';
foreach($arreglo as $field_id => $field) {
if ($field_id != 'field_proyecto_beneficiario') {
$sumas['beneficiarios']['beneficiarios_' . $field_id] = 'beneficiarios_' . $field_id;
$new_form[$aux . '_' . $aui]['#suffix'] .= '' . $total_arreglo[$field_id] . '
';
$form[$tipo][$aux . '_' . $aui] = $new_form[$aux . '_' . $aui];
}
}
$sumas['beneficiarios']['todosbeneficiarios'] = 'todosbeneficiarios';
$sumas['beneficiarios']['empleos_generados'] = 'empleos_generados';
$new_form[$aux . '_' . $aui]['#suffix'] .= '' . $totales . '
';
$new_form[$aux . '_' . $aui]['#suffix'] .= '
';
$form[$tipo][$aux . '_' . $aui] = $new_form[$aux . '_' . $aui];
unset($form[$tipo]['cantidad_' . $tipo]);
$new_form['cantidad_' . $tipo] = array('#type' => 'hidden', '#value' => $cantidad, '#suffix' => '
');
$form[$tipo]['cantidad_' . $tipo] = $new_form['cantidad_' . $tipo];
}
//$form[$tipo] = $new_form;
form_set_cache($form_build_id, $form, $form_state);
$form += array(
'#post' => $_POST,
'#programmed' => FALSE,
);
// Rebuild the form.
$form = form_builder($_POST['form_id'], $form, $form_state);
// Render the new output.
$new_form = array();
$prefix = '';
for ($i = 0; $i < $cantidad; $i++) {
if ($i == 0) {
$prefix = '' . $prefixC . ' ';
}
foreach($arreglo as $field_id => $field) {
$new_form[$field_id . '_' . $i] = $form[$tipo][$field_id . '_' . $i];
if ($prefix != '') {
$new_form[$field_id . '_' . $i]['#prefix'] = $prefix;
}
$prefix = '';
$aux = $field_id;
$aui = $i;
$new_form[$aux . '_' . $aui] = $form[$tipo][$aux . '_' . $aui];
}
$new_form[$aux . '_' . $aui] = $form[$tipo][$aux . '_' . $aui];
}
$new_form[$aux . '_' . $aui] = $form[$tipo][$aux . '_' . $aui];
foreach($arreglo as $field_id => $field) {
if ($field_id != 'field_proyecto_beneficiario') {
$new_form[$aux . '_' . $aui] = $form[$tipo][$aux . '_' . $aui];
}
}
$new_form['cantidad_' . $tipo] = $form[$tipo]['cantidad_' . $tipo];
unset($new_form['cantidad_' . $tipo]['#suffix']);
unset($new_form['#prefix'], $new_form['#suffix']); // Prevent duplicate wrappers.
//unset($new_form['agrega_' . $tipo]);
$output = drupal_render($new_form);
drupal_add_js($sumas, 'setting');
$output .= drupal_get_js();
print drupal_to_js(array('data' => $output, 'status' => true));
exit();
}
/*
function proyectos_operativos_proyecto_generales_agrega_talento_js_util($tipo) {
$arreglov['talento'] = array(
'field_proyecto_institucionth' => 'field_proyecto_institucionth',
'field_proyecto_nombres_a' => 'field_proyecto_nombres_a',
'field_proyecto_cargo_th' => 'field_proyecto_cargo_th',
'field_proyecto_rol_th' => 'field_proyecto_rol_th',
'field_proyecto_esfuerzo' => 'field_proyecto_esfuerzo',
'field_proyecto_formacion' => 'field_proyecto_formacion',
);
$arreglov['capacidades'] = array(
'field_proyecto_institucion_alc' => 'field_proyecto_institucion_alc',
'field_proyecto_infraestructura' => 'field_proyecto_infraestructura',
'field_proyecto_equipos' => 'field_proyecto_equipos',
'field_proyecto_insumos' => 'field_proyecto_insumos',
'field_proyectos_servicios' => 'field_proyectos_servicios',
);
$arreglov['beneficiario'] = array(
'field_proyecto_beneficiario' => 'field_proyecto_beneficiario',
'field_proyectos_masculino_d' => 'field_proyectos_masculino_d',
'field_proyectos_femenino_d' => 'field_proyectos_femenino_d',
'field_proyectos_masculino_i' => 'field_proyectos_masculino_i',
'field_proyectos_femenino_i' => 'field_proyectos_femenino_i',
);
if (array_key_exists($tipo, $arreglov)) {
$arreglo = $arreglov[$tipo];
}
else {
drupal_not_found();
}
$cantidad = intval($_POST['cantidad_' . $tipo]) > 0 ? intval($_POST['cantidad_' . $tipo]) : 0;
$form_state = array('submitted' => FALSE);
$form_build_id = $_POST['form_build_id'];
// Add the new element to the stored form. Without adding the element to the
// form, Drupal is not aware of this new elements existence and will not
// process it. We retreive the cached form, add the element, and resave.
$form = form_get_cache($form_build_id, $form_state);
$node_type = content_types('proyectos_operativos');
$fields = $node_type['fields'];
foreach($arreglo as $field_id => $field) {
$fields_extra_form1[] = $field_id;
$prefixC .= ' ' . $fields[$field_id]['widget']['label'] . ' ';
}
$cantidad++;
if ($tipo == 'talento' || $tipo == 'capacidades') {
for ($i = 0; $i < $cantidad; $i++) {
$prefix = '';
if ($i == 0) {
$prefix = '' . $prefixC . ' ';
}
else {
$prefix .= ' ';
}
$aux = '';
$aui = '';
foreach($arreglo as $field_id => $field) {
$new_form[$field_id . '_' . $i] = array(
'#type' => 'textfield',
'#size' => 10,
'#maxlength' => 255,
'#prefix' => $prefix,
'#suffix' => ' ',
);
if ($field_id == 'field_proyecto_esfuerzo') {
$form[$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',);
}
$aux = $field_id;
$aui = $i;
$prefix = '';
}
$new_form[$aux . '_' . $aui]['#suffix'] .= ' ';
}
$new_form[$aux . '_' . $aui]['#suffix'] .= '
';
$new_form['cantidad_' . $tipo] = array('#type' => 'hidden', '#value' => $cantidad);
}
elseif($tipo == 'beneficiario') {
$prefixC .= '' . t('Total') . ' ';
$vid = variable_get('proyectos_operativos_extra_bene', 0);
//$terms = taxonomy_get_tree($vid);
$tree = taxonomy_get_tree($vid);
$options = array();
$options[''] = t('Seleccionar');
if ($tree) {
foreach ($tree as $term) {
$options[$term->name] = $term->name;
}
}
for ($i = 0; $i < $cantidad; $i++) {
$subtotal = 0;
$prefix = '';
if ($i == 0) {
$prefix = '' . $prefixC . ' ';
}
else {
$prefix .= ' ';
}
$aux = '';
$aui = '';
foreach($arreglo as $field_id => $field) {
$_POST[$field_id . '_' . $i] = str_replace('.', '', $_POST[$field_id . '_' . $i]);
$valor = intval($_POST[$field_id . '_' . $i]) > 0 ? intval($field_id . '_' . $i) : 0;
if ($field_id == 'field_proyecto_beneficiario') {
$new_form[$field_id . '_' . $i] = array(
'#type' => 'select',
'#default_value' => $valor,
'#options' => $options,
'#prefix' => $prefix,
'#suffix' => ' ',
);
}
else {
$new_form[$field_id . '_' . $i] = array(
'#type' => 'textfield',
'#default_value' => $valor,
'#size' => 10,
'#maxlength' => 255,
'#prefix' => $prefix,
'#suffix' => '',
);
}
if ($field_id != 'field_proyecto_beneficiario') {
if (!isset($total_arreglo[$field_id])) {
$total_arreglo[$field_id] = 0;
}
$subtotal += (int) $valor;
$totales += (int) $valor;
$total_arreglo[$field_id] += (int) $valor;
$sumas['beneficiarios']['beneficiario_' . $i] = 'beneficiario_' . $i;
$new_form[$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',);
$new_form[$field_id . '_' . $i]['#attributes'] = array('class' => 'number beneficiario_' . $i . ' todosbeneficiarios beneficiarios_' . $field_id, 'onchange' => "sumabeneficiario('beneficiario_$i');sumabeneficiario('todosbeneficiarios');sumabeneficiario('beneficiarios_$field_id');");
}
$aux = $field_id;
$aui = $i;
$prefix = '';
}
$new_form[$aux . '_' . $aui]['#suffix'] .= ' ' . $subtotal . '
';
$new_form[$aux . '_' . $aui]['#suffix'] .= ' ';
}
$new_form[$aux . '_' . $aui]['#suffix'] .= '' . t('TOTAL') . ' ';
foreach($arreglo as $field_id => $field) {
if ($field_id != 'field_proyecto_beneficiario') {
$sumas['beneficiarios']['beneficiarios_' . $field_id] = 'beneficiarios_' . $field_id;
$new_form[$aux . '_' . $aui]['#suffix'] .= '' . $total_arreglo[$field_id] . '
';
}
}
$sumas['beneficiarios']['todosbeneficiarios'] = 'todosbeneficiarios';
$sumas['beneficiarios']['empleos_generados'] = 'empleos_generados';
$new_form[$aux . '_' . $aui]['#suffix'] .= '' . $totales . '
';
$new_form[$aux . '_' . $aui]['#suffix'] .= '
';
$new_form['cantidad_' . $tipo] = array('#type' => 'hidden', '#value' => $cantidad);
}
$form[$tipo] = $new_form;
form_set_cache($form_build_id, $form, $form_state);
$form += array(
'#post' => $_POST,
'#programmed' => FALSE,
);
// Rebuild the form.
$form = form_builder($_POST['form_id'], $form, $form_state);
// Render the new output.
$new_form = $form[$tipo];
unset($new_form['#prefix'], $new_form['#suffix']); // Prevent duplicate wrappers.
$output = drupal_render($new_form);
print drupal_to_js(array('data' => $output, 'status' => true));
exit();
}
*/
/**
* Implementation of proyectos_operativos_remove_ac_form()
* Eliminar accion especifica
*/
function proyectos_operativos_remove_ac_form($form_state, $node = 0, $ac = 0) {
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
if ($proyecto->nid) {
$breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid);
}
if ($ac->nid) {
$breadcrumb[] = check_plain($ac->titulo_asignado);
}
drupal_set_breadcrumb($breadcrumb);
$form = array();
$form['#node'] = $node;
//print "";print_r($form['#node']);print " ";
$form['#ac'] = $ac;
$message = t('Esta seguro de eliminar la acción especifica @nombre?', array('@nombre' => $ac->titulo_asignado));
$caption = ''. t('This action cannot be undone.') .'
';
$return_path = $_REQUEST['destination'] ? $_REQUEST['destination'] : 'proyectosopedit/' . $node->nid . '/ae';
return confirm_form($form, $message, $return_path, $caption, t('Eliminar'));
}
/**
* Implementation of proyectos_operativos_remove_ac_form_submit().
* Process funcion delete accion especifica.
*/
function proyectos_operativos_remove_ac_form_submit($form, &$form_state) {
global $user;
$titulo = $form['#$ac']->titulo_asignado;
$nid = $form['#ac']->nid;
node_delete($form['#ac']->nid);
$accion_esp = array();
$proyecto = $form['#node'];
foreach($proyecto->field_proyecto_accion_esp as $ac) {
if ($ac['nid'] != $nid) {
$accion_esp[] = array('nid' => $ac['nid']);
}
}
$proyecto->field_proyecto_accion_esp = $accion_esp;
$proyecto->revision = 1;
$texto = t('Se elimino la acción especifica @nombre', array('@nombre' => $ac->titulo_asignado));
$proyecto->log = $texto;
//print "";print_r($proyecto);print " ";
//juan();
//drupal_set_message("". print_r($proyecto, 1). " ");
node_save($proyecto);
drupal_set_message($texto);
if (!$_REQUEST['destination']) {
// add redirect
$form_state['redirect'] = 'proyectosopedit/' . $form['#node']->nid . '/ae';
}
}
/*
* hook_form_alter()
*/
function proyectos_operativos_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'proyectos_operativos_proyecto_basico_form' && !user_access('admin planificador')) {
//$form['field_proyecto_ente']['#pre_render'][] = 'proyectos_operativos_nodereference_field_pre_render';
}
if ($form_id == 'proyectos_operativos_proyecto_generales_form') {
//$form['field_proyecto_relacion']['#pre_render'][] = 'proyectos_operativos_nodereference2_field_pre_render';
$arreglo = array(
'field_proyecto_emdirecto' => 'field_proyecto_emdirecto',
'field_proyecto_efdirecto' => 'field_proyecto_efdirecto',
'field_proyecto_emindirecto' => 'field_proyecto_emindirecto',
'field_proyecto_efindirecto' => 'field_proyecto_efindirecto',
);
foreach($arreglo as $id) {
$form[$id]['#pre_render'][] = 'proyectos_operativos_agregaclase_field_pre_render';
}
}
if ($form_id == 'workflow_tab_form') {
if ($form['node']['#value']->type == 'proyectos_operativos') {
$nombre = check_plain((t($form['#wf']->name)));
$current = $form['node']['#value']->_workflow;
$actual = $form['workflow'][$nombre]['#options'][$current];
if (!isset($form_state['storage']['confirma'])) {
unset($form['#submit']);
$form['#submit'] = array();
$form['#submit'][] = 'proyectos_operativos_cambia_redirect_paso_submit';
$form['submit']['#value'] = 'Enviar';
}
elseif ($form_state['storage']['confirma']) {
$new_submit = array();
$new_submit[] = 'proyectos_operativos_cambia_redirect_paso2_submit';
if (is_array($form['#submit'])) {
foreach($form['#submit'] as $name) {
$new_submit[] = $name;
}
}
$new_submit[] = 'proyectos_operativos_cambia_redirect_submit';
$form['#submit'] = $new_submit;
$form['workflow']['#access'] = FALSE;
$form['submit']['#access'] = FALSE;
$proyecto = $form['node']['#value'];
$choices = workflow_field_choices($proyecto);
$next = $form_state['storage']['page_one_values']['workflow'];
$description = '' . t('Esta seguro de cambiar el proyecto "@titulo"del estado (@current) al estado (@next)', array('@titulo' => $proyecto->title, '@next' => $choices[$next], '@current' => $actual)) . '
';
$description .= t('This action cannot be undone.');
$path = 'proyectosop/' . $proyecto->nid;
$cancel = l(t('Cancel'), $path);
// Confirm form fails duplication check, as the form values rarely change -- so skip it.
$form['#skip_duplicate_check'] = TRUE;
$form['#attributes'] = array('class' => 'confirmation');
$form['description'] = array('#value' => $description);
$form[$name] = array('#type' => 'hidden', '#value' => 1);
$form['actions'] = array('#prefix' => '', '#suffix' => '
');
$form['actions']['submit'] = array('#type' => 'submit', '#value' => $yes ? $yes : t('Confirm'));
$form['actions']['cancel'] = array('#value' => $cancel);
$form['#theme'] = 'confirm_form';
}
unset($form['workflow'][$nombre]['#options'][$current]);
$form['#proyectos_operativos_states_d'] = array();
$options_worflow = $form['workflow'][$nombre]['#options'];
if ($options_worflow) {
foreach($options_worflow as $sid => $state) {
if (variable_get('proyectos_operativos_state_d_' . $current . '_' . $sid, FALSE)) {
$form['#proyectos_operativos_states_d'][$sid] = $sid;
$form['workflow'][$nombre]['#options'][$sid] = t(variable_get('proyectos_operativos_state_tdevueltos', 'Devuelto a @state'), array('@state' => $form['workflow'][$nombre]['#options'][$sid]));
}
else {
$form['workflow'][$nombre]['#options'][$sid] = t(variable_get('proyectos_operativos_state_tndevueltos', 'Enviado a @state'), array('@state' => $form['workflow'][$nombre]['#options'][$sid]));
}
}
}
$form['#validate'][] = 'proyectos_operativos_cambia_workflow_description_validate';
}
}
if ($form_id == 'proyectos_operativos_proyecto_indicadores_form') {
$form['field_proyecto_meta_m']['#pre_render'][] = 'proyectos_operativos_agregaclase_indicadores_field_pre_render';
$form['field_proyecto_meta_f']['#pre_render'][] = 'proyectos_operativos_agregaclase_indicadores_field_pre_render';
}
}
/**
* Implementation of proyectos_operativos_cambia_workflow_description_validate.
* valida si el estado se devuelve se debe ingresar un comentario.
*/
function proyectos_operativos_cambia_workflow_description_validate($form, &$form_state) {
$new_state = $form_state['values']['workflow'];
if (isset($form['#proyectos_operativos_states_d'][$new_state]) && trim($form_state['values']['workflow_comment'] == '')) {
form_set_error('workflow_comment', t('Debe ingresar el motivo por el que se regresa el proyecto'));
}
}
/**
* Implementation of proyectos_operativos_cambia_redirect_paso_submit.
* almacena los valores del formulario y reenvia al formulario de confirmar.
*/
function proyectos_operativos_cambia_redirect_paso_submit($form, &$form_state) {
$form_state['storage']['confirma'] = TRUE;
$form_state['storage']['page_one_values'] = $form_state['values'];
$form_state['rebuild'] = TRUE;
}
/**
* Implementation of proyectos_operativos_cambia_redirect_paso2_submit.
* envia el formulario normalmente.
*/
function proyectos_operativos_cambia_redirect_paso2_submit($form, &$form_state) {
$form_state['values'] = $form_state['storage']['page_one_values'];
unset($form_state['storage']['page_one_values']);
unset($form_state['storage']['confirma']);
}
/*
* Implementation of proyectos_operativos_agregaclase_field_pre_render()
* agregar clases y funciones javascript en el formulario
*/
function proyectos_operativos_agregaclase_field_pre_render($element) {
$element[0]['value']['#attributes']['class'] .= ' empleos_generados';
$element[0]['value']['#attributes']['onchange'] .= ";sumabeneficiario('empleos_generados');";
return $element;
}
/*
* Implementation of proyectos_operativos_agregaclase_indicadores_field_pre_render()
* agregar clases y funciones javascript en el formulario
*/
function proyectos_operativos_agregaclase_indicadores_field_pre_render($element) {
$element[0]['value']['#attributes']['class'] .= ' unidad_personas';
$element[0]['value']['#attributes']['onchange'] .= ";sumunidpersonas('unidad_personas');";
return $element;
}
/*
* Implementation of proyectos_operativos_nodereference_field_pre_render()
* Limitar al formulario a los entes que le es posible a los usuarios
*/
function proyectos_operativos_nodereference_field_pre_render($element) {
global $user;
$ente = usuario_tiene_ente($user->uid);
if ($ente) {
if (count($element['nid']['nid']['#options'])) {
foreach($element['nid']['nid']['#options'] as $id => $entes){
if ($ente->nid != $id) {
unset($element['nid']['nid']['#options'][$id]);
}
}
}
}
return $element;
}
/*
* Implementation of proyectos_operativos_nodereference2_field_pre_render()
* Limitar al formulario a los entes que le es posible a los usuarios
*/
function proyectos_operativos_nodereference2_field_pre_render($element) {
global $user;
if (!((user_access('edit all planificador'))||(user_access('admin planificador')))) {
$entes = obtener_mis_ente_planificador($user->uid);
$options = array();
if (count($entes)) {
foreach($entes as $ente){
unset($element['nid']['nid']['#options'][$ente['nid']]);
}
}
}
return $element;
}
/**
* proyectos_operativos_cambia_redirect_submit.
* retorna a consultar proyecto cuando se actualiza el estado del proyecto.
*/
function proyectos_operativos_cambia_redirect_submit($form, &$form_state) {
// The entire node object was stashed in the form.
$node = $form_state['values']['node'];
$form_state['redirect'] = 'proyectosop/' . $node->nid;
$choices = workflow_field_choices($form_state['values']['node']);
drupal_set_message(t('Proyecto enviado a "#usuario".', array('#usuario' => $choices[$node->workflow])));
//drupal_set_message(t('Se modifico el estado del proyecto.'));
}
/**
* Implementation of _proyectos_operativos_proyecto_regresa_ver().
* retorna a consultar proyecto.
*/
function _proyectos_operativos_proyecto_regresa_ver($node) {
drupal_goto('proyectosop/' . $node->nid);
}
/**
* Implementation of _proyectos_operativos_proyecto_editar().
* retorna a editar proyecto.
*/
function _proyectos_operativos_proyecto_editar($node) {
drupal_goto('proyectosopedit/' . $node->nid);
}
/**
* Implementation of _list_proyectos_operativos_proyecto_ae().
* listar acciones especificas de un proyecto.
*/
function _list_proyectos_operativos_proyecto_ae($node) {
global $user;
drupal_set_title('Consultar Acciones Específicas');
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
if ($node->nid) {
$breadcrumb[] = l(check_plain($node->title), 'proyectosop/' . $node->nid);
}
$breadcrumb[] = t('Acciones Específicas');
drupal_set_breadcrumb($breadcrumb);
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$fecha = FALSE;
$ente = usuario_tiene_ente($user->uid);
$ente_planificador = 0;
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!fecha) {
muestra_mensaje($tipo_plan, $ente_planificador);
}
if ($fecha && $ente->nid) {
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
foreach($node->field_proyecto_accion_esp as $accion) {
if ($accion['nid'] && $nid != $accion['nid']) {
$accion_load = node_load($accion['nid']);
if ($accion_load && $accion_load->type == 'accion_especifica') {
$acciones_especificas[$accion_load->nid] = $accion_load;
$ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value'];
}
}
elseif($nid = $accion['nid']) {
$acciones_especificas[$ae->nid] = $ae;
}
}
$output = '';
$header = array();
$cab = 6;
$header[] = array('data' => t('Nro'));
$header[] = array('data' => t('Nombre'));
$header[] = array('data' => t('Fecha de inicio'));
$header[] = array('data' => t('Fecha de Fin'));
$header[] = array('data' => t('%'));
$header[] = array('data' => t('Acción'));
$rows = array();
$i = 1;
if (count($acciones_especificas)) {
$suma = 0;
foreach($acciones_especificas as $accion) {
$row = array();
$row[] = array('data' => $i,);
$row[] = array('data' => $accion->titulo_asignado,);
//Se cambia el formato de la fecha
$fecha = explode(' ', $accion->field_accion_esp_fechai[0]['value']);
$formato = explode('-', $fecha[0]);
$row[] = array('data' => $formato[2] . '/' . $formato[1] . '/' . $formato[0],);
//Se cambia el formato de la fecha
$fecha = explode(' ', $accion->field_accion_esp_fechaf[0]['value']);
$formato = explode('-', $fecha[0]);
$row[] = array('data' => $formato[2] . '/' . $formato[1] . '/' . $formato[0],);
$suma += $accion->field_accion_esp_ponderacion[0]['value'];
$row[] = array('data' => $accion->field_accion_esp_ponderacion[0]['value'],);
$links = array();
$links[] = array(
'data' => l(t('Consultar Acción específica'), 'proyectosop/' . $node->nid . '/ae/' . $accion->nid . '/ver'),
'class' => 'proyectos-operativos-acciones_especificas-pdf',
);
if (_proyectos_operativos_edita_datos_ae_access($node)){
$links[] = array(
'data' => l(t('Eliminar Acción específica'), 'proyectosop/' . $node->nid . '/ae/' . $accion->nid . '/remove', array('query' => array('destination' => 'proyectosop/' . $node->nid . '/ae'))),
'class' => 'proyectos-operativos-acciones_especificas-pdf',
);
}
drupal_alter('proyecto_accion_obtiene_links', $links, $node, $accion, $fecha);
$row[] = array('data' => theme('item_list', $links),);
$rows[] = $row;
$i++;
}
}
if (count($rows)) {
$output .= theme('table', $header, $rows);
}
else {
$output .= t('No existen acciones especifícas para este proyecto');
}
return $output;
}
/**
* Implementation of _proyectos_operativos_proyecto_ver_workflow().
* cambiar estado del flujo de trabajo.
*/
function _proyectos_operativos_proyecto_ver_workflow($node){
global $user;
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
if ($node->nid) {
$breadcrumb[] = l(check_plain($node->title), 'proyectosop/' . $node->nid);
}
if (arg(0) == 'proyectosop' && arg(1) == $node->nid && arg(2) == 'workflow') {
$output = drupal_set_title('') . '' . t('Revisión del Proyecto') . ' ' . ' ';
}
$breadcrumb[] = t('Flujo de Trabajo');
drupal_set_breadcrumb($breadcrumb);
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$fecha = FALSE;
$ente = usuario_tiene_ente($user->uid);
$ente_planificador = 0;
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje($tipo_plan, $ente_planificador);
}
if ($fecha && $ente->nid) {
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
module_load_include('inc', 'workflow', 'workflow.pages');
$wid = workflow_get_workflow_for_type($node->type);
$states_per_page = variable_get('workflow_states_per_page', 20);
$result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 1 ORDER BY sid");
while ($data = db_fetch_object($result)) {
$states[$data->sid] = check_plain(t($data->state));
}
$deleted_states = array();
$result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 0 ORDER BY sid");
while ($data = db_fetch_object($result)) {
$deleted_states[$data->sid] = check_plain(t($data->state));
}
$current = workflow_node_current_state($node);
// theme_workflow_current_state() must run state through check_plain().
$output .= ''. t('Current state: !state', array('!state' => theme('workflow_current_state', $states[$current]))) . "
\n";
unset($states[$current]);
//$output .= '' . t('Historico del Flujo de Trabajo') . ':
';
$wid = workflow_get_workflow_for_type($node->type);
$states_per_page = variable_get('workflow_states_per_page', 20);
$result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 1 ORDER BY sid");
while ($data = db_fetch_object($result)) {
$states[$data->sid] = check_plain(t($data->state));
}
$deleted_states = array();
$result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 0 ORDER BY sid");
while ($data = db_fetch_object($result)) {
$deleted_states[$data->sid] = check_plain(t($data->state));
}
$current = workflow_node_current_state($node);
// theme_workflow_current_state() must run state through check_plain().
//$output .= ''. t('Current state: !state', array('!state' => theme('workflow_current_state', $states[$current]))) . "
\n";
$result = db_query("SELECT h.*, u.name FROM {workflow_node_history} h LEFT JOIN {users} u ON h.uid = u.uid WHERE nid = %d ORDER BY hid DESC", $node->nid);
$rows = array();
while ($history = db_fetch_object($result)) {
if ($history->sid == $current && !isset($deleted_states[$history->sid]) && !isset($current_themed)) {
// Theme the current state differently so it stands out.
$state_name = theme('workflow_current_state', $states[$history->sid]);
// Make a note that we have themed the current state; other times in the history
// of this node where the node was in this state do not need to be specially themed.
$current_themed = TRUE;
}
elseif (isset($deleted_states[$history->sid])) {
// The state has been deleted, but we include it in the history.
$state_name = theme('workflow_deleted_state', $deleted_states[$history->sid]);
$footer_needed = TRUE;
}
else {
// Regular state.
$state_name = check_plain(t($states[$history->sid]));
}
if (isset($deleted_states[$history->old_sid])) {
$old_state_name = theme('workflow_deleted_state', $deleted_states[$history->old_sid]);
$footer_needed = TRUE;
}
else {
$old_state_name = check_plain(t($states[$history->old_sid]));
}
$rows[] = theme('workflow_history_table_row', $history, $old_state_name, $state_name);
}
if (count($states)) {
$output .= drupal_get_form('workflow_tab_form', $node, $wid, $states, $current);
}
$output .= theme('workflow_history_table', $rows, !empty($footer_needed));
return $output;
}
/**
* Implementation of proyectos_operativos_proyecto_genera_campos_form().
* Formulario con todos los campos disponibles en el proyecto.
*/
function proyectos_operativos_proyecto_genera_campos_form(&$form_state, $node = 0) {
global $user;
$form = array();
$form['#node'] = $node;
$node_type = content_types('proyectos_operativos');
$fields = $node_type['fields'];
//$campos = array();
//DATOS BASICOS
//Datos Básicos de Identificación del Proyecto
$title_combos = array();
$title_combos['db']['title'] = t('Datos Básicos');
$arreglo['db']['identificacion'] = array();
$arreglo['db']['identificacion'] = array(
'title' => t('Nombre del Proyecto'),
'field_proyecto_codigo' => 'field_proyecto_codigo',
'field_proyecto_fecha_i' => 'field_proyecto_fecha_i',
'field_proyecto_fecha_f' => 'field_proyecto_fecha_f',
'field_proyecto_status' => 'field_proyecto_status',
'field_proyecto_situacion_p' => 'field_proyecto_situacion_p',
'field_proyecto_plurianual' => 'field_proyecto_plurianual',
'field_proyecto_monto_anual' => 'field_proyecto_monto_anual',
'field_proyecto_esp_monto_finan' => 'field_proyecto_esp_monto_finan',
'field_proyecto_esp_total_fuent' => 'field_proyecto_esp_total_fuent',
'field_proyecto_monto_ant' => 'field_proyecto_monto_ant',
'field_proyecto_total' => 'field_proyecto_total',
'field_proyecto_monto_prox' => 'field_proyecto_monto_prox',
'field_proyecto_poan' => 'field_proyecto_poan',
);
$title_combos['db']['identificacion']['title'] = t('Datos Básicos de Identificación del Proyecto');
//Gerente del Proyecto
$gerentes = variable_get('proyectos_operativos_muestra_gerentes', TRUE);
$arreglo['db']['gerentep'] = array();
$arreglo['db']['gerentep'] = array(
'field_proyecto_ente' => 'field_proyecto_ente',
);
if ($gerentes) {
$arreglo['db']['gerentep'] = array(
'field_proyecto_autoridad' => 'field_proyecto_autoridad',
'field_proyecto_lider' => 'field_proyecto_lider',
'field_proyecto_unidad_a' => 'field_proyecto_unidad_a',
'field_proyecto_cargo' => 'field_proyecto_cargo',
'field_proyecto_telefono' => 'field_proyecto_telefono',
'field_proyecto_correo' => 'field_proyecto_correo',
);
$title_combos['db']['gerentep']['title'] = t('Gerente del Proyecto');
}
//Área Estrategica
$pndes = variable_get('proyectos_operativos_muestra_pndes', TRUE);
$mcti = variable_get('proyectos_operativos_muestra_mcti', TRUE);
$arreglo['db']['areae'] = array();
if ($pndes) {
$arreglo['db']['areae']['field_proyecto_pndes'] = 'field_proyecto_pndes';
}
if ($mcti) {
$arreglo['db']['areae']['field_proyecto_mcti'] = 'field_proyecto_mcti';
}
$title_combos['db']['areae']['title'] = t('Área Estratégica');
//DATOS GENERALES
$title_combos['dg']['title'] = t('Datos Generales');
//Clasificación Sectorial
$arreglo['dg']['sector'] = array();
$arreglo['dg']['sector'] = array(
'field_proyecto_sector' => 'field_proyecto_sector',
);
$title_combos['dg']['sector']['title'] = t('Clasificación Sectorial');
//Talento Humano
$arreglo['dg']['talentoh'] = array();
if (variable_get('proyectos_operativos_muestra_talento', TRUE)) {
$arreglo['dg']['talentoh'] = array(
'field_proyecto_institucionth' => 'field_proyecto_institucionth',
'field_proyecto_nombres_a' => 'field_proyecto_nombres_a',
'field_proyecto_cargo_th' => 'field_proyecto_cargo_th',
'field_proyecto_rol_th' => 'field_proyecto_rol_th',
'field_proyecto_esfuerzo' => 'field_proyecto_esfuerzo',
'field_proyecto_formacion' => 'field_proyecto_formacion',
);
}
$title_combos['dg']['talentoh']['title'] = t('Talento Humano');
//Capacidades
$arreglo['dg']['capacidades'] = array();
if (variable_get('proyectos_operativos_muestra_capacidades', TRUE)) {
$arreglo['dg']['capacidades'] = array(
'field_proyecto_institucion_alc' => 'field_proyecto_institucion_alc',
'field_proyecto_infraestructura' => 'field_proyecto_infraestructura',
'field_proyecto_equipos' => 'field_proyecto_equipos',
'field_proyecto_insumos' => 'field_proyecto_insumos',
'field_proyectos_servicios' => 'field_proyectos_servicios',
);
}
$title_combos['dg']['capacidades']['title'] = t('Capacidades');
//Instituciones
$arreglo['dg']['relacion'] = array();
$arreglo['dg']['relacion'] = array(
'field_proyecto_relacion' => 'field_proyecto_relacion',
);
$title_combos['dg']['relacion']['title'] = t('Instituciones');
//Empleos Generados
$arreglo['dg']['empleosg'] = array();
if (variable_get('proyectos_operativos_muestra_beneficiario', TRUE)) {
$arreglo['dg']['empleosg'] = array(
'field_proyecto_emdirecto' => 'field_proyecto_emdirecto',
'field_proyecto_efdirecto' => 'field_proyecto_efdirecto',
);
if (variable_get('proyectos_operativos_muestra_beneficiarios_indirectos', TRUE)) {
$arreglo['dg']['empleosg']['field_proyecto_emindirecto'] = 'field_proyecto_emindirecto';
$arreglo['dg']['empleosg']['field_proyecto_efindirecto'] = 'field_proyecto_efindirecto';
}
}
$title_combos['dg']['empleosg']['title'] = t('Empleos Generados');
//Objetivos del Proyecto
$title_combos['dg']['objetivosp']['title'] = t('Objetivos del Proyecto');
$arreglo['dg']['objetivosp'] = array();
$arreglo['dg']['objetivosp'] = array(
'field_proyecto_og' => 'field_proyecto_og',
'field_proyecto_oe' => 'field_proyecto_oe',
);
//INDICADORES DEL PROYECTO
//Enunciado del Problema
$title_combos['ip']['title'] = t('Indicadores del Proyecto');
$arreglo['ip']['enunciadop'] = array();
if (variable_get('proyectos_operativos_muestra_enunciado_problema', TRUE)) {
$arreglo['ip']['enunciadop'] = array(
'field_proyecto_causas' => 'field_proyecto_causas',
'field_proyecto_problemas' => 'field_proyecto_problemas',
'field_proyecto_consecuencias' => 'field_proyecto_consecuencias',
);
}
$title_combos['ip']['enunciadop']['title'] = t('Enunciado del Problema');
//Justificación del Proyecto
$arreglo['ip']['justificacion'] = array();
if (variable_get('proyectos_operativos_muestra_justicacion', TRUE)) {
$arreglo['ip']['justificacion'] = array(
'field_proyecto_justificacion' => 'field_proyecto_justificacion',
);
}
$title_combos['ip']['justificacion']['title'] = t('Justificación del Proyecto');
//Alcance del Proyecto
$arreglo['ip']['alcance'] = array();
if (variable_get('proyectos_operativos_muestra_alcance', TRUE)) {
$arreglo['ip']['alcance'] = array(
'field_proyecto_alcance' => 'field_proyecto_alcance',
);
}
$title_combos['ip']['alcance']['title'] = t('Alcance del Proyecto');
//Situación Actual del Proyecto
$arreglo['ip']['situaciona'] = array();
if (variable_get('proyectos_operativos_muestra_sa', TRUE)) {
$arreglo['ip']['situaciona'] = array(
'field_proyecto_sa_descripcion' => 'field_proyecto_sa_descripcion',
);
if (variable_get('proyectos_operativos_muestra_sa_cuantificacion', TRUE)) {
$arreglo['ip']['situaciona']['field_proyecto_sa_cuantificacion'] = 'field_proyecto_sa_cuantificacion';
}
$arreglo['ip']['situaciona']['field_proyecto_sa_formulai'] = 'field_proyecto_sa_formulai';
$arreglo['ip']['situaciona']['field_proyecto_sa_fuentei'] = 'field_proyecto_sa_fuentei';
$arreglo['ip']['situaciona']['field_proyecto_sa_fecha'] = 'field_proyecto_sa_fecha';
}
$title_combos['ip']['situaciona']['title'] = t('Situación Actual');
//Situación Objetivo
$arreglo['ip']['situaciono'] = array();
if (variable_get('proyectos_operativos_muestra_so', TRUE)) {
$arreglo['ip']['situaciono'] = array(
'field_proyecto_so_descripcion' => 'field_proyecto_so_descripcion',
'field_proyecto_tiempoi' => 'field_proyecto_tiempoi',
);
}
$title_combos['ip']['situaciono']['title'] = t('Situación Objetivo');
//Indicador del resultado del Proyecto
$arreglo['ip']['resultadop'] = array();
$arreglo['ip']['resultadop'] = array(
'field_proyecto_descripcion_bien' => 'field_proyecto_descripcion_bien',
//'field_proyecto_so_cuantificacion' => 'field_proyecto_so_cuantificacion',
'field_proyecto_unidadm' => 'field_proyecto_unidadm',
'field_proyecto_meta_m' => 'field_proyecto_meta_m',
'field_proyecto_meta_f' => 'field_proyecto_meta_f',
'field_proyecto_meta_fisica' => 'field_proyecto_meta_fisica',
);
$title_combos['ip']['resultadop']['title'] = t('Indicador del resultado del Proyecto');
if (!isset($form_state['storage']['confirma'])) {
$campos['todos-los-campos'] = t('Mostrar todos los campos');
//$campos['title'] = t('Nombre del Proyecto');
if (count($fields)) {
foreach($fields as $id => $field) {
if (!$field['display_settings']['full']['exclude']) {
//DATOS BASICOS DEL PROYECTO
//Datos Básicos de Identificación del Proyecto
if (array_key_exists($id, $arreglo['db']['identificacion'])) {
$arreglo['db']['identificacion'][$id] = $field['widget']['label'];
}
//Gerente del Proyecto
elseif(array_key_exists($id, $arreglo['db']['gerentep'])) {
$arreglo['db']['gerentep'][$id] = $field['widget']['label'];
}
//Área Estrategica
elseif(array_key_exists($id, $arreglo['db']['areae'])) {
$arreglo['db']['areae'][$id] = $field['widget']['label'];
}
//DATOS GENERALES
//Clasificación Sectorial
elseif(array_key_exists($id, $arreglo['dg']['sector'])) {
$arreglo['dg']['sector'][$id] = $field['widget']['label'];
}
//Talento Humano
elseif(array_key_exists($id, $arreglo['dg']['talentoh'])) {
$arreglo['dg']['talentoh'][$id] = $field['widget']['label'];
}
//Capacidades
elseif(array_key_exists($id, $arreglo['dg']['capacidades'])) {
$arreglo['dg']['capacidades'][$id] = $field['widget']['label'];
}
//Instituciones
elseif(array_key_exists($id, $arreglo['dg']['relacion'])) {
$arreglo['dg']['relacion'][$id] = $field['widget']['label'];
}
//Empleos Generados
elseif(array_key_exists($id, $arreglo['dg']['empleosg'])) {
$arreglo['dg']['empleosg'][$id] = $field['widget']['label'];
}
//Objetivos del Proyecto
elseif(array_key_exists($id, $arreglo['dg']['objetivosp'])) {
$arreglo['dg']['objetivosp'][$id] = $field['widget']['label'];
}
//INDICADORES DEL PROYECTO
//Enunciado del Problema
elseif(array_key_exists($id, $arreglo['ip']['enunciadop'])) {
$arreglo['ip']['enunciadop'][$id] = $field['widget']['label'];
}
//Justificación del Proyecto
elseif(array_key_exists($id, $arreglo['ip']['justificacion'])) {
$arreglo['ip']['justificacion'][$id] = $field['widget']['label'];
}
//Alcance del Proyecto
elseif(array_key_exists($id, $arreglo['ip']['alcance'])) {
$arreglo['ip']['alcance'][$id] = $field['widget']['label'];
}
//Situación Actual del Proyecto
elseif(array_key_exists($id, $arreglo['ip']['situaciona'])) {
$arreglo['ip']['situaciona'][$id] = $field['widget']['label'];
}
//Situación Objetivo
elseif(array_key_exists($id, $arreglo['ip']['situaciono'])) {
$arreglo['ip']['situaciono'][$id] = $field['widget']['label'];
}
//Indicador del resultado del Proyecto
elseif(array_key_exists($id, $arreglo['ip']['resultadop'])) {
$arreglo['ip']['resultadop'][$id] = $field['widget']['label'];
}
//DATOS BASICOS DEL PROYECTO
//Datos Básicos de Identificación del Proyecto
elseif (variable_get('proyectos_operativos_ac_d_' . $id, FALSE)) {
$arreglo['db']['identificacion'][$id] = $field['widget']['label'];
}
//Gerente del Proyecto
elseif (variable_get('proyectos_operativos_ac_di_' . $id, FALSE)) {
$arreglo['db']['gerentep'][$id] = $field['widget']['label'];
}
//Área Estrategica
elseif (variable_get('proyectos_operativos_ac_p_' . $id, FALSE)) {
$arreglo['db']['areae'][$id] = $field['widget']['label'];
}
//DATOS GENERALES
//Clasificación Sectorial
elseif (variable_get('proyectos_operativos_dg_s_' . $id, FALSE)) {
$arreglo['dg']['sector'][$id] = $field['widget']['label'];
}
//Instituciones
elseif (variable_get('proyectos_operativos_dg_r_' . $id, FALSE)) {
$arreglo['dg']['relacion'][$id] = $field['widget']['label'];
}
//Objetivos del Proyecto
elseif (variable_get('proyectos_operativos_dg_o_' . $id, FALSE)) {
$arreglo['dg']['objetivosp'][$id] = $field['widget']['label'];
}
//Enunciado del Problema
elseif (variable_get('proyectos_operativos_ip_in_' . $id, FALSE)) {
$arreglo['ip']['enunciadop'][$id] = $field['widget']['label'];
}
//Alcance del Proyecto
elseif (variable_get('proyectos_operativos_ip_al_' . $id, FALSE)) {
$arreglo['ip']['alcance'][$id] = $field['widget']['label'];
}
//Justificación del Proyecto
elseif (variable_get('proyectos_operativos_ip_ju_' . $id, FALSE)) {
$arreglo['ip']['justificacion'][$id] = $field['widget']['label'];
}
//Situación Actual del Proyecto
elseif (variable_get('proyectos_operativos_ip_sa_' . $id, FALSE)) {
$arreglo['ip']['situaciona'][$id] = $field['widget']['label'];
}
//Situación Objetivo
elseif (variable_get('proyectos_operativos_ip_so_' . $id, FALSE)) {
$arreglo['ip']['situaciono'][$id] = $field['widget']['label'];
}
//Indicador del resultado del Proyecto
elseif (variable_get('proyectos_operativos_ip_re_' . $id, FALSE)) {
$arreglo['ip']['resultadop'][$id] = $field['widget']['label'];
}
//$campos[$id] = $field['widget']['label'];
}
//DATOS BASICOS DEL PROYECTO
//Datos Básicos de Identificación del Proyecto
elseif (array_key_exists($id, $arreglo['db']['identificacion'])) {
unset($arreglo['db']['identificacion'][$id]);
}
//Gerente del Proyecto
elseif (array_key_exists($id, $arreglo['db']['gerentep'])) {
unset($arreglo['db']['gerentep'][$id]);
}
//Área Estrategica
elseif (array_key_exists($id, $arreglo['db']['areae'])) {
unset($arreglo['db']['areae'][$id]);
}
//DATOS GENERALES
//Clasificación Sectorial
elseif (array_key_exists($id, $arreglo['dg']['sector'])) {
unset($arreglo['dg']['sector'][$id]);
}
//Talento Humano
elseif (array_key_exists($id, $arreglo['dg']['talentoh'])) {
unset($arreglo['dg']['talentoh'][$id]);
}
//Capacidades
elseif (array_key_exists($id, $arreglo['dg']['capacidades'])) {
unset($arreglo['dg']['capacidades'][$id]);
}
//Instituciones
elseif (array_key_exists($id, $arreglo['dg']['relacion'])) {
unset($arreglo['dg']['relacion'][$id]);
}
//Empleos Generados
elseif (array_key_exists($id, $arreglo['dg']['empleosg'])) {
unset($arreglo['dg']['empleosg'][$id]);
}
//Objetivos del Proyecto
elseif (array_key_exists($id, $arreglo['dg']['objetivosp'])) {
unset($arreglo['dg']['objetivosp'][$id]);
}
//INDICADORES DEL PROYECTO
//Enunciado del Problema
elseif (array_key_exists($id, $arreglo['ip']['enunciadop'])) {
unset($arreglo['ip']['enunciadop'][$id]);
}
//Justificación del Proyecto
elseif (array_key_exists($id, $arreglo['ip']['justificacion'])) {
unset($arreglo['ip']['justificacion'][$id]);
}
//Alcance del Proyecto
elseif (array_key_exists($id, $arreglo['ip']['alcance'])) {
unset($arreglo['ip']['alcance'][$id]);
}
//Situación Actual del Proyecto
elseif (array_key_exists($id, $arreglo['ip']['situaciona'])) {
unset($arreglo['ip']['situaciona'][$id]);
}
//Situación Objetivo
elseif (array_key_exists($id, $arreglo['ip']['situaciono'])) {
unset($arreglo['ip']['situaciono'][$id]);
}
//Indicador del resultado del Proyecto
elseif (array_key_exists($id, $arreglo['ip']['resultadop'])) {
unset($arreglo['ip']['resultadop'][$id]);
}
}
}
//$campos['proyectos_operativos_flujo'] = t('Flujo de Trabajo');
//DATOS BASICOS DEL PROYECTO
$identificacion = count($arreglo['db']['identificacion']);
$gerentep = count($arreglo['db']['gerentep']);
$areae = count($arreglo['db']['areae']);
if ($identificacion || $gerentep || $areae) {
$form['db'] = array(
'#type' => 'fieldset',
'#title' => t('Datos Básicos'),
);
}
if ($identificacion) {
$form['db']['identificacion'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['db']['identificacion'],
'#default_value' => array(),
'#title' => t('Datos Básicos de Identificación del Proyecto'),
'#multiple' => TRUE,
);
}
if ($gerentep) {
$form['db']['gerentep'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['db']['gerentep'],
'#default_value' => array(),
'#title' => t('Gerente del Proyecto'),
'#multiple' => TRUE,
);
}
if ($areae) {
$form['db']['areae'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['db']['areae'],
'#default_value' => array(),
'#title' => t('Área Estratégica'),
'#multiple' => TRUE,
);
}
//DATOS GENERALES DEL PROYECTO
$sector = count($arreglo['dg']['sector']);
$talentoh = count($arreglo['dg']['talentoh']);
$capacidades = count($arreglo['dg']['capacidades']);
$relacion = count($arreglo['dg']['relacion']);
$objetivosp = count($arreglo['dg']['objetivosp']);
if ($sector || $talentoh || $capacidades || $relacion || $objetivosp) {
$form['dg'] = array(
'#type' => 'fieldset',
'#title' => t('Datos Generales'),
);
}
//Clasificación Sectorial
if ($sector) {
$form['dg']['sector'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['dg']['sector'],
'#default_value' => array(),
'#title' => t('Clasificación Sectorial'),
'#multiple' => TRUE,
);
}
//Talento Humano
if ($talentoh) {
$form['dg']['talentoh'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['dg']['talentoh'],
'#default_value' => array(),
'#title' => t('Talento Humano'),
'#multiple' => TRUE,
);
}
//Capacidades
if ($capacidades) {
$form['dg']['capacidades'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['dg']['capacidades'],
'#default_value' => array(),
'#title' => t('Capacidades'),
'#multiple' => TRUE,
);
}
//Instituciones
if ($relacion) {
$form['dg']['relacion'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['dg']['relacion'],
'#default_value' => array(),
'#title' => t('Instituciones'),
'#multiple' => TRUE,
);
}
//Objetivos del Proyecto
if ($objetivosp) {
$form['dg']['objetivosp'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['dg']['objetivosp'],
'#default_value' => array(),
'#title' => t('Objetivos del Proyecto'),
'#multiple' => TRUE,
);
}
//INDICADORES DEL PROYECTO
$enunciadop = count($arreglo['ip']['enunciadop']);
$justificacion = count($arreglo['ip']['justificacion']);
$alcance = count($arreglo['ip']['alcance']);
$situaciona = count($arreglo['ip']['situaciona']);
$situaciono = count($arreglo['ip']['situaciono']);
$resultadop = count($arreglo['ip']['resultadop']);
if ($enunciadop || $justificacion || $alcance || $situaciona || $situaciono || $resultadop) {
$form['ip'] = array(
'#type' => 'fieldset',
'#title' => t('Indicadores del Proyecto'),
);
}
//Enunciado del Problema
if ($enunciadop) {
$form['ip']['enunciadop'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['ip']['enunciadop'],
'#default_value' => array(),
'#title' => t('Enunciado del Problema'),
'#multiple' => TRUE,
);
}
//Justificación del Proyecto
if ($justificacion) {
$form['ip']['justificacion'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['ip']['justificacion'],
'#default_value' => array(),
'#title' => t('Justificación del Proyecto'),
'#multiple' => TRUE,
);
}
//Alcance del Proyecto
if ($alcance) {
$form['ip']['alcance'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['ip']['alcance'],
'#default_value' => array(),
'#title' => t('Alcance del Proyecto'),
'#multiple' => TRUE,
);
}
//Situación Actual del Proyecto
if ($situaciona) {
$form['ip']['situaciona'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['ip']['situaciona'],
'#default_value' => array(),
'#title' => t('Situación Actual'),
'#multiple' => TRUE,
);
}
//Situación Objetivo
if ($situaciono) {
$form['ip']['situaciono'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['ip']['situaciono'],
'#default_value' => array(),
'#title' => t('Situación Objetivo'),
'#multiple' => TRUE,
);
}
//Indicador del resultado del Proyecto
if ($resultadop) {
$form['ip']['resultadop'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['ip']['resultadop'],
'#default_value' => array(),
'#title' => t('Indicador del resultado del Proyecto'),
'#multiple' => TRUE,
);
}
//Acciones especificas
$form['ae'] = array(
'#type' => 'fieldset',
'#title' => t('Acciones Específicas'),
);
$arreglo['ae']['field_proyecto_accion_esp'] = t('Acciones Específicas');
//Indicador del resultado del Proyecto
$form['ae']['accionesesp'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['ae'],
'#default_value' => array(),
'#title' => t('Acciones Específicas'),
'#multiple' => TRUE,
'#weight' => 99,
);
$title_combos['accionesesp']['title'] = t('Acciones Específicas');
//otros
$form['otros'] = array(
'#type' => 'fieldset',
'#title' => t('Otros'),
);
$arreglo['otros']['proyectos_operativos_flujo'] = t('Historico del Flujo de Trabajo');
//Indicador del resultado del Proyecto
$form['otros']['fl'] = array(
'#type' => 'checkboxes',
'#options' => $arreglo['otros'],
'#default_value' => array(),
'#title' => t('Historico del Flujo de Trabajo'),
'#multiple' => TRUE,
'#weight' => 99,
);
$title_combos['fl']['title'] = t('Historico del Flujo de Trabajo');
$form['#title_combos'] = $title_combos;
//$campos['proyectos_operativos_flujo'] = t('Flujo de Trabajo');
/*
$form['proyectos_operativos_campos'] = array(
'#type' => 'checkboxes',
'#options' => $campos,
'#default_value' => array(),
'#title' => t('Campos a mostrar'),
'#multiple' => TRUE,
);
*/
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
'#weight' => 100,
);
$form['buttons']['registrar'] = array(
'#type' => 'submit',
'#default_value' => t('Mostrar'),
'#weight' => 100,
);
$form['buttons']['cancelar'] = array(
'#type' => 'submit',
'#default_value' => t('Cancelar'),
'#weight' => 101,
'#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'),
'#skip_validation' => TRUE,
);
unset($form['#submit']);
$form['#submit'] = array();
$form['#submit'][] = 'proyectos_operativos_proyecto_genera_campos_form_submit';
}
else {
$form['buttons']['cancelar'] = array(
'#type' => 'submit',
'#default_value' => t('Volver a las opciones de busqueda para realizar una nueva consulta.'),
'#weight' => 101,
'#skip_validation' => TRUE,
);
$campos_mostrar = $form_state['storage']['proyectos_operativos_mostrar_campos'];
$form['muestra_campos']['#value'] = proyectos_operativos_mostrar_los_campos($form['#node'], $campos_mostrar);
unset($form['#submit']);
$form['#submit'] = array();
$form['#submit'][] = 'proyectos_operativos_proyecto_genera_campos2_form_submit';
}
return $form;
}
/**
* Implementation of proyectos_operativos_proyecto_genera_campos_form_submit().
* cambia los valores del filtro de campos.
*/
function proyectos_operativos_proyecto_genera_campos_form_submit($form, &$form_state) {
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Volver a las opcines de busqueda para realizar una nueva consulta.')) {
$form_state['redirect'] = 'proyectosop/' . $form['#node']->nid;
return;
}
$form_state['storage']['confirma'] = TRUE;
$form_state['storage']['proyectos_operativos_mostrar_campos'][$form['#node']->nid]['#values'] = $form_state['values'];
$form_state['storage']['proyectos_operativos_mostrar_campos'][$form['#node']->nid]['#title_combos'] = $form['#title_combos'];
$form_state['rebuild'] = TRUE;
}
/**
* Implementation of proyectos_operativos_proyecto_genera_campos_form_submit().
* cambia los valores del filtro de campos.
*/
function proyectos_operativos_proyecto_genera_campos2_form_submit($form, &$form_state) {
unset($form_state['storage']['proyectos_operativos_mostrar_campos']);
unset($form_state['storage']['confirma']);
}
/**
* Implementation of proyectos_operativos_mostrar_los_campos().
* Muestra el contenido de los campos de un proyecto.
*/
function proyectos_operativos_mostrar_los_campos($node, $campos_mostrar) {
$output = '';
$views = array();
if (isset($campos_mostrar[$node->nid]) && count($campos_mostrar[$node->nid])) {
$content = node_build_content($node);
$datos = $campos_mostrar[$node->nid]['#values'];
$title_combos = $campos_mostrar[$node->nid]['#title_combos'];
$valores = array();
foreach($campos_mostrar[$node->nid]['#values'] as $id => $campos){
if (is_array($campos) && count($campos)) {
foreach($campos as $campo) {
if ($campo) {
$valores[$id][] = $campo;
}
}
}
else {
}
}
foreach($campos_mostrar[$node->nid]['#title_combos'] as $id => $campos){
if (isset($valores[$id])) {
$views[$id] = !isset($views[$id]) ? '' . $campos['title'] . ' ' : $views[$id];
foreach($valores[$id] as $campo) {
if ($campo && isset($content->content[$campo])) {
$views[$id] .= drupal_render($content->content[$campo]);
}
elseif($campo == 'title') {
$views[$id] .= '' . $node->titulo_asignado . ' ';
}
}
$views[$id] .= ' ';
}
else {
foreach($campos as $id_campo => $campo) {
if (isset($valores[$id_campo])) {
$muestra = TRUE;
$views[$id] = !isset($views[$id]) ? '' . $campos['title'] . ' ' : $views[$id];
foreach($valores[$id_campo] as $id_field) {
if ($id_field && isset($content->content[$id_field])) {
$views[$id] .= drupal_render($content->content[$id_field]);
}
elseif($id_field == 'title') {
$views[$id] .= '' . $node->titulo_asignado . ' ';
}
}
$views[$id] .= ' ';
}
}
if (isset($views[$id])) {
$views[$id] .= '';
}
}
}
}
if (count($views)) {
$output .= implode('', $views);
}
elseif (isset($campos_mostrar[$node->nid])) {
$output .= '' . t('No ha seleccionado ningún campo que mostrar') . '
';
}
return $output;
}
/**
* Implementation of _proyectos_operativos_proyecto_campos().
* Muestra los campos de un proyecto.
*/
function _proyectos_operativos_proyecto_campos($node) {
global $user;
drupal_set_title(t('Consultar Datos del Proyecto'));
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
if ($node->nid) {
$breadcrumb[] = l(check_plain($node->title), 'proyectosop/' . $node->nid);
}
$breadcrumb[] = t('Datos del Proyecto');
drupal_set_breadcrumb($breadcrumb);
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$fecha = FALSE;
$ente = usuario_tiene_ente($user->uid);
$ente_planificador = 0;
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje($tipo_plan, $ente_planificador);
}
if ($fecha && $ente->nid) {
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
$output = drupal_get_form('proyectos_operativos_proyecto_genera_campos_form', $node);
/*
$views = array();
if (isset($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]) && count($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid])) {
$content = node_build_content($node);
$datos = $_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]['#values'];
$title_combos = $_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]['#title_combos'];
$valores = array();
foreach($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]['#values'] as $id => $campos){
if (is_array($campos) && count($campos)) {
foreach($campos as $campo) {
if ($campo) {
$valores[$id][] = $campo;
}
}
}
else {
}
}
foreach($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]['#title_combos'] as $id => $campos){
if (isset($valores[$id])) {
$views[$id] = !isset($views[$id]) ? '' . $campos['title'] . ' content[$campo])) {
$views[$id] .= drupal_render($content->content[$campo]);
}
elseif($campo == 'title') {
$views[$id] .= '' . $node->titulo_asignado . ' ';
}
}
$views[$id] .= ' ';
}
else {
foreach($campos as $id_campo => $campo) {
if (isset($valores[$id_campo])) {
$muestra = TRUE;
$views[$id] = !isset($views[$id]) ? '' . $campos['title'] . ' ' . $campo['title'] . ' content[$id_field])) {
$views[$id] .= drupal_render($content->content[$id_field]);
}
elseif($id_field == 'title') {
$views[$id] .= '' . $node->titulo_asignado . ' ';
}
}
$views[$id] .= ' ';
}
}
if (isset($views[$id])) {
$views[$id] .= '';
}
}
}
}
if (count($views)) {
$output .= implode('', $views);
}
elseif (isset($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid])) {
$output .= '' . t('No ha seleccionado ningún campo que mostrar') . '
';
}
*/
return $output;
}
/**
* Implementation of _proyectos_operativos_reformula_obtiene_estados().
* Obtiene los estados del tipo de contenido proyecto.
*/
function _proyectos_operativos_reformula_obtiene_estados() {
static $lista_estados;
if (module_exists('workflow')) {
if (!isset($lista_estados)) {
$lista_estados = array();
$estados = array();
$wid = workflow_get_workflow_for_type('proyectos_operativos');
if ($wid){
$estados = workflow_get_states($wid);
}
$lista_estados = array(
'wid' => $wid,
'states' => $estados,
);
}
}
else {
$lista_estados = array();
}
return $lista_estados;
}
/**
* Implementation of proyectos_operativos_search_ac_display().
* Muestra la lista de proyectos disponibles.
*/
function proyectos_operativos_search_ac_display() {
global $user;
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$fecha = FALSE;
$ente_planificador = 0;
$ente = usuario_tiene_ente($user->uid);
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje($tipo_plan, $ente_planificador);
}
if ($fecha && $ente->nid) {
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
if ($fecha && (is_numeric($ente_planificador) && user_access('admin all planificador'))) { //usuarios administradores
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
$rol_macro = variable_get('ActorPlanificadorMacro', 0);
if ($fecha && in_array($rol_macro, array_keys($user->roles))) { //es usuario control
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
$states = array();
$first_state = 0;
if (module_exists('workflow')) {
$states = _proyectos_operativos_reformula_obtiene_estados();
if ($states['wid']) {
$first_state = _workflow_creation_state($states['wid']);
}
}
$output = drupal_get_form('proyectos_operativos_search_ac_form');
$inputs = array();
$sql = '';
if (!user_access('admin planificador') && $user->entes) {
$inputs[] = $user->entes;
$inputs[] = variable_get('proyectos_operativos_state_naprobado', NULL);
$sql .= "SELECT ac.nid, ac.year, w.sid, n.created, n.title as nombre, u.name, n.uid, e.title AS ente, ctpo.field_proyecto_titulo_value FROM {proyectos_operativos} AS ac INNER JOIN {node} AS n ON n.nid = ac.nid INNER JOIN {users} AS u ON u.uid = n.uid INNER JOIN {node} as e ON e.nid = ac.ente INNER JOIN {workflow_node} AS w ON w.nid = ac.nid LEFT JOIN {content_type_proyectos_operativos} AS ctpo ON ctpo.nid = n.nid AND ctpo.vid = n.vid WHERE ac.ente = %d AND w.sid <> %d";
// $sql .= "SELECT ac.nid, ac.year, w.sid, n.created, n.title as nombre, u.name, n.uid, e.title AS ente FROM {proyectos_operativos} AS ac INNER JOIN {node} AS n ON n.nid = ac.nid INNER JOIN {users} AS u ON u.uid = n.uid INNER JOIN {node} as e ON e.nid = ac.ente INNER JOIN {workflow_node} AS w ON w.nid = ac.nid WHERE ac.ente = %d AND w.sid <> %d";
}
elseif (user_access('admin planificador')) {
$inputs[] = variable_get('proyectos_operativos_state_naprobado', NULL);
$sql .= "SELECT ac.nid, ac.year, ac.ente, w.sid, n.created, n.title as nombre, u.name, n.uid, e.title AS enten, ctpo.field_proyecto_titulo_value FROM {proyectos_operativos} AS ac INNER JOIN {node} AS n ON n.nid = ac.nid INNER JOIN {users} AS u ON u.uid = n.uid INNER JOIN {node} as e ON e.nid = ac.ente INNER JOIN {workflow_node} AS w ON w.nid = ac.nid LEFT JOIN {content_type_proyectos_operativos} AS ctpo ON ctpo.nid = n.nid AND ctpo.vid = n.vid WHERE w.sid <> %d";
// $sql .= "SELECT ac.nid, ac.year, ac.ente, w.sid, n.created, n.title as nombre, u.name, n.uid, e.title AS enten FROM {proyectos_operativos} AS ac INNER JOIN {node} AS n ON n.nid = ac.nid INNER JOIN {users} AS u ON u.uid = n.uid INNER JOIN {node} as e ON e.nid = ac.ente INNER JOIN {workflow_node} AS w ON w.nid = ac.nid WHERE w.sid <> %d";
$proyectos_operativos_search_ac_ente = isset($_SESSION['proyectos_operativos']) && isset($_SESSION['proyectos_operativos']['ente']) ? $_SESSION['proyectos_operativos']['ente'] : 0;
if ($proyectos_operativos_search_ac_ente) {
$inputs[] = $proyectos_operativos_search_ac_ente;
$sql .= ' AND ac.ente = %d';
}
}
$proyectos_operativos_search_ac_anho_creacion = isset($_SESSION['proyectos_operativos']) && isset($_SESSION['proyectos_operativos']['anho']) ? $_SESSION['proyectos_operativos']['anho'] : 0;
if ($proyectos_operativos_search_ac_anho_creacion) {
$sql .= ' AND ac.year = %d';
$inputs[] = $proyectos_operativos_search_ac_anho_creacion;
}
$sql .= ' ORDER BY ac.year DESC, ac.ente';
$header = array();
$cab = 6;
if (user_access('admin planificador')) {
$header[] = array('data' => t('Ente.'));
$cab++;
}
$header[] = array('data' => t('Proyecto'));
$header[] = array('data' => t('Año'));
$header[] = array('data' => t('Estado'));
$header[] = array('data' => t('Fecha de creación'));
$header[] = array('data' => t('Autor'));
$header[] = array('data' => t('Acción'));
$result = db_query($sql, $inputs);
$rows = array();
while($ac = db_fetch_object($result)) {
$row = array();
if (user_access('admin planificador')) {
$row[] = array('data' => l($ac->enten, 'node/' . $ac->ente),);
}
$nombre_proyecto = $ac->field_proyecto_titulo_value ? $ac->field_proyecto_titulo_value : $ac->nombre;
$row[] = array('data' => $nombre_proyecto,);
// $row[] = array('data' => $ac->nombre,);
$row[] = array('data' => $ac->year,);
$estad0 = $ac->sid == $first_state ? t('Ingresado') : $states['states'][$ac->sid];
$row[] = array('data' => $estad0,);
$row[] = array('data' => format_date($ac->created),);
$row[] = array('data' => l($ac->name, 'user/' . $ac->uid),);
$links = array();
drupal_alter('proyecto_obtiene_links', $links, $ac, $fecha);
$row[] = array('data' => theme('item_list', $links),);
$rows[] = $row;
}
if (!count($rows)) {
$row[] = array('data' => t('No existen Proyectos Operativos'), 'colspan' => $cab);
$rows[] = $row;
}
$output .= theme('table', $header, $rows);
if ($fecha) {
$links = array();
drupal_alter('proyecto_obtiene_agregar_links', $links);
$output .= '' . theme('item_list', $links) . '
';
}
return $output;
}
/*
* Implementation of hook_proyecto_obtiene_agregar_links_alter()
*/
function proyectos_operativos_proyecto_obtiene_agregar_links_alter(&$links) {
global $user;
$ente_planificador = 0;
$ente = usuario_tiene_ente($user->uid);
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
if ($ente_planificador && _proyectos_operativos_edita_datos_agregar()) {
$links['proyecto_agregar'] = array(
'data' => l(t('Agregar proyectos operativos'), 'agregarproyectosop'),
'class' => 'proyectos-operativos-agregar',
);
}
if (user_access('admin planificador')) {
$links['proyecto_agregar_ente'] = array(
'data' => l(t('Agregar proyectos operativos por ente '), 'agregar_proyectoopente'),
'class' => 'proyectos-operativos-agregar-ente',
);
}
}
/**
* Implementation of proyectos_operativos_remove_ac_form()
* Eliminar accion especifica
*/
function proyectos_operativos_remove_proyectosop_form($form_state, $node = 0) {
$form = array();
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
$breadcrumb[] = l(check_plain($node->title), 'proyectosop/' . $node->nid);
$breadcrumb[] = t('Eliminar Proyecto');
drupal_set_breadcrumb($breadcrumb);
$form['#node'] = $node;
$message = t('Esta seguro de eliminar el proyecto operativo @nombre?', array('@nombre' => $form['#node']->titulo_asignado));
$caption = ''. t('This action cannot be undone.') .'
';
$return_path = $_REQUEST['destination'] ? $_REQUEST['destination'] : 'proyectos_operativos';
return confirm_form($form, $message, $return_path, $caption, t('Eliminar'));
}
/**
* Implementation of proyectos_operativos_remove_ac_form_submit().
* Process funcion delete accion especifica.
*/
function proyectos_operativos_remove_proyectosop_form_submit($form, &$form_state) {
global $user;
$titulo = $form['#node']->titulo_asignado;
$nid = $form['#node']->nid;
node_delete($form['#node']->nid);
$texto = t('Se elimino el proyecto @nombre', array('@nombre' => $form['#node']->titulo_asignado));
drupal_set_message($texto);
if (!$_REQUEST['destination']) {
// add redirect
$form_state['redirect'] = 'proyectos_operativos';
}
}
/*
* Implementation of hook_acciones_obtiene_links_alter()
*/
function proyectos_operativos_proyecto_obtiene_links_alter(&$links, $proyecto, $acceso = FALSE) {
$node_accion = node_load($proyecto->nid);
if(node_access('view', $node_accion)){
$links['proyecto_view'] = array(
'data' => l(t('Consultar'), 'proyectosop/' . $proyecto->nid),
'class' => 'proyectos-operativos-ver',
);
}
if(_proyectos_operativos_access_editar($node_accion)){
$links['proyecto_update'] = array(
'data' => l(t('Modificar'), 'proyectosop/' . $proyecto->nid . '/edit'),
'class' => 'proyectos-operativos-modificar',
);
/*if (_proyectos_operativos_edita_datos_ae_access($node_accion)) {
$links['proyecto_ae_update'] = array(
'data' => l(t('Modificar las Acciones Específicas'), 'proyectosopedit/' . $proyecto->nid . '/ae'),
//'data' => l(t('Agregar Acción Específica'), 'proyectosopedit/' . $proyecto->nid . '/ae'),
'class' => 'proyectos-operativos-ae-modificar',
);
}*/
$links['proyecto_remove'] = array(
'data' => l(t('Eliminar'), 'proyectosop/' . $proyecto->nid . '/remove'),
'class' => 'proyectos-operativos-eliminar',
);
}
if (_proyectos_operativos_edita_datos_wk_access($node_accion)) {
$links['proyecto_state'] = array(
'data' => l(t('Revisión del Proyecto'), 'proyectosop/' . $proyecto->nid . '/workflow'),
'class' => 'proyectos-operativos-estado',
);
}
/*
if (_proyectos_operativos_ver_datos_wk_access($node_accion)) {
$links['proyecto_ae_view'] = array(
'data' => l(t('Consultar las Acciones Especificas'), 'proyectosop/' . $proyecto->nid . '/ae'),
'class' => 'proyectos-operativos-ae',
);
$links['proyecto_financial_view'] = array(
'data' => l(t('Consultar Datos Financieros'), 'proyectosop/' . $proyecto->nid . '/finacieros'),
'class' => 'proyectos-operativos-finacieros',
);
}*/
}
/**
* Implementation of proyectos_operativos_search_ac_form().
* Formulario de busqueda de proyecto.
*/
function proyectos_operativos_search_ac_form($form_state) {
$form = array();
if (user_access('admin planificador')) {
$entes = array();
$result = db_query('SELECT e.nid, n.title FROM {ente_planificador} AS e INNER JOIN {node} AS n ON n.nid = e.nid WHERE n.status = 1');
$entes[0] = t('Todos');
while($ente = db_fetch_object($result)) {
$entes[$ente->nid] = $ente->title;
}
$proyectos_operativos_search_ac_ente = isset($_SESSION['proyectos_operativos']) && isset($_SESSION['proyectos_operativos']['ente']) ? $_SESSION['proyectos_operativos']['ente'] : 0;
$form['proyectos_operativos_search_ac_ente'] = array(
'#title' => t('Ente Planificador'),
'#type' => 'select',
'#default_value' => $proyectos_operativos_search_ac_ente,
'#options' => $entes,
);
}
$years = array();
$years[0] = t('Todos');
$current_year = date("Y");
for($i = $current_year - 10; $i <= $current_year; $i++) {
$years[$i] = $i;
}
$proyectos_operativos_search_ac_anho_creacion = isset($_SESSION['proyectos_operativos']) && isset($_SESSION['proyectos_operativos']['anho']) ? $_SESSION['proyectos_operativos']['anho'] : 0;
$form['proyectos_operativos_search_ac_anho_creacion'] = array(
'#title' => t('Proyectos Operativos para el año'),
'#type' => 'select',
'#default_value' => $proyectos_operativos_search_ac_anho_creacion,
'#options' => $years,
);
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Buscar'),
);
return $form;
}
/**
* Implementation of proyectos_operativos_search_ac_form_submit().
* cambia el filtro de busqueda de proyectos.
*/
function proyectos_operativos_search_ac_form_submit($form, &$form_state) {
$_SESSION['proyectos_operativos'] = array();
if (user_access('admin planificador')) {
$_SESSION['proyectos_operativos']['ente'] = $form_state['values']['proyectos_operativos_search_ac_ente'];
}
$_SESSION['proyectos_operativos']['anho'] = $form_state['values']['proyectos_operativos_search_ac_anho_creacion'];
}
/*
* Implementation of hook_perm
*/
function proyectos_operativos_perm() {
return array(
'editar datos institucionales de mi ente',
);
}
/**
* Implementation of proyectosop_load().
* Leer un proyecto operativo.
*/
function proyectosop_load($nid = 0) {
if ($nid && is_numeric($nid)) {
$node_load = node_load($nid);
if ($node_load && $node_load->type == 'proyectos_operativos') {
return $node_load;
}
}
return FALSE;
}
/**
* Implementation of accion_especifical_load().
* Leer una accion especifica.
*/
function accion_especifical_load($nid = 0) {
if ($nid && is_numeric($nid)) {
$node_load = node_load($nid);
if ($node_load && $node_load->type == 'accion_especifica') {
return $node_load;
}
}
return FALSE;
}
/**
* Implementation of _proyectos_operativos_proyecto_agregar_proyecto().
* Agregar un nuevo proyecto.
*/
function _proyectos_operativos_proyecto_agregar_proyecto($ente = 0) {
$output = '';
$output .= drupal_get_form('proyectos_operativos_proyecto_basico_form', 0, $ente);
return $output;
}
/**
* Implementation of proyectos_operativos_proyecto_basico_form().
* Formulario de datos basicos (proyectos operativos).
*/
function proyectos_operativos_proyecto_basico_form(&$form_state, $proyecto = 0, $ente_agregar = 0) {
global $user;
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
if ($proyecto->nid) {
$breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid);
$breadcrumb[] = t('Datos Básicos'); // Link to current URL
}
else {
$breadcrumb[] = t('Agregar Proyecto'); // Link to current URL
}
drupal_set_breadcrumb($breadcrumb);
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$ente_planificador = 0;
if($proyecto && $proyecto->nid && $proyecto->field_proyecto_ente[0]['nid']) {
$ente_planificador = ente_planificador_leer_ente_planificadores($proyecto->field_proyecto_ente[0]['nid']);
}
else {
$ente = usuario_tiene_ente($user->uid);
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
elseif($ente_agregar && user_access('admin planificador')) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente_agregar);
}
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
$fecha = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje($tipo_plan, $ente_planificador);
}
if ($fecha && $ente->nid) {
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
$fechas_validacion = array(
'inicio' => '',
'fin' => '',
);
$montos_asignados = 0;
$acciones_especificas = array();
$porcentajes = array();
$ejecucion = 0;
if (!$proyecto) {
$proyecto_leido = new stdClass();
$proyecto_leido->type = 'proyectos_operativos';
$proyecto_leido->title = '';
$proyecto_leido->field_proyecto_ente[0]['nid'] = $ente_planificador->nid;
}
else {
$proyecto_leido = $proyecto;
$proyecto_leido->field_proyecto_titulo[0]['value'] = trim($proyecto_leido->field_proyecto_titulo[0]['value']) == '' ? $proyecto_leido->title : $proyecto_leido->field_proyecto_titulo[0]['value'];
if (isset($proyecto->field_proyecto_accion_esp)){
foreach($proyecto->field_proyecto_accion_esp as $accion) {
if ($accion['nid']) {
$accion_load = node_load($accion['nid']);
if ($accion_load && ($fechas_validacion['inicio'] == '' || $accion_load->field_accion_esp_fechai[0]['value'] < $fechas_validacion['inicio'])) {
$fechas_validacion['inicio'] = $accion_load->field_accion_esp_fechai[0]['value'];
}
if ($accion_load && ($fechas_validacion['fin'] == '' || $accion_load->field_accion_esp_fechaf[0]['value'] > $fechas_validacion['fin'])) {
$fechas_validacion['fin'] = $accion_load->field_accion_esp_fechaf[0]['value'];
}
if ($accion_load && $accion_load->type == 'accion_especifica') {
if ($accion_load->field_accion_esp_programacion[0]['tid']) {
foreach($accion_load->field_accion_esp_programacion as $programacion) {
foreach($programacion as $id_value => $mesp){
if ($id_value != 'tid') {
$montos_asignados +=$mesp;
}
}
}
}
$acciones_especificas[$accion_load->nid] = $accion_load;
$porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1;
$ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value'];
}
}
}
}
}
$proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos2.js');
$form = array();
$fechas_validacion['fin_texto'] = '';
$fechas_validacion['inicio_texto'] = '';
if ($fechas_validacion['inicio']) {
$f_aux = explode(' ', $fechas_validacion['inicio']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['inicio_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['inicio_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
$f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_i[0]['value']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['inicio_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['inicio_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
}
if ($fechas_validacion['fin']) {
$f_aux = explode(' ', $fechas_validacion['fin']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['fin_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['fin_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
$f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_f[0]['value']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['fin_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['fin_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
}
$format_number = array(
'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
);
$form['#format_number'] = array('format_number' => $format_number);
drupal_add_js($form['#format_number'], 'setting');
drupal_add_js(array('proyectos_operativos' => array('plurianual' => variable_get('proyectos_operativos_plurianual', 0))), 'setting');
$form['#ente_planificador'] = $ente_planificador;
$form['#fechas_validacion'] = $fechas_validacion;
$form['#montos_asignados'] = $montos_asignados;
$form['#count_ae'] = count($acciones_especificas);
$node_type = content_types('proyectos_operativos');
$fields = $node_type['fields'];
$form['#proyecto_fields'] = $fields;
$form['#proyecto_anho'] = ($proyecto->nid) ? $proyecto->anhoproyectos_operativos : variable_get('proyectos_operativos_anho_creacion', 0) ? variable_get('proyectos_operativos_anho_creacion', 0) : date("Y");
$field_form = array();
$fields_form = array();
$fields_form_ac_d = array();
$arreglo = array(
'field_proyecto_titulo' => 'field_proyecto_titulo',
'field_proyecto_codigo' => 'field_proyecto_codigo',
'field_proyecto_fecha_i' => 'field_proyecto_fecha_i',
'field_proyecto_fecha_f' => 'field_proyecto_fecha_f',
'field_proyecto_status' => 'field_proyecto_status',
'field_proyecto_situacion_p' => 'field_proyecto_situacion_p',
'field_proyecto_plurianual' => 'field_proyecto_plurianual',
'field_proyecto_monto_ant' => 'field_proyecto_monto_ant',
'field_proyecto_monto_anual' => 'field_proyecto_monto_anual',
'field_proyecto_monto_prox' => 'field_proyecto_monto_prox',
'field_proyecto_total' => 'field_proyecto_total',
'field_proyecto_poan' => 'field_proyecto_poan',
);
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_ac_d_' . $field_id, FALSE)) {
$fields_form_ac_d[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
/*
$form['title'] = array(
'#type' => 'textfield',
'#title' => t('Nombre del Proyecto'),
'#required' => TRUE,
'#default_value' => $proyecto_leido->title,
'#maxlength' => 511,
'#weight' => -5,
);
*/
$form['#node'] = $proyecto_leido;
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
$field_form = array();
$gerentes = variable_get('proyectos_operativos_muestra_gerentes', TRUE);
if ($gerentes) {
$arreglo = array(
//'field_proyecto_ente' => 'field_proyecto_ente',
'field_proyecto_autoridad' => 'field_proyecto_autoridad',
'field_proyecto_lider' => 'field_proyecto_lider',
'field_proyecto_unidad_a' => 'field_proyecto_unidad_a',
'field_proyecto_cargo' => 'field_proyecto_cargo',
'field_proyecto_telefono' => 'field_proyecto_telefono',
'field_proyecto_correo' => 'field_proyecto_correo',
);
}
$fields_form_ac_di = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_ac_di_' . $field_id, FALSE)) {
$fields_form_ac_di[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
$field_form = array();
if (variable_get('proyectos_operativos_muestra_pndes', TRUE)) {
$arreglo['field_proyecto_pndes'] = 'field_proyecto_pndes';
}
if (variable_get('proyectos_operativos_muestra_mcti', TRUE)) {
$arreglo['field_proyecto_mcti'] = 'field_proyecto_mcti';
}
$fields_form_ac_p = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_ac_p_' . $field_id, FALSE)) {
$fields_form_ac_p[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
$form['#fields_form_ac_d'] = $fields_form_ac_d;
$form['#fields_form_ac_di'] = $fields_form_ac_di;
$form['#fields_form_ac_p'] = $fields_form_ac_p;
$form['#proyectos_operativos_fields'] = $fields_form;
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
);
$form['buttons']['registrar'] = array(
'#type' => 'submit',
'#default_value' => t('Aceptar'),
'#weight' => 100,
);
$form['buttons']['cancelar'] = array(
'#type' => 'submit',
'#default_value' => t('Cancelar'),
'#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'),
'#weight' => 101,
);
$form['#submit'] = array('proyectos_operativos_proyecto_basico_form_submit');
return $form;
}
/*
* Implementation of proyectos_operativos_proyecto_basico_form_validate()
* Validar formulario de datos basicos (proyectos operativos).
*/
function proyectos_operativos_proyecto_basico_form_validate($form, &$form_state) {
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Cancelar')) {
return;
}
$proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos2.js');
//drupal_add_js($form['#format_number'], 'setting');
$form_state['values']['field_proyecto_monto_anual'][0]['value'] = str_replace("", $form['#format_number']['format_number']['thousands_sep'], $form_state['values']['field_proyecto_monto_anual'][0]['value']);
$form_state['values']['field_proyecto_monto_anual'][0]['value'] = str_replace(".", $form['#format_number']['format_number']['dec_point'], $form_state['values']['field_proyecto_monto_anual'][0]['value']);
$form_state['values']['field_proyecto_total'][0]['value'] = str_replace("", $form['#format_number']['format_number']['thousands_sep'], $form_state['values']['field_proyecto_total'][0]['value']);
$form_state['values']['field_proyecto_total'][0]['value'] = str_replace(".", $form['#format_number']['format_number']['dec_point'], $form_state['values']['field_proyecto_total'][0]['value']);
$form_state['values']['field_proyecto_monto_ant'][0]['value'] = str_replace(".", $form['#format_number']['format_number']['dec_point'], $form_state['values']['field_proyecto_monto_ant'][0]['value']);
$form_state['values']['field_proyecto_monto_prox'][0]['value'] = str_replace(".", $form['#format_number']['format_number']['dec_point'], $form_state['values']['field_proyecto_monto_prox'][0]['value']);
// garantizar el formato numerico y no exponencial con numeros grandes
$form_state['values']['field_proyecto_monto_anual'][0]['value'] = number_format($form_state['values']['field_proyecto_monto_anual'][0]['value'], $form['#format_number']['format_number']['decimals'], '.', '');
$form_state['values']['field_proyecto_total'][0]['value'] = number_format($form_state['values']['field_proyecto_total'][0]['value'], $form['#format_number']['format_number']['decimals'], '.', '');
$form_state['values']['field_proyecto_monto_ant'][0]['value'] = number_format($form_state['values']['field_proyecto_monto_ant'][0]['value'], $form['#format_number']['format_number']['decimals'], '.', '');
$form_state['values']['field_proyecto_monto_prox'][0]['value'] = number_format($form_state['values']['field_proyecto_monto_prox'][0]['value'], $form['#format_number']['format_number']['decimals'], '.', '');
if (trim($form_state['values']['field_proyecto_correo'][0]['email']) && !valid_email_address(trim($form_state['values']['field_proyecto_correo'][0]['email']))) {
form_set_error('field_proyecto_correo', t('"%mail" is not a valid email address',array('%mail' => $form_state['values']['field_proyecto_correo'][0]['email'])));
}
if ($form_state['values']['field_proyecto_monto_anual'][0]['value'] <= 0) {
form_set_error('field_proyecto_monto_anual', t('El monto anual del proyecto no puede ser negativo o cero'));
}
$start = $form_state['values']['field_proyecto_total'][0]['value'];
$value = preg_replace('@[^-0-9]@', '', $start);
if ($start != $value) {
form_set_error('field_proyecto_total', t('Solo números enteros son permitidos en el monto anual del proyecto.'));
}
$start = $form_state['values']['field_proyecto_monto_ant'][0]['value'];
$value = preg_replace('@[^-0-9]@', '', $start);
if ($start != $value) {
form_set_error('field_proyecto_monto_ant', t('Solo números enteros son permitidos en el monto en años anteriores del proyecto'));
}
$start = $form_state['values']['field_proyecto_monto_prox'][0]['value'];
$value = preg_replace('@[^-0-9]@', '', $start);
if ($start != $value) {
form_set_error('field_proyecto_monto_prox', t('Solo números enteros son permitidos en el monto en años posteriores del proyecto.'));
}
$start = $form_state['values']['field_proyecto_total'][0]['value'];
$value = preg_replace('@[^-0-9]@', '', $start);
if ($start != $value) {
form_set_error('field_proyecto_total', t('Solo números enteros son permitidos en el monto anual del proyecto.'));
}
$suma = $form_state['values']['field_proyecto_monto_prox'][0]['value'] + $form_state['values']['field_proyecto_monto_ant'][0]['value'];
if ($form_state['values']['field_proyecto_plurianual'][0]['value'] == variable_get('proyectos_operativos_plurianual', 0) && $suma == 0) {
form_set_error('field_proyecto_monto_ant', t('Cuando un proyecto es plurianual, el monto debe contener montos para los años anteriores y/o posteriores del proyecto'));
}
if ($form_state['values']['field_proyecto_plurianual'][0]['value'] == variable_get('proyectos_operativos_plurianual', 0) && $form_state['values']['field_proyecto_total'][0]['value'] < $suma) {
form_set_error('field_proyecto_total', t('El monto total del proyecto debe ser mayor que la suma de los montos de los años anteriores y proximos'));
}
if ($form['#count_ae'] && $form['#montos_asignados'] > $value) {
form_set_error('field_proyecto_monto_anual', t('El monto anual del proyecto (@monto_proyecto Bs.) es inferior al asignado a las Acciones Específicas (@monto_asignado Bs.)', array('@monto_proyecto' => number_format($value, $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']), '@monto_asignado' => number_format($form['#montos_asignados'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']))));
}
if ($form_state['values']['field_proyecto_total'][0]['value'] <= 0) {
form_set_error('field_proyecto_total', t('El monto anual del proyecto no puede ser negativo o cero'));
}
if ($form_state['values']['field_proyecto_monto_anual'][0]['value'] > $form_state['values']['field_proyecto_total'][0]['value']) {
form_set_error('field_proyecto_monto_anual', t('El monto anual debe ser menor o igual al monto total del proyecto.'));
}
//lamentablemente date no valida que from sea menor que to
if ($form_state['values']['field_proyecto_fecha_i'][0]['value'] > $form_state['values']['field_proyecto_fecha_f'][0]['value']) {
form_set_error('field_proyecto_fecha_i', t('La fecha de inicio debe ser menor a la fecha de culminación'));
}
if ($form_state['values']['field_proyecto_plurianual'][0]['value'] != variable_get('proyectos_operativos_plurianual', 0) && $form_state['values']['field_proyecto_total'][0]['value'] != $form_state['values']['field_proyecto_monto_anual'][0]['value']) {
form_set_error('field_proyecto_monto_anual', t('Cuando un proyecto no es plurianual, el monto total debe ser igual al monto anual del proyecto'));
}
//validamos el la fecha del proyecto
$fechai = explode('-', $form_state['values']['field_proyecto_fecha_i'][0]['value']);
$fechaf = explode('-', $form_state['values']['field_proyecto_fecha_f'][0]['value']);
if ($form_state['values']['field_proyecto_plurianual'][0]['value'] == variable_get('proyectos_operativos_plurianual', 0)) {
if (is_array($fechai) && count($fechai) && $form['#proyecto_anho'] < $fechai[0]) {
form_set_error('field_accion_esp_fechai', t('El año de la fecha de inicio del proyecto (@year_i) debe ser menor o igual a (@year_p)', array('@year_i' => $fechai[0], '@year_p' => $form['#proyecto_anho'])));
}
if (is_array($fechaf) && count($fechaf) &&$form['#proyecto_anho'] > $fechaf[0]) {
form_set_error('field_proyecto_fecha_f', t('El año de la fecha de finalización del proyecto (@year_i) debe ser mayor o igual al año (@year_p)', array('@year_i' => $fechaf[0], '@year_p' =>$form['#proyecto_anho'])));
}
}
else {
if (is_array($fechai) && count($fechai)) {
if ($form['#proyecto_anho'] != $fechai[0]) {
form_set_error('field_proyecto_fecha_i',t('El año de inicio del proyecto debe ser igual a @year', array('@year' => $form['#proyecto_anho'])));
}
}
if (is_array($fechaf) && count($fechaf)) {
if ($form['#proyecto_anho'] != $fechaf[0]) {
form_set_error('field_proyecto_fecha_f',t('El año de finalización del debe ser igual a @year', array('@year' => $form['#proyecto_anho'])));
}
}
}
if ($form['#count_ae'] && $form['#fechas_validacion']['inicio'] < $form_state['values']['field_proyecto_fecha_i'][0]['value']) {
$fecha_dia = explode(' ', $fechai[2]);
form_set_error('field_proyecto_fecha_i',t('La fecha de inicio del proyecto (@fecha_inicio) es mayor a la menor fecha de inicio de las Acciones Específicas (@fecha_aei)', array('@fecha_inicio' => $fecha_diai[0] . '-' . $fechai[1] . '-' . $fechai[0], '@fecha_aei' => $form['#fechas_validacion']['inicio_texto'])));
}
if ($form['#count_ae'] && $form['#fechas_validacion']['fin'] > $form_state['values']['field_proyecto_fecha_f'][0]['value']) {
$fecha_dia = explode(' ', $fechaf[2]);
form_set_error('field_proyecto_fecha_f',t('La fecha de culminación del proyecto (@fecha_inicio) es menor a la menor fecha de inicio de las Acciones Específicas (@fecha_aei)', array('@fecha_inicio' => $fecha_diaf[0] . '-' . $fechaf[1] . '-' . $fechaf[0], '@fecha_aei' => $form['#fechas_validacion']['fin_texto'])));
}
}
/*
* Implementation of proyectos_operativos_proyecto_basico_form_submit().
* Guardar formulario de datos basicos (proyectos operativos).
*/
function proyectos_operativos_proyecto_basico_form_submit($form, &$form_state) {
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Cancelar')) {
drupal_set_message(t('Se cancelo el ingreso de los datos básicos del proyecto.'));
if ($form['#node']->nid) {
$form_state['redirect'] = 'proyectosopedit/' . $form['#node']->nid;
}
else {
$form_state['redirect'] = 'proyectos_operativos';
}
return;
}
global $user;
if (module_exists('hs_content_taxonomy')) {
foreach ($form['#field_info'] as $field_name => $field_info) {
if ($field_info['widget']['type'] == 'content_taxonomy_hs') {
// Change format of values to the one Content Taxonomy expects
if (is_array($form_state['values'][$field_name]['tids'])) {
$values = array();
foreach($form_state['values'][$field_name]['tids'] as $tid) {
$values[] = array('value' => $tid);
array_unshift($form_state['values'][$field_name], array('value' => $tid));
}
$form_state['values'][$field_name]['tids'] = $values;
}
else {
$values[] = array('value' => $form_state['values'][$field_name]['tids']);
array_unshift($form_state['values'][$field_name],array('value' => $form_state['values'][$field_name]['tids']));
$form_state['values'][$field_name]['tids'] = $values;
}
}
}
}
if (module_exists('hs_content_taxonomy_description')) {
foreach ($form['#field_info'] as $field_name => $field_info) {
if ($field_info['widget']['type'] == 'content_taxonomy_hsd') {
// Change format of values to the one Content Taxonomy expects
if (is_array($form_state['values'][$field_name]['tids'])) {
$values = array();
foreach($form_state['values'][$field_name]['tids'] as $tid) {
$values[] = array('value' => $tid);
array_unshift($form_state['values'][$field_name], array('value' => $tid));
}
$form_state['values'][$field_name]['tids'] = $values;
}
else {
$values[] = array('value' => $form_state['values'][$field_name]['tids']);
array_unshift($form_state['values'][$field_name],array('value' => $form_state['values'][$field_name]['tids']));
$form_state['values'][$field_name]['tids'] = $values;
}
}
}
}
$field_form = $form['#proyectos_operativos_fields'];
module_load_include('inc', 'node', 'node.pages');
$node_load = $form['#node'];
$form_values = $form_state['values'];
//$node_load->title = check_plain($form_values['title']);
if (is_array($field_form) && count($field_form)) {
foreach ($field_form as $field_id) {
if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
foreach($form_values[$field_id] as $id => $value) {
if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
unset($form_values[$field_id][$id]['_error_element']);
}
}
$node_load->{$field_id} = $form_values[$field_id];
}
}
}
$node_load->title = $node_load->field_proyecto_codigo[0]['value'] && trim($node_load->field_proyecto_codigo[0]['value']) != '' ? check_plain($node_load->field_proyecto_codigo[0]['value']) : 'proyecto';
if ($node_load->nid) {
$texto = t('Modificados los datos básicos del proyecto');
$node_load->log = $texto;
drupal_set_message($texto);
}
else {
$node_load->uid = $user->uid;
$texto = t('Agregados los datos básicos del proyecto');
$node_load->log = t('Agregados los datos básicos del proyecto');
drupal_set_message($texto);
}
$node_load->revision = 1;
node_save($node_load);
$zerofill = 5;
$num = db_result(db_query("SELECT id FROM {proyectos_operativos} WHERE nid = %d", $node_load->nid));
$codigo = str_pad($num, $zerofill, '0', STR_PAD_LEFT);
$node_load->field_proyecto_codigo = array(array('value' => $codigo));
$node_load->title = $codigo;
node_save($node_load);
if ($_REQUEST['destination']) {
$form_state['redirect'] = url('proyectosopedit/' . $node_load->nid . '/generales',
array(
'query' => array(
'destination' => $_REQUEST['destination'],
),
'absolute' => TRUE,
)
);
unset($_REQUEST['destination']);
}
else {
// add redirect
$form_state['redirect'] = 'proyectosopedit/' . $node_load->nid . '/generales';
}
}
/**
* Implementation of proyectos_operativos_proyecto_generales_form().
* Formulario de datos generales (proyectos operativos).
*/
function proyectos_operativos_proyecto_generales_form(&$form_state, $proyecto = 0) {
global $user;
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
if ($proyecto->nid) {
$breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid);
}
$breadcrumb[] = 'Datos Generales'; // Link to current URL
drupal_set_breadcrumb($breadcrumb);
$proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_generales.js');
$format_number = array(
'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
);
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$fecha = FALSE;
$ente = usuario_tiene_ente($user->uid);
$ente_planificador = 0;
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje($tipo_plan, $ente_planificador);
}
if ($fecha && $ente->nid) {
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
if (!$proyecto) {
$proyecto_leido = new stdClass();
$proyecto_leido->type = 'proyectos_operativos';
}
else {
$proyecto_leido = $proyecto;
if (isset($proyecto->field_proyecto_accion_esp)){
foreach($proyecto->field_proyecto_accion_esp as $accion) {
if ($accion['nid']) {
$accion_load = node_load($accion['nid']);
if ($accion_load && ($fechas_validacion['inicio'] == '' || $accion_load->field_accion_esp_fechai[0]['value'] < $fechas_validacion['inicio'])) {
$fechas_validacion['inicio'] = $accion_load->field_accion_esp_fechai[0]['value'];
}
if ($accion_load && ($fechas_validacion['fin'] == '' || $accion_load->field_accion_esp_fechaf[0]['value'] > $fechas_validacion['fin'])) {
$fechas_validacion['fin'] = $accion_load->field_accion_esp_fechaf[0]['value'];
}
if ($accion_load && $accion_load->type == 'accion_especifica') {
if ($accion_load->field_accion_esp_programacion[0]['tid']) {
foreach($accion_load->field_accion_esp_programacion as $programacion) {
foreach($programacion as $id_value => $mesp){
if ($id_value != 'tid') {
$montos_asignados +=$mesp;
}
}
}
}
$acciones_especificas[$accion_load->nid] = $accion_load;
$porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1;
$ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value'];
}
}
}
}
}
$fechas_validacion['fin_texto'] = '';
$fechas_validacion['inicio_texto'] = '';
if ($fechas_validacion['inicio']) {
$f_aux = explode(' ', $fechas_validacion['inicio']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['inicio_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['inicio_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
$f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_i[0]['value']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['inicio_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['inicio_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
}
if ($fechas_validacion['fin']) {
$f_aux = explode(' ', $fechas_validacion['fin']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['fin_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['fin_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
$f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_f[0]['value']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['fin_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['fin_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
}
$form = array();
$form['#fechas_validacion'] = $fechas_validacion;
$form['#montos_asignados'] = $montos_asignados;
$form['#count_ae'] = count($acciones_especificas);
$form['#node'] = $proyecto_leido;
$node_type = content_types('proyectos_operativos');
$fields = $node_type['fields'];
$form['#proyecto_fields'] = $fields;
$form['#proyecto_anho'] = variable_get('proyectos_operativos_anho_creacion', 0) ? variable_get('proyectos_operativos_anho_creacion', 0) : date("Y");
$field_form = array();
$fields_form = array();
$fields_extra_form = array();
$arreglo = array(
'field_proyecto_sector' => 'field_proyecto_sector',
);
$sumas['beneficiarios'] = array();
$fields_form_dg_se = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_dg_se_' . $field_id, FALSE)) {
$fields_form_dg_se[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
$arreglo = array(
'field_proyecto_emdirecto' => 'field_proyecto_emdirecto',
'field_proyecto_efdirecto' => 'field_proyecto_efdirecto',
'field_proyecto_emindirecto' => 'field_proyecto_emindirecto',
'field_proyecto_efindirecto' => 'field_proyecto_efindirecto',
);
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
if (is_array($field_form) && count($field_form)) {
$sumas['beneficiarios']['empleos_generados'] = 'empleos_generados';
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
if (variable_get('proyectos_operativos_muestra_talento', TRUE)) {
$arreglo = array(
'field_proyecto_institucionth' => 'field_proyecto_institucionth',
'field_proyecto_nombres_a' => 'field_proyecto_nombres_a',
'field_proyecto_cargo_th' => 'field_proyecto_cargo_th',
'field_proyecto_rol_th' => 'field_proyecto_rol_th',
'field_proyecto_esfuerzo' => 'field_proyecto_esfuerzo',
'field_proyecto_formacion' => 'field_proyecto_formacion',
);
$form['talento'] = array(
'#type' => 'fieldset',
'#title' => t('Talento Humano'),
);
$prefixC = '';
$fields_extra_form1 = array();
foreach($arreglo as $field_id => $field) {
$fields_extra_form1[] = $field_id;
$prefixC .= '' . $fields[$field_id]['widget']['label'] . ' ';
}
$fields_extra_form['talento'] = $fields_extra_form1;
$tamano_array = array();
foreach($arreglo as $field_id => $field) {
$tamano_array[] = count($proyecto_leido->{$field_id});
}
$cantidad_talento = max($tamano_array);
for ($i = 0; $i < $cantidad_talento; $i++) {
$prefix = '';
if ($i == 0) {
$prefix = '' . $prefixC . ' ';
}
else {
$prefix .= ' ';
}
$aux = '';
$aui = '';
foreach($arreglo as $field_id => $field) {
$valor_d = ($field_id == 'field_proyecto_esfuerzo') ? 0 : '';
$form['talento'][$field_id . '_' . $i] = array(
'#type' => 'textfield',
'#default_value' => isset($proyecto_leido->{$field_id}[$i]) ? $proyecto_leido->{$field_id}[$i]['value'] : $valor_d,
'#size' => 18,
'#maxlength' => $fields[$field_id]['max_length'],
'#prefix' => $prefix,
'#suffix' => ' ',
);
if ($field_id == 'field_proyecto_esfuerzo') {
$form['talento'][$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',);
}
$aux = $field_id;
$aui = $i;
$prefix = '';
}
$form['talento'][$aux . '_' . $aui]['#suffix'] .= ' ';
}
$form['talento'][$aux . '_' . $aui]['#suffix'] .= '
AAA';
$form['talento']['cantidad_talento'] = array('#type' => 'hidden', '#value' => $cantidad_talento, '#suffix' => '
');
$form['talento']['agrega_' . 'talento'] = array(
'#type' => 'submit',
'#default_value' => t('Agregar otro campo'),
'#weight' => 100,
'#ahah' => array(
'path' => 'proyectos_operativos_proyecto_generales_agrega_talento_js_util/talento',
'wrapper' => 'talento-humano-modificar',
'method' => 'replace',
'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
),
);
}
if (variable_get('proyectos_operativos_muestra_capacidades', TRUE)) {
$arreglo = array(
'field_proyecto_institucion_alc' => 'field_proyecto_institucion_alc',
'field_proyecto_infraestructura' => 'field_proyecto_infraestructura',
'field_proyecto_equipos' => 'field_proyecto_equipos',
'field_proyecto_insumos' => 'field_proyecto_insumos',
'field_proyectos_servicios' => 'field_proyectos_servicios',
);
$form['capacidades'] = array(
'#type' => 'fieldset',
'#title' => t('Capacidades'),
);
$prefixC = '';
$fields_extra_form1 = array();
$tamano_array = array();
foreach($arreglo as $field_id => $field) {
$tamano_array[] = count($proyecto_leido->{$field_id});
}
$cantidad_capacidades = max($tamano_array);
foreach($arreglo as $field_id => $field) {
$fields_extra_form1[] = $field_id;
$prefixC .= '' . $fields[$field_id]['widget']['label'] . ' ';
}
$fields_extra_form['capacidades'] = $fields_extra_form1;
for ($i = 0; $i < $cantidad_capacidades; $i++) {
$prefix = '';
if ($i == 0) {
$prefix = '' . $prefixC . ' ';
}
else {
$prefix .= ' ';
}
$aux = '';
$aui = '';
foreach($arreglo as $field_id => $field) {
$form['capacidades'][$field_id . '_' . $i] = array(
'#type' => 'textfield',
'#default_value' => isset($proyecto_leido->{$field_id}[$i]) ? $proyecto_leido->{$field_id}[$i]['value'] : '',
'#size' => 18,
'#maxlength' => $fields[$field_id]['max_length'],
'#prefix' => $prefix,
'#suffix' => ' ',
);
$aux = $field_id;
$aui = $i;
$prefix = '';
}
$form['capacidades'][$aux . '_' . $aui]['#suffix'] .= ' ';
}
$form['capacidades'][$aux . '_' . $aui]['#suffix'] .= '
';
$form['capacidades']['cantidad_capacidades'] = array('#type' => 'hidden', '#value' => $cantidad_capacidades, '#suffix' => '
');
$form['capacidades']['agrega_' . 'capacidades'] = array(
'#type' => 'submit',
'#default_value' => t('Agregar otro campo'),
'#weight' => 100,
'#ahah' => array(
'path' => 'proyectos_operativos_proyecto_generales_agrega_talento_js_util/capacidades',
'wrapper' => 'capacidades-modificar',
'method' => 'replace',
'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
),
);
}
$field_form = array();
$arreglo = array(
'field_proyecto_relacion' => 'field_proyecto_relacion',
);
$fields_form_dg_r = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_dg_r_' . $field_id, FALSE)) {
$fields_form_dg_r[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
if (variable_get('proyectos_operativos_muestra_beneficiario', TRUE)) {
$arreglo = array(
'field_proyecto_beneficiario' => 'field_proyecto_beneficiario',
'field_proyectos_masculino_d' => 'field_proyectos_masculino_d',
'field_proyectos_femenino_d' => 'field_proyectos_femenino_d',
);
if (variable_get('proyectos_operativos_muestra_beneficiarios_indirectos', TRUE)) {
$arreglo['field_proyectos_masculino_i'] = 'field_proyectos_masculino_i';
$arreglo['field_proyectos_femenino_i'] = 'field_proyectos_femenino_i';
}
$form['beneficiario'] = array(
'#type' => 'fieldset',
'#title' => t('Beneficiario'),
);
$prefixC = '';
$fields_extra_form1 = array();
foreach($arreglo as $field_id => $field) {
$fields_extra_form1[] = $field_id;
$prefixC .= '' . $fields[$field_id]['widget']['label'] . ' ';
}
$prefixC .= '' . t('Total') . ' ';
$fields_extra_form['beneficiario'] = $fields_extra_form1;
$totales = 0;
$total_arreglo = array();
$vid = variable_get('proyectos_operativos_extra_bene', 0);
//$terms = taxonomy_get_tree($vid);
$tree = taxonomy_get_tree($vid);
$options = array();
$options[''] = t('Seleccionar');
if ($tree) {
foreach ($tree as $term) {
$options[$term->name] = $term->name;
}
}
$tamano_array = array();
foreach($arreglo as $field_id => $field) {
$tamano_array[] = count($proyecto_leido->{$field_id});
}
$cantidad_beneficiario = max($tamano_array);
$cantidad_beneficiario = ($cantidad_beneficiario == 0) ? 1 : $cantidad_beneficiario;
for ($i = 0; $i < $cantidad_beneficiario; $i++) {
$subtotal = 0;
$prefix = '';
if ($i == 0) {
$prefix = '' . $prefixC . ' ';
}
else {
$prefix .= ' ';
}
$aux = '';
$aui = '';
foreach($arreglo as $field_id => $field) {
$valor = isset($proyecto_leido->{$field_id}[$i]) ? $proyecto_leido->{$field_id}[$i]['value'] : '';
if ($field_id == 'field_proyecto_beneficiario') {
$form['beneficiario'][$field_id . '_' . $i] = array(
'#type' => 'select',
'#default_value' => $valor,
'#options' => $options,
'#prefix' => $prefix,
'#suffix' => ' ',
);
}
else {
$form['beneficiario'][$field_id . '_' . $i] = array(
'#type' => 'textfield',
'#default_value' => $valor,
'#size' => 10,
'#maxlength' => $fields[$field_id]['max_length'],
'#prefix' => $prefix,
'#suffix' => '',
);
}
if ($field_id != 'field_proyecto_beneficiario') {
if (!isset($total_arreglo[$field_id])) {
$total_arreglo[$field_id] = 0;
}
$subtotal += (int) $valor;
$totales += (int) $valor;
$total_arreglo[$field_id] += (int) $valor;
$sumas['beneficiarios']['beneficiario_' . $i] = 'beneficiario_' . $i;
$form['beneficiario'][$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',);
$form['beneficiario'][$field_id . '_' . $i]['#attributes'] = array('class' => 'number beneficiario_' . $i . ' todosbeneficiarios beneficiarios_' . $field_id, 'onchange' => "sumabeneficiario('beneficiario_$i');sumabeneficiario('todosbeneficiarios');sumabeneficiario('beneficiarios_$field_id');");
}
$aux = $field_id;
$aui = $i;
$prefix = '';
}
$form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= ' ' . $subtotal . '
';
$form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= ' ';
}
$form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= '' . t('TOTAL') . ' ';
foreach($arreglo as $field_id => $field) {
if ($field_id != 'field_proyecto_beneficiario') {
$sumas['beneficiarios']['beneficiarios_' . $field_id] = 'beneficiarios_' . $field_id;
$form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= '' . $total_arreglo[$field_id] . '
';
}
}
$sumas['beneficiarios']['todosbeneficiarios'] = 'todosbeneficiarios';
$form['#sumas'] = $sumas;
$form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= '' . $totales . '
';
$form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= '
';
$form['beneficiario']['cantidad_beneficiario'] = array('#type' => 'hidden', '#value' => $cantidad_beneficiario, '#suffix' => '
');
$form['beneficiario']['agrega_' . 'beneficiario'] = array(
'#type' => 'submit',
'#default_value' => t('Agregar otro campo'),
'#weight' => 100,
'#ahah' => array(
'path' => 'proyectos_operativos_proyecto_generales_agrega_talento_js_util/beneficiario',
'wrapper' => 'beneficiario-modificar',
'method' => 'replace',
'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
),
);
}
if (count($sumas)) {
drupal_add_js($sumas, 'setting');
}
$field_form = array();
$arreglo = array(
'field_proyecto_og' => 'field_proyecto_og',
'field_proyecto_oe' => 'field_proyecto_oe',
);
$fields_form_dg_o = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_dg_o_' . $field_id, FALSE)) {
$fields_form_dg_o[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
$form['#format_number'] = array('format_number' => $format_number);
drupal_add_js($form['#format_number'], 'setting');
$form['#proyectos_operativos_fields_extra'] = $fields_extra_form;
$form['#fields_form_dg_o'] = $fields_form_dg_o;
$form['#fields_form_dg_se'] = $fields_form_dg_se;
$form['#fields_form_dg_r'] = $fields_form_dg_r;
$form['#proyectos_operativos_fields_extra'] = $fields_extra_form;
$form['#proyectos_operativos_fields'] = $fields_form;
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
);
$form['buttons']['registrar'] = array(
'#type' => 'submit',
'#default_value' => t('Aceptar'),
'#weight' => 100,
);
$form['buttons']['cancelar'] = array(
'#type' => 'submit',
'#default_value' => t('Cancelar'),
'#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'),
'#weight' => 101,
);
$form['#submit'] = array('proyectos_operativos_proyecto_generales_form_submit');
return $form;
}
/**
* Implementation of proyectos_operativos_number_integer_validate2().
* Validar si el dato suministrado es un entero.
*/
function proyectos_operativos_number_integer_validate2($element, &$form_state) {
$start = $element['#value'];
$value = preg_replace('@[^-0-9]@', '', $start);
if ($start != $value) {
$fielda = explode('_', $element['#name']);
$i = array_pop($fielda);
$field = implode('_', $fielda);
form_set_error($field . '_' . $i, t('Solo números enteros son permitidos'));
}
}
/**
* Implementation of proyectos_operativos_proyecto_generales_form_validate().
* Validar formulario de datos generales (proyectos operativos).
*/
function proyectos_operativos_proyecto_generales_form_validate($form, &$form_state) {
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Cancelar')) {
return;
}
$proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
drupal_add_js($form['#format_number'], 'setting');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_generales.js');
drupal_add_js($form['#sumas'], 'setting');
if (count($form['#proyectos_operativos_fields_extra'])) {
foreach($form['#proyectos_operativos_fields_extra'] as $id => $arreglo) {
$all_null = TRUE;
$cantidad = $form_state['values']['cantidad_' . $id];
for($i = 0; $i < $cantidad; $i++) {
$null = TRUE;
$first_campo = FALSE;
$suma = 0;
foreach($arreglo as $campo) {
if (!$first_campo) {
$first_campo = $campo;
}
if ($form_state['values'][$campo . '_' . $i] && trim($form_state['values'][$campo . '_' . $i]) != '') {
$all_null = FALSE;
$null = FALSE;
}
if ($campo == 'field_proyecto_esfuerzo' || $campo == 'field_proyectos_masculino_d' || $campo == 'field_proyectos_masculino_i' || $campo == 'field_proyectos_femenino_d' || $campo == 'field_proyectos_femenino_i') {
$start = $form_state['values'][$campo . '_' . $i];
$value = (int) $start;
$suma += $value;
if ($start != $value) {
form_set_error($campo . '_' . $i, t('Solo números enteros son permitidos en el campo %field.' . $start, array('%field' => t($form['#proyecto_fields'][$campo]['widget']['label']))));
}
elseif ($value < 0) {
form_set_error($campo . '_' . $i, t('Solo números enteros positivos son permitidos en el campo %field.' . $start, array('%field' => t($form['#proyecto_fields'][$campo]['widget']['label']))));
}
}
}
if (!$null) {
foreach($arreglo as $campo) {
if (trim($form_state['values'][$campo . '_' . $i]) == '') {
form_set_error($campo . '_' . $i, t('El campo @campo_name no puede estar vacio', array('@campo_name' => $form['#proyecto_fields'][$campo]['widget']['label'])));
}
elseif($campo == 'field_proyecto_beneficiario' && ($suma < 0 || !$suma)) {
form_set_error($campo . '_' . $i, t('La suma de @campo_name debe ser mayor que cero', array('@campo_name' => $form['#proyecto_fields'][$campo]['widget']['label'])));
}
}
}
}
if ($all_null) {
form_set_error($first_campo . '_0', t('Debe llenar al menos un campo'));
}
}
}
}
/**
* Implementation of proyectos_operativos_proyecto_generales_form_submit().
* Guardar formulario de datos generales (proyectos operativos).
*/
function proyectos_operativos_proyecto_generales_form_submit($form, &$form_state) {
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Cancelar')) {
drupal_set_message(t('Se cancelo el ingreso de los datos generales del proyecto.'));
$form_state['redirect'] = 'proyectosopedit/' . $form['#node']->nid;
return;
}
if (module_exists('hs_content_taxonomy')) {
foreach ($form['#field_info'] as $field_name => $field_info) {
if ($field_info['widget']['type'] == 'content_taxonomy_hs') {
// Change format of values to the one Content Taxonomy expects
if (is_array($form_state['values'][$field_name]['tids'])) {
$values = array();
foreach($form_state['values'][$field_name]['tids'] as $tid) {
$values[] = array('value' => $tid);
array_unshift($form_state['values'][$field_name], array('value' => $tid));
}
$form_state['values'][$field_name]['tids'] = $values;
}
else {
$values[] = array('value' => $form_state['values'][$field_name]['tids']);
array_unshift($form_state['values'][$field_name],array('value' => $form_state['values'][$field_name]['tids']));
$form_state['values'][$field_name]['tids'] = $values;
}
}
}
}
$field_form = $form['#proyectos_operativos_fields'];
module_load_include('inc', 'node', 'node.pages');
$node_load = $form['#node'];
if (count($form['#proyectos_operativos_fields_extra'])) {
foreach($form['#proyectos_operativos_fields_extra'] as $id => $arreglo) {
foreach($arreglo as $campo) {
$node_load->{$campo} = array();
}
$all_null = TRUE;
$cantidad = $form_state['values']['cantidad_' . $id];
for($i = 0; $i < $cantidad; $i++) {
$null = TRUE;
$first_campo = FALSE;
foreach($arreglo as $campo) {
if (!$first_campo) {
$first_campo = $campo;
}
if (trim($form_state['values'][$campo . '_' . $i]) != '') {
$all_null = FALSE;
$null = FALSE;
}
}
if (!$null) {
foreach($arreglo as $campo) {
$node_load->{$campo}[] = array('value' => trim($form_state['values'][$campo . '_' . $i]));
}
}
}
}
}
$form_values = $form_state['values'];
if (is_array($field_form) && count($field_form)) {
foreach ($field_form as $field_id) {
if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
foreach($form_values[$field_id] as $id => $value) {
if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
unset($form_values[$field_id][$id]['_error_element']);
}
}
$node_load->{$field_id} = $form_values[$field_id];
}
}
}
if ($node_load->nid) {
$texto = t('Modificados los datos generales del proyecto');
$node_load->log = $texto;
drupal_set_message($texto);
}
else {
$texto = t('Agregados los datos generales del proyecto');
$node_load->log = $texto;
drupal_set_message($texto);
}
$node_load->revision = 1;
node_save($node_load);
if ($_REQUEST['destination']) {
$form_state['redirect'] = url('proyectosopedit/' . $node_load->nid . '/indicadores',
array(
'query' => array(
'destination' => $_REQUEST['destination'],
),
'absolute' => TRUE,
)
);
unset($_REQUEST['destination']);
}
else {
// add redirect
$form_state['redirect'] = 'proyectosopedit/' . $node_load->nid . '/indicadores';
}
}
/**
* Implementation of proyectos_operativos_proyecto_indicadores_form().
* Formulario de indicadores (proyectos operativos).
*/
function proyectos_operativos_proyecto_indicadores_form(&$form_state, $proyecto = 0) {
global $user;
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
$breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid);
$breadcrumb[] = 'Indicadores del Proyecto'; // Link to current URL
drupal_set_breadcrumb($breadcrumb);
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$fecha = FALSE;
$ente = usuario_tiene_ente($user->uid);
$ente_planificador = 0;
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje($tipo_plan, $ente_planificador);
}
if ($fecha && $ente->nid) {
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
if (!$proyecto) {
$proyecto_leido = new stdClass();
$proyecto_leido->type = 'proyectos_operativos';
}
else {
$proyecto_leido = $proyecto;
if (isset($proyecto->field_proyecto_accion_esp)){
foreach($proyecto->field_proyecto_accion_esp as $accion) {
if ($accion['nid']) {
$accion_load = node_load($accion['nid']);
if ($accion_load && ($fechas_validacion['inicio'] == '' || $accion_load->field_accion_esp_fechai[0]['value'] < $fechas_validacion['inicio'])) {
$fechas_validacion['inicio'] = $accion_load->field_accion_esp_fechai[0]['value'];
}
if ($accion_load && ($fechas_validacion['fin'] == '' || $accion_load->field_accion_esp_fechaf[0]['value'] > $fechas_validacion['fin'])) {
$fechas_validacion['fin'] = $accion_load->field_accion_esp_fechaf[0]['value'];
}
if ($accion_load && $accion_load->type == 'accion_especifica') {
if ($accion_load->field_accion_esp_programacion[0]['tid']) {
foreach($accion_load->field_accion_esp_programacion as $programacion) {
foreach($programacion as $id_value => $mesp){
if ($id_value != 'tid') {
$montos_asignados +=$mesp;
}
}
}
}
$acciones_especificas[$accion_load->nid] = $accion_load;
$porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1;
$ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value'];
}
}
}
}
}
$fechas_validacion['fin_texto'] = '';
$fechas_validacion['inicio_texto'] = '';
if ($fechas_validacion['inicio']) {
$f_aux = explode(' ', $fechas_validacion['inicio']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['inicio_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['inicio_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
$f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_i[0]['value']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['inicio_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['inicio_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
}
if ($fechas_validacion['fin']) {
$f_aux = explode(' ', $fechas_validacion['fin']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['fin_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['fin_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
$f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_f[0]['value']);
$f_aux = explode('-', $f_aux[0]);
$fechas_validacion['fin_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0];
$fechas_validacion['fin_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]);
}
$form = array();
$form['#fechas_validacion'] = $fechas_validacion;
$form['#montos_asignados'] = $montos_asignados;
$form['#count_ae'] = count($acciones_especificas);
$form['#node'] = $proyecto_leido;
$node_type = content_types('proyectos_operativos');
$fields = $node_type['fields'];
$field_form = array();
$fields_form = array();
if (variable_get('proyectos_operativos_muestra_enunciado_problema', TRUE)) {
$arreglo = array(
'field_proyecto_causas' => 'field_proyecto_causas',
'field_proyecto_problemas' => 'field_proyecto_problemas',
'field_proyecto_consecuencias' => 'field_proyecto_consecuencias',
);
$fields_form_ip_in = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_ip_in_' . $field_id, FALSE)) {
$fields_form_ip_in[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
$form['#datos_institucionales_fields_datos1'] = $field_form;
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
}
if (variable_get('proyectos_operativos_muestra_justicacion', TRUE)) {
$field_form = array();
$arreglo = array(
'field_proyecto_justificacion' => 'field_proyecto_justificacion',
);
$fields_form_ip_ju = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_ip_ju_' . $field_id, FALSE)) {
$fields_form_ip_ju[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
$form['#datos_institucionales_fields_datosds'] = $field_form;
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
}
if (variable_get('proyectos_operativos_muestra_alcance', TRUE)) {
$field_form = array();
$arreglo = array(
'field_proyecto_alcance' => 'field_proyecto_alcance',
);
$fields_form_ip_al = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_ip_al_' . $field_id, FALSE)) {
$fields_form_ip_al[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
$form['#datos_institucionales_fields_datosds1'] = $field_form;
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
}
$sa = variable_get('proyectos_operativos_muestra_sa', TRUE);
$so = variable_get('proyectos_operativos_muestra_so', TRUE);
if ($sa || $so) {
$form['indicador'] = array(
'#type' => 'fieldset',
'#title' => t('Indicador de la Situación'),
);
}
if ($sa) {
$field_form = array();
$arreglo = array(
'field_proyecto_sa_descripcion' => 'field_proyecto_sa_descripcion',
);
if (variable_get('proyectos_operativos_muestra_sa_cuantificacion', TRUE)) {
$arreglo['field_proyecto_sa_cuantificacion'] = 'field_proyecto_sa_cuantificacion';
}
$arreglo['field_proyecto_sa_formulai'] = 'field_proyecto_sa_formulai';
$arreglo['field_proyecto_sa_fuentei'] = 'field_proyecto_sa_fuentei';
$arreglo['field_proyecto_sa_fecha'] = 'field_proyecto_sa_fecha';
$fields_form_ip_sa = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_ip_sa_' . $field_id, FALSE)) {
$fields_form_ip_sa[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
$form['indicador']['sa'] = array(
'#type' => 'fieldset',
'#title' => t('Situación Actual'),
);
$form['#datos_institucionales_fields_datosds1'] = $field_form;
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form['indicador']['sa'] += (array) content_field_form($form, $form_state, $field);
}
}
}
if ($so) {
$field_form = array();
$arreglo = array(
'field_proyecto_so_descripcion' => 'field_proyecto_so_descripcion',
'field_proyecto_tiempoi' => 'field_proyecto_tiempoi',
);
$fields_form_ip_so = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_ip_so_' . $field_id, FALSE)) {
$fields_form_ip_so[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
$form['indicador']['so'] = array(
'#type' => 'fieldset',
'#title' => t('Situación Objetivo'),
);
$form['#datos_institucionales_fields_datosds1'] = $field_form;
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form['indicador']['so'] += (array) content_field_form($form, $form_state, $field);
}
}
}
$field_form = array();
$arreglo = array();
$arreglo['field_proyecto_descripcion_bien'] = 'field_proyecto_descripcion_bien';
//$arreglo['field_proyecto_so_cuantificacion'] = 'field_proyecto_so_cuantificacion';
$arreglo['field_proyecto_unidadm'] = 'field_proyecto_unidadm';
$personas = variable_get('proyectos_operativos_allow_unidpersona', array());
if (count($personas)) {
$arreglo['field_proyecto_meta_m'] = 'field_proyecto_meta_m';
$arreglo['field_proyecto_meta_f'] = 'field_proyecto_meta_f';
}
$form['#personas'] = $personas;
$arreglo['field_proyecto_meta_fisica'] = 'field_proyecto_meta_fisica';
$fields_form_ip_re = array();
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('proyectos_operativos_ip_re_' . $field_id, FALSE)) {
$fields_form_ip_re[$field_id] = $field_id;
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'proyectos_operativos');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
//obtener la fecha de inicio y fin
//obtener la fecha de inicio y fin
$mes = explode('-', $form['#node']->field_proyecto_fecha_i[0]['value']);
$mes_inicio = 0;
$anho_inicio = 0;
$dia_inicio = 0;
if (count($mes)) {
$mes_inicio = $mes[1] - 1;
$anho_inicio = $mes[0];
$dia_inicio = (int) $mes[2];
}
//obtener la fecha de inicio y fin
$mes = explode('-', $form['#node']->field_proyecto_fecha_f[0]['value']);
$mes_final = 0;
$anho_final = 0;
$dia_final = 0;
if (count($mes)) {
$mes_final = $mes[1] - 1;
$anho_final = $mes[0];
$dia_final = (int) $mes[2];
}
$form['#fields_form_ip_al'] = $fields_form_ip_al;
$form['#fields_form_ip_in'] = $fields_form_ip_in;
$form['#fields_form_ip_ju'] = $fields_form_ip_ju;
$form['#fields_form_ip_sa'] = $fields_form_ip_sa;
$form['#fields_form_ip_so'] = $fields_form_ip_so;
$form['#fields_form_ip_re'] = $fields_form_ip_re;
$form['#esplurianual'] = ($proyecto->field_proyecto_plurianual[0]['value'] == variable_get('proyectos_operativos_plurianual', 0)) ? 1 : 0;
$form['#proyectos_operativos_fecha'] = array();
$form['#proyectos_operativos_fecha'][0]['day'] = $dia_inicio;
$form['#proyectos_operativos_fecha'][0]['month'] = $mes_inicio;
$form['#proyectos_operativos_fecha'][0]['year'] = $anho_inicio;
$form['#proyectos_operativos_fecha'][1]['day'] = $dia_final;
$form['#proyectos_operativos_fecha'][1]['month'] = $mes_final;
$form['#proyectos_operativos_fecha'][1]['year'] = $anho_final;
$form['#proyectos_operativos_fecha'][2]['year'] = $form['#node']->anhoproyectos_operativos;
$proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos1.js');
drupal_add_js(array('proyectos_operativos' => array('fecha' => $form['#proyectos_operativos_fecha'], 'unidadmpers' => $personas)), 'setting');
$format_number = array(
'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
);
$form['#format_number'] = array('format_number' => $format_number);
drupal_add_js($form['#format_number'], 'setting');
$form['#proyectos_operativos_fields'] = $fields_form;
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
);
$form['buttons']['registrar'] = array(
'#type' => 'submit',
'#default_value' => t('Aceptar'),
'#weight' => 100,
);
$form['buttons']['cancelar'] = array(
'#type' => 'submit',
'#default_value' => t('Cancelar'),
'#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'),
'#weight' => 101,
);
$form['#submit'] = array('proyectos_operativos_proyecto_indicadores_form_submit');
return $form;
}
/**
* Implementation of proyectos_operativos_proyecto_indicadores_form_validate().
* Validar formulario de indicadores (proyectos operativos).
*/
function proyectos_operativos_proyecto_indicadores_form_validate($form, &$form_state) {
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Cancelar')) {
return;
}
$proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos1.js');
drupal_add_js(array('proyectos_operativos' => array('fecha' => $form['#proyectos_operativos_fecha'], 'unidadmpers' => $form['#personas'])), 'setting');
drupal_add_js($form['#format_number'], 'setting');
if (isset($form_state['values']['field_proyecto_meta_fisica'])) {
$suma = 0;
$inicial = ($form['#proyectos_operativos_fecha'][0]['year'] == $form['#proyectos_operativos_fecha'][2]['year'])? $form['#proyectos_operativos_fecha'][0]['month'] : 0;
$final = ($form['#proyectos_operativos_fecha'][1]['year'] == $form['#proyectos_operativos_fecha'][2]['year'])? $form['#proyectos_operativos_fecha'][1]['month'] : 12;
for ($i = $inicial; $i < $final + 1; $i++) {
$valor = $i ? 'value_' . $i : 'value';
$suma += $form_state['values']['field_proyecto_meta_fisica'][0][$valor];
}
if (!$suma && !($form['#esplurianual'])) {
form_set_error('field_proyecto_meta_fisica', t('La Distribución de la Meta Fisíca del Proyecto debe tener al menos un resultado'));
}
/*
if ($form_state['values']['field_proyecto_so_cuantificacion'][0]['value'] != $suma) {
form_set_error('field_proyecto_so_cuantificacion', t('La cuantificación de la Meta del Proyectos debe ser igual a la Distribución de la Meta Fisíca'));
}
*/
$personas = $form['#personas'];
if (count($personas) && isset($personas[$form_state['values']['field_proyecto_unidadm'][0]['value']])) {
$totalpersonas = $form_state['values']['field_proyecto_meta_m'][0]['value'] + $form_state['values']['field_proyecto_meta_f'][0]['value'];
if ($totalpersonas != $suma) {
form_set_error('field_proyecto_meta_m', t('El total de Distribución de la Meta Fisíca del Proyecto debe ser igual a la cantidad de personas'));
}
}
}
}
/**
* Implementation of proyectos_operativos_proyecto_indicadores_form_submit().
* Guardar formulario de indicadores (proyectos operativos).
*/
function proyectos_operativos_proyecto_indicadores_form_submit($form, &$form_state) {
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Cancelar')) {
drupal_set_message(t('Se cancelo el ingreso de los indicadores del proyecto.'));
$form_state['redirect'] = 'proyectosopedit/' . $form['#node']->nid;
return;
}
if (module_exists('hs_content_taxonomy')) {
foreach ($form['#field_info'] as $field_name => $field_info) {
if ($field_info['widget']['type'] == 'content_taxonomy_hs') {
// Change format of values to the one Content Taxonomy expects
if (is_array($form_state['values'][$field_name]['tids'])) {
$values = array();
foreach($form_state['values'][$field_name]['tids'] as $tid) {
$values[] = array('value' => $tid);
array_unshift($form_state['values'][$field_name], array('value' => $tid));
}
$form_state['values'][$field_name]['tids'] = $values;
}
else {
$values[] = array('value' => $form_state['values'][$field_name]['tids']);
array_unshift($form_state['values'][$field_name],array('value' => $form_state['values'][$field_name]['tids']));
$form_state['values'][$field_name]['tids'] = $values;
}
}
}
}
$field_form = $form['#proyectos_operativos_fields'];
module_load_include('inc', 'node', 'node.pages');
$node_load = $form['#node'];
if (isset($form_state['values']['field_proyecto_meta_fisica'])) {
$suma = 0;
$inicial = ($form['#proyectos_operativos_fecha'][0]['year'] == $form['#proyectos_operativos_fecha'][2]['year'])? $form['#proyectos_operativos_fecha'][0]['month'] : 0;
$final = ($form['#proyectos_operativos_fecha'][1]['year'] == $form['#proyectos_operativos_fecha'][2]['year'])? $form['#proyectos_operativos_fecha'][1]['month'] : 12;
for ($i = 0; $i < 12; $i++) {
$valor = $i ? 'value_' . $i : 'value';
if ($inicial <= $i && $final >= $i) {
$suma += $form_state['values']['field_proyecto_meta_fisica'][0][$valor];
}
else {
$form_state['values']['field_proyecto_meta_fisica'][0][$valor] = 0;
}
}
}
$form_values = $form_state['values'];
if (is_array($field_form) && count($field_form)) {
foreach ($field_form as $field_id) {
if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
foreach($form_values[$field_id] as $id => $value) {
if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
unset($form_values[$field_id][$id]['_error_element']);
}
}
$node_load->{$field_id} = $form_values[$field_id];
}
}
}
if ($node_load->nid) {
$texto = t('Modificados los indicadores del proyecto');
$node_load->log = $texto;
drupal_set_message($texto);
}
else {
$texto = t('Agregados los indicadores del proyecto');
$node_load->log = $texto;
drupal_set_message($texto);
}
$node_load->revision = 1;
node_save($node_load);
if ($_REQUEST['destination']) {
$form_state['redirect'] = url('proyectosopedit/' . $node_load->nid . '/ae',
array(
'query' => array(
'destination' => $_REQUEST['destination'],
),
'absolute' => TRUE,
)
);
unset($_REQUEST['destination']);
}
else {
// add redirect
$form_state['redirect'] = 'proyectosopedit/' . $node_load->nid . '/ae';
}
}
/**
* Implementation of _proyectos_operativos_proyecto_ae().
* Formulario de acciones especificas (proyectos operativos).
*/
function _proyectos_operativos_proyecto_ae($proyecto = 0, $ae = 0) {
global $user;
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$fecha = FALSE;
$ente = usuario_tiene_ente($user->uid);
$ente_planificador = 0;
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje($tipo_plan, $ente_planificador);
}
if ($fecha && $ente->nid) {
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
$output = '';
$output .= drupal_get_form('proyectos_operativos_accion_especifica_crear_form', $proyecto, $ae);
return $output;
}
/**
* Implementation of _proyectos_operativos_proyecto_financieros().
* Ver datos financieros (proyectos operativos).
*/
function _proyectos_operativos_proyecto_financieros($proyecto = 0) {
drupal_set_title(t('Consultar Datos Financieros'));
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
if ($proyecto->nid) {
$breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid);
}
$breadcrumb[] = t('Datos Financieros');
drupal_set_breadcrumb($breadcrumb);
global $user;
$format_number = array(
'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
);
$current_time = time();
$tipo_plan = 'proyectos_operativos_formular';
$fecha = FALSE;
$ente = usuario_tiene_ente($user->uid);
$ente_planificador = 0;
if ($ente && $ente->nid) {
$ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid);
}
$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje($tipo_plan, $ente_planificador);
}
if ($fecha && $ente->nid) {
muestra_mensaje($tipo_plan, $ente_planificador, 0);
}
$output = '';
$ejecucion = 0;
$acciones_especificas = array();
$arreglo_anual = array();
$arreglo_partida = array();
$titles = array();
$partidas = array();
$node_type = content_types('accion_especifica');
$fields = $node_type['fields'];
$titulos_campos = array();
$valores = array();
$campos = array();
//financiamiento
$arreglo_financiamiento = array();
$accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4);
if ($accion_especifica_number_fields > 0) {
for($i = 0; $i < $accion_especifica_number_fields; $i++) {
$arreglo_financiamiento['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_label_' . $i, '') ? variable_get('accion_especifica_financiamiento_label_' . $i, '') : '';
$arreglo_financiamiento_fields['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_options_' . $i, array());
}
}
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
$titulos_campos[$field_id] = $field['widget']['label'];
}
}
$montos_a_financiar = array();
$valores_financiamiento = array();
foreach($proyecto->field_proyecto_accion_esp as $accion) {
if ($accion['nid']) {
$accion_load = node_load($accion['nid']);
if ($accion_load && $accion_load->type == 'accion_especifica') {
$montos_a_financiar[$accion_load->nid] = $accion_load->field_accion_esp_monto_finan[0]['value'];
foreach($campos as $field) {
$valores[$field] += $accion_load->{$field}[0]['value'];
}
$titles[$accion_load->nid] = $accion_load->titulo_asignado;
$acciones_especificas[$accion_load->nid] = $accion_load;
$ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value'];
foreach($accion_load->field_accion_esp_programacion as $accion) {
if ($accion['tid']) {
$partidas[$accion['tid']] = $accion['tid'];
for ($i = 0; $i < 12; $i++) {
$valor = $i ? 'value_' . $i : 'value';
if (!isset($arreglo_partida[$accion_load->nid][$accion['tid']])) {
$arreglo_partida[$accion_load->nid][$accion['tid']] = 0;
}
if (!isset($arreglo_anual[$accion_load->nid][$valor])) {
$arreglo_anual[$accion_load->nid][$valor] = 0;
}
$arreglo_partida[$accion_load->nid][$accion['tid']] += $accion[$valor];
$arreglo_anual[$accion_load->nid][$valor] += $accion[$valor];
}
}
}
foreach($arreglo_financiamiento as $id => $titulo) {
foreach($arreglo_financiamiento_fields[$id] as $field) {
if (!isset($valores_financiamiento[$field])) {
$valores_financiamiento[$field] = 0;
}
$valores_financiamiento[$field] += $accion_load->{$field}[0]['value'];
}
}
}
}
}
$ftypes = array(
'value' => t('ENE'),
'value_1' => t('FEB'),
'value_2' => t('MAR'),
'value_3' => t('ABR'),
'value_4' => t('MAY'),
'value_5' => t('JUN'),
'value_6' => t('JUL'),
'value_7' => t('AGO'),
'value_8' => t('SEP'),
'value_9' => t('OCT'),
'value_10' => t('NOV'),
'value_11' => t('DEC'),
);
//se construye la tabla de monto a financiar por acciones especificas
$header = array();
$header[] = array('data' => t('Acciones Especificas'));
$header[] = array('data' => t('Monto a Financiar (Bs)'));
$rows = array();
$sumaaf = 0;
if (count($arreglo_anual)) {
foreach($montos_a_financiar as $nid => $valor) {
$row = array();
$row[] = array('data' => $titles[$nid], 'align' => 'center');
$row[] = array('data' => number_format($valor, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center');
$rows[] = $row;
$sumaaf += $valor;
}
}
if ($rows) {
$row = array();
$row[] = array('data' => '' . t('TOTAL A FINANCIAR') . ' ', 'align' => 'right');
$row[] = array('data' => '' . number_format($sumaaf, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' ', 'align' => 'center');
$rows[] = $row;
}
else {
$row = array();
$row[] = array('data' => '' . t('No existen Acciones Especificas para este proyecto') . ' ', 'colspan' => 3, 'align' => 'center');
$rows[] = $row;
}
$proyecto_ente = node_load($proyecto->field_proyecto_ente[0]['nid']);
$is_plurianual = ($proyecto->field_proyecto_plurianual[0]['value'] == variable_get('proyectos_operativos_plurianual', 0));
$termname = $is_plurianual ? t('SI') : t('NO');
$node_type = content_types('proyectos_operativos');
$campos_proyectos = $node_type['fields'];
$output .= '' . t('Resumen del Proyecto') . ' ';
$output .= '' . t('Código Único del Proyecto') . ': ' . check_plain($proyecto->title) . '
';
$output .= '' . t('Nombre del Proyecto') . ': ' . check_plain($proyecto->field_proyecto_titulo[0]['value']) . '
';
$output .= '' . t('Organismo') . ': ' . check_plain($proyecto_ente->title) . '
';
$output .= '' . $campos_proyectos['field_proyecto_plurianual']['widget']['label'] . ': ' . $termname . '
';
if ($is_plurianual) {
$output .= '' . $campos_proyectos['field_proyecto_monto_ant']['widget']['label'] . ': ' . number_format($proyecto->field_proyecto_monto_ant[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' Bs
';
}
$output .= '' . $campos_proyectos['field_proyecto_monto_anual']['widget']['label'] . ': ' . number_format($proyecto->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' Bs
';
if ($is_plurianual) {
$output .= '' . $campos_proyectos['field_proyecto_monto_prox']['widget']['label'] . ': ' . number_format($proyecto->field_proyecto_monto_prox[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' Bs
';
}
$output .= '' . $campos_proyectos['field_proyecto_total']['widget']['label'] . ': ' . number_format($proyecto->field_proyecto_total[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' Bs
';
$output .= '' . t('Monto que requiere Financiamiento (Bs.)') . ' ' . '' . t('Monto total a financiar:') . ' ' . number_format($proyecto->field_proyecto_esp_monto_finan[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' Bs
' . theme('table', $header, $rows) . ' ';
$rows = array();
$row = array();
$row[] = array('data' => '' . t('Acciones Especificas') . ' ', 'rowspan' => 2, 'align' => 'center');
$row[] = array('data' => '' . t('Mes') . ' ', 'colspan' => 12, 'align' => 'center');
$row[] = array('data' => '' . t('Total') . ' ', 'rowspan' => 2, 'align' => 'center');
$rows[] = $row;
$row = array();
foreach($ftypes as $valor) {
$row[] = array('data' => '' . $valor . ' ', 'align' => 'center');
}
$rows[] = $row;
$i = 1;
$suma_mes = array();
if (count($arreglo_anual)) {
foreach($arreglo_anual as $nid => $valore) {
$suma = 0;
$row = array();
$row[] = array('data' => $titles[$nid], 'align' => 'center');
foreach($ftypes as $id => $valor) {
$suma += $valore[$id];
if (!isset($suma_mes[$id])) {
$suma_mes[$id] = 0;
}
$suma_mes[$valor] += $valore[$id];
$row[] = array('data' => number_format($valore[$id], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center');
}
$row[] = array('data' => number_format($suma, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center');
$rows[] = $row;
}
$row = array();
$row[] = array('data' => '' . t('TOTAL DEL PROYECTO') . ' ', 'align' => 'right');
$suma = 0;
foreach($ftypes as $valor) {
$row[] = array('data' => '' . number_format($suma_mes[$valor], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' ', 'align' => 'center');
$suma += $suma_mes[$valor];
}
$style = '';
if ($suma != $proyecto->field_proyecto_monto_anual[0]['value']) {
$style = '';
}
$row[] = array('data' => '' . number_format($suma, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' ', 'align' => 'center', 'style' => $style);
$rows[] = $row;
}
else {
$row = array();
$row[] = array('data' => t('No existen acciones especificas'), 'colspan' => 12, 'align' => 'center');
}
$output .= '' . t('Resumen financiero de las acciones (Bs.)') . ' ' . '' . t('Monto total del proyecto para el año en curso:') . ' ' . number_format($proyecto->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
' . theme('table', array(), $rows) . ' ';
$rows = array();
$row = array();
$row[] = array('data' => '' . t('Acciones Especificas') . ' ', 'rowspan' => 2, 'align' => 'center');
$row[] = array('data' => '' . t('Partidas') . ' ', 'colspan' => count($partidas), 'align' => 'center');
$row[] = array('data' => '' . t('Total') . ' ', 'rowspan' => 2, 'align' => 'center');
$rows[] = $row;
$row = array();
foreach($partidas as $valor) {
$term = taxonomy_get_term($valor);
// If this term's vocabulary supports localization.
if (module_exists('i18ntaxonomy') && i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) {
$term->name = tt("taxonomy:term:$term->tid:name", $term->name);
}
$row[] = array('data' => '' . $term->name . ' ', 'align' => 'center');
}
$rows[] = $row;
$suma_mes = array();
if (count($arreglo_partida)) {
foreach($arreglo_partida as $nid => $valore) {
$suma = 0;
$row = array();
$row[] = array('data' => $titles[$nid], 'align' => 'center');
foreach($partidas as $valor) {
if (!$valore[$valor]) {
$valore[$valor] = 0;
}
$suma += $valore[$valor];
if (!isset($suma_mes[$valor])) {
$suma_mes[$valor] = 0;
}
$suma_mes[$valor] += $valore[$valor];
$row[] = array('data' => number_format($valore[$valor], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center');
}
$row[] = array('data' => number_format($suma, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center');
$rows[] = $row;
}
$row = array();
$row[] = array('data' => '' . t('TOTAL DEL PROYECTO') . ' ', 'align' => 'right');
$suma = 0;
foreach($partidas as $valor) {
$row[] = array('data' => '' . number_format($suma_mes[$valor], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' ', 'align' => 'center');
$suma += $suma_mes[$valor];
}
$style = '';
if ($suma != $proyecto->field_proyecto_monto_anual[0]['value']) {
$style = '';
}
$row[] = array('data' => '' . number_format($suma, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . ' ', 'align' => 'center', 'style' => $style);
$rows[] = $row;
}
else {
$row = array();
$row[] = array('data' => t('No existen acciones especificas'), 'colspan' => 12, 'align' => 'center');
}
$output .= '' . t('Distribución por partida presupuestaria (Bs.)') . ' ' . '' . t('Monto total del proyecto para el año en curso:') . ' ' . number_format($proyecto->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
' . theme('table', array(), $rows) . ' ';
$rows = array();
$row = array();
$totales_fin = array();
foreach($arreglo_financiamiento as $id => $titulo) {
if (variable_get('enable_' . $id, false)) {
$output1 = '' . $titulo . ' ';
foreach($arreglo_financiamiento_fields[$id] as $field) {
if ($field) {
if (!isset($totales_fin[$id])) {
$totales_fin[$id] = 0;
}
//$valores[$field] = $valores_financiamiento[$field];
$totales_fin[$id] += $valores_financiamiento[$field];
$output1 .= '' . $titulos_campos[$field] . ': ' . number_format($valores_financiamiento[$field], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
';
}
}
$output1 .= ' ';
$row[] = array('data' => $output1, 'align' => 'center');
}
}
$rows[] = $row;
$row = array();
$total_total = 0;
foreach($arreglo_financiamiento as $id => $arreglo) {
if (variable_get('enable_' . $id, false)) {
$total_total += $totales_fin[$id];
$row[] = array('data' => number_format($totales_fin[$id], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center');
}
}
$rows[] = $row;
$row = array();
$row[] = array('data' => '' . t('TOTAL FUENTES DE FINANCIAMIENTO') . ': ' . number_format($total_total, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center', 'colspan' => count($arreglo_financiamiento));
$rows[] = $row;
$output .= '' . t('Fuentes de financiamiento (Bs.)') . ' ' . '' . t('Monto total del proyecto para el año en curso:') . ' ' . number_format($proyecto->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
' . theme('table', array(), $rows) . ' ';
// if (_proyectos_operativos_access_editar($proyecto)) {
if (_proyectos_operativos_edita_datos_wk_access($proyecto)) {
$output .= '';
$proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
$output .= '
' . t('Revisión del Proyecto') . ' ';
$output .= _proyectos_operativos_proyecto_ver_workflow($proyecto);
$output .= '';
}
return $output;
}
/**
* Implementation of hook_planner_items_toolbar().
*/
function proyectos_operativos_planner_items_toolbar($ente_planificador, $handler_icon) {
$link = array();
$icon_path = entes_planificadores_toolbar_get_icon_path('planner', 'proyectosop', $handler_icon);
$link[] = array(
'path' => 'proyectos_operativos',
'icon_path' => $icon_path,
'icon' => theme('image', $icon_path, t('Consultar Información de los proyectos operativos del actor planificador'), t('Consultar Información de los proyectos operativos del actor planificador'), array('class' => 'handler-icon-' . $handler_icon)),
'title' => t('Proyectos operativos'),
'description' => t('Consultar Información de los proyectos operativos del actor planificador'),
'category' => 'planner',
);
return $link;
}
/**
* Implementation of hook_admin_items_toolbar().
*/
function proyectos_operativos_admin_items_toolbar($handler_icon) {
$link = array();
$icon_path = entes_planificadores_toolbar_get_icon_path('admin', 'proyectosop', $handler_icon);
$link[] = array(
'path' => 'proyectos_operativos',
'icon_path' => $icon_path,
'icon' => theme('image', $icon_path, t('Consultar Información de los proyectos operativos del actor planificador'), t('Consultar Información de los proyectos operativos del actor planificador'), array('class' => 'handler-icon-' . $handler_icon)),
'title' => t('Proyectos operativos'),
'description' => t('Consultar Información de los proyectos operativos del actor planificador'),
'category' => 'planner',
);
return $link;
}
/**
* Implementation of hook_theme().
*/
function proyectos_operativos_theme() {
$proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos') . '/templates';
return array(
'proyectos_operativos_proyecto_basico_form' => array(
'arguments' => array('form' => NULL),
),
'proyectos_operativos_proyecto_generales_form' => array(
'arguments' => array('form' => NULL),
),
'proyectos_operativos_proyecto_indicadores_form' => array(
'arguments' => array('form' => NULL),
),
'proyectos_operativos_ficha_proyecto' => array(
'arguments' => array(
'proyecto' => array(),
),
'template' => 'proyectos-operativos-ficha-proyecto',
'path' => $proyectos_operativos_path,
),
'proyecto_operativos_flujo_avance' => array(
'arguments' => array(
'proyecto' => array(),
'states' => array(),
),
'template' => 'proyectos-operativos-flujo-avance',
'path' => $proyectos_operativos_path,
),
);
}
/**
* @ingroup themeable
* @see proyectos_operativos_proyecto_basico_form
*/
function theme_proyectos_operativos_proyecto_basico_form($form) {
$output = '';
$fecha_inicio = $form['#fechas_validacion']['inicio'];
if ($form['#count_ae']) {
$format_number = array(
'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
);
$mensaje_mostrar = t('Existen @count_ae Acciones Específicas asignadas, con un monto total de @montos_asignados Bs asignados. y fechas de Inicio @inicio y fin @fin. Tome en consideración estos valores al momento de modificar los valores de los campos @title_fecha_i, @final title_fecha_f y @title_monto_total_proyecto_year', array('@count_ae' => $form['#count_ae'], '@montos_asignados' => number_format($form['#montos_asignados'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), '@inicio' => $form['#fechas_validacion']['inicio_texto'], '@fin' => $form['#fechas_validacion']['fin_texto'], '@title_fecha_i' => $form['field_proyecto_fecha_i']['#title'], '@final title_fecha_f' => $form['field_proyecto_fecha_f']['#title'], '@title_monto_total_proyecto_year' => $form['field_proyecto_monto_anual']['#title'] ));
$output .= '' . $mensaje_mostrar . '
';
}
$output .= '' . t('Datos Básicos de Identificación del Proyecto');
$output .= ' ' . drupal_render($form['field_proyecto_titulo']);
if (isset($form['field_proyecto_codigo']) && $form['field_proyecto_codigo']['#access']) {
$output .= drupal_render($form['field_proyecto_codigo']);
}
if (isset($form['field_proyecto_fecha_i']) && $form['field_proyecto_fecha_i']['#access']) {
$output .= drupal_render($form['field_proyecto_fecha_i']);
}
if (isset($form['field_proyecto_fecha_f']) && $form['field_proyecto_fecha_f']['#access']) {
$output .= drupal_render($form['field_proyecto_fecha_f']);
}
if (isset($form['field_proyecto_status']) && $form['field_proyecto_status']['#access']) {
$output .= drupal_render($form['field_proyecto_status']);
}
if (isset($form['field_proyecto_situacion_p']) && $form['field_proyecto_situacion_p']['#access']) {
$output .= drupal_render($form['field_proyecto_situacion_p']);
}
if (isset($form['field_proyecto_plurianual']) && $form['field_proyecto_plurianual']['#access']) {
$output .= drupal_render($form['field_proyecto_plurianual']);
}
if (isset($form['field_proyecto_monto_ant']) && $form['field_proyecto_monto_ant']['#access']) {
$output .= drupal_render($form['field_proyecto_monto_ant']);
}
if (isset($form['field_proyecto_monto_anual']) && $form['field_proyecto_monto_anual']['#access']) {
$output .= drupal_render($form['field_proyecto_monto_anual']);
}
if (isset($form['field_proyecto_monto_prox']) && $form['field_proyecto_monto_prox']['#access']) {
$output .= drupal_render($form['field_proyecto_monto_prox']);
}
if (isset($form['field_proyecto_total']) && $form['field_proyecto_total']['#access']) {
$output .= drupal_render($form['field_proyecto_total']);
}
if (isset($form['field_proyecto_poan']) && $form['field_proyecto_poan']['#access']) {
$output .= drupal_render($form['field_proyecto_poan']);
}
if (is_array($form['#fields_form_ac_d']) && count($form['#fields_form_ac_d'])) {
foreach($form['#fields_form_ac_d'] as $id_a) {
$output .= drupal_render($form[$id_a]);
}
}
$output .= ' ';
$gerentes = variable_get('proyectos_operativos_muestra_gerentes', TRUE);
$output .= '' . t('Gerente del Proyecto') . ' ';
if ($gerentes) {
$output .= 'Institucion: ' . check_plain($form['#ente_planificador']->title) . '
';
if (isset($form['field_proyecto_ente']) && $form['field_proyecto_ente']['#access']) {
$output .= drupal_render($form['field_proyecto_ente']);
}
if (isset($form['field_proyecto_autoridad']) && $form['field_proyecto_autoridad']['#access']) {
$output .= drupal_render($form['field_proyecto_autoridad']);
}
if (isset($form['field_proyecto_lider']) && $form['field_proyecto_lider']['#access']) {
$output .= drupal_render($form['field_proyecto_lider']);
}
if (isset($form['field_proyecto_unidad_a']) && $form['field_proyecto_unidad_a']['#access']) {
$output .= drupal_render($form['field_proyecto_unidad_a']);
}
if (isset($form['field_proyecto_cargo']) && $form['field_proyecto_cargo']['#access']) {
$output .= drupal_render($form['field_proyecto_cargo']);
}
if (isset($form['field_proyecto_telefono']) && $form['field_proyecto_telefono']['#access']) {
$output .= drupal_render($form['field_proyecto_telefono']);
}
if (isset($form['field_proyecto_correo']) && $form['field_proyecto_correo']['#access']) {
$output .= drupal_render($form['field_proyecto_correo']);
}
}
if (is_array($form['#fields_form_ac_di']) && count($form['#fields_form_ac_di'])) {
foreach($form['#fields_form_ac_d'] as $id_a) {
$output .= drupal_render($form[$id_a]);
}
}
$output .= ' ';
$pndes = variable_get('proyectos_operativos_muestra_pndes', TRUE);
$mcti = variable_get('proyectos_operativos_muestra_mcti', TRUE);
$count_ac_p = count($form['#fields_form_ac_p']);
if ($pndes || $mcti || $count_ac_p) {
$output .= '' . t('Área Estrategica') . ' ';
if ($pndes) {
$output .= drupal_render($form['field_proyecto_pndes']);
}
if ($mcti) {
$output .= drupal_render($form['field_proyecto_mcti']);
}
if ($count_ac_p) {
foreach($form['#fields_form_ac_p'] as $id_a) {
$output .= drupal_render($form[$id_a]);
}
}
$output .= ' ';
}
$output .= drupal_render($form);
return $output;
}
/**
* @ingroup themeable
* @see proyectos_operativos_proyecto_generales_form
*/
function theme_proyectos_operativos_proyecto_generales_form($form) {
$arreglo = array(
'field_proyecto_emdirecto' => 'field_proyecto_emdirecto',
'field_proyecto_efdirecto' => 'field_proyecto_efdirecto',
'field_proyecto_emindirecto' => 'field_proyecto_emindirecto',
'field_proyecto_efindirecto' => 'field_proyecto_efindirecto',
);
$output = '';
if ($form['#count_ae'] && $form['#montos_asignados']!= $form['#node']->field_proyecto_monto_anual[0]['value']) {
$link_acciones = l(t('Modificar Acciones específicas'), 'proyectosopedit/' . $form['#node']->nid . '/ae');
$link_proyecto = l(t('Modificar Monto del Proyecto'), 'proyectosopedit/' . $form['#node']->nid);
$format_number = array(
'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
);
$mensaje_mostrar = t('Existen @count_ae Acciones Específicas asignadas con un monto total de @montos_asignados Bs, el cual difiere con el monto asignado en el proyecto para el @title_monto_total_proyecto_year (@monto_proyecto). Modifique los montos de las Acciones Específicas en !link_acciones o el monto del proyecto !link_proyecto para poder cerrar el proyecto operativo @nombre_proyecto', array('@count_ae' => $form['#count_ae'], '@montos_asignados' => number_format($form['#montos_asignados'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), '@title_monto_total_proyecto_year' => $form['#proyecto_fields']['field_proyecto_monto_anual']['widget']['label'], '@monto_proyecto' => number_format($form['#node']->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), '!link_acciones' => $link_acciones, '!link_proyecto' => $link_proyecto, '@nombre_proyecto' => $form['#node']->titulo_asignado,));
$output .= '' . $mensaje_mostrar . '
';
}
if ($form['#count_ae'] && $fechas_validacion['inicio'] && $fechas_validacion['fin'] && ($fechas_validacion['inicio_time'] < $fechas_validacion['inicio_current_time'] || $fechas_validacion['fin_current_time'] < $fechas_validacion['fin_time'])) {
$link_acciones = l(t('Modificar Acciones específicas'), 'proyectosopedit/' . $form['#node']->nid . '/ae');
$link_proyecto = l(t('Modificar Monto del Proyecto'), 'proyectosopedit/' . $form['#node']->nid);
$mensaje_mostrar = t('Existen @count_ae Acciones Específicas asignadas que difieren con la @title_fecha_de_inicio o @title_fecha_de_final del Proyecto. Modifique los montos de las Acciones Específicas en !link_acciones o el monto del proyecto !link_proyecto para poder cerrar el proyecto operativo @nombre_proyecto', array('@count_ae' => $form['#count_ae'], '@title_fecha_de_inicio' => $form['#proyecto_fields']['field_proyecto_fecha_i']['widget']['label'], '@title_fecha_de_final' => $form['#proyecto_fields']['field_proyecto_fecha_f']['widget']['label'], '!link_acciones' => $link_acciones, '!link_proyecto' => $link_proyecto, '@nombre_proyecto' => $form['#node']->titulo_asignado,));
$output .= '' . $mensaje_mostrar . '
';
}
$output .= '' . t('Clasificación Sectorial') . ' ' . drupal_render($form['field_proyecto_sector']);
if (count($form['#fields_form_dg_se'])) {
foreach($form['#fields_form_dg_se'] as $id_c) {
$output .= drupal_render($form[$id_c]);
}
}
$output .= ' ';
if (variable_get('proyectos_operativos_muestra_talento', TRUE)) {
$output .= drupal_render($form['talento']);
}
if (variable_get('proyectos_operativos_muestra_capacidades', TRUE)) {
$output .= drupal_render($form['capacidades']);
}
$output .= '' . t('Instituciones') . ' ' . drupal_render($form['field_proyecto_relacion']);
if (count($form['#fields_form_dg_r'])) {
foreach($form['#fields_form_dg_r'] as $id_c) {
$output .= drupal_render($form[$id_c]);
}
}
$output .= ' ';
$output .= '' . t('Empleos Generados') . ' ' . t('Nro Estimados de Empleos:');
$output .= '';
$output1 = ' ';
foreach($arreglo as $empleo) {
$output .= '' . $form[$empleo]['#title'] . ' ';
$form[$empleo][0]['value']['#title'] = '';
$output1 .= '' . drupal_render($form[$empleo]) . ' ';
}
$output1 .= '
';
$output .= '' . t('TOTAL') . ' ';
$output1 .= ' ';
$output .= '' . $output1 .'
';
if (variable_get('proyectos_operativos_muestra_beneficiario', TRUE)) {
$output .= drupal_render($form['beneficiario']);
}
$output .= '' . t('Objetivos del Proyecto') . ' ' . drupal_render($form['field_proyecto_og']) . drupal_render($form['field_proyecto_oe']);
if (count($form['#fields_form_dg_o'])) {
foreach($form['#fields_form_dg_o'] as $id_c) {
$output .= drupal_render($form[$id_c]);
}
}
$output .= ' ';
$output .= drupal_render($form);
return $output;
}
/**
* @ingroup themeable
* @see proyectos_operativos_proyecto_indicadores_form
*/
function theme_proyectos_operativos_proyecto_indicadores_form($form) {
$output = '';
if ($form['#count_ae'] && $form['#montos_asignados']!= $form['#node']->field_proyecto_monto_anual[0]['value']) {
$format_number = array(
'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
);
$link_acciones = l(t('Modificar Acciones específicas'), 'proyectosopedit/' . $form['#node']->nid . '/ae');
$link_proyecto = l(t('Modificar Monto del Proyecto'), 'proyectosopedit/' . $form['#node']->nid);
$mensaje_mostrar = t('Existen @count_ae Acciones Específicas asignadas con un monto total de @montos_asignados Bs, el cual difiere con el monto asignado en el proyecto para el @title_monto_total_proyecto_year (@monto_proyecto). Modifique los montos de las Acciones Específicas en !link_acciones o el monto del proyecto !link_proyecto para poder cerrar el proyecto operativo @nombre_proyecto', array('@count_ae' => $form['#count_ae'], '@montos_asignados' => number_format($form['#montos_asignados'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), '@title_monto_total_proyecto_year' => $form['#proyecto_fields']['field_proyecto_monto_anual']['widget']['label'], '@monto_proyecto' => number_format($form['#node']->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), '!link_acciones' => $link_acciones, '!link_proyecto' => $link_proyecto, '@nombre_proyecto' => $form['#node']->titulo_asignado,));
$output .= '' . $mensaje_mostrar . '
';
}
if ($form['#count_ae'] && $fechas_validacion['inicio'] && $fechas_validacion['fin'] && ($fechas_validacion['inicio_time'] < $fechas_validacion['inicio_current_time'] || $fechas_validacion['fin_current_time'] < $fechas_validacion['fin_time'])) {
$link_acciones = l(t('Modificar Acciones específicas'), 'proyectosopedit/' . $form['#node']->nid . '/ae');
$link_proyecto = l(t('Modificar Monto del Proyecto'), 'proyectosopedit/' . $form['#node']->nid);
$mensaje_mostrar = t('Existen @count_ae Acciones Específicas asignadas que difieren con la @title_fecha_de_inicio o @title_fecha_de_final del Proyecto. Modifique los montos de las Acciones Específicas en !link_acciones o el monto del proyecto !link_proyecto para poder cerrar el proyecto operativo @nombre_proyecto', array('@count_ae' => $form['#count_ae'], '@title_fecha_de_inicio' => $form['#proyecto_fields']['field_proyecto_fecha_i']['widget']['label'], '@title_fecha_de_final' => $form['#proyecto_fields']['field_proyecto_fecha_f']['widget']['label'], '!link_acciones' => $link_acciones, '!link_proyecto' => $link_proyecto, '@nombre_proyecto' => $form['#node']->titulo_asignado,));
$output .= '' . $mensaje_mostrar . '
';
}
if (variable_get('proyectos_operativos_muestra_enunciado_problema', TRUE)) {
$output .= '' . t('Enunciado del Problema') . ' ' . drupal_render($form['field_proyecto_causas']) . drupal_render($form['field_proyecto_problemas']) . drupal_render($form['field_proyecto_consecuencias']);
if (count($form['#fields_form_ip_in'])) {
foreach($form['#fields_form_ip_in'] as $id_c) {
$output .= drupal_render($form[$id_c]);
}
}
$output .= ' ';
}
if (variable_get('proyectos_operativos_muestra_justicacion', TRUE)) {
$output .= '' . t('Justificación del Proyecto') . ' ' . drupal_render($form['field_proyecto_justificacion']);
if (count($form['#fields_form_ip_ju'])) {
foreach($form['#fields_form_ip_ju'] as $id_c) {
$output .= drupal_render($form[$id_c]);
}
}
$output .= ' ';
}
if (variable_get('proyectos_operativos_muestra_alcance', TRUE)) {
$output .= '' . t('Alcance del Proyecto') . ' ' . drupal_render($form['field_proyecto_alcance']);
if (count($form['#fields_form_ip_al'])) {
foreach($form['#fields_form_ip_al'] as $id_c) {
$output .= drupal_render($form[$id_c]);
}
}
$output .= ' ';
}
$sa = variable_get('proyectos_operativos_muestra_sa', TRUE);
$so = variable_get('proyectos_operativos_muestra_so', TRUE);
if ($sa || $so) {
$output .= drupal_render($form['indicador']);
}
$output .= '' . t('Indicador del resultado del Proyecto') . ' ' ;
$output .= drupal_render($form['field_proyecto_descripcion_bien']);
$output .= drupal_render($form['field_proyecto_unidadm']);
//$output .= drupal_render($form['field_proyecto_so_cuantificacion']);
if (isset($form['field_proyecto_meta_m']) && $form['field_proyecto_meta_f']) {
$output .= '';
}
$output .= drupal_render($form['field_proyecto_meta_fisica']);
if (count($form['#fields_form_ip_re'])) {
foreach($form['#fields_form_ip_re'] as $id_c) {
$output .= drupal_render($form[$id_c]);
}
}
$output .= ' ';
$output .= drupal_render($form);
return $output;
}
function proyectos_operativos_theme_registry_alter(&$theme_registry) {
$theme_registry['hierarchical_select_select']['function'] = 'proyectos_operativos_hierarchical_select_select';
}
/**
* Format a select in the .hierarchial-select div: prevent it from being
* wrapped in a div. This simplifies the CSS and JS code.
*
* @param $element
* An associative array containing the properties of the element.
* @return
* A themed HTML string representing the form element.
*/
function proyectos_operativos_hierarchical_select_select($element) {
$display_label = '';
foreach($element['#options'] as $id => $label) {
if ($label && !is_numeric($id)) {
$display_label = '' . $label . ': ';
$element['#options'][$id] = t('seleccione');
}
}
$select = '';
$size = $element['#size'] ? ' size="'. $element['#size'] .'"' : '';
$class = array('form-select');
if (form_get_error($element) === '') {
$class = array_merge($class, array('error'));
}
_form_set_class($element, $class);
$multiple = isset($element['#multiple']) && $element['#multiple'];
return $display_label . ''. _hierarchical_select_options($element) .' ';
}
/**
* Implementation of hook_views_api().
*/
function proyectos_operativos_views_api() {
return array(
'api' => '2.0',
'path' => drupal_get_path('module', 'proyectos_operativos') . '/views',
);
}
/**
* Implementation of proyectos_operativos_search_ac_display().
* Muestra la lista de proyectos disponibles.
*/
function proyectos_operativos_agregar_proyectoente() {
global $user;
//add breadcrumb
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), '');
$breadcrumb[] = t('Proyectos Operativos');
drupal_set_breadcrumb($breadcrumb);
$view_id = 'Agregar_proyecto';
$view = views_get_view($view_id);
$display_id = 'default';
$view->set_display($display_id);
$view->override_path = $_GET['q'];
$view->pre_execute();
$view->execute();
$output = $view->render();
return $output;
}
/**
* Implementation of hook_block().
*
* Genera un bloque con el estatus de la planificación
*/
function proyectos_operativos_block($op = 'list', $delta = 0) {
if (module_exists('workflow')) {
$wid = workflow_get_workflow_for_type('proyectos_operativos');
if ($wid) {
if ($op == 'list') {
$blocks[0]['info'] = t('Estatus del Avance de proyectos');
return $blocks;
}
else if ($op == 'view' && user_access('ver planificador')) {
if((arg(0) == 'proyectosop' && is_numeric(arg(1)))) {
$states = workflow_get_states($wid);
$proyecto = node_load(arg(1));
$block['subject'] = t('Avance del Proyecto');
$block['content'] = _proyecto_operativos_flujo_avance_theme($proyecto, $states);
}
return $block;
}
}
}
}
/**
* Implementation of _proyecto_operativos_flujo_avance_theme().
*/
function _proyecto_operativos_flujo_avance_theme($proyecto = 0, $states = 0) {
if (count($states)) {
return theme('proyecto_operativos_flujo_avance', $proyecto, $states);
}
else {
return t('No se han definido estados para Proyectos Operativos');
}
}