Download - OpenERP and Perl
![Page 1: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/1.jpg)
OpenERP and Perl Jon Allen (JJ) – [email protected]
![Page 2: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/2.jpg)
www.opusvl.com!
OpenERP
![Page 3: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/3.jpg)
www.opusvl.com!
enterprise"resource"planning
![Page 4: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/4.jpg)
www.opusvl.com!
?
![Page 5: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/5.jpg)
www.opusvl.com!
core business"applications
![Page 6: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/6.jpg)
www.opusvl.com!
sales crm"manufacturing"
purchasing
![Page 7: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/7.jpg)
www.opusvl.com!
accounting
![Page 8: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/8.jpg)
www.opusvl.com!
integrated accounting
![Page 9: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/9.jpg)
www.opusvl.com!
![Page 10: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/10.jpg)
www.opusvl.com!
Perl?
![Page 11: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/11.jpg)
www.opusvl.com!
OpenERP
website
intranet
![Page 12: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/12.jpg)
www.opusvl.com!
api
![Page 13: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/13.jpg)
www.opusvl.com!
XML-RPC
![Page 14: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/14.jpg)
www.opusvl.com!
single"requests
![Page 15: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/15.jpg)
www.opusvl.com!
stateless
![Page 16: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/16.jpg)
www.opusvl.com!
object"model
![Page 17: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/17.jpg)
www.opusvl.com!
relationships
![Page 18: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/18.jpg)
www.opusvl.com!
one2manyres.partner
res.partner.address
res.companymany2one
![Page 19: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/19.jpg)
www.opusvl.com!
database
![Page 20: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/20.jpg)
www.opusvl.com!
ORM
![Page 21: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/21.jpg)
www.opusvl.com!
object"relational"mapper
![Page 22: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/22.jpg)
www.opusvl.com!
OOM
![Page 23: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/23.jpg)
www.opusvl.com!
object to"object"
mapper
![Page 24: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/24.jpg)
www.opusvl.com!
OpenERP::OOM
![Page 25: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/25.jpg)
www.opusvl.com!
Moose
![Page 26: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/26.jpg)
www.opusvl.com!
object model
![Page 27: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/27.jpg)
www.opusvl.com!
OpenERP
Schema
Class Class Class
Object Object
![Page 28: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/28.jpg)
www.opusvl.com!
# Code layout for module using OpenERP::OOM
lib/ MyApp.pm # Schema definition MyApp/ Class/ # Class definitions Company.pm Partner.pm Object/ # Object definitions Company.pm Partner.pm
![Page 29: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/29.jpg)
www.opusvl.com!
schema
![Page 30: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/30.jpg)
www.opusvl.com!
# MyApp.pm
package MyApp;
use Moose;extends 'OpenERP::OOM::Schema';
1;
![Page 31: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/31.jpg)
www.opusvl.com!
connection
![Page 32: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/32.jpg)
www.opusvl.com!
use MyApp;
my $schema = MyApp->new( openerp_connect => { host => 'localhost', dbname => 'jj_test_1', username => 'admin', password => 'admin', },);
![Page 33: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/33.jpg)
www.opusvl.com!
classes
![Page 34: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/34.jpg)
www.opusvl.com!
# MyApp/Class/Company.pm
package MyApp::Class::Company;use OpenERP::OOM::Class;
object_type 'MyApp::Object::Company';
# Class methods go here
1;
![Page 35: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/35.jpg)
www.opusvl.com!
objects
![Page 36: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/36.jpg)
www.opusvl.com!
fields
![Page 37: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/37.jpg)
www.opusvl.com!
relationships
![Page 38: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/38.jpg)
www.opusvl.com!
partner"has many"addresses
![Page 39: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/39.jpg)
www.opusvl.com!
package MyApp::Object::Partner;use OpenERP::OOM::Object;
openerp_model 'res.partner';has 'name' => (isa=>'Str', is=>'rw');
relationship 'addresses' => ( key => 'address', # OpenERP field type => 'one2many', # OpenERP type class => 'PartnerAddress',);
![Page 40: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/40.jpg)
www.opusvl.com!
object "creation
![Page 41: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/41.jpg)
www.opusvl.com!
# Schema -> Class -> Class Method
my $partner = $schema->class('Partner')-> create({ name => 'JJ' });
# Updates
$partner->update({name => 'Jon Allen'});say $partner->name;
![Page 42: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/42.jpg)
www.opusvl.com!
search
![Page 43: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/43.jpg)
www.opusvl.com!
# Single result
my $jj = $schema->class('Partner')-> find(['name' => '=' => 'JJ']);
# Multiple results
my @partners = $schema->class('Partner')-> search(['name' => 'like' => 'J']);
![Page 44: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/44.jpg)
www.opusvl.com!
related"objects
![Page 45: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/45.jpg)
www.opusvl.com!
$partner->create_related( 'addresses', { name => '...', street => '...', city => '...', });
![Page 46: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/46.jpg)
www.opusvl.com!
add"methods
![Page 47: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/47.jpg)
www.opusvl.com!
extend OpenERP
objects
![Page 48: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/48.jpg)
www.opusvl.com!
external"data sources
![Page 49: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/49.jpg)
www.opusvl.com!
DBIx::Class
![Page 50: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/50.jpg)
www.opusvl.com!
not just"data
![Page 51: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/51.jpg)
www.opusvl.com!
OpenERP"methods
![Page 52: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/52.jpg)
www.opusvl.com!
workflows
![Page 53: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/53.jpg)
www.opusvl.com!
integrated"accounting
![Page 54: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/54.jpg)
www.opusvl.com!
my $po = $schema->class('PurchaseOrder')-> search([ ... ]);
$po->update({ ... });
# Approve purchase order$po->execute_workflow('purchase_confirm');
# Print (returns PDF)$po->get_report('purchase.order');
![Page 55: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/55.jpg)
www.opusvl.com!
application logic = Perl
![Page 56: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/56.jpg)
www.opusvl.com!
application"data = DBIC
![Page 57: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/57.jpg)
www.opusvl.com!
generic logic "= OpenERP
![Page 58: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/58.jpg)
www.opusvl.com!
generic data "= OpenERP
![Page 59: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/59.jpg)
www.opusvl.com!
many uses
![Page 60: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/60.jpg)
www.opusvl.com!
Catalyst model
![Page 61: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/61.jpg)
www.opusvl.com!
18 months"development
![Page 62: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/62.jpg)
www.opusvl.com!
3 commercial"deployments
![Page 63: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/63.jpg)
www.opusvl.com!
open sourced"today
![Page 64: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/64.jpg)
www.opusvl.com!
http://search.cpan.org/dist/OpenERP-OOM
![Page 65: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/65.jpg)
www.opusvl.com!
questions?
![Page 66: OpenERP and Perl](https://reader030.vdocuments.site/reader030/viewer/2022020101/549226c0b47959763e8b5532/html5/thumbnails/66.jpg)
www.opusvl.com!