</%doc>
%if ( $error ) {
% $cgi->param('error', $error);
-<% $cgi->redirect(popurl(2). $opt{error_redirect}. '?'. $cgi->query_string ) %>
+% my $query = $m->scomp('/elements/create_uri_query');
+<% $cgi->redirect(popurl(2). $opt{error_redirect}. "?$query") %>
%} else {
-<% header("$src_thing application$to sucessful") %>
+<& /elements/header-popup.html, "$src_thing application$to successful" &>
<SCRIPT TYPE="text/javascript">
- window.top.location.reload();
+ topreload();
</SCRIPT>
</BODY>
</HTML>
my %opt = @_;
+my $error = '';
+
my $src_thing = ucfirst($opt{'src_thing'});
my $src_table = $opt{'src_table'};
my $src_pkey = dbdef->table($src_table)->primary_key;
my %options = ();
$options{subitems} = \@subitems if scalar(@subitems);
+
+my $oldAutoCommit = $FS::UID::AutoCommit;
+local $FS::UID::AutoCommit = 0;
+my $dbh = dbh;
my $new;
# $new = new FS::cust_refund ( {
# 'reason' => 'Refunding payment', #enter reason in UI
-# 'refund' => $cgi->param('amount'),
+# 'refund' => scalar($cgi->param('amount')),
# 'payby' => 'BILL',
-# #'_date' => $cgi->param('_date'),
+# #'_date' => scalar($cgi->param('_date')),
# 'payinfo' => 'Cash', #enter payinfo in UI
# 'paynum' => $paynum,
# } );
#} else {
+ if ($src->amount != $cgi->param('src_amount')) {
+ $src->amount($cgi->param('src_amount'));
+ $error = $src->replace;
+ }
+
my $class = 'FS::'. $opt{link_table};
$new = $class->new( {
$options{manual} = 1;
-my $error = $new->insert( %options );
+$error ||= $new->insert( %options );
+if ($error) {
+ $dbh->rollback if $oldAutoCommit;
+} else {
+ $dbh->commit or die $dbh->errstr if $oldAutoCommit;
+}
</%init>