[MOV] crm: moved css / js related to salesteam to sales_team module; sale_crm: moved...
authorThibault Delavallée <tde@openerp.com>
Wed, 14 May 2014 12:30:26 +0000 (14:30 +0200)
committerThibault Delavallée <tde@openerp.com>
Wed, 14 May 2014 12:30:26 +0000 (14:30 +0200)
sale and sales_team module.

15 files changed:
addons/crm/__openerp__.py
addons/crm/static/src/css/Makefile [deleted file]
addons/crm/static/src/css/crm.css [deleted file]
addons/crm/static/src/css/crm.sass [deleted file]
addons/crm/static/src/js/crm_case_section.js [deleted file]
addons/crm/views/crm.xml [deleted file]
addons/sale/sale_data.xml
addons/sale/sale_demo.xml
addons/sale_crm/__openerp__.py
addons/sale_crm/sale_crm_data.xml [deleted file]
addons/sale_crm/sale_crm_demo.xml [deleted file]
addons/sales_team/sales_team.xml
addons/sales_team/static/src/css/Makefile [new file with mode: 0644]
addons/sales_team/static/src/css/sales_team.sass [new file with mode: 0644]
addons/sales_team/static/src/js/sales_team.js [new file with mode: 0644]

index 1bf4c61..15544dc 100644 (file)
@@ -92,7 +92,6 @@ Dashboard for CRM will include:
         'base_partner_merge_view.xml',
 
         'sales_team_view.xml',
