LedgerSMB::AM






LedgerSMB::AM − This module provides some administrative
functions

This module provides some administrative functions


 #====================================================================
 # LedgerSMB
 # Small Medium Business Accounting software
 # http://www.ledgersmb.org/
 #
 # Copyright (C) 2006
 # This work contains copyrighted information from a number of sources
 # all used with permission.
 #
 # This file contains source code included with or based on SQL−Ledger
 # which is Copyright Dieter Simader and DWS Systems Inc. 2000−2005
 # and licensed under the GNU General Public License version 2 or, at
 # your option, any later version.  For a full list including contact
 # information of contributors, maintainers, and copyright holders,
 # see the CONTRIBUTORS file.
 #
 # Original Copyright Notice from SQL−Ledger 2.6.17 (before the fork):
 # Copyright (C) 2000
 #
 #  Author: DWS Systems Inc.
 #     Web: http://www.sql−ledger.org
 #
 #  Contributors: Jim Rawlings <jim@your−dba.com>
 #
 #====================================================================
 #
 # This file has undergone whitespace cleanup.
 #
 #====================================================================
 #
 # Administration module
 #    Chart of Accounts
 #    template routines
 #    preferences
 #
 #====================================================================



AM−>get_account($myconfig, $form);
    Populates the $form attributes accno, description,
    charttype, gifi_accno, category, link, and contra with
    details about the account that has the id $form−>{id}.
    If there are no acc_trans entries that refer to that
    account, $form−>{orphaned} is made true, otherwise
    $form−>{orphaned} is set to false.

    Also populates ’inventory_accno_id’, ’income_accno_id’,









                             ‐2‐


    ’expense_accno_id’, ’fxgain_accno_id’, and
    ’fxloss_accno_id’ with the values from defaults.

    $myconfig is unused.

AM−>delete_account($myconfig, $form);
    Deletes the account with the id $form−>{id}.  Calls
    $form−>error if there are any acc_trans entries that
    reference it.  If any parts have that account for an
    inventory, income, or COGS (expense) account, switch the
    part to using the default account for that type.  Also
    deletes all tax, partstax, customertax, and vendortax
    table entries for the account.

    $myconfig is unused.

AM−>gifi_accounts($myconfig, $form);
    Populates the list referred to as $form−>{ALL} with
    hashes of gifi numbers and descriptions in order of the
    GIFI number.  The GIFI number referred to as ’accno’.

    $myconfig is not used.

AM−>get_gifi($myconfig, $form);
    Sets $form−>{description} to the description of the GIFI
    number $form−>{accno}.  Sets $form−>{orphaned} to true
    if there are no entries in acc_trans that refer to this
    GIFI and to false otherwise.

    $myconfig is not used.

AM−>save_gifi($myconfig, $form);
    Adds or updates a GIFI record.  If $form−>{id} is set,
    update the gifi record that has that as an account
    number.  The new values for an added or updated record
    are stored in $form−>{accno} and $form−>{description}.

    $myconfig is not used.

AM−>delete_gifi($myconfig, $form);
    Deletes the gifi record with the GIFI number
    $form−>{id}.

    $myconfig is not used.

AM−>warehouses($myconfig, $form);
    Populates the list referred to as $form−>{ALL} with
    hashes describing warehouses, ordered according to the
    logic of $form−>sort_order.  Each hash has an id and a
    description element.

    $myconfig is not used.











                             ‐3‐


AM−>get_warehouse($myconfig, $form);
    Sets $form−>{description} to the name of the warehouse
    $form−>{id}.  If no inventory is currently linked to the
    warehouse, set $form−>{orphaned} to true, otherwise
    $form−>{orphaned} is false.

    $myconfig is not used.

AM−>save_warehouse($myconfig, $form);
    Add or update a warehouse.  If $form−>{id} is set, that
    warehouse is updated instead of adding a new warehouse.
    In both cases, the description of the warehouse is set
    to $form−>{description}.

    $myconfig is not used.

AM−>delete_warehouse($myconfig, $form);
    Deletes the warehouse with the id $form−>{id}.

    $myconfig is not used.

