NAME
OpenERP::OOM::Tutorial::Schema - Setting up an OpenERP::OOM Schema
DESCRIPTION
Object model
OpenERP::OOM uses an object model consisting of a Schema, Classes, and Objects. These are organised as shown below, with methods to traverse up and down the tree.
+-------------------------------+
| Schema |
| e.g. MyApp |
+-------------------------------+
/|\ |
| class
schema |
| \|/
+-------------------------------+
| Class |
| e.g. MyApp::Class::Partner |
+-------------------------------+
/|\ |
| search
class retrieve
| create
| |
| \|/
+-------------------------------+
| Object |
| e.g. MyApp::Object::Partner |
+-------------------------------+
|
update
delete
|
\|/
+-------------------------------+
| OpenERP model |
| e.g res.partner |
+-------------------------------+
Schema
The schema class extends the OpenERP::OOM::Schema module, i.e.:
package MyApp;
use Moose;
extends 'OpenERP::OOM::Schema';
1;
To create a new instance of your schema, pass the OpenERP connection details in the call to new()
.
use MyApp;
my $schema = MyApp->new(
openerp_connect => {
host => 'localhost',
dbname => 'openerp_db',
username => 'admin',
password => 'admin',
}
);
Classes
A typical class definition is as follows:
package MyApp::Class::Partner;
use OpenERP::OOM::Class;
object_type 'MyApp::Object::Company';
1;
From your schema, you can then access classes.
my $class = $schema->class('Partner');
The class provides methods to search, retrieve, and create objects.
Objects
package MyApp::Object::Partner;
use OpenERP::OOM::Object;
openerp_model 'res.partner';
has 'name' => (isa=>'Str', is=>'rw');
1;
Objects are created and retrieved from the class:
my $partner = $schema->class('Partner')->create({
name => 'My Partner',
});
foreach my $partner ($schema->class->('Partner')->search) {
say $partner->name;
}
__END__