-        'views/crm.xml',
     ],
     'demo': [
         'crm_demo.xml',
diff --git a/addons/crm/static/src/css/Makefile b/addons/crm/static/src/css/Makefile
deleted file mode 100644 (file)
index a2ced24..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-crm.css: crm.sass
-    sass --trace -t expanded crm.sass:crm.css
diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css
deleted file mode 100644 (file)
index 8999f75..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-@charset "utf-8";
-.openerp .oe_kanban_view .oe_kanban_crm_salesteams {
-  /* Customize width and height of kanban according bootstrap3 */
-  width: 357px;
-  min-height: 254px !important;
-  /* End of customize */
-  cursor: default;
-}
-.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list {
-  position: relative;
-  /* Improved margin to set alignment of list items according bootstrap3 */
-  margin: 10px 0 10px 9px;
-  min-height: 10px;
-}
-.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list div {
-  width: 160px;
-  height: 22px;
-  margin: 0 !important;
-  position: relative;
-  display: inline-block;
-  float: left;
-}
-.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list div a:nth-child(2n) {
-  position: absolute;
-  left: 90px;
-  top: 0;
-}
-.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list div:nth-child(2n) a:nth-child(2n) {
-  left: 110px;
-}
-.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list a:hover {
-  text-decoration: underline !important;
-}
-.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_center {
-  text-align: center;
-  margin: 3px 0;
-}
-.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_center .oe_sum {
-  margin: 0;
-  font-size: 40px;
-}
-.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_center .oe_subsum {
-  font-size: 10px;
-}
-.openerp .oe_kanban_view .oe_salesteams_help {
-  display: inline-block;
-}
-.openerp .oe_kanban_view .oe_kanban_salesteams_avatars {
-  margin-top: 20px;
-}
-.openerp .oe_kanban_view .oe_kanban_salesteams_avatars img {
-  width: 30px;
-  height: 30px;
-  padding-left: 0px;
-  margin-top: 3px;
-  -moz-border-radius: 2px;
-  -webkit-border-radius: 2px;
-  border-radius: 2px;
-  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
-  -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
-}
diff --git a/addons/crm/static/src/css/crm.sass b/addons/crm/static/src/css/crm.sass
deleted file mode 100644 (file)
index 5c70981..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-@charset "utf-8"
-
-.openerp
-    .oe_kanban_view
-        .oe_kanban_crm_salesteams
-            /* Customize width and height of kanban according bootstrap3 */
-            width: 357px
-            min-height: 254px !important
-            /* End of customize */
-            cursor: default
-            .oe_items_list
-                position: relative
-                /* Improved margin to set alignment of list items according bootstrap3 */
-                margin: 10px 0 10px 9px
-                min-height: 10px
-                div
-                    width: 160px
-                    height: 22px
-                    margin: 0 !important
-                    position: relative
-                    display: inline-block
-                    float: left
-                    a:nth-child(2n)
-                        position: absolute
-                        left: 90px
-                        top: 0
-                div:nth-child(2n)
-                    a:nth-child(2n)
-                        left: 110px
-                a:hover
-                    text-decoration: underline !important
-            .oe_center
-                text-align: center
-                margin: 3px 0
-                .oe_sum
-                    margin: 0
-                    font-size: 40px
-                .oe_subsum
-                    font-size: 10px
-        .oe_salesteams_help
-            display: inline-block
-        .oe_kanban_salesteams_avatars
-            margin-top: 20px
-        .oe_kanban_salesteams_avatars
-            img
-                width: 30px
-                height: 30px
-                padding-left: 0px
-                margin-top: 3px
-                -moz-border-radius: 2px
-                -webkit-border-radius: 2px
-                border-radius: 2px
-                -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2)
-                -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2)
-                -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2)
diff --git a/addons/crm/static/src/js/crm_case_section.js b/addons/crm/static/src/js/crm_case_section.js
deleted file mode 100644 (file)
index a7bf7c2..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-openerp.crm = function(openerp) {
-    openerp.web_kanban.KanbanView.include({
-        crm_display_members_names: function() {
-            /*
-             * Set avatar title for members.
-             * In kanban views, many2many fields only return a list of ids.
-             * We can implement return value of m2m fields like [(1,"Adminstration"),...].
-             */
-            var self = this;
-            var members_ids = [];
-
-            // Collect members ids
-            self.$el.find('img[data-member_id]').each(function() {
-                members_ids.push($(this).data('member_id'));
-            });
-
-            // Find their matching names
-            var dataset = new openerp.web.DataSetSearch(self, 'res.users', self.session.context, [['id', 'in', _.uniq(members_ids)]]);
-            dataset.read_slice(['id', 'name']).done(function(result) {
-                _.each(result, function(v, k) {
-                    // Set the proper value in the DOM
-                    self.$el.find('img[data-member_id=' + v.id + ']').attr('title', v.name).tooltip();
-                });
-            });
-        },
-        on_groups_started: function() {
-            var self = this;
-            self._super.apply(self, arguments);
-
-            if (self.dataset.model === 'crm.case.section') {
-                self.crm_display_members_names();
-            }
-        },
-    });
-
-    openerp.web_kanban.KanbanRecord.include({
-        on_card_clicked: function() {
-            if (this.view.dataset.model === 'crm.case.section') {
-                this.$('.oe_kanban_crm_salesteams_list a').first().click();
-            } else {
-                this._super.apply(this, arguments);
-            }
-        },
-    });
-};
diff --git a/addons/crm/views/crm.xml b/addons/crm/views/crm.xml
deleted file mode 100644 (file)
index c28ba72..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- vim:fdn=3:
--->
-<openerp>
-    <data>
-        <template id="assets_backend" name="crm assets" inherit_id="web.assets_backend">
-            <xpath expr="." position="inside">
-                <link rel="stylesheet" href="/crm/static/src/css/crm.css"/>
-                <script type="text/javascript" src="/crm/static/src/js/crm_case_section.js"></script>
-            </xpath>
-        </template>
-    </data>
-</openerp>
index 4438956..4c5347c 100644 (file)
@@ -29,7 +29,7 @@
             <field name="body"><![CDATA[<p>This application lets you create and send quotations and process your sales orders; from delivery to invoicing.</p>
 <p>If you need to manage your sales pipeline (leads, opportunities, phonecalls), the <i>CRM</i> application may be useful. Use the Settings menu to install it.</p>]]></field>
         </record>
