remove bemade_sethy_configuration from bemade-addons repo after moving it into sethy's repo directly

This commit is contained in:
Marc Durepos 2024-05-15 21:22:56 -04:00
parent b439f491e5
commit d605932e02
21 changed files with 0 additions and 931 deletions

View file

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

View file

@ -1,59 +0,0 @@
# -*- coding: utf-8 -*-
{
'name': 'Bemade Sethy',
'version': '1.0',
'category': 'Specific Module Category', # Specify your module's category here
'summary': "This module is developed by Bemade to instantiate the Sethy's Odoo",
'author': 'Bemade',
'website': 'https://bemade.org',
'email': 'it@bemade.org',
'license': 'AGPL-3',
'depends': [
# List of module dependencies
'base',
'contacts',
'crm',
'document_knowledge',
'document_page',
'document_page_approval',
'attachment_indexation',
'l10n_ca',
'membership_variable_period',
'membership_delegated_partner',
'partner_multi_relation',
'sale_management',
'base_automation'
],
'data': [
# Reference to XML, CSV, and other data files
'data/membership_category_data.xml',
'data/ir_cron_data.xml',
'data/product_template_data.xml',
'data/partner_category_data.xml',
'data/partner_relation_type_data.xml',
'data/company_data.xml',
'views/res_partner_relation_views.xml',
# 'views/membership_membership_line.xml',
'views/property_view.xml',
'views/res_partner_views.xml',
'security/ir.model.access.csv',
'wizard/transfer_property_wizard_views.xml'
],
'demo': [
# Reference to demo data files
],
'installable': True,
'auto_install': False,
'application': True,
'description': """
Main module for Fondation Séthy
==================================
This module installs base components and will also set up default values according to the Fondation Séthy.
This will allow us to put all the customization here and add other modules from Oca or our repos if needed.
Only code specific to Fondation Sethy resides in this module, the reusable stuff should be put in other small dedicated
modules elsewhere
""",
}

View file

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1"> <!-- noupdate="1" means the data won't be updated when the module is upgraded -->
<!-- Assuming 'base.main_company' is the external ID for the main company -->
<record id="base.main_company" model="res.company">
<field name="name">Fondation Séthy</field>
<field name="website">https://fondationsethy.org</field>
<field name="email">info@fondationsethy.org</field>
<field name="street">164, rue Cowie</field>
<field name="street2">local 335</field>
<field name="city">Granby</field>
<field name="state_id" ref="base.state_ca_qc"/>
<field name="zip">J2G 3V3</field>
<field name="country_id" ref="base.ca"/>
<field name="phone">450 994-3173</field>
<!-- <field name="account_sale_tax_id" ref="account.1_gstqst_sale_tax_14975"/>-->
<!-- <field name="account_purchase_tax_id" ref="account.1_gstqst_purchase_tax_14975"/>-->
</record>
</data>
</odoo>

View file

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="ir_cron_mail_scheduler_action" model="ir.cron">
<field name="name">Sethy: Update relation</field>
<field name="model_id" ref="model_res_partner"/>
<field name="state">code</field>
<field name="code">partners = env['res.partner'].search([])
for rec in partners:
rec._compute_relation_count()
</field>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">12</field>
<field name="interval_type">months</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall"/>
<field eval="False" name="active"/>
</record>
</data>
</odoo>

View file

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1"> <!-- noupdate="1" means the data won't be updated when the module is upgraded -->
<record id="membership_category_perpetual" model="membership.membership_category">
<field name="name">Perpetual Membership</field>
</record>
<record id="membership_extension.membership_category_member" model="membership.membership_category">
<field name="name">Annual Membership</field>
</record>
</data>
</odoo>

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1"> <!-- noupdate="1" means the data won't be updated when the module is upgraded -->
<record id="partner_tag_property" model="res.partner.category">
<field name="name">Property</field>
<field name="color">7</field>
</record>
<record id="partner_tag_owner" model="res.partner.category">
<field name="name">Owner</field>
<field name="color">4</field>
</record>
</data>
</odoo>

