<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://secure.freeside.biz/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mitch</id>
		<title>Freeside - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://secure.freeside.biz/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mitch"/>
		<link rel="alternate" type="text/html" href="https://secure.freeside.biz/mediawiki/index.php/Special:Contributions/Mitch"/>
		<updated>2026-05-21T15:01:02Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.7</generator>

	<entry>
		<id>https://secure.freeside.biz/mediawiki/index.php?title=Freeside:4:Documentation:Administration:Tax_Districts&amp;diff=9786</id>
		<title>Freeside:4:Documentation:Administration:Tax Districts</title>
		<link rel="alternate" type="text/html" href="https://secure.freeside.biz/mediawiki/index.php?title=Freeside:4:Documentation:Administration:Tax_Districts&amp;diff=9786"/>
				<updated>2019-06-12T08:32:24Z</updated>
		
		<summary type="html">&lt;p&gt;Mitch: Add section on v4 upgrade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
Freeside supports billing taxes by district, instead of city/county/state.&lt;br /&gt;
&lt;br /&gt;
Currently this is only supported in the state of Washington.  Public data&lt;br /&gt;
sources provided by the Washington Dept. of Revenue are used to automatically&lt;br /&gt;
maintain tax rate tables, and classify customer locations into the correct&lt;br /&gt;
tax district.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Enable Washington state sales tax districts ===&lt;br /&gt;
&lt;br /&gt;
# Navigate to: Configuration &amp;gt; Settings&lt;br /&gt;
# Set option '''tax_district_method''' to '''Washington sales tax'''&lt;br /&gt;
# Set option '''tax_district_taxname''', the tax name to dsplay on the invoice, or keep the default as '''Tax'''&lt;br /&gt;
# Run '''freeside-daily''' or '''freeside-tax-district-update -l''' to populate tax tables, and classify customers into their districts&lt;br /&gt;
&lt;br /&gt;
=== Download tax tables and classify customer tax districts ===&lt;br /&gt;
&lt;br /&gt;
The WA tax tables will be automatically populated, and customers in WA will&lt;br /&gt;
be classified into their tax district he next time '''freeside-daily''' runs.&lt;br /&gt;
&lt;br /&gt;
You don't have to wait for '''freeside-daily'''.  The following command&lt;br /&gt;
will update the tax tables and classify WA customers into their tax district.&lt;br /&gt;
&lt;br /&gt;
  sudo -u freeside /usr/bin/freeside-tax-district-update -l freeside_username&lt;br /&gt;
&lt;br /&gt;
=== Changing Tax Name ===&lt;br /&gt;
&lt;br /&gt;
You can change the display name for this tax by setting the config option '''tax_district_taxname'''.  After changing the configuration value, the tax tables must be updated with the new taxname.  This will happen automatically on the 1st of each month.  Use '''freeside-tax-district-update''' to force this update sooner.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tax table updates ===&lt;br /&gt;
&lt;br /&gt;
'''freeside-daily''' will refresh the tax tables automatically on the first&lt;br /&gt;
of each month.&lt;br /&gt;
&lt;br /&gt;
Tax tables can be forcibly updated at any time using the&lt;br /&gt;
'''freeside-tax-district-update''' utility.&lt;br /&gt;
&lt;br /&gt;
If freeside is configured to use tax classes, with the '''enable_taxclasses'''&lt;br /&gt;
configuration value, a complete copy of the Washington tax table will be&lt;br /&gt;
created in every taxclass.  If new tax classes are added later, the&lt;br /&gt;
'''freeside-tax-district-update''' utility can be used to force an immediate rebuild&lt;br /&gt;
of the tax table into the new tax class.&lt;br /&gt;
&lt;br /&gt;
To view the tax table, navigate to Configuration &amp;gt; Billing &amp;gt; Locales and Tax Rates&lt;br /&gt;
&lt;br /&gt;
=== Customer tax district classification ===&lt;br /&gt;
&lt;br /&gt;
When an address record is created or edited, Freeside will ask the WA Dept.&lt;br /&gt;
of Revenue API which tax district to use for the address.&lt;br /&gt;
&lt;br /&gt;
If an invalid address is entereed, the tax district cannot be determined.&lt;br /&gt;
The user will be advised to correct the address, or to manually choose a&lt;br /&gt;
tax district to use.&lt;br /&gt;
&lt;br /&gt;
Invoices cannot be generated for a WA customer missing a tax district.&lt;br /&gt;
When a customer is missing a tax district:&lt;br /&gt;
* A notice appears on the customer page with instructions to fix&lt;br /&gt;
* Billing will not complete for this customer&lt;br /&gt;
* Freeside will retry, daily, to determine the customer tax district&lt;br /&gt;
* System log notices are generated about this problem.  Subscribe to E-Mail alerts of these notices.&lt;br /&gt;
&lt;br /&gt;
The '''freeside-tax-district-update''' tool can be used to force reclassification&lt;br /&gt;
of every WA state address in cust_location.  This may be useful if the state&lt;br /&gt;
re-draws district lines, and all customers need to be reclassified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure system log alerts ===&lt;br /&gt;
&lt;br /&gt;
If a customer location record in the database lacks a tax district,&lt;br /&gt;
freeside-daily will attempt to correct this situation.  If that fails,&lt;br /&gt;
Freeside will report an error to the system log.&lt;br /&gt;
&lt;br /&gt;
Freeside will report another error every time '''freeside-daily''' runs, for&lt;br /&gt;
every WA cust_location record without a tax district.&lt;br /&gt;
&lt;br /&gt;
It is recommended to set two e-mail system log alerts:&lt;br /&gt;
1. log-level: error, log-context: wa_sales&lt;br /&gt;
2. log-level: error, log-context: tax_rate_update&lt;br /&gt;
&lt;br /&gt;
Using log-level: info, somebody can be notified of all tax tables updates,&lt;br /&gt;
and every successful tax district classification for a cust_location record.&lt;br /&gt;
&lt;br /&gt;
See [[Freeside:3:Documentation:Administration#System_Log]] for help&lt;br /&gt;
configuration system log alerts.&lt;br /&gt;
&lt;br /&gt;
== Upgrade from Version 3 to 4 ==&lt;br /&gt;
&lt;br /&gt;
Beginning with Freeside version 4, duplicate rows for identical tax districts&lt;br /&gt;
in the cust_main_county table will block automatic tax table updates.&lt;br /&gt;
&lt;br /&gt;
After upgrade, if an instance needs tax table repair,&lt;br /&gt;
'''freeside-wa-tax-table-repair --check''' will display information on&lt;br /&gt;
the problem tax rows.  The duplicate rows can be merged with&lt;br /&gt;
'''freeside-wa-tax-table-repair --merge''' or&lt;br /&gt;
'''freeside-wa-tax-table-repair --merge-all'''&lt;br /&gt;
&lt;br /&gt;
If a problem has developed with manually entered tax table rows for&lt;br /&gt;
Universal Service Fund, this can be fixed with&lt;br /&gt;
'''freeside-wa-tax-table-repaair --fix-usf'''&lt;br /&gt;
&lt;br /&gt;
After running these tools, it's recommended to force a tax table update&lt;br /&gt;
with '''freeside-wa-tax-table-update -l'''&lt;/div&gt;</summary>
		<author><name>Mitch</name></author>	</entry>

	<entry>
		<id>https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration:Real-time_Processing:Bambora&amp;diff=9770</id>
		<title>Freeside:3:Documentation:Administration:Real-time Processing:Bambora</title>
		<link rel="alternate" type="text/html" href="https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration:Real-time_Processing:Bambora&amp;diff=9770"/>
				<updated>2019-04-24T06:20:21Z</updated>
		
		<summary type="html">&lt;p&gt;Mitch: Initial documentation for Bambora payment module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Configuring Bambora Real-Time Processing =&lt;br /&gt;
&lt;br /&gt;
See [[Freeside:3:Documentation:Administration:Real-time_Processing]] for general configuration&lt;br /&gt;
&lt;br /&gt;
== Configure Bambora Merchant Settings ==&lt;br /&gt;
&lt;br /&gt;
This module generates HTTP Authorization headers based on your&lt;br /&gt;
Bambora API Access Passcode.  You must generate an API Access Passcode&lt;br /&gt;
within the Bambora merchant portal under the menu headings&lt;br /&gt;
Administration &amp;gt; Account Settings &amp;gt; Order Settings&lt;br /&gt;
&lt;br /&gt;
If you intend to use tokenization, you must also copy the same&lt;br /&gt;
API Access Passcode to the configuration page found at&lt;br /&gt;
Configuration &amp;gt; Payment Profile Configuration&lt;br /&gt;
&lt;br /&gt;
== Tokenization Implementation ==&lt;br /&gt;
&lt;br /&gt;
Many-use tokenization is achieved via the Bambora Payment Profile feature&lt;br /&gt;
&lt;br /&gt;
The token created by this module represents the Bambora customer_code identifier&lt;br /&gt;
for Payment Profile records&lt;br /&gt;
&lt;br /&gt;
This module does not support advanced management of the Payment Profile,&lt;br /&gt;
such as storing multiple cards onto a single profile, or updating the&lt;br /&gt;
stored profile detail&lt;br /&gt;
&lt;br /&gt;
Recommending configuration settings in your Bambora merchant portal:&lt;br /&gt;
( as of the time of this module's writing )&lt;br /&gt;
&lt;br /&gt;
  Main Manu &amp;gt; Configuration &amp;gt; Payment Profile Configuration&lt;br /&gt;
  &lt;br /&gt;
  General Settings:&lt;br /&gt;
    - Uncheck &amp;quot;Requre unique order numbers&amp;quot;&lt;br /&gt;
    - Uncheck &amp;quot;Do not allow profile to be created with billing information&lt;br /&gt;
        duplicated from an existing profile&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  Security Settings:&lt;br /&gt;
    - Select: API Access Passcode (requierd for this API)&lt;br /&gt;
    - The API Access Passcode will be your &amp;quot;password&amp;quot; using this module&lt;br /&gt;
  &lt;br /&gt;
  Credit Card Settings&lt;br /&gt;
    - Uncheck &amp;quot;Do not allow profile to be created with card data duplicated&lt;br /&gt;
        from an existing profile&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configure the Freeside Payment Gateway ==&lt;br /&gt;
&lt;br /&gt;
* Within Freside, navigate to Main Menu &amp;gt; Configuration &amp;gt; Settings &amp;gt; Billing&lt;br /&gt;
* Configure the text box for Business::OnlinePayment module with your Merchant ID and API Passcode, and click Apply Changes&lt;br /&gt;
&lt;br /&gt;
  Bambora&lt;br /&gt;
  123456789&lt;br /&gt;
  F32C09C2996D4D9394802C7BA61F19E1&lt;/div&gt;</summary>
		<author><name>Mitch</name></author>	</entry>

	<entry>
		<id>https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration:Real-time_Processing&amp;diff=9769</id>
		<title>Freeside:3:Documentation:Administration:Real-time Processing</title>
		<link rel="alternate" type="text/html" href="https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration:Real-time_Processing&amp;diff=9769"/>
				<updated>2019-04-24T06:10:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mitch: /* Introduction */ Add Bambora/Beanstream link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Freeside uses Business::OnlinePayment to process payments in real-time.  See the [http://perl.business/onlinepayment/ Business::OnlinePayment homepage] for supported processors.&lt;br /&gt;
&lt;br /&gt;
Additional documentation available for:&lt;br /&gt;
* [[Freeside:1.9:Documentation:Administration:Real-time_Processing:IPPay|IPPay]]&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Real-time_Processing:Bambora|Bambora/Beanstream]]&lt;br /&gt;
&lt;br /&gt;
=Configuring Real-Time Processing=&lt;br /&gt;
&lt;br /&gt;
== Install gateway module ==&lt;br /&gt;
&lt;br /&gt;
*Install a real-time processing module, such as Business::OnlinePayment::TCLink, or Business::OnlinePayment::Exact&lt;br /&gt;
Debian:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 root# aptitude install libbusiness-onlinepayment-gatewayname-perl&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Other OSes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 root# cpan Business::OnlinePayment::GatewayName&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure billing events ==&lt;br /&gt;
&lt;br /&gt;
* Remove the Batch Card processing event(s), if any:&lt;br /&gt;
** Configuration -&amp;gt; Billing -&amp;gt; View/Edit Billing Events&lt;br /&gt;
** Click on &amp;quot;Batch card&amp;quot;&lt;br /&gt;
** Check off &amp;quot;Disabled&amp;quot;&lt;br /&gt;
** Click &amp;quot;Apply changes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Add an event for realtime processing:&lt;br /&gt;
** Configuration -&amp;gt; Billing -&amp;gt; View/Edit Billing Events&lt;br /&gt;
** Click on &amp;quot;Add a new invoice event&amp;quot;&lt;br /&gt;
** Choose Type &amp;quot;Invoice&amp;quot;&lt;br /&gt;
** Scroll down to the &amp;quot;Event action&amp;quot; dropdown at the bottom, and select &amp;quot;Run card with a Business::OnlinePayment realtime gateway&amp;quot; &lt;br /&gt;
** Click on &amp;quot;Add billing event definition&amp;quot; at the bottom of the form.&lt;br /&gt;
&lt;br /&gt;
== Configure the payment gateway ==&lt;br /&gt;
&lt;br /&gt;
* Configuration -&amp;gt; Settings&lt;br /&gt;
* Click the &amp;quot;Billing&amp;quot; tab&lt;br /&gt;
* Scroll down and click on the &amp;quot;business-onlinepayment&amp;quot; configuration option.&lt;br /&gt;
* In the text box, enter the Business::OnlinePayment module you are using, followed by your account ID, password, and (optionally), type of action&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 TCLink&lt;br /&gt;
 someuser&lt;br /&gt;
 password&lt;br /&gt;
 Normal Authorization&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Some payment gateways such as LinkPoint don't use a username/password, and require additional parameters. These can be passed in as key&amp;lt;newline&amp;gt;value pairs&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 LinkPoint&lt;br /&gt;
               &amp;lt;-- intentionally left blank &lt;br /&gt;
               &amp;lt;-- intentionally left blank &lt;br /&gt;
 Normal Authorization&lt;br /&gt;
 storename     &amp;lt;-- key&lt;br /&gt;
 123456        &amp;lt;-- value&lt;br /&gt;
 keyfile       &amp;lt;-- key&lt;br /&gt;
 123456.pem    &amp;lt;-- value&lt;br /&gt;
 lbin          &amp;lt;-- key&lt;br /&gt;
 /usr/bin.lbin &amp;lt;-- value&lt;br /&gt;
 tmp&lt;br /&gt;
 /tmp/secure&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Click &amp;quot;Apply Changes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Testing Real-Time Processing=&lt;br /&gt;
==One Time Transactions==&lt;br /&gt;
* Choose a customer account&lt;br /&gt;
* Click on 'Process credit card payment'&lt;br /&gt;
* Enter a payment ammount, and credit card details&lt;br /&gt;
* Click 'Process payment'&lt;br /&gt;
* The transaction should happen immediately&lt;br /&gt;
* Click on 'View this customer'&lt;br /&gt;
* At the bottom of the screen, &amp;quot;Payment History&amp;quot; should include this transaction&lt;br /&gt;
&lt;br /&gt;
==Recurring Transactions==&lt;br /&gt;
* Choose a customer account&lt;br /&gt;
* Click on 'Bill now', or run the freeside-daily cronjob from the command line as the freeside user&lt;br /&gt;
* At the bottom of the screen, &amp;quot;Payment History&amp;quot; should include this transaction&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* http://search.cpan.org/src/WITTEN/Business-OnlinePayment-TCLink-1.03/README.freeside&lt;br /&gt;
* http://www.sisd.com/freeside/list-archive/msg03193.html&lt;/div&gt;</summary>
		<author><name>Mitch</name></author>	</entry>

	<entry>
		<id>https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration&amp;diff=9766</id>
		<title>Freeside:3:Documentation:Administration</title>
		<link rel="alternate" type="text/html" href="https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration&amp;diff=9766"/>
				<updated>2019-03-12T17:12:46Z</updated>
		
		<summary type="html">&lt;p&gt;Mitch: /* Access */ svc_broadband links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Exports (provisioning) =&lt;br /&gt;
&lt;br /&gt;
'''Exports''' allow you to provision services to remote machines, databases and APIs.  Some exports, such as ''sqlradius'' and ''sqlradius_withdomain'',  enable a feed for retrieving rating/usage data.&lt;br /&gt;
&lt;br /&gt;
Exports can be added and edited under&lt;br /&gt;
: Configuration -&amp;gt; Provisioning, services and packages -&amp;gt; View/edit exports&lt;br /&gt;
&lt;br /&gt;
Most exports place jobs in the job queue for new, modified or deleted services.  Jobs are run by [[Freeside:3:Documentation:Developer/bin/freeside-queued|freeside-queued]].  This daemon needs to be running before exports are acted upon.&lt;br /&gt;
&lt;br /&gt;
Some exports use SSH, SCP or SFTP to communicate with external machines.  See the documentation on [[Freeside:3:Documentation:Administration:SSH_Keys|SSH keys]].&lt;br /&gt;
&lt;br /&gt;
Click on ''Add a new export'' to create a new export.  Select exports from the dropdown to show more information on each export, including available options, setup and usage.&lt;br /&gt;
&lt;br /&gt;
Exports are activated by associating them with one or more '''service definitions'''.&lt;br /&gt;
&lt;br /&gt;
Following is a list of which exports can be associated with each type of service.&lt;br /&gt;
&lt;br /&gt;
==svc_acct==&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:acct_plesk.pm|acct_plesk.pm]]:  Real-time export to Plesk managed mail service&lt;br /&gt;
* acct_sql.pm:  Real-time export of accounts to SQL databases .&lt;br /&gt;
* artera_turbo.pm: &lt;br /&gt;
* bsdshell.pm: &lt;br /&gt;
* [[Freeside:3:Documentation:Administration:communigate_pro.pm|communigate_pro.pm]]:  Real-time export to a CommuniGate Pro mail server&lt;br /&gt;
* communigate_pro_singledomain.pm: &lt;br /&gt;
* cpanel.pm:  Real-time export to Cpanel control panel.&lt;br /&gt;
* cp.pm:  Real-time export to Critical Path Account Provisioning Protocol&lt;br /&gt;
* cyrus.pm:  Real-time export to Cyrus IMAP server&lt;br /&gt;
* everyone_net.pm:  Real-time export to Everyone.net outsourced mail service&lt;br /&gt;
* infostreet.pm:  Real-time export to InfoStreet streetSmartAPI&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:ldap.pm|ldap.pm]]:  Real-time export to LDAP&lt;br /&gt;
* passwdfile.pm:&lt;br /&gt;
* radiator.pm:  Real-time export to RADIATOR&lt;br /&gt;
* shellcommands.pm: &lt;br /&gt;
* shellcommands_withdomain.pm:  Real-time export via remote SSH (vpopmail, ISPMan)&lt;br /&gt;
* sqlmail.pm:  Real-time export to SQL-backed mail server&lt;br /&gt;
* sqlradius.pm:  Real-time export to SQL-backed RADIUS (FreeRADIUS, ICRADIUS)&lt;br /&gt;
* sqlradius_withdomain.pm:  Real-time export to SQL-backed RADIUS (FreeRADIUS, ICRADIUS) with realms&lt;br /&gt;
* sysvshell.pm: &lt;br /&gt;
* textradius.pm: &lt;br /&gt;
* vpopmail.pm:  Real-time export to vpopmail text files&lt;br /&gt;
&lt;br /&gt;
==svc_domain==&lt;br /&gt;
* bind.pm:  Batch export to BIND named&lt;br /&gt;
* bind_slave.pm: Batch export to slave BIND named&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:communigate_pro.pm|communigate_pro.pm]]:  Real-time export to a CommuniGate Pro mail server&lt;br /&gt;
* domain_shellcommands.pm:  Run remote commands via SSH, for domains (qmail, ISPMan).&lt;br /&gt;
* domain_sql.pm:  Real time export of domains to SQL databases .&lt;br /&gt;
* http.pm:  Send an HTTP or HTTPS GET or POST request&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:opensrs.pm|opensrs.pm]]: OpenSRS integration&lt;br /&gt;
* sqlmail.pm:  Real-time export to SQL-backed mail server&lt;br /&gt;
&lt;br /&gt;
==svc_forward==&lt;br /&gt;
* artera_turbo.pm: &lt;br /&gt;
* [[Freeside:3:Documentation:Administration:communigate_pro.pm|communigate_pro.pm]]:  Real-time export to a CommuniGate Pro mail server&lt;br /&gt;
* forward_shellcommands.pm:  Run remote commands via SSH, for forwards&lt;br /&gt;
* postfix.pm:  Postfix text files&lt;br /&gt;
* sqlmail.pm:  Real-time export to SQL-backed mail server&lt;br /&gt;
&lt;br /&gt;
==svc_www==&lt;br /&gt;
* apache.pm:  Export an Apache httpd.conf file snippet.&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:www_plesk.pm|www_plesk.pm]]:  Real-time export to Plesk managed hosting service&lt;br /&gt;
* www_shellcommands.pm:  Run remote commands via SSH, for virtual web sites (directory maintenance, FrontPage, ISPMan)&lt;br /&gt;
&lt;br /&gt;
==svc_broadband==&lt;br /&gt;
* nas_wrapper.pm:  A meta-export that triggers other svc_broadband exports.&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:prizm.pm|prizm.pm]]:  Real-time export to Northbound Interface&lt;br /&gt;
* router.pm:  Send a command to a router.&lt;br /&gt;
* snmp.pm:  Sends SNMP SETs to an SNMP agent.&lt;br /&gt;
* trango.pm:  Sends SNMP SETs to a Trango AP.&lt;br /&gt;
&lt;br /&gt;
==svc_phone==&lt;br /&gt;
* globalpops_voip.pm:&lt;br /&gt;
* grandstream.pm: Grandstream phone and ATA provisioning.   This [http://www.freeside.biz/blog/?p=11 blog article] is a start at documentation.&lt;br /&gt;
* indosoft.pm:&lt;br /&gt;
* internal_diddb.pm:&lt;br /&gt;
* netsapiens.pm:&lt;br /&gt;
* phone_shellcommands.pm:&lt;br /&gt;
* phone_sqlradius.pm:&lt;br /&gt;
* thirdlane.pm:&lt;br /&gt;
* [[Freeside:Documentation:Administration:vitelity.pm|vitelity.pm]]: Vitelity provisioning&lt;br /&gt;
&lt;br /&gt;
==svc_external==&lt;br /&gt;
* artera_turbo.pm:&lt;br /&gt;
&lt;br /&gt;
==svc_dsl==&lt;br /&gt;
* ikano.pm: see [[Freeside:3:Documentation:Administration:svc_dsl:ikano|Ikano DSL provisioning and qualifications]]&lt;br /&gt;
&lt;br /&gt;
= Services =&lt;br /&gt;
&lt;br /&gt;
== Generic ==&lt;br /&gt;
&lt;br /&gt;
=== Accounts (svc_acct) ===&lt;br /&gt;
&lt;br /&gt;
Accounts - anything with a username (mailbox, shell, RADIUS, etc.)&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:svc_acct:_password_encoding|Password encoding]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware (svc_hardware) ===&lt;br /&gt;
&lt;br /&gt;
Equipment supplied to customers&lt;br /&gt;
&lt;br /&gt;
=== External (svc_external) ===&lt;br /&gt;
&lt;br /&gt;
Externally-tracked service&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
=== DSL (svc_dsl) ===&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:svc_dsl:ikano|Ikano DSL provisioning and qualifications]]&lt;br /&gt;
&lt;br /&gt;
=== Broadband (svc_broadband) ===&lt;br /&gt;
&lt;br /&gt;
Fixed wireless broadband&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:4:Documentation:Administration:svc_broadband.pm|svc_broadband.pm]]&lt;br /&gt;
* [[Freeside:4:Documentation:Administration:svc_broadband.pm#Automatically_Assign_IP_Addresses|Automatically Assign IP Addresses]]&lt;br /&gt;
&lt;br /&gt;
=== Cable (svc_cable) ===&lt;br /&gt;
&lt;br /&gt;
=== DISH Network (svc_dish) ===&lt;br /&gt;
&lt;br /&gt;
== Telephony ==&lt;br /&gt;
&lt;br /&gt;
=== Customer phone number / DID (svc_phone) ===&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:Documentation:Administration:Phone devices|Phone devices]]&lt;br /&gt;
&lt;br /&gt;
=== Customer PBX (svc_pbx) ===&lt;br /&gt;
&lt;br /&gt;
=== Phone circuit (svc_circuit) ===&lt;br /&gt;
&lt;br /&gt;
== Hosting ==&lt;br /&gt;
&lt;br /&gt;
=== Domains (svc_domain) ===&lt;br /&gt;
&lt;br /&gt;
=== Certificate (svc_cert) ===&lt;br /&gt;
&lt;br /&gt;
=== Forwards (svc_forward) ===&lt;br /&gt;
&lt;br /&gt;
=== Mailing list (svc_mailinglist)  ===&lt;br /&gt;
&lt;br /&gt;
=== Site hosting (svc_www) ===&lt;br /&gt;
&lt;br /&gt;
== Colocation ==&lt;br /&gt;
&lt;br /&gt;
=== Customer router/switch port (svc_port) ===&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
&lt;br /&gt;
{{Freeside:3:Documentation:Administration:pkg_category}}&lt;br /&gt;
&lt;br /&gt;
== Price Plans ==&lt;br /&gt;
&lt;br /&gt;
=== Common price plans ===&lt;br /&gt;
&lt;br /&gt;
* flat&lt;br /&gt;
* subscription&lt;br /&gt;
* prorate&lt;br /&gt;
* sqlradacct_hour&lt;br /&gt;
* [[voip_cdr]]&lt;br /&gt;
* prepaid&lt;br /&gt;
&lt;br /&gt;
=== Wholesale price plans ===&lt;br /&gt;
&lt;br /&gt;
* bulk&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Packages:Price_Plans:agent | agent]]&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Packages:Price_Plans:cdr_termination |&lt;br /&gt;
 cdr_termination ]]&lt;br /&gt;
&lt;br /&gt;
=== Other price plans ===&lt;br /&gt;
&lt;br /&gt;
* flat_delayed&lt;br /&gt;
* flat_introrate&lt;br /&gt;
* prorate_delayed&lt;br /&gt;
&lt;br /&gt;
* base_delayed&lt;br /&gt;
* base_rate&lt;br /&gt;
&lt;br /&gt;
* sql_external&lt;br /&gt;
* sql_generic&lt;br /&gt;
&lt;br /&gt;
=== Price plans of questionable functionality ===&lt;br /&gt;
&lt;br /&gt;
* flat_comission_cust&lt;br /&gt;
* flat_comission_pkg&lt;br /&gt;
* flat_comission&lt;br /&gt;
&lt;br /&gt;
* voip_sqlradacct&lt;br /&gt;
&lt;br /&gt;
* sesmon_hour&lt;br /&gt;
* sesmon_minute&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
* Some notes on [[Freeside:3:Documentation:Administration:Upselling | Upselling]]&lt;br /&gt;
&lt;br /&gt;
= Resellers =&lt;br /&gt;
&lt;br /&gt;
=== Wholesaler configuraiton ===&lt;br /&gt;
[[Freeside:3:Documentation:Administration:Wholesaler|Using agents for setting up Wholesalers]]&lt;br /&gt;
&lt;br /&gt;
= Employees =&lt;br /&gt;
&lt;br /&gt;
== Employees ==&lt;br /&gt;
&lt;br /&gt;
Go to Configuration -&amp;gt; Employees -&amp;gt; Employees to view the existing employees and add new ones.  It is highly recommended to add a separate account for each person rather than using role accounts.&lt;br /&gt;
&lt;br /&gt;
* To add a new employee, click on &amp;quot;Add an employee&amp;quot;&lt;br /&gt;
* Or to edit an existing group, click on the employee number or name in the list of employees.&lt;br /&gt;
* Enter or edit the username, password and name.  If editing an existing employee and no password change is desired, the password fields can be left blank.&lt;br /&gt;
* Check the &amp;quot;Disable employee&amp;quot; box to disable this employee.&lt;br /&gt;
* In the &amp;quot;Employee groups&amp;quot; section, mark or unmark checkboxes to indicate the access groups for this employee.&lt;br /&gt;
&lt;br /&gt;
Go to Configuration -&amp;gt; Ticketing -&amp;gt; Ticketing users&lt;br /&gt;
* Click on the Create link in the upper right hand corner&lt;br /&gt;
* Enter the same username as the Employee name above&lt;br /&gt;
* Enter any other information (Real name, Email address, etc. )&lt;br /&gt;
* Check both boxes in the access control box&lt;br /&gt;
* Click the Create button&lt;br /&gt;
(Be sure to add the ticketing user to the appropriate ticketing groups)&lt;br /&gt;
&lt;br /&gt;
== Employee groups and access control == &lt;br /&gt;
&lt;br /&gt;
To setup employee access control or agent/reseller virtualization, you need to setup employee groups.  Go to Configuration -&amp;gt; Employees -&amp;gt; Employee groups to view the existing groups and add new ones.  The system starts with a &amp;quot;Superuser&amp;quot; group which has access to all functionality for the first agent.&lt;br /&gt;
&lt;br /&gt;
* To add a new group, click on &amp;quot;Add an employee group&amp;quot;&lt;br /&gt;
* Or to edit an existing group, click on the group number or name in the list of groups.&lt;br /&gt;
* Enter or edit the group name.&lt;br /&gt;
* In the &amp;quot;Group limited to these agent(s)&amp;quot; section, mark checkboxes next to the agents this employee group should be able to see.  Employees in this group will only see customers of the selected agents in the system and reports.&lt;br /&gt;
* In the &amp;quot;Group access rights&amp;quot; section, mark or unmark checkboxes to indicate the access rights this employee group should have.  Rights marked with an &amp;quot;*&amp;quot; are global rights which provide access to global data which is shared among all agents. Their use is not recommended for groups which are limited to a subset of agents.&lt;br /&gt;
* After adding a new group, don't forget to go back and add or edit employees to place them into the new group.&lt;br /&gt;
&lt;br /&gt;
= Installers / Appointments =&lt;br /&gt;
&lt;br /&gt;
== Installers ==&lt;br /&gt;
&lt;br /&gt;
* Designate some employees as installers (Configuration -&amp;gt; Employees -&amp;gt; Employees)&lt;br /&gt;
* Edit their schedules (Configuration -&amp;gt; Employees -&amp;gt; Installer availability)&lt;br /&gt;
&lt;br /&gt;
== Ticketing ==&lt;br /&gt;
&lt;br /&gt;
* Setup a queue for appointments (installations, removals, etc.), or use existing per agent queues&lt;br /&gt;
* Make sure the installer employees can own / see / edit tickets in this&lt;br /&gt;
queue (add them to a ticketing group with OwnTicket / SeeQueue on that queue or global, etc.)&lt;br /&gt;
* not yet &amp;lt;strike&amp;gt;XXX future todo some sort of ill-defined thing with configuring a custom field to designate install / recall / service call / removal&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
not yet; package(+location)-specific appointments are a future TODO&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
* Setup a package category for packages that can schedule appointments&lt;br /&gt;
* In the package category, select a queue for appointments or pick &amp;quot;Agent-specific queue&amp;quot;&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Employee rights ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade should do this / should be available in a default install, but may not be implemented yet&lt;br /&gt;
* Give one or more employee groups &amp;quot;View appointments&amp;quot; and &amp;quot;Make appointment&amp;quot; (in Customer package rights)&lt;br /&gt;
&lt;br /&gt;
= Billing =&lt;br /&gt;
&lt;br /&gt;
== Billing events ==&lt;br /&gt;
Billing events are the primary mechanism to implement your business rules.  Rules such as resend invoices, retry cards, suspend or cancel accounts for non-payment, etc. are all handled by billing events.&lt;br /&gt;
&lt;br /&gt;
At a high level, follow the following steps to create billing events:&lt;br /&gt;
* Add a new Billing Event (Configuration &amp;gt; Billing &amp;gt; Billing events)&lt;br /&gt;
* Name the event&lt;br /&gt;
* Choose the type of event:&lt;br /&gt;
** Package - Packages and associated dates (Including Commissions)&lt;br /&gt;
** Invoice - Invoice status and dates&lt;br /&gt;
** Customer - Customer Balances and Information&lt;br /&gt;
** Batch Payment - Batch payment results&lt;br /&gt;
** Statement - Send statement &lt;br /&gt;
* Choose whether to apply to one or all agents&lt;br /&gt;
* Choose the frequency for the system to check and see if the event should run.&lt;br /&gt;
* Choose appropriate filters.  &lt;br /&gt;
* Choose appropriate actions.&lt;br /&gt;
&lt;br /&gt;
The form is dynamic so changing the type of event will change the available filters and actions.&lt;br /&gt;
&lt;br /&gt;
== Daily and Monthly Scripts ==&lt;br /&gt;
* The freeside-daily script should be run daily to bill customers and run invoice collection events.&lt;br /&gt;
** Typically, this is accomplished with an entry in the freeside user's crontab such as: &amp;lt;pre&amp;gt;0 0 * * * /usr/local/bin/freeside-daily&amp;lt;/pre&amp;gt;&lt;br /&gt;
** If running freeside-daily manually, ensure the &amp;lt;code&amp;gt;TZ&amp;lt;/code&amp;gt; variable is set to your timezone with a command such as: &amp;lt;pre&amp;gt;TZ=&amp;quot;US/Pacific&amp;quot; freeside-daily fs_daily&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If any monthly events are enabled, the freeside-monthly script should be run monthly.&lt;br /&gt;
* Invoice events can also be used to implement agent-virtualized invoices. (add more info)&lt;br /&gt;
* Be sure to include the full path of freeside-daily in your cron job.&lt;br /&gt;
&lt;br /&gt;
== Invoices ==&lt;br /&gt;
&lt;br /&gt;
=== Typeset (LaTeX) invoice templates ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
* Almost all distributions include the necessary prerequisites listed here, manual installation is practically never necessary.&lt;br /&gt;
* Install [http://www.ghostscript.com/ Ghostscript] (gs)&lt;br /&gt;
* Install [http://www.tug.org/tetex/ teTeX] or [http://www.tug.org/texlive/ TeX Live]&lt;br /&gt;
* Ensure that the &amp;lt;code&amp;gt;pslatex&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dvips&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;pdflatex&amp;lt;/code&amp;gt; command line utilities were installed&lt;br /&gt;
&lt;br /&gt;
==== Logo setup ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;em title=&amp;quot;Encapsulated Postscript&amp;quot;&amp;gt;EPS&amp;lt;/em&amp;gt; logo is for PDF and printed invoices.&lt;br /&gt;
&lt;br /&gt;
* For best results, save a '''vector format''' logo in EPS (Encapsulated PostScript) format.  &lt;br /&gt;
** Your graphic artist can create vector image from a bitmap (tracing etc).&lt;br /&gt;
** Converting a bitmap such as a JPG can work (the bigger the better), but it may render in lower quality, blurry or with the &amp;quot;jaggies&amp;quot; (especially when actually printed, not just viewed as a PDF)&lt;br /&gt;
* Resize the logo to 90pt X 36pt: &amp;lt;code&amp;gt;epsffit -c 0 0 90 36 yourlogo.eps &amp;gt;logo.eps&amp;lt;/code&amp;gt;&lt;br /&gt;
** (&amp;quot;no %%BoundingBox:&amp;quot; error?  Fix with eps2eps)&lt;br /&gt;
* Upload the resized logo as the &amp;lt;code&amp;gt;logo.eps&amp;lt;/code&amp;gt; configuration option.&lt;br /&gt;
* Problems?  Try &amp;lt;code&amp;gt;bin/strip-eps &amp;lt;oldlogo.eps &amp;gt;trynewlogo.eps&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;em title=&amp;quot;Portable Network Graphic&amp;quot;&amp;gt;PNG&amp;lt;/em&amp;gt; logo is for emailed and online invoices.&lt;br /&gt;
&lt;br /&gt;
Freeside ships with a logo of 92 x 62.  Any logo close to this size should work with the default HTML template.&lt;br /&gt;
&lt;br /&gt;
{{Freeside:3:Documentation:Administration:invoice_layout}}&lt;br /&gt;
&lt;br /&gt;
=== HTML invoice templates ===&lt;br /&gt;
&lt;br /&gt;
* Convert your logo to PNG format and upload it as the &amp;lt;code&amp;gt;logo.png&amp;lt;/code&amp;gt; configuration option. &lt;br /&gt;
{{Freeside:3:Documentation:Administration:invoice_templates|format=html}}&lt;br /&gt;
&lt;br /&gt;
=== Plaintext invoice templates ===&lt;br /&gt;
&lt;br /&gt;
* See the Text::Template documentation for details on the substitution language.&lt;br /&gt;
* You must call the invoice_lines() function at least once - pass it a number of lines, and it returns a list of array references, each of two elements: a service description column, and a price column. Alternatively, call invoice_lines() with no arguments, and pagination will be disabled - all invoice line items will print on one page, with no padding (recommended for email invoices).&lt;br /&gt;
* Descriptions of variables are available in [[Freeside:3:Documentation:Template:invoice_html|invoice_html]]&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
==== Manually setting next customer number sequence ====&lt;br /&gt;
&lt;br /&gt;
* With PostgreSQL, to number customers starting at 5000: &amp;lt;pre&amp;gt;SELECT SETVAL(pg_get_serial_sequence('cust_main', 'custnum'), 4999);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* With MySQL, to number customers starting at 5000: &amp;lt;pre&amp;gt;ALTER TABLE cust_main AUTO_INCREMENT = 5000;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Manually setting next invoice number sequence ====&lt;br /&gt;
&lt;br /&gt;
* With PostgreSQL, to number invoices starting at 5000: &amp;lt;pre&amp;gt;SELECT SETVAL(pg_get_serial_sequence('cust_bill', 'invnum'), 4999);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* With MySQL, to number invoices starting at 5000: &amp;lt;pre&amp;gt;ALTER TABLE cust_bill AUTO_INCREMENT = 5000;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Taxes == &lt;br /&gt;
&lt;br /&gt;
[[Freeside:3:Documentation:Administration:Tax_Districts | District based taxes]]&lt;br /&gt;
&lt;br /&gt;
== Payment Receipts ==&lt;br /&gt;
&lt;br /&gt;
The [[Freeside:3:Documentation:Template:payment_receipt_email|payment_receipt_email]] template is used for manually applied payments.&lt;br /&gt;
&lt;br /&gt;
== Credit cards and Electronic checks ==&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Real-time_Processing | Real-time credit card and electronic check processing]]&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Batch_Processing | Batch credit card and electronic check processing]]&lt;br /&gt;
* Credit card expiration alerts: Customize the ''alerter_template'' configuration option and run &amp;lt;code&amp;gt;freeside-expiration-alerter&amp;lt;/code&amp;gt; daily.&lt;br /&gt;
* Credit card decline alerts: Customize the ''declinetemplate'' configuration option and set the ''emaildecline'' configuration option.&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
These things should probably find a home properly filed in a section above.&lt;br /&gt;
&lt;br /&gt;
== Invoicing and Payments ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Encrypted Credit Cards | Encrypted Credit Cards]] (default in new installs, highly recommended for older installs upgrading)&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Texas Tax | Texas Tax]]&lt;br /&gt;
* Need to print to Windows printers, and the PDF spool is not for you?  Follow steps 1-4 of  [http://iharder.sourceforge.net/current/macosx/winmacprinter/ Share Your Windows Printer].&lt;br /&gt;
&lt;br /&gt;
== Refunds for automatic payments ==&lt;br /&gt;
&lt;br /&gt;
A refund to an automatic payment can be made within the time limitation set by the payment gateway by using the refund link next to the payment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;05/19/2015 Payment by fs_queue (Credit card #411111xxxxxx1111) applied to Invoice #228 (05/19/15) (view receipt) (refund) (void) (unapply)  - $24.60   $0.00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the refund page the Amount defaults to the amount of the payment.  If only a partial refund is to be made then change this to the proper amount:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Refund&lt;br /&gt;
Date 05/19/2015&lt;br /&gt;
Amount $10.00 by Credit card&lt;br /&gt;
Reason Package amount incorrect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example we will only refund a part of the payment as illustrated above.  It is usually a good idea to add a Reason that provides additional information for the refund.&lt;br /&gt;
&lt;br /&gt;
Once you have the refund fields filled out click the Post refund button&lt;br /&gt;
&lt;br /&gt;
This will unapply the payment from the invoice leaving the balance of the payment available for application to an invoice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
05/19/2015 Open Invoice #228 (Balance 25.21) (void)&lt;br /&gt;
( View invoice events ) $25.21    $25.21&lt;br /&gt;
05/19/2015 Payment by nkennedy (Credit card #411111xxxxxx1111)&lt;br /&gt;
  10.00 refunded on 05/19/2015&lt;br /&gt;
  15.21 unapplied&lt;br /&gt;
(view receipt) (apply) (refund) (void)  - $25.21   $0.00&lt;br /&gt;
05/19/2015 Refund by nkennedy (Credit card #411111xxxxxx1111) (view receipt)    $10.00 $10.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the apply link to apply the remaining payment to the invoice.  This will bring up the Apply Payment window where you can select the invoice to apply the payment to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Payment #77&lt;br /&gt;
Date: 05/19/2015&lt;br /&gt;
Amount: $25.21&lt;br /&gt;
Unapplied amount: $15.21&lt;br /&gt;
&lt;br /&gt;
Apply to:&lt;br /&gt;
Invoice: #228 - 05/19/2015 - $25.21&lt;br /&gt;
Amount: $15.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After you click the Apply button you are left with the original invoice with a balance due from the refunded payment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
05/19/2015 Open Invoice #228 (Balance 10.00) (void)&lt;br /&gt;
( View invoice events ) $25.21    $25.21&lt;br /&gt;
05/19/2015 Payment by nkennedy (Credit card #411111xxxxxx1111)&lt;br /&gt;
  10.00 refunded on 05/19/2015&lt;br /&gt;
  15.21 applied to Invoice #228 (05/19/15)&lt;br /&gt;
(view receipt) (refund) (void) (unapply)  - $25.21   $0.00&lt;br /&gt;
05/19/2015 Refund by nkennedy (Credit card #411111xxxxxx1111) (view receipt)    $10.00 $10.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To balance the invoice you can use the Enter Credit link to issue a credit that can be applied to the invoice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Enter Credit&lt;br /&gt;
&lt;br /&gt;
Date   05/19/2015 10:03:26 AM&lt;br /&gt;
Amount $10.00&lt;br /&gt;
Reason Package Error&lt;br /&gt;
Additional info Credit for package error&lt;br /&gt;
Auto-apply to invoices yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When entering the credit you can select a credit reason that was previously defined at Configuration -&amp;gt; Billing -&amp;gt; Credit Reasons or you can create a reason on the fly.&lt;br /&gt;
You can also add a small note in the &amp;quot;Additional info&amp;quot; field which will print on the customers invoice.  Please keept this short as long text will get truncated on PDF invoices to prevent formatting issues.&lt;br /&gt;
&lt;br /&gt;
Once the credit is applied the customers account will be balanced out:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
05/19/2015 Invoice #228 (Balance 0.00) (void)&lt;br /&gt;
( View invoice events ) $25.21    $25.21&lt;br /&gt;
05/19/2015 Payment by nkennedy (Credit card #411111xxxxxx1111)&lt;br /&gt;
  10.00 refunded on 05/19/2015&lt;br /&gt;
  15.21 applied to Invoice #228 (05/19/15)&lt;br /&gt;
(view receipt) (refund) (void) (unapply)  - $25.21   $0.00&lt;br /&gt;
05/19/2015 Refund by nkennedy (Credit card #411111xxxxxx1111) (view receipt)    $10.00 $10.00&lt;br /&gt;
05/19/2015 Credit by nkennedy (Package Error Credit for package error) applied to Invoice #228 (05/19/15) (delete) (unapply) (void)   - $10.00  $0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to have taxes calculated as part of the refund you can start with issuing a credit using the Credit line items link.  This will allow you to select the line item on the invoice and enter the amount to credit that entry.&lt;br /&gt;
Follow the rest of the instructions for re-applying the payment to the invoice and the left over balance is the amount you need to use after following the refund link on the payment.&lt;br /&gt;
&lt;br /&gt;
== Commissions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Superseded by Commissions below... * Setting up [[Freeside:1.9:Documentation:Administration:Referral credits|Referral credits]] --&amp;gt;&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Commission|Commissions and Referrals]]&lt;br /&gt;
&lt;br /&gt;
== VoIP ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:VoIP | VoIP]]&lt;br /&gt;
* [[Simple Bulk DID Orders]]&lt;br /&gt;
* [[Bulk DID Orders]]&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:VoIP:e911|e911 Providers]]&lt;br /&gt;
&lt;br /&gt;
== RADIUS ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3.0:Documentation:Administration:FreeRadius | FreeRadius]]&lt;br /&gt;
&lt;br /&gt;
== Torrus Network monitoring ==&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Torrus_Installation | Installation]]&lt;br /&gt;
* [[Freeside:3:Documentation:Torrus_Administration | Administration]]&lt;br /&gt;
&lt;br /&gt;
== System Log ==&lt;br /&gt;
&lt;br /&gt;
The system log can be viewed by navigating the main menu to: Report -&amp;gt; Logs -&amp;gt; System logs&lt;br /&gt;
&lt;br /&gt;
Freeside can be configured to generate E-Mail notices for system log entries.&lt;br /&gt;
&lt;br /&gt;
=== To configure E-Mail Notices ===&lt;br /&gt;
&lt;br /&gt;
# Navigate the main menu to Configuration -&amp;gt; Miscellaneous -&amp;gt; System log emails&lt;br /&gt;
# Click the ''Add log email condition'' link&lt;br /&gt;
# Enter the E-Mail address to receive notices&lt;br /&gt;
# Specify the Log Context and Minimum Log Level to generate notices&lt;br /&gt;
# Choose if notices must match the specific chosen context&lt;br /&gt;
# Click the ``Add log emailcondition`` button&lt;br /&gt;
&lt;br /&gt;
'''Only match most specific context:'''  Selecting this check box reduces the number of E-Mail events for some contexts.  Log events are hierarchical. A specific log event may have multiple contexts.  A single event may be both a ''daily'' event, and also a ''Cron::upload'' event, for example.  With this checkbox selected, the example event would only trigger an E-Mail notification for the ''Cron::upload'' context, and not the ''daily'' context.&lt;br /&gt;
&lt;br /&gt;
Change or remove the E-Mail notice by selecting a notice within the ''Log email condition'' configuration page&lt;br /&gt;
&lt;br /&gt;
== Old / uncommon ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Time billing | Time billing]]&lt;br /&gt;
* Using a non-standard [[Freeside:3:Documentation:Administration:PostgreSQL_Schema | PostgreSQL Schema]]&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Slony | Slony replication and failover]] (old - PostgreSQL native replication is a more current solution)&lt;br /&gt;
&lt;br /&gt;
{{ContextSensitiveHelp}}&lt;/div&gt;</summary>
		<author><name>Mitch</name></author>	</entry>

	<entry>
		<id>https://secure.freeside.biz/mediawiki/index.php?title=Freeside:4:Documentation:Administration:svc_broadband.pm&amp;diff=9765</id>
		<title>Freeside:4:Documentation:Administration:svc broadband.pm</title>
		<link rel="alternate" type="text/html" href="https://secure.freeside.biz/mediawiki/index.php?title=Freeside:4:Documentation:Administration:svc_broadband.pm&amp;diff=9765"/>
				<updated>2019-03-12T17:10:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mitch: Automatically assign IP addresses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Broadband Services svc_broadband.pm =&lt;br /&gt;
&lt;br /&gt;
[[Freeside:4:Documentation:Developer/FS/svc_broadband]]&lt;br /&gt;
&lt;br /&gt;
== Automatically Assign IP Addresses ==&lt;br /&gt;
&lt;br /&gt;
This guide describes how Freeside can automatically assign IP&lt;br /&gt;
addresses while provisioning services for a customer.&lt;br /&gt;
&lt;br /&gt;
=== Create a Service Definition ===&lt;br /&gt;
&lt;br /&gt;
In the main menu, navigate to: Configuration &amp;gt; Services &amp;gt; Service Definitions&lt;br /&gt;
&lt;br /&gt;
Add a new service definition of the type '''svc_broadband''', choosing the default configuration options&lt;br /&gt;
&lt;br /&gt;
Configure any exports you want for this service.  Exporting to a RADIUS&lt;br /&gt;
server, for example, will allow RADIUS to provision hardware with the&lt;br /&gt;
assigned IP address.&lt;br /&gt;
&lt;br /&gt;
=== Create a Router Definition ===&lt;br /&gt;
&lt;br /&gt;
In the main menu, navigate to: Configuration &amp;gt; Services &amp;gt; Wireless Broadband &amp;gt; Routers &amp;gt; Add a new router&lt;br /&gt;
&lt;br /&gt;
Leave the '''Assign IP addresses manually''' box unchecked&lt;br /&gt;
&lt;br /&gt;
Under '''service types''', check the box for your Service Definition&lt;br /&gt;
&lt;br /&gt;
=== Allocate an Address Block to the Router ===&lt;br /&gt;
&lt;br /&gt;
In the main menu, navigate to: Configuration &amp;gt; Services &amp;gt; Wireless Broadband &amp;gt; Address Blocks&lt;br /&gt;
&lt;br /&gt;
Enter a gateway and a netmask.  For example, Gateway 10.0.0.1 and Netmask of 24.&lt;br /&gt;
Click the Add button.&lt;br /&gt;
&lt;br /&gt;
Your new network should appear in the list of Address Blocks.&lt;br /&gt;
&lt;br /&gt;
Click the '''allocate''' link for the address block.  Choose your router, and&lt;br /&gt;
click the Apply Changes button.&lt;br /&gt;
&lt;br /&gt;
=== Create a Package with this Service ===&lt;br /&gt;
&lt;br /&gt;
In the main menu, navigate to: Configuration &amp;gt; Packages &amp;gt; Package Definitions&lt;br /&gt;
&lt;br /&gt;
Add a new Package definition.  In the '''Services''' section, include your svc_broadband Service in this Package.&lt;br /&gt;
&lt;br /&gt;
=== Order Package and Provision ===&lt;br /&gt;
&lt;br /&gt;
Order the new package for a customer.  View the customer's '''Packages'''&lt;br /&gt;
tab.  Click the link to Provision Service displayed on the Package.&lt;br /&gt;
&lt;br /&gt;
The provisioning page allows you to select from which router/block to provision from.  The hardware will be assigned the first available IP address within the selected network block.&lt;br /&gt;
&lt;br /&gt;
==== Choose from available IP addresses ====&lt;br /&gt;
&lt;br /&gt;
By default, an IP address is provisioned for the service automatically.  If the selected netblock is size /24 or smaller, you may choose to select from a list of available IP addresses within that block.&lt;br /&gt;
&lt;br /&gt;
By clicking on the down arrow button attached to the IP address input box, a list of available IP addresses is revealed.  You may choose from this list, or allow Freeside to choose the first available IP address automatically.  For network blocks larger than /24, this list would be quite large and will not be displayed.&lt;/div&gt;</summary>
		<author><name>Mitch</name></author>	</entry>

	<entry>
		<id>https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration:Tax_Districts&amp;diff=9753</id>
		<title>Freeside:3:Documentation:Administration:Tax Districts</title>
		<link rel="alternate" type="text/html" href="https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration:Tax_Districts&amp;diff=9753"/>
				<updated>2019-01-30T06:58:00Z</updated>
		
		<summary type="html">&lt;p&gt;Mitch: Link to v4 documentation for feature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See also: [[Freeside:4:Documentation:Administration:Tax_Districts]]&lt;br /&gt;
&lt;br /&gt;
==Overview ==&lt;br /&gt;
Freeside currently supports billing taxes by district, instead of city/county/state. Currently this is only supported in the state of Washington.  The information is pulled from the Washington Department of Revenue for updating customer records with tax districts while also updating the tax rates in the internal tax editor located at Configuration -&amp;gt; Billing -&amp;gt; Locales and tax rates.&lt;br /&gt;
&lt;br /&gt;
== Setup == &lt;br /&gt;
&lt;br /&gt;
Configure option: tax_district_method, in Configuration -&amp;gt; Settings.  Currently the only option is Washington sales tax.&lt;br /&gt;
&lt;br /&gt;
The command freeside-tax-district-update will need to be ran. User should be replaced with a valid user in Freeside.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;freeside-tax-district-update user&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The command will update the 'district' field for all customers and service locations using an online tax information lookup method.  Looking up the tax district will create a cust_main_county record with the tax rate for that district.  All jobs are queued so their may be some delay before all records are modified.&lt;br /&gt;
&lt;br /&gt;
== Updating tax rates ==&lt;br /&gt;
 &lt;br /&gt;
The script wa_tax_rate_update can be used to update taxes in the cust_main_county table. &lt;br /&gt;
&lt;br /&gt;
Example usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;wa_tax_rate_update -t &amp;quot;State Sales Tax&amp;quot; -c &amp;quot;Sales&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-t defines the tax name&amp;lt;br&amp;gt;&lt;br /&gt;
-c defines the tax class&lt;br /&gt;
&lt;br /&gt;
This will download the new rates and upgrade the tax tables.  You will need to do this for each tax class&lt;br /&gt;
you have setup in your system.&lt;/div&gt;</summary>
		<author><name>Mitch</name></author>	</entry>

	<entry>
		<id>https://secure.freeside.biz/mediawiki/index.php?title=Freeside:4:Documentation:Administration:Tax_Districts&amp;diff=9752</id>
		<title>Freeside:4:Documentation:Administration:Tax Districts</title>
		<link rel="alternate" type="text/html" href="https://secure.freeside.biz/mediawiki/index.php?title=Freeside:4:Documentation:Administration:Tax_Districts&amp;diff=9752"/>
				<updated>2019-01-30T06:56:45Z</updated>
		
		<summary type="html">&lt;p&gt;Mitch: Created page with &amp;quot;== Overview == Freeside supports billing taxes by district, instead of city/county/state.  Currently this is only supported in the state of Washington.  Public data sources pr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
Freeside supports billing taxes by district, instead of city/county/state.&lt;br /&gt;
&lt;br /&gt;
Currently this is only supported in the state of Washington.  Public data&lt;br /&gt;
sources provided by the Washington Dept. of Revenue are used to automatically&lt;br /&gt;
maintain tax rate tables, and classify customer locations into the correct&lt;br /&gt;
tax district.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Enable Washington state sales tax districts ===&lt;br /&gt;
&lt;br /&gt;
# Navigate to: Configuration &amp;gt; Settings&lt;br /&gt;
# Set option '''tax_district_method''' to '''Washington sales tax'''&lt;br /&gt;
# Set option '''tax_district_taxname''', the tax name to dsplay on the invoice, or keep the default as '''Tax'''&lt;br /&gt;
# Run '''freeside-daily''' or '''wa_tax_rate_update -l''' to populate tax tables, and classify customers into their districts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Download tax tables and classify customer tax districts ===&lt;br /&gt;
&lt;br /&gt;
The WA tax tables will be automatically populated, and customers in WA will&lt;br /&gt;
be classified into their tax district he next time '''freeside-daily''' runs.&lt;br /&gt;
&lt;br /&gt;
You don't have to wait for '''freeside-daily'''.  The following command&lt;br /&gt;
will update the tax tables and classify WA customers into their tax district.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;wa_tax_rate_update -l freeside_username&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Changing Tax Name ===&lt;br /&gt;
&lt;br /&gt;
You can change the display name for this tax by setting the config&lt;br /&gt;
option '''tax_district_taxname'''.  After changing the configuration&lt;br /&gt;
value, the tax tables must be updated with the new taxname.  This&lt;br /&gt;
will happen automatically on the 1st of each month.  Use&lt;br /&gt;
'''wa_tax_rate_update''' to force this update sooner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tax table updates ===&lt;br /&gt;
&lt;br /&gt;
'''freeside-daily''' will refresh the tax tables automatically on the first&lt;br /&gt;
of each month.&lt;br /&gt;
&lt;br /&gt;
Tax tables can be forcibly updated at any time using the&lt;br /&gt;
'''wa_tax_rate_update''' utility.&lt;br /&gt;
&lt;br /&gt;
If freeside is configured to use tax classes, with the '''enable_taxclasses'''&lt;br /&gt;
configuration value, a complete copy of the Washington tax table will be&lt;br /&gt;
created in every taxclass.  If new tax classes are added later, the&lt;br /&gt;
'''wa_tax_rate_update''' utility can be used to force an immediate rebuild&lt;br /&gt;
of the tax table into the new tax class.&lt;br /&gt;
&lt;br /&gt;
To view the tax table, navigate to Configuration &amp;gt; Billing &amp;gt; Locales and Tax Rates&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Customer tax district classification ===&lt;br /&gt;
&lt;br /&gt;
When an address record is created or edited, Freeside will ask the WA Dept.&lt;br /&gt;
of Revenue API which tax district to use for the address.&lt;br /&gt;
&lt;br /&gt;
If an invalid address is entereed, the tax district cannot be determined.&lt;br /&gt;
The user will be advised to correct the address, or to manually choose a&lt;br /&gt;
tax district to use.&lt;br /&gt;
&lt;br /&gt;
Invoices cannot be generated for a WA customer missing a tax district.&lt;br /&gt;
When a customer is missing a tax district:&lt;br /&gt;
* A notice appears on the customer page with instructions to fix&lt;br /&gt;
* Billing will not complete for this customer&lt;br /&gt;
* Freeside will retry, daily, to determine the customer tax district&lt;br /&gt;
* System log notices are generated about this problem.  Subscribe to E-Mail alerts of these notices.&lt;br /&gt;
&lt;br /&gt;
The '''freeside-tax-district-update''' tool can be used to force reclassification&lt;br /&gt;
of every WA state address in cust_location.  This may be useful if the state&lt;br /&gt;
re-draws district lines, and all customers need to be reclassified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure system log alerts ===&lt;br /&gt;
&lt;br /&gt;
If a customer location record in the database lacks a tax district,&lt;br /&gt;
freeside-daily will attempt to correct this situation.  If that fails,&lt;br /&gt;
Freeside will report an error to the system log.&lt;br /&gt;
&lt;br /&gt;
Freeside will report another error every time '''freeside-daily''' runs, for&lt;br /&gt;
every WA cust_location record without a tax district.&lt;br /&gt;
&lt;br /&gt;
It is recommended to set two e-mail system log alerts:&lt;br /&gt;
1. log-level: error, log-context: wa_sales&lt;br /&gt;
2. log-level: error, log-context: tax_rate_update&lt;br /&gt;
&lt;br /&gt;
Using log-level: info, somebody can be notified of all tax tables updates,&lt;br /&gt;
and every successful tax district classification for a cust_location record.&lt;br /&gt;
&lt;br /&gt;
See [[Freeside:3:Documentation:Administration#System_Log]] for help&lt;br /&gt;
configuration system log alerts.&lt;/div&gt;</summary>
		<author><name>Mitch</name></author>	</entry>

	<entry>
		<id>https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration&amp;diff=9747</id>
		<title>Freeside:3:Documentation:Administration</title>
		<link rel="alternate" type="text/html" href="https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration&amp;diff=9747"/>
				<updated>2018-10-28T04:20:03Z</updated>
		
		<summary type="html">&lt;p&gt;Mitch: /* To configure E-Mail Notices */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Exports (provisioning) =&lt;br /&gt;
&lt;br /&gt;
'''Exports''' allow you to provision services to remote machines, databases and APIs.  Some exports, such as ''sqlradius'' and ''sqlradius_withdomain'',  enable a feed for retrieving rating/usage data.&lt;br /&gt;
&lt;br /&gt;
Exports can be added and edited under&lt;br /&gt;
: Configuration -&amp;gt; Provisioning, services and packages -&amp;gt; View/edit exports&lt;br /&gt;
&lt;br /&gt;
Most exports place jobs in the job queue for new, modified or deleted services.  Jobs are run by [[Freeside:3:Documentation:Developer/bin/freeside-queued|freeside-queued]].  This daemon needs to be running before exports are acted upon.&lt;br /&gt;
&lt;br /&gt;
Some exports use SSH, SCP or SFTP to communicate with external machines.  See the documentation on [[Freeside:3:Documentation:Administration:SSH_Keys|SSH keys]].&lt;br /&gt;
&lt;br /&gt;
Click on ''Add a new export'' to create a new export.  Select exports from the dropdown to show more information on each export, including available options, setup and usage.&lt;br /&gt;
&lt;br /&gt;
Exports are activated by associating them with one or more '''service definitions'''.&lt;br /&gt;
&lt;br /&gt;
Following is a list of which exports can be associated with each type of service.&lt;br /&gt;
&lt;br /&gt;
==svc_acct==&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:acct_plesk.pm|acct_plesk.pm]]:  Real-time export to Plesk managed mail service&lt;br /&gt;
* acct_sql.pm:  Real-time export of accounts to SQL databases .&lt;br /&gt;
* artera_turbo.pm: &lt;br /&gt;
* bsdshell.pm: &lt;br /&gt;
* [[Freeside:3:Documentation:Administration:communigate_pro.pm|communigate_pro.pm]]:  Real-time export to a CommuniGate Pro mail server&lt;br /&gt;
* communigate_pro_singledomain.pm: &lt;br /&gt;
* cpanel.pm:  Real-time export to Cpanel control panel.&lt;br /&gt;
* cp.pm:  Real-time export to Critical Path Account Provisioning Protocol&lt;br /&gt;
* cyrus.pm:  Real-time export to Cyrus IMAP server&lt;br /&gt;
* everyone_net.pm:  Real-time export to Everyone.net outsourced mail service&lt;br /&gt;
* infostreet.pm:  Real-time export to InfoStreet streetSmartAPI&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:ldap.pm|ldap.pm]]:  Real-time export to LDAP&lt;br /&gt;
* passwdfile.pm:&lt;br /&gt;
* radiator.pm:  Real-time export to RADIATOR&lt;br /&gt;
* shellcommands.pm: &lt;br /&gt;
* shellcommands_withdomain.pm:  Real-time export via remote SSH (vpopmail, ISPMan)&lt;br /&gt;
* sqlmail.pm:  Real-time export to SQL-backed mail server&lt;br /&gt;
* sqlradius.pm:  Real-time export to SQL-backed RADIUS (FreeRADIUS, ICRADIUS)&lt;br /&gt;
* sqlradius_withdomain.pm:  Real-time export to SQL-backed RADIUS (FreeRADIUS, ICRADIUS) with realms&lt;br /&gt;
* sysvshell.pm: &lt;br /&gt;
* textradius.pm: &lt;br /&gt;
* vpopmail.pm:  Real-time export to vpopmail text files&lt;br /&gt;
&lt;br /&gt;
==svc_domain==&lt;br /&gt;
* bind.pm:  Batch export to BIND named&lt;br /&gt;
* bind_slave.pm: Batch export to slave BIND named&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:communigate_pro.pm|communigate_pro.pm]]:  Real-time export to a CommuniGate Pro mail server&lt;br /&gt;
* domain_shellcommands.pm:  Run remote commands via SSH, for domains (qmail, ISPMan).&lt;br /&gt;
* domain_sql.pm:  Real time export of domains to SQL databases .&lt;br /&gt;
* http.pm:  Send an HTTP or HTTPS GET or POST request&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:opensrs.pm|opensrs.pm]]: OpenSRS integration&lt;br /&gt;
* sqlmail.pm:  Real-time export to SQL-backed mail server&lt;br /&gt;
&lt;br /&gt;
==svc_forward==&lt;br /&gt;
* artera_turbo.pm: &lt;br /&gt;
* [[Freeside:3:Documentation:Administration:communigate_pro.pm|communigate_pro.pm]]:  Real-time export to a CommuniGate Pro mail server&lt;br /&gt;
* forward_shellcommands.pm:  Run remote commands via SSH, for forwards&lt;br /&gt;
* postfix.pm:  Postfix text files&lt;br /&gt;
* sqlmail.pm:  Real-time export to SQL-backed mail server&lt;br /&gt;
&lt;br /&gt;
==svc_www==&lt;br /&gt;
* apache.pm:  Export an Apache httpd.conf file snippet.&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:www_plesk.pm|www_plesk.pm]]:  Real-time export to Plesk managed hosting service&lt;br /&gt;
* www_shellcommands.pm:  Run remote commands via SSH, for virtual web sites (directory maintenance, FrontPage, ISPMan)&lt;br /&gt;
&lt;br /&gt;
==svc_broadband==&lt;br /&gt;
* nas_wrapper.pm:  A meta-export that triggers other svc_broadband exports.&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:prizm.pm|prizm.pm]]:  Real-time export to Northbound Interface&lt;br /&gt;
* router.pm:  Send a command to a router.&lt;br /&gt;
* snmp.pm:  Sends SNMP SETs to an SNMP agent.&lt;br /&gt;
* trango.pm:  Sends SNMP SETs to a Trango AP.&lt;br /&gt;
&lt;br /&gt;
==svc_phone==&lt;br /&gt;
* globalpops_voip.pm:&lt;br /&gt;
* grandstream.pm: Grandstream phone and ATA provisioning.   This [http://www.freeside.biz/blog/?p=11 blog article] is a start at documentation.&lt;br /&gt;
* indosoft.pm:&lt;br /&gt;
* internal_diddb.pm:&lt;br /&gt;
* netsapiens.pm:&lt;br /&gt;
* phone_shellcommands.pm:&lt;br /&gt;
* phone_sqlradius.pm:&lt;br /&gt;
* thirdlane.pm:&lt;br /&gt;
* [[Freeside:Documentation:Administration:vitelity.pm|vitelity.pm]]: Vitelity provisioning&lt;br /&gt;
&lt;br /&gt;
==svc_external==&lt;br /&gt;
* artera_turbo.pm:&lt;br /&gt;
&lt;br /&gt;
==svc_dsl==&lt;br /&gt;
* ikano.pm: see [[Freeside:3:Documentation:Administration:svc_dsl:ikano|Ikano DSL provisioning and qualifications]]&lt;br /&gt;
&lt;br /&gt;
= Services =&lt;br /&gt;
&lt;br /&gt;
== Generic ==&lt;br /&gt;
&lt;br /&gt;
=== Accounts (svc_acct) ===&lt;br /&gt;
&lt;br /&gt;
Accounts - anything with a username (mailbox, shell, RADIUS, etc.)&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:svc_acct:_password_encoding|Password encoding]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware (svc_hardware) ===&lt;br /&gt;
&lt;br /&gt;
Equipment supplied to customers&lt;br /&gt;
&lt;br /&gt;
=== External (svc_external) ===&lt;br /&gt;
&lt;br /&gt;
Externally-tracked service&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
=== DSL (svc_dsl) ===&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:svc_dsl:ikano|Ikano DSL provisioning and qualifications]]&lt;br /&gt;
&lt;br /&gt;
=== Broadband (svc_broadband) ===&lt;br /&gt;
&lt;br /&gt;
Fixed wireless broadband&lt;br /&gt;
&lt;br /&gt;
=== Cable (svc_cable) ===&lt;br /&gt;
&lt;br /&gt;
=== DISH Network (svc_dish) ===&lt;br /&gt;
&lt;br /&gt;
== Telephony ==&lt;br /&gt;
&lt;br /&gt;
=== Customer phone number / DID (svc_phone) ===&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:Documentation:Administration:Phone devices|Phone devices]]&lt;br /&gt;
&lt;br /&gt;
=== Customer PBX (svc_pbx) ===&lt;br /&gt;
&lt;br /&gt;
=== Phone circuit (svc_circuit) ===&lt;br /&gt;
&lt;br /&gt;
== Hosting ==&lt;br /&gt;
&lt;br /&gt;
=== Domains (svc_domain) ===&lt;br /&gt;
&lt;br /&gt;
=== Certificate (svc_cert) ===&lt;br /&gt;
&lt;br /&gt;
=== Forwards (svc_forward) ===&lt;br /&gt;
&lt;br /&gt;
=== Mailing list (svc_mailinglist)  ===&lt;br /&gt;
&lt;br /&gt;
=== Site hosting (svc_www) ===&lt;br /&gt;
&lt;br /&gt;
== Colocation ==&lt;br /&gt;
&lt;br /&gt;
=== Customer router/switch port (svc_port) ===&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
&lt;br /&gt;
{{Freeside:3:Documentation:Administration:pkg_category}}&lt;br /&gt;
&lt;br /&gt;
== Price Plans ==&lt;br /&gt;
&lt;br /&gt;
=== Common price plans ===&lt;br /&gt;
&lt;br /&gt;
* flat&lt;br /&gt;
* subscription&lt;br /&gt;
* prorate&lt;br /&gt;
* sqlradacct_hour&lt;br /&gt;
* [[voip_cdr]]&lt;br /&gt;
* prepaid&lt;br /&gt;
&lt;br /&gt;
=== Wholesale price plans ===&lt;br /&gt;
&lt;br /&gt;
* bulk&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Packages:Price_Plans:agent | agent]]&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Packages:Price_Plans:cdr_termination |&lt;br /&gt;
 cdr_termination ]]&lt;br /&gt;
&lt;br /&gt;
=== Other price plans ===&lt;br /&gt;
&lt;br /&gt;
* flat_delayed&lt;br /&gt;
* flat_introrate&lt;br /&gt;
* prorate_delayed&lt;br /&gt;
&lt;br /&gt;
* base_delayed&lt;br /&gt;
* base_rate&lt;br /&gt;
&lt;br /&gt;
* sql_external&lt;br /&gt;
* sql_generic&lt;br /&gt;
&lt;br /&gt;
=== Price plans of questionable functionality ===&lt;br /&gt;
&lt;br /&gt;
* flat_comission_cust&lt;br /&gt;
* flat_comission_pkg&lt;br /&gt;
* flat_comission&lt;br /&gt;
&lt;br /&gt;
* voip_sqlradacct&lt;br /&gt;
&lt;br /&gt;
* sesmon_hour&lt;br /&gt;
* sesmon_minute&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
* Some notes on [[Freeside:3:Documentation:Administration:Upselling | Upselling]]&lt;br /&gt;
&lt;br /&gt;
= Resellers =&lt;br /&gt;
&lt;br /&gt;
=== Wholesaler configuraiton ===&lt;br /&gt;
[[Freeside:3:Documentation:Administration:Wholesaler|Using agents for setting up Wholesalers]]&lt;br /&gt;
&lt;br /&gt;
= Employees =&lt;br /&gt;
&lt;br /&gt;
== Employees ==&lt;br /&gt;
&lt;br /&gt;
Go to Configuration -&amp;gt; Employees -&amp;gt; Employees to view the existing employees and add new ones.  It is highly recommended to add a separate account for each person rather than using role accounts.&lt;br /&gt;
&lt;br /&gt;
* To add a new employee, click on &amp;quot;Add an employee&amp;quot;&lt;br /&gt;
* Or to edit an existing group, click on the employee number or name in the list of employees.&lt;br /&gt;
* Enter or edit the username, password and name.  If editing an existing employee and no password change is desired, the password fields can be left blank.&lt;br /&gt;
* Check the &amp;quot;Disable employee&amp;quot; box to disable this employee.&lt;br /&gt;
* In the &amp;quot;Employee groups&amp;quot; section, mark or unmark checkboxes to indicate the access groups for this employee.&lt;br /&gt;
&lt;br /&gt;
Go to Configuration -&amp;gt; Ticketing -&amp;gt; Ticketing users&lt;br /&gt;
* Click on the Create link in the upper right hand corner&lt;br /&gt;
* Enter the same username as the Employee name above&lt;br /&gt;
* Enter any other information (Real name, Email address, etc. )&lt;br /&gt;
* Check both boxes in the access control box&lt;br /&gt;
* Click the Create button&lt;br /&gt;
(Be sure to add the ticketing user to the appropriate ticketing groups)&lt;br /&gt;
&lt;br /&gt;
== Employee groups and access control == &lt;br /&gt;
&lt;br /&gt;
To setup employee access control or agent/reseller virtualization, you need to setup employee groups.  Go to Configuration -&amp;gt; Employees -&amp;gt; Employee groups to view the existing groups and add new ones.  The system starts with a &amp;quot;Superuser&amp;quot; group which has access to all functionality for the first agent.&lt;br /&gt;
&lt;br /&gt;
* To add a new group, click on &amp;quot;Add an employee group&amp;quot;&lt;br /&gt;
* Or to edit an existing group, click on the group number or name in the list of groups.&lt;br /&gt;
* Enter or edit the group name.&lt;br /&gt;
* In the &amp;quot;Group limited to these agent(s)&amp;quot; section, mark checkboxes next to the agents this employee group should be able to see.  Employees in this group will only see customers of the selected agents in the system and reports.&lt;br /&gt;
* In the &amp;quot;Group access rights&amp;quot; section, mark or unmark checkboxes to indicate the access rights this employee group should have.  Rights marked with an &amp;quot;*&amp;quot; are global rights which provide access to global data which is shared among all agents. Their use is not recommended for groups which are limited to a subset of agents.&lt;br /&gt;
* After adding a new group, don't forget to go back and add or edit employees to place them into the new group.&lt;br /&gt;
&lt;br /&gt;
= Installers / Appointments =&lt;br /&gt;
&lt;br /&gt;
== Installers ==&lt;br /&gt;
&lt;br /&gt;
* Designate some employees as installers (Configuration -&amp;gt; Employees -&amp;gt; Employees)&lt;br /&gt;
* Edit their schedules (Configuration -&amp;gt; Employees -&amp;gt; Installer availability)&lt;br /&gt;
&lt;br /&gt;
== Ticketing ==&lt;br /&gt;
&lt;br /&gt;
* Setup a queue for appointments (installations, removals, etc.), or use existing per agent queues&lt;br /&gt;
* Make sure the installer employees can own / see / edit tickets in this&lt;br /&gt;
queue (add them to a ticketing group with OwnTicket / SeeQueue on that queue or global, etc.)&lt;br /&gt;
* not yet &amp;lt;strike&amp;gt;XXX future todo some sort of ill-defined thing with configuring a custom field to designate install / recall / service call / removal&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
not yet; package(+location)-specific appointments are a future TODO&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
* Setup a package category for packages that can schedule appointments&lt;br /&gt;
* In the package category, select a queue for appointments or pick &amp;quot;Agent-specific queue&amp;quot;&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Employee rights ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade should do this / should be available in a default install, but may not be implemented yet&lt;br /&gt;
* Give one or more employee groups &amp;quot;View appointments&amp;quot; and &amp;quot;Make appointment&amp;quot; (in Customer package rights)&lt;br /&gt;
&lt;br /&gt;
= Billing =&lt;br /&gt;
&lt;br /&gt;
== Billing events ==&lt;br /&gt;
Billing events are the primary mechanism to implement your business rules.  Rules such as resend invoices, retry cards, suspend or cancel accounts for non-payment, etc. are all handled by billing events.&lt;br /&gt;
&lt;br /&gt;
At a high level, follow the following steps to create billing events:&lt;br /&gt;
* Add a new Billing Event (Configuration &amp;gt; Billing &amp;gt; Billing events)&lt;br /&gt;
* Name the event&lt;br /&gt;
* Choose the type of event:&lt;br /&gt;
** Package - Packages and associated dates (Including Commissions)&lt;br /&gt;
** Invoice - Invoice status and dates&lt;br /&gt;
** Customer - Customer Balances and Information&lt;br /&gt;
** Batch Payment - Batch payment results&lt;br /&gt;
** Statement - Send statement &lt;br /&gt;
* Choose whether to apply to one or all agents&lt;br /&gt;
* Choose the frequency for the system to check and see if the event should run.&lt;br /&gt;
* Choose appropriate filters.  &lt;br /&gt;
* Choose appropriate actions.&lt;br /&gt;
&lt;br /&gt;
The form is dynamic so changing the type of event will change the available filters and actions.&lt;br /&gt;
&lt;br /&gt;
== Daily and Monthly Scripts ==&lt;br /&gt;
* The freeside-daily script should be run daily to bill customers and run invoice collection events.&lt;br /&gt;
** Typically, this is accomplished with an entry in the freeside user's crontab such as: &amp;lt;pre&amp;gt;0 0 * * * /usr/local/bin/freeside-daily&amp;lt;/pre&amp;gt;&lt;br /&gt;
** If running freeside-daily manually, ensure the &amp;lt;code&amp;gt;TZ&amp;lt;/code&amp;gt; variable is set to your timezone with a command such as: &amp;lt;pre&amp;gt;TZ=&amp;quot;US/Pacific&amp;quot; freeside-daily fs_daily&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If any monthly events are enabled, the freeside-monthly script should be run monthly.&lt;br /&gt;
* Invoice events can also be used to implement agent-virtualized invoices. (add more info)&lt;br /&gt;
* Be sure to include the full path of freeside-daily in your cron job.&lt;br /&gt;
&lt;br /&gt;
== Invoices ==&lt;br /&gt;
&lt;br /&gt;
=== Typeset (LaTeX) invoice templates ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
* Almost all distributions include the necessary prerequisites listed here, manual installation is practically never necessary.&lt;br /&gt;
* Install [http://www.ghostscript.com/ Ghostscript] (gs)&lt;br /&gt;
* Install [http://www.tug.org/tetex/ teTeX] or [http://www.tug.org/texlive/ TeX Live]&lt;br /&gt;
* Ensure that the &amp;lt;code&amp;gt;pslatex&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dvips&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;pdflatex&amp;lt;/code&amp;gt; command line utilities were installed&lt;br /&gt;
&lt;br /&gt;
==== Logo setup ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;em title=&amp;quot;Encapsulated Postscript&amp;quot;&amp;gt;EPS&amp;lt;/em&amp;gt; logo is for PDF and printed invoices.&lt;br /&gt;
&lt;br /&gt;
* For best results, save a '''vector format''' logo in EPS (Encapsulated PostScript) format.  &lt;br /&gt;
** Your graphic artist can create vector image from a bitmap (tracing etc).&lt;br /&gt;
** Converting a bitmap such as a JPG can work (the bigger the better), but it may render in lower quality, blurry or with the &amp;quot;jaggies&amp;quot; (especially when actually printed, not just viewed as a PDF)&lt;br /&gt;
* Resize the logo to 90pt X 36pt: &amp;lt;code&amp;gt;epsffit -c 0 0 90 36 yourlogo.eps &amp;gt;logo.eps&amp;lt;/code&amp;gt;&lt;br /&gt;
** (&amp;quot;no %%BoundingBox:&amp;quot; error?  Fix with eps2eps)&lt;br /&gt;
* Upload the resized logo as the &amp;lt;code&amp;gt;logo.eps&amp;lt;/code&amp;gt; configuration option.&lt;br /&gt;
* Problems?  Try &amp;lt;code&amp;gt;bin/strip-eps &amp;lt;oldlogo.eps &amp;gt;trynewlogo.eps&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;em title=&amp;quot;Portable Network Graphic&amp;quot;&amp;gt;PNG&amp;lt;/em&amp;gt; logo is for emailed and online invoices.&lt;br /&gt;
&lt;br /&gt;
Freeside ships with a logo of 92 x 62.  Any logo close to this size should work with the default HTML template.&lt;br /&gt;
&lt;br /&gt;
{{Freeside:3:Documentation:Administration:invoice_layout}}&lt;br /&gt;
&lt;br /&gt;
=== HTML invoice templates ===&lt;br /&gt;
&lt;br /&gt;
* Convert your logo to PNG format and upload it as the &amp;lt;code&amp;gt;logo.png&amp;lt;/code&amp;gt; configuration option. &lt;br /&gt;
{{Freeside:3:Documentation:Administration:invoice_templates|format=html}}&lt;br /&gt;
&lt;br /&gt;
=== Plaintext invoice templates ===&lt;br /&gt;
&lt;br /&gt;
* See the Text::Template documentation for details on the substitution language.&lt;br /&gt;
* You must call the invoice_lines() function at least once - pass it a number of lines, and it returns a list of array references, each of two elements: a service description column, and a price column. Alternatively, call invoice_lines() with no arguments, and pagination will be disabled - all invoice line items will print on one page, with no padding (recommended for email invoices).&lt;br /&gt;
* Descriptions of variables are available in [[Freeside:3:Documentation:Template:invoice_html|invoice_html]]&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
==== Manually setting next customer number sequence ====&lt;br /&gt;
&lt;br /&gt;
* With PostgreSQL, to number customers starting at 5000: &amp;lt;pre&amp;gt;SELECT SETVAL(pg_get_serial_sequence('cust_main', 'custnum'), 4999);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* With MySQL, to number customers starting at 5000: &amp;lt;pre&amp;gt;ALTER TABLE cust_main AUTO_INCREMENT = 5000;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Manually setting next invoice number sequence ====&lt;br /&gt;
&lt;br /&gt;
* With PostgreSQL, to number invoices starting at 5000: &amp;lt;pre&amp;gt;SELECT SETVAL(pg_get_serial_sequence('cust_bill', 'invnum'), 4999);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* With MySQL, to number invoices starting at 5000: &amp;lt;pre&amp;gt;ALTER TABLE cust_bill AUTO_INCREMENT = 5000;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Taxes == &lt;br /&gt;
&lt;br /&gt;
[[Freeside:3:Documentation:Administration:Tax_Districts | District based taxes]]&lt;br /&gt;
&lt;br /&gt;
== Payment Receipts ==&lt;br /&gt;
&lt;br /&gt;
The [[Freeside:3:Documentation:Template:payment_receipt_email|payment_receipt_email]] template is used for manually applied payments.&lt;br /&gt;
&lt;br /&gt;
== Credit cards and Electronic checks ==&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Real-time_Processing | Real-time credit card and electronic check processing]]&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Batch_Processing | Batch credit card and electronic check processing]]&lt;br /&gt;
* Credit card expiration alerts: Customize the ''alerter_template'' configuration option and run &amp;lt;code&amp;gt;freeside-expiration-alerter&amp;lt;/code&amp;gt; daily.&lt;br /&gt;
* Credit card decline alerts: Customize the ''declinetemplate'' configuration option and set the ''emaildecline'' configuration option.&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
These things should probably find a home properly filed in a section above.&lt;br /&gt;
&lt;br /&gt;
== Invoicing and Payments ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Encrypted Credit Cards | Encrypted Credit Cards]] (default in new installs, highly recommended for older installs upgrading)&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Texas Tax | Texas Tax]]&lt;br /&gt;
* Need to print to Windows printers, and the PDF spool is not for you?  Follow steps 1-4 of  [http://iharder.sourceforge.net/current/macosx/winmacprinter/ Share Your Windows Printer].&lt;br /&gt;
&lt;br /&gt;
== Refunds for automatic payments ==&lt;br /&gt;
&lt;br /&gt;
A refund to an automatic payment can be made within the time limitation set by the payment gateway by using the refund link next to the payment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;05/19/2015 Payment by fs_queue (Credit card #411111xxxxxx1111) applied to Invoice #228 (05/19/15) (view receipt) (refund) (void) (unapply)  - $24.60   $0.00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the refund page the Amount defaults to the amount of the payment.  If only a partial refund is to be made then change this to the proper amount:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Refund&lt;br /&gt;
Date 05/19/2015&lt;br /&gt;
Amount $10.00 by Credit card&lt;br /&gt;
Reason Package amount incorrect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example we will only refund a part of the payment as illustrated above.  It is usually a good idea to add a Reason that provides additional information for the refund.&lt;br /&gt;
&lt;br /&gt;
Once you have the refund fields filled out click the Post refund button&lt;br /&gt;
&lt;br /&gt;
This will unapply the payment from the invoice leaving the balance of the payment available for application to an invoice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
05/19/2015 Open Invoice #228 (Balance 25.21) (void)&lt;br /&gt;
( View invoice events ) $25.21    $25.21&lt;br /&gt;
05/19/2015 Payment by nkennedy (Credit card #411111xxxxxx1111)&lt;br /&gt;
  10.00 refunded on 05/19/2015&lt;br /&gt;
  15.21 unapplied&lt;br /&gt;
(view receipt) (apply) (refund) (void)  - $25.21   $0.00&lt;br /&gt;
05/19/2015 Refund by nkennedy (Credit card #411111xxxxxx1111) (view receipt)    $10.00 $10.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the apply link to apply the remaining payment to the invoice.  This will bring up the Apply Payment window where you can select the invoice to apply the payment to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Payment #77&lt;br /&gt;
Date: 05/19/2015&lt;br /&gt;
Amount: $25.21&lt;br /&gt;
Unapplied amount: $15.21&lt;br /&gt;
&lt;br /&gt;
Apply to:&lt;br /&gt;
Invoice: #228 - 05/19/2015 - $25.21&lt;br /&gt;
Amount: $15.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After you click the Apply button you are left with the original invoice with a balance due from the refunded payment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
05/19/2015 Open Invoice #228 (Balance 10.00) (void)&lt;br /&gt;
( View invoice events ) $25.21    $25.21&lt;br /&gt;
05/19/2015 Payment by nkennedy (Credit card #411111xxxxxx1111)&lt;br /&gt;
  10.00 refunded on 05/19/2015&lt;br /&gt;
  15.21 applied to Invoice #228 (05/19/15)&lt;br /&gt;
(view receipt) (refund) (void) (unapply)  - $25.21   $0.00&lt;br /&gt;
05/19/2015 Refund by nkennedy (Credit card #411111xxxxxx1111) (view receipt)    $10.00 $10.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To balance the invoice you can use the Enter Credit link to issue a credit that can be applied to the invoice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Enter Credit&lt;br /&gt;
&lt;br /&gt;
Date   05/19/2015 10:03:26 AM&lt;br /&gt;
Amount $10.00&lt;br /&gt;
Reason Package Error&lt;br /&gt;
Additional info Credit for package error&lt;br /&gt;
Auto-apply to invoices yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When entering the credit you can select a credit reason that was previously defined at Configuration -&amp;gt; Billing -&amp;gt; Credit Reasons or you can create a reason on the fly.&lt;br /&gt;
You can also add a small note in the &amp;quot;Additional info&amp;quot; field which will print on the customers invoice.  Please keept this short as long text will get truncated on PDF invoices to prevent formatting issues.&lt;br /&gt;
&lt;br /&gt;
Once the credit is applied the customers account will be balanced out:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
05/19/2015 Invoice #228 (Balance 0.00) (void)&lt;br /&gt;
( View invoice events ) $25.21    $25.21&lt;br /&gt;
05/19/2015 Payment by nkennedy (Credit card #411111xxxxxx1111)&lt;br /&gt;
  10.00 refunded on 05/19/2015&lt;br /&gt;
  15.21 applied to Invoice #228 (05/19/15)&lt;br /&gt;
(view receipt) (refund) (void) (unapply)  - $25.21   $0.00&lt;br /&gt;
05/19/2015 Refund by nkennedy (Credit card #411111xxxxxx1111) (view receipt)    $10.00 $10.00&lt;br /&gt;
05/19/2015 Credit by nkennedy (Package Error Credit for package error) applied to Invoice #228 (05/19/15) (delete) (unapply) (void)   - $10.00  $0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to have taxes calculated as part of the refund you can start with issuing a credit using the Credit line items link.  This will allow you to select the line item on the invoice and enter the amount to credit that entry.&lt;br /&gt;
Follow the rest of the instructions for re-applying the payment to the invoice and the left over balance is the amount you need to use after following the refund link on the payment.&lt;br /&gt;
&lt;br /&gt;
== Commissions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Superseded by Commissions below... * Setting up [[Freeside:1.9:Documentation:Administration:Referral credits|Referral credits]] --&amp;gt;&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Commission|Commissions and Referrals]]&lt;br /&gt;
&lt;br /&gt;
== VoIP ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:VoIP | VoIP]]&lt;br /&gt;
* [[Simple Bulk DID Orders]]&lt;br /&gt;
* [[Bulk DID Orders]]&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:VoIP:e911|e911 Providers]]&lt;br /&gt;
&lt;br /&gt;
== RADIUS ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3.0:Documentation:Administration:FreeRadius | FreeRadius]]&lt;br /&gt;
&lt;br /&gt;
== Torrus Network monitoring ==&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Torrus_Installation | Installation]]&lt;br /&gt;
* [[Freeside:3:Documentation:Torrus_Administration | Administration]]&lt;br /&gt;
&lt;br /&gt;
== System Log ==&lt;br /&gt;
&lt;br /&gt;
The system log can be viewed by navigating the main menu to: Report -&amp;gt; Logs -&amp;gt; System logs&lt;br /&gt;
&lt;br /&gt;
Freeside can be configured to generate E-Mail notices for system log entries.&lt;br /&gt;
&lt;br /&gt;
=== To configure E-Mail Notices ===&lt;br /&gt;
&lt;br /&gt;
# Navigate the main menu to Configuration -&amp;gt; Miscellaneous -&amp;gt; System log emails&lt;br /&gt;
# Click the ''Add log email condition'' link&lt;br /&gt;
# Enter the E-Mail address to receive notices&lt;br /&gt;
# Specify the Log Context and Minimum Log Level to generate notices&lt;br /&gt;
# Choose if notices must match the specific chosen context&lt;br /&gt;
# Click the ``Add log emailcondition`` button&lt;br /&gt;
&lt;br /&gt;
'''Only match most specific context:'''  Selecting this check box reduces the number of E-Mail events for some contexts.  Log events are hierarchical. A specific log event may have multiple contexts.  A single event may be both a ''daily'' event, and also a ''Cron::upload'' event, for example.  With this checkbox selected, the example event would only trigger an E-Mail notification for the ''Cron::upload'' context, and not the ''daily'' context.&lt;br /&gt;
&lt;br /&gt;
Change or remove the E-Mail notice by selecting a notice within the ''Log email condition'' configuration page&lt;br /&gt;
&lt;br /&gt;
== Old / uncommon ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Time billing | Time billing]]&lt;br /&gt;
* Using a non-standard [[Freeside:3:Documentation:Administration:PostgreSQL_Schema | PostgreSQL Schema]]&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Slony | Slony replication and failover]] (old - PostgreSQL native replication is a more current solution)&lt;br /&gt;
&lt;br /&gt;
{{ContextSensitiveHelp}}&lt;/div&gt;</summary>
		<author><name>Mitch</name></author>	</entry>

	<entry>
		<id>https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration&amp;diff=9746</id>
		<title>Freeside:3:Documentation:Administration</title>
		<link rel="alternate" type="text/html" href="https://secure.freeside.biz/mediawiki/index.php?title=Freeside:3:Documentation:Administration&amp;diff=9746"/>
				<updated>2018-10-28T04:16:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mitch: System Log, Log E-Mail Notices&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Exports (provisioning) =&lt;br /&gt;
&lt;br /&gt;
'''Exports''' allow you to provision services to remote machines, databases and APIs.  Some exports, such as ''sqlradius'' and ''sqlradius_withdomain'',  enable a feed for retrieving rating/usage data.&lt;br /&gt;
&lt;br /&gt;
Exports can be added and edited under&lt;br /&gt;
: Configuration -&amp;gt; Provisioning, services and packages -&amp;gt; View/edit exports&lt;br /&gt;
&lt;br /&gt;
Most exports place jobs in the job queue for new, modified or deleted services.  Jobs are run by [[Freeside:3:Documentation:Developer/bin/freeside-queued|freeside-queued]].  This daemon needs to be running before exports are acted upon.&lt;br /&gt;
&lt;br /&gt;
Some exports use SSH, SCP or SFTP to communicate with external machines.  See the documentation on [[Freeside:3:Documentation:Administration:SSH_Keys|SSH keys]].&lt;br /&gt;
&lt;br /&gt;
Click on ''Add a new export'' to create a new export.  Select exports from the dropdown to show more information on each export, including available options, setup and usage.&lt;br /&gt;
&lt;br /&gt;
Exports are activated by associating them with one or more '''service definitions'''.&lt;br /&gt;
&lt;br /&gt;
Following is a list of which exports can be associated with each type of service.&lt;br /&gt;
&lt;br /&gt;
==svc_acct==&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:acct_plesk.pm|acct_plesk.pm]]:  Real-time export to Plesk managed mail service&lt;br /&gt;
* acct_sql.pm:  Real-time export of accounts to SQL databases .&lt;br /&gt;
* artera_turbo.pm: &lt;br /&gt;
* bsdshell.pm: &lt;br /&gt;
* [[Freeside:3:Documentation:Administration:communigate_pro.pm|communigate_pro.pm]]:  Real-time export to a CommuniGate Pro mail server&lt;br /&gt;
* communigate_pro_singledomain.pm: &lt;br /&gt;
* cpanel.pm:  Real-time export to Cpanel control panel.&lt;br /&gt;
* cp.pm:  Real-time export to Critical Path Account Provisioning Protocol&lt;br /&gt;
* cyrus.pm:  Real-time export to Cyrus IMAP server&lt;br /&gt;
* everyone_net.pm:  Real-time export to Everyone.net outsourced mail service&lt;br /&gt;
* infostreet.pm:  Real-time export to InfoStreet streetSmartAPI&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:ldap.pm|ldap.pm]]:  Real-time export to LDAP&lt;br /&gt;
* passwdfile.pm:&lt;br /&gt;
* radiator.pm:  Real-time export to RADIATOR&lt;br /&gt;
* shellcommands.pm: &lt;br /&gt;
* shellcommands_withdomain.pm:  Real-time export via remote SSH (vpopmail, ISPMan)&lt;br /&gt;
* sqlmail.pm:  Real-time export to SQL-backed mail server&lt;br /&gt;
* sqlradius.pm:  Real-time export to SQL-backed RADIUS (FreeRADIUS, ICRADIUS)&lt;br /&gt;
* sqlradius_withdomain.pm:  Real-time export to SQL-backed RADIUS (FreeRADIUS, ICRADIUS) with realms&lt;br /&gt;
* sysvshell.pm: &lt;br /&gt;
* textradius.pm: &lt;br /&gt;
* vpopmail.pm:  Real-time export to vpopmail text files&lt;br /&gt;
&lt;br /&gt;
==svc_domain==&lt;br /&gt;
* bind.pm:  Batch export to BIND named&lt;br /&gt;
* bind_slave.pm: Batch export to slave BIND named&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:communigate_pro.pm|communigate_pro.pm]]:  Real-time export to a CommuniGate Pro mail server&lt;br /&gt;
* domain_shellcommands.pm:  Run remote commands via SSH, for domains (qmail, ISPMan).&lt;br /&gt;
* domain_sql.pm:  Real time export of domains to SQL databases .&lt;br /&gt;
* http.pm:  Send an HTTP or HTTPS GET or POST request&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:opensrs.pm|opensrs.pm]]: OpenSRS integration&lt;br /&gt;
* sqlmail.pm:  Real-time export to SQL-backed mail server&lt;br /&gt;
&lt;br /&gt;
==svc_forward==&lt;br /&gt;
* artera_turbo.pm: &lt;br /&gt;
* [[Freeside:3:Documentation:Administration:communigate_pro.pm|communigate_pro.pm]]:  Real-time export to a CommuniGate Pro mail server&lt;br /&gt;
* forward_shellcommands.pm:  Run remote commands via SSH, for forwards&lt;br /&gt;
* postfix.pm:  Postfix text files&lt;br /&gt;
* sqlmail.pm:  Real-time export to SQL-backed mail server&lt;br /&gt;
&lt;br /&gt;
==svc_www==&lt;br /&gt;
* apache.pm:  Export an Apache httpd.conf file snippet.&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:www_plesk.pm|www_plesk.pm]]:  Real-time export to Plesk managed hosting service&lt;br /&gt;
* www_shellcommands.pm:  Run remote commands via SSH, for virtual web sites (directory maintenance, FrontPage, ISPMan)&lt;br /&gt;
&lt;br /&gt;
==svc_broadband==&lt;br /&gt;
* nas_wrapper.pm:  A meta-export that triggers other svc_broadband exports.&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:prizm.pm|prizm.pm]]:  Real-time export to Northbound Interface&lt;br /&gt;
* router.pm:  Send a command to a router.&lt;br /&gt;
* snmp.pm:  Sends SNMP SETs to an SNMP agent.&lt;br /&gt;
* trango.pm:  Sends SNMP SETs to a Trango AP.&lt;br /&gt;
&lt;br /&gt;
==svc_phone==&lt;br /&gt;
* globalpops_voip.pm:&lt;br /&gt;
* grandstream.pm: Grandstream phone and ATA provisioning.   This [http://www.freeside.biz/blog/?p=11 blog article] is a start at documentation.&lt;br /&gt;
* indosoft.pm:&lt;br /&gt;
* internal_diddb.pm:&lt;br /&gt;
* netsapiens.pm:&lt;br /&gt;
* phone_shellcommands.pm:&lt;br /&gt;
* phone_sqlradius.pm:&lt;br /&gt;
* thirdlane.pm:&lt;br /&gt;
* [[Freeside:Documentation:Administration:vitelity.pm|vitelity.pm]]: Vitelity provisioning&lt;br /&gt;
&lt;br /&gt;
==svc_external==&lt;br /&gt;
* artera_turbo.pm:&lt;br /&gt;
&lt;br /&gt;
==svc_dsl==&lt;br /&gt;
* ikano.pm: see [[Freeside:3:Documentation:Administration:svc_dsl:ikano|Ikano DSL provisioning and qualifications]]&lt;br /&gt;
&lt;br /&gt;
= Services =&lt;br /&gt;
&lt;br /&gt;
== Generic ==&lt;br /&gt;
&lt;br /&gt;
=== Accounts (svc_acct) ===&lt;br /&gt;
&lt;br /&gt;
Accounts - anything with a username (mailbox, shell, RADIUS, etc.)&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:svc_acct:_password_encoding|Password encoding]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware (svc_hardware) ===&lt;br /&gt;
&lt;br /&gt;
Equipment supplied to customers&lt;br /&gt;
&lt;br /&gt;
=== External (svc_external) ===&lt;br /&gt;
&lt;br /&gt;
Externally-tracked service&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
=== DSL (svc_dsl) ===&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:svc_dsl:ikano|Ikano DSL provisioning and qualifications]]&lt;br /&gt;
&lt;br /&gt;
=== Broadband (svc_broadband) ===&lt;br /&gt;
&lt;br /&gt;
Fixed wireless broadband&lt;br /&gt;
&lt;br /&gt;
=== Cable (svc_cable) ===&lt;br /&gt;
&lt;br /&gt;
=== DISH Network (svc_dish) ===&lt;br /&gt;
&lt;br /&gt;
== Telephony ==&lt;br /&gt;
&lt;br /&gt;
=== Customer phone number / DID (svc_phone) ===&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:Documentation:Administration:Phone devices|Phone devices]]&lt;br /&gt;
&lt;br /&gt;
=== Customer PBX (svc_pbx) ===&lt;br /&gt;
&lt;br /&gt;
=== Phone circuit (svc_circuit) ===&lt;br /&gt;
&lt;br /&gt;
== Hosting ==&lt;br /&gt;
&lt;br /&gt;
=== Domains (svc_domain) ===&lt;br /&gt;
&lt;br /&gt;
=== Certificate (svc_cert) ===&lt;br /&gt;
&lt;br /&gt;
=== Forwards (svc_forward) ===&lt;br /&gt;
&lt;br /&gt;
=== Mailing list (svc_mailinglist)  ===&lt;br /&gt;
&lt;br /&gt;
=== Site hosting (svc_www) ===&lt;br /&gt;
&lt;br /&gt;
== Colocation ==&lt;br /&gt;
&lt;br /&gt;
=== Customer router/switch port (svc_port) ===&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
&lt;br /&gt;
{{Freeside:3:Documentation:Administration:pkg_category}}&lt;br /&gt;
&lt;br /&gt;
== Price Plans ==&lt;br /&gt;
&lt;br /&gt;
=== Common price plans ===&lt;br /&gt;
&lt;br /&gt;
* flat&lt;br /&gt;
* subscription&lt;br /&gt;
* prorate&lt;br /&gt;
* sqlradacct_hour&lt;br /&gt;
* [[voip_cdr]]&lt;br /&gt;
* prepaid&lt;br /&gt;
&lt;br /&gt;
=== Wholesale price plans ===&lt;br /&gt;
&lt;br /&gt;
* bulk&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Packages:Price_Plans:agent | agent]]&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Packages:Price_Plans:cdr_termination |&lt;br /&gt;
 cdr_termination ]]&lt;br /&gt;
&lt;br /&gt;
=== Other price plans ===&lt;br /&gt;
&lt;br /&gt;
* flat_delayed&lt;br /&gt;
* flat_introrate&lt;br /&gt;
* prorate_delayed&lt;br /&gt;
&lt;br /&gt;
* base_delayed&lt;br /&gt;
* base_rate&lt;br /&gt;
&lt;br /&gt;
* sql_external&lt;br /&gt;
* sql_generic&lt;br /&gt;
&lt;br /&gt;
=== Price plans of questionable functionality ===&lt;br /&gt;
&lt;br /&gt;
* flat_comission_cust&lt;br /&gt;
* flat_comission_pkg&lt;br /&gt;
* flat_comission&lt;br /&gt;
&lt;br /&gt;
* voip_sqlradacct&lt;br /&gt;
&lt;br /&gt;
* sesmon_hour&lt;br /&gt;
* sesmon_minute&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
* Some notes on [[Freeside:3:Documentation:Administration:Upselling | Upselling]]&lt;br /&gt;
&lt;br /&gt;
= Resellers =&lt;br /&gt;
&lt;br /&gt;
=== Wholesaler configuraiton ===&lt;br /&gt;
[[Freeside:3:Documentation:Administration:Wholesaler|Using agents for setting up Wholesalers]]&lt;br /&gt;
&lt;br /&gt;
= Employees =&lt;br /&gt;
&lt;br /&gt;
== Employees ==&lt;br /&gt;
&lt;br /&gt;
Go to Configuration -&amp;gt; Employees -&amp;gt; Employees to view the existing employees and add new ones.  It is highly recommended to add a separate account for each person rather than using role accounts.&lt;br /&gt;
&lt;br /&gt;
* To add a new employee, click on &amp;quot;Add an employee&amp;quot;&lt;br /&gt;
* Or to edit an existing group, click on the employee number or name in the list of employees.&lt;br /&gt;
* Enter or edit the username, password and name.  If editing an existing employee and no password change is desired, the password fields can be left blank.&lt;br /&gt;
* Check the &amp;quot;Disable employee&amp;quot; box to disable this employee.&lt;br /&gt;
* In the &amp;quot;Employee groups&amp;quot; section, mark or unmark checkboxes to indicate the access groups for this employee.&lt;br /&gt;
&lt;br /&gt;
Go to Configuration -&amp;gt; Ticketing -&amp;gt; Ticketing users&lt;br /&gt;
* Click on the Create link in the upper right hand corner&lt;br /&gt;
* Enter the same username as the Employee name above&lt;br /&gt;
* Enter any other information (Real name, Email address, etc. )&lt;br /&gt;
* Check both boxes in the access control box&lt;br /&gt;
* Click the Create button&lt;br /&gt;
(Be sure to add the ticketing user to the appropriate ticketing groups)&lt;br /&gt;
&lt;br /&gt;
== Employee groups and access control == &lt;br /&gt;
&lt;br /&gt;
To setup employee access control or agent/reseller virtualization, you need to setup employee groups.  Go to Configuration -&amp;gt; Employees -&amp;gt; Employee groups to view the existing groups and add new ones.  The system starts with a &amp;quot;Superuser&amp;quot; group which has access to all functionality for the first agent.&lt;br /&gt;
&lt;br /&gt;
* To add a new group, click on &amp;quot;Add an employee group&amp;quot;&lt;br /&gt;
* Or to edit an existing group, click on the group number or name in the list of groups.&lt;br /&gt;
* Enter or edit the group name.&lt;br /&gt;
* In the &amp;quot;Group limited to these agent(s)&amp;quot; section, mark checkboxes next to the agents this employee group should be able to see.  Employees in this group will only see customers of the selected agents in the system and reports.&lt;br /&gt;
* In the &amp;quot;Group access rights&amp;quot; section, mark or unmark checkboxes to indicate the access rights this employee group should have.  Rights marked with an &amp;quot;*&amp;quot; are global rights which provide access to global data which is shared among all agents. Their use is not recommended for groups which are limited to a subset of agents.&lt;br /&gt;
* After adding a new group, don't forget to go back and add or edit employees to place them into the new group.&lt;br /&gt;
&lt;br /&gt;
= Installers / Appointments =&lt;br /&gt;
&lt;br /&gt;
== Installers ==&lt;br /&gt;
&lt;br /&gt;
* Designate some employees as installers (Configuration -&amp;gt; Employees -&amp;gt; Employees)&lt;br /&gt;
* Edit their schedules (Configuration -&amp;gt; Employees -&amp;gt; Installer availability)&lt;br /&gt;
&lt;br /&gt;
== Ticketing ==&lt;br /&gt;
&lt;br /&gt;
* Setup a queue for appointments (installations, removals, etc.), or use existing per agent queues&lt;br /&gt;
* Make sure the installer employees can own / see / edit tickets in this&lt;br /&gt;
queue (add them to a ticketing group with OwnTicket / SeeQueue on that queue or global, etc.)&lt;br /&gt;
* not yet &amp;lt;strike&amp;gt;XXX future todo some sort of ill-defined thing with configuring a custom field to designate install / recall / service call / removal&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
not yet; package(+location)-specific appointments are a future TODO&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
* Setup a package category for packages that can schedule appointments&lt;br /&gt;
* In the package category, select a queue for appointments or pick &amp;quot;Agent-specific queue&amp;quot;&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Employee rights ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade should do this / should be available in a default install, but may not be implemented yet&lt;br /&gt;
* Give one or more employee groups &amp;quot;View appointments&amp;quot; and &amp;quot;Make appointment&amp;quot; (in Customer package rights)&lt;br /&gt;
&lt;br /&gt;
= Billing =&lt;br /&gt;
&lt;br /&gt;
== Billing events ==&lt;br /&gt;
Billing events are the primary mechanism to implement your business rules.  Rules such as resend invoices, retry cards, suspend or cancel accounts for non-payment, etc. are all handled by billing events.&lt;br /&gt;
&lt;br /&gt;
At a high level, follow the following steps to create billing events:&lt;br /&gt;
* Add a new Billing Event (Configuration &amp;gt; Billing &amp;gt; Billing events)&lt;br /&gt;
* Name the event&lt;br /&gt;
* Choose the type of event:&lt;br /&gt;
** Package - Packages and associated dates (Including Commissions)&lt;br /&gt;
** Invoice - Invoice status and dates&lt;br /&gt;
** Customer - Customer Balances and Information&lt;br /&gt;
** Batch Payment - Batch payment results&lt;br /&gt;
** Statement - Send statement &lt;br /&gt;
* Choose whether to apply to one or all agents&lt;br /&gt;
* Choose the frequency for the system to check and see if the event should run.&lt;br /&gt;
* Choose appropriate filters.  &lt;br /&gt;
* Choose appropriate actions.&lt;br /&gt;
&lt;br /&gt;
The form is dynamic so changing the type of event will change the available filters and actions.&lt;br /&gt;
&lt;br /&gt;
== Daily and Monthly Scripts ==&lt;br /&gt;
* The freeside-daily script should be run daily to bill customers and run invoice collection events.&lt;br /&gt;
** Typically, this is accomplished with an entry in the freeside user's crontab such as: &amp;lt;pre&amp;gt;0 0 * * * /usr/local/bin/freeside-daily&amp;lt;/pre&amp;gt;&lt;br /&gt;
** If running freeside-daily manually, ensure the &amp;lt;code&amp;gt;TZ&amp;lt;/code&amp;gt; variable is set to your timezone with a command such as: &amp;lt;pre&amp;gt;TZ=&amp;quot;US/Pacific&amp;quot; freeside-daily fs_daily&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If any monthly events are enabled, the freeside-monthly script should be run monthly.&lt;br /&gt;
* Invoice events can also be used to implement agent-virtualized invoices. (add more info)&lt;br /&gt;
* Be sure to include the full path of freeside-daily in your cron job.&lt;br /&gt;
&lt;br /&gt;
== Invoices ==&lt;br /&gt;
&lt;br /&gt;
=== Typeset (LaTeX) invoice templates ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
* Almost all distributions include the necessary prerequisites listed here, manual installation is practically never necessary.&lt;br /&gt;
* Install [http://www.ghostscript.com/ Ghostscript] (gs)&lt;br /&gt;
* Install [http://www.tug.org/tetex/ teTeX] or [http://www.tug.org/texlive/ TeX Live]&lt;br /&gt;
* Ensure that the &amp;lt;code&amp;gt;pslatex&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dvips&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;pdflatex&amp;lt;/code&amp;gt; command line utilities were installed&lt;br /&gt;
&lt;br /&gt;
==== Logo setup ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;em title=&amp;quot;Encapsulated Postscript&amp;quot;&amp;gt;EPS&amp;lt;/em&amp;gt; logo is for PDF and printed invoices.&lt;br /&gt;
&lt;br /&gt;
* For best results, save a '''vector format''' logo in EPS (Encapsulated PostScript) format.  &lt;br /&gt;
** Your graphic artist can create vector image from a bitmap (tracing etc).&lt;br /&gt;
** Converting a bitmap such as a JPG can work (the bigger the better), but it may render in lower quality, blurry or with the &amp;quot;jaggies&amp;quot; (especially when actually printed, not just viewed as a PDF)&lt;br /&gt;
* Resize the logo to 90pt X 36pt: &amp;lt;code&amp;gt;epsffit -c 0 0 90 36 yourlogo.eps &amp;gt;logo.eps&amp;lt;/code&amp;gt;&lt;br /&gt;
** (&amp;quot;no %%BoundingBox:&amp;quot; error?  Fix with eps2eps)&lt;br /&gt;
* Upload the resized logo as the &amp;lt;code&amp;gt;logo.eps&amp;lt;/code&amp;gt; configuration option.&lt;br /&gt;
* Problems?  Try &amp;lt;code&amp;gt;bin/strip-eps &amp;lt;oldlogo.eps &amp;gt;trynewlogo.eps&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;em title=&amp;quot;Portable Network Graphic&amp;quot;&amp;gt;PNG&amp;lt;/em&amp;gt; logo is for emailed and online invoices.&lt;br /&gt;
&lt;br /&gt;
Freeside ships with a logo of 92 x 62.  Any logo close to this size should work with the default HTML template.&lt;br /&gt;
&lt;br /&gt;
{{Freeside:3:Documentation:Administration:invoice_layout}}&lt;br /&gt;
&lt;br /&gt;
=== HTML invoice templates ===&lt;br /&gt;
&lt;br /&gt;
* Convert your logo to PNG format and upload it as the &amp;lt;code&amp;gt;logo.png&amp;lt;/code&amp;gt; configuration option. &lt;br /&gt;
{{Freeside:3:Documentation:Administration:invoice_templates|format=html}}&lt;br /&gt;
&lt;br /&gt;
=== Plaintext invoice templates ===&lt;br /&gt;
&lt;br /&gt;
* See the Text::Template documentation for details on the substitution language.&lt;br /&gt;
* You must call the invoice_lines() function at least once - pass it a number of lines, and it returns a list of array references, each of two elements: a service description column, and a price column. Alternatively, call invoice_lines() with no arguments, and pagination will be disabled - all invoice line items will print on one page, with no padding (recommended for email invoices).&lt;br /&gt;
* Descriptions of variables are available in [[Freeside:3:Documentation:Template:invoice_html|invoice_html]]&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
==== Manually setting next customer number sequence ====&lt;br /&gt;
&lt;br /&gt;
* With PostgreSQL, to number customers starting at 5000: &amp;lt;pre&amp;gt;SELECT SETVAL(pg_get_serial_sequence('cust_main', 'custnum'), 4999);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* With MySQL, to number customers starting at 5000: &amp;lt;pre&amp;gt;ALTER TABLE cust_main AUTO_INCREMENT = 5000;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Manually setting next invoice number sequence ====&lt;br /&gt;
&lt;br /&gt;
* With PostgreSQL, to number invoices starting at 5000: &amp;lt;pre&amp;gt;SELECT SETVAL(pg_get_serial_sequence('cust_bill', 'invnum'), 4999);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* With MySQL, to number invoices starting at 5000: &amp;lt;pre&amp;gt;ALTER TABLE cust_bill AUTO_INCREMENT = 5000;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Taxes == &lt;br /&gt;
&lt;br /&gt;
[[Freeside:3:Documentation:Administration:Tax_Districts | District based taxes]]&lt;br /&gt;
&lt;br /&gt;
== Payment Receipts ==&lt;br /&gt;
&lt;br /&gt;
The [[Freeside:3:Documentation:Template:payment_receipt_email|payment_receipt_email]] template is used for manually applied payments.&lt;br /&gt;
&lt;br /&gt;
== Credit cards and Electronic checks ==&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Real-time_Processing | Real-time credit card and electronic check processing]]&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:Batch_Processing | Batch credit card and electronic check processing]]&lt;br /&gt;
* Credit card expiration alerts: Customize the ''alerter_template'' configuration option and run &amp;lt;code&amp;gt;freeside-expiration-alerter&amp;lt;/code&amp;gt; daily.&lt;br /&gt;
* Credit card decline alerts: Customize the ''declinetemplate'' configuration option and set the ''emaildecline'' configuration option.&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
These things should probably find a home properly filed in a section above.&lt;br /&gt;
&lt;br /&gt;
== Invoicing and Payments ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Encrypted Credit Cards | Encrypted Credit Cards]] (default in new installs, highly recommended for older installs upgrading)&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Texas Tax | Texas Tax]]&lt;br /&gt;
* Need to print to Windows printers, and the PDF spool is not for you?  Follow steps 1-4 of  [http://iharder.sourceforge.net/current/macosx/winmacprinter/ Share Your Windows Printer].&lt;br /&gt;
&lt;br /&gt;
== Refunds for automatic payments ==&lt;br /&gt;
&lt;br /&gt;
A refund to an automatic payment can be made within the time limitation set by the payment gateway by using the refund link next to the payment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;05/19/2015 Payment by fs_queue (Credit card #411111xxxxxx1111) applied to Invoice #228 (05/19/15) (view receipt) (refund) (void) (unapply)  - $24.60   $0.00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the refund page the Amount defaults to the amount of the payment.  If only a partial refund is to be made then change this to the proper amount:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Refund&lt;br /&gt;
Date 05/19/2015&lt;br /&gt;
Amount $10.00 by Credit card&lt;br /&gt;
Reason Package amount incorrect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example we will only refund a part of the payment as illustrated above.  It is usually a good idea to add a Reason that provides additional information for the refund.&lt;br /&gt;
&lt;br /&gt;
Once you have the refund fields filled out click the Post refund button&lt;br /&gt;
&lt;br /&gt;
This will unapply the payment from the invoice leaving the balance of the payment available for application to an invoice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
05/19/2015 Open Invoice #228 (Balance 25.21) (void)&lt;br /&gt;
( View invoice events ) $25.21    $25.21&lt;br /&gt;
05/19/2015 Payment by nkennedy (Credit card #411111xxxxxx1111)&lt;br /&gt;
  10.00 refunded on 05/19/2015&lt;br /&gt;
  15.21 unapplied&lt;br /&gt;
(view receipt) (apply) (refund) (void)  - $25.21   $0.00&lt;br /&gt;
05/19/2015 Refund by nkennedy (Credit card #411111xxxxxx1111) (view receipt)    $10.00 $10.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the apply link to apply the remaining payment to the invoice.  This will bring up the Apply Payment window where you can select the invoice to apply the payment to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Payment #77&lt;br /&gt;
Date: 05/19/2015&lt;br /&gt;
Amount: $25.21&lt;br /&gt;
Unapplied amount: $15.21&lt;br /&gt;
&lt;br /&gt;
Apply to:&lt;br /&gt;
Invoice: #228 - 05/19/2015 - $25.21&lt;br /&gt;
Amount: $15.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After you click the Apply button you are left with the original invoice with a balance due from the refunded payment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
05/19/2015 Open Invoice #228 (Balance 10.00) (void)&lt;br /&gt;
( View invoice events ) $25.21    $25.21&lt;br /&gt;
05/19/2015 Payment by nkennedy (Credit card #411111xxxxxx1111)&lt;br /&gt;
  10.00 refunded on 05/19/2015&lt;br /&gt;
  15.21 applied to Invoice #228 (05/19/15)&lt;br /&gt;
(view receipt) (refund) (void) (unapply)  - $25.21   $0.00&lt;br /&gt;
05/19/2015 Refund by nkennedy (Credit card #411111xxxxxx1111) (view receipt)    $10.00 $10.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To balance the invoice you can use the Enter Credit link to issue a credit that can be applied to the invoice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Enter Credit&lt;br /&gt;
&lt;br /&gt;
Date   05/19/2015 10:03:26 AM&lt;br /&gt;
Amount $10.00&lt;br /&gt;
Reason Package Error&lt;br /&gt;
Additional info Credit for package error&lt;br /&gt;
Auto-apply to invoices yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When entering the credit you can select a credit reason that was previously defined at Configuration -&amp;gt; Billing -&amp;gt; Credit Reasons or you can create a reason on the fly.&lt;br /&gt;
You can also add a small note in the &amp;quot;Additional info&amp;quot; field which will print on the customers invoice.  Please keept this short as long text will get truncated on PDF invoices to prevent formatting issues.&lt;br /&gt;
&lt;br /&gt;
Once the credit is applied the customers account will be balanced out:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
05/19/2015 Invoice #228 (Balance 0.00) (void)&lt;br /&gt;
( View invoice events ) $25.21    $25.21&lt;br /&gt;
05/19/2015 Payment by nkennedy (Credit card #411111xxxxxx1111)&lt;br /&gt;
  10.00 refunded on 05/19/2015&lt;br /&gt;
  15.21 applied to Invoice #228 (05/19/15)&lt;br /&gt;
(view receipt) (refund) (void) (unapply)  - $25.21   $0.00&lt;br /&gt;
05/19/2015 Refund by nkennedy (Credit card #411111xxxxxx1111) (view receipt)    $10.00 $10.00&lt;br /&gt;
05/19/2015 Credit by nkennedy (Package Error Credit for package error) applied to Invoice #228 (05/19/15) (delete) (unapply) (void)   - $10.00  $0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to have taxes calculated as part of the refund you can start with issuing a credit using the Credit line items link.  This will allow you to select the line item on the invoice and enter the amount to credit that entry.&lt;br /&gt;
Follow the rest of the instructions for re-applying the payment to the invoice and the left over balance is the amount you need to use after following the refund link on the payment.&lt;br /&gt;
&lt;br /&gt;
== Commissions ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Superseded by Commissions below... * Setting up [[Freeside:1.9:Documentation:Administration:Referral credits|Referral credits]] --&amp;gt;&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Commission|Commissions and Referrals]]&lt;br /&gt;
&lt;br /&gt;
== VoIP ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:VoIP | VoIP]]&lt;br /&gt;
* [[Simple Bulk DID Orders]]&lt;br /&gt;
* [[Bulk DID Orders]]&lt;br /&gt;
* [[Freeside:3:Documentation:Administration:VoIP:e911|e911 Providers]]&lt;br /&gt;
&lt;br /&gt;
== RADIUS ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3.0:Documentation:Administration:FreeRadius | FreeRadius]]&lt;br /&gt;
&lt;br /&gt;
== Torrus Network monitoring ==&lt;br /&gt;
&lt;br /&gt;
* [[Freeside:3:Documentation:Torrus_Installation | Installation]]&lt;br /&gt;
* [[Freeside:3:Documentation:Torrus_Administration | Administration]]&lt;br /&gt;
&lt;br /&gt;
== System Log ==&lt;br /&gt;
&lt;br /&gt;
The system log can be viewed by navigating the main menu to: Report -&amp;gt; Logs -&amp;gt; System logs&lt;br /&gt;
&lt;br /&gt;
Freeside can be configured to generate E-Mail notices for system log entries.&lt;br /&gt;
&lt;br /&gt;
=== To configure E-Mail Notices ===&lt;br /&gt;
&lt;br /&gt;
# Navigate the main menu to Configuration -&amp;gt; Miscellaneous -&amp;gt; System log emails&lt;br /&gt;
# Click the ''Add log email condition'' link&lt;br /&gt;
# Enter the E-Mail address to receive notices&lt;br /&gt;
# Specify the Log Context and Minimum Log Level to generate notices&lt;br /&gt;
# Choose if notices must match the specific chosen context&lt;br /&gt;
# Click the ``Add log emailcondition`` button&lt;br /&gt;
&lt;br /&gt;
'''Only match most specific contex:'''  Selecting this check box reduces the number of E-Mail events for some contexts.  Log events are hierarchical. A specific log event may have multiple contexts.  A single event may be both a ''daily'' event, and also a ''Cron::upload'' event, for example.  With this checkbox selected, the example event would only trigger an E-Mail notification for the ''Cron::upload'' context, and not the ''daily'' context.&lt;br /&gt;
&lt;br /&gt;
Change or remove the E-Mail notice by selecting a notice within the ''Log email condition'' configuration page&lt;br /&gt;
&lt;br /&gt;
== Old / uncommon ==&lt;br /&gt;
&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Time billing | Time billing]]&lt;br /&gt;
* Using a non-standard [[Freeside:3:Documentation:Administration:PostgreSQL_Schema | PostgreSQL Schema]]&lt;br /&gt;
* Setting up [[Freeside:3:Documentation:Administration:Slony | Slony replication and failover]] (old - PostgreSQL native replication is a more current solution)&lt;br /&gt;
&lt;br /&gt;
{{ContextSensitiveHelp}}&lt;/div&gt;</summary>
		<author><name>Mitch</name></author>	</entry>

	</feed>