467 |
467 |
$form->save_status($dbh);
|
468 |
468 |
|
469 |
469 |
# Link this record to the records it was created from.
|
470 |
|
RecordLinks->create_links('dbh' => $dbh,
|
471 |
|
'mode' => 'ids',
|
472 |
|
'from_table' => 'oe',
|
473 |
|
'from_ids' => $form->{convert_from_oe_ids},
|
474 |
|
'to_table' => 'oe',
|
475 |
|
'to_id' => $form->{id},
|
476 |
|
);
|
|
470 |
$form->{convert_from_oe_ids} =~ s/^\s+//;
|
|
471 |
$form->{convert_from_oe_ids} =~ s/\s+$//;
|
|
472 |
my @convert_from_oe_ids = split m/\s+/, $form->{convert_from_oe_ids};
|
477 |
473 |
delete $form->{convert_from_oe_ids};
|
478 |
474 |
|
|
475 |
if (scalar @convert_from_oe_ids) {
|
|
476 |
RecordLinks->create_links('dbh' => $dbh,
|
|
477 |
'mode' => 'ids',
|
|
478 |
'from_table' => 'oe',
|
|
479 |
'from_ids' => \@convert_from_oe_ids,
|
|
480 |
'to_table' => 'oe',
|
|
481 |
'to_id' => $form->{id},
|
|
482 |
);
|
|
483 |
|
|
484 |
$self->_close_quotations_rfqs('dbh' => $dbh,
|
|
485 |
'from_id' => \@convert_from_oe_ids,
|
|
486 |
'to_id' => $form->{id});
|
|
487 |
}
|
|
488 |
|
479 |
489 |
if (($form->{currency} ne $form->{defaultcurrency}) && !$exchangerate) {
|
480 |
490 |
if ($form->{vc} eq 'customer') {
|
481 |
491 |
$form->update_exchangerate($dbh, $form->{currency}, $form->{transdate}, $form->{exchangerate}, 0);
|
... | ... | |
498 |
508 |
return $rc;
|
499 |
509 |
}
|
500 |
510 |
|
501 |
|
# this function closes multiple orders given in $form->{ordnumber_#}.
|
502 |
|
# use this for multiple orders that don't have to be saved back
|
503 |
|
# single orders should use OE::save instead.
|
504 |
|
sub close_orders {
|
|
511 |
sub _close_quotations_rfqs {
|
505 |
512 |
$main::lxdebug->enter_sub();
|
506 |
513 |
|
507 |
|
my ($self, $myconfig, $form) = @_;
|
|
514 |
my $self = shift;
|
|
515 |
my %params = @_;
|
508 |
516 |
|
509 |
|
# get ids from $form
|
510 |
|
map { push @ids, $form->{"ordnumber_$_"} if $form->{"ordnumber_$_"} }
|
511 |
|
(1 .. $form->{rowcount});
|
|
517 |
Common::check_params(\%params, qw(from_id to_id));
|
512 |
518 |
|
513 |
|
my $dbh = $form->dbconnect($myconfig);
|
514 |
|
$query = qq|UPDATE oe SET | .
|
515 |
|
qq|closed = TRUE | .
|
516 |
|
qq|WHERE ordnumber IN (|
|
517 |
|
. join(', ', map { $dbh->quote($_) } @ids) . qq|)|;
|
518 |
|
$dbh->do($query) || $form->dberror($query);
|
519 |
|
$dbh->disconnect;
|
|
519 |
my $myconfig = \%main::myconfig;
|
|
520 |
my $form = $main::form;
|
520 |
521 |
|
521 |
|
$main::lxdebug->leave_sub();
|
522 |
|
}
|
|
522 |
my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
|
523 |
523 |
|
524 |
|
sub close_order {
|
525 |
|
$main::lxdebug->enter_sub();
|
|
524 |
my $query = qq|SELECT quotation FROM oe WHERE id = ?|;
|
|
525 |
my $sth = prepare_query($form, $dbh, $query);
|
526 |
526 |
|
527 |
|
my ($self, $myconfig, $form) = @_;
|
|
527 |
do_statement($form, $sth, $query, conv_i($params{to_id}));
|
528 |
528 |
|
529 |
|
return $main::lxdebug->leave_sub() unless ($form->{"id"});
|
|
529 |
my ($quotation) = $sth->fetchrow_array();
|
530 |
530 |
|
531 |
|
my $dbh = $form->dbconnect($myconfig);
|
532 |
|
do_query($form, $dbh, qq|UPDATE oe SET closed = TRUE where id = ?|,
|
533 |
|
$form->{"id"});
|
534 |
|
$dbh->disconnect;
|
|
531 |
if ($quotation) {
|
|
532 |
$main::lxdebug->leave_sub();
|
|
533 |
return;
|
|
534 |
}
|
|
535 |
|
|
536 |
my @close_ids;
|
|
537 |
|
|
538 |
foreach my $from_id (@{ $params{from_id} }) {
|
|
539 |
$from_id = conv_i($from_id);
|
|
540 |
do_statement($form, $sth, $query, $from_id);
|
|
541 |
($quotation) = $sth->fetchrow_array();
|
|
542 |
push @close_ids, $from_id if ($quotation);
|
|
543 |
}
|
|
544 |
|
|
545 |
$sth->finish();
|
|
546 |
|
|
547 |
if (scalar @close_ids) {
|
|
548 |
$query = qq|UPDATE oe SET closed = TRUE WHERE id IN (| . join(', ', ('?') x scalar @close_ids) . qq|)|;
|
|
549 |
do_query($form, $dbh, $query, @close_ids);
|
|
550 |
|
|
551 |
$dbh->commit() unless ($params{dbh});
|
|
552 |
}
|
535 |
553 |
|
536 |
554 |
$main::lxdebug->leave_sub();
|
537 |
555 |
}
|
Bei Wandlung von Angeboten/Preisanfragen in Aufträge erst beim Speichern der Aufträge das Angebot/die Preisanfrage schließen.