one more repeatability fix + documentation, #37340
authorMark Wells <mark@freeside.biz>
Mon, 31 Aug 2015 21:55:34 +0000 (14:55 -0700)
committerMark Wells <mark@freeside.biz>
Mon, 31 Aug 2015 21:55:34 +0000 (14:55 -0700)
FS-Test/README
FS-Test/share/output/edit/part_pkg.cgi/2
FS/FS/cdr.pm

index b1518bd..8e9681c 100644 (file)
@@ -2,42 +2,36 @@ FS-Test
 
 INSTALLATION
 
 
 INSTALLATION
 
-To install this module, install Freeside as usual. Then run the following 
-commands:
-
-       perl Makefile.PL
-       make
-       make install
-
-INITIALIZATION
-
-Run "freeside-test-start" from an account that can sudo to root. This will
-create a database with the test image and set the system clock to one day
-after the last bill. If there's an existing Freeside database, it will be
-renamed to "freeside_YYYYMMDD" (the current date).
-
-To restore the system clock and put the existing database back in place,
-run "freeside-test-stop".
+This module no longer needs to be installed. Run it directly from the source
+tree.
 
 RUNNING TESTS
 
 
 RUNNING TESTS
 
-"freeside-test-run" is the main test script. Currently there's only one 
-test plan, "ui_tests". freeside-test-run will:
+"freeside-test-run" is the main test script. Currently there's only one test
+plan, "ui_tests". freeside-test-run will:
 
 - download all the URLs listed in the test plan into a directory in /tmp
 - compare them to the reference versions with "diff -ur"
 - write the output to "freeside_test.YYYYMMDD.diff"
 
 - download all the URLs listed in the test plan into a directory in /tmp
 - compare them to the reference versions with "diff -ur"
 - write the output to "freeside_test.YYYYMMDD.diff"
-- display the results of "diffstat" on that diff
 
 The raw output directory will not be deleted, so you can examine the results
 
 The raw output directory will not be deleted, so you can examine the results
-yourself. This is recommended for files that don't diff nicely like Excel 
-versions of reports and PDF invoices.
+yourself.
+
+If you want to do anything with the database besides compare the test results
+to reference, run "freeside-test-start" by hand first. This will create a
+database with the test image and start Apache with a fake time of one day after
+the last bill. If there's an existing Freeside database, it will be renamed to
+"freeside_YYYYMMDD" (the current date).
+
+To put the existing database back in place, run "freeside-test-stop", then
+restart Apache and any Freeside services.
 
 UPDATING THE REFERENCE PAGES
 
 The simplest way to update the reference copies of the test pages is
 
 
 UPDATING THE REFERENCE PAGES
 
 The simplest way to update the reference copies of the test pages is
 
-freeside-test-fetch -d ./share/output
+bin/freeside-test-start
+bin/freeside-test-fetch -d ./share/output
 
 (from the FS-Test source directory). If you're installing from a git repo,
 this will overwrite the working tree with the newly downloaded test pages.
 
 (from the FS-Test source directory). If you're installing from a git repo,
 this will overwrite the working tree with the newly downloaded test pages.
index 9aba158..798351f 100644 (file)
@@ -4720,9 +4720,9 @@ spawn_supp_dst_pkgpart(this);"
       <INPUT TYPE="checkbox" NAME="voip_cdr__skip_same_customer" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Calculate usage based on the duration field instead of the billsec field</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_cdr__use_duration" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Rewrite these (comma-separated) destination numbers to 411 for rating purposes (also ignore any carrierid check): </TD><TD>
       <INPUT TYPE="text" NAME="voip_cdr__411_rewrite" VALUE=""></TD></TR><TR><TD ALIGN="right">CDR display format for invoices</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_cdr__skip_same_customer" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Calculate usage based on the duration field instead of the billsec field</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_cdr__use_duration" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Rewrite these (comma-separated) destination numbers to 411 for rating purposes (also ignore any carrierid check): </TD><TD>
       <INPUT TYPE="text" NAME="voip_cdr__411_rewrite" VALUE=""></TD></TR><TR><TD ALIGN="right">CDR display format for invoices</TD><TD>
