[grisbi-cvs] grisbi/src gsb_account_property.c,1.28,1.29
Pierre Biava
pbiava at users.sourceforge.net
Sun Apr 5 22:03:27 CEST 2009
- Previous message: [grisbi-cvs] grisbi/po de.po,1.77,1.78
- Next message: [grisbi-cvs] grisbi/po cs.po, 1.28, 1.29 da.po, 1.35, 1.36 de.po, 1.78, 1.79 es.po, 1.71, 1.72 fa.po, 1.22, 1.23 fr.po, 1.150, 1.151 grisbi.pot, 1.70, 1.71 he.po, 1.28, 1.29 it.po, 1.28, 1.29 nl.po, 1.27, 1.28 pl.po, 1.33, 1.34 pt_BR.po, 1.30, 1.31 ro.po, 1.28, 1.29 ru.po, 1.27, 1.28 zh_CN.po, 1.22, 1.23
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/grisbi/grisbi/src
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv4372
Modified Files:
gsb_account_property.c
Log Message:
fix crash bug in case of seizure of IBAN number without model.
Index: gsb_account_property.c
===================================================================
RCS file: /cvsroot/grisbi/grisbi/src/gsb_account_property.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- gsb_account_property.c 4 Apr 2009 19:51:41 -0000 1.28
+++ gsb_account_property.c 5 Apr 2009 20:03:25 -0000 1.29
@@ -106,9 +106,14 @@
{ "BE", "BEkk BBBC CCCC CCKK", 16 },
{ "CH", "CHkk BBBB BCCC CCCC CCCC C", 21 },
{ "DE", "DEkk BBBB BBBB CCCC CCCC CC", 22 },
- { "EN", "GBkk BBBB SSSS SSCC CCCC CC", 22 },
+ { "ES", "ESkk BBBB GGGG KKCC CCCC CCCC", 24 },
{ "FR", "FRkk BBBB BGGG GGCC CCCC CCCC CKK", 27 },
+ { "GB", "GBkk BBBB SSSS SSCC CCCC CC", 22 },
+ { "IE", "IEkk AAAA BBBB BBCC CCCC CC", 22 },
{ "LU", "LUkk BBBC CCCC CCCC CCCC", 20 },
+ { "NL", "NLkk BBBB CCCC CCCC CC", 18 },
+ { "PT", "PTkk BBBB BBBB CCCC CCCC CCCK K", 25 },
+ { "SE", "SEkk BBBB CCCC CCCC CCCC CCCC", 24 },
{ NULL },
};
@@ -579,26 +584,7 @@
gsb_data_account_get_bank_account_iban (current_account)) )
gsb_account_property_iban_set_sensitive_bank_data ( FALSE );
else
- {
- gsb_bank_list_set_bank (bank_list_combobox,
- bank_number,
- current_account );
-
- gsb_account_property_set_label_code_banque ( );
-
- gsb_autofunc_entry_set_value (detail_guichet,
- gsb_data_account_get_bank_branch_code (
- current_account), current_account);
-
- gsb_autofunc_entry_set_value (detail_no_compte,
- gsb_data_account_get_bank_account_number (
- current_account), current_account );
-
- gsb_autofunc_entry_set_value (detail_cle_compte,
- gsb_data_account_get_bank_account_key (
- current_account), current_account );
gsb_account_property_iban_set_sensitive_bank_data ( TRUE );
- }
gsb_autofunc_real_set ( detail_solde_init,
gsb_data_account_get_init_balance (current_account,
@@ -981,25 +967,25 @@
case GDK_KP_Enter :
case GDK_Return :
iban = gtk_editable_get_chars ( GTK_EDITABLE (entry), 0, -1 );
- if ( gsb_account_property_iban_control_iban (iban) == 1 )
- {
- current_account = gsb_gui_navigation_get_current_account ();
- gsb_data_account_set_bank_account_iban ( current_account, iban );
- gsb_account_property_iban_set_bank_from_iban ( iban );
- }
- else if ( gsb_account_property_iban_control_iban (iban) == -1 )
- {
- current_account = gsb_gui_navigation_get_current_account ();
- gsb_data_account_set_bank_account_iban ( current_account, iban );
- }
- else
+ if ( gsb_account_property_iban_control_iban (iban) == 0 )
{
+ gint position = 0;
+
gchar *tmpstr = g_strdup_printf (
_("Your IBAN number is not correct. Please check your entry.") );
dialogue_warning ( tmpstr );
g_free ( tmpstr );
+ gtk_editable_delete_text ( GTK_EDITABLE (detail_IBAN), 0, -1 );
+ gtk_editable_insert_text ( GTK_EDITABLE (detail_IBAN),
+ iban, -1, &position );
+ }
+ else
+ {
+ current_account = gsb_gui_navigation_get_current_account ();
+ gsb_data_account_set_bank_account_iban ( current_account, iban );
+ gsb_account_property_iban_set_bank_from_iban ( iban );
+ modification_fichier ( TRUE );
}
- modification_fichier ( TRUE );
if ( iban && strlen (iban) > 0 )
g_free ( iban );
@@ -1047,19 +1033,17 @@
return FALSE;
iban = gtk_editable_get_chars ( GTK_EDITABLE (entry), 0, -1 );
+ devel_debug (iban);
- if ( gsb_account_property_iban_control_iban (iban) == 1 )
+ if ( gsb_account_property_iban_control_iban (iban) == 0 )
+ gsb_account_property_iban_set_iban (
+ gsb_data_account_get_bank_account_iban (current_account) );
+ else
{
gsb_data_account_set_bank_account_iban ( current_account, iban );
gsb_account_property_iban_set_bank_from_iban ( iban );
+ modification_fichier ( TRUE );
}
- else if ( gsb_account_property_iban_control_iban (iban) == -1 )
- gsb_data_account_set_bank_account_iban ( current_account, iban );
- else
- gsb_account_property_iban_set_iban (
- gsb_data_account_get_bank_account_iban (current_account) );
-
- modification_fichier ( TRUE );
if ( iban && strlen (iban) > 0 )
g_free ( iban );
@@ -1080,7 +1064,6 @@
struct iso_13616_iban *s_iban;
gchar *model;
gchar *tmpstr;
- gchar *str;
gchar *ptr_1;
gchar *ptr_2;
gchar *code;
@@ -1090,22 +1073,42 @@
gint current_account;
gunichar c;
gboolean set_label = FALSE;
- //~ gboolean set_branch = FALSE;
- //~ gboolean set_account = FALSE;
- //~ gboolean set_key = FALSE;
+
+ current_account = gsb_gui_navigation_get_current_account ();
+ bank_number = gsb_data_account_get_bank (current_account);
+
+ /* set bank à revoir avec gestion des iban */
+
+ gsb_bank_list_set_bank (bank_list_combobox,
+ bank_number,
+ current_account );
if ( iban == NULL || strlen (iban) == 0 )
+ {
+ gsb_account_property_set_label_code_banque ( );
+ gsb_autofunc_entry_set_value (detail_guichet,
+ gsb_data_account_get_bank_branch_code (
+ current_account), current_account);
+ gsb_autofunc_entry_set_value (detail_no_compte,
+ gsb_data_account_get_bank_account_number (
+ current_account), current_account );
+ gsb_autofunc_entry_set_value (detail_cle_compte,
+ gsb_data_account_get_bank_account_key (
+ current_account), current_account );
return FALSE;
+ }
s_iban = gsb_account_property_iban_get_struc ( g_strndup (iban, 2) );
+
+ /* on ne fixe pas les données banquaires pour un IBAN sans modèle */
if ( g_strcmp0 (s_iban -> locale, "XX") == 0 )
{
- tmpstr = g_strdup_printf ( _("Your number IBAN does not have model. "
- "The updating of banking data is not possible.") );
- dialogue_warning ( tmpstr );
- g_free ( tmpstr );
+ gsb_bank_list_set_bank (bank_list_combobox, 0, current_account );
+ gtk_label_set_text ( GTK_LABEL (label_code_banque), "" );
+ gsb_account_property_iban_set_sensitive_bank_data ( TRUE );
return FALSE;
}
+
model = my_strdelimit ( s_iban -> iban, " -", "" );
tmpstr = my_strdelimit ( iban, " -", "" );
if ( g_utf8_strlen (model, -1) != g_utf8_strlen (tmpstr, -1) )
@@ -1113,20 +1116,6 @@
code = g_malloc0 ( 36 * sizeof (gunichar) );
- /* set bank à revoir avec gestion des iban */
- current_account = gsb_gui_navigation_get_current_account ();
- bank_number = gsb_data_account_get_bank (current_account);
-
- g_signal_handlers_block_by_func ( G_OBJECT (bank_list_combobox),
- G_CALLBACK (gsb_account_property_changed_bank_label),
- NULL );
- gsb_bank_list_set_bank (bank_list_combobox,
- bank_number,
- current_account );
- g_signal_handlers_unblock_by_func ( G_OBJECT (bank_list_combobox),
- G_CALLBACK (gsb_account_property_changed_bank_label),
- NULL );
-
/* set label_code_banque */
c = 'A';
ptr_1 = g_utf8_strchr ( model, -1, c );
@@ -1158,7 +1147,10 @@
}
/* set bank_branch_code */
- c = 'G';
+ if ( c == 'A' )
+ c = 'B';
+ else
+ c = 'G';
ptr_1 = g_utf8_strchr ( model, -1, c );
if ( ptr_1 == NULL )
c = 'S';
@@ -1171,19 +1163,19 @@
pos_char_2 = g_utf8_pointer_to_offset ( model, ptr_2 );
code = g_utf8_strncpy ( code, ptr_1, (pos_char_2 - pos_char_1) + 1 );
- if ( g_object_get_data (G_OBJECT (detail_guichet), "changed") > 0 )
- g_signal_handler_block ( (gpointer *) detail_guichet,
- (gulong) g_object_get_data ( G_OBJECT
- (detail_guichet), "changed" ) );
- gtk_entry_set_text ( GTK_ENTRY (detail_guichet), code );
- if ( g_object_get_data (G_OBJECT (detail_guichet), "changed") > 0 )
- g_signal_handler_unblock ( (gpointer *) detail_guichet,
- (gulong) g_object_get_data ( G_OBJECT
- (detail_guichet), "changed" ) );
- str = gsb_data_account_get_bank_branch_code ( current_account );
- if ( str == NULL || g_utf8_collate (code, str) != 0 )
- gsb_data_account_set_bank_branch_code ( current_account, code );
}
+ else
+ code = g_strdup ( "" );
+
+ if ( g_object_get_data (G_OBJECT (detail_guichet), "changed") > 0 )
+ g_signal_handler_block ( (gpointer *) detail_guichet,
+ (gulong) g_object_get_data ( G_OBJECT
+ (detail_guichet), "changed" ) );
+ gtk_entry_set_text ( GTK_ENTRY (detail_guichet), code );
+ if ( g_object_get_data (G_OBJECT (detail_guichet), "changed") > 0 )
+ g_signal_handler_unblock ( (gpointer *) detail_guichet,
+ (gulong) g_object_get_data ( G_OBJECT
+ (detail_guichet), "changed" ) );
/* set bank_account_number */
c = 'C';
@@ -1206,9 +1198,6 @@
g_signal_handler_unblock ( (gpointer *) detail_no_compte,
(gulong) g_object_get_data ( G_OBJECT
(detail_no_compte), "changed" ) );
- str = gsb_data_account_get_bank_account_number ( current_account );
- if ( str == NULL || g_utf8_collate (code, str) != 0 )
- gsb_data_account_set_bank_account_number ( current_account, code );
}
/* set bank_account_key */
@@ -1223,19 +1212,18 @@
pos_char_2 = g_utf8_pointer_to_offset ( model, ptr_2 );
code = g_utf8_strncpy ( code, ptr_1, (pos_char_2 - pos_char_1) + 1 );
- if ( g_object_get_data (G_OBJECT (detail_cle_compte), "changed") > 0 )
- g_signal_handler_block ( (gpointer *) detail_cle_compte,
- (gulong) g_object_get_data ( G_OBJECT
- (detail_cle_compte), "changed" ) );
- gtk_entry_set_text ( GTK_ENTRY (detail_cle_compte), code );
- if ( g_object_get_data (G_OBJECT (detail_cle_compte), "changed") > 0 )
- g_signal_handler_unblock ( (gpointer *) detail_cle_compte,
- (gulong) g_object_get_data ( G_OBJECT
- (detail_cle_compte), "changed" ) );
- str = gsb_data_account_get_bank_account_key ( current_account );
- if ( str == NULL || g_utf8_collate (code, str) != 0 )
- gsb_data_account_set_bank_account_key ( current_account, code );
- }
+ }
+ else
+ code = g_strdup ( "" );
+ if ( g_object_get_data (G_OBJECT (detail_cle_compte), "changed") > 0 )
+ g_signal_handler_block ( (gpointer *) detail_cle_compte,
+ (gulong) g_object_get_data ( G_OBJECT
+ (detail_cle_compte), "changed" ) );
+ gtk_entry_set_text ( GTK_ENTRY (detail_cle_compte), code );
+ if ( g_object_get_data (G_OBJECT (detail_cle_compte), "changed") > 0 )
+ g_signal_handler_unblock ( (gpointer *) detail_cle_compte,
+ (gulong) g_object_get_data ( G_OBJECT
+ (detail_cle_compte), "changed" ) );
g_free ( model );
g_free ( tmpstr );
@@ -1303,7 +1291,11 @@
return -1;
s_iban = gsb_account_property_iban_get_struc ( g_strndup (iban, 2) );
- if ( g_strcmp0 (s_iban -> locale, "XX") != 0 )
+
+ /* on ne contrôle pas l'IBAN sans modèle */
+ if ( g_strcmp0 (s_iban -> locale, "XX") == 0 )
+ return 1;
+ else
{
model = my_strdelimit ( s_iban -> iban, " -", "" );
@@ -1315,7 +1307,7 @@
return 0;
}
}
-
+
/* mise en forme de l'IBAN avant contrôle */
tmpstr = g_strconcat ( tmpstr + 4, g_strndup (tmpstr, 4), NULL );
- Previous message: [grisbi-cvs] grisbi/po de.po,1.77,1.78
- Next message: [grisbi-cvs] grisbi/po cs.po, 1.28, 1.29 da.po, 1.35, 1.36 de.po, 1.78, 1.79 es.po, 1.71, 1.72 fa.po, 1.22, 1.23 fr.po, 1.150, 1.151 grisbi.pot, 1.70, 1.71 he.po, 1.28, 1.29 it.po, 1.28, 1.29 nl.po, 1.27, 1.28 pl.po, 1.33, 1.34 pt_BR.po, 1.30, 1.31 ro.po, 1.28, 1.29 ru.po, 1.27, 1.28 zh_CN.po, 1.22, 1.23
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the cvs
mailing list