Provided by: ledgersmb_1.3.25-1_all bug

NAME

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

SYNOPSIS

       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

       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.

METHODS

       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}

       $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
           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

       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, 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.

perl v5.14.2                                       2012-10-16                  LedgerSMB::DBObject::Payment(3pm)