2 name_singular => 'schedule',
3 table => 'commission_schedule',
4 viewall_dir => 'browse',
5 fields => [ 'schedulename',
6 { field => 'reasonnum',
7 type => 'select-reason',
12 options => [ keys %FS::commission_schedule::basis_options ],
13 labels => { %FS::commission_schedule::basis_options },
15 { type => 'tablebreak-tr-title', value => 'Billing cycles' },
16 { field => 'commissionratenum',
17 type => 'commission_rate',
18 o2m_table => 'commission_rate',
20 m2_error_callback => $m2_error_callback,
24 labels => { 'schedulenum' => '',
25 'schedulename' => 'Name',
26 'basis' => 'Based on',
27 'commissionratenum' => '',
32 my $m2_error_callback = sub {
33 my ($cgi, $object) = @_;
36 foreach my $k ( grep /^commissionratenum\d+/, $cgi->param ) {
37 my $num = $cgi->param($k);
38 my $cycle = $cgi->param($k.'_cycle');
39 my $amount = $cgi->param($k.'_amount');
40 my $percent = $cgi->param($k.'_percent');
42 push @rates, FS::commission_rate->new({
43 'commissionratenum' => $num,
46 'percent' => $percent,