X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fpart_pkg.cgi;h=61e4086be4def8094a1418c1baeefac02f670363;hp=5eccc1e1e0058bea77eb169adf0875cf621a1f4a;hb=c1bb4ddb71147d0571bd301a6d8c452fdf0e1bc9;hpb=05eafa5ab3ded207d716685b32edf6946187514a
diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi
index 5eccc1e1e..61e4086be 100755
--- a/httemplate/edit/part_pkg.cgi
+++ b/httemplate/edit/part_pkg.cgi
@@ -1,5 +1,3 @@
-
-
<%
if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {
@@ -14,288 +12,324 @@ if ( $cgi->param('pkgnum') && $cgi->param('pkgnum') =~ /^(\d+)$/ ) {
}
my ($query) = $cgi->keywords;
-my $action = '';
+
my $part_pkg = '';
if ( $cgi->param('error') ) {
$part_pkg = new FS::part_pkg ( {
map { $_, scalar($cgi->param($_)) } fields('part_pkg')
} );
}
+
+my $action = '';
+my $clone_part_pkg = '';
+my $pkgpart = '';
if ( $cgi->param('clone') ) {
- $action='Custom Pricing';
- my $old_part_pkg =
- qsearchs('part_pkg', { 'pkgpart' => $cgi->param('clone') } );
- $part_pkg ||= $old_part_pkg->clone;
+ $pkgpart = $cgi->param('clone');
+ $action = 'Custom Pricing';
+ $clone_part_pkg= qsearchs('part_pkg', { 'pkgpart' => $cgi->param('clone') } );
+ $part_pkg ||= $clone_part_pkg->clone;
+ $part_pkg->disabled('Y'); #isn't sticky on errors
} elsif ( $query && $query =~ /^(\d+)$/ ) {
$part_pkg ||= qsearchs('part_pkg',{'pkgpart'=>$1});
+ $pkgpart = $part_pkg->pkgpart;
} else {
- $part_pkg ||= new FS::part_pkg {};
- $part_pkg->plan('flat');
+ unless ( $part_pkg ) {
+ $part_pkg = new FS::part_pkg {};
+ $part_pkg->plan('flat');
+ }
}
unless ( $part_pkg->plan ) { #backwards-compat
$part_pkg->plan('flat');
- $part_pkg->plandata("setup=". $part_pkg->setup. "\n".
- "recur=". $part_pkg->recur. "\n");
+ $part_pkg->plandata("setup_fee=". $part_pkg->setup. "\n".
+ "recur_fee=". $part_pkg->recur. "\n");
}
$action ||= $part_pkg->pkgpart ? 'Edit' : 'Add';
my $hashref = $part_pkg->hashref;
%>
-
-
-<%
-
-print header("$action Package Definition", menubar(
+<%= include("/elements/header.html","$action Package Definition", menubar(
'Main Menu' => popurl(2),
'View all packages' => popurl(2). 'browse/part_pkg.cgi',
-), ' onLoad="visualize()"');
-
-print qq!Error: !, $cgi->param('error'),
- ""
- if $cgi->param('error');
-
-#print '
+<%
-
+my @fixups = ();
+my $count = 0;
+my $columns = 3;
+foreach my $part_svc ( @part_svc ) {
+ my $svcpart = $part_svc->svcpart;
+ my $pkg_svc = $pkg_svc{$svcpart}
+ || new FS::pkg_svc ( {
+ 'pkgpart' => $pkgpart,
+ 'svcpart' => $svcpart,
+ 'quantity' => 0,
+ 'primary_svc' => '',
+ } );
-<% my %plandata = map { /^(\w+)=(.*)$/; ( $1 => $2 ); }
- split("\n", $part_pkg->plandata );
- #foreach my $layer ( 'konq_kludge', keys %plans ) {
- foreach my $layer ( 'konq_kludge', keys %plans ) {
- my $visibility = "hidden";
-%>
-
-
-
+# prolly should be in database
+tie my %plans, 'Tie::IxHash', %{ FS::part_pkg::plan_info() };
+
+my %plandata = map { /^(\w+)=(.*)$/; ( $1 => $2 ); }
+ split("\n", ($clone_part_pkg||$part_pkg)->plandata );
+#warn join("\n", map { "$_: $plandata{$_}" } keys %plandata ). "\n";
+
+tie my %options, 'Tie::IxHash', map { $_=>$plans{$_}->{'name'} } keys %plans;
-
-<% } %>
+my @form_radio = ();
+if ( dbdef->table('pkg_svc')->column('primary_svc') ) {
+ push @form_radio, 'pkg_svc_primary';
+}
+
+tie my %freq, 'Tie::IxHash', %FS::part_pkg::freq;
+if ( $part_pkg->dbdef_table->column('freq')->type =~ /(int)/i ) {
+ delete $freq{$_} foreach grep { ! /^\d+$/ } keys %freq;
+}
+
+my $widget = new HTML::Widgets::SelectLayers(
+ 'selected_layer' => $part_pkg->plan,
+ 'options' => \%options,
+ 'form_name' => 'dummy',
+ 'form_action' => 'process/part_pkg.cgi',
+ 'form_text' => [ qw(pkg comment promo_code clone pkgnum pkgpart),
+ @fixups
+ ],
+ 'form_checkbox' => [ qw(setuptax recurtax disabled) ],
+ 'form_radio' => \@form_radio,
+ 'form_select' => \@form_select,
+ 'layer_callback' => sub {
+ my $layer = shift;
+ my $html = qq!!.
+ ntable("#cccccc",2);
+ $html .= '
+
+ Recurring fee frequency |
+ |
';
+
+ my $href = $plans{$layer}->{'fields'};
+ foreach my $field ( exists($plans{$layer}->{'fieldorder'})
+ ? @{$plans{$layer}->{'fieldorder'}}
+ : keys %{ $href }
+ ) {
+
+ $html .= ''. $href->{$field}{'name'}. ' | ';
+
+ if ( ! exists($href->{$field}{'type'}) ) {
+ $html .= qq!!;
+ } elsif ( $href->{$field}{'type'} eq 'checkbox' ) {
+ $html .= qq!';
+ } elsif ( $href->{$field}{'type'} =~ /^select/ ) {
+ $html .= '';
+ }
-
+ $html .= '';
+
+ $html .= ''.
+ '
';
+
+ $html .= '';
+
+ $html;
+
+ },
+);
+
+%>
+
+
Price plan <%= $widget->html %>
|