Forráskód Böngészése

Agregar comisión para propietario

sebastian 5 éve
commit
1db2c9f783

+ 2 - 0
__init__.py

@@ -0,0 +1,2 @@
+# -*- encoding: utf-8 -*-
+import models

+ 25 - 0
__openerp__.py

@@ -0,0 +1,25 @@
+# -*- encoding: utf-8 -*-
+
+{
+    'name': 'EIRU INMOBILIARIA',
+    'version': '8.0.0.1.0',
+    'category': '',
+    'summary': '',
+    'author': 'Deisy Samudio',
+    'license': 'AGPL-3',
+    'depends': [
+        'base',
+        'product',
+        'sale',
+        'account_analytic_analysis',
+        ],
+    'data': [
+        'security/readonly_fields.xml',
+        'views/product.xml',
+        'views/account_analytic_account.xml',
+        'views/account_invoice.xml',
+        'views/res_partner.xml',
+    ],
+
+    'installable': True,
+}

+ 5 - 0
models/__init__.py

@@ -0,0 +1,5 @@
+# -*- encoding: utf-8 -*-
+import product
+import account_analytic_account
+import account_invoice
+import res_partner

+ 38 - 0
models/account_analytic_account.py

@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+from openerp import models, fields, api, _
+from openerp.exceptions import Warning
+
+class AnalyticAccount(models.Model):
+    _inherit = 'account.analytic.account'
+
+    # cuotas
+    cuota_total = fields.Integer(string="Total de cuotas")
+    nro_cuotas = fields.Integer(string="Cuota actual")
+
+    @api.multi
+    def recurring_create_invoice(self):
+        self.nro_cuotas = self.nro_cuotas + 1
+        if self.nro_cuotas <= self.cuota_total:
+            value = super(AnalyticAccount, self).recurring_create_invoice()
+            cuota_string = "Cuota "+ str(self.nro_cuotas)+"/"+str(self.cuota_total)
+            cuota_tot=self.cuota_total
+            for each in value:
+                invoice = self.env['account.invoice'].search([('id','=',each)])
+                invoice.write({'cuotas': cuota_string})
+                invoice.write({'cuota_total': cuota_tot})
+            return value
+        else:
+            raise Warning(_("Ya no puede generar cuotas para este contrato."))
+
+    @api.model
+    def recurring_create_invoice_inmobiliaria(self):
+        value = super(AnalyticAccount, self)._cron_recurring_create_invoice()
+        for each in value:
+            invoice = self.env['account.invoice'].search([('id','=',each)])
+            contract = self.env['account.analytic.account'].search([('code','=',invoice.origin)])
+            contract.nro_cuotas = contract.nro_cuotas + 1
+            self.env.cr.execute('update account_analytic_account set nro_cuotas = %s where id = %s', (contract.nro_cuotas, contract.id))
+            cuota_string = "Cuota "+ str(contract.nro_cuotas)+"/"+str(contract.cuota_total)
+            self.env.cr.execute('update account_invoice set cuotas = %s where  id = %s', (cuota_string, invoice.id))
+            self.env.cr.execute('update account_invoice set cuota_total = %s where  id = %s', (cuota_tot, invoice.id))
+        return value

+ 10 - 0
models/account_invoice.py

@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+from openerp import models, fields, api,_
+from openerp.exceptions import Warning
+
+class AnalyticAccount(models.Model):
+    _inherit = 'account.invoice'
+
+    # cuotas
+    cuotas = fields.Char(string="Cuotas")
+    cuota_total = fields.Integer(string="Total de cuotas")

+ 32 - 0
models/product.py

@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+from openerp import models, fields, api
+
+class Product(models.Model):
+    _inherit = 'product.template'
+
+    # comisiones
+    comision_inmobiliaria = fields.Float(string="Inmobiliaria (%)")
+    comision_vendedor = fields.Float(string="Vendedor (%)")
+    comision_propietario = fields.Float(string="Propietario (%)")
+    comision_total = fields.Float(string="Total (%)", compute="_get_total_comision", store=True)
+    # datos del terreno t
+    t_propietario = fields.Many2one("res.partner", string="Propietario")
+    t_nro = fields.Char(string="Nº")
+    t_tamanho = fields.Char(string="Tamaño")
+    t_manzana = fields.Char(string="Manzana")
+    t_lote = fields.Char(string="Lote")
+    t_direccion = fields.Char(string="Dirección")
+    t_descripcion = fields.Text(string="Descripción",default='Fracción: , Manzana: , Lote: , Cta. Cte. Ctral. Nº ,  Distrito de:  con Finca Matriz Nº: , Aprobado por Resolución Municipal Nº:  de fecha , Linderos y Dimensiones: Al Suroeste mide:  Mts. y linda con Calle Palermo Al Noroeste mide: Mts. y linda con LOTE 9 C Al Noreste mide:  Mts. y linda con LOTE 5 C Al Sureste mide:  Mts. y linda con LOTE 7 C, Superficie:  Mts.2, (Trescientos Sesenta Mts.2 y Cero Cm.2)')
+    t_estado = fields.Many2one('property.state', string="Estado")
+
+
+    @api.depends('comision_vendedor','comision_vendedor','comision_propietario')
+    def _get_total_comision(self):
+        for each in self:
+            self.comision_total = self.comision_vendedor + self.comision_inmobiliaria + self.comision_propietario
+
+class PropertyState(models.Model):
+    _name = 'property.state'
+
+    name = fields.Char(string='Nombre del estado')
+    active = fields.Boolean(string="Activo", default=True)

