Lines 26-35
use CGI;
Link Here
|
26 |
use C4::Auth; |
26 |
use C4::Auth; |
27 |
use C4::Output; |
27 |
use C4::Output; |
28 |
use C4::Context; |
28 |
use C4::Context; |
|
|
29 |
use C4::Dates; |
29 |
use C4::Acquisition; |
30 |
use C4::Acquisition; |
30 |
use C4::Biblio; |
31 |
use C4::Biblio; |
31 |
use C4::Items; |
32 |
use C4::Items; |
32 |
use C4::Search; |
|
|
33 |
use List::MoreUtils qw/any/; |
33 |
use List::MoreUtils qw/any/; |
34 |
|
34 |
|
35 |
my $input=new CGI; |
35 |
my $input=new CGI; |
Lines 46-102
my $quantityrec=$input->param('quantityrec');
Link Here
|
46 |
my $quantity=$input->param('quantity'); |
46 |
my $quantity=$input->param('quantity'); |
47 |
my $unitprice=$input->param('cost'); |
47 |
my $unitprice=$input->param('cost'); |
48 |
my $invoiceno=$input->param('invoice'); |
48 |
my $invoiceno=$input->param('invoice'); |
49 |
my $datereceived=$input->param('datereceived'); |
49 |
my $datereceived=$input->param('datereceived') || C4::Dates->output('iso'); |
50 |
my $replacement=$input->param('rrp'); |
50 |
my $replacement=$input->param('rrp'); |
51 |
my $gst=$input->param('gst'); |
51 |
my $gst=$input->param('gst'); |
52 |
my $freight=$input->param('freight'); |
52 |
my $freight=$input->param('freight'); |
53 |
my $booksellerid = $input->param('booksellerid'); |
53 |
my $booksellerid = $input->param('booksellerid'); |
54 |
my $cnt=0; |
54 |
my $cnt=0; |
55 |
my $error_url_str; |
55 |
my $error_url_str = ''; |
56 |
my $ecost = $input->param('ecost'); |
56 |
my $ecost = $input->param('ecost'); |
57 |
my $note = $input->param("note"); |
57 |
my $note = $input->param("note"); |
58 |
|
58 |
|
|
|
59 |
my $order = GetOrder($ordernumber); |
60 |
$order->{booksellerinvoicenumber} = $invoiceno; |
61 |
$order->{datereceived} = $datereceived; |
62 |
$order->{freight} = $freight; |
63 |
$order->{quantity} = $quantity; |
64 |
$order->{quantityreceived} = $quantityrec; |
65 |
$order->{notes} = $note; |
66 |
$order->{rrp} = $replacement; |
67 |
$order->{ecost} = $ecost; |
68 |
$order->{unitprice} = $unitprice; |
69 |
ModOrder($order); |
70 |
|
59 |
#need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME |
71 |
#need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME |
60 |
if ($quantityrec > $origquantityrec ) { |
72 |
|
61 |
# now, add items if applicable |
73 |
# now, add or update items if applicable |
62 |
if (C4::Context->preference('AcqCreateItem') eq 'receiving') { |
74 |
my @tags = $input->param('tag'); |
63 |
|
75 |
my @subfields = $input->param('subfield'); |
64 |
my @tags = $input->param('tag'); |
76 |
my @field_values = $input->param('field_value'); |
65 |
my @subfields = $input->param('subfield'); |
77 |
my @serials = $input->param('serial'); |
66 |
my @field_values = $input->param('field_value'); |
78 |
my @itemid = $input->param('itemid'); |
67 |
my @serials = $input->param('serial'); |
79 |
my @ind_tag = $input->param('ind_tag'); |
68 |
my @itemid = $input->param('itemid'); |
80 |
my @indicator = $input->param('indicator'); |
69 |
my @ind_tag = $input->param('ind_tag'); |
81 |
#Rebuilding ALL the data for items into a hash |
70 |
my @indicator = $input->param('indicator'); |
82 |
# parting them on $itemid. |
71 |
#Rebuilding ALL the data for items into a hash |
83 |
my %itemhash; |
72 |
# parting them on $itemid. |
84 |
my $countdistinct; |
73 |
my %itemhash; |
85 |
my $range=scalar(@itemid); |
74 |
my $countdistinct; |
86 |
for (my $i=0; $i<$range; $i++){ |
75 |
my $range=scalar(@itemid); |
87 |
unless ($itemhash{$itemid[$i]}){ |
76 |
for (my $i=0; $i<$range; $i++){ |
88 |
$countdistinct++; |
77 |
unless ($itemhash{$itemid[$i]}){ |
89 |
} |
78 |
$countdistinct++; |
90 |
push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i]; |
79 |
} |
91 |
push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i]; |
80 |
push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i]; |
92 |
push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i]; |
81 |
push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i]; |
93 |
push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i]; |
82 |
push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i]; |
94 |
push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i]; |
83 |
push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i]; |
95 |
} |
84 |
push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i]; |
96 |
my $error; |
85 |
} |
97 |
my %itemnumbers = map { $_ => 1 } GetItemnumbersFromOrder($ordernumber); |
86 |
foreach my $item (keys %itemhash){ |
98 |
my @received; |
87 |
my $xml = TransformHtmlToXml( $itemhash{$item}->{'tags'}, |
99 |
foreach my $id (keys %itemhash){ |
88 |
$itemhash{$item}->{'subfields'}, |
100 |
my $xml = TransformHtmlToXml( $itemhash{$id}->{'tags'}, |
89 |
$itemhash{$item}->{'field_values'}, |
101 |
$itemhash{$id}->{'subfields'}, |
90 |
$itemhash{$item}->{'ind_tag'}, |
102 |
$itemhash{$id}->{'field_values'}, |
91 |
$itemhash{$item}->{'indicator'},'ITEM'); |
103 |
$itemhash{$id}->{'ind_tag'}, |
92 |
my $record=MARC::Record::new_from_xml($xml, 'UTF-8'); |
104 |
$itemhash{$id}->{'indicator'},'ITEM'); |
93 |
my (undef,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber); |
105 |
my $record=MARC::Record::new_from_xml($xml, 'UTF-8'); |
94 |
NewOrderItem($itemnumber, $ordernumber); |
106 |
my $item = AddItemFromMarc($record,$biblionumber); |
95 |
} |
107 |
my $itemnumber = $item ? $item->{itemnumber} : undef; |
|
|
108 |
if ($itemnumber) { |
109 |
push @received, $itemnumber; |
110 |
NewOrderItem($itemnumber, $ordernumber) unless $itemnumbers{$itemnumber}; |
111 |
} else { |
112 |
$error++; |
96 |
} |
113 |
} |
97 |
|
114 |
} |
|
|
115 |
|
116 |
if ($error) { |
117 |
$error_url_str = "&error=Datbase+write+error"; |
118 |
} |
119 |
else { |
98 |
# save the quantity received. |
120 |
# save the quantity received. |
99 |
$datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived); |
121 |
ModReceiveOrder($biblionumber,$ordernumber, $quantityrec, \@received); |
100 |
} |
122 |
} |
101 |
|
123 |
|
102 |
update_item( $_ ) foreach GetItemnumbersFromOrder( $ordernumber ); |
124 |
update_item( $_ ) foreach GetItemnumbersFromOrder( $ordernumber ); |
Lines 116-118
sub update_item {
Link Here
|
116 |
replacementpricedate => $datereceived, |
138 |
replacementpricedate => $datereceived, |
117 |
}, $biblionumber, $itemnumber ); |
139 |
}, $biblionumber, $itemnumber ); |
118 |
} |
140 |
} |
|
|
141 |
|