-        
+
         <!-- Sale-related subtypes for messaging / Chatter -->
         <record id="mt_order_sent" model="mail.message.subtype">
             <field name="name">Quotation sent</field>
             <field name="description">Quotation confirmed</field>
         </record>
 
+        <!-- Salesteam-related subtypes for messaging / Chatter -->
+        <record id="mt_salesteam_order_sent" model="mail.message.subtype">
+            <field name="name">Quotation Send</field>
+            <field name="sequence">20</field>
+            <field name="res_model">crm.case.section</field>
+            <field name="parent_id" eval="ref('sale.mt_order_sent')"/>
+            <field name="relation_field">section_id</field>
+        </record>
+        <record id="mt_salesteam_order_confirmed" model="mail.message.subtype">
+            <field name="name">Sales Order Confirmed</field>
+            <field name="sequence">21</field>
+            <field name="res_model">crm.case.section</field>
+            <field name="parent_id" eval="ref('sale.mt_order_confirmed')"/>
+            <field name="relation_field">section_id</field>
+        </record>
+
     </data>
 </openerp>
index 2e00195..bcb69f9 100644 (file)
@@ -2,12 +2,24 @@
 <openerp>
     <data noupdate="1">
 
+        <record model="crm.case.section" id="sales_team.section_sales_department">
+            <field name="invoiced_forecast">52700</field>
+            <field name="invoiced_target">60000</field>
+        </record>
+        
+        <record model="crm.case.section" id="sales_team.crm_case_section_1">
+            <field name="invoiced_forecast">36000</field>
+            <field name="invoiced_target">40000</field>
+        </record>
+
         <record id="sale_order_1" model="sale.order">
             <field name="partner_id" ref="base.res_partner_2"/>
             <field name="partner_invoice_id" ref="base.res_partner_2"/>
             <field name="partner_shipping_id" ref="base.res_partner_2"/>
             <field name="user_id" ref="base.user_demo"/>
             <field name="pricelist_id" ref="product.list0"/>
+            <field name="section_id" ref="sales_team.section_sales_department"/>
+            <field name="date_order" eval="(DateTime.today() - relativedelta(months=1)).strftime('%Y-%m-%d %H:%M')"/>
         </record>
 
         <record id="sale_order_line_1" model="sale.order.line">
@@ -47,6 +59,8 @@
             <field name="user_id" ref="base.user_root"/>
             <field name="pricelist_id" ref="product.list0"/>
             <field name="order_policy">manual</field>
+            <field name="section_id" ref="sales_team.section_sales_department"/>
+            <field name="date_order" eval="(DateTime.today() - relativedelta(months=1)).strftime('%Y-%m-%d %H:%M')"/>
         </record>
 
         <record id="sale_order_line_4" model="sale.order.line">
@@ -76,6 +90,7 @@
             <field name="user_id" ref="base.user_root"/>
             <field name="pricelist_id" ref="product.list0"/>
             <field name="order_policy">manual</field>
+            <field name="section_id" ref="sales_team.section_sales_department"/>
         </record>
 
         <record id="sale_order_line_6" model="sale.order.line">
             <field name="partner_shipping_id" ref="base.res_partner_address_25"/>
             <field name="user_id" ref="base.user_root"/>
             <field name="pricelist_id" ref="product.list0"/>
+            <field name="section_id" ref="sales_team.section_sales_department"/>
         </record>
 
         <record id="sale_order_line_8" model="sale.order.line">
             <field name="partner_shipping_id" ref="base.res_partner_2"/>
             <field name="user_id" ref="base.user_demo"/>
             <field name="pricelist_id" ref="product.list0"/>
