use Koha::Number::Price;
use Koha::Libraries;
-use C4::Koha qw( subfield_is_koha_internal_p );
+use C4::Koha;
use MARC::Field;
use MARC::Record;
use Time::localtime;
use HTML::Entities;
-use vars qw($VERSION @ISA @EXPORT);
+use vars qw(@ISA @EXPORT);
BEGIN {
- # set the version for version checking
- $VERSION = 3.07.00.049;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
=head3 NewBasket
- $basket = &NewBasket( $booksellerid, $authorizedby, $basketname,
- $basketnote, $basketbooksellernote, $basketcontractnumber, $deliveryplace, $billingplace );
+ $basket = &NewBasket( $booksellerid, $authorizedby, $basketname,
+ $basketnote, $basketbooksellernote, $basketcontractnumber, $deliveryplace, $billingplace, $is_standing );
Create a new basket in aqbasket table
sub NewBasket {
my ( $booksellerid, $authorisedby, $basketname, $basketnote,
$basketbooksellernote, $basketcontractnumber, $deliveryplace,
- $billingplace ) = @_;
+ $billingplace, $is_standing ) = @_;
my $dbh = C4::Context->dbh;
my $query =
'INSERT INTO aqbasket (creationdate,booksellerid,authorisedby) '
$basketnote ||= q{};
$basketbooksellernote ||= q{};
ModBasketHeader( $basket, $basketname, $basketnote, $basketbooksellernote,
- $basketcontractnumber, $booksellerid, $deliveryplace, $billingplace );
+ $basketcontractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing );
return $basket;
}
=item C<$billingplace> is the "billingplace" field in the aqbasket table.
+=item C<$is_standing> is the "is_standing" field in the aqbasket table.
+
=back
=cut
sub ModBasketHeader {
- my ($basketno, $basketname, $note, $booksellernote, $contractnumber, $booksellerid, $deliveryplace, $billingplace) = @_;
+ my ($basketno, $basketname, $note, $booksellernote, $contractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing) = @_;
my $query = qq{
UPDATE aqbasket
- SET basketname=?, note=?, booksellernote=?, booksellerid=?, deliveryplace=?, billingplace=?
+ SET basketname=?, note=?, booksellernote=?, booksellerid=?, deliveryplace=?, billingplace=?, is_standing=?
WHERE basketno=?
};
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare($query);
- $sth->execute($basketname, $note, $booksellernote, $booksellerid, $deliveryplace, $billingplace, $basketno);
+ $sth->execute($basketname, $note, $booksellernote, $booksellerid, $deliveryplace, $billingplace, $is_standing, $basketno);
if ( $contractnumber ) {
my $query2 ="UPDATE aqbasket SET contractnumber=? WHERE basketno=?";
}
my $result_set = $dbh->selectall_arrayref(
-q{SELECT * FROM aqorders WHERE biblionumber=? AND aqorders.ordernumber=?},
+q{SELECT *, aqbasket.is_standing FROM aqorders LEFT JOIN aqbasket USING (basketno) WHERE biblionumber=? AND aqorders.ordernumber=?},
{ Slice => {} }, $biblionumber, $ordernumber
);
my $order = $result_set->[0];
my $new_ordernumber = $ordernumber;
- if ( $order->{quantity} > $quantrec ) {
+ if ( $order->{is_standing} || $order->{quantity} > $quantrec ) {
# Split order line in two parts: the first is the original order line
# without received items (the quantity is decreased),
# the second part is a new order line with quantity=quantityrec
my $sth = $dbh->prepare($query);
$sth->execute(
- $order->{quantity} - $quantrec,
+ ( $order->{is_standing} ? 1 : ( $order->{quantity} - $quantrec ) ),
( defined $order_internalnote ? $order_internalnote : () ),
( defined $order_vendornote ? $order_vendornote : () ),
$ordernumber
};
if ( $pending or $ordered ) {
- $query .= q{ AND (quantity > quantityreceived OR quantityreceived is NULL)};
- }
- if ( $ordered ) {
- $query .= q{ AND aqorders.orderstatus IN ( "ordered", "partial" )};
+ $query .= q{
+ AND (
+ ( aqbasket.is_standing AND aqorders.orderstatus IN ( "new", "ordered", "partial" ) )
+ OR (
+ ( quantity > quantityreceived OR quantityreceived is NULL )
+ };
+
+ if ( $ordered ) {
+ $query .= q{ AND aqorders.orderstatus IN ( "ordered", "partial" )};
+ }
+ $query .= q{
+ )
+ )
+ };
}
my $userenv = C4::Context->userenv;
push @bind_strs, " borrowers.branchcode = ? ";
push @bind_args, $args{branchcode};
}
+ if($args{message_id}) {
+ push @bind_strs, " aqinvoices.message_id = ? ";
+ push @bind_args, $args{message_id};
+ }
$query .= " WHERE " . join(" AND ", @bind_strs) if @bind_strs;
$query .= " GROUP BY aqinvoices.invoiceid ";
return unless(%invoice and $invoice{invoicenumber});
my @columns = qw(invoicenumber booksellerid shipmentdate billingdate
- closedate shipmentcost shipmentcost_budgetid);
+ closedate shipmentcost shipmentcost_budgetid message_id);
my @set_strs;
my @set_args;
my $letter = C4::Letters::GetPreparedLetter(
module => 'acquisition',
letter_code => 'ACQ_NOTIF_ON_RECEIV',
- branchcode => $library->branchcode,
+ branchcode => $library->{branchcode},
tables => {
'branches' => $library,
'borrowers' => $borrower,
next unless $tag;
next if $tag == $itemfield;
for my $subfield ( sort keys %{ $tagslib->{$tag} } ) {
- next if ( subfield_is_koha_internal_p($subfield) );
+ next if IsMarcStructureInternal($tagslib->{$tag}{$subfield});
my $defaultvalue = $tagslib->{$tag}{$subfield}{defaultvalue};
if ( defined $defaultvalue and $defaultvalue ne '' ) {
my @fields = $record->field($tag);