-      <SELECT NAME="voip_cdr__output_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="basic">Basic<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="source_default">Default with source<OPTION VALUE="simple2">Simple with source<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="default">Default<OPTION VALUE="simple">Simple<OPTION VALUE="accountcode_default">Default plus accountcode</SELECT></TD></TR><TR><TD ALIGN="right">CDR display format for selfservice</TD><TD>
-      <SELECT NAME="voip_cdr__selfservice_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="basic">Basic<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="source_default">Default with source<OPTION VALUE="simple2">Simple with source<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="default">Default<OPTION VALUE="simple">Simple<OPTION VALUE="accountcode_default">Default plus accountcode</SELECT></TD></TR><TR><TD ALIGN="right">Inbound CDR display format for selfservice</TD><TD>
-      <SELECT NAME="voip_cdr__selfservice_inbound_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="basic">Basic<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="source_default">Default with source<OPTION VALUE="simple2">Simple with source<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="default">Default<OPTION VALUE="simple">Simple<OPTION VALUE="accountcode_default">Default plus accountcode</SELECT></TD></TR><TR><TD ALIGN="right">Always put usage details in separate section.  The section is defined in the next option.</TD><TD>
+      <SELECT NAME="voip_cdr__output_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="basic">Basic<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="default">Default<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="simple">Simple<OPTION VALUE="simple2">Simple with source<OPTION VALUE="source_default">Default with source<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix</SELECT></TD></TR><TR><TD ALIGN="right">CDR display format for selfservice</TD><TD>
+      <SELECT NAME="voip_cdr__selfservice_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="basic">Basic<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="default">Default<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="simple">Simple<OPTION VALUE="simple2">Simple with source<OPTION VALUE="source_default">Default with source<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix</SELECT></TD></TR><TR><TD ALIGN="right">Inbound CDR display format for selfservice</TD><TD>
+      <SELECT NAME="voip_cdr__selfservice_inbound_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="basic">Basic<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="default">Default<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="simple">Simple<OPTION VALUE="simple2">Simple with source<OPTION VALUE="source_default">Default with source<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix</SELECT></TD></TR><TR><TD ALIGN="right">Always put usage details in separate section.  The section is defined in the next option.</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_cdr__usage_mandate" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Section in which to place usage charges (whether separated or not): </TD><TD>
       <INPUT TYPE="text" NAME="voip_cdr__usage_section" VALUE=""></TD></TR><TR><TD ALIGN="right">Include usage summary with recurring charges when usage is in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_cdr__summarize_usage" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Show details for included / no-charge calls.</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_cdr__usage_mandate" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Section in which to place usage charges (whether separated or not): </TD><TD>
       <INPUT TYPE="text" NAME="voip_cdr__usage_section" VALUE=""></TD></TR><TR><TD ALIGN="right">Include usage summary with recurring charges when usage is in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_cdr__summarize_usage" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Show details for included / no-charge calls.</TD><TD>
@@ -4775,7 +4775,7 @@ spawn_supp_dst_pkgpart(this);"
       <INPUT TYPE="text" NAME="voip_inbound__skip_dst_length_less" VALUE=""></TD></TR><TR><TD ALIGN="right">Do not charge for CDRs where the lastapp matches this value</TD><TD>
       <INPUT TYPE="text" NAME="voip_inbound__skip_lastapp" VALUE=""></TD></TR><TR><TD ALIGN="right">Calculate usage based on the duration field instead of the billsec field</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_inbound__use_duration" VALUE=1 ></TD></TR><TR><TD ALIGN="right">CDR invoice display format</TD><TD>
       <INPUT TYPE="text" NAME="voip_inbound__skip_dst_length_less" VALUE=""></TD></TR><TR><TD ALIGN="right">Do not charge for CDRs where the lastapp matches this value</TD><TD>
       <INPUT TYPE="text" NAME="voip_inbound__skip_lastapp" VALUE=""></TD></TR><TR><TD ALIGN="right">Calculate usage based on the duration field instead of the billsec field</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_inbound__use_duration" VALUE=1 ></TD></TR><TR><TD ALIGN="right">CDR invoice display format</TD><TD>
