[IMP] using one model for document template instead of two different

This commit is contained in:
Stepan Savelyev 2020-01-13 17:17:45 +05:00
parent 0c711f58ef
commit 0964cf9672
6 changed files with 27 additions and 130 deletions

View File

@ -17,7 +17,6 @@
"security/ir.model.access.csv",
"views/res_partner_contract.xml",
"views/res_partner_contract_annex.xml",
"views/res_partner_template_print.xml",
"views/res_partner.xml",
"views/sale_order.xml",
"wizard/res_partner_contract_wizard.xml",

View File

@ -127,9 +127,9 @@ class PartnerContract(models.Model):
return _(arg)
class PrintTemplate(models.Model):
_name = "res.partner.template.print"
_description = "Print Template"
class DocumentTemplate(models.Model):
_name = "res.partner.document.template"
_description = "Document Template"
_order = "sequence"
name = fields.Char()
@ -143,16 +143,7 @@ class PrintTemplate(models.Model):
("plc", "Private Limited Company"),
]
)
template_type = fields.Selection(
selection=[("contract", "Contract"), ("annex", "Annex"),]
)
sequence = fields.Integer()
class PrintTemplateContract(models.Model):
_name = "res.partner.template.print.contract"
_inherit = "res.partner.template.print"
_description = "Print Template Contract"
class PrintTemplateAnnex(models.Model):
_name = "res.partner.template.print.annex"
_inherit = "res.partner.template.print"
_description = "Print Template Contract Annex"

View File

@ -10,20 +10,11 @@
<field name="view_type">form</field>
</record>
<!-- res.partner.template.print.contract action window -->
<record id="res_partner_print_contract_action" model="ir.actions.act_window">
<field name="name">res.partner.template.print.contract.action</field>
<!-- res.partner.document.template action window -->
<record id="res_partner_document_template_action" model="ir.actions.act_window">
<field name="name">res.partner.document.template.action</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner.template.print.contract</field>
<field name="view_mode">tree,form</field>
<field name="view_type">form</field>
</record>
<!-- res.partner.template.print.annex action window -->
<record id="res_partner_print_annex_action" model="ir.actions.act_window">
<field name="name">res.partner.template.print.annex.action</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner.template.print.annex</field>
<field name="res_model">res.partner.document.template</field>
<field name="view_mode">tree,form</field>
<field name="view_type">form</field>
</record>
@ -92,21 +83,10 @@
parent="res_partner_menu_contracts"
sequence="1"/>
<menuitem id="res_partner_menu_contracts_templates"
<menuitem id="res_partner_menu_contracts_templates_"
name="Templates"
parent="res_partner_menu_contracts"
sequence="2"/>
<menuitem id="res_partner_menu_contracts_templates_contract"
name="Contract"
parent="res_partner_menu_contracts_templates"
action="res_partner_print_contract_action"
sequence="1"/>
<menuitem id="res_partner_menu_contracts_templates_annex"
name="Annex"
parent="res_partner_menu_contracts_templates"
action="res_partner_print_annex_action"
action="res_partner_document_template_action"
sequence="2"/>
</odoo>

View File

@ -1,66 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data>
<!-- res.partner.template.print.contract tree view -->
<record id="res_partner_template_print_contract_view_tree" model="ir.ui.view">
<field name="name">res.partner.template.print.contract.view.tree</field>
<field name="model">res.partner.template.print.contract</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="company_type"/>
</tree>
</field>
</record>
<!-- res.partner.template.print.contract form view -->
<record id="res_partner_template_print_contract_view_form" model="ir.ui.view">
<field name="name">res.partner.template.print.contract.view.form</field>
<field name="model">res.partner.template.print.contract</field>
<field name="arch" type="xml">
<form string="Template Contract">
<sheet>
<group>
<field name="name"/>
<field name="attachment_id"/>
<field name="company_type"/>
<field name="sequence"/>
</group>
</sheet>
</form>
</field>
</record>
<!-- res.partner.template.print.annex tree view -->
<record id="res_partner_template_print_annex_view_tree" model="ir.ui.view">
<field name="name">res.partner.template.print.annex.view.tree</field>
<field name="model">res.partner.template.print.annex</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="company_type"/>
</tree>
</field>
</record>
<!-- res.partner.template.print.annex form view -->
<record id="res_partner_template_print_annex_view_form" model="ir.ui.view">
<field name="name">res.partner.template.print.annex.view.form</field>
<field name="model">res.partner.template.print.annex</field>
<field name="arch" type="xml">
<form string="Template Annex">
<sheet>
<group>
<field name="name"/>
<field name="attachment_id"/>
<field name="company_type"/>
<field name="sequence"/>
</group>
</sheet>
</form>
</field>
</record>
</data>
</odoo>

View File

@ -27,20 +27,16 @@ class ContractWizard(models.TransientModel):
)
company_id = fields.Many2one("res.partner", string="Company")
partner_id = fields.Many2one("res.partner", string="Partner")
print_template_contract = fields.Many2one(
"res.partner.template.print.contract", string="Print Template of Contract",
document_template = fields.Many2one(
"res.partner.document.template", string="Document Template", required=True,
)
print_template_annex = fields.Many2one(
"res.partner.template.print.annex", string="Print Template of Contract Annex",
)
transient_field_ids = fields.One2many(
"res.partner.contract.field.transient",
"_contract_wizard_id",
string="Contract Fields",
)
@api.onchange("target")
@api.onchange("document_template")
def _onchange_target(self):
"""Creates transient fields for generate contract template
Looks as a tree view of *_contract_field_transient model in xml
@ -111,21 +107,26 @@ class ContractWizard(models.TransientModel):
]
# Set up template domain
template_type = {
"res.partner.contract": "contract",
"res.partner.contract.annex": "annex",
}.get(active_model, False)
company_type = (
self.partner_id.company_form if self.partner_id.is_company else "person"
)
return {
"domain": {
"print_template_contract": [("company_type", "=", company_type)],
"print_template_annex": [("company_type", "=", company_type)],
"document_template": [
("template_type", "=", template_type),
("company_type", "=", company_type),
],
}
}
@api.multi
def get_docx_contract(self):
template = self._get_template()
if not template:
raise UserError("Template must be set up")
template = self.document_template
path_to_template = template._full_path(template.store_fname)
@ -176,11 +177,3 @@ class ContractWizard(models.TransientModel):
)
return document_as_attachment
@api.multi
def _get_template(self):
model_to_template = {
"res.partner.contract": self.print_template_contract.attachment_id,
"res.partner.contract.annex": self.print_template_annex.attachment_id,
}
return model_to_template.get(self.env.context.get("active_model"), False)

View File

@ -9,7 +9,7 @@
<form>
<group string="Template">
<field name="print_template_contract"></field>
<field name="document_template"></field>
</group>
<group name="requisites" string="Requisites">
<field name="target"/>
@ -43,7 +43,7 @@
<form>
<group string="Template">
<field name="print_template_annex"></field>
<field name="document_template"></field>
</group>
<group name="info" string="Info">
<field name="target"/>