[MODULE] ~reset
authorLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Wed, 24 Apr 2019 08:43:50 +0000 (10:43 +0200)
committerLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Wed, 24 Apr 2019 08:43:50 +0000 (10:43 +0200)
15 files changed:
__init__.py
__openerp__.py
cyclofficine_ivry.py [deleted file]
data/base.xml
data/members.deb.dependencies [deleted file]
data/members.import [deleted file]
data/members.xml [deleted symlink]
data/membership.xml [deleted file]
data/partner.xml [deleted file]
data/product.xml [deleted file]
data/products_categories.xml [new file with mode: 0644]
data/products_products.xml [new file with mode: 0644]
static/src/img/icon.png [new file with mode: 0644]
static/src/img/logo.png [new file with mode: 0644]
view/members.xml

index e85a6a4..833a3fa 100644 (file)
@@ -1,3 +1,27 @@
 # -*- coding: utf-8 -*-
+##############################################################################
+#
+#    cyclofficine_ivry module for OpenERP, Custom module for La Cyclofficine
+#    de ivry
 
-import cyclofficine_ivry
+#    Copyright (C) 2019 cyclofficine_ivry
+#    (<http://cyclocoop.org/index.php/les-ateliers/ivry-sur-seine/>)
+#
+#    This file is a part of cyclofficine_ivry
+#
+#    cyclofficine_ivry is free software: you can redistribute it and/or
+#    modify it under the terms of the GNU General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or (at
+#    your option) any later version.
+#
+#    cyclofficine_ivry is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
index 2332135..5d2e317 100644 (file)
@@ -1,31 +1,52 @@
 # -*- coding: utf-8 -*-