-      <SELECT NAME="voip_inbound__output_format"><OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="basic">Basic<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="source_default">Default with source<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="simple2">Simple with source<OPTION VALUE="default">Default<OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="simple">Simple<OPTION VALUE="description_default">Default with description field as destination</SELECT></TD></TR><TR><TD ALIGN="right">Always put usage details in separate section</TD><TD>
+      <SELECT NAME="voip_inbound__output_format"><OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="simple2">Simple with source<OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="simple">Simple<OPTION VALUE="source_default">Default with source<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="basic">Basic<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="default">Default</SELECT></TD></TR><TR><TD ALIGN="right">Always put usage details in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_inbound__usage_mandate" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Include usage summary with recurring charges when usage is in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_inbound__summarize_usage" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Section in which to place usage charges (whether separated or not)</TD><TD>
       <INPUT TYPE="text" NAME="voip_inbound__usage_section" VALUE=""></TD></TR><TR><TD ALIGN="right">Generate an invoice immediately for every call.  Useful for prepaid.</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_inbound__usage_mandate" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Include usage summary with recurring charges when usage is in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_inbound__summarize_usage" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Section in which to place usage charges (whether separated or not)</TD><TD>
       <INPUT TYPE="text" NAME="voip_inbound__usage_section" VALUE=""></TD></TR><TR><TD ALIGN="right">Generate an invoice immediately for every call.  Useful for prepaid.</TD><TD>
@@ -4834,9 +4834,9 @@ spawn_supp_dst_pkgpart(this);"
       <INPUT TYPE="checkbox" NAME="voip_tiered__skip_same_customer" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Calculate usage based on the duration field instead of the billsec field</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_tiered__use_duration" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Rewrite these (comma-separated) destination numbers to 411 for rating purposes (also ignore any carrierid check): </TD><TD>
       <INPUT TYPE="text" NAME="voip_tiered__411_rewrite" VALUE=""></TD></TR><TR><TD ALIGN="right">CDR display format for invoices</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_tiered__skip_same_customer" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Calculate usage based on the duration field instead of the billsec field</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_tiered__use_duration" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Rewrite these (comma-separated) destination numbers to 411 for rating purposes (also ignore any carrierid check): </TD><TD>
       <INPUT TYPE="text" NAME="voip_tiered__411_rewrite" VALUE=""></TD></TR><TR><TD ALIGN="right">CDR display format for invoices</TD><TD>
-      <SELECT NAME="voip_tiered__output_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="basic">Basic<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="source_default">Default with source<OPTION VALUE="simple2">Simple with source<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="default">Default<OPTION VALUE="simple">Simple<OPTION VALUE="accountcode_default">Default plus accountcode</SELECT></TD></TR><TR><TD ALIGN="right">CDR display format for selfservice</TD><TD>
-      <SELECT NAME="voip_tiered__selfservice_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="basic">Basic<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="source_default">Default with source<OPTION VALUE="simple2">Simple with source<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="default">Default<OPTION VALUE="simple">Simple<OPTION VALUE="accountcode_default">Default plus accountcode</SELECT></TD></TR><TR><TD ALIGN="right">Inbound CDR display format for selfservice</TD><TD>
-      <SELECT NAME="voip_tiered__selfservice_inbound_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="basic">Basic<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="source_default">Default with source<OPTION VALUE="simple2">Simple with source<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="default">Default<OPTION VALUE="simple">Simple<OPTION VALUE="accountcode_default">Default plus accountcode</SELECT></TD></TR><TR><TD ALIGN="right">Always put usage details in separate section.  The section is defined in the next option.</TD><TD>
+      <SELECT NAME="voip_tiered__output_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="basic">Basic<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="default">Default<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="simple">Simple<OPTION VALUE="simple2">Simple with source<OPTION VALUE="source_default">Default with source<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix</SELECT></TD></TR><TR><TD ALIGN="right">CDR display format for selfservice</TD><TD>
+      <SELECT NAME="voip_tiered__selfservice_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="basic">Basic<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="default">Default<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="simple">Simple<OPTION VALUE="simple2">Simple with source<OPTION VALUE="source_default">Default with source<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix</SELECT></TD></TR><TR><TD ALIGN="right">Inbound CDR display format for selfservice</TD><TD>
+      <SELECT NAME="voip_tiered__selfservice_inbound_format"><OPTION VALUE="" SELECTED><OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="basic">Basic<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="default">Default<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="simple">Simple<OPTION VALUE="simple2">Simple with source<OPTION VALUE="source_default">Default with source<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix</SELECT></TD></TR><TR><TD ALIGN="right">Always put usage details in separate section.  The section is defined in the next option.</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_tiered__usage_mandate" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Section in which to place usage charges (whether separated or not): </TD><TD>
       <INPUT TYPE="text" NAME="voip_tiered__usage_section" VALUE=""></TD></TR><TR><TD ALIGN="right">Include usage summary with recurring charges when usage is in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_tiered__summarize_usage" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Show details for included / no-charge calls.</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_tiered__usage_mandate" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Section in which to place usage charges (whether separated or not): </TD><TD>
       <INPUT TYPE="text" NAME="voip_tiered__usage_section" VALUE=""></TD></TR><TR><TD ALIGN="right">Include usage summary with recurring charges when usage is in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="voip_tiered__summarize_usage" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Show details for included / no-charge calls.</TD><TD>