+            <field name="section_id" ref="sales_team.crm_case_section_1"/>
+            <field name="date_order" eval="(DateTime.today() - relativedelta(months=1)).strftime('%Y-%m-%d %H:%M')"/>
         </record>
 
         <record id="sale_order_line_12" model="sale.order.line">
             <field name="partner_shipping_id" ref="base.res_partner_18"/>
             <field name="user_id" ref="base.user_root"/>
             <field name="pricelist_id" ref="product.list0"/>
+            <field name="section_id" ref="sales_team.crm_case_section_1"/>
         </record>
 
         <record id="sale_order_line_15" model="sale.order.line">
             <field name="user_id" ref="base.user_root"/>
             <field name="pricelist_id" ref="product.list0"/>
             <field name="order_policy">manual</field>
+            <field name="section_id" ref="sales_team.section_sales_department"/>
+            <field name="date_confirm" eval="(DateTime.today() - relativedelta(months=1)).strftime('%Y-%m-%d %H:%M')"/>
         </record>
 
         <record id="sale_order_line_16" model="sale.order.line">
             <field name="user_id" ref="base.user_demo"/>
             <field name="pricelist_id" ref="product.list0"/>
             <field name="order_policy">manual</field>
+            <field name="section_id" ref="sales_team.crm_case_section_1"/>
         </record>
 
         <record id="sale_order_line_20" model="sale.order.line">
@@ -335,5 +357,86 @@ Thanks!</field>
             <field eval="[(4, ref('base.group_sale_salesman'))]" name="groups_id"/>
         </record>
 
+        <!-- coming from sale_crm -->
+        <record id="test_crm_sale_invoice_1" model="account.invoice">
+            <field name="currency_id" ref="base.EUR"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="partner_id" ref="base.res_partner_1"/>
+            <field name="journal_id" ref="account.sales_journal"/>
+            <field name="section_id" ref="sales_team.section_sales_department"/>
+            <field name="state">draft</field>
+            <field name="type">in_invoice</field>
+            <field name="account_id" ref="account.a_recv"/>
+            <field name="name">Test invoice 1</field>
+        </record>
+        <record id="test_crm_sale_invoice_1_line_1" model="account.invoice.line">
+            <field name="name">Basic computer with Dvorak keyboard and left-handed mouse</field>
+            <field name="invoice_id" ref="test_crm_sale_invoice_1"/>
+            <field name="price_unit">250</field>
+            <field name="quantity">1</field>
+            <field name="account_id" ref="account.a_sale"/>
+        </record>
+        <record id="test_crm_sale_invoice_1_line_2" model="account.invoice.line">
+            <field name="name">Little server with raid 1 and 512ECC ram</field>
+            <field name="invoice_id" ref="test_crm_sale_invoice_1"/>
+            <field name="price_unit">800</field>
+            <field name="quantity">2</field>
+            <field name="account_id" ref="account.a_sale"/>
+        </record>
+        <record id="test_crm_sale_invoice_1_line_2" model="account.invoice.line">
+            <field name="name">Server with raid 10 and 2048ECC ram</field>
+            <field name="invoice_id" ref="test_crm_sale_invoice_1"/>
+            <field name="price_unit">4800</field>
+            <field name="quantity">4</field>
+            <field name="account_id" ref="account.a_sale"/>
+        </record>
+        <workflow action="invoice_open" model="account.invoice" ref="test_crm_sale_invoice_1"/>
+        <function model="account.invoice" name="pay_and_reconcile">
+            <!-- ids = -->                    <value eval="[ref('test_crm_sale_invoice_1')]"/>
+            <!-- pay_amount = -->            <value eval="1850"/>
+            <!-- pay_account_id = -->        <value eval="ref('account.cash')"/>
+            <!-- period_id = -->            <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
+            <!-- pay_journal_id = -->        <value eval="ref('account.bank_journal')"/>
+            <!-- writeoff_acc_id = -->        <value eval="ref('account.cash')"/>
+            <!-- writeoff_period_id = -->    <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
+            <!-- writeoff_journal_id = -->    <value eval="ref('account.bank_journal')"/>
+            <!-- context = -->              <value eval="{}"/>
+            <!-- name = -->                 <value eval="str('Payment from ASUStek')"/>
+        </function>
+
+        <!-- Invoice for Indirect Marketing -->
+
+        <record id="test_crm_sale_invoice_2" model="account.invoice">
+            <field name="currency_id" ref="base.EUR"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="partner_id" ref="base.res_partner_1"/>
+            <field name="journal_id" ref="account.sales_journal"/>
+            <field name="section_id" ref="sales_team.crm_case_section_1"/>
+            <field name="state">draft</field>
+            <field name="type">out_invoice</field>
+            <field name="account_id" ref="account.a_recv"/>
+            <field name="name">Test invoice 1</field>
+        </record>
+        <record id="test_crm_sale_invoice_2_line_1" model="account.invoice.line">
+            <field name="name">Basic formation with Dvorak</field>
+            <field name="invoice_id" ref="test_crm_sale_invoice_2"/>
+            <field name="price_unit">500</field>
+            <field name="quantity">1</field>
+            <field name="account_id" ref="account.a_sale"/>
+        </record>
+        <workflow action="invoice_open" model="account.invoice" ref="test_crm_sale_invoice_2"/>
+        <function model="account.invoice" name="pay_and_reconcile">
+            <!-- ids = -->                    <value eval="[ref('test_crm_sale_invoice_2')]"/>
+            <!-- pay_amount = -->            <value eval="500"/>
+            <!-- pay_account_id = -->        <value eval="ref('account.cash')"/>
+            <!-- period_id = -->            <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
+            <!-- pay_journal_id = -->        <value eval="ref('account.bank_journal')"/>
+            <!-- writeoff_acc_id = -->        <value eval="ref('account.cash')"/>
+            <!-- writeoff_period_id = -->    <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
+            <!-- writeoff_journal_id = -->    <value eval="ref('account.bank_journal')"/>
+            <!-- context = -->              <value eval="{}"/>
+            <!-- name = -->                 <value eval="str('Payment from ASUStek')"/>
+        </function>
+
     </data>
 </openerp>
