Freeside:3:Documentation:Developer/FS/part fee

From Freeside
Jump to: navigation, search


FS::part_fee - Object methods for part_fee records


 use FS::part_fee;

 $record = new FS::part_fee \%hash;
 $record = new FS::part_fee { 'column' => 'value' };

 $error = $record->insert;

 $error = $new_record->replace($old_record);

 $error = $record->delete;

 $error = $record->check;


An FS::part_fee object represents the definition of a fee

Fees are like packages, but instead of being ordered and then billed on a cycle, they are created by the operation of events and added to a single invoice. The fee definition specifies the fee's description, how the amount is calculated (a flat fee or a percentage of the customer's balance), and how to classify the fee for tax and reporting purposes.

FS::part_fee inherits from FS::Record. The following fields are currently supported:

feepart - primary key; comment - a description of the fee for employee use, not shown on the invoice; disabled - 'Y' if the fee is disabled; classnum - the FS::pkg_class that the fee belongs to, for reporting and placement on multisection invoices. Unlike packages, fees must be assigned to a class; they will default to class named "Fees", which belongs to the same invoice section that normally contains taxes.; taxable - 'Y' if this fee should be considered a taxable sale. Currently, taxable fees will be treated like they exist at the customer's default service location.; taxclass - the tax class the fee belongs to, as a string, for the internal tax system; taxproductnum - the tax product family the fee belongs to, for the external tax system in use, if any; pay_weight - Weight (relative to credit_weight and other package/fee definitions) that controls payment application to specific line items.; credit_weight - Weight that controls credit application to specific line items.; agentnum - the agent (FS::agent) who uses this fee definition.; amount - the flat fee to charge, as a decimal amount; percent - the percentage of the base to charge (out of 100). If both this and "amount" are specified, the fee will be the sum of the two.; basis - the method for calculating the base: currently one of "charged", "owed", or null.; minimum - the minimum fee that should be charged; maximum - the maximum fee that should be charged; limit_credit - 'Y' to set the maximum fee at the customer's credit balance, if any.; setuprecur - whether the fee should be classified as 'setup' or 'recur', for reporting purposes.


Creates a new fee definition. To add the record to the database, see "insert".
Adds this record to the database. If there is an error, returns the error, otherwise returns false.
Delete this record from the database.
replace OLD_RECORD
Replaces the OLD_RECORD with this one in the database. If there is an error, returns the error, otherwise returns false.
Checks all fields to make sure this is a valid example. If there is an error, returns the error, otherwise returns false. Called by the insert and replace methods.
Returns a string describing how this fee is calculated.
lineitem INVOICE
Given INVOICE (an FS::cust_bill), returns an FS::cust_bill_pkg object representing the invoice line item for the fee, with linked FS::cust_bill_pkg_fee record(s) allocating the fee to the invoice or its line items, as appropriate.
If the fee is going to be charged on the upcoming invoice (credit card processing fees, postal invoice fees), INVOICE should be an uninserted FS::cust_bill object where the 'cust_bill_pkg' property is an arrayref of the non-fee line items that will appear on the invoice.
itemdesc_locale LOCALE
Returns a customer-viewable description of this fee for the given locale, from the part_fee_msgcat table. If the locale is empty or no localized fee description exists, returns part_fee.itemdesc.
Returns the external taxes (FS::tax_rate objects) that apply to this fee, in the location specified by GEOCODE.
Returns the package category name, or the empty string if there is no package category.