@@ -4872,7 +4872,7 @@ spawn_supp_dst_pkgpart(this);"
       <INPUT TYPE="checkbox" NAME="cdr_termination__prorate_round_day" VALUE=1  CHECKED></TD></TR><TR><TD ALIGN="right">When prorating first month, also bill for one full period after that</TD><TD>
       <INPUT TYPE="checkbox" NAME="cdr_termination__add_full_period" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Show prorate details on the invoice</TD><TD>
       <INPUT TYPE="checkbox" NAME="cdr_termination__prorate_verbose" VALUE=1  CHECKED></TD></TR><TR><TD ALIGN="right">CDR invoice display format</TD><TD>
       <INPUT TYPE="checkbox" NAME="cdr_termination__prorate_round_day" VALUE=1  CHECKED></TD></TR><TR><TD ALIGN="right">When prorating first month, also bill for one full period after that</TD><TD>
       <INPUT TYPE="checkbox" NAME="cdr_termination__add_full_period" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Show prorate details on the invoice</TD><TD>
       <INPUT TYPE="checkbox" NAME="cdr_termination__prorate_verbose" VALUE=1  CHECKED></TD></TR><TR><TD ALIGN="right">CDR invoice display format</TD><TD>
-      <SELECT NAME="cdr_termination__output_format"><OPTION VALUE="simple">Simple<OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="default">Default<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="simple2">Simple with source<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="source_default">Default with source<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="basic">Basic<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="accountcode_simple">Simple with accountcode</SELECT></TD></TR><TR><TD ALIGN="right">Section in which to place separate usage charges</TD><TD>
+      <SELECT NAME="cdr_termination__output_format"><OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="basic">Basic<OPTION VALUE="default">Default<OPTION VALUE="source_default">Default with source<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="simple">Simple<OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="simple2">Simple with source<OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="sum_duration">Summary, one line per service</SELECT></TD></TR><TR><TD ALIGN="right">Section in which to place separate usage charges</TD><TD>
       <INPUT TYPE="text" NAME="cdr_termination__usage_section" VALUE=""></TD></TR><TR><TD ALIGN="right">Include usage summary with recurring charges when usage is in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="cdr_termination__summarize_usage" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Always put usage details in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="cdr_termination__usage_mandate" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Credit the customer for the unused portion of service at cancellation</TD><TD>
       <INPUT TYPE="text" NAME="cdr_termination__usage_section" VALUE=""></TD></TR><TR><TD ALIGN="right">Include usage summary with recurring charges when usage is in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="cdr_termination__summarize_usage" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Always put usage details in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="cdr_termination__usage_mandate" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Credit the customer for the unused portion of service at cancellation</TD><TD>