View file

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1"> <!-- noupdate="1" means the data won't be updated when the module is upgraded -->
<record id="partner_relation_property" model="res.partner.relation.type">
<field name="name">Owner</field>
<field name="name_inverse">Property</field>
<field name="contact_type_right">c</field>
<field name="partner_category_right" ref="bemade_sethy_configuration.partner_tag_property"/>
</record>
</data>
</odoo>

View file

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1"> <!-- noupdate="1" means the data won't be updated when the module is upgraded -->
<record id="product_membership_perpetual" model="product.template">
<field name="membership_category_id" ref="membership_category_perpetual"/>
<field name="name">Perpetual Membership</field>
<field name="membership" eval="True" />
<field name="type">service</field>
<field name="membership_date_from">2000-01-01</field>
<field name="membership_date_to">2100-01-01</field>
<field name="list_price">225.0</field>
<field name="uom_id" ref="uom.product_uom_unit"/>
<field name="uom_po_id" ref="uom.product_uom_unit"/>
<field name="default_code">MBRAV</field>
</record>
<record id="product_membership_annual" model="product.template">
<field name="membership_category_id" ref="membership_extension.membership_category_member"/>
<field name="name">Annual Membership</field>
<field name="membership" eval="True" />
<field name="type">service</field>
<field name="list_price">20.0</field>
<field name="uom_id" ref="uom.product_uom_unit"/>
<field name="uom_po_id" ref="uom.product_uom_unit"/>
<field name="default_code">MBRAN</field>
<field name="membership_type">variable</field>
</record>
</data>
</odoo>

View file

@ -1,2 +0,0 @@
from . import res_partner
from . import res_config_settings

View file

@ -1,12 +0,0 @@
from odoo import models, api
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
def set_values(self):
res = super().set_values()
category_id = self.env.ref('bemade_sethy_configuration.partner_tag_property', raise_if_not_found=False)
# If the category_id record exists, we set its ID in ir.config_parameter
if category_id:
self.env['ir.config_parameter'].sudo().set_param('bemade_sethy_configuration.partner_tag_property', category_id.id)
return res

View file

