NAME

OpenERP::XMLRPC::Client - XMLRPC Client tweaked for OpenERP interaction.

VERSION

version 0.25

SYNOPSIS

        my $erp = OpenERP::XMLRPC::Client->new( dbname => 'terp', username => 'admin', password => 'admin', host => '127.0.0.1', port => '8069' )       
        my $partner_ids = $erp->object_execute( 'res.partner', 'search', [ 'name', 'ilke', 'abc' ] );

        # READ a res.partner object
        my $partner = $erp->read( 'res.partner', $id );

        print "You Found Partner:" . $partner->{name} . "\n";

DESCRIPTION

I have tried to make this extendable so made use of moose roles to structure the calls to the different methods available from the openerp rpc.

This makes use of the MooseX::Role::XMLRPC::Client to communicate via rpc.

This module was built to be used by another OpenERP::XMLRPC::Simple and handles openerp specific rpc interactions. It could be used by something else to access openerp rpc services.

NAME

OpenERP::XMLRPC::Client - XMLRPC Client tweaked for OpenERP interaction.

NAME

OpenERP::XMLRPC::Client - XML RPC Client for OpenERP

Parameters

        username                - string - openerp username (default: 'admin')
        password                - string - openerp password (default: 'admin')
        dbname                  - string - openerp database name (default: 'terp')
        host                    - string - openerp rpc server host (default: '127.0.0.1' )
        port                    - string - openerp rpc server port (default: 8069)
        proto                   - string - openerp protocol (default: http) .. untested anything else.

Attributes

        openerp_uid             - int           - filled when the connection is logged in.
        base_rpc_uri    - string        - used to hold uri the rpc is currently pointing to.
        openerp_rpc             - L<RPC::XML::Client> - Provided by L<MooseX::Role::XMLRPC::Client>

METHODS

These methods re-present the OpenERP XML RPC but in a slightly more user friendly way.

The methods have been tested using the 'res.partner' object name and the demo database provided when you install OpenERP.

BUILD

When the object is instanciated, this method is run. This calls openerp_login.

openerp_login

Logs the client in. Called automatically when the object is created.

openerp_logout

Basically a no-op.

object_execute

Low level method for making a call to the Open ERP server. Normally called by a wrapper function like create or read.

object_exec_workflow

Makes an 'exec_workflow' call to Open ERP.

report_report

Sends a 'report' call to Open ERP.

report_report_get

Sends a 'report_get' call to Open ERP.

change_uri

OpenERP makes methods available via different URI's, this method is used to change which URI the rpc client is pointing at.

Arguments: $_[0] - object ref. ($self) $_[1] - string (e.g. "xmlrpc/object") base uri path.

Returns: string - the old uri - the one this new one replaced.

read ( OBJECTNAME, [IDS] )

Can pass this a sinlge ID or an ARRAYREF of ID's, it will return an ARRAYREF of OBJECT records (HASHREF's).

Example: $partner = $erp->read('res.partner', 1 ); print "This is the returned record name:" . $partner->[0]->{name} . "\n";

        $partners = $erp->read('res.partner', [1,2] );
        print "This is the returned record 1:" .  $partners->[0]->{name} . "\n";
        print "This is the returned record 2:" .  $partners->[1]->{name} . "\n";

Returns: ArrayRef of HashRef's - All the objects with IDs passed.

search ( OBJECTNAME, [ [ COLNAME, COMPARATOR, VALUE ] ] )

Used to search and return IDs of objects matching the searcgh.

Returns: ArrayRef of ID's - All the objects ID's matching the search.

Example: $results = $erp->search('res.partner', [ [ 'name', 'ilke', 'abc' ] ] ); print "This is the 1st ID found:" . $results->[0] . "\n";

copy ( model, id )

Copies the object specified, returning the id of the new object.

create ( OBJECTNAME, { COLNAME => COLVALUE } )

Returns: ID - the ID of the object created.

Example: $new_id = $erp->create('res.partner', { 'name' => 'new company name' } );

update ( OBJECTNAME, ID, { COLNAME => COLVALUE } )

Returns: boolean - updated or not.

Example: $success = $erp->update('res.partner', 1, { 'name' => 'changed company name' } );

delete ( OBJECTNAME, ID )

Returns: boolean - deleted or not.

Example: $success = $erp->delete('res.partner', 1 );

field_info ( OBJECTNAME )

Returns: hash containing all field info, this contains field names and field types.

model_fields ( OBJECTNAME )

Returns: hash containing all the models fields.

get_defaults ( OBJECTNAME, [ FIELDS ] )

Returns: hash containing the default values for those fields.

search_detail ( OBJECTNAME, [ [ COLNAME, COMPARATOR, VALUE ] ], CONTEXT )

Used to search and read details on a perticular OBJECT. This uses 'search' to find IDs, then calls 'read' to get details on each ID returned.

Returns: ArrayRef of HashRef's - All the objects found with all their details.

Example: $results = $erp->search_detail('res.partner', [ [ 'name', 'ilke', 'abc' ] ] ); print "This is the 1st found record name:" . $results->[0]->{name} . "\n";

The CONTEXT argument is optional. This allows a hasref containing the current search context to be provided, e.g.

 my $results = $erp->search_detail(
     'stock.location',
     [
         ['usage' => '=' => 'internal']
     ],
     {
         active_id => $self->id,
         active_ids => [$self->id],
         active_model => 'product.product',
         full => 1,
         product_id => $self->id,
         search_default_in_location => 1,
         section_id => undef,
         tz => undef,
     }
 )

read_single ( OBJECTNAME, ID )

Pass this a sinlge ID and get a single OBJECT record (HASHREF).

Example: $partner = $erp->read_single('res.partner', 1 ); print "This name of partner with ID 1:" . $partner->{name} . "\n";

Returns: HashRef - The objects data

SEE ALSO

RPC::XML::Client

AUTHORS

  • Benjamin Martin <ben@madeofpaper.co.uk>

  • Colin Newell <colin@opusvl.com>

  • Jon Allen (JJ) <jj@opusvl.com>

  • Nick Booker <nick.booker@opusvl.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019 by OpusVL <community@opusvl.com>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.