@@ -4992,7 +4992,7 @@ spawn_supp_dst_pkgpart(this);"
       <INPUT TYPE="checkbox" NAME="agent_cdr__prorate_round_day" VALUE=1  CHECKED></TD></TR><TR><TD ALIGN="right">When prorating first month, also bill for one full period after that</TD><TD>
       <INPUT TYPE="checkbox" NAME="agent_cdr__add_full_period" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Show prorate details on the invoice</TD><TD>
       <INPUT TYPE="checkbox" NAME="agent_cdr__prorate_verbose" VALUE=1  CHECKED></TD></TR><TR><TD ALIGN="right">CDR invoice display format</TD><TD>
       <INPUT TYPE="checkbox" NAME="agent_cdr__prorate_round_day" VALUE=1  CHECKED></TD></TR><TR><TD ALIGN="right">When prorating first month, also bill for one full period after that</TD><TD>
       <INPUT TYPE="checkbox" NAME="agent_cdr__add_full_period" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Show prorate details on the invoice</TD><TD>
       <INPUT TYPE="checkbox" NAME="agent_cdr__prorate_verbose" VALUE=1  CHECKED></TD></TR><TR><TD ALIGN="right">CDR invoice display format</TD><TD>
-      <SELECT NAME="agent_cdr__output_format"><OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="simple">Simple<OPTION VALUE="default">Default<OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="simple2">Simple with source<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name<OPTION VALUE="source_default">Default with source<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="basic">Basic<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="accountcode_simple">Simple with accountcode</SELECT></TD></TR><TR><TD ALIGN="right">Section in which to place separate usage charges</TD><TD>
+      <SELECT NAME="agent_cdr__output_format"><OPTION VALUE="sum_duration_prefix">Summary, one line per destination prefix<OPTION VALUE="sum_count">Number of calls, one line per service<OPTION VALUE="simple">Simple<OPTION VALUE="sum_count_class">Summary, one line per usage class<OPTION VALUE="basic">Basic<OPTION VALUE="default">Default<OPTION VALUE="source_default">Default with source<OPTION VALUE="description_default">Default with description field as destination<OPTION VALUE="simple2">Simple with source<OPTION VALUE="accountcode_default">Default plus accountcode<OPTION VALUE="sum_duration">Summary, one line per service<OPTION VALUE="accountcode_simple">Simple with accountcode<OPTION VALUE="basic_upstream_dst_regionname">Basic with upstream destination name</SELECT></TD></TR><TR><TD ALIGN="right">Section in which to place separate usage charges</TD><TD>
       <INPUT TYPE="text" NAME="agent_cdr__usage_section" VALUE=""></TD></TR><TR><TD ALIGN="right">Include usage summary with recurring charges when usage is in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="agent_cdr__summarize_usage" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Always put usage details in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="agent_cdr__usage_mandate" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Credit the customer for the unused portion of service at cancellation</TD><TD>
       <INPUT TYPE="text" NAME="agent_cdr__usage_section" VALUE=""></TD></TR><TR><TD ALIGN="right">Include usage summary with recurring charges when usage is in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="agent_cdr__summarize_usage" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Always put usage details in separate section</TD><TD>
       <INPUT TYPE="checkbox" NAME="agent_cdr__usage_mandate" VALUE=1 ></TD></TR><TR><TD ALIGN="right">Credit the customer for the unused portion of service at cancellation</TD><TD>
index 1a36660..775c791 100644 (file)
@@ -1463,7 +1463,7 @@ as keys (for use with part_pkg::voip_cdr) and "pretty" format names as values.
 sub invoice_formats {
   map { ($_ => $export_names{$_}->{'name'}) }
     grep { $export_names{$_}->{'invoice_header'} }
 sub invoice_formats {
   map { ($_ => $export_names{$_}->{'name'}) }
     grep { $export_names{$_}->{'invoice_header'} }
-    keys %export_names;
+    sort keys %export_names;
 }
 
 =item invoice_header FORMAT
 }
 
 =item invoice_header FORMAT