From bda74e13569c8531e77e8dcd01d9da9038f3c4d0 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Tue, 11 Dec 2012 13:56:48 -0800 Subject: [PATCH] auto-create package classes in ipifony download, #18333 --- FS/bin/freeside-ipifony-download | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/FS/bin/freeside-ipifony-download b/FS/bin/freeside-ipifony-download index ac9f76400..e893326e2 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}; } -- 2.11.0