From: Andrea Zagli Date: Sat, 23 Feb 2013 15:02:00 +0000 (+0100) Subject: Pubblicazione dell'atto all'albo. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=eb39446b606df5cedc0173c6da96c70c6b2f04e9;p=albonline%2Fbe Pubblicazione dell'atto all'albo. Implementazione ricerca atti nel registro dell'albo. --- diff --git a/data/messi/form/Makefile.am b/data/messi/form/Makefile.am index 7be77d0..14ee06f 100644 --- a/data/messi/form/Makefile.am +++ b/data/messi/form/Makefile.am @@ -4,6 +4,7 @@ form_DATA = \ atto.form \ attoallegato.form \ tipoatto.form \ - trovaatti.form + trovaatti.form \ + trovaregistro.form EXTRA_DIST = $(form_DATA) diff --git a/data/messi/form/trovaregistro.form b/data/messi/form/trovaregistro.form new file mode 100644 index 0000000..6549621 --- /dev/null +++ b/data/messi/form/trovaregistro.form @@ -0,0 +1,62 @@ + + + + + + + + + + + + SELECT descrizione FROM tipi_atto WHERE id = ##key0::gint + + + + + + + + + + + + + + + SELECT nome FROM uffici WHERE id = ##key0::gint + + + + + + + + + date + %d/%m/%Y + + + + + + date + %d/%m/%Y + + + + + + date + %d/%m/%Y + + + + + + date + %d/%m/%Y + + + + diff --git a/data/messi/gui/messi.gui b/data/messi/gui/messi.gui index 8b00f47..1faae60 100644 --- a/data/messi/gui/messi.gui +++ b/data/messi/gui/messi.gui @@ -289,6 +289,20 @@ 2 + + + _Pubblica + True + True + True + True + + + False + False + 3 + + _Esporta @@ -300,7 +314,7 @@ False False - 3 + 4 @@ -314,7 +328,7 @@ False False - 4 + 5 @@ -328,7 +342,7 @@ False False - 5 + 6 @@ -342,7 +356,7 @@ False False - 6 + 7 diff --git a/src/atti.c b/src/atti.c index 342add2..af5f480 100644 --- a/src/atti.c +++ b/src/atti.c @@ -58,6 +58,8 @@ static void atti_on_btn_modifica_clicked (GtkButton *button, gpointer user_data); static void atti_on_btn_elimina_clicked (GtkButton *button, gpointer user_data); +static void atti_on_btn_pubblica_clicked (GtkButton *button, + gpointer user_data); static void atti_on_trv_atti_row_activated (GtkTreeView *tree_view, GtkTreePath *tree_path, GtkTreeViewColumn *column, @@ -183,6 +185,8 @@ Atti "clicked", G_CALLBACK (atti_on_btn_modifica_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button6"), "clicked", G_CALLBACK (atti_on_btn_elimina_clicked), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button19"), + "clicked", G_CALLBACK (atti_on_btn_pubblica_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview1"), "row-activated", G_CALLBACK (atti_on_trv_atti_row_activated), (gpointer)a); @@ -239,6 +243,8 @@ atti_carica (Atti *atti) guint gival; GDateTime *gdtval; + gboolean pubblicazione; + gchar *sql_where; gchar *sql; @@ -259,6 +265,8 @@ atti_carica (Atti *atti) gtk_list_store_clear (priv->lstore_atti); + pubblicazione = FALSE; + sql_where = g_strdup (""); if (priv->parametri_ricerca != NULL) @@ -311,6 +319,7 @@ atti_carica (Atti *atti) gval = (GValue *)g_hash_table_lookup (priv->parametri_ricerca, "pubblicazione_da_data"); if (gval != NULL && (gdtval = (GDateTime *)g_value_get_pointer (gval)) != NULL) { + pubblicazione = TRUE; sql_where = g_strconcat (sql_where, " AND a.pubblicazione_inizio_data >= '", g_date_time_format (gdtval, "%F"), "'", @@ -319,6 +328,7 @@ atti_carica (Atti *atti) gval = (GValue *)g_hash_table_lookup (priv->parametri_ricerca, "pubblicazione_a_data"); if (gval != NULL && (gdtval = (GDateTime *)g_value_get_pointer (gval)) != NULL) { + pubblicazione = TRUE; sql_where = g_strconcat (sql_where, " AND a.pubblicazione_fine_data <= '", g_date_time_format (gdtval, "%F"), "'", @@ -326,6 +336,12 @@ atti_carica (Atti *atti) } } + if (!pubblicazione) + { + sql_where = g_strconcat (sql_where, " AND r.id IS NULL", + NULL); + } + sql = g_strdup_printf ("SELECT a.id, a.numero," " ta.descrizione AS tipo_atto," " a.oggetto," @@ -334,6 +350,7 @@ atti_carica (Atti *atti) " a.pubblicazione_fine_data" " FROM atti AS a" " INNER JOIN tipi_atto AS ta ON a.id_tipi_atto = ta.id" + " LEFT JOIN registro AS r ON a.id = r.id_atti" " WHERE a.status <> 'E'" "%s" " ORDER BY a.id", @@ -586,6 +603,64 @@ atti_on_btn_elimina_clicked (GtkButton *button, } } +static void +atti_on_btn_pubblica_clicked (GtkButton *button, + gpointer user_data) +{ + GtkTreeIter iter; + gint id; + + gchar *sql; + GdaDataModel *dm; + guint newid; + + Atti *atti = (Atti *)user_data; + AttiPrivate *priv = ATTI_GET_PRIVATE (atti); + + if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) + { + if (solipa_message_dialog (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")), + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_YES_NO, + "Sicuro di voler pubblicare l'atto selezionato?") == GTK_RESPONSE_YES) + { + gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_atti), &iter, + COL_ID, &id, + -1); + + newid = 0; + sql = g_strdup_printf ("SELECT COALESCE(MAX(id), 0) FROM registro"); + dm = gdaex_query (priv->commons->gdaex, sql); + g_free (sql); + if (dm != NULL) + { + if (gda_data_model_get_n_rows (dm) > 0) + { + newid = gdaex_data_model_get_value_integer_at (dm, 0, 0); + } + g_object_unref (dm); + } + newid++; + + sql = g_strdup_printf ("INSERT INTO registro" + " (id, id_atti, azione, azione_data)" + " VALUES (%d, %d, 1, CURRENT_TIMESTAMP)", + newid, id); + gdaex_execute (priv->commons->gdaex, sql); + g_free (sql); + + atti_carica (atti); + } + } + else + { + solipa_message_dialog (priv->selezione ? priv->widget : GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare un atto."); + } +} + static void atti_on_trv_atti_row_activated (GtkTreeView *tree_view, GtkTreePath *tree_path, diff --git a/src/registro.c b/src/registro.c index 8be69a0..bc02e59 100644 --- a/src/registro.c +++ b/src/registro.c @@ -85,6 +85,8 @@ enum COL_ID_ATTI }; +gchar *azioni[] = {"Pubblicato", "Respinto", "Depubblicato", "Ratificato"}; + typedef struct _RegistroPrivate RegistroPrivate; struct _RegistroPrivate { @@ -330,7 +332,7 @@ registro_carica (Registro *registro) " INNER JOIN tipi_atto AS ta ON a.id_tipi_atto = ta.id" " WHERE a.status <> 'E'" "%s" - " ORDER BY a.id", + " ORDER BY r.id DESC", sql_where); dm = gdaex_query (priv->commons->gdaex, sql); g_free (sql_where); @@ -369,7 +371,7 @@ registro_carica (Registro *registro) COL_DATA_RICEZIONE, solipa_gdatetime_format (gdaex_data_model_get_field_value_gdatetime_at (dm, row, "ricezione_data"), "%d/%m/%Y"), COL_DATA_INIZIO_PUBBLICAZIONE, solipa_gdatetime_format (gdaex_data_model_get_field_value_gdatetime_at (dm, row, "pubblicazione_inizio_data"), "%d/%m/%Y"), COL_DATA_FINE_PUBBLICAZIONE, solipa_gdatetime_format (gdaex_data_model_get_field_value_gdatetime_at (dm, row, "pubblicazione_fine_data"), "%d/%m/%Y"), - COL_AZIONE, gdaex_data_model_get_field_value_stringify_at (dm, row, "azione"), + COL_AZIONE, azioni[gdaex_data_model_get_field_value_integer_at (dm, row, "azione") - 1], COL_AZIONE_DATA, solipa_gdatetime_format (gdaex_data_model_get_field_value_gdatetime_at (dm, row, "azione_data"), "%d/%m/%Y %H.%M.%S"), -1); @@ -392,7 +394,7 @@ registro_apri (Registro *registro) GtkWidget *w; gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_registro), &iter, - COL_ID, &id, + COL_ID_ATTI, &id, -1); Atto *c = atto_new (priv->commons, id); diff --git a/src/trovaregistro.c b/src/trovaregistro.c index f99d85c..addd2ba 100644 --- a/src/trovaregistro.c +++ b/src/trovaregistro.c @@ -141,21 +141,21 @@ TrovaRegistro g_signal_connect (priv->w, "key-release-event", G_CALLBACK (trova_registro_on_key_release_event), (gpointer)a); - g_object_set (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder15"), + g_object_set (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder5"), "gdaex", priv->commons->organigramma_commons->gdaex, NULL); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder4"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder3"), "btn-browse-clicked", G_CALLBACK (trova_registro_on_btn_tipo_atto_clicked), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder15"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder5"), "btn-browse-clicked", G_CALLBACK (trova_registro_on_btn_ufficio_clicked), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button20"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button11"), "clicked", G_CALLBACK (trova_registro_on_btn_pulisci_clicked), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button21"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button12"), "clicked", G_CALLBACK (trova_registro_on_btn_annulla_clicked), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button22"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button18"), "clicked", G_CALLBACK (trova_registro_on_btn_ok_clicked), (gpointer)a); gtk_form_clear (priv->form); @@ -216,7 +216,7 @@ trova_registro_on_tipo_atto_selezionato (gpointer instance, guint id, gpointer u TrovaRegistro *a = (TrovaRegistro *)user_data; TrovaRegistroPrivate *priv = TROVA_REGISTRO_GET_PRIVATE (a); - gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder4"), + gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder3"), g_strdup_printf ("%d", id)); } @@ -226,7 +226,7 @@ trova_registro_on_ufficio_selezionato (gpointer instance, guint id, gpointer use TrovaRegistro *a = (TrovaRegistro *)user_data; TrovaRegistroPrivate *priv = TROVA_REGISTRO_GET_PRIVATE (a); - gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder15"), + gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder5"), g_strdup_printf ("%d", id)); } @@ -258,7 +258,7 @@ trova_registro_on_key_release_event (GtkWidget *widget, { TrovaRegistroPrivate *priv = TROVA_REGISTRO_GET_PRIVATE ((TrovaRegistro *)user_data); - gtk_button_clicked (GTK_BUTTON (gtk_builder_get_object (priv->commons->gtkbuilder, "button21"))); + gtk_button_clicked (GTK_BUTTON (gtk_builder_get_object (priv->commons->gtkbuilder, "button12"))); return TRUE; }