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 )