X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=ferlib2koha.pl;h=343c6e03b14beea5f558b0ba5d2835c95ad78b64;hb=f661e5b3f7d5b3064ad791d444dc7b78a396b12d;hp=a2bfbbb5d6b6797e0ea0f2c893f45fa619cd0d34;hpb=7c751ce257cfb681a8f01bfcefdb1f15eb504b19;p=ferlib2koha.git diff --git a/ferlib2koha.pl b/ferlib2koha.pl index a2bfbbb..343c6e0 100755 --- a/ferlib2koha.pl +++ b/ferlib2koha.pl @@ -8,9 +8,10 @@ use Algorithm::CheckDigits; $|++; my $import = { - borrowers => 0, - issues => 0, - barcode => 0, + borrowers => $ENV{FULL} || 0, + issues => $ENV{FULL} || 0, + reserves => $ENV{FULL} || 1, + barcode => $ENV{FULL} || 0, }; my $f = DBI->connect("dbi:SQLite:dbname=knjiznica.sqlite","","", { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr; @@ -56,7 +57,8 @@ sub insert { ); foreach my $c ( grep { /(date|timestamp)/ } keys %$row ) { - $row->{$c} =~ s/^(\d\d)\.(\d\d)\.(\d\d\d\d)/$3-$2-$1/ or $row->{$c} = undef; # XXX NULL dates istead of 0000-00-00 + $row->{$c} =~ s/^(\d\d)\.(\d\d)\.(\d\d\d\d)/$3-$2-$1/; + $row->{$c} = undef if $row->{$c} eq ''; # XXX NULL dates istead of 0000-00-00 } $insert->{$table}->execute( values %$row ); @@ -73,7 +75,7 @@ sub borrowers { while (my $row = $sth->fetchrow_hashref ) { - warn dump $row; +# warn dump $row; # poor man's (sqlite) outer join $row->{'country'} = lookup($f, 'drzava', 'ozn_drzava', 'naz_drzava', $row->{'country'}, $row->{contry} ); @@ -196,6 +198,8 @@ warn "# BorrowersTitles [$BorrowersTitles]"; } # import->{borrowers} +$k->do(qq{ update items set barcode=substr(barcode,1,12)*1 where length(barcode) = 13 }); # convert barcodes back for lookups to work + sub issues { my ($table,$sql) = @_; my $sth = $f->prepare($sql); @@ -206,8 +210,19 @@ sub issues { while (my $row = $sth->fetchrow_hashref ) { $row->{borrowernumber} = lookup($k, 'borrowers', 'cardnumber' => 'borrowernumber', $row->{borrowernumber}); $row->{itemnumber} = lookup($k, 'items', 'barcode' => 'itemnumber', $row->{itemnumber}); + + my $stat = { + datetime => $row->{returndate} || $row->{issuedate}, + branch => $row->{branchcode}, + value => 0, + type => $row->{returndate} ? 'return' : 'issue', + }; + $stat->{$_} = $row->{$_} foreach (qw( itemnumber borrowernumber )); + $row->{returndate} = '31.12.2011'; insert $table => $row; + + insert statistics => $stat; } } @@ -240,6 +255,7 @@ set onloan = date_due, datelastborrowed = issuedate }; # import->{issues} +if ( $import->{reserves} ) { $k->do(qq{ delete from reserves where borrowernumber > 100 }); $k->do(qq{ delete from old_reserves where borrowernumber > 100 }); @@ -274,7 +290,7 @@ select 'SRE' as branchcode, datum_obavijest as notificationdate, datum_ponist as cancellationdate, - prior_rezerv as priority, + 2 - prior_rezerv as priority, datum_posud as found, -- F|W datum_rezerv||' '||vrijeme_rezerv as timestamp, sif_primj as itemnumber, @@ -287,6 +303,7 @@ from rezerv reserves 'old_reserves' => qq{$sql_reserves where datum_opoziv != '' or datum_ponist != '' or datum_posud != ''}; reserves 'reserves' => qq{$sql_reserves where datum_opoziv == '' and datum_ponist == '' and datum_posud == ''}; +} # $import->{reserves} if ( $import->{barcode} ) { # XXX must be last!