@ -1,243 +0,0 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo.addons.website.models import ir_http
import logging
_logger = logging.getLogger(__name__)
class ResPartner(models.Model):
_inherit = 'res.partner'
@api.model
def _tag_property(self):
return self.env.ref('bemade_sethy_configuration.partner_tag_property', raise_if_not_found=False)
@api.model
def _tag_owner(self):
return self.env.ref('bemade_sethy_configuration.partner_tag_owner', raise_if_not_found=False)
@api.model
def _relation_owner_property(self):
return self.env.ref('bemade_sethy_configuration.partner_relation_property', raise_if_not_found=False)
# Add new fields to the res.partner model for property management
surface = fields.Float(string='Surface (ha)')
lot_number = fields.Text(string='Lot Number')
# Add new fields to the res.partner model for owner/member management
ref_project = fields.Text(string='Project No')
intent_signing = fields.Boolean(string='Intent to sign')
cyberimpact = fields.Boolean(string='Cyberimpact')
specification_date = fields.Date(string='Specification date')
crm_stage_activity = fields.Text(string='Activity Stage')
company_use = fields.Text(string='Company related')
# Add new fields to the res.partner model for member management
sethy_first_date = fields.Date(string='First membership date') # member
sethy_last_date = fields.Date(string='Last membership date') # member
sethy_renew_date = fields.Date(string='Next renew date date') # member
sethy_certification_date = fields.Date(string='Certification date date') # member
sethy_payment_type = fields.Text(string='Payment Type') # member
sethy_amount = fields.Float(string='Payment amount') # Member
is_property = fields.Boolean(
string='Is Property',
compute='_compute_is_property',
inverse='_inverse_is_property',
store=True
) # True if property, False if not
interest_level = fields.Selection(
selection=[
('1', 'None'),
('2', 'Low'),
('3', 'Average'),
('4', 'High')],
string='Interest Level') # proprio
# Filtered fields relation_all_ids for owner
relation_owner_ids = fields.One2many(
"res.partner.relation.all",
compute="_compute_relation_property_owner",
string="Owner ids",
compute_sudo=True,
)
# Filtered fields relation_all_ids for property
relation_property_ids = fields.One2many(
"res.partner.relation.all",
compute="_compute_relation_property_owner",
string="Property ids",
compute_sudo=True,
)
# Add new fields to the res.partner model for owner management
property_count = fields.Integer(
string='Property count',
compute='_compute_property_count',
store=True,
compute_sudo=True
)
is_owner = fields.Boolean(
string='Is Owner',
compute='_compute_owner',
store=True,
compute_sudo=True,
)
@api.depends('relation_all_ids')
def _compute_owner(self):
#owner_tag = self._tag_owner()
owner_tag = self.env.ref('bemade_sethy_configuration.partner_tag_owner', raise_if_not_found=False)
for record in self:
record.is_owner = record.relation_count > 0
if record.is_owner:
record.category_id |= owner_tag
else:
record.category_id -= owner_tag
# this is an hugly fix because @api depends doesn't work on new function so hacking it here
@api.depends("relation_all_ids")
def _compute_relation_count(self):
super()._compute_relation_count()
#owner_tag = self._tag_owner()
owner_tag = self.env.ref('bemade_sethy_configuration.partner_tag_owner', raise_if_not_found=False)
for record in self:
for line in record.relation_all_ids:
if line.active and line.type_id == owner_tag:
record.relation_count += 1
record.is_owner = record.relation_count > 0 and not record.is_property
if record.is_owner:
record.category_id |= owner_tag
else:
record.category_id -= owner_tag
@api.depends('category_id')
def _compute_is_property(self):
default_is_property = self._context.get('default_is_property', None)
#property_tag = self._tag_property()
property_tag = self.env.ref('bemade_sethy_configuration.partner_tag_property', raise_if_not_found=False)
for partner in self:
# Check if the property tag exists. If it doesn't, set is_property to False.
# Because module installation order is not guaranteed, the tag may not exist yet when this method is called.
# This is due to store=True on the is_property field.
if default_is_property is not None and not self.id:
partner.is_property = default_is_property
else:
if property_tag is None:
partner.is_property = False
else:
partner.is_property = property_tag and property_tag in partner.category_id
def _inverse_is_property(self):
#property_tag = self._tag_property()
property_tag = self.env.ref('bemade_sethy_configuration.partner_tag_property', raise_if_not_found=False)
if property_tag is not None:
for partner in self:
if partner.is_property and property_tag not in partner.category_id and property_tag:
partner.category_id |= property_tag
elif not partner.is_property and property_tag in partner.category_id:
partner.category_id -= property_tag
@api.depends("relation_all_ids")
def _compute_property_count(self):
for record in self:
#owner_tag = self._tag_owner()
owner_tag = self.env.ref('bemade_sethy_configuration.partner_tag_owner', raise_if_not_found=False)
record.property_count = len(record._get_owners())
record.is_owner = record.property_count > 0
if owner_tag is not None:
if record.is_owner:
record.category_id |= owner_tag
else:
record.category_id -= owner_tag
@api.depends(
'relation_all_ids',
'relation_all_ids.type_id',
'relation_all_ids.date_end',
'relation_all_ids.this_partner_id',
'relation_all_ids.other_partner_id',
'relation_all_ids.is_inverse'
)
def _compute_relation_property_owner(self):
for record in self:
# relations = self.env['res.partner.relation.all']
# for line in record.relation_all_ids:
# if active and is_property and is_inverse:
# relations |= line
# record.relation_property_ids = relations
record.relation_property_ids = record._get_properties()
record.relation_owner_ids = record._get_owners()
# Just for debugging below this line
type_property = self._relation_owner_property()
#type_property = self.env.ref('bemade_sethy_configuration.partner_relation_property')
for line in record.relation_all_ids:
active = line.active
is_property = line.type_id == type_property
is_inverse = line.is_inverse
_logger.info(f"This partner: {line.this_partner_id.name}")
_logger.info(f"Other partner: {line.other_partner_id.name}")
_logger.info(f"Active: {active}, Property: {is_property}, Inverse: {is_inverse}, Type: {line.type_id.name}")
def _get_properties(self):
self.ensure_one()
#type_property = self._relation_owner_property()
type_property = self.env.ref('bemade_sethy_configuration.partner_relation_property')
return self.relation_all_ids.filtered(
lambda line: (line.type_id.id == type_property.id and line.is_inverse and line.active)
)
def _get_owners(self):
self.ensure_one()
#type_property = self._relation_owner_property()
type_property = self.env.ref('bemade_sethy_configuration.partner_relation_property', raise_if_not_found=False)
return self.relation_all_ids.filtered(
lambda line: (line.type_id.id == type_property.id and not line.is_inverse and line.active)
)
@api.onchange('lot_number')
def _onchange_lot_number(self):
for lot in self:
if lot.lot_number:
lot.name = "Lot " + str(lot.lot_number)
@api.model_create_multi
def create(self, vals_list):
# Create Partner records using the super function
records = super().create(vals_list)
user_company = self.env.user.company_id
# Update the records where 'state_id' or 'country_id' isn't provided
for record in records:
if not record.state_id or not record.country_id:
if not record.state_id and user_company.state_id:
record.write({
'state_id': user_company.state_id.id,
})
if not record.country_id and user_company.country_id:
record.write({
'country_id': user_company.country_id.id
})
if record.name.startswith("Lot "):
record.lot_number = record.name[4:]
record._inverse_is_property()
return records
@api.onchange('name')
def _onchange_name(self):
for record in self:
if record.name and record.name.startswith("Lot "):
record.lot_number = record.name[4:]
def write(self, vals):
result = super(ResPartner, self).write(vals)
self._inverse_is_property()
return result
@api.onchange('category_id')
def _onchange_category_id(self):
self._compute_is_property()

