EekBoek

 view release on metacpan or  search on metacpan

lib/EB/Wx/IniWiz.pm  view on Meta::CPAN

    $opts{adm_naam} = $self->{t_adm_name}->GetValue;
    $opts{adm_code} = $self->{t_adm_code}->GetValue;
    $opts{adm_begindatum} = $self->{sp_adm_begin}->GetValue;

    $opts{db_naam} = $self->{t_db_name}->GetValue;
    $opts{db_driver} = $db_drivers[$self->{ch_db_driver}->GetSelection];
    $opts{db_host} = $self->{t_db_host}->GetValue
      if $self->{t_db_host}->IsEnabled
	&& $self->{t_db_host}->GetValue
	  && $self->{t_db_host}->GetValue ne $default;
    $opts{db_port} = $self->{t_db_port}->GetValue
      if $self->{t_db_port}->IsEnabled
	&& $self->{t_db_port}->GetValue
	  && $self->{t_db_port}->GetValue ne $default;
    $opts{db_user} = $self->{t_db_user}->GetValue
      if $self->{t_db_user}->IsEnabled
	&& $self->{t_db_user}->GetValue
	  && $self->{t_db_user}->GetValue ne $default;
    $opts{db_password} = $self->{t_db_password}->GetValue
      if $self->{t_db_password}->IsEnabled
	&& $self->{t_db_password}->GetValue
	  && $self->{t_db_password}->GetValue ne "";
    #$opts{db_path} = $self->{dc_dbpath}->GetPath
    #  if $self->{dc_dbpath}->IsEnabled
    #	&& $self->{dc_dbpath}->GetPath !~ /^--/;
    $opts{"has_$_"} = $self->{"cb_$_"}->IsChecked
	foreach qw(debiteuren crediteuren kas bank btw);

    $opts{"create_$_"} = $self->{"cb_cr_$_"}->IsChecked
	foreach qw(config schema relaties opening mutaties database);

    $opts{adm_btwperiode} = qw(maand kwartaal jaar)[$self->{ch_btw_period}->GetSelection]
	if $opts{has_btw};

    $opts{template} = $ebz[ $self->{ch_template}->GetSelection ]->[0];

    if ( $opts{adm_code} ) {
	mkdir($opts{adm_code}) unless -d $opts{adm_code};
	chdir($opts{adm_code}) or die("chdir($opts{adm_code}): $!\n");;
    }

    $self->{b_ok}->Enable(0);
    my $log = $self->{t_main};
    eval {

	EB::Tools::MiniAdm->sanitize(\%opts);

	foreach my $c ( qw(config schema relaties opening mutaties database) ) {
	    my $msg = __x("Aanmaken {cfg}: ", cfg => $c);
	    $log->AppendText($msg);
	    if ( $opts{"create_$c"} ) {
		if ( $c eq "database" ) {
		    my $t = $log->GetInsertionPoint;
		    $log->AppendText(_T("Even geduld..."));
		    $self->Refresh;
		    $self->Update;
		    my $ret;
		    EB->app_init( { app => $EekBoek::PACKAGE, %opts } );
		    require EB::Main;
		    local $::app; # defeat Shell blocking of import command
		    local @ARGV = qw( --init );
		    my @msg;
		    my $out;
		    # Intercept warn and die.
		    local $SIG{__WARN__} = sub {
			push( @msg, join("\n", @_) );
		    };
		    local $SIG{__DIE__} = sub {
			push( @msg, "?".join("\n", @_) );
		    };

		    # Intercept STDOUT.
		    open( my $oldout, ">&STDOUT" );
		    close( STDOUT );
		    open( STDOUT, '>', \$out ) or die("STDOUT capture fail");

		    $ret = EB::Main->run;

		    # Restore STDOUT.
		    close(STDOUT);
		    open ( STDOUT, ">&", $oldout );

		    if ( $ret ) {
			$log->Replace($t,
				      $log->GetInsertionPoint,
				      _T("Mislukt")."\n");
		    }
		    else {
			$log->Replace($t,
				      $log->GetInsertionPoint,
				      _T("Gereed")."\n");
		    }
		    if ( $out || @msg ) {
			$self->{b_details}->Show(1);
			$self->{sz_buttons}->Layout;
			$self->{_details} = "";
			if ( @msg ) {
			    $self->{_details} .= _T("==== Meldingen ====")."\n";
			    $self->{_details} .= $_ . "\n" for @msg;
			}
			if ( $out ) {
			    $self->{_details} .= _T("==== Uitvoer ====")."\n";
			    $self->{_details} .= $out . "\n";
			}
		    }
		    $self->Update;
		}
		else {
		    $self->Refresh;
		    my $m = "generate_". $c;
		    EB::Tools::MiniAdm->$m(\%opts);
		    $log->AppendText(_T("Gereed")."\n");
		    $self->Update;
		}
	    }
	    else {
		$log->AppendText(_T("Overgeslagen")."\n");
	    }
	}
    };



( run in 1.158 second using v1.01-cache-2.11-cpan-54e63673c56 )