AM−>departments($myconfig, $form);
    Populate the list referred to as $form−>{ALL} with
    hashes of details about departments.  The hashes all
    contain the id, description, and role of the department
    and are ordered by the description.

    $myconfig is unused.

AM−>get_department($myconfig, $form);
    Fills $form−>{description} and $form−>{role} with
    details about the department with the id value of
    $form−>{id}.  If the department has not been used as
    part of a transaction referred to in dpt_trans, set
    $form−>{orphaned} to true, otherwise it is set to false.

    $myconfig is unused.

AM−>save_department($myconfig, $form);
    Add or update a department record.  If $form−>{id} is
    set, the department with that id is updated, otherwise a
    new department is added.  The department role (either
    ’C’ for cost centres or ’P’ for profit centres) and
    description is taken from the $form attributes ’role’
    and ’description’.

    $myconfig is unused.

AM−>delete_department($myconfig, $form)
    Deletes the department with an id of $form−>{id}.

    $myconfig is unused.











                             ‐4‐


AM−>business($myconfig, $form);
    Populates the list referred to as $form−>{ALL} with
    hashes containing details about all known types of
    business.  Each hash contains the id, description, and
    discount for businesses of this type.  The discount is
    represented in numeric form, such that a 10% discount is
    stored and retrieved as 0.1.  The hashes are sorted by
    the business description.

    $myconfig is unused.

AM−>get_business($myconfig, $form);
    Places the description and discount for the business
    with an id of $form−>{id} into $form−>{description} and
    $form−>{discount}.

    $myconfig is unused.

AM−>save_business($myconfig, $form);
    Adds or updates a type of business.  If $form−>{id} is
    set, the business type with a corresponding id is
    updated, otherwise a new type is added.  The new
    description is $form−>{description}.  The discount taken
    as a percentage stored in $form−>{discount}, which then
    value is divided by 100 in place and the multiplier is
    stored.  As an example, if $form−>{discount} is 10 when
    this function is called, it is changed to 0.1 and stored
    as 0.1.

    $myconfig is unused.

AM−>delete_business($myconfig, $form);
    Deletes the business type with the id $form−>{id}.

    $myconfig is unused.

AM−>sic($myconfig, $form);
    Populate the list referred to as $form−>{ALL} with
    hashes containing SIC (some well known systems of which
    are NAICS and ISIC) data from the sic table.  code is
    the actual SIC code, description is a textual
    description of the code, and sictype is an indicator of
    whether or not the entry refers to a header.  The hashes
    will be sorted by either the code or description.

    $myconfig is unused.

AM−>get_sic($myconfig, $form);
    Retrieves the sictype and description for the SIC
    indicated by $form−>{code} and places the retrieved
    values into $form−>{sictype} and $form−>{description}.

    $myconfig is unused










                             ‐5‐


AM−>save_sic($myconfig, $form);
    Add or update a SIC entry.  If $form−>{id} is set, take
    it as the original code to identify the entry update,
    otherwise treat it as a new entry.  $form−>{code},
    $form−>{description}, and $form−>{sictype} contain the
    new values.  sictype is a single character to flag
    whether or not the entry is for a header (’H’).

    $myconfig is unused.

AM−>delete_sic($myconfig, $form);
    Deletes the SIC entry with the code $form−>{code}.

    $myconfig is unused.

AM−>language($myconfig, $form);
    Populates the list referred to as $form−>{ALL} with
    hashes containing the code and description of all
    languages entered in the language table.  The usual set
    of $form attributes affect the order in which the hashes
    are entered in the list.

    These language functions are unrelated to
    LedgerSMB::Locale, although these language codes are
    also used for non‐UI templates and by LedgerSMB::PE.

    $myconfig is unused.

AM−>get_language($myconfig, $form);
    Sets $form−>{description} to the description of the
    language that has the code $form−>{code}.

    $myconfig is unused.

AM−>save_language($myconfig, $form);
    Add or update a language entry.  If $form−>{id} is set,
    the language entry that has that as a code is updated,
    otherwise a new entry is added.  $form−>{code} and
    $form−>{description} contain the new values for the
    entry.

    $myconfig is unused.