View file

@ -1,2 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_transfer_property_wizard,access_transfer_property_wizard,model_transfer_property_wizard,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_transfer_property_wizard access_transfer_property_wizard model_transfer_property_wizard base.group_user 1 1 1 1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

View file

@ -1,85 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- <record id="tree_res_partner_relation" model="ir.ui.view">-->
<!-- <field name="model">membership.membership_line</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <tree editable="top">-->
<!-- <field-->
<!-- name="partner"-->
<!-- required="True"-->
<!-- />-->
<!-- <field-->
<!-- name="date"-->
<!-- />-->
<!-- <field-->
<!-- name="date_from"-->
<!-- />-->
<!-- <field name="date_to" />-->
<!-- <field name="membership_id" />-->
<!-- </tree>-->
<!-- </field>-->
<!-- </record>-->
<!-- <record id="search_res_partner_relation_all" model="ir.ui.view">-->
<!-- <field name="model">res.partner.relation.all</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <search string="Search Relations">-->
<!-- <field name="any_partner_id" widget="many2one" />-->
<!-- <field name="this_partner_id" />-->
<!-- <field name="other_partner_id" />-->
<!-- <field name="type_selection_id" />-->
<!-- <filter-->
<!-- name="left_to_right"-->
<!-- string="Left to right"-->
<!-- domain="[('is_inverse', '=', False)]"-->
<!-- />-->
<!-- <filter-->
<!-- name="right_to_left"-->
<!-- string="Right to left"-->
<!-- domain="[('is_inverse', '=', True)]"-->
<!-- />-->
<!-- <filter-->
<!-- name="include_part_records"-->
<!-- string="Include past records"-->
<!-- context="{'active_test': False}"-->
<!-- />-->
<!-- <group expand="0" string="Group By">-->
<!-- <filter-->
<!-- name="group_by_this_partner_id"-->
<!-- string="One Partner"-->
<!-- context="{'group_by': 'this_partner_id'}"-->
<!-- />-->
<!-- <filter-->
<!-- name="group_by_type_selection_id"-->
<!-- string="Relationship Type"-->
<!-- context="{'group_by': 'type_selection_id'}"-->
<!-- />-->
<!-- <filter-->
<!-- name="group_by_other_partner_id"-->
<!-- string="Other Partner"-->
<!-- context="{'group_by': 'other_partner_id'}"-->
<!-- />-->
<!-- </group>-->
<!-- </search>-->
<!-- </field>-->
<!-- </record>-->
<record id="action_membership_membership_line" model="ir.actions.act_window">
<field name="name">Membership line</field>
<field name="res_model">membership.membership_line</field>
<field name="view_mode">tree</field>
<!-- <field name="view_id" ref="tree_res_partner_relation" />-->
<!-- <field name="search_view_id" ref="search_res_partner_relation_all" />-->
<!-- <field name="context">{'active_test': 0}</field>-->
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Record and track your partners'membership
</p>
</field>
</record>
<menuitem
id="menu_membership_membership_line"
sequence="3"
parent="membership.menu_association"
action="action_membership_membership_line"
/>
</odoo>

