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

(-)a/C4/RotatingCollections.pm (-50 lines)
Lines 48-108 BEGIN { Link Here
48
    require Exporter;
48
    require Exporter;
49
    @ISA    = qw( Exporter );
49
    @ISA    = qw( Exporter );
50
    @EXPORT = qw(
50
    @EXPORT = qw(
51
      AddItemToCollection
52
      RemoveItemFromCollection
51
      RemoveItemFromCollection
53
      TransferCollection
52
      TransferCollection
54
    );
53
    );
55
}
54
}
56
55
57
=head2 AddItemToCollection
58
59
 ( $success, $errorcode, $errormessage ) = AddItemToCollection( $colId, $itemnumber );
60
61
Adds an item to a rotating collection.
62
63
 Input:
64
   $colId: Collection to add the item to.
65
   $itemnumber: Item to be added to the collection
66
 Output:
67
   $success: 1 if all database operations were successful, 0 otherwise
68
   $errorCode: Code for reason of failure, good for translating errors in templates
69
   $errorMessage: English description of error
70
71
=cut
72
73
sub AddItemToCollection {
74
    my ( $colId, $itemnumber ) = @_;
75
76
    ## Check for all necessary parameters
77
    if ( !$colId ) {
78
        return ( 0, 1, "NO_ID" );
79
    }
80
    if ( !$itemnumber ) {
81
        return ( 0, 2, "NO_ITEM" );
82
    }
83
84
    if ( isItemInThisCollection( $itemnumber, $colId ) ) {
85
        return ( 0, 2, "IN_COLLECTION" );
86
    }
87
    elsif ( isItemInAnyCollection($itemnumber) ) {
88
        return ( 0, 3, "IN_COLLECTION_OTHER" );
89
    }
90
91
    my $dbh = C4::Context->dbh;
92
93
    my $sth;
94
    $sth = $dbh->prepare("
95
        INSERT INTO collections_tracking (
96
            colId,
97
            itemnumber
98
        ) VALUES ( ?, ? )
99
    ");
100
    $sth->execute( $colId, $itemnumber ) or return ( 0, 3, $sth->errstr() );
101
102
    return 1;
103
104
}
105
106
=head2  RemoveItemFromCollection
56
=head2  RemoveItemFromCollection
107
57
108
 ( $success, $errorcode, $errormessage ) = RemoveItemFromCollection( $colId, $itemnumber );
58
 ( $success, $errorcode, $errormessage ) = RemoveItemFromCollection( $colId, $itemnumber );
(-)a/Koha/RotatingCollection.pm (+33 lines)
Lines 22-28 use Modern::Perl; Link Here
22
use Carp;
22
use Carp;
23
23
24
use Koha::Database;
24
use Koha::Database;
25
use Koha::Exceptions;
25
use Koha::Items;
26
use Koha::Items;
27
use Koha::RotatingCollection::Trackings;
26
28
27
use base qw(Koha::Object);
29
use base qw(Koha::Object);
28
30
Lines 54-59 sub items { Link Here
54
    return $items;
56
    return $items;
55
}
57
}
56
58
59
=head3 add_item
60
61
$collection->add_item( $item_object );
62
63
throws
64
    Koha::Exceptions::MissingParameter
65
    Koha::Exceptions::DuplicateObject
66
    Koha::Exceptions::ObjectNotFound
67
68
=cut
69
70
sub add_item {
71
    my ( $self, $item ) = @_;
72
73
    Koha::Exceptions::MissingParameter->throw if not defined $item;
74
75
    Koha::Exceptions::ObjectNotFound->throw if ref($item) ne 'Koha::Item';
76
77
    Koha::Exceptions::DuplicateObject->throw
78
        if Koha::RotatingCollection::Trackings->search( { itemnumber => $item->itemnumber } )->count;
79
80
    my $col_tracking = Koha::RotatingCollection::Tracking->new(
81
        {
82
            colId => $self->colId,
83
            itemnumber => $item->itemnumber,
84
        }
85
    )->store;
86
87
    return $col_tracking;
88
}
89
57
=head3 type
90
=head3 type
58
91
59
=cut
92
=cut
(-)a/rotating_collections/addItems.pl (-16 / +16 lines)
Lines 24-29 use C4::Context; Link Here
24
use C4::RotatingCollections;
24
use C4::RotatingCollections;
25
use C4::Items;
25
use C4::Items;
26
26
27
use Koha::Items;
27
use Koha::RotatingCollections;
28
use Koha::RotatingCollections;
28
29
29
use CGI qw ( -utf8 );
30
use CGI qw ( -utf8 );
Lines 41-72 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
41
    }
42
    }
42
);
43
);
43
44
45
my @errors;
46
my @messages;
47
my $colId = $query->param('colId');
48
my $collection = Koha::RotatingCollections->find($colId);
49
44
if ( $query->param('action') eq 'addItem' ) {
50
if ( $query->param('action') eq 'addItem' ) {
45
    ## Add the given item to the collection
51
    ## Add the given item to the collection
46
    my $colId      = $query->param('colId');
47
    my $barcode    = $query->param('barcode');
52
    my $barcode    = $query->param('barcode');
48
    my $removeItem = $query->param('removeItem');
53
    my $removeItem = $query->param('removeItem');
49
    my $itemnumber = GetItemnumberFromBarcode($barcode);
54
    my $item       = Koha::Items->search( { barcode => $barcode } )->next;
50
55
51
    my ( $success, $errorCode, $errorMessage );
56
    my ( $success, $errorCode, $errorMessage );
52
57
53
    $template->param( barcode => $barcode );
58
    $template->param( barcode => $barcode );
54
59
55
    if ( !$removeItem ) {
60
    if ( !$removeItem ) {
56
        ( $success, $errorCode, $errorMessage ) =
61
        my $added = eval { $collection->add_item( $item ) };
57
          AddItemToCollection( $colId, $itemnumber );
62
63
        if ( $@ or not $added ) {
64
            push @errors, { code => 'error_adding_item' };
65
        } else {
66
            push @messages, { code => 'success_adding_item' };
67
        }
58
68
59
        $template->param(
69
        $template->param(
60
            previousActionAdd => 1,
70
            previousActionAdd => 1,
61
        );
71
        );
62
63
        if ($success) {
64
            $template->param( addSuccess => 1 );
65
        }
66
        else {
67
            $template->param( addFailure     => 1 );
68
            $template->param( failureMessage => $errorMessage );
69
        }
70
    }
72
    }
71
    else {
73
    else {
72
        ## Remove the given item from the collection
74
        ## Remove the given item from the collection
Lines 89-99 if ( $query->param('action') eq 'addItem' ) { Link Here
89
    }
91
    }
90
}
92
}
91
93
92
my $colId = $query->param('colId');
93
my $collection = Koha::RotatingCollections->find($colId);
94
95
$template->param(
94
$template->param(
96
    collection => $collection,
95
    collection => $collection,
96
    messages   => \@messages,
97
    errors     => \@errors,
97
);
98
);
98
99
99
output_html_with_http_headers $query, $cookie, $template->output;
100
output_html_with_http_headers $query, $cookie, $template->output;
100
- 

Return to bug 18606