Provided by: ledgersmb_1.3.25-1_all bug

NAME

       LedgerSMB::ScriptLib::Company - LedgerSMB class defining the Controller functions,
       template instantiation and rendering for vendor and customer editing and display.  This
       would also form the basis for other forms of company contacts.

SYOPSIS

       This module is the UI controller for the vendor DB access; it provides the View interface,
       as well as defines the Save vendor.  Save vendor/customer will update or create as needed.

METHODS

       set_entity_class($request) returns int entity class
           Errors if not inherited.  Inheriting classes MUST define this to set $entity_class
           appropriately.

       get_by_cc
           Populates the company area with info on the company, pulled up through the control
           code

       dispatch_legacy
           This is a semi-private method which interfaces with the old code.  Note that as long
           as any other functions use this, the contact interface cannot be said to be safe for
           code caching.

           Not fully documented because this will go away as soon as possible.

       add_transaction
           Dispatches to the Add (AR or AP as appropriate) transaction screen.

       add_invoice
           Dispatches to the (sales or vendor, as appropriate) invoice screen.

       add_order
           Dispatches to the sales/purchase order screen.

       rfq Dispatches to the quotation/rfq screen

       new_company($request)
           returns object inheriting LedgerSMB::DBObject::Company

           This too must be defined in classes that inherit this class.

       get($self, $request, $user)
           Requires form var: id

           Extracts a single company from the database, using its company ID as the primary point
           of uniqueness. Shows (appropriate to user privileges) and allows editing of the
           company information.

       add_location
           Adds a location to the company as defined in the inherited object

       save_new_location
           Adds a location to the company as defined in the inherited object, not overwriting
           existing locations.

       generate_control_code
           Sets $company->{control_code} equal to the next in the series of entity_control values

       add This method creates a blank screen for entering a company's information.

       get_results($self, $request, $user)
           Requires form var: search_pattern

           Directly calls the database function search, and returns a set of all vendors found
           that match the search parameters. Search parameters search over address as well as
           vendor/Company name.

       history($request)
           Generates the filter screen for the customer/vendor history report.

       display_history($request)
           Displays the customer/vendor history based on criteria from the history filter screen.

           The following request variables are optionally set in the HTTP query string or request
           object.

           Search Criteria name:  search string for company name contact_info:  Search string for
           contact info, can match phone, fax, or email.  salesperson:  Search string for
           employee name in the salesperson field notes: Notes search.  Not currently implemented
           meta_number:  Exact match for customer/vendor number address_line:  Search string for
           first or second line of address.  city:  Search string for city name state:  Case
           insensitive, otherwise exact match for state or province zip:  leading match for
           zip/mail code country_id:  integer for country id.  Exact match tartdate_from:
           Earliest date for startdate of entity credit account startdate_to:  Lates date for
           entity credit accounts' start date type:  either 'i' for invoice, 'o' for orders, 'q'
           for quotations from_date:  Earliest date for the invoice/order to_date:  Latest date
           for the invoice/order

           Unless otherwise noted, partial matches are sufficient.

           Control variables: inc_open:  Include open invoices/orders.  If not true, no open
           invoices are
                      displayed inc_closed: Include closed invoices/orders.  If not true, no
           closed invoices are
                       displayed report_type:  Either summary or detail

           Columns to display: l_partnumber:    parts.partnumber l_sellprice:
           invoice/orderitems.sellprice l_curr:          ar/ap/oe.curr l_unit:
           invoice/orderitems.unit l_deliverydate:  invoice.deliverydate or orderitems.reqdate
           l_projectnumber: project.projectnumber l_serialnumber:
           invoice/orderitems.serialnumber

       csv_company_list($request)
           Generates CSV report (not working at present)

       save($self, $request, $user)
           Saves a company to the database. The function will update or insert a new company as
           needed, and will generate a new Company ID for the company if needed.

       save_credit($request)
           This inserts or updates a credit account of the sort listed here.

       save_credit_new($request)
           This inserts a new credit account.

       edit($request)
           Displays a company for editing.  Needs the following to be set: entity_id,
           account_class, and meta_number.  The account_class requireent is typically set during
           the construction of scripts which inherit this library.

       PRIVATE _render_main_screen($company)
           Pulls relevant data from db and renders the data entry screen for it.

       search($request)
           Renders the search criteria screen.

       save_contact($request)
           Saves contact info as per LedgerSMB::DBObject::Company::save_contact.

       delete_contact
           Deletes the selected contact info record

           Must include company_id or credit_id (credit_id used if both are provided) plus:

           * contact_class_id * contact * form_id

       delete_bank_acct
           Deletes the selected bank account record

           Required request variables: * bank_account_id * entity_id * form_id

       delete_location
           Deletes the selected contact info record

           Must include company_id or credit_id (credit_id used if both are provided) plus:

           * location_class_id * location_id * form_id

       edit_bank_acct($request)
           displays screen to a bank account

           Required data: bank_account_id bic iban

       save_contact_new($request)
           Saves contact info as a new line as per save_contact above.

           save_bank_account($request)
               Adds a bank account to a company and, if defined, an entity credit account.

       save_notes($request)
           Saves notes.  entity_id or credit_id must be set, as must note_class, note, and
           subject.

       pricelist
           This returns and displays the pricelist.  The id field is required.

       delete_price
       save_pricelist
           This routine saves the price matrix.  For existing rows, valid_to, valid_from, price
           fields are saved.

           For the new row, the partnumber field matches the beginning of the part number, and
           the description is a full text search.

       pricelist_search_handle
           Handles the return from the parts search from the pricelist screen.

COPYRIGHT

       Copyright (c) 2009, the LedgerSMB Core Team.  This is licensed under the GNU General
       Public License, version 2, or at your option any later version.  Please see the
       accompanying License.txt for more information.