View file

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="tree_property" model="ir.ui.view">
<field name="model">res.partner</field>
<field name="arch" type="xml">
<tree string="Properties" sample="1" multi_edit="1">
<field name="display_name" string="Name"/>
<field name="lot_number" optional="show"/>
<field name="city" optional="show"/>
<field name="zip" optional="show"/>
<field name="state_id" optional="hide" readonly="1"/>
<field name="country_id" optional="show" readonly="1"/>
<field name="category_id" optional="hide" widget="many2many_tags" options="{'color_field': 'color'}"/>
<field name="company_id" groups="base.group_multi_company" readonly="1"/>
<field name="active" column_invisible="True"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="kanban_property">
<field name="name">res.partner.kanban.property</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<kanban class="o_res_partner_kanban">
<field name="display_name"/>
<field name="city"/>
<field name="zip"/>
<field name="state_id"/>
<field name="country_id"/>
<field name="category_id" widget="many2many_tags" options="{'color_field': 'color'}"/>
<field name="active" invisible="1"/>
</kanban>
</field>
</record>
<menuitem
name="Property"
id="menu_property"
sequence="15"
groups="base.group_user"
web_icon="bemade_sethy_configuration,static/description/icon.png"
/>
<record id="action_properties" model="ir.actions.act_window">
<field name="name">Properties</field>
<field name="res_model">res.partner</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_id" ref="kanban_property"/>
<field name="domain">[('is_property','=',True)]</field>
<field name="context">{'default_is_property': True, 'default_is_company': True}</field>
</record>
<menuitem
id="menu_property_views"
name="Properties"
parent="menu_property"
action="action_properties"
/>
</odoo>

View file

@ -1,92 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="tree_res_partner_relation" model="ir.ui.view">
<field name="model">res.partner.relation</field>
<field name="arch" type="xml">
<tree editable="top">
<field
name="left_partner_id"
required="True"
options="{'no_create': True}"
/>
<field
name="type_id"
required="True"
options="{'no_create': True}"
/>
<field
name="right_partner_id"
required="True"
options="{'no_create': True}"
/>
<field name="date_start" />
<field name="date_end" />
</tree>
</field>
</record>
<!-- <record id="search_res_partner_relation_all" model="ir.ui.view">-->
<!-- <field name="model">res.partner.relation.all</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <search string="Search Relations">-->
<!-- <field name="any_partner_id" widget="many2one" />-->
<!-- <field name="this_partner_id" />-->
<!-- <field name="other_partner_id" />-->
<!-- <field name="type_selection_id" />-->
<!-- <filter-->
<!-- name="left_to_right"-->
<!-- string="Left to right"-->
<!-- domain="[('is_inverse', '=', False)]"-->
<!-- />-->
<!-- <filter-->
<!-- name="right_to_left"-->
<!-- string="Right to left"-->
<!-- domain="[('is_inverse', '=', True)]"-->
<!-- />-->
<!-- <filter-->
<!-- name="include_part_records"-->
<!-- string="Include past records"-->
<!-- context="{'active_test': False}"-->
<!-- />-->
<!-- <group expand="0" string="Group By">-->
<!-- <filter-->
<!-- name="group_by_this_partner_id"-->
<!-- string="One Partner"-->
<!-- context="{'group_by': 'this_partner_id'}"-->
<!-- />-->
<!-- <filter-->
<!-- name="group_by_type_selection_id"-->
<!-- string="Relationship Type"-->
<!-- context="{'group_by': 'type_selection_id'}"-->
<!-- />-->
<!-- <filter-->
<!-- name="group_by_other_partner_id"-->
<!-- string="Other Partner"-->
<!-- context="{'group_by': 'other_partner_id'}"-->
<!-- />-->
<!-- </group>-->
<!-- </search>-->
<!-- </field>-->
<!-- </record>-->
<record id="action_res_partner_relation_relation" model="ir.actions.act_window">
<field name="name">Relations - relation</field>
<field name="res_model">res.partner.relation</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="tree_res_partner_relation" />
<!-- <field name="search_view_id" ref="search_res_partner_relation_all" />-->
<!-- <field name="context">{'active_test': 0}</field>-->
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Record and track your partners' relations. Relations may
be linked to other partners with a type either directly
or inversely.
</p>
</field>
</record>
<menuitem
id="menu_res_partner_relation_relation"
sequence="3"
parent="partner_multi_relation.menu_res_partner_relation"
action="action_res_partner_relation_relation"
/>
</odoo>

