Rodney Elpidio Enciso Arias 6 роки тому
коміт
c5323ea474

+ 3 - 0
__init__.py

@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import models


+ 22 - 0
__openerp__.py

@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+
+{
+    'name': 'Eiru Sales commissions',
+    'version': '8.0.1.1.1',
+    'author': 'EIRU',
+    "category": "Sales Management",
+    'license': 'AGPL-3',
+    'depends': [
+        'base',
+        'account',
+        'product',
+        'sale',
+    ],
+    "data": [
+        # "security/commission_security.xml",
+        # "security/ir.model.access.csv",
+        "views/res_partner_view.xml",
+        "views/sale_commission_view.xml",
+    ],
+    "installable": True,
+}

+ 3 - 0
models/__init__.py

@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+from . import sale_commission
+from . import res_partner

BIN
models/__init__.pyc


+ 24 - 0
models/res_partner.py

@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+from openerp import api, fields, models
+
+class ResPartner(models.Model):
+    """Add some fields related to commissions"""
+    _inherit = "res.partner"
+
+    agents = fields.Many2many(
+        comodel_name="res.partner", relation="partner_agent_rel",
+        column1="partner_id", column2="agent_id",
+        domain="[('agent', '=', True)]")
+
+    agent = fields.Boolean(
+        string="Creditor/Agent",
+        help="Check this field if the partner is a creditor or an agent.")
+    agent_type = fields.Selection(
+        selection=[("agent", "Agente")], string="Type", required=True,
+        default="agent")
+    commission = fields.Many2one(
+        string="Commission", comodel_name="sale.commission",
+        help="This is the default commission used in the sales where this "
+             "agent is assigned. It can be changed on each operation if "
+             "needed.")

BIN
models/res_partner.pyc


+ 40 - 0
models/sale_commission.py

@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+
+from openerp import api, exceptions, fields, models, _
+
+class SaleCommission(models.Model):
+    _name = "sale.commission"
+    _description = "Commission in sales"
+
+    @api.model
+    def _get_default_company_id(self):
+        company_obj = self.env['res.company']
+        company_id = company_obj._company_default_get('sale.commission')
+        return company_obj.browse(company_id)
+
+    name = fields.Char('Name', required=True)
+    commission_type = fields.Selection(
+        selection = [
+            ("fixed", "Fixed percentage")
+        ],
+        string="Type",
+        required=True, default="fixed")
+    fix_qty = fields.Float(string="Fixed percentage")
+    active = fields.Boolean(default=True)
+    invoice_state = fields.Selection(
+        selection = [
+            ('open', 'Facturas Abiertas'),
+            ('paid', 'Facturas Pagadas'),
+        ],
+        string='Invoice Status',
+        required=True, default='open')
+    amount_base_type = fields.Selection(
+        selection = [
+            ('utility_amount', 'Utilidad'),
+            ('gross_amount', 'Monto Bruto'),
+            ('net_amount', 'Monto Neto'),
+        ],
+        string='Base',
+        required=True, default='utility_amount')
+    company_id = fields.Many2one('res.company', string='Company',
+                                 default=_get_default_company_id)

BIN
models/sale_commission.pyc


