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