#!/usr/bin/perl -Tw # # $Id: part_pkg.cgi,v 1.9 1999-02-07 09:59:19 ivan Exp $ # # part_pkg.cgi: Add/Edit package (output form) # # ivan@sisd.com 97-dec-10 # # Changes to allow page to work at a relative position in server # Changed to display services 2-wide in table # bmccane@maxbaud.net 98-apr-3 # # use FS::CGI, added inline documentation ivan@sisd.com 98-jul-12 # # $Log: part_pkg.cgi,v $ # Revision 1.9 1999-02-07 09:59:19 ivan # more mod_perl fixes, and bugfixes Peter Wemm sent via email # # Revision 1.8 1999/01/19 05:13:39 ivan # for mod_perl: no more top-level my() variables; use vars instead # also the last s/create/new/; # # Revision 1.7 1999/01/18 09:41:29 ivan # all $cgi->header calls now include ( '-expires' => 'now' ) for mod_perl # (good idea anyway) # # Revision 1.6 1998/12/17 06:17:05 ivan # fix double // in relative URLs, s/CGI::Base/CGI/; # # Revision 1.5 1998/11/21 07:12:26 ivan # *** empty log message *** # # Revision 1.4 1998/11/21 07:11:08 ivan # *** empty log message *** # # Revision 1.3 1998/11/21 07:07:40 ivan # popurl, bugfix # # Revision 1.2 1998/11/15 13:14:55 ivan # first pass as per-user custom pricing # use strict; use vars qw( $cgi $part_pkg $action $query $hashref $part_svc $count ); use CGI; use CGI::Carp qw(fatalsToBrowser); use FS::UID qw(cgisuidsetup); use FS::Record qw(qsearch qsearchs fields); use FS::part_pkg; use FS::part_svc; use FS::pkg_svc; use FS::CGI qw(header menubar popurl); $cgi = new CGI; &cgisuidsetup($cgi); if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) { $cgi->param('clone', $1); } else { $cgi->param('clone', ''); } if ( $cgi->param('pkgnum') && $cgi->param('pkgnum') =~ /^(\d+)$/ ) { $cgi->param('pkgnum', $1); } else { $cgi->param('pkgnum', ''); } ($query) = $cgi->keywords; $action = ''; $part_pkg = ''; if ( $cgi->param('error') ) { $part_pkg = new FS::part_pkg ( { map { $_, scalar($cgi->param($_)) } fields('part_pkg') } ); } if ( $cgi->param('clone') ) { $action='Custom Pricing'; my $old_part_pkg = qsearchs('part_pkg', { 'pkgpart' => $cgi->param('clone') } ); $part_pkg ||= $old_part_pkg->clone; } elsif ( $query && $query =~ /^(\d+)$/ ) { $part_pkg ||= qsearchs('part_pkg',{'pkgpart'=>$1}); } else { $part_pkg ||= new FS::part_pkg {}; } $action ||= $part_pkg->pkgpart ? 'Edit' : 'Add'; $hashref = $part_pkg->hashref; print $cgi->header( '-expires' => 'now' ), header("$action Package Definition", menubar( 'Main Menu' => popurl(2), 'View all packages' => popurl(2). 'browse/part_pkg.cgi', )); print qq!Error: !, $cgi->param('error'), "" if $cgi->param('error'); print '
'; if ( $cgi->param('clone') ) { print qq!!; } if ( $cgi->param('pkgnum') ) { print qq!!; } print qq!!, "Package Part #", $hashref->{pkgpart} ? $hashref->{pkgpart} : "(NEW)"; print < Package (customer-visable) Comment (customer-hidden) Setup fee for this package Recurring fee for this package Frequency (months) of recurring fee END unless ( $cgi->param('clone') ) { print <
END } $count = 0; foreach $part_svc ( ( qsearch( 'part_svc', {} ) ) ) { my $svcpart = $part_svc->svcpart; my $pkg_svc = qsearchs( 'pkg_svc', { 'pkgpart' => $cgi->param('clone') || $part_pkg->pkgpart, 'svcpart' => $svcpart, } ) || new FS::pkg_svc ( { 'pkgpart' => $cgi->param('clone') || $part_pkg->pkgpart, 'svcpart' => $svcpart, 'quantity' => 0, }); #? #next unless $pkg_svc; unless ( defined ($cgi->param('clone')) && $cgi->param('clone') ) { print '' if $count == 0 ; print qq!"; $count++; if ($count == 2) { print ''; $count = 0; } } else { print qq!quantity || 0, qq!">\n!; } } unless ( $cgi->param('clone') ) { print qq!! if ($count != 0) ; print "
Quan.Service Quan.Service
quantity || 0, qq!">!, $part_svc->getfield('svc'), "
"; } print qq!
!; print < END