+ 34 - 0
security/commission_security.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="sale_commission_multicompany_rule" model="ir.rule">
+            <field name="name">Sale commission multi-company</field>
+            <field name="model_id" ref="model_sale_commission"/>
+            <field name="global" eval="True"/>
+            <field name="domain_force">['|','|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id]),('company_id','=',False)]</field>
+        </record>
+
+        <record id="account_invoice_line_agent_multicompany_rule" model="ir.rule">
+            <field name="name">Invoice line agent multi-company</field>
+            <field name="model_id" ref="model_account_invoice_line_agent"/>
+            <field name="global" eval="True"/>
+            <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
+        </record>
+
+        <record id="sale_commission_settlement_multicompany_rule" model="ir.rule">
+            <field name="name">Settlement multi-company</field>
+            <field name="model_id" ref="model_sale_commission_settlement"/>
+            <field name="global" eval="True"/>
+            <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
+        </record>
+
+        <record id="sale_commission_settlement_line_multicompany_rule" model="ir.rule">
+            <field name="name">Settlement line multi-company</field>
+            <field name="model_id" ref="model_sale_commission_settlement_line"/>
+            <field name="global" eval="True"/>
+            <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
+        </record>
+
+    </data>
+</openerp>

+ 11 - 0
security/ir.model.access.csv

@@ -0,0 +1,11 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_sale_commission_manager","access_sale_commission_manager","model_sale_commission","base.group_sale_manager",1,1,1,1
+"access_sale_commission_user","access_sale_commission_user","model_sale_commission","base.group_sale_salesman",1,0,0,0
+"access_sale_commission_section_manager","access_sale_commission_section_manager","model_sale_commission_section","base.group_sale_manager",1,1,1,1
+"access_sale_commission_section_user","access_sale_commission_section_user","model_sale_commission_section","base.group_sale_salesman",1,0,0,0
+"access_sale_order_line_agent","access_sale_order_line_agent","model_sale_order_line_agent","base.group_sale_salesman",1,1,1,1
+"access_account_invoice_line_agent","access_account_invoice_line_agent","model_account_invoice_line_agent","base.group_sale_salesman",1,1,1,1
+"access_sale_commission_settlement_manager","access_sale_commission_settlement_manager","model_sale_commission_settlement","base.group_sale_manager",1,1,1,1
+"access_sale_commission_settlement_user","access_sale_commission_settlement_manager","model_sale_commission_settlement","base.group_sale_salesman",1,0,0,0
+"access_sale_commission_settlement_line_manager","access_sale_commission_settlement_line_user","model_sale_commission_settlement_line","base.group_sale_manager",1,1,1,1
+"access_sale_commission_settlement_line_user","access_sale_commission_settlement_line_user","model_sale_commission_settlement_line","base.group_sale_salesman",1,0,0,0

+ 37 - 0
views/res_partner_view.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="view_partner_form_agent" model="ir.ui.view">
+            <field name="name">res.partner.form.agent</field>
+            <field name="model">res.partner</field>
+            <field name="inherit_id" ref="base.view_partner_form" />
+            <field name="priority" eval="18"/>
+            <field name="groups_id" eval="[(4, ref('base.group_sale_salesman'))]"/>
+            <field name="arch" type="xml">
+                <xpath expr="//page[@name='sales_purchases']//field[@name='supplier']" position="after">
+                    <field name="agent" string="Agent" />
+                </xpath>
+                <field name="user_id" position="after">
+                    <field name="agents"
+                           attrs="{'invisible': [('customer', '=', False)]}"
+                           widget="many2many_tags"/>
+                </field>
+                <page name="sales_purchases" position="after">
+                    <page name="agent_information"
+                          string="Agent information"
+                          attrs="{'invisible': [('agent', '=', False)]}">
+                        <group>
+                            <group>
+                                <field name="agent_type"/>
+                                <field name="commission"
+                                       attrs="{'required': [('agent', '=', True)]}"/>
+                            </group>
+                        </group>
+                    </page>
+                </page>
+            </field>
+        </record>
+
+    </data>
+</openerp>

+ 60 - 0
views/sale_commission_view.xml

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record model="ir.ui.view" id="sale_commission_tree">
+            <field name="name">Sales commissions tree</field>
+            <field name="model">sale.commission</field>
+            <field name="arch" type="xml">
+                <tree string="Commissions">
+                    <field name="name" />
+                    <field name="commission_type" />
+                    <field name="amount_base_type" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="sale_commission_form">
+            <field name="name">Sales commissions form</field>
+            <field name="model">sale.commission</field>
+            <field name="arch" type="xml">
+                <form string="Commission">
+                    <group string="General information">
+                        <group>
+                            <field name="name" />
+                            <field name="active" />
+                            <field name="company_id" />
+                        </group>
+                        <group>
+                            <field name="commission_type" />
+                            <field name="amount_base_type" />
+                            <field name="invoice_state"/>
+                        </group>
+                    </group>
+                    <group string="Rates definition" colspan="4">
+                        <field name="fix_qty"
+                               attrs="{'invisible': [('commission_type', '!=', 'fixed')], 'required': [('commission_type', '=', 'fixed')]}" />
+                    </group>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="action_commission">
+            <field name="name">Commission types</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">sale.commission</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <menuitem name="Commissions"
+                  id="menu_sale_commissions_conf"
+                  parent="base.menu_base_config" />
+
+        <menuitem name="Commission types"
+                  id="menu_sale_commissions_types"
+                  parent="menu_sale_commissions_conf"
+                  action="action_commission" />
+
+    </data>
+</openerp>