summaryrefslogtreecommitdiff
path: root/httemplate/docs/billing.html
blob: 1d6f8c4fc8cf1c67c485174dfa945eafa3d9e39c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<head>
  <title>Billing</title>
</head>
<body>
  <h1>Billing</h1>
  <ul>
    <li>You can bill individual customers by clicking on the <i>Bill now</i> link on the main customer view.
    <li>The <a href="man/bin/freeside-daily.html"><b>freeside-daily</b></a> script should be run daily to bill customers and run invoice collection events.
    <li>Real-time credit card processing: Install the <a href="http://search.cpan.org/search?mode=module&query=Business%3A%3AOnlinePayment">Business::OnlinePayment</a> module for your processor.  Configure the <a href="../config/config-view.cgi#business-onlinepayment">business-onlinepayment</a> configuration option.  Disable the default <b>Batch card</b> <a href="../browse/part_bill_event.cgi">invoice event</a> and add one for Business::OnlinePayment.
    <li>Optional: Credit card expiration alerts: Customize <a href="../config/config.cgi#alerter_template">alerter_template</a> configuration option and run <a href="man/bin/freeside-expiration-alerter.html">freeside-expiration-alerter</a> daily.
    <li>Credit card decline alerts: Customize the <a href="../config/config.cgi#declinetemplate">declinetemplate</a> configuration option and set the <a href="../config/config.cgi#emaildecline">emaildecline</a> configuration option.
    <li>Optional: Invoice template customization
      <ul>
        <li>See the <a href="http://search.cpan.org/~mjd/Text-Template/lib/Text/Template.pm">Text::Template</a> documentation for details on the substitution language.
        <li>You <b>must</b> 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).
        <li>In addition, the following variables are available:
          <ul>
            <li>$invnum - invoice number
            <li>$date - as a UNIX timestamp (see <a href="http://search.cpan.org/doc/GBARR/TimeDate-1.09/lib/Date/Format.pm">Date::Format</a> for conversion functions).
            <li>$page - current page
            <li>$total_pages - total pages
            <li>@address - A six-element array containing the customer name, company, and address.
<!--            <li>$overdue - true if this invoice is overdue -->
          </ul>
      </ul>
    <li>Batch credit card processing
      <ul>
        <li>After <a href="man/bin/freeside-daily.html"><b>freeside-daily</b></a> is run, a credit card batch will be in the <a href="schema.html#cust_pay_batch">cust_pay_batch</a> table.  Export this table to your credit card batching.
        <li>When your batch completes, erase the cust_pay_batch records in that batch and add any necessary paymants to the <a href="schema.html#cust_pay">cust_pay</a> table.  Example code to add payments is:
        <pre>use FS::cust_pay;

# loop over all records in batch

my $payment=create FS::cust_pay (
  'invnum' => $invnum,
  'paid' => $paid,
  '_date' => $_date,
  'payby' => $payby,
  'payinfo' => $payinfo,
  'paybatch' => $paybatch,
);

my $error=$payment->insert;
if ( $error ) {
  #process error
}

# end loop
</pre>
All fields except paybatch are contained in the cust_pay_batch table.  You can use paybatch field to track particular batches and/or particular transactions within a batch.
    </ul>
<!--      <li>The <a href="man/bin/freeside-print-batch.html"><b>freeside-print-batch</b></a> script can print or email pending credit card batches for manual entry. -->
  </ul>
</body>