summaryrefslogtreecommitdiff
path: root/FS/bin/freeside-ipifony-download
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-12-11 13:56:48 -0800
committerMark Wells <mark@freeside.biz>2012-12-11 13:56:48 -0800
commitbda74e13569c8531e77e8dcd01d9da9038f3c4d0 (patch)
tree8885e67d8936391166b309b337d910dc7649fcb1 /FS/bin/freeside-ipifony-download
parent1bd0489531c022fbe198a0023cf3cf01861d0817 (diff)
auto-create package classes in ipifony download, #18333
Diffstat (limited to 'FS/bin/freeside-ipifony-download')
-rw-r--r--FS/bin/freeside-ipifony-download32
1 files changed, 29 insertions, 3 deletions
diff --git a/FS/bin/freeside-ipifony-download b/FS/bin/freeside-ipifony-download
index ac9f764..e893326 100644
--- a/FS/bin/freeside-ipifony-download
+++ b/FS/bin/freeside-ipifony-download
@@ -12,7 +12,7 @@ use FS::Conf;
use Text::CSV;
my %opt;
-getopts('va:P:', \%opt);
+getopts('va:P:C:', \%opt);
#$Net::SFTP::Foreign::debug = -1;
sub HELP_MESSAGE { '
@@ -21,6 +21,7 @@ sub HELP_MESSAGE { '
[ -v ]
[ -a archivedir ]
[ -P port ]
+ [ -C category ]
freesideuser sftpuser@hostname[:path]
' }
@@ -49,6 +50,16 @@ if ( $opt{a} ) {
unless -w $opt{a};
}
+my $categorynum = '';
+if ( $opt{C} ) {
+ # find this category (don't auto-create it, it should exist already)
+ my $category = qsearchs('pkg_category', { categoryname => $opt{C} });
+ if (!defined($category)) {
+ die "Package category '$opt{C}' does not exist.\n";
+ }
+ $categorynum = $category->categorynum;
+}
+
#my $tmpdir = File::Temp->newdir();
my $tmpdir = tempdir( CLEANUP => 1 ); #DIR=>somewhere?
@@ -149,8 +160,23 @@ FILE: foreach my $filename (@$files) {
if (my $classname = $hash{classname}) {
if (!exists($classnum_of{$classname}) ) {
# then look it up
- my $pkg_class = qsearch('pkg_class', { classname => $classname });
- $classnum_of{$classname} = $pkg_class ? $pkg_class->classnum : '';
+ my $pkg_class = qsearchs('pkg_class', {
+ classname => $classname,
+ categorynum => $categorynum,
+ });
+ if (!defined($pkg_class)) {
+ # then create it
+ $pkg_class = FS::pkg_class->new({
+ classname => $classname,
+ categorynum => $categorynum,
+ });
+ my $error = $pkg_class->insert;
+ die "Error creating package class for product code '$classname':\n".
+ "$error\n"
+ if $error;
+ }
+
+ $classnum_of{$classname} = $pkg_class->classnum;
}
$opt{classnum} = $classnum_of{$classname};
}