scalar cgi param
[freeside.git] / httemplate / edit / process / elements / ApplicationCommon.html
index 2782dc2..097a45d 100644 (file)
@@ -21,11 +21,12 @@ Examples:
 </%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 sucessful" &>
   <SCRIPT TYPE="text/javascript">
-    window.top.location.reload();
+    topreload();
   </SCRIPT>
   </BODY>
   </HTML>
@@ -34,6 +35,8 @@ Examples:
 
 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;
@@ -51,17 +54,34 @@ my $cust_main = qsearchs('cust_main', { 'custnum' => $src->custnum } )
 
 my $custnum = $cust_main->custnum;
 
+my @subnames = grep { /.+/ } map { /^subnum(\d+)$/ ? $1 : '' } $cgi->param;
+my @subitems = map { [ $cgi->param("subnum$_"), $cgi->param("subamount$_"), $cgi->param("taxXlocationnum$_") ] }
+               @subnames;
+{ local $^W = 0; @subitems = grep { $_->[1] + 0 } @subitems; }
+
+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( {
@@ -72,6 +92,13 @@ my $new;
 
 #}
 
-my $error = $new->insert;
 
+$options{manual} = 1;
+$error ||= $new->insert( %options );
+
+if ($error) {
+  $dbh->rollback if $oldAutoCommit;
+} else {
+  $dbh->commit or die $dbh->errstr if $oldAutoCommit;
+}
 </%init>