EekBoek
view release on metacpan or search on metacpan
lib/EB/DB.pm view on Meta::CPAN
my $accts;
sub accts {
my ($self, $sel) = @_;
$sel = $sel ? " WHERE $sel" : "";
return $accts->{$sel} if $accts->{$sel};
my $sth = $self->sql_exec("SELECT acc_id,acc_desc".
" FROM Accounts".
$sel.
" ORDER BY acc_id");
my $rr;
while ( $rr = $sth->fetchrow_arrayref ) {
$accts->{$sel}->{$rr->[0]} = $rr->[1];
}
$accts->{$sel};
}
sub acc_inuse {
my ($dbh, $acc) = @_;
my $rr;
$rr = $dbh->do("SELECT jnl_acc_id FROM Journal".
" WHERE jnl_acc_id = ?".
" LIMIT 1", $acc);
return 1 if $rr && $rr->[0];
$rr = $dbh->do("SELECT dbk_acc_id FROM Dagboeken".
" WHERE dbk_acc_id = ?".
" LIMIT 1", $acc);
return 1 if $rr && $rr->[0];
$rr = $dbh->do("SELECT rel_acc_id FROM Relaties".
" WHERE rel_acc_id = ?".
" LIMIT 1", $acc);
return 1 if $rr && $rr->[0];
$rr = $dbh->do("SELECT bkb_acc_id FROM Boekjaarbalans".
" WHERE bkb_acc_id = ?",
$acc);
return 1 if $rr && $rr->[0];
if ( $rr = $dbh->do("SELECT * FROM Standaardrekeningen") ) {
for ( @$rr ) {
return 1 if defined($_) && $_ == $acc;
}
}
return;
}
sub dbh{
$dbh;
}
sub adm_open {
my ($self) = @_;
$self->connectdb;
$self->adm("bky") ne BKY_PREVIOUS;
}
sub adm_busy {
my ($self) = @_;
$self->connectdb;
$self->do("SELECT COUNT(*) FROM Journal")->[0];
}
sub does_btw {
my ($self) = @_;
$self->connectdb;
return defined($self->adm("btwbegin")) if $self->adm_open;
$self->do("SELECT COUNT(*)".
" FROM BTWTabel".
" WHERE btw_tariefgroep != 0")->[0];
}
################ API calls for simple applications ################
sub connect {
my $dataset = $cfg->val(qw(database name));
if ( !$dataset ) {
die(_T("Geen dataset opgegeven.".
" Specificeer een dataset in de configuratiefile.").
"\n");
}
$::dbh = EB::DB::->new();
}
sub disconnect {
$::dbh->disconnectdb;
undef $::dbh;
}
################ API calls for database backend ################
my $tx;
my $dbpkg;
sub connectdb {
my ($self, $nocheck) = @_;
return $dbh if $dbh;
my $pkg = $dbpkg || $self->_loaddbbackend;
my $dbname = $cfg->val(qw(database name));
croak("?INTERNAL ERROR: No database name") unless defined $dbname;
eval {
$dbh = $pkg->connect($dbname)
or die("?".__x("Database verbindingsprobleem: {err}",
err => $DBI::errstr)."\n");
};
die($@) if $@;
$dbpkg = $pkg;
$dbh->{RaiseError} = 1;
#$dbh->{AutoCommit} = 0;
$dbh->{ChopBlanks} = 1;
$self->check_db unless $nocheck;
$tx = 0;
$dbh;
}
sub disconnectdb {
( run in 1.688 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )