3 # $Id: part_pkg.cgi,v 1.2 1998-11-15 13:16:15 ivan Exp $
5 # process/part_pkg.cgi: Edit package definitions (process form)
7 # ivan@sisd.com 97-dec-10
9 # don't update non-changing records in part_svc (causing harmless but annoying
10 # "Records identical" errors). ivan@sisd.com 98-feb-19
12 # Changes to allow page to work at a relative position in server
13 # bmccane@maxbaud.net 98-apr-3
15 # Added `|| 0 ' when getting quantity off web page ivan@sisd.com 98-jun-4
17 # lose background, FS::CGI ivan@sisd.com 98-sep-2
19 # $Log: part_pkg.cgi,v $
20 # Revision 1.2 1998-11-15 13:16:15 ivan
21 # first pass as per-user custom pricing
26 use CGI::Carp qw(fatalsToBrowser);
27 use FS::UID qw(cgisuidsetup);
28 use FS::CGI qw(eidiot popurl);
29 use FS::Record qw(qsearch qsearchs);
30 use FS::part_pkg qw(fields);
37 my($pkgpart)=$cgi->param('pkgpart');
39 my($old)=qsearchs('part_pkg',{'pkgpart'=>$pkgpart}) if $pkgpart;
41 my($new)=create FS::part_pkg ( {
47 local $SIG{HUP} = 'IGNORE';
48 local $SIG{INT} = 'IGNORE';
49 local $SIG{QUIT} = 'IGNORE';
50 local $SIG{TERM} = 'IGNORE';
51 local $SIG{TSTP} = 'IGNORE';
54 my($error)=$new->replace($old);
55 eidiot($error) if $error;
57 my($error)=$new->insert;
58 eidiot($error) if $error;
59 $pkgpart=$new->getfield('pkgpart');
63 foreach $part_svc (qsearch('part_svc',{})) {
64 # don't update non-changing records in part_svc (causing harmless but annoying
65 # "Records identical" errors). ivan@sisd.com 98-jan-19
66 #my($quantity)=$cgi->param('pkg_svc'. $part_svc->getfield('svcpart')),
67 my($quantity)=$cgi->param('pkg_svc'. $part_svc->svcpart) || 0,
68 my($old_pkg_svc)=qsearchs('pkg_svc',{
69 'pkgpart' => $pkgpart,
70 'svcpart' => $part_svc->getfield('svcpart'),
72 my($old_quantity)=$old_pkg_svc ? $old_pkg_svc->quantity : 0;
73 next unless $old_quantity != $quantity; #!here
74 my($new_pkg_svc)=create FS::pkg_svc({
75 'pkgpart' => $pkgpart,
76 'svcpart' => $part_svc->getfield('svcpart'),
77 #'quantity' => $cgi->param('pkg_svc'. $part_svc->getfield('svcpart')),
78 'quantity' => $quantity,
81 my($error)=$new_pkg_svc->replace($old_pkg_svc);
82 eidiot($error) if $error;
84 my($error)=$new_pkg_svc->insert;
85 eidiot($error) if $error;
89 unless ( $cgi->param('pkgnum') =~ /^(\d+)$/ ) {
90 #$req->cgi->redirect("../../view/part_pkg.cgi?$pkgpart");
91 #$req->cgi->redirect("../../edit/part_pkg.cgi?$pkgpart");
92 $cgi->redirect("../../browse/part_pkg.cgi");
94 my($old_cust_pkg) = qsearchs( 'cust_pkg', { 'pkgnum' => $1 } );
95 my %hash = $old_cust_pkg->hash;
96 $hash{'pkgpart'} = $pkgpart;
97 my($new_cust_pkg) = create FS::cust_pkg \%hash;
98 my $error = $new_cust_pkg->replace($old_cust_pkg);
99 eidiot "Error modifying cust_pkg record: $error\n" if $error;
100 print $cgi->redirect(popurl(3). "/view/cust_main.cgi?". $new_cust_pkg->custnum);