+ 8 - 0
models/res_partner.py

@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+from openerp import models, fields, api
+
+class ResPartner(models.Model):
+    _inherit = 'res.partner'
+
+    # terrenos
+    propiedades_ids = fields.One2many('product.template', 't_propietario', string="Propiedades")

+ 8 - 0
security/readonly_fields.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+<data noupdate="0">
+    <record id="readonly_fields_inmobiliaria" model="res.groups">
+        <field name="name">Permitir editar cuotas</field>
+    </record>
+</data>
+</openerp>

BIN
static/description/icon.png


+ 39 - 0
views/account_analytic_account.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+  <data>
+    <record model="ir.ui.view" id="contrato_form_view">
+       <field name="name">contrato_form_view</field>
+       <field name="model">account.analytic.account</field>
+       <field name="inherit_id" ref="account_analytic_analysis.account_analytic_account_form_form"/>
+       <field name="arch" type="xml">
+          <field name="recurring_next_date" position="before">
+            <field name="cuota_total"/>
+            <field name="nro_cuotas" readonly="1"/>
+          </field>
+      </field>
+    </record>
+
+    <record id="contrato_form_view_editable" model="ir.ui.view">
+        <field name="name">contrato_form_view_editable</field>
+        <field name="model">account.analytic.account</field>
+        <field name="inherit_id" ref="account_analytic_analysis.account_analytic_account_form_form"/>
+        <field name="groups_id" eval="[(6, 0, [ref('eiru_inmobiliaria.readonly_fields_inmobiliaria')])]"/>
+        <field name="arch" type="xml">
+            <xpath expr="//field[@name='nro_cuotas']" position="attributes">
+                <attribute name="readonly">0</attribute>
+            </xpath>
+        </field>
+    </record>
+
+    <record model="ir.ui.view" id="contrato_form_view2">
+       <field name="name">contrato_form_view2</field>
+       <field name="model">account.analytic.account</field>
+       <field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
+       <field name="arch" type="xml">
+         <field name="code" position="replace">
+            <field name="code" readonly="1"/>
+          </field>
+      </field>
+    </record>
+</data>
+</openerp>

+ 18 - 0
views/account_invoice.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+  <data>
+    <record model="ir.ui.view" id="invoice_form">
+       <field name="name">invoice_form</field>
+       <field name="model">account.invoice</field>
+       <field name="inherit_id" ref="account.invoice_form"/>
+       <field name="arch" type="xml">
+          <field name="number" position="after">
+            <field name="cuotas" readonly="1"/>
+          </field>
+          <field name="origin" position="replace">
+            <field name="origin" readonly="1"/>
+          </field>
+      </field>
+    </record>
+</data>
+</openerp>

+ 35 - 0
views/product.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+  <data>
+    <record model="ir.ui.view" id="inmobiliaria_product_template">
+      <field name="name">inmobiliaria_product_template</field>
+      <field name="model">product.template</field>
+      <field name="inherit_id" ref="product.product_template_form_view"/>
+      <field name="arch" type="xml">
+        <xpath expr="//page[@string='Sales']" position="inside">
+          <group name="comisiones" string="Comisiones">
+            <field name="comision_inmobiliaria"/>
+            <field name="comision_vendedor"/>
+            <field name="comision_propietario"/>
+            <field name="comision_total"/>
+          </group>
+        </xpath>
+
+        <xpath expr="//page[@string='Sales']" position="after">
+         <page string="Datos del Terreno">
+           <group name="terreno" string="Datos del Terreno">
+             <field name="t_propietario" domain="[('supplier','=',True)]"/>
+             <field name="t_nro"/>
+             <field name="t_manzana"/>
+             <field name="t_lote"/>
+             <field name="t_tamanho"/>
+             <field name="t_direccion"/>
+             <field name="t_estado"/>
+             <field name="t_descripcion"/>
+           </group>
+         </page>
+       </xpath>
+     </field>
+    </record>
+  </data>
+</openerp>

+ 26 - 0
views/res_partner.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+  <data>
+    <record model="ir.ui.view" id="inmobiliaria_partner_form">
+      <field name="name">inmobiliaria_partner_form</field>
+      <field name="model">res.partner</field>
+      <field name="inherit_id" ref="base.view_partner_form"/>
+      <field name="arch" type="xml">
+        <xpath expr="//page[@name='sales_purchases']" position="after">
+          <page string="Propiedades" attrs="{'invisible':[('customer','=',True)]}">
+            <group name="propiedades" string="Propiedades">
+              <field name="propiedades_ids" nolabel="1" readonly="1">
+                <tree string="Detalles">
+                  <field name="name"/>
+                  <field name="t_tamanho"/>
+                  <field name="t_direccion"/>
+                  <field name="t_descripcion"/>
+                 </tree>
+               </field>
+             </group>
+           </page>
+         </xpath>
+       </field>
+    </record>
+  </data>
+</openerp>