Palm-MaTirelire
view release on metacpan or search on metacpan
tools/M1toM2.pl view on Meta::CPAN
# One give us a preferences database
if (defined $PREFS)
{
$DESC = Palm::MaTirelire::Descriptions->new;
$MODES = Palm::MaTirelire::Modes->new;
$TYPES = Palm::MaTirelire::Types->new;
#
# Preferences...
my($prefs_v1, $prefs_v2, $add_v2);
foreach my $res (@{$PREFS->{resources}})
{
if ($res->{type} eq 'MaTi')
{
$prefs_v1 = $res->{data};
last if defined $prefs_v2;
}
if ($res->{type} eq 'MaT2')
{
$prefs_v2 = $res->{data};
last if defined $prefs_v1;
}
}
die "V1 preferences not found\n" unless defined $prefs_v1;
# No M2 preferences found
unless (defined $prefs_v2)
{
$prefs_v2 = {};
$add_v2 = 1;
}
$prefs_v2->{last_db} = $ACCOUNTS_V2->{name};
$prefs_v2->{first_form} = 2; # Transactions list screen
# Convert preferences
foreach my $key (qw(replace_desc updown_action time_select3 left_handed
timeout remove_type)) # access_code))
{
$prefs_v2->{$key} = $prefs_v1->{$key};
}
# M2 preferences don't exist, we have to add them...
if ($add_v2)
{
my $new_res = $PREFS->new_Resource;
$new_res->{type} = 'MaT2';
$new_res->{data} = $prefs_v2;
$PREFS->append_Resource($new_res);
}
# Descriptions
foreach my $desc (@{$prefs_v1->{descriptions}})
{
my $rec = $DESC->new_Record;
my($name, $macro, $sign, $amount, $mode, $type, $xfer)
= ($desc =~ /^(.*?)
(?:\ ?\((([-+]?)
(\d*\.?\d*)
(?:;([^;)]*)
(?:;([^;)]*)
(?:;([^;)]*))?
tools/M1toM2.pl view on Meta::CPAN
{ $rec->{sign} = 2 }
# Mode
if (defined $mode and $mode ne '')
{
if ($mode =~ s/\*\z//)
{
$rec->{cheque_num} = 1;
}
for (my $index = 0; $index < @{$prefs_v1->{modes}}; $index++)
{
if ($prefs_v1->{modes}[$index] =~ /^$mode/i)
{
$rec->{is_mode} = 1;
$rec->{mode} = $index;
last;
}
}
}
# Type
if (defined $type and $type ne '')
{
for (my $index = 0; $index < @{$prefs_v1->{types}}; $index++)
{
if ($prefs_v1->{types}[$index] =~ /^$type/i)
{
$rec->{is_type} = 1;
$rec->{type} = $index;
last;
}
}
}
# Amount
if (defined $amount and $amount ne '')
tools/M1toM2.pl view on Meta::CPAN
$rec->{name} = $name;
$DESC->append_Record($rec);
$num_desc++;
}
my $id;
# Modes
$id = 0;
foreach my $mode (@{$prefs_v1->{modes}})
{
my $rec = $MODES->new_Record;
my $name = $mode;
$rec->{mode_id} = $id;
if ($name =~ s/\s+\((?:\+(\d{1,2})|(\d{1,2})([-=])(\d{1,2}))\)\z//)
{
# (+X)
tools/M1toM2.pl view on Meta::CPAN
$rec->{name} = $name;
$MODES->append_Record($rec);
$num_modes++;
$id++;
}
# Types
$id = 0;
foreach my $type (@{$prefs_v1->{types}})
{
my $rec = $TYPES->new_Record;
$rec->{type_id} = $id;
$rec->{brother_id}= ($id == $#{$prefs_v1->{types}}) ? 0xff : ($id + 1);
$rec->{name} = $type;
$TYPES->append_Record($rec);
$num_types++;
$id++;
}
# Keep database preferences items
foreach my $key (qw(cur_category
remove_type check_locked repeat_startup
repeat_days sum_date sum_todayplus))
{
$ACCOUNTS_V2->{appinfo}{$key} = $prefs_v1->{$key};
}
}
#
# For each V1 account, create a V2 one with its properties
my $index = 0;
foreach my $ref_account (@{$ACCOUNTS_V1->{appinfo}{categories}})
{
if (defined $ref_account->{name} and $ref_account->{name} ne '')
( run in 1.489 second using v1.01-cache-2.11-cpan-5a3173703d6 )