New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ADD] condominium: Condominium #98
base: 17.0
Are you sure you want to change the base?
Conversation
cff695c
to
afd569c
Compare
e6da0e2
to
a934764
Compare
55452a5
to
bed049f
Compare
b148b5b
to
9563fdb
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @dhrs-odoo
Thanks for this very good work! Since it is good, I looked even deeper into it 👀
Could you have a look at all the comments?
Cheers!
<h2>Easily convert the homeowner associations 🖋️</h2> | ||
<p> | ||
As soon as the homeowner association reaches you to get a quote, quickly send them an overview of your services and fees by creating | ||
<span tabindex="-1" data-oe-protected="true" class="o_knowledge_view_link text-o-color-1 o_knowledge_behavior_anchor o_knowledge_behavior_type_view_link">Quotations</span> in the Sales application where you can directly use the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Quotations does not appear in the knowledge
condominium/__manifest__.py
Outdated
'account_check_printing', | ||
'account_followup', | ||
'appointment_account_payment', | ||
'contacts', | ||
'documents_hr', | ||
'documents_product', | ||
'documents_project_sale', | ||
'documents_spreadsheet', | ||
'helpdesk_sale_timesheet', | ||
'hr_skills', | ||
'sale_pdf_quote_builder', | ||
'sale_planning', | ||
'sale_subscription', | ||
'website_appointment', | ||
'website_helpdesk_knowledge', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As explained in task, to me it can reduced to
'account_check_printing', | |
'account_followup', | |
'appointment_account_payment', | |
'contacts', | |
'documents_hr', | |
'documents_product', | |
'documents_project_sale', | |
'documents_spreadsheet', | |
'helpdesk_sale_timesheet', | |
'hr_skills', | |
'sale_pdf_quote_builder', | |
'sale_planning', | |
'sale_subscription', | |
'website_appointment', | |
'website_helpdesk_knowledge', | |
'account_check_printing', | |
'account_followup', | |
'contacts', | |
'documents_product', | |
'documents_project_sale', | |
'documents_spreadsheet', | |
'helpdesk_sale_timesheet', | |
'sale_subscription', |
42cd4a3
to
92bb47a
Compare
for so in records: | ||
so.action_confirm() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reading twice... Why do we need this server action? Couldn't we call action_confirm directly on the view?
Also, no need to loop as this method works on a recordset.
for so in records: | |
so.action_confirm() | |
records.action_confirm() |
92bb47a
to
50a4ab5
Compare
Hello @vava-odoo |
…ed sale orders and lines and removed the link in knowledge artilce
6751537
to
e524bf5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the update @dhrs-odoo
Please find a few more comments about the updated version.
Keep the good work!
Cheers.
<function name="run" model="ir.actions.server" context="{'active_model': 'sale.order', 'active_id': ref('sale_order_144')}"> | ||
<value eval="[ref('ir_act_server_split_per_property')]"/> | ||
</function> | ||
<function name="run" model="ir.actions.server" context="{'active_model': 'sale.order', 'active_id': ref('sale_order_154')}"> | ||
<value eval="[ref('ir_act_server_split_per_property')]"/> | ||
</function> | ||
<function name="run" model="ir.actions.server" context="{'active_model': 'sale.order', 'active_id': ref('sale_order_166')}"> | ||
<value eval="[ref('ir_act_server_split_per_property')]"/> | ||
</function> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good! I think we still need to confirm some of the generated orders, as was the case originally.
<?xml version='1.0' encoding='UTF-8'?> | ||
<odoo> | ||
<record id="form_view_x_units_tag" model="ir.ui.view"> | ||
<field name="name">Default form view for x_units_tag</field> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you improve the name of the views?
<field name="x_tenant_id" optional="hide"/> | ||
<field name="x_tag_ids" widget="many2many_tags" options="{'color_field': 'x_color'}" optional="show"/> | ||
<field name="x_area" optional="show"/> | ||
<field name="x_area_percent" optional="show"/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<field name="x_area_percent" optional="show"/> | |
<field name="x_area_percent" optional="show" widget="percentage"/> |
<field name="type">map</field> | ||
<field name="arch" type="xml"> | ||
<map res_partner="x_partner_id"> | ||
<field name="x_partner_id" string="Partner"/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think Owner makes more sense
<field name="x_partner_id" string="Partner"/> | |
<field name="x_partner_id"/> |
</record> | ||
<record id='kanban_view_ir_model_custom' model='ir.ui.view'> | ||
<field name="name">Default kanban view for ir.model(790,) customization</field> | ||
<field name="model">x_units</field> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
?
<field name="model">x_units</field> | |
<field name="model">x_units</field> | |
<field name="type">kanban</field> |
<field name="arch" type="xml"> | ||
<data> | ||
<xpath expr="//field[@name='has_recurring_line']" position="after"> | ||
<button name="%(ir_act_server_split_per_property)d" string="Split per Property" type="action" invisible="not x_condominium_units_ids"/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't it using the one from the action by default?
<button name="%(ir_act_server_split_per_property)d" string="Split per Property" type="action" invisible="not x_condominium_units_ids"/> | |
<button name="%(ir_act_server_split_per_property)d" type="action" invisible="not x_condominium_units_ids"/> |
<field name="type">form</field> | ||
<field name="arch" type="xml"> | ||
<data> | ||
<xpath expr="//field[@name='has_recurring_line']" position="after"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it is not a good idea to do an xpath on an invisible field
<xpath expr="//field[@name='has_recurring_line']" position="after"> | |
<xpath expr="//header" position="inside"> |
</xpath> | ||
<xpath expr="//button[@name='action_sale_order_log']" position="after"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For me it can be removed, as it can be in the header as well, no?
</xpath> | |
<xpath expr="//button[@name='action_sale_order_log']" position="after"> |
<xpath expr="//group[@name='subscription_info']" position="after"> | ||
<xpath expr="//field[@name='commercial_partner_id']" position="move"/> | ||
</xpath> | ||
<xpath expr="//form//page[@name='other_information']//group[@name='sale_info']/label" position="before"> | ||
<xpath expr="//field[@name='show_update_fpos']" position="move"/> | ||
</xpath> | ||
<xpath expr="//button[@name='action_update_taxes']" position="before"> | ||
<xpath expr="//field[@name='fiscal_position_id']" position="move"/> | ||
</xpath> | ||
<xpath expr="//form//page[@name='other_information']//group[@name='sale_info']/div" position="after"> | ||
<xpath expr="//form//page[@name='other_information']//group[@name='sale_info']/field[@name='partner_invoice_id']" position="move"/> | ||
<xpath expr="//field[@name='analytic_account_id']" position="move"/> | ||
<xpath expr="//field[@name='visible_project']" position="move"/> | ||
<xpath expr="//field[@name='project_id']" position="move"/> | ||
<xpath expr="//field[@name='journal_id']" position="move"/> | ||
</xpath> | ||
<xpath expr="//form//page[@name='other_information']//group[@name='sale_info']/div" position="after"> | ||
<xpath expr="//form//page[@name='other_information']//group[@name='sale_info']/field[@name='invoice_status']" position="move"/> | ||
</xpath> | ||
<xpath expr="//span[@name='expected_date_span']" position="before"> | ||
<xpath expr="//field[@name='commitment_date']" position="move"/> | ||
</xpath> | ||
<xpath expr="//span[@name='expected_date_span']" position="inside"> | ||
<xpath expr="//field[@name='expected_date']" position="move"/> | ||
</xpath> | ||
<xpath expr="//group[@name='sale_reporting']" position="inside"> | ||
<xpath expr="//field[@name='origin']" position="move"/> | ||
<xpath expr="//field[@name='campaign_id']" position="move"/> | ||
<xpath expr="//field[@name='medium_id']" position="move"/> | ||
<xpath expr="//field[@name='source_id']" position="move"/> | ||
</xpath> | ||
<xpath expr="//form//page[@name='customer_signature']/group" position="inside"> | ||
<xpath expr="//field[@name='signed_by']" position="move"/> | ||
<xpath expr="//field[@name='signed_on']" position="move"/> | ||
<xpath expr="//field[@name='signature']" position="move"/> | ||
</xpath> | ||
<xpath expr="//page[@name='notes']" position="inside"> | ||
<xpath expr="//field[@name='internal_note_display']" position="move"/> | ||
</xpath> | ||
<xpath expr="//form/div" position="inside"> | ||
<xpath expr="//field[@name='message_follower_ids']" position="move"/> | ||
<xpath expr="//field[@name='activity_ids']" position="move"/> | ||
<xpath expr="//field[@name='message_ids']" position="move"/> | ||
</xpath> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need to move all those fields? 🤔
<data> | ||
<xpath expr="//kanban//templates//t/field[@name='country_id']" position="after"> | ||
<field name="x_condominiums_ids" display="full"/> | ||
</xpath> | ||
</data> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please, no <data>
in arch of inherited view
<data> | |
<xpath expr="//kanban//templates//t/field[@name='country_id']" position="after"> | |
<field name="x_condominiums_ids" display="full"/> | |
</xpath> | |
</data> | |
<xpath expr="//kanban//templates//t/field[@name='country_id']" position="after"> | |
<field name="x_condominiums_ids" display="full"/> | |
</xpath> |
This industry is tailor-made for condominium businesses that aim to manage co-ownership properties. Such a business is complex because it implies managing all the aspects of the properties while fairly splitting the charges.
Moreover, the business is legally regulated in lots of countries under different names: condo in the US, co-ownership in Canada, joint domination in the UK, property syndicate in France, syndic in Belgium, etc
Task: 3754260