index 3705945..251c474 100644 (file)
@@ -41,11 +41,10 @@ modules.
     'data': [
         'wizard/crm_make_sale_view.xml',
         'sale_crm_view.xml',
-        'sale_crm_data.xml',
         'security/sale_crm_security.xml',
         'security/ir.model.access.csv',
     ],
-    'demo': ['sale_crm_demo.xml'],
+    'demo': [],
     'test': ['test/sale_crm.yml'],
     'installable': True,
     'auto_install': True,
diff --git a/addons/sale_crm/sale_crm_data.xml b/addons/sale_crm/sale_crm_data.xml
deleted file mode 100644 (file)
index 1996f36..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data noupdate="1">
-
-        <!-- Salesteam-related subtypes for messaging / Chatter -->
-        <record id="mt_salesteam_order_sent" model="mail.message.subtype">
-            <field name="name">Quotation Send</field>
-            <field name="sequence">20</field>
-            <field name="res_model">crm.case.section</field>
-            <field name="parent_id" eval="ref('sale.mt_order_sent')"/>
-            <field name="relation_field">section_id</field>
-        </record>
-        <record id="mt_salesteam_order_confirmed" model="mail.message.subtype">
-            <field name="name">Sales Order Confirmed</field>
-            <field name="sequence">21</field>
-            <field name="res_model">crm.case.section</field>
-            <field name="parent_id" eval="ref('sale.mt_order_confirmed')"/>
-            <field name="relation_field">section_id</field>
-        </record>
-
-    </data>
-</openerp>
diff --git a/addons/sale_crm/sale_crm_demo.xml b/addons/sale_crm/sale_crm_demo.xml
deleted file mode 100644 (file)
index 4af287b..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record model="crm.case.section" id="sales_team.section_sales_department">
-            <field name="invoiced_forecast">52700</field>
-            <field name="invoiced_target">60000</field>
-        </record>
-        
-        <record model="crm.case.section" id="sales_team.crm_case_section_1">
-            <field name="name">Indirect Sales</field>
-            <field name="code">IM</field>
-            <field name="invoiced_forecast">36000</field>
-            <field name="invoiced_target">40000</field>
-        </record>
-
-        <!-- Invoice for Direct Marketing -->
-
-        <record id="test_crm_sale_invoice_1" model="account.invoice">
-            <field name="currency_id" ref="base.EUR"/>
-            <field name="company_id" ref="base.main_company"/>
-            <field name="partner_id" ref="base.res_partner_1"/>
-            <field name="journal_id" ref="account.sales_journal"/>
-            <field name="section_id" ref="sales_team.section_sales_department"/>
-            <field name="state">draft</field>
-            <field name="type">in_invoice</field>
-            <field name="account_id" ref="account.a_recv"/>
-            <field name="name">Test invoice 1</field>
-        </record>
-        <record id="test_crm_sale_invoice_1_line_1" model="account.invoice.line">
-            <field name="name">Basic computer with Dvorak keyboard and left-handed mouse</field>
-            <field name="invoice_id" ref="test_crm_sale_invoice_1"/>
-            <field name="price_unit">250</field>
-            <field name="quantity">1</field>
-            <field name="account_id" ref="account.a_sale"/>
-        </record>
-        <record id="test_crm_sale_invoice_1_line_2" model="account.invoice.line">
-            <field name="name">Little server with raid 1 and 512ECC ram</field>
-            <field name="invoice_id" ref="test_crm_sale_invoice_1"/>
-            <field name="price_unit">800</field>
-            <field name="quantity">2</field>
-            <field name="account_id" ref="account.a_sale"/>
-        </record>
-        <record id="test_crm_sale_invoice_1_line_2" model="account.invoice.line">
-            <field name="name">Server with raid 10 and 2048ECC ram</field>
-            <field name="invoice_id" ref="test_crm_sale_invoice_1"/>
-            <field name="price_unit">4800</field>
-            <field name="quantity">4</field>
-            <field name="account_id" ref="account.a_sale"/>
-        </record>
-        <workflow action="invoice_open" model="account.invoice" ref="test_crm_sale_invoice_1"/>
-        <function model="account.invoice" name="pay_and_reconcile">
-            <!-- ids = -->                    <value eval="[ref('test_crm_sale_invoice_1')]"/>
-            <!-- pay_amount = -->            <value eval="1850"/>
-            <!-- pay_account_id = -->        <value eval="ref('account.cash')"/>
-            <!-- period_id = -->            <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
-            <!-- pay_journal_id = -->        <value eval="ref('account.bank_journal')"/>
-            <!-- writeoff_acc_id = -->        <value eval="ref('account.cash')"/>
-            <!-- writeoff_period_id = -->    <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
-            <!-- writeoff_journal_id = -->    <value eval="ref('account.bank_journal')"/>
-            <!-- context = -->              <value eval="{}"/>
-            <!-- name = -->                 <value eval="str('Payment from ASUStek')"/>
-        </function>
-
-        <!-- Invoice for Indirect Marketing -->
-
-        <record id="test_crm_sale_invoice_2" model="account.invoice">
-            <field name="currency_id" ref="base.EUR"/>
-            <field name="company_id" ref="base.main_company"/>
-            <field name="partner_id" ref="base.res_partner_1"/>
-            <field name="journal_id" ref="account.sales_journal"/>
-            <field name="section_id" ref="sales_team.crm_case_section_1"/>
-            <field name="state">draft</field>
-            <field name="type">out_invoice</field>
-            <field name="account_id" ref="account.a_recv"/>
-            <field name="name">Test invoice 1</field>
-        </record>
-        <record id="test_crm_sale_invoice_2_line_1" model="account.invoice.line">
-            <field name="name">Basic formation with Dvorak</field>
-            <field name="invoice_id" ref="test_crm_sale_invoice_2"/>
-            <field name="price_unit">500</field>
-            <field name="quantity">1</field>
-            <field name="account_id" ref="account.a_sale"/>
-        </record>
-        <workflow action="invoice_open" model="account.invoice" ref="test_crm_sale_invoice_2"/>
-        <function model="account.invoice" name="pay_and_reconcile">
-            <!-- ids = -->                    <value eval="[ref('test_crm_sale_invoice_2')]"/>
-            <!-- pay_amount = -->            <value eval="500"/>
-            <!-- pay_account_id = -->        <value eval="ref('account.cash')"/>
-            <!-- period_id = -->            <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
-            <!-- pay_journal_id = -->        <value eval="ref('account.bank_journal')"/>
-            <!-- writeoff_acc_id = -->        <value eval="ref('account.cash')"/>
-            <!-- writeoff_period_id = -->    <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
-            <!-- writeoff_journal_id = -->    <value eval="ref('account.bank_journal')"/>
-            <!-- context = -->              <value eval="{}"/>
-            <!-- name = -->                 <value eval="str('Payment from ASUStek')"/>
-        </function>
-
-
-        <record id="sale.sale_order_1" model="sale.order">
-            <field name="section_id" ref="sales_team.section_sales_department"/>
-            <field name="date_order" eval="(DateTime.today() - relativedelta(months=1)).strftime('%Y-%m-%d %H:%M')"/>
-        </record>
-        <record id="sale.sale_order_2" model="sale.order">
-            <field name="section_id" ref="sales_team.section_sales_department"/>
-            <field name="date_order" eval="(DateTime.today() - relativedelta(months=1)).strftime('%Y-%m-%d %H:%M')"/>
-        </record>
-        <record id="sale.sale_order_3" model="sale.order">
-            <field name="section_id" ref="sales_team.section_sales_department"/>
-        </record>
-        <record id="sale.sale_order_4" model="sale.order">
-            <field name="section_id" ref="sales_team.section_sales_department"/>
-        </record>
-        <record id="sale.sale_order_5" model="sale.order">
-            <field name="section_id" ref="sales_team.crm_case_section_1"/>
-            <field name="date_order" eval="(DateTime.today() - relativedelta(months=1)).strftime('%Y-%m-%d %H:%M')"/>
-        </record>
-        <record id="sale.sale_order_6" model="sale.order">
-            <field name="section_id" ref="sales_team.crm_case_section_1"/>
-        </record>
-        <record id="sale.sale_order_7" model="sale.order">
-            <field name="section_id" ref="sales_team.section_sales_department"/>
-            <field name="date_confirm" eval="(DateTime.today() - relativedelta(months=1)).strftime('%Y-%m-%d %H:%M')"/>
-        </record>
-        <record id="sale.sale_order_8" model="sale.order">
-            <field name="section_id" ref="sales_team.crm_case_section_1"/>
-        </record>
-
-    </data>
-</openerp>
index 95fcb6f..67907c3 100644 (file)
                 </p>
             </field>
         </record>