AM−>delete_language($myconfig, $form);
    Deletes the language entry with the code $form−>{code}.

    $myconfig is unused.

AM−>recurring_transactions($myconfig, $form);
    Populates lists referred to in the form of
    $form−>{transactions}{$type}, where the possible values
    for $type are ’ar’, ’ap’, ’gl’, ’so’, and ’po’, with
    hashes containing details about recurring transactions
    of the $type variety.  These hashes have the fields









                             ‐6‐


    module (the frontend script that governs the transaction
    type), transaction (the transaction type), invoice (true
    if the transaction is an invoice), description (a field
    that is a customer, vendor, or in the case of a GL
    transaction, an arbitrary text field), amount (the cash
    value of the transaction), id (the id of the recurring
    transaction), reference (the reference value for the
    transaction), startdate (the date the recurring sequence
    started), nextdate (the date of the next occurrence of
    the event), enddate (the date the sequence ends), repeat
    (the number of units involved in the recurrence
    frequency), unit (the base recurrence unit), howmany
    (how many times the event occurs), payment (whether or
    not the event involves a payment), recurringemail (a
    colon separated list of forms to email as part of the
    event), recurringprint (a colon separated list of forms
    to print as part of the event), overdue (how many days
    until the next repetition of the event), vc (vendor,
    customer, or empty), exchangerate (the exchangerate
    involved on the day of the original transaction), curr
    (the currency of the event), and expired (if there will
    be no more recurrences).

    By default, these lists are sorted in order of the date
    of the next occurrence of the transaction.  This order
    can be affected by the usual attributes used by
    $form−>sort_order.

    $myconfig is unused.

AM−>recurring_details($myconfig, $form, $id);
    Retrieves details about the recurring transaction $id
    and places them into attributes of $form.  Sets id (the
    transaction id passed in, $id), reference (a reference
    string for the recurring transaction), startdate (the
    date the recurrence series started on), nextdate (the
    date of the next occurrence of the event), enddate (the
    date of the final occurrence of the event), repeat (the
    number of units involved in a recurrence period), unit
    (the recurrence unit), howmany (the total number of
    recurrences in the recurrence series), payment (whether
    or not the transaction is associated with a payment),
    arid (true if an ar event), apid (true if an ap event),
    overdue (number of days an ar event was to the duedate),
    paid (number of days after an ar event it was paid), req
    (days until the requirement date from the transdate of
    an oe event), oeid (true if an oe event), customer_id
    (vendor id if sales order), vendor_id (vendor id if
    puchase order), vc (’customer’ if customer_id set,
    ’vendor’ if vendor_id set), invoice (true if both arid
    and arinvoice set or if both apid and apinvoice set),
    recurringemail (colon separated list of forms and
    formats to be emailed), message (the non‐attachement
    message body for the emails), and recurringprint (colon









                             ‐7‐


    separated list of form names, formats, and printer
    names).

    $myconfig is unused.

AM−>update_recurring($myconfig, $form, $id)
    Updates nextdate for the recurring transaction $id to
    the next date of the sequence.  If the new value for
    nextdate is after enddate, nextdate is set to NULL.

    $myconfig is unused.

AM−>check_template_name($myconfig, $form);
    Performs some sanity checking on the filename
    $form−>{file} and calls $form−>error if the filename is
    disallowed.

AM−>load_template($myconfig, $form);
    Populates $form−>{body} with the contents of the file
    $form−>{file}.

AM−>save_template($myconfig, $form);
    Overwrites the file $form−>{file} with the contents of
    $form−>{body}, excluding carriage returns.

AM−>save_preferences($myconfig, $form);
    Saves the preferences for the current user.  New values
    are taken from the $form attributes name, email,
    dateformat, signature, numberformat, vclimit, tel, fax,
    company, menuwidth, countrycode, address, timeout,
    stylesheet, printer, password, new_password, and
    old_password.  Password updates occur when new_password
    and old_password differ.

