LedgerSMB::DBObject::Payment






LedgerSMB::DBOject::Payment − Payment Handling Back−end
Routines for LedgerSMB

Provides the functions for generating the data structures
payments made in LedgerSMB.   This module currently handles
only basic payment logic, and does handle overpayment logic,
though these features will be moved into this module in the
near future.

Copyright (c) 2007 The LedgerSMB Core Team.  Licensed under
the GNU General Public License version 2 or at your option
any later version.  Please see the included COPYRIGHT and
LICENSE files for more information.



LedgerSMB::DBObject::Payment−>new()
    Inherited from LedgerSMB::DBObject.  Please see that
    documnetation for details.

$payment−>get_open_accounts()
    This function returns a list of open accounts depending
    on the $payment−>{account_class} property.  If this
    property is 1, it returns a list of vendor accounts, for
    2, a list of customer accounts are returned.

    The returned list of hashrefs is stored in the
    $payment−>{accounts} property.  Each hashref has the
    following keys:  id (entity id), name, and entity_class.

    An account is considered open if there are outstanding,
    unpaid invoices attached to it.  Customer/vendor payment
    threshold is not considered for this calculation.

text_amount($value)
    Returns the textual representation, as defined in
    localization rules, for the numeric value passed.

get_metadata()
    Semi‐private method for preparing the object for other
    tasks, such as displaying payment options.

search()
    Seturns a series of payments matching the search
    criteria.

    Search results are also stored at
    $payment−>{search_results}.

get_open_accounts()
    Returns a list of open accounts for the payment
    operation.

    These are also stored on $payment−>{accounts}









                             ‐2‐


$payment−>get_entity_credit_account()
    Returns billing information for the current account, and
    saves it to an arrayref at $payment−>{entity_accounts}/

$payment−>get_all_accounts()
    This function returns a list of open or closed accounts
    depending on the $payment−>{account_class} property.  If
    this property is 1, it returns a list of vendor
    accounts, for 2, a list of customer accounts are
    returned.

    The returned list of hashrefs is stored in the
    $payment−>{accounts} property.  Each hashref has the
    following keys:  id (entity id), name, and entity_class.

$payment−>reverse()
    This function reverses a payment.  A payment is defined
    as one source ($payment−>{source}) to one cash account
    ($payment−>{cash_accno}) to one date
    ($payment−>{date_paid}) to one vendor/customer
    ($payment−>{credit_id}, $payment−>{account_class}).
    This reverses the entries with that source.

$payment−>get_open_invoices()
    This function returns a list of open invoices depending
    on the $payment−>{account_class}, $payment−>{entity_id},
    and $payment−>{curr} properties.  Account classes follow
    the conventions above.  This list is hence specific to a
    customer or vendor and currency as well.

    The returned list of hashrefs is stored in the
    $payment−>{open_invoices} property. Each hashref has the
    following keys:  id (entity id), name, and entity_class.

$payment−>get_open_invoice()
    This function is an especific case of
    get_open_invoices(), because get_open_invoice() can
    search for a specific invoice, wich can be searched by
    the $payment−>{invnumber} variable

$payment−>get_all_contact_invoices()
    This function returns a list of open accounts depending
    on the $payment−>{account_class} property.  If this
    property is 1, it returns a list of vendor accounts, for
    2, a list of customer accounts are returned.  Attached
    to each account is a list of open invoices.  The data
    structure is somewhat complex.

    Each item in the list has the following keys:
    contact_id, contact_name, \ account_number, total_due,
    and invoices.

    The invoices entry is a reference to an array of
    hashrefs.  Each of these hashrefs has the following









                             ‐3‐


    keys: invoice_id, invnumber, invoice_date, amount,
    discount, and due.

    These are filtered based on the (required) properties:
    $payment−>{account_class}, $payment−>{business_type},
    $payment−>{date_from}, $payment−>{date_to}, and
    $payment−>{ar_ap_accno}.

    The $payment−>{ar_ap_accno} property is used to filter
    out by AR or AP account.

    The following can also be optionally passed:
    $payment−>{batch_id}.  If this is patched, vouchers in
    the current batch will be picked up as well.

    The returned list of hashrefs is stored in the
    $payment−>{contact} property.  Each hashref has the
    following keys:  id (entity id), name, and entity_class.

list_open_projects
    This method gets the current date attribute, and
    provides a list of open projects.  The list is attached
    to $self−>{projects} and returned.

list_departments
    This method gets the type of document as a parameter,
    and provides a list of departments of the required type.
    The list is attached to $self−>{departments} and
    returned.

list_open_vc
    This method gets the type of vc (vendor or customer) as
    a parameter, and provides a list of departments of the
    required type.  The list is attached to
    $self−>{departments} and returned.

get_open_currencies
    This method gets a list of the open currencies inside
    the database, it requires that $self−>{account_class}
    (must be 1 or 2)  exist to work.

    WARNING THIS IS NOT BEEING USED BY THE SINGLE PAYMENT
    SYSTEM....

list_accounting
    This method lists all accounts that match the role
    specified in account_class property and are available to
    store the payment or receipts.  =back

list_overpayment_accounting
    This method lists all accounts that match the role
    specified in account_class property and are available to
    store an overpayment / advanced payment / pre‐payment.
    =back









                             ‐4‐


get_sources
    This method builds all the possible sources of money, in
    the future it will look inside the DB.  =back

get_exchange_rate(currency, date)
    This method gets the exchange rate for the specified
    currency and date

get_default_currency
    This method gets the default currency =back

get_current_date
    This method returns the system’s current date

get_vc_info
    This method returns the contact informatino for a
    customer or vendor according to $self−>{account_class}

get_payment_detail_data
    This method sets appropriate project, department, etc.
    fields.

post_bulk
    This function posts the payments in bulk.  Note that
    queue_payments is not a common setting and rather this
    provides a hook for an add‐on.

    This API was developed early in 1.3 and is likely to
    change for better encapsulation.  Currenty it uses the
    following structure:

    Within the main hashref:

    contact_count
        The number of payments.  One per contact.

    contact_$row
        for (1 .. contact_count), contact_$_ is the entity
        credit account’s id associated with the current
        contact.  We will call this $contact_id below.

        For each contact id, we have the following, suffixed
        with _$contact_id:

        source

        invoice_count
            Number of invoices to loop through

        invoice_${contact_id}_$row
            for $row in (1 .. invoice_count), each this
            provides the transaction id of the invoice.

            Each invoice has the following attributes,









                             ‐5‐


            suffxed with ${invoice_id}

        amount

        paid

        net

        In the future the payment posting API will become
        more standardized and the conversion between flat
        and hierarchical representation will be moved to the
        workflow scripts.

check_job
    To be moved into payment_queue addon.

post_payment
    This method uses payment_post to store a payment (not a
    bulk payment) on the database.

gather_printable_info
    This method retrieves all the payment related info
    needed to build a document and print it. IT IS NECESSARY
    TO ALREADY HAVE payment_id on $self

get_open_overpayment_entities
    This method retrieves all the entities with the
    specified account_class which have unused overpayments

get_unused_overpayments
    This is a simple wrapper around
    payment_get_unused_overpayments sql function.

get_available_overpayment_amount
    Simple wrapper around
    payment_get_available_overpayment_amount sql function.

init
    Initializes the num2text system

num2text
    Translates numbers into words.