multiple payment options, RT#23741
[freeside.git] / httemplate / edit / cust_main / cust_payby.html
1 <% include('/edit/elements/edit.html',
2      'embed'           => $opt{cust_main},
3      'tablenum'        => 1,
4      'table'           => 'cust_main',
5      'labels'          => { 'custpaybynum'  => '',
6                             #'locationnum' => '&nbsp;',
7                           },
8      'fields'          => [
9        { 'field'             => 'custpaybynum',
10          'type'              => 'cust_payby',
11          'colspan'           => 6,
12          #'custnum'           => $opt{cust_main}->custnum,
13          'm2m_method'        => 'cust_payby',
14          'm2m_dstcol'        => 'custpaybynum',   
15          'm2_label'          => ' ',
16          'm2_error_callback' => $m2_error_callback,
17        },
18      ],
19      'agent_virt'      => 1,
20     )
21 %>
22 </DIV>
23 <%init>
24
25 my %opt = @_;
26
27 my $m2_error_callback = sub {
28   my($cgi, $object) = @_;
29
30   #process_o2m fields in process/cust_main-cust_payby.html
31   my $fields = FS::cust_payby->cgi_cust_payby_fields;
32   my @gfields = ( '', map "_$_", grep $_ !~ /^(payby|paydate_)/, @$fields );
33
34   map {
35         if ( /^custpaybynum(\d+)$/ ) {
36           my $num = $1;
37           if ( grep $cgi->param("custpaybynum$num$_"), @gfields ) {
38             my %hash = (
39               'custpaybynum' => scalar($cgi->param("custpaybynum$num")),
40               map { $_ => scalar($cgi->param("custpaybynum${num}_$_")) }
41                 @$fields,
42             );
43             FS::cust_payby::cgi_hash_callback( \%hash );
44             FS::cust_payby->new( \%hash );
45           } else {
46             ();
47           }
48         } else {
49           ();
50         }
51       }
52       $cgi->param;
53 };
54
55 </%init>
56