View | Details | Raw Unified | Return to bug 15168
Collapse All | Expand All

(-)a/C4/Serials.pm (-136 / +1 lines)
Lines 69-75 BEGIN { Link Here
69
      &HasSubscriptionStrictlyExpired &HasSubscriptionExpired &GetExpirationDate &abouttoexpire
69
      &HasSubscriptionStrictlyExpired &HasSubscriptionExpired &GetExpirationDate &abouttoexpire
70
      &GetSubscriptionHistoryFromSubscriptionId
70
      &GetSubscriptionHistoryFromSubscriptionId
71
71
72
      &GetNextSeq &GetSeq &NewIssue           &ItemizeSerials    &GetSerials
72
      &GetNextSeq &GetSeq &NewIssue           &GetSerials
73
      &GetLatestSerials   &ModSerialStatus    &GetNextDate       &GetSerials2
73
      &GetLatestSerials   &ModSerialStatus    &GetNextDate       &GetSerials2
74
      &ReNewSubscription  &GetLateOrMissingIssues
74
      &ReNewSubscription  &GetLateOrMissingIssues
75
      &GetSerialInformation                   &AddItem2Serial
75
      &GetSerialInformation                   &AddItem2Serial
Lines 1588-1728 sub NewIssue { Link Here
1588
    return $serialid;
1588
    return $serialid;
1589
}
1589
}
1590
1590
1591
=head2 ItemizeSerials
1592
1593
ItemizeSerials($serialid, $info);
1594
$info is a hashref containing  barcode branch, itemcallnumber, status, location
1595
$serialid the serialid
1596
return :
1597
1 if the itemize is a succes.
1598
0 and @error otherwise. @error containts the list of errors found.
1599
1600
=cut
1601
1602
sub ItemizeSerials {
1603
    my ( $serialid, $info ) = @_;
1604
1605
    return unless ($serialid);
1606
1607
    my $now = POSIX::strftime( "%Y-%m-%d", localtime );
1608
1609
    my $dbh   = C4::Context->dbh;
1610
    my $query = qq|
1611
        SELECT *
1612
        FROM   serial
1613
        WHERE  serialid=?
1614
    |;
1615
    my $sth = $dbh->prepare($query);
1616
    $sth->execute($serialid);
1617
    my $data = $sth->fetchrow_hashref;
1618
    if ( C4::Context->preference("RoutingSerials") ) {
1619
1620
        # check for existing biblioitem relating to serial issue
1621
        my ( $count, @results ) = GetBiblioItemByBiblioNumber( $data->{'biblionumber'} );
1622
        my $bibitemno = 0;
1623
        for ( my $i = 0 ; $i < $count ; $i++ ) {
1624
            if ( $results[$i]->{'volumeddesc'} eq $data->{'serialseq'} . ' (' . $data->{'planneddate'} . ')' ) {
1625
                $bibitemno = $results[$i]->{'biblioitemnumber'};
1626
                last;
1627
            }
1628
        }
1629
        if ( $bibitemno == 0 ) {
1630
            my $sth = $dbh->prepare( "SELECT * FROM biblioitems WHERE biblionumber = ? ORDER BY biblioitemnumber DESC" );
1631
            $sth->execute( $data->{'biblionumber'} );
1632
            my $biblioitem = $sth->fetchrow_hashref;
1633
            $biblioitem->{'volumedate'}  = $data->{planneddate};
1634
            $biblioitem->{'volumeddesc'} = $data->{serialseq} . ' (' . format_date( $data->{'planneddate'} ) . ')';
1635
            $biblioitem->{'dewey'}       = $info->{itemcallnumber};
1636
        }
1637
    }
1638
1639
    my $fwk = GetFrameworkCode( $data->{'biblionumber'} );
1640
    if ( $info->{barcode} ) {
1641
        my @errors;
1642
        if ( is_barcode_in_use( $info->{barcode} ) ) {
1643
            push @errors, 'barcode_not_unique';
1644
        } else {
1645
            my $marcrecord = MARC::Record->new();
1646
            my ( $tag, $subfield ) = GetMarcFromKohaField( "items.barcode", $fwk );
1647
            my $newField = MARC::Field->new( "$tag", '', '', "$subfield" => $info->{barcode} );
1648
            $marcrecord->insert_fields_ordered($newField);
1649
            if ( $info->{branch} ) {
1650
                my ( $tag, $subfield ) = GetMarcFromKohaField( "items.homebranch", $fwk );
1651
1652
                #warn "items.homebranch : $tag , $subfield";
1653
                if ( $marcrecord->field($tag) ) {
1654
                    $marcrecord->field($tag)->add_subfields( "$subfield" => $info->{branch} );
1655
                } else {
1656
                    my $newField = MARC::Field->new( "$tag", '', '', "$subfield" => $info->{branch} );
1657
                    $marcrecord->insert_fields_ordered($newField);
1658
                }
1659
                ( $tag, $subfield ) = GetMarcFromKohaField( "items.holdingbranch", $fwk );
1660
1661
                #warn "items.holdingbranch : $tag , $subfield";
1662
                if ( $marcrecord->field($tag) ) {
1663
                    $marcrecord->field($tag)->add_subfields( "$subfield" => $info->{branch} );
1664
                } else {
1665
                    my $newField = MARC::Field->new( "$tag", '', '', "$subfield" => $info->{branch} );
1666
                    $marcrecord->insert_fields_ordered($newField);
1667
                }
1668
            }
1669
            if ( $info->{itemcallnumber} ) {
1670
                my ( $tag, $subfield ) = GetMarcFromKohaField( "items.itemcallnumber", $fwk );
1671
1672
                if ( $marcrecord->field($tag) ) {
1673
                    $marcrecord->field($tag)->add_subfields( "$subfield" => $info->{itemcallnumber} );
1674
                } else {
1675
                    my $newField = MARC::Field->new( "$tag", '', '', "$subfield" => $info->{itemcallnumber} );
1676
                    $marcrecord->insert_fields_ordered($newField);
1677
                }
1678
            }
1679
            if ( $info->{notes} ) {
1680
                my ( $tag, $subfield ) = GetMarcFromKohaField( "items.itemnotes", $fwk );
1681
1682
                if ( $marcrecord->field($tag) ) {
1683
                    $marcrecord->field($tag)->add_subfields( "$subfield" => $info->{notes} );
1684
                } else {
1685
                    my $newField = MARC::Field->new( "$tag", '', '', "$subfield" => $info->{notes} );
1686
                    $marcrecord->insert_fields_ordered($newField);
1687
                }
1688
            }
1689
            if ( $info->{location} ) {
1690
                my ( $tag, $subfield ) = GetMarcFromKohaField( "items.location", $fwk );
1691
1692
                if ( $marcrecord->field($tag) ) {
1693
                    $marcrecord->field($tag)->add_subfields( "$subfield" => $info->{location} );
1694
                } else {
1695
                    my $newField = MARC::Field->new( "$tag", '', '', "$subfield" => $info->{location} );
1696
                    $marcrecord->insert_fields_ordered($newField);
1697
                }
1698
            }
1699
            if ( $info->{status} ) {
1700
                my ( $tag, $subfield ) = GetMarcFromKohaField( "items.notforloan", $fwk );
1701
1702
                if ( $marcrecord->field($tag) ) {
1703
                    $marcrecord->field($tag)->add_subfields( "$subfield" => $info->{status} );
1704
                } else {
1705
                    my $newField = MARC::Field->new( "$tag", '', '', "$subfield" => $info->{status} );
1706
                    $marcrecord->insert_fields_ordered($newField);
1707
                }
1708
            }
1709
            if ( C4::Context->preference("RoutingSerials") ) {
1710
                my ( $tag, $subfield ) = GetMarcFromKohaField( "items.dateaccessioned", $fwk );
1711
                if ( $marcrecord->field($tag) ) {
1712
                    $marcrecord->field($tag)->add_subfields( "$subfield" => $now );
1713
                } else {
1714
                    my $newField = MARC::Field->new( "$tag", '', '', "$subfield" => $now );
1715
                    $marcrecord->insert_fields_ordered($newField);
1716
                }
1717
            }
1718
            require C4::Items;
1719
            C4::Items::AddItemFromMarc( $marcrecord, $data->{'biblionumber'} );
1720
            return 1;
1721
        }
1722
        return ( 0, @errors );
1723
    }
1724
}
1725
1726
=head2 HasSubscriptionStrictlyExpired
1591
=head2 HasSubscriptionStrictlyExpired
1727
1592
1728
1 or 0 = HasSubscriptionStrictlyExpired($subscriptionid)
1593
1 or 0 = HasSubscriptionStrictlyExpired($subscriptionid)
(-)a/t/db_dependent/Serials.t (-4 / +1 lines)
Lines 15-21 use C4::Bookseller; Link Here
15
use C4::Biblio;
15
use C4::Biblio;
16
use C4::Budgets;
16
use C4::Budgets;
17
use Koha::DateUtils;
17
use Koha::DateUtils;
18
use Test::More tests => 46;
18
use Test::More tests => 45;
19
19
20
BEGIN {
20
BEGIN {
21
    use_ok('C4::Serials');
21
    use_ok('C4::Serials');
Lines 175-182 is(C4::Serials::ModSerialStatus(),undef, 'test modding serials'); Link Here
175
175
176
is(C4::Serials::NewIssue(), undef, 'test getting 0 when nothing is entered');
176
is(C4::Serials::NewIssue(), undef, 'test getting 0 when nothing is entered');
177
177
178
is(C4::Serials::ItemizeSerials(),undef, 'test getting nothing when nothing is entered');
179
180
is(C4::Serials::HasSubscriptionStrictlyExpired(), undef, 'test if the subscriptions has expired');
178
is(C4::Serials::HasSubscriptionStrictlyExpired(), undef, 'test if the subscriptions has expired');
181
is(C4::Serials::HasSubscriptionExpired(), undef, 'test if the subscriptions has expired');
179
is(C4::Serials::HasSubscriptionExpired(), undef, 'test if the subscriptions has expired');
182
180
183
- 

Return to bug 15168