AM−>save_defaults($myconfig, $form, \@defaults);
    Sets the values in the defaults table to values derived
    from $form.  glnumber, sinumber, vinumber, sonumber,
    ponumber, sqnumber, rfqnumber, partnumber,
    employeenumber, customernumber, vendornumber,
    projectnumber, yearend, curr, weightunit, and
    businessnumber are taken directly from the $form value
    with the corresponding name.

    Stores the templates directory for a specific company on
    defaults table.

    @defaults identifies the list of values to be stored in
    defaults.  If not provided, a default list is used.

AM−>defaultaccounts($myconfig, $form);
    Retrieves the numbers of default accounts and sets
    $form−>{defaults}{$key} to the appropriate account
    numbers, where $key can be ’inventory_accno_id’,
    ’income_accno_id’, ’income_accno_id’,









                             ‐8‐


    ’expense_accno_id’, ’fxgain_accno_id’ and
    ’fxloss_accno_id’.

    Sets the hashes refered to as
    $form−>{accno}{${type}_accno_id}{$accno} − where $type
    one of ’inventory’, ’income’ and ’expense’ − to contain
    the id and description of all accounts with IC elements
    in their link fields keyed on the account number.

    Fills the hashes referred to as
    $form−>{accno}{fx(gain|loss)_accno_id} with the id and
    description of all income and expense accounts, keyed on
    the account number.

    $myconfig is unused.

AM−>taxes($myconfig, $form);
    Retrieve details about all taxes in the database.
    $form−>{taxrates} refers to a list containing hashes
    with the chart id (id), account number (accno),
    description, rate, taxnumber, validto, pass, and
    taxmodulename for a tax.  $form−>{taxmodule_id}, where
    id is a taxmodule_id, is set to that taxmodule’s name.

    $myconfig is unused.

AM−>save_taxes($myconfig, $form);
    Deletes all entries from the tax table then re‐inserts
    all taxes whose accounts are part of the space separated
    list $form−>{taxaccounts}.  Each element of
    $form−>{taxaccounts} is of the form ’chartid_i’ where
    chartid is the id of the chart entry for the tax and i
    is a numeric index.  The values inserted for each tax
    are chart_id (from taxaccounts), rate (
    form−>{taxrate_i} / 100), validto ($form−>{validto_i}),
    taxnumber ($form−>{taxnumber_i}), pass
    ($form−>{pass_i}), and taxmodule_id
    ($form−>{taxmodule_id_i}).

AM−>closedto($myconfig, $form);
    Populates $form−>{closedto}, $form−>{revtrans}, and
    $form−>{audittrail} with their values in the defaults
    table.

    $myconfig is unused.

AM−>closebooks($myconfig, $form);
    Updates the revtrans, closedto, and audittrail entries
    in the defaults table using their corresponding $form
    values.  If $form−>{removeaudittrail} is set, this used
    to remove all audittrail entries with a transdate prior
    to the date given by $form−>{removeaudittrail}, but has
    been disabled.










                             ‐9‐


    $myconfig is unused.

AM−>earningsaccounts($myconfig, $form);
    Populates the list referred to as $form−>{chart} with
    hashes containing the account number (accno) and the
    description of all equity accounts, ordered by the
    account number.

    $myconfig is unused.

AM−>post_yearend($myconfig, $form);
    Posts the termination of a financial year.  Makes use of
    the $form attributes login, reference, notes,
    description, and transdate to populate the gl table
    entry.  The id of the gl transaction is placed in
    $form−>{id}.

    For every accno_$i in $form, where $i is between 1 and
    $form−>{rowcount}, an acc_trans entry will be added if
    credit_$i or debit_$i is non‐zero.

    A new yearend entry is populated with the id and
    transdate of the gl transaction.

    Adds an entry to the audittrail.

    $myconfig is unused.

AM−>get_all_defaults($form);
    Retrieves all settings from defaults and sets the
    appropriate $form values.  Also runs
    AM−>defaultaccounts.

AM−>get_templates_directories;
    This functions gets all the directories from
    $LedgerSMB::Sysconfig::templates to list all the
    possible non‐Ui templates.