View file

@ -1,193 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="open_partner_form" model="ir.actions.act_window">
<field name="name">Open Partner</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">form</field>
<field name="target">current</field>
</record>
<!-- Action pour ouvrir l'assistant de transfert de propriété -->
<record id="action_start_transfer_property_wizard" model="ir.actions.act_window">
<field name="name">Transfer Property</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">transfer.property.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<record id="partner_default_contacts_view_form" model="ir.ui.view">
<field name="name">bemade_sethy_configuration.res_partner.defaults.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<sheet position="before">
<header>
<button name="%(action_start_transfer_property_wizard)d"
type="action"
class="btn-primary"
string="Transfer Property"
context="{'default_property_id': id}"
invisible="is_property == False"
/>
</header>
</sheet>
<field name="company_type" position="after">
<field name="is_property" invisible="True"/>
</field>
<field name="company_type" position="attributes">
<attribute name="invisible">is_property == True</attribute>
</field>
<field name="vat" position="before">
<field name="ref" position="move"/>
</field>
<xpath expr="//field[@name='name' and @id='company']" position="attributes">
<attribute name="invisible">not is_company or is_property</attribute>
</xpath>
<xpath expr="//field[@name='name' and @id='individual']" position="attributes">
<attribute name="invisible">is_company or is_property</attribute>
</xpath>
<xpath expr="//field[@name='name' and @id='company']" position="after">
<field id="lot_number"
class="text-break"
name="lot_number" placeholder="123456789"
invisible="not is_property"
/>
</xpath>
<button name="schedule_meeting" position="attributes">
<attribute name="invisible">is_property == True</attribute>
</button>
<button name="action_view_opportunity" position="attributes">
<attribute name="invisible">is_property == True</attribute>
</button>
<xpath expr="//field[@name='parent_id']/ancestor::div[hasclass('o_row')]" position="attributes">
<attribute name="invisible">is_property == True</attribute>
</xpath>
<button name="action_view_partner_invoices" position="attributes">
<attribute name="invisible">is_property == True</attribute>
</button>
<button name="%(payment.action_payment_token)d" position="attributes">
<attribute name="invisible">payment_token_count == 0 or is_property</attribute>
</button>
<xpath expr="//page[@name='contact_addresses']" position="attributes">
<attribute name="invisible">is_property</attribute>
</xpath>
<xpath expr="//page[@name='sales_purchases']" position="attributes">
<attribute name="invisible">is_property == True</attribute>
</xpath>
<xpath expr="//page[@name='membership']" position="attributes">
<attribute name="invisible">is_property == True</attribute>
</xpath>
<xpath expr="//page[@name='accounting']" position="attributes">
<attribute name="invisible">is_property == True</attribute>
</xpath>
<xpath expr="//field[@name='function']/ancestor::group[1]" position="attributes">
<attribute name="invisible">is_property == True</attribute>
</xpath>
<xpath expr="//field[@name='function']/ancestor::group[1]" position="after">
<group invisible="is_property == False">
<field name="surface"/>
<field name="category_id"
widget="many2many_tags"
options="{'color_field': 'color', 'no_create_edit': True}"
/>
</group>
</xpath>
<xpath expr="//page[@name='contact_addresses']" position="after">
<page string="Property" name="bemade_sethy_configuration.res_partner.defaults.form">
<field name="relation_property_ids" string="All Owners" invisible="is_property == False">
<tree>
<field name="other_partner_id"
required="True"
options="{'no_create': True}"
string="Owner"
/>
<field name="date_start"/>
<field name="date_end"/>
</tree>
</field>
<field name="relation_owner_ids" string="All Properties" invisible="is_property == True">
<tree>
<field name="other_partner_id"
required="True"
options="{'no_create': True}"
string="Property"
/>
<field name="date_start"/>
<field name="date_end"/>
</tree>
</field>
</page>
</xpath>
<xpath expr="//page[@name='contact_addresses']" position="after">
<page string="Sethy" name="bemade_sethy_configuration.res_partner.page.sethy">
<group>
<field name="ref_project"/>
<field name="intent_signing" invisible="is_property"/>
<field name="cyberimpact" invisible="is_property"/>
<field name="specification_date"/>
<field name="crm_stage_activity"/>
</group>
</page>
</xpath>
</field>
</record>
<record id="view_res_partner_search_inherit" model="ir.ui.view">
<field name="name">res.partner.search.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_res_partner_filter"/>
<field name="arch" type="xml">
<xpath expr="//filter[@name='inactive']" position="before">
<field name="ref"/>
<filter string="Owner" name="owner" domain="[('is_owner', '=', True)]"/>
</xpath>
</field>
</record>
<!-- <record id="view_res_partner_filter_inherit" model="ir.ui.view">-->
<!-- <field name="name">res.partner.select.inherit</field>-->
<!-- <field name="model">res.partner</field>-->
<!-- <field name="inherit_id" ref="base.view_res_partner_filter"/>-->
<!-- <field name="arch" type="xml">-->
<!-- <xpath expr="//search" position="inside">-->
<!-- <filter string="Owner" domain="[('category_id.name', '=', 'Owner')]" />-->
<!-- <filter string="Property" domain="[('category_id.name', '=', 'Property')]" />-->
<!-- </xpath>-->
<!-- </field>-->
<!-- </record>-->
<record id="contacts.action_contacts" model="ir.actions.act_window">
<field name="name">Contacts</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">tree,form</field>
<!-- Add your domain here -->
<field name="domain">[('is_property','=',False)]</field>
</record>
</odoo>

