Initial revision
[freeside.git] / htdocs / edit / process / part_pkg.cgi
1 #!/usr/bin/perl -Tw
2 #
3 # process/part_pkg.cgi: Edit package definitions (process form)
4 #
5 # ivan@sisd.com 97-dec-10
6 #
7 # don't update non-changing records in part_svc (causing harmless but annoying
8 # "Records identical" errors). ivan@sisd.com 98-feb-19
9 #
10 # Changes to allow page to work at a relative position in server
11 #       bmccane@maxbaud.net     98-apr-3
12 #
13 # Added `|| 0 ' when getting quantity off web page ivan@sisd.com 98-jun-4
14 #
15 # lose background, FS::CGI ivan@sisd.com 98-sep-2
16
17 use strict;
18 use CGI::Request;
19 use CGI::Carp qw(fatalsToBrowser);
20 use FS::UID qw(cgisuidsetup);
21 use FS::Record qw(qsearch qsearchs);
22 use FS::part_pkg qw(fields);
23 use FS::pkg_svc;
24 use FS::CGI qw(eidiot);
25
26 my($req)=new CGI::Request; # create form object
27
28 &cgisuidsetup($req->cgi);
29
30 my($pkgpart)=$req->param('pkgpart');
31
32 my($old)=qsearchs('part_pkg',{'pkgpart'=>$pkgpart}) if $pkgpart;
33
34 my($new)=create FS::part_pkg ( {
35   map {
36     $_, $req->param($_);
37   } fields('part_pkg')
38 } );
39
40 if ( $pkgpart ) {
41   my($error)=$new->replace($old);
42   eidiot($error) if $error;
43 } else {
44   my($error)=$new->insert;
45   eidiot($error) if $error;
46   $pkgpart=$new->getfield('pkgpart');
47 }
48
49 my($part_svc);
50 foreach $part_svc (qsearch('part_svc',{})) {
51 # don't update non-changing records in part_svc (causing harmless but annoying
52 # "Records identical" errors). ivan@sisd.com 98-jan-19
53   #my($quantity)=$req->param('pkg_svc'. $part_svc->getfield('svcpart')),
54   my($quantity)=$req->param('pkg_svc'. $part_svc->svcpart) || 0,
55   my($old_pkg_svc)=qsearchs('pkg_svc',{
56     'pkgpart'  => $pkgpart,
57     'svcpart'  => $part_svc->getfield('svcpart'),
58   });
59   my($old_quantity)=$old_pkg_svc ? $old_pkg_svc->quantity : 0;
60   next unless $old_quantity != $quantity; #!here
61   my($new_pkg_svc)=create FS::pkg_svc({
62     'pkgpart'  => $pkgpart,
63     'svcpart'  => $part_svc->getfield('svcpart'),
64     #'quantity' => $req->param('pkg_svc'. $part_svc->getfield('svcpart')),
65     'quantity' => $quantity, 
66   });
67   if ($old_pkg_svc) {
68     my($error)=$new_pkg_svc->replace($old_pkg_svc);
69     eidiot($error) if $error;
70   } else {
71     my($error)=$new_pkg_svc->insert;
72     eidiot($error) if $error;
73   }
74 }
75
76 #$req->cgi->redirect("../../view/part_pkg.cgi?$pkgpart");
77 #$req->cgi->redirect("../../edit/part_pkg.cgi?$pkgpart");
78 $req->cgi->redirect("../../browse/part_pkg.cgi");
79