-    <menuitem id="sales_team.menu_sales_team_act" action="crm_case_section_salesteams_act" sequence="1" parent="base.menu_sales" groups="base.group_multi_salesteams"/>
+
+        <menuitem id="sales_team.menu_sales_team_act" action="crm_case_section_salesteams_act" sequence="1" parent="base.menu_sales" groups="base.group_multi_salesteams"/>
+
+        <!-- add css / js -->
+        <template id="assets_backend" name="sales_team assets" inherit_id="web.assets_backend">
+            <xpath expr="." position="inside">
+                <link rel="stylesheet" href="/sales_team/static/src/css/sales_team.css"/>
+                <script type="text/javascript" src="/sales_team/static/src/js/sales_team.js"></script>
+            </xpath>
+        </template>
+
     </data>
 </openerp>
diff --git a/addons/sales_team/static/src/css/Makefile b/addons/sales_team/static/src/css/Makefile
new file mode 100644 (file)
index 0000000..523f4a1
--- /dev/null
@@ -0,0 +1,2 @@
+sales_team.css: sales_team.sass
+    sass --trace -t expanded sales_team.sass:sales_team.css
diff --git a/addons/sales_team/static/src/css/sales_team.sass b/addons/sales_team/static/src/css/sales_team.sass
new file mode 100644 (file)
index 0000000..5c70981
--- /dev/null
@@ -0,0 +1,55 @@
+@charset "utf-8"
+
+.openerp
+    .oe_kanban_view
+        .oe_kanban_crm_salesteams
+            /* Customize width and height of kanban according bootstrap3 */
+            width: 357px
+            min-height: 254px !important
+            /* End of customize */
+            cursor: default
+            .oe_items_list
+                position: relative
+                /* Improved margin to set alignment of list items according bootstrap3 */
+                margin: 10px 0 10px 9px
+                min-height: 10px
+                div
+                    width: 160px
+                    height: 22px
+                    margin: 0 !important
+                    position: relative
+                    display: inline-block
+                    float: left
+                    a:nth-child(2n)
+                        position: absolute
+                        left: 90px
+                        top: 0
+                div:nth-child(2n)
+                    a:nth-child(2n)
+                        left: 110px
+                a:hover
+                    text-decoration: underline !important
+            .oe_center
+                text-align: center
+                margin: 3px 0
+                .oe_sum
+                    margin: 0
+                    font-size: 40px
+                .oe_subsum
+                    font-size: 10px
+        .oe_salesteams_help
+            display: inline-block
+        .oe_kanban_salesteams_avatars
+            margin-top: 20px
+        .oe_kanban_salesteams_avatars
+            img
+                width: 30px
+                height: 30px
+                padding-left: 0px
+                margin-top: 3px
+                -moz-border-radius: 2px
+                -webkit-border-radius: 2px
+                border-radius: 2px
+                -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2)
+                -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2)
+                -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2)
diff --git a/addons/sales_team/static/src/js/sales_team.js b/addons/sales_team/static/src/js/sales_team.js
new file mode 100644 (file)
index 0000000..a7bf7c2
--- /dev/null
@@ -0,0 +1,45 @@
+openerp.crm = function(openerp) {
+    openerp.web_kanban.KanbanView.include({
+        crm_display_members_names: function() {
+            /*
+             * Set avatar title for members.
+             * In kanban views, many2many fields only return a list of ids.
+             * We can implement return value of m2m fields like [(1,"Adminstration"),...].
+             */
+            var self = this;
+            var members_ids = [];
+
+            // Collect members ids
+            self.$el.find('img[data-member_id]').each(function() {
+                members_ids.push($(this).data('member_id'));
+            });
+
+            // Find their matching names
+            var dataset = new openerp.web.DataSetSearch(self, 'res.users', self.session.context, [['id', 'in', _.uniq(members_ids)]]);
+            dataset.read_slice(['id', 'name']).done(function(result) {
+                _.each(result, function(v, k) {
+                    // Set the proper value in the DOM
+                    self.$el.find('img[data-member_id=' + v.id + ']').attr('title', v.name).tooltip();
+                });
+            });
+        },
+        on_groups_started: function() {
+            var self = this;
+            self._super.apply(self, arguments);
+
+            if (self.dataset.model === 'crm.case.section') {
+                self.crm_display_members_names();
+            }
+        },
+    });
+
+    openerp.web_kanban.KanbanRecord.include({
+        on_card_clicked: function() {
+            if (this.view.dataset.model === 'crm.case.section') {
+                this.$('.oe_kanban_crm_salesteams_list a').first().click();
+            } else {
+                this._super.apply(this, arguments);
+            }
+        },
+    });
+};