View file

@ -1 +0,0 @@
from . import transfer_property_wizard

View file

@ -1,44 +0,0 @@
from odoo import models, fields, api
from datetime import timedelta
class TransferPropertyWizard(models.TransientModel):
_name = 'transfer.property.wizard'
_description = 'Transfer Property Wizard'
property_id = fields.Many2one(
comodel_name='res.partner',
string='Property',
domain=[('is_property', '=', True)],
required=True
)
new_owner_id = fields.Many2many(
comodel_name='res.partner',
string='New Owner',
required=True,
domain=[('is_property', '=', False)],
)
transfer_date = fields.Date(
string='Transfer Date',
required=True,
default=fields.Date.today()
)
def action_transfer_property(self):
if self.property_id.relation_property_ids.filtered("active"):
for old_owner_relation in self.property_id.relation_property_ids.filtered("active"):
if old_owner_relation.date_start and old_owner_relation.date_start >= self.transfer_date:
old_owner_relation.unlink()
else:
old_owner_relation.write({'date_end': self.transfer_date - timedelta(days=1)})
old_owner_relation.this_partner_id._compute_owner()
for new_owner in self.new_owner_id:
self.env['res.partner.relation.all'].create({
'this_partner_id': new_owner.id,
'other_partner_id': self.property_id.id,
'type_id': self.env.ref('bemade_sethy_configuration.partner_relation_property').id,
'date_start': self.transfer_date,
})
new_owner._compute_owner()
return {'type': 'ir.actions.act_window_close'}

View file

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="property_transfer_wizard_form_view" model="ir.ui.view">
<field name="name">property.transfer.wizard.form</field>
<field name="model">transfer.property.wizard</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Property Wizard">
<group>
<field name="property_id"/>
<field name="transfer_date"/>
</group>
<group>
<field name="new_owner_id"/>
</group>
<footer>
<button name="action_transfer_property" string="Transfer Property" type="object" class="btn-primary"/>
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>