NULL dates istead of 0000-00-00
[ferlib2koha.git] / ferlib2koha.pl
index 342d8db..a2bfbbb 100755 (executable)
@@ -8,7 +8,7 @@ use Algorithm::CheckDigits;
 $|++;
 
 my $import = {
-       borrowers => 1,
+       borrowers => 0,
        issues => 0,
        barcode => 0,
 };
@@ -56,11 +56,11 @@ sub insert {
        );
 
        foreach my $c ( grep { /(date|timestamp)/ } keys %$row ) {
-               $row->{$c} =~ s/^(\d\d)\.(\d\d)\.(\d\d\d\d)/$3-$2-$1/;
+               $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
        }
 
        $insert->{$table}->execute( values %$row );
-       warn "# inserted ", dump $row;
+       warn "# inserted $table ", dump $row;
 
 }
 
@@ -87,6 +87,8 @@ sub borrowers {
 
                $row->{'email'}    = lookup($u, 'users', 'jmbag', 'email', substr($row->{cardnumber},1), undef); # $row->{B_email} || $row->{emailpro} )
 
+               $row->{'userid'}    = lookup($u, 'users', 'jmbag', 'nick', substr($row->{cardnumber},1), $row->{cardnumber});
+
                $row->{sex} =~ s/\x{17D}/F/;
 
                $row->{city} ||= '?'; # not null
@@ -204,6 +206,7 @@ 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});
+               $row->{returndate} = '31.12.2011';
                insert $table => $row;
        }
 }
@@ -236,9 +239,59 @@ set onloan = date_due, datelastborrowed = issuedate
 
 }; # import->{issues}
 
-if ( $import->{barcode} ) {
 
-my $sth        = $k->prepare(qq{ select itemnumber,barcode from items });
+
+$k->do(qq{ delete from reserves where borrowernumber > 100 });
+$k->do(qq{ delete from old_reserves where borrowernumber > 100 });
+
+sub reserves {
+       my ($table, $sql) = @_;
+       my $sth = $f->prepare($sql);
+       $sth->execute;
+
+       $insert = undef;
+
+       while (my $row = $sth->fetchrow_hashref ) {
+
+               $row->{found} =
+                       $row->{found}      ? 'F' : 
+                       $row->{itemnumber} ? 'W' : undef;
+
+               $row->{borrowernumber} = lookup($k, 'borrowers', 'cardnumber' => 'borrowernumber', $row->{borrowernumber});
+               $row->{biblionumber}   = lookup($k, 'biblioitems', 'collectionvolume' => 'biblionumber', $row->{biblionumber});
+               $row->{itemnumber}     = lookup($k, 'items', 'barcode' => 'itemnumber', $row->{itemnumber});
+
+               insert $table => $row;
+       }
+}
+
+my $sql_reserves = qq{
+select
+       ozn_vrclan||ozn_clan as borrowernumber,
+       datum_rezerv as reservedate,
+       sif_naslov as biblionumber,
+       'a' as constrainttype,
+       'SRE' as branchcode,
+       datum_obavijest as notificationdate,
+       datum_ponist as cancellationdate,
+       prior_rezerv as priority,
+       datum_posud as found, -- F|W
+       datum_rezerv||' '||vrijeme_rezerv as timestamp,
+       sif_primj as itemnumber,
+       datum_obavijest as waitingdate,
+       vrijedi_do as expirationdate,
+       0 as lowestPriority
+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 == ''};
+
+
+
+if ( $import->{barcode} ) { # XXX must be last!
+
+my $sth        = $k->prepare(qq{ select itemnumber,barcode from items where length(barcode) < 13 });
 my $sth_update = $k->prepare(qq{ update items set barcode=? where itemnumber=? });
 
 $sth->execute;
@@ -252,4 +305,7 @@ while( my $row = $sth->fetchrow_hashref ) {
 
 } # import->{barcode}
 
+
+
+
 $k->commit;