agent commission schedules for consecutive invoices, #71217
[freeside.git] / httemplate / edit / commission_schedule.html
diff --git a/httemplate/edit/commission_schedule.html b/httemplate/edit/commission_schedule.html
new file mode 100644 (file)
index 0000000..c76a361
--- /dev/null
@@ -0,0 +1,53 @@
+<& elements/edit.html,
+     name_singular => 'schedule',
+     table         => 'commission_schedule',
+     viewall_dir   => 'browse',
+     fields        => [ 'schedulename',
+                        { field             => 'reasonnum',
+                          type              => 'select-reason',
+                          reason_class      => 'R',
+                        },
+                        { field             => 'basis',
+                          type              => 'select',
+                          options           => [ keys %FS::commission_schedule::basis_options ],
+                          labels            => { %FS::commission_schedule::basis_options },
+                        },
+                        { type => 'tablebreak-tr-title', value => 'Billing cycles' },
+                        { field             => 'commissionratenum',
+                          type              => 'commission_rate',
+                          o2m_table         => 'commission_rate',
+                          m2_label          => ' ',
+                          m2_error_callback => $m2_error_callback,
+                          colspan => 2,
+                        },
+                      ],
+     labels        => { 'schedulenum'       => '',
+                        'schedulename'      => 'Name',
+                        'basis'             => 'Based on',
+                        'commissionratenum' => '',
+                      },
+&>
+<%init>
+
+my $m2_error_callback = sub {
+  my ($cgi, $object) = @_;
+
+  my @rates;
+  foreach my $k ( grep /^commissionratenum\d+/, $cgi->param ) {
+    my $num = $cgi->param($k);
+    my $cycle = $cgi->param($k.'_cycle');
+    my $amount = $cgi->param($k.'_amount');
+    my $percent = $cgi->param($k.'_percent');
+    if ($cycle > 0) {
+      push @rates, FS::commission_rate->new({
+        'commissionratenum' => $num,
+        'cycle'             => $cycle,
+        'amount'            => $amount,
+        'percent'           => $percent,
+      });
+    }
+  }
+  @rates;
+};
+
+</%init>