OpenERP::OOM::Class::Base
my $obj = $schema->class('Name')->create(\%args); :say $obj->id; $obj->name('New name'); $obj->update; $obj->delete;
Provides a base set of properties and methods for OpenERP::OOM objects (update, delete, etc).
Returns the OpenERP ID of an object.
say $obj->id;
The BUILD method sets up the methods for the links to the attached objects.
Updates an object in OpenERP after its properties have been changed.
$obj->name('New name'); $obj->update;
Also allows a hashref to be passed to update multiple properties:
$obj->update({ name => 'new name', ref => 'new reference', price => 'new price', });
Updates OpenERP with a single property of an object.
$obj->name('New name'); $obj->status('Active'); $obj->update_single('name'); # Only the 'name' property is updated
Reloads an object's properties from OpenERP.
$obj->refresh;
Deletes an object from OpenERP.
my $obj = $schema->class('Partner')->retrieve(60); $obj->delete;
Clone the current object, returning the new object.
This is equivalent to pressing duplicate in the OpenERP user interface.
This is a debug method.
This actually does the create related via OpenERP.
I'm not sure in what scenarios you should use it versus the scenario's you shouldn't. Suck it and see.
It will create calls like this,
# DEBUG_RPC:rpc.request:('execute', 'db', 1, '*', ('stock.partial.picking', 'write', [1], {'product_moves_out': [(0, 0, {'prodlot_id': False, 'product_id': 16, 'product_uom': 1, 'quantity': 10.0})]}, {'lang': 'en_GB', 'search_default_available': 1, 'project_id': False, 'tz': False, '__last_update': {'stock.partial.picking,1': False}, 'active_model': 'ir.ui.menu', 'section_id': False, 'contact_display': 'partner_address', 'active_ids': [3], 'active_id': 316}))
Note that it will not return the object created.
Creates a related or linked object.
$obj->create_related('address',{ street => 'Drury Lane', postcode => 'CV21 3DE', });
Finds a property related to the current object.
my $line = $po->find_related('order_lines', [ 'id', '=', 1 ]);
This only works with relationships to OpenERP objects (i.e. not DBIC) and to one2many relationships where the other side of the relationship has a field pointing back to the object you are searching from.
In any other case the method will croak.
If the search criteria return more than one result it will whine.
Returns the OpenERP::OOM::Class object for the relationship passed in.
Obviously this only works for the OpenERP relationships. It will croak if you ask for a relationship to a DBIC object.
Searches for objects of a relation associated with this object.
my @lines = $po->search_related('order_lines', [ 'state', '=', 'draft' ]);
Adds a related or linked object to a one2many, many2many, or multiple relationship.
my $partner = $schema->class('Partner')->find(...); my $category = $schema->class('PartnerCategory')->find(...); $partner->add_related('category', $category);
Like the DBIx::Class set_related. Sets up a link to a related object.
Performs an exec_workflow in OpenERP.
$self->execute_workflow('purchase_confirm');
Is likely to translate to something like this,
# DEBUG_RPC:rpc.request:('exec_workflow', 'db', 1, '*', ('purchase.order', 'purchase_confirm', 24))
The 24 is the id of the object.
Performs an execute in OpenERP.
$self->execute('action_process');
# DEBUG_RPC:rpc.request:('execute', 'gooner', 1, '*', ('stock.picking', 'action_process', [26], {'lang': 'en_GB', 'search_default_available': 1, 'active_ids': [316], 'tz': False, 'active_model': 'ir.ui.menu', 'section_id': False, 'contact_display': 'partner_address', 'project_id': False, 'active_id': 316}))
The 26 is the id of the object.
Similar to execute but it allows you to specify any number of parameters.
Primarily created to prevent any compatibility problems with other callers. Although I'm not entirely sure if there are any.
$self->executex('add_invoices_to_payment', [1,2], [3,4]);
Translates roughly to
execute_kw(..., 'payment.order', 'add_invoices_to_payment', [5], [1, 2], [3, 4])
Stick a hash on the end of the list of params to pass a context object.
To print a purchase order we need to send a report, then get it, then display it, then print it (and you don't want to know about all the traffic behind the scenes...)
The first step looks like this:
# DEBUG_RPC:rpc.request:('report', 'aquarius_openerp_jj_staging', 1, '*', (u'purchase.quotation', [1], {'model': u'purchase.order', 'id': 1, 'report_type': u'pdf'}, {'lang': u'en_GB', 'active_ids': [1], 'tz': False, 'active_model': u'purchase.order', 'section_id': False, 'search_default_draft': 1, 'project_id': False, 'active_id': 1}))
To install OpenERP::OOM, copy and paste the appropriate command in to your terminal.
cpanm
cpanm OpenERP::OOM
CPAN shell
perl -MCPAN -e shell install OpenERP::OOM
For more information on module installation, please visit the detailed CPAN module installation guide.