+##############################################################################
+#
+#    cyclofficine_ivry module for OpenERP, Custom module for La Cyclofficine
+#    d'Ivry
+#
+#    Copyright (C) 2019 cyclofficine_ivry
+#    (<http://cyclocoop.org/index.php/les-ateliers/ivry-sur-seine/>)
+#
+#    This file is a part of cyclofficine_ivry
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
 
 {
-       'name': 'Cyclofficine Ivry',
-       'version': '2013.10.25',
-       'category': 'Association',
-       'complexity': "normal",
-       'description': """
-Cyclofficine Ivry
-=================
+    'name': 'Custom Cyclofficine d\'Ivry',
+    'version': '0.1',
+    'category': 'Association',
+    'complexity': "normal",
+    'description': """
+This module is a profile module for Cyclofficine d'Ivry
+=======================================================
 
+It installs the profile for bike co-ops to manage some features like:
+    * search customers by member identifier and membership informations in customers views;
+    * import initial datas;
+    * …
     """,
-       'author': 'Cyclofficine',
-       'website': 'http://cyclocoop.org',
-       'depends': [
-               'bikecoop',
-               'bikecoop_l10n_fr',
-               'remembership',
-        ],
-       'update_xml': [
-               'data/partner.xml',
-               'data/base.xml',
-               'data/product.xml',
-               'data/membership.xml',
-               'data/members.xml',
-               'view/members.xml',
-        ],
-       'installable': True,
-       'auto_install': False,
-       'images': [],
+    'author': 'La Cyclofficine d\'Ivry',
+    'website': 'http://cyclocoop.org/index.php/les-ateliers/ivry-sur-seine',
+    'depends': [
+        'account_cancel',
+        'bikecoop',
+        'bikecoop_l10n_fr',
+        'nrt_point_of_sale',
+    ],
+    'init_xml': [
+    ],
+    'update_xml': [
+        'data/base.xml',
+        'data/products_categories.xml',
+        'data/products_products.xml',
+        'sec/data/members.xml',
+        'sec/data/users.xml',
+        'view/members.xml',
+    ],
+    'installable': True,
+    'auto_install': False,
+    'images': [],
 }
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/cyclofficine_ivry.py b/cyclofficine_ivry.py
deleted file mode 100644 (file)
index 3b20220..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from openerp.osv import osv
-from openerp.osv import fields
-import netsvc
-
-
-class Partner(osv.osv):
-       _inherit = 'res.partner'
-       _order = 'member_ident'
-       _columns = {
-               'member_ident': fields.integer('Member identifier'),
-        }
-
-Partner()
-
-class account_invoice(osv.osv):
-       _inherit = 'account.invoice'
-       def draft2open(self, cr, uid, ids):
-               print ("DEV: [account_invoice] [draft2open]: %s" % str([uid, ids]))
-               wf_service = netsvc.LocalService("workflow")
-               wf_service.trg_validate(uid, 'account.invoice', ids[0], 'invoice_open', cr)
-               return ids
-
-account_invoice()
index b700e0d..9d65e69 100644 (file)
@@ -1,25 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <openerp>
-       <data>
-               <record id="base.main_partner" model="res.partner">
-                       <field name="category_id" eval="[(6, 0, [ref('res_partner_category_bike_workshop')])]" />
-                       <field name="city">PARIS</field>
-                       <field name="email">ivry@cyclocoop.org</field>
-                       <field name="is_company">True</field>
-                       <field name="name">Cyclofficine d'Ivry</field>
-                       <field name="phone">(+33)</field>
-                       <field name="street">6, bd de Brandebourg</field>
-                       <field name="street2"></field>
-                       <field name="type">default</field>
-                       <field name="website">http://cyclocoop.org</field>
-                       <field name="zip">94200</field>
-                       <field search="[('name','=','France')]" model="res.country" name="country_id" />
-                </record>
-               <record id="base.main_company" model="res.company">
-                       <field name="currency_id" ref="base.EUR"/>
-                       <field name="name">Cyclofficine d'Ivry</field>
-                       <field name="partner_id" ref="base.main_partner"/>
-                       <field name="rml_footer"></field>
-                       <field name="rml_header1">Atelier vélo coopératif</field>
-                </record>
-        </data>
- </openerp>
+    <data>
+        <record id="base.main_partner" model="res.partner">
+            <field name="name">La Cyclofficine d'Ivry</field>
+            <field name="website">cyclocoop.org</field>
+            <field name="street">6 boulevard Brandebourg</field>
+            <field name="street2"></field>
+            <field name="zip">94200</field>
+            <field name="city">IVRY-SUR-SEINE</field>
+            <field name="phone">09 72 38 67 65</field>
+            <field name="mobile">06 48 89 89 21</field>
+            <field name="fax"></field>
+            <field name="email">ivry@cyclocoop.org</field>
+            <field model="res.country" name="country_id" ref="base.fr"/>
+        </record>
+
+        <record id="base.main_company" model="res.company">
+            <field name="name">La Cyclofficine d'Ivry</field>
+            <field name="partner_id" ref="base.main_partner"/>
+            <field name="rml_header1"></field>
+            <field name="siret">531975290 000 36</field>
+            <field name="ape">9499Z</field>
+            <field name="rml_header1">La Cyclofficine c'est ma coopine!</field>
+            <field name="rml_footer">N° SIRET : 531975290 000 36 - Code NAF : 9499Z</field>
+            <field name="currency_id" ref="base.EUR"/>
+        </record>
+
+
+        <record id="base.res_bank_1" model="res.bank">
+            <field name="name">Crédit coopératif Paris Alesia</field>
+            <field name="rib_code">42559</field>
+            <field name="bic">CCOPFRPPXXX</field>
+            <field name="street">99 rue de la Tombe-Issoire</field>
+            <field name="zip">75014</field>
+            <field name="city">PARIS</field>
+            <field model="res.country" name="country" ref="base.fr"/>
+        </record>
+        <record id="main_partner_bank" model="res.partner.bank">
+            <field name="partner_id" ref="base.main_partner"/>
+            <field name="state">iban</field>
+            <field name="bank_code">42559</field>
+            <field name="office">10000</field>
+            <field name="rib_acc_number">08012912645</field>
+            <field name="acc_number">FR76 4255 9100 0008 0129 1264 506</field>
+            <field name="key">06</field>
+            <field name="footer" eval="True"/>
+            <field name="owner_name">La Cyclofficine d'Ivry</field>
+            <field name="street">6 boulevard Brandebourg</field>
+            <field name="zip">94200</field>
+            <field name="city">IVRY-SUR-SEINE</field>
+            <field name="bank" ref="base.res_bank_1"/>
+            <field name="bank_name">Crédit coopératif Paris Alésia</field>
+            <field name="bank_bic">42559</field>
+            <field model="res.country" name="country_id" ref="base.fr"/>
+            <field name="journal_id" model="account.journal" search="[('code', '=', 'BNK2')]"/>
+        </record>
+
+        <record id="base.main_company" model="res.company">
+            <field name="bank_ids" eval="[(6,0,[ref('main_partner_bank')])]"/>
+        </record>
+    </data>
+</openerp>
diff --git a/data/members.deb.dependencies b/data/members.deb.dependencies
deleted file mode 100644 (file)
index d2b2419..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-libtext-csv-perl
-libtext-trim-perl
-libxml-generator-perl
diff --git a/data/members.import b/data/members.import
deleted file mode 100755 (executable)
index ea2fdd0..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-#!/usr/bin/perl
-our $partner = "cyclofficine_ivry";
-
-our $VERSION = '2013.10.27';
-use strict;
-use warnings FATAL => qw(all);
-use utf8;
-use open qw/:std :utf8/;
-require Data::Dumper;
-require Encode;
-require IO::Wrap;
-require Text::CSV;
-#require Text::CSV::Encoded;
-require XML::Generator;
-require Text::Trim;
-
-sub parse_date (@) {
-       ($_) = @_;
-       my ($jj,$mm,undef,$yy) = ($_ =~ m{^\s*([0-3]?[0-9])\s*/\s*([0-1]?[0-9])\s*/\s*(20)?([0-9][0-9])\s*$});
-       return "20$yy-$mm-$jj";
- }
-sub parse_amount (@) {
-       my ($_) = @_;
-       my %amounts =
-        ( "gratuit" => 0
-        , "Gratuit" => 0
-        , "offert"  => 0
-        , "Offert"  => 0
-        , "?"       => 0
-        );
-       $_ = Text::Trim::trim($_);
-       if (exists $amounts{$_}) {
-               return $amounts{$_};
-        }
-       else {
-               ($_) = ($_ =~ m{^\s*([0-9]+),00\s*€?.$});
-               return $_;
-        }
- }
-sub parse_payment_mean (@) {
-       ($_) = @_;
-       my %payment_means =
-        ( "Espèces" => "cash"
-        , "Offert"  => "cash"
-        , "Chèque"  => "bank"
-        );
-       $_ = Text::Trim::trim($_);
-       return exists $payment_means{$_}
-        ? $payment_means{$_}
-        : "cash";
- }
-sub parse_discount ($) {
-       ($_) = @_;
-       my %discounts =
-        ( "Chômeur"          => "unemployed"
-        , "Chmeur"           => "unemployed"
-        , "Atelier vélo IdF" => "velorution_idf"
-        , "Étudiant"         => "student"
-        , "Etudiant"         => "student"
-        , "etudiant"         => "student"
-        , "Retraité"         => "retired"
-        );
-       $_ = Text::Trim::trim($_);
-       return exists $discounts{$_}
-        ? $discounts{$_}
-        : "standard";
- }
-sub parse_gender (@) {
-       ($_) = @_;
-       my %genders =
-        ( "Ass." => "association"
-        , "M."   => "male"
-        , "Mme"  => "female"
-        , "Mme." => "female"
-        );
-       $_ = Text::Trim::trim($_);
-       return exists $genders{$_}
-        ? $genders{$_}
-        : undef;
- }
-
-our $last_number = -1;
-our $greatest_number = -1;
-sub member_of_csv_line (@) {
-       my ($members, $csv_line, $csv_lines_rejected, $csv_lines_to_reparse) = @_;
-       print STDERR ("member_of_csv_line: csv_line=".Data::Dumper::Dumper($csv_line));
-       my $number = Text::Trim::trim($csv_line->{number});
-       if (not $number) {
-               push @$csv_lines_rejected, $csv_line;
-        }
-       else {
-               my $member = {};
-               if (not $number or not ($number =~ m/^[0-9]+$/)) {
-                       if (defined $csv_lines_to_reparse) {
-                               push @$csv_lines_to_reparse, $csv_line;
-                               return;
-                        }
-                       else {
-                               $greatest_number = $greatest_number + 1;
-                               print STDERR "WARNING: renumérotation: ".($number?$number:"undef")." -> $greatest_number\n";
-                               $csv_line->{comment}
-                                =($csv_line->{comment}?"$csv_line->{comment}. ":"")
-                                ."(n° malformé d'origine : ".($number?$number:"undef").")";
-                               $number = "$greatest_number";
-                        }
-                }
-               if ($number =~ m/^[0-9]+$/) {
-                       $number = $number + 0;
-                       if ($last_number + 1 != $number + 0) {
-                               print STDERR "WARNING: discontinuité: attendu=".($last_number + 1)." eu=".($number + 0)."\n";
-                        }
-                       $last_number = $number;
-                       $greatest_number = $number
-                               if $number > $greatest_number;
-                       
-                       if ($csv_line->{name} or $csv_line->{email}) {
-                               if (exists $members->{$number}) {
-                                       $member = $members->{$number};
-                                }
-                               else {
-                                       $member = {};
-                                       $members->{$number} = $member;
-                                }
-                               $member->{number} = $number;
-                               $member->{name}
-                                = $csv_line->{name}
-                                       unless $member->{name};
-                               $member->{firstname}
-                                = $csv_line->{firstname}
-                                       unless $member->{firstname};
-                               $member->{email}
-                                = $csv_line->{email}
-                                       unless $member->{email};
-                               $member->{cotisations}
-                                = []
-                                       unless exists $member->{cotisations};
-                               push @{$member->{cotisations}},
-                                { amount   => parse_amount($csv_line->{cotisation_amount})
-                                , date     => parse_date($csv_line->{cotisation_date})
-                                , discount => parse_discount($csv_line->{cotisation_discount})
-                                , mean     => parse_payment_mean($csv_line->{cotisation_mean})
-                                };
-                               $member->{zip}
-                                =($csv_line->{zip}
-                                ? $csv_line->{zip}
-                                : undef)
-                                       unless $member->{zip};
-                               $member->{gender}
-                                =($csv_line->{gender}
-                                ? parse_gender($csv_line->{gender})
-                                : undef)
-                                       unless $member->{gender};
-                               $member->{city}
-                                =($csv_line->{city}
-                                ? $csv_line->{city}
-                                : ($member->{zip} and ($member->{zip} =~ m/^750[0-2][0-9]$/) ? "Paris" : undef))
-                                unless $member->{city};
-                               $member->{country}
-                                = ($member->{zip} and ($member->{zip} =~ m/^UK$/)
-                                ? "Royaume-Uni"
-                                : "France")
-                                unless $member->{country};
-                               $member->{phone}
-                                =($csv_line->{landline_phone}
-                                ? $csv_line->{landline_phone}
-                                :($csv_line->{mobile_phone}
-                                ? $csv_line->{mobile_phone}
-                                : undef))
-                                       unless $member->{phone};
-                               $member->{street}
-                                =($csv_line->{street}
-                                ? $csv_line->{street}
-                                : undef)
-                                       unless $member->{street};
-                               $member->{comment}
-                                =($csv_line->{comment}
-                                ? $csv_line->{comment}
-                                : undef)
-                                       unless $member->{comment};
-                        }
-                       else {
-                               push @$csv_lines_rejected, $csv_line;
-                        }
-                }
-        }
- }
-sub xml_of_member (@) {
-       my ($xml, $member, $xml_data, $xml_data_noupdate) = @_;
-       print STDERR ("xml_of_member: member=".Data::Dumper::Dumper($member));
-       push @$xml_data, $xml->record
-        ( { id    => "res_partner_${partner}_".$member->{number}
-                , model => "res.partner"
-                }
-        , $xml->field({name => "name"}, $member->{name} . ($member->{firstname} ? " ".$member->{firstname} : ""))
-        , $xml->field({name => "member_ident"}, $member->{number})
-        , $xml->field({name => "type"}, "default")
-        , ($member->{zip}    ? $xml->field({name => "zip"}, $member->{zip}) : ())
-        , ($member->{city}   ? $xml->field({name => "city"}, $member->{city}) : ())
-        , ($member->{country}? $xml->field({name => "country_id", model => "res.country", search => "[('name','=','".$member->{country}."')]"}) : ())
-        , ($member->{email}  ? $xml->field({name => "email"}, $member->{email}) : ())
-        , ($member->{phone}  ? $xml->field({name => "phone"}, $member->{phone}) : ())
-        , ($member->{street} ? $xml->field({name => "street"}, $member->{street}) : ())
-        , ($member->{comment}? $xml->field({name => "comment"}, $member->{comment}) : ())
-        );
-       die unless $member->{cotisations};
-       foreach my $cotisation (@{$member->{cotisations}}) {
-               push @$xml_data_noupdate, $xml->function
-                ( { model => "account.invoice"
-                        , name  => "pay_and_reconcile"
-                        }
-                       , $xml->xmlcmnt('ids')
-                       , $xml->function
-                                ( { model => "account.invoice"
-                                        , name  => "draft2open"
-                                        }
-                                , $xml->function
-                                        ( { model => "res.partner"
-                                                , name  => "create_membership_invoice"
-                                                }
-                                        , $xml->xmlcmnt('partner_id')
-                                        , $xml->value({eval => "ref('res_partner_${partner}_".$member->{number}."')"})
-                                        , $xml->xmlcmnt('product_id')
-                                        , $xml->value({eval => "ref('product_".$cotisation->{discount}."_member')"})
-                                        , $xml->xmlcmnt('context')
-                                        , $xml->value({eval => "{'amount':".$cotisation->{amount}.", 'date_from':'".$cotisation->{date}."'}"})
-                                        )
-                                )
-                       , $xml->xmlcmnt('pay_amount')
-                       , $xml->value ({eval => "$cotisation->{amount}"})
-                       , $xml->xmlcmnt('pay_account_id')
-                       , $xml->value ({model => "account.account", search => "[('name', '=', 'Cash')]"})
-                       , $xml->xmlcmnt("mean: $cotisation->{mean}")
-                       , $xml->xmlcmnt('period_id')
-                       , $xml->value ({model => "account.period", search => "[('name', '=', time.strftime('%m/%Y'))]"})
-                       , $xml->xmlcmnt('pay_journal_id')
-                       , $xml->value ({model => "account.journal", search => "[('name', '=', 'Cash')]"})
-                       , $xml->xmlcmnt('writeoff_acc_id')
-                       , $xml->value ({model => "account.account", search => "[('name', '=', 'Cash')]"})
-                       , $xml->xmlcmnt('writeoff_period_id')
-                       , $xml->value ({model => "account.period", search => "[('name', '=', time.strftime('%m/%Y'))]"})
-                       , $xml->xmlcmnt('writeoff_journal_id')
-                       , $xml->value ({model => "account.journal", search => "[('name', '=', 'Cash')]"})
-                       , $xml->xmlcmnt('context')
-                       , $xml->value ({eval => "{}"})
-                       , $xml->xmlcmnt('name')
-                       , $xml->value ({eval => "str('Import de paiement automatique')"})
-                );
-        }
- }
-
-sub main () {
-       my $csv = Text::CSV->new
-        ({binary => 1
-        , eol => $/
-        , sep_char => ';'
-        });
-       my $xml = XML::Generator->new
-        ( escape      => 'always'
-        , conformance => 'strict'
-        , empty       => 'self'
-        , pretty      => 2
-        );
-       my $in = IO::Wrap::wraphandle(\*STDIN);
-       
-       my $csv_head = $csv->getline($in);
-       #print STDERR ("head: ", join("|", @$csv_head), "\n");
-       #$csv->column_names(@$csv_head);
-       $csv->column_names (qw (
-        number
-        cotisation_date
-        cotisation_amount
-        cotisation_mean
-        cotisation_discount
-        gender
-        firstname
-        name
-        birth
-        email
-        landline_phone
-        mobile_phone
-        street
-        zip
-        city
-        comment
-        ));
-       my $xml_data = [];
-       my $xml_data_noupdate = [];
-       my $csv_lines_rejected = [];
-       my $csv_lines_to_reparse = [];
-       my $members = {};
-       while (my $csv_line = $csv->getline_hr($in)) {
-               #print STDERR ("csv_line: ", join("|", @$csv_line), "\n");
-               member_of_csv_line($members, $csv_line, $csv_lines_rejected, $csv_lines_to_reparse);
-        }
-       print STDERR "csv_lines_to_reparse=".Data::Dumper::Dumper($csv_lines_to_reparse);
-       foreach my $csv_line (@$csv_lines_to_reparse) {
-               member_of_csv_line($members, $csv_line, $csv_lines_rejected, undef);
-        }
-       foreach my $number (sort {$a <=> $b} (keys %$members)) {
-               xml_of_member($xml, $members->{$number}, $xml_data, $xml_data_noupdate);
-        }
-       push @$xml_data_noupdate, $xml->record
-        ( { id    => "remembership.member_ident_sequence"
-                , model => "ir.sequence"
-                }
-        , $xml->field({name => "number_next"}, $greatest_number + 1)
-        );
-       binmode STDOUT, ':utf8';
-       print $xml->openerp
-        ( $xml->data(@$xml_data)
-        , $xml->data
-                ( {noupdate => "1"}
-                , @$xml_data_noupdate )
-        );
-       
-       my $out = IO::Wrap::wraphandle(\*STDERR);
-       print STDERR "csv_lines_rejected=".Data::Dumper::Dumper($csv_lines_rejected);
- }
-
-main;
diff --git a/data/members.xml b/data/members.xml
deleted file mode 120000 (symlink)
index 80cfc17..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../sec/data/members.xml
\ No newline at end of file
diff --git a/data/membership.xml b/data/membership.xml
deleted file mode 100644 (file)
index e231e1c..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<openerp>
-       <data>
-               <record id="product_standard_member" model="product.product">
-                       <field name="name">Standard member</field>
-                       <field name="list_price">25.00</field>
-                       <field name="standard_price">0.00</field>
-                       <field name="uom_id"    ref="product.product_uom_unit"/>
-                       <field name="uom_po_id" ref="product.product_uom_unit"/>
-                       <field name="type">service</field>
-                       <field name="categ_id" ref="product_category_other"/>
-                       <field name="supply_method">produce</field>
-                       <field name="membership">True</field>
-                       <field name="membership_date2date">True</field>
-                </record>
-               <record id="product_student_member" model="product.product">
-                       <field name="name">Student member</field>
-                       <field name="list_price">15.00</field>
-                       <field name="standard_price">0.00</field>
-                       <field name="uom_id"    ref="product.product_uom_unit"/>
-                       <field name="uom_po_id" ref="product.product_uom_unit"/>
-                       <field name="type">service</field>
-                       <field name="categ_id" ref="product_category_other"/>
-                       <field name="supply_method">produce</field>
-                       <field name="membership">True</field>
-                       <field name="membership_date2date">True</field>
-                </record>
-               <record id="product_unemployed_member" model="product.product">
-                       <field name="name">Unemployed member</field>
-                       <field name="list_price">15.00</field>
-                       <field name="standard_price">0.00</field>
-                       <field name="uom_id"    ref="product.product_uom_unit"/>
-                       <field name="uom_po_id" ref="product.product_uom_unit"/>
-                       <field name="type">service</field>
-                       <field name="categ_id" ref="product_category_other"/>
-                       <field name="supply_method">produce</field>
-                       <field name="membership">True</field>
-                       <field name="membership_date2date">True</field>
-                </record>
-               <record id="product_retired_member" model="product.product">
-                       <field name="name">Retired member</field>
-                       <field name="list_price">15.00</field>
-                       <field name="standard_price">0.00</field>
-                       <field name="uom_id"    ref="product.product_uom_unit"/>
-                       <field name="uom_po_id" ref="product.product_uom_unit"/>
-                       <field name="type">service</field>
-                       <field name="categ_id" ref="product_category_other"/>
-                       <field name="supply_method">produce</field>
-                       <field name="membership">True</field>
-                       <field name="membership_date2date">True</field>
-                </record>
-               <record id="product_velorution_idf_member" model="product.product">
-                       <field name="name">Vélorution ÎdF member</field>
-                       <field name="list_price">15.00</field>
-                       <field name="standard_price">0.00</field>
-                       <field name="uom_id"    ref="product.product_uom_unit"/>
-                       <field name="uom_po_id" ref="product.product_uom_unit"/>
-                       <field name="type">service</field>
-                       <field name="categ_id" ref="product_category_other"/>
-                       <field name="supply_method">produce</field>
-                       <field name="membership">True</field>
-                       <field name="membership_date2date">True</field>
-                </record>
-        </data>
- </openerp>
diff --git a/data/partner.xml b/data/partner.xml
deleted file mode 100644 (file)
index 0ede69d..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<openerp>
-       <data>
-               <record id="res_partner_category_organisation" model="res.partner.category">
-                       <field name="name">Organisation</field>
-                </record>
-               <record id="res_partner_category_company" model="res.partner.category">
-                       <field name="name">Company</field>
-                </record>
-               <record id="res_partner_category_association" model="res.partner.category">
-                       <field name="name">Association</field>
-                       <field name="parent_id" ref="res_partner_category_organisation"/>
-                </record>
-               <record id="res_partner_category_bike_workshop" model="res.partner.category">
-                       <field name="name">Bike workshop</field>
-                       <field name="parent_id" ref="res_partner_category_association"/>
-                </record>
-               <record id="res_partner_category_member" model="res.partner.category">
-                       <field name="name">Member</field>
-                </record>
-        </data>
- </openerp>
diff --git a/data/product.xml b/data/product.xml
deleted file mode 100644 (file)
index 5d36b44..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<openerp>
-       <data>
-               <record id="product_category_other" model="product.category">
-                       <field name="name">Others</field>
-                </record>
-        </data>
- </openerp>
diff --git a/data/products_categories.xml b/data/products_categories.xml
new file mode 100644 (file)
index 0000000..7d2d3a2
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+  <data>
+    <record id="product_category_RAC" model="product.category">
+      <field name="parent_id" ref="product.product_category_all"/>
+      <field model="account.account" name="property_account_expense_categ" search="[('code', '=', '607100')]"/>
+      <field model="account.account" name="property_account_income_categ" search="[('code', '=', '707100')]"/>
+      <field name="name">Tous</field>
+    </record>
+    <record id="product_category_COT" model="product.category">
+      <field name="parent_id" ref="product_category_RAC"/>
+      <field model="account.account" name="property_account_income_categ" search="[('code', '=', '756000')]"/>
+      <field name="name">Cotisations</field>
+    </record>
+    <record id="product_category_ANI" model="product.category">
+      <field name="parent_id" ref="product_category_RAC"/>
+      <field model="account.account" name="property_account_income_categ" search="[('code', '=', '706000')]"/>
+      <field name="name">Animations</field>
+    </record>
+  </data>
+</openerp>
+
diff --git a/data/products_products.xml b/data/products_products.xml
new file mode 100644 (file)
index 0000000..53596d9
--- /dev/null
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+  <data>
+    <record id="product_product_AP" model="product.product">
+      <field name="list_price">1.0</field>
+      <field name="name">Autre produit</field>
+      <field name="type">service</field>
+      <field name="default_code">AP</field>
+      <field eval="False" name="purchase_ok"/>
+      <field name="categ_id" ref="product_category_RAC"/>
+      <field eval="False" name="sale_ok"/>
+    </record>
+    <record id="product_product_CI" model="product.product">
+      <field name="supply_method">produce</field>
+      <field eval="True" name="membership_date2date"/>
+      <field name="list_price">15.0</field>
+      <field name="name">Cotisation individuelle</field>
+      <field name="categ_id" ref="product_category_COT"/>
+      <field name="standard_price">0.0</field>
+      <field eval="True" name="membership"/>
+      <field name="default_code">CI</field>
+      <field eval="False" name="purchase_ok"/>
+      <field name="type">service</field>
+      <field eval="True" name="sale_ok"/>
+    </record>
+    <record id="product_product_CF" model="product.product">
+      <field name="supply_method">produce</field>
+      <field eval="True" name="membership_date2date"/>
+      <field name="list_price">35.0</field>
+      <field name="name">Cotisation familliale</field>
+      <field name="categ_id" ref="product_category_COT"/>
+      <field name="standard_price">0.0</field>
+      <field eval="True" name="membership_grouped"/>
+      <field eval="True" name="membership"/>
+      <field name="default_code">CF</field>
+      <field eval="False" name="purchase_ok"/>
+      <field name="type">service</field>
+      <field eval="True" name="sale_ok"/>
+    </record>
+    <record id="product_product_ATM" model="product.product">
+      <field name="supply_method">produce</field>
+      <field name="list_price">1.0</field>
+      <field name="name">Atelier d&#8217;auto-r&#233;paration</field>
+      <field name="type">service</field>
+      <field name="default_code">ATM</field>
+      <field eval="False" name="purchase_ok"/>
+      <field name="categ_id" ref="product_category_ANI"/>
+      <field eval="True" name="sale_ok"/>
+    </record>
+    <record id="product_product_FOR" model="product.product">
+      <field name="supply_method">produce</field>
+      <field name="list_price">1.0</field>
+      <field name="name">Formations</field>
+      <field name="type">service</field>
+      <field name="default_code">FOR</field>
+      <field eval="False" name="purchase_ok"/>
+      <field name="categ_id" ref="product_category_ANI"/>
+      <field eval="True" name="sale_ok"/>
+    </record>
+  </data>
+</openerp>
+
diff --git a/static/src/img/icon.png b/static/src/img/icon.png
new file mode 100644 (file)
index 0000000..ded842d
Binary files /dev/null and b/static/src/img/icon.png differ
diff --git a/static/src/img/logo.png b/static/src/img/logo.png
new file mode 100644 (file)
index 0000000..fa7169c
Binary files /dev/null and b/static/src/img/logo.png differ
index 9ac5a06..59d1c5e 100644 (file)
@@ -1,17 +1,19 @@
 <openerp>
-       <data>
-               <record id="view_bikecoop_members_form" model="ir.ui.view">
-                       <field name="name">res.partner.form</field>
-                       <field name="model">res.partner</field>
-                       <field name="inherit_id" ref="bikecoop.view_bikecoop_members_form"/>
-                       <field name="arch" type="xml">
-                               <xpath expr="//field[@name='gender_id']" position="replace">
-                                       <field name="gender_id" domain="[('domain','=', 'gender')]" placeholder="Other, Female or Male" attrs="{'required':False}"/>
-                                </xpath>
-                               <xpath expr="//field[@name='occupation_id']" position="replace">
-                                       <field name="occupation_id" placeholder="Student/Employee/Other" domain="[('domain','=', 'occupation')]" attrs="{'required':False}"/>
-                                </xpath>
-                        </field>
-                </record>
-        </data>
- </openerp>
+    <data>
+        <record id="view_bikecooop_members_form" model="ir.ui.view">
+            <field name="name">res.partner.form</field>
+            <field name="model">res.partner</field>
+            <field name="inherit_id" ref="bikecoop.view_bikecoop_members_form"/>
+            <field name="arch" type="xml">
+                <xpath expr="//field[@name='zip']" position="attributes">
+                    <attribute name="required">1</attribute>
+                </xpath>
+                <xpath expr="//field[@name='nationality_id']" position="replace">
+                    <field name="nationality_id" placeholder="France" attrs="{'required': 0}"/>
+                </xpath>
+                <xpath expr="//field[@name='occupation_id']" position="replace"/>
+                <xpath expr="//notebook[@name='Volunteer activities']" position="replace"/>
+            </field>
+        </record>
+    </data>
+</openerp>