Merge branch 'development' into 'master'
Development See merge request tabulasense/client_contracts!7
This commit is contained in:
commit
40140dd148
@ -1,2 +1,9 @@
|
|||||||
# client_contracts
|
# Account Contracts
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
Create and storage form for contracts. Generate a print form of document of contract.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
- Contract management: create, sign, close, renew
|
||||||
|
- Create .docx form of contract using any document template
|
||||||
|
- Fields in document fill from Odoo models
|
||||||
|
@ -1,4 +1,2 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
from . import controllers
|
|
||||||
from . import models
|
from . import models
|
||||||
|
from . import wizard
|
||||||
|
@ -1,35 +1,24 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
{
|
{
|
||||||
'name': "client_contracts",
|
"name": "client_contracts",
|
||||||
|
"summary": """
|
||||||
'summary': """
|
Print forms for contracts with clients""",
|
||||||
Module for storing and creating print forms for contracts with clients""",
|
"description": """
|
||||||
|
|
||||||
'description': """
|
|
||||||
Module for storing and creating print forms for contracts with clients
|
Module for storing and creating print forms for contracts with clients
|
||||||
""",
|
""",
|
||||||
|
"author": "RYDLAB",
|
||||||
'author': "RYDLAB",
|
"website": "http://rydlab.ru",
|
||||||
'website': "http://rydlab.ru",
|
"category": "Invoicing & Payments",
|
||||||
|
"version": "0.1.1",
|
||||||
# Categories can be used to filter modules in modules listing
|
"depends": ["base", "contacts", "russian_requisites", "sale",],
|
||||||
# Check https://github.com/odoo/odoo/blob/master/odoo/addons/base/module/module_data.xml
|
"data": [
|
||||||
# for the full list
|
"data/fields_default.xml",
|
||||||
'category': 'hr',
|
"data/payment_terms.xml",
|
||||||
'version': '0.1',
|
"security/ir.model.access.csv",
|
||||||
|
"views/res_partner_contract.xml",
|
||||||
# any module necessary for this one to work correctly
|
"views/res_partner_contract_annex.xml",
|
||||||
'depends': ['base', 'sale'],
|
"views/res_partner.xml",
|
||||||
|
"views/sale_order.xml",
|
||||||
# always loaded
|
"wizard/res_partner_contract_wizard.xml",
|
||||||
'data': [
|
|
||||||
# 'security/ir.model.access.csv',
|
|
||||||
'views/templates.xml',
|
|
||||||
'views/res_partner.xml',
|
|
||||||
'views/contract_wizard.xml',
|
|
||||||
],
|
|
||||||
# only loaded in demonstration mode
|
|
||||||
'demo': [
|
|
||||||
'demo/demo.xml',
|
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
from . import controllers
|
|
@ -1,16 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
from werkzeug import datastructures
|
|
||||||
|
|
||||||
from odoo import http
|
|
||||||
|
|
||||||
|
|
||||||
class ResPartnerContractBinary(http.Controller):
|
|
||||||
|
|
||||||
@http.route('/web/binary/get_compiled_contract')
|
|
||||||
def download_compiled_contract(self, doc_id, doc_name):
|
|
||||||
contract_wizard = http.request.env['res.partner.contract.wizard'].sudo().browse(int(doc_id))
|
|
||||||
file_content = contract_wizard.get_docx_contract_1()
|
|
||||||
headers = datastructures.Headers()
|
|
||||||
headers.add('Content-Disposition', 'attachment', filename=doc_name)
|
|
||||||
return http.request.make_response(file_content, headers)
|
|
346
data/fields_default.xml
Normal file
346
data/fields_default.xml
Normal file
@ -0,0 +1,346 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<!-- Action -->
|
||||||
|
<record id="action_get_contract_context" model="ir.actions.server">
|
||||||
|
<field name="name">Generate Context for Contract</field>
|
||||||
|
<field name="model_id" ref="client_contracts.model_res_partner_contract_wizard"/>
|
||||||
|
<field name="binding_model_id" ref="client_contracts.model_res_partner_contract_wizard" />
|
||||||
|
<field name="state">code</field>
|
||||||
|
<field name="code">
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
self = record
|
||||||
|
partner = self.partner_id # res.partner
|
||||||
|
partner_bank = partner.bank_ids[0] # res.partner.bank
|
||||||
|
seller = self.company_id
|
||||||
|
seller_bank = seller.bank_ids[0]
|
||||||
|
|
||||||
|
# ctx keys must be declared in this xml
|
||||||
|
ctx = {
|
||||||
|
"contract_number": self.name,
|
||||||
|
"date_conclusion": self.date_conclusion_fix or self.date_conclusion,
|
||||||
|
|
||||||
|
"seller_company_name": seller.name,
|
||||||
|
"seller_business_address": seller.full_address,
|
||||||
|
"seller_representer_name": seller.representative_id.name,
|
||||||
|
"seller_representer_name_parent": seller.representative_id.name_parent_case,
|
||||||
|
"seller_representer_name_initials": seller.representative_id.name_initials_case,
|
||||||
|
"seller_representer_function": seller.representative_id.function,
|
||||||
|
"seller_representer_function_parent_case": seller.representative_id.function_parent_case,
|
||||||
|
"seller_inn": seller.inn,
|
||||||
|
"seller_kpp": seller.kpp,
|
||||||
|
"seller_bic": False,
|
||||||
|
"seller_ogrn": seller.psrn,
|
||||||
|
"seller_bank": False,
|
||||||
|
"seller_bank_account": False,
|
||||||
|
"seller_phone": partner.phone,
|
||||||
|
|
||||||
|
"partner_company_name": partner.name,
|
||||||
|
"partner_business_address": partner.full_address,
|
||||||
|
"partner_representer_name": partner.representative_id.name,
|
||||||
|
"partner_representer_name_parent": partner.representative_id.name_parent_case,
|
||||||
|
"partner_representer_name_initials": partner.representative_id.name_initials_case,
|
||||||
|
"partner_representer_function": partner.representative_id.function,
|
||||||
|
"partner_representer_function_parent_case": partner.representative_id.function_parent_case,
|
||||||
|
"partner_inn": partner.inn,
|
||||||
|
"partner_kpp": partner.kpp,
|
||||||
|
"partner_bic": False,
|
||||||
|
"partner_ogrn": partner.psrn,
|
||||||
|
"partner_bank": False,
|
||||||
|
"partner_bank_account": False,
|
||||||
|
"partner_phone": partner.phone,
|
||||||
|
}
|
||||||
|
|
||||||
|
if partner_bank:
|
||||||
|
ctx.update({
|
||||||
|
"partner_bic": partner_bank.bank_id.bic,
|
||||||
|
"partner_bank": partner_bank.bank_id.name,
|
||||||
|
"partner_bank_account": partner_bank.acc_number,
|
||||||
|
})
|
||||||
|
|
||||||
|
if seller_bank:
|
||||||
|
ctx.update({
|
||||||
|
"seller_bic": seller_bank.bank_id.bic,
|
||||||
|
"seller_bank": seller_bank.bank_id.name,
|
||||||
|
"seller_bank_account": seller_bank.acc_number,
|
||||||
|
})
|
||||||
|
|
||||||
|
action = ctx
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Action -->
|
||||||
|
<record id="action_get_annex_context" model="ir.actions.server">
|
||||||
|
<field name="name">Generate Context for Contract</field>
|
||||||
|
<field name="model_id" ref="client_contracts.model_res_partner_contract_wizard"/>
|
||||||
|
<field name="binding_model_id" ref="client_contracts.model_res_partner_contract_wizard" />
|
||||||
|
<field name="state">code</field>
|
||||||
|
<field name="code">
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
self = record
|
||||||
|
order = self.order_id
|
||||||
|
seller = self.contract_id.company_id
|
||||||
|
partner = self.contract_id.partner_id
|
||||||
|
|
||||||
|
# Functions
|
||||||
|
modf = self.modf
|
||||||
|
|
||||||
|
# ctx keys must be decalared in this xml
|
||||||
|
ctx = {
|
||||||
|
"contract_number": self.contract_id.name,
|
||||||
|
|
||||||
|
"amount_whole": 0,
|
||||||
|
"amount_fractional": 0,
|
||||||
|
|
||||||
|
"payment_term": False,
|
||||||
|
"delivery_time": False,
|
||||||
|
|
||||||
|
"seller_company_name": seller.name,
|
||||||
|
"seller_representer_name": seller.representative_id.name,
|
||||||
|
"seller_representer_function": seller.representative_id.function,
|
||||||
|
|
||||||
|
"partner_company_name": partner.name,
|
||||||
|
"partner_representer_name": partner.representative_id.name,
|
||||||
|
"partner_representer_function": partner.representative_id.function,
|
||||||
|
}
|
||||||
|
|
||||||
|
if order:
|
||||||
|
amount = modf(order.amount_total)
|
||||||
|
fractional, whole = amount
|
||||||
|
|
||||||
|
payment_term = order.payment_term_id.name
|
||||||
|
payment_term = payment_term and payment_term.lower()
|
||||||
|
delivery_time = order.delivery_time
|
||||||
|
|
||||||
|
ctx.update({
|
||||||
|
"amount_whole": whole,
|
||||||
|
"amount_fractional": fractional,
|
||||||
|
|
||||||
|
"payment_term": payment_term,
|
||||||
|
"delivery_time": delivery_time,
|
||||||
|
})
|
||||||
|
|
||||||
|
action = ctx
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Common fields -->
|
||||||
|
|
||||||
|
<record id="contract_field_contract_number" model="res.partner.contract.field">
|
||||||
|
<field name="name">Contract Number</field>
|
||||||
|
<field name="technical_name">contract_number</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_contract_conclusion_date" model="res.partner.contract.field">
|
||||||
|
<field name="name">Conclusion Date</field>
|
||||||
|
<field name="technical_name">date_conclusion</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_amount_whole" model="res.partner.contract.field">
|
||||||
|
<field name="name">Amount Whole Part</field>
|
||||||
|
<field name="technical_name">amount_whole</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_amount_fractional" model="res.partner.contract.field">
|
||||||
|
<field name="name">Amount Fractional Part</field>
|
||||||
|
<field name="technical_name">amount_fractional</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_delivery_time" model="res.partner.contract.field">
|
||||||
|
<field name="name">Delivery Time</field>
|
||||||
|
<field name="technical_name">delivery_time</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_payment_term" model="res.partner.contract.field">
|
||||||
|
<field name="name">Payment Term</field>
|
||||||
|
<field name="technical_name">payment_term</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Seller -->
|
||||||
|
|
||||||
|
<record id="contract_field_seller_company_name" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller Company Name</field>
|
||||||
|
<field name="technical_name">seller_company_name</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_business_address" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller Business Address</field>
|
||||||
|
<field name="technical_name">seller_business_address</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_representer_name" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller Representer Name</field>
|
||||||
|
<field name="technical_name">seller_representer_name</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_representer_name_parent" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller Representer Parent Name</field>
|
||||||
|
<field name="technical_name">seller_representer_name_parent</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_representer_name_initials" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller Representer Initials Name</field>
|
||||||
|
<field name="technical_name">seller_representer_name_initials</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_representer_function" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller Representer Function</field>
|
||||||
|
<field name="technical_name">seller_representer_function</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_representer_function_parent_case" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller Representer Function Parent Case</field>
|
||||||
|
<field name="technical_name">seller_representer_function_parent_case</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_inn" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller INN</field>
|
||||||
|
<field name="technical_name">seller_inn</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_kpp" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller KPP</field>
|
||||||
|
<field name="technical_name">seller_kpp</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_bic" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller BIC</field>
|
||||||
|
<field name="technical_name">seller_bic</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_psrn" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller PSRN</field>
|
||||||
|
<field name="technical_name">seller_ogrn</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_bank" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller Bank Name</field>
|
||||||
|
<field name="technical_name">seller_bank</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_bank_account" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller Bank Account</field>
|
||||||
|
<field name="technical_name">seller_bank_account</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_seller_phone" model="res.partner.contract.field">
|
||||||
|
<field name="name">Seller Phone</field>
|
||||||
|
<field name="technical_name">seller_phone</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Partner -->
|
||||||
|
|
||||||
|
<record id="contract_field_partner_company_name" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner Company Name</field>
|
||||||
|
<field name="technical_name">partner_company_name</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_business_address" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner Business Address</field>
|
||||||
|
<field name="technical_name">partner_business_address</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_representer_name" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner Representer Name</field>
|
||||||
|
<field name="technical_name">partner_representer_name</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_representer_name_parent" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner Representer Parent Name</field>
|
||||||
|
<field name="technical_name">partner_representer_name_parent</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_representer_name_initials" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner Representer Initials Name</field>
|
||||||
|
<field name="technical_name">partner_representer_name_initials</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_representer_function" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner Representer Function</field>
|
||||||
|
<field name="technical_name">partner_representer_function</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_representer_function_parent_case" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner Representer Function Parent Case</field>
|
||||||
|
<field name="technical_name">partner_representer_function_parent_case</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_inn" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner INN</field>
|
||||||
|
<field name="technical_name">partner_inn</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_kpp" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner KPP</field>
|
||||||
|
<field name="technical_name">partner_kpp</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_bic" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner BIC</field>
|
||||||
|
<field name="technical_name">partner_bic</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_psrn" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner PSRN</field>
|
||||||
|
<field name="technical_name">partner_ogrn</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_bank" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner Bank Name</field>
|
||||||
|
<field name="technical_name">partner_bank</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_bank_account" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner Bank Account</field>
|
||||||
|
<field name="technical_name">partner_bank_account</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="contract_field_partner_phone" model="res.partner.contract.field">
|
||||||
|
<field name="name">Partner Phone</field>
|
||||||
|
<field name="technical_name">partner_phone</field>
|
||||||
|
<field name="description"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</odoo>
|
27
data/payment_terms.xml
Normal file
27
data/payment_terms.xml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<odoo>
|
||||||
|
<data noupdate="0">
|
||||||
|
|
||||||
|
<record id="payment_term_prepaid" model="account.payment.term">
|
||||||
|
<field name="name">100% Prepaid</field>
|
||||||
|
<field name="note">Payment terms: 100% Prepaid</field>
|
||||||
|
<field name="sequence">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="payment_term_postpayment" model="account.payment.term">
|
||||||
|
<field name="name">100% Postpaid</field>
|
||||||
|
<field name="note">Payment terms: 100% Postpaid</field>
|
||||||
|
<field name="sequence">2</field>
|
||||||
|
</record>
|
||||||
|
<record id="payment_term_partial_2" model="account.payment.term">
|
||||||
|
<field name="name">2 stages</field>
|
||||||
|
<field name="note">Payment terms: Partial 2 Stages</field>
|
||||||
|
<field name="sequence">3</field>
|
||||||
|
</record>
|
||||||
|
<record id="payment_term_partial_3" model="account.payment.term">
|
||||||
|
<field name="name">3 stages</field>
|
||||||
|
<field name="note">Payment terms: Partial 3 Stages</field>
|
||||||
|
<field name="sequence">4</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</odoo>
|
@ -1,30 +0,0 @@
|
|||||||
<odoo>
|
|
||||||
<data>
|
|
||||||
<!-- -->
|
|
||||||
<!-- <record id="object0" model="client_contracts.client_contracts"> -->
|
|
||||||
<!-- <field name="name">Object 0</field> -->
|
|
||||||
<!-- <field name="value">0</field> -->
|
|
||||||
<!-- </record> -->
|
|
||||||
<!-- -->
|
|
||||||
<!-- <record id="object1" model="client_contracts.client_contracts"> -->
|
|
||||||
<!-- <field name="name">Object 1</field> -->
|
|
||||||
<!-- <field name="value">10</field> -->
|
|
||||||
<!-- </record> -->
|
|
||||||
<!-- -->
|
|
||||||
<!-- <record id="object2" model="client_contracts.client_contracts"> -->
|
|
||||||
<!-- <field name="name">Object 2</field> -->
|
|
||||||
<!-- <field name="value">20</field> -->
|
|
||||||
<!-- </record> -->
|
|
||||||
<!-- -->
|
|
||||||
<!-- <record id="object3" model="client_contracts.client_contracts"> -->
|
|
||||||
<!-- <field name="name">Object 3</field> -->
|
|
||||||
<!-- <field name="value">30</field> -->
|
|
||||||
<!-- </record> -->
|
|
||||||
<!-- -->
|
|
||||||
<!-- <record id="object4" model="client_contracts.client_contracts"> -->
|
|
||||||
<!-- <field name="name">Object 4</field> -->
|
|
||||||
<!-- <field name="value">40</field> -->
|
|
||||||
<!-- </record> -->
|
|
||||||
<!-- -->
|
|
||||||
</data>
|
|
||||||
</odoo>
|
|
733
i18n/ru.po
Normal file
733
i18n/ru.po
Normal file
@ -0,0 +1,733 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * client_contracts
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 11.0-20191106\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2019-12-25 11:27+0000\n"
|
||||||
|
"PO-Revision-Date: 2019-12-25 11:27+0000\n"
|
||||||
|
"Last-Translator: Stepan Savelyev\n"
|
||||||
|
"Language-Team: RYDLAB\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_count
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_users_contract_count
|
||||||
|
msgid "# of contracts"
|
||||||
|
msgstr "кол-во договоров"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:account.payment.term,name:client_contracts.payment_term_postpayment
|
||||||
|
msgid "100% Postpaid"
|
||||||
|
msgstr "100% постоплата"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:account.payment.term,name:client_contracts.payment_term_prepaid
|
||||||
|
msgid "100% Prepaid"
|
||||||
|
msgstr "100% предоплата"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:account.payment.term,name:client_contracts.payment_term_partial_2
|
||||||
|
msgid "2 stages"
|
||||||
|
msgstr "Оплата в 2 этапа"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:account.payment.term,name:client_contracts.payment_term_partial_3
|
||||||
|
msgid "3 stages"
|
||||||
|
msgstr "Оплата в 3 этапа"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_street_actual
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_users_street_actual
|
||||||
|
msgid "Actual Address"
|
||||||
|
msgstr "Актуальный адрес"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_amount_fractional
|
||||||
|
msgid "Amount Fractional Part"
|
||||||
|
msgstr "Дробная часть суммы"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_amount_whole
|
||||||
|
msgid "Amount Whole Part"
|
||||||
|
msgstr "Целая часть суммы"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: code:addons/client_contracts/wizard/res_partner_contract_wizard.py:145
|
||||||
|
#: model:ir.ui.menu,name:client_contracts.res_partner_menu_contracts_templates_annex
|
||||||
|
#, python-format
|
||||||
|
msgid "Annex"
|
||||||
|
msgstr "Приложение"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_wizard_print_annex_view
|
||||||
|
msgid "Annex values"
|
||||||
|
msgstr "Поля в печатном приложении"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
||||||
|
msgid "Annexed orders"
|
||||||
|
msgstr "Приложенные заказы"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_contract_annex_ids
|
||||||
|
msgid "Annexes"
|
||||||
|
msgstr "Приложения"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_contract_annex_ids
|
||||||
|
msgid "Annexes to this contract"
|
||||||
|
msgstr "Приложения к договору"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_info_inherit_view
|
||||||
|
msgid "Banks"
|
||||||
|
msgstr "Банки"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_signature
|
||||||
|
msgid "Client signature"
|
||||||
|
msgstr "Подпись или печать"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Закрыть"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: selection:res.partner.contract,state:0
|
||||||
|
msgid "Closed"
|
||||||
|
msgstr "Закрыт"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_company_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_company_id
|
||||||
|
msgid "Company"
|
||||||
|
msgstr "Компания"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_date_conclusion
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_contract_conclusion_date
|
||||||
|
msgid "Conclusion Date"
|
||||||
|
msgstr "Дата подписания"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner
|
||||||
|
msgid "Contact"
|
||||||
|
msgstr "Контакт"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: code:addons/client_contracts/wizard/res_partner_contract_wizard.py:142
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner_contract
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_contract_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient__contract_wizard_id
|
||||||
|
#: model:ir.ui.menu,name:client_contracts.res_partner_menu_contracts
|
||||||
|
#: model:ir.ui.menu,name:client_contracts.res_partner_menu_contracts_templates_contract
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
||||||
|
#: selection:res.partner.contract.wizard,target:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Contract"
|
||||||
|
msgstr "Договор"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner_contract_annex
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_sale_order_contract_annex_id
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_annex_view_form
|
||||||
|
#: selection:res.partner.contract.wizard,target:0
|
||||||
|
msgid "Contract Annex"
|
||||||
|
msgstr "Приложение к договору"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_contract_annex_number
|
||||||
|
msgid "Contract Annex Number"
|
||||||
|
msgstr "Счётчик приложений к договору"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner_contract_field
|
||||||
|
msgid "Contract Field"
|
||||||
|
msgstr "Поле договора"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner_contract_field_transient
|
||||||
|
msgid "Contract Field Transient"
|
||||||
|
msgstr "Фактическое поле договора"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_transient_field_ids
|
||||||
|
msgid "Contract Fields"
|
||||||
|
msgstr "Поля договора"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_contract_number
|
||||||
|
msgid "Contract Number"
|
||||||
|
msgstr "Номер договора"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_name
|
||||||
|
msgid "Contract number"
|
||||||
|
msgstr "Номер договора"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
||||||
|
msgid "Contract parameters"
|
||||||
|
msgstr "Информация"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_wizard_print_contract_view
|
||||||
|
msgid "Contract values"
|
||||||
|
msgstr "Поля в печатном договоре"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.actions.act_window,name:client_contracts.res_partner_contract_action
|
||||||
|
#: model:ir.actions.act_window,name:client_contracts.res_partner_contract_partner_action
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_client_contract_ids
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_users_client_contract_ids
|
||||||
|
#: model:ir.ui.menu,name:client_contracts.res_partner_contract_menu_act
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_tree
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_view_buttons
|
||||||
|
msgid "Contracts"
|
||||||
|
msgstr "Договоры"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_contract_annex_number
|
||||||
|
msgid "Counter for generate Annex name"
|
||||||
|
msgstr "Счётчик для генерации имени приложения к договору"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_create_date_ts
|
||||||
|
msgid "Create Date Ts"
|
||||||
|
msgstr "Создан (таймстамп)"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_wizard_print_annex_view
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_wizard_print_contract_view
|
||||||
|
msgid "Create a document"
|
||||||
|
msgstr "Создать документ"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_create_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_create_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_create_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_create_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_create_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_annex_create_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_contract_create_uid
|
||||||
|
msgid "Created by"
|
||||||
|
msgstr "Создано"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_create_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_create_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_create_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_create_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_create_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_annex_create_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_contract_create_date
|
||||||
|
msgid "Created on"
|
||||||
|
msgstr "Создан"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_date_conclusion_fix
|
||||||
|
msgid "Date of manual conclusion"
|
||||||
|
msgstr "Дата подписания"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_date_conclusion
|
||||||
|
msgid "Date of system conclusion"
|
||||||
|
msgstr "Дата подписания системой"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_annex_is_default
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_contract_is_default
|
||||||
|
msgid "Default Template"
|
||||||
|
msgstr "Default Template"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_delivery_time
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_sale_order_delivery_time
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_delivery_time
|
||||||
|
msgid "Delivery Time"
|
||||||
|
msgstr "Срок доставки"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_description
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_description
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "Описание"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_display_name
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_display_name
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_display_name
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_display_name
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_display_name
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_annex_display_name
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_contract_display_name
|
||||||
|
msgid "Display Name"
|
||||||
|
msgstr "Отображаемое Имя"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_contract_field_id
|
||||||
|
msgid "Field"
|
||||||
|
msgstr "Поле"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_date_conclusion_fix
|
||||||
|
msgid "Field for manual edit when contract is signed or closed"
|
||||||
|
msgstr "Поле для ручного редактирования, когда договор подписан либо закрыт"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.menu,name:client_contracts.res_partner_menu_contracts_fields
|
||||||
|
msgid "Fields"
|
||||||
|
msgstr "Поля"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_full_address
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_users_full_address
|
||||||
|
msgid "Full Address"
|
||||||
|
msgstr "Полный адрес"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_function_parent_case
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_users_function_parent_case
|
||||||
|
msgid "Function Parent Case"
|
||||||
|
msgstr "Должность в родительном падеже"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.actions.server,name:client_contracts.action_get_annex_context
|
||||||
|
#: model:ir.actions.server,name:client_contracts.action_get_contract_context
|
||||||
|
msgid "Generate Context for Contract"
|
||||||
|
msgstr "Generate Context for Contract"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_annex_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_contract_id
|
||||||
|
msgid "ID"
|
||||||
|
msgstr "Номер"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_wizard_print_annex_view
|
||||||
|
msgid "Info"
|
||||||
|
msgstr "Информация"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract___last_update
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex___last_update
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field___last_update
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient___last_update
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard___last_update
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_annex___last_update
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_contract___last_update
|
||||||
|
msgid "Last Modified on"
|
||||||
|
msgstr "Последнее изменение"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_annex_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_contract_write_uid
|
||||||
|
msgid "Last Updated by"
|
||||||
|
msgstr "Последний раз обновлено"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_write_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_write_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_write_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_write_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_write_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_annex_write_date
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_contract_write_date
|
||||||
|
msgid "Last Updated on"
|
||||||
|
msgstr "Последний раз обновлено"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_annex_view_form
|
||||||
|
msgid "Leave empty for compute"
|
||||||
|
msgstr "Оставить пустым для автозаполнения..."
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_name
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_name
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_name
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "Название"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_name_initials_case
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_users_name_initials_case
|
||||||
|
msgid "Name Initials Case"
|
||||||
|
msgstr "Фамилия с инициалами"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_name_parent_case
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_users_name_parent_case
|
||||||
|
msgid "Name Parent Case"
|
||||||
|
msgstr "Полное имя в родительном падеже"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_field_technical_name
|
||||||
|
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_field_transient_technical_name
|
||||||
|
msgid "Name uses in template"
|
||||||
|
msgstr "Имя поля, используемое в шаблоне"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: selection:res.partner.contract,state:0
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Новый"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_order_id
|
||||||
|
msgid "Order"
|
||||||
|
msgstr "Заказ"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_partner_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_partner_id
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_wizard_print_contract_view
|
||||||
|
msgid "Partner"
|
||||||
|
msgstr "Партнёр"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_bic
|
||||||
|
msgid "Partner BIC"
|
||||||
|
msgstr "БИК Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_bank_account
|
||||||
|
msgid "Partner Bank Account"
|
||||||
|
msgstr "Расчётный счёт Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_bank
|
||||||
|
msgid "Partner Bank Name"
|
||||||
|
msgstr "Наименование банка Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_business_address
|
||||||
|
msgid "Partner Business Address"
|
||||||
|
msgstr "Юридический адрёс Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_company_name
|
||||||
|
msgid "Partner Company Name"
|
||||||
|
msgstr "Наименование компании Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_inn
|
||||||
|
msgid "Partner INN"
|
||||||
|
msgstr "ИНН Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_kpp
|
||||||
|
msgid "Partner KPP"
|
||||||
|
msgstr "КПП Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_psrn
|
||||||
|
msgid "Partner PSRN"
|
||||||
|
msgstr "ОГРН Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_phone
|
||||||
|
msgid "Partner Phone"
|
||||||
|
msgstr "Телефон Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_representer_function
|
||||||
|
msgid "Partner Representer Function"
|
||||||
|
msgstr "Должность представителя Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_representer_function_parent_case
|
||||||
|
msgid "Partner Representer Function Parent Case"
|
||||||
|
msgstr "Должность представителя Партнёра в родительном падеже"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_representer_name_initials
|
||||||
|
msgid "Partner Representer Initials Name"
|
||||||
|
msgstr "Фамилия с инициалами представителя Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_representer_name
|
||||||
|
msgid "Partner Representer Name"
|
||||||
|
msgstr "Полное имя представителя Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_partner_representer_name_parent
|
||||||
|
msgid "Partner Representer Parent Name"
|
||||||
|
msgstr "Полное имя в родительном падеже Партнёра"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_payment_term
|
||||||
|
msgid "Payment Term"
|
||||||
|
msgstr "Условия оплаты"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_payment_term
|
||||||
|
msgid "Payment Terms"
|
||||||
|
msgstr "Условия оплаты"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:account.payment.term,note:client_contracts.payment_term_postpayment
|
||||||
|
msgid "Payment terms: 100% Postpaid"
|
||||||
|
msgstr "Условия оплаты: постоплата"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:account.payment.term,note:client_contracts.payment_term_prepaid
|
||||||
|
msgid "Payment terms: 100% Prepaid"
|
||||||
|
msgstr "Условия оплаты: 100% предоплата"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:account.payment.term,note:client_contracts.payment_term_partial_2
|
||||||
|
msgid "Payment terms: Partial 2 Stages"
|
||||||
|
msgstr "Условия оплаты: частично в 2 этапа"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:account.payment.term,note:client_contracts.payment_term_partial_3
|
||||||
|
msgid "Payment terms: Partial 3 Stages"
|
||||||
|
msgstr "Условия оплаты: частично в 3 этапа"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,help:client_contracts.field_res_partner_representative_id
|
||||||
|
#: model:ir.model.fields,help:client_contracts.field_res_users_representative_id
|
||||||
|
msgid "Person, who represents company"
|
||||||
|
msgstr "Представитель компании"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_prepaid_expence
|
||||||
|
msgid "Prepaid Expence"
|
||||||
|
msgstr "Аванс"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_annex_view_form
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
||||||
|
msgid "Print"
|
||||||
|
msgstr "Печать"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: code:addons/client_contracts/models/res_partner_contract.py:91
|
||||||
|
#, python-format
|
||||||
|
msgid "Print Form of Contract"
|
||||||
|
msgstr "Форма печати договора"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: code:addons/client_contracts/models/res_partner_contract_annex.py:61
|
||||||
|
#, python-format
|
||||||
|
msgid "Print Form of Contract Annex"
|
||||||
|
msgstr "Форма печати приложения к договору"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner_template_print_contract
|
||||||
|
msgid "Print Template Contract"
|
||||||
|
msgstr "Вложение-шаблон договора"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner_template_print_annex
|
||||||
|
msgid "Print Template Contract Annex"
|
||||||
|
msgstr "Вложение-шаблон приложения к договору"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_print_template_contract
|
||||||
|
msgid "Print Template of Contract"
|
||||||
|
msgstr "Шаблон-Вложение договора"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_print_template_annex
|
||||||
|
msgid "Print Template of Contract Annex"
|
||||||
|
msgstr "Шаблон-Вложение приложения к договору"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_sale_order
|
||||||
|
msgid "Quotation"
|
||||||
|
msgstr "Предложение цен"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
||||||
|
msgid "Renew"
|
||||||
|
msgstr "Возобновлено"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_representative_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_users_representative_id
|
||||||
|
msgid "Representative"
|
||||||
|
msgstr "Представитель"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_wizard_print_contract_view
|
||||||
|
msgid "Requisites"
|
||||||
|
msgstr "Реквизиты"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.search_res_partner_contract_filter
|
||||||
|
msgid "Search Contract"
|
||||||
|
msgstr "Поиск договора"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_wizard_print_contract_view
|
||||||
|
msgid "Seller"
|
||||||
|
msgstr "Продавец"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_bic
|
||||||
|
msgid "Seller BIC"
|
||||||
|
msgstr "БИК Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_bank_account
|
||||||
|
msgid "Seller Bank Account"
|
||||||
|
msgstr "Расчётный счёт Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_bank
|
||||||
|
msgid "Seller Bank Name"
|
||||||
|
msgstr "Наименование банка Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_business_address
|
||||||
|
msgid "Seller Business Address"
|
||||||
|
msgstr "Юридический адрес Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_company_name
|
||||||
|
msgid "Seller Company Name"
|
||||||
|
msgstr "Наименование компании Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_inn
|
||||||
|
msgid "Seller INN"
|
||||||
|
msgstr "ИНН Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_kpp
|
||||||
|
msgid "Seller KPP"
|
||||||
|
msgstr "КПП Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_psrn
|
||||||
|
msgid "Seller PSRN"
|
||||||
|
msgstr "ОГРН Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_phone
|
||||||
|
msgid "Seller Phone"
|
||||||
|
msgstr "Телефон Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_representer_function
|
||||||
|
msgid "Seller Representer Function"
|
||||||
|
msgstr "Должность представителя Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_representer_function_parent_case
|
||||||
|
msgid "Seller Representer Function Parent Case"
|
||||||
|
msgstr "Должность представителя Продавца в родительном падеже"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_representer_name_initials
|
||||||
|
msgid "Seller Representer Initials Name"
|
||||||
|
msgstr "Фамилия с инициалами представителя Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_representer_name
|
||||||
|
msgid "Seller Representer Name"
|
||||||
|
msgstr "Полное имя представителя Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:res.partner.contract.field,name:client_contracts.contract_field_seller_representer_name_parent
|
||||||
|
msgid "Seller Representer Parent Name"
|
||||||
|
msgstr "Полное имя в родительном падеже Продавца"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
||||||
|
msgid "Sign"
|
||||||
|
msgstr "Подписано"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: selection:res.partner.contract,state:0
|
||||||
|
msgid "Signed"
|
||||||
|
msgstr "Подписан"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_state
|
||||||
|
msgid "Status"
|
||||||
|
msgstr "Статус"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_target
|
||||||
|
msgid "Target"
|
||||||
|
msgstr "Ссылка"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_technical_name
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_technical_name
|
||||||
|
msgid "Technical Name"
|
||||||
|
msgstr "Техническое название"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_annex_attachment_id
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_template_print_contract_attachment_id
|
||||||
|
msgid "Template Attachment"
|
||||||
|
msgstr "Вложение-шаблон"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.ui.menu,name:client_contracts.res_partner_menu_contracts_templates
|
||||||
|
msgid "Templates"
|
||||||
|
msgstr "Шаблоны"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_annex_name
|
||||||
|
msgid "The Number of Annex"
|
||||||
|
msgstr "Номер приложения"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_field_transient_value
|
||||||
|
msgid "Value"
|
||||||
|
msgstr "Значение"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner_contract_annex_line
|
||||||
|
msgid "res.partner.contract.annex.line"
|
||||||
|
msgstr "res.partner.contract.annex.line"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner_contract_annex_type
|
||||||
|
msgid "res.partner.contract.annex.type"
|
||||||
|
msgstr "res.partner.contract.annex.type"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.actions.act_window,name:client_contracts.res_partner_contract_field_action
|
||||||
|
msgid "res.partner.contract.field.action"
|
||||||
|
msgstr "res.partner.contract.field.action"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner_contract_template
|
||||||
|
msgid "res.partner.contract.template"
|
||||||
|
msgstr "res.partner.contract.template"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.model,name:client_contracts.model_res_partner_contract_wizard
|
||||||
|
msgid "res.partner.contract.wizard"
|
||||||
|
msgstr "res.partner.contract.wizard"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.actions.act_window,name:client_contracts.res_partner_print_annex_action
|
||||||
|
msgid "res.partner.template.print.annex.action"
|
||||||
|
msgstr "res.partner.template.print.annex.action"
|
||||||
|
|
||||||
|
#. module: client_contracts
|
||||||
|
#: model:ir.actions.act_window,name:client_contracts.res_partner_print_contract_action
|
||||||
|
msgid "res.partner.template.print.contract.action"
|
||||||
|
msgstr "res.partner.template.print.contract.action"
|
601
l18n/ru.po
601
l18n/ru.po
@ -1,601 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * client_contracts
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 11.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2018-11-12 06:53+0000\n"
|
|
||||||
"PO-Revision-Date: 2018-11-12 06:53+0000\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_adress
|
|
||||||
msgid " Context Partner Adress"
|
|
||||||
msgstr " Адрес покупателя в договоре"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_count
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_users_contract_count
|
|
||||||
msgid "# of contracts"
|
|
||||||
msgstr "кол-во договоров"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
|
||||||
msgid "Active"
|
|
||||||
msgstr "Актив"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_annex_lines
|
|
||||||
msgid "Annex Lines"
|
|
||||||
msgstr "Доп.условия"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_line_annex_type
|
|
||||||
msgid "Annex Type"
|
|
||||||
msgstr "Шаблоны доп.условий"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Annex info"
|
|
||||||
msgstr "Доп. условия"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Annex info lines"
|
|
||||||
msgstr "Строки доп.условий"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_type_description
|
|
||||||
msgid "Annex template description"
|
|
||||||
msgstr "Текст шаблона доп.условия"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_type_name
|
|
||||||
msgid "Annex template name"
|
|
||||||
msgstr "Название шаблона доп.условия"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.menu,name:client_contracts.res_partner_contract_annex_type_menu
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_annex_type_view
|
|
||||||
msgid "Annex type"
|
|
||||||
msgstr "Шаблон доп.условия"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
|
||||||
msgid "Annexed orders"
|
|
||||||
msgstr "Приложенные заказы"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_order_ids
|
|
||||||
msgid "Annexes"
|
|
||||||
msgstr "Приложения"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_order_ids
|
|
||||||
msgid "Annexes to this contract"
|
|
||||||
msgstr "Заказы, приложенные к этому договору"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_wizard_order_id
|
|
||||||
msgid "Appex"
|
|
||||||
msgstr "Заказ-приложение"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_order_id
|
|
||||||
msgid "Appex order"
|
|
||||||
msgstr "Заказ-приложение"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.actions.act_window,name:client_contracts.order_contract_tree
|
|
||||||
msgid "Appexes"
|
|
||||||
msgstr "Приложения"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_bank_account
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_users_bank_account
|
|
||||||
msgid "Bank account"
|
|
||||||
msgstr "Банковский счет"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_signature
|
|
||||||
msgid "Client signature"
|
|
||||||
msgstr "Подпись клиента/печать организации"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_company_id
|
|
||||||
msgid "Company"
|
|
||||||
msgstr "Компания"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Company values"
|
|
||||||
msgstr "Значения для продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model,name:client_contracts.model_res_partner
|
|
||||||
msgid "Contact"
|
|
||||||
msgstr "Контакт"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.actions.report,name:client_contracts.contract_appex_only_template_print
|
|
||||||
#: model:ir.actions.report,name:client_contracts.contract_company_template
|
|
||||||
#: model:ir.actions.report,name:client_contracts.contract_personal_template
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_contract_id
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_sale_order_contract_id
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Contract"
|
|
||||||
msgstr "Контракт"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_partner_id
|
|
||||||
msgid "Contract Partner"
|
|
||||||
msgstr "Покупатель"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_date
|
|
||||||
msgid "Contract date"
|
|
||||||
msgstr "Дата заключения договора"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_delivery_term
|
|
||||||
msgid "Contract delivery term"
|
|
||||||
msgstr "Сроки доставки"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_delivery_term_word
|
|
||||||
msgid "Contract delivery term word"
|
|
||||||
msgstr "Сроки доставки(прописью)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_job_name
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_users_contract_job_name
|
|
||||||
msgid "Contract job name"
|
|
||||||
msgstr "Должность(в родительногм падеже)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_name_5614
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_users_contract_name
|
|
||||||
msgid "Contract name"
|
|
||||||
msgstr "ФИО/название(в родительном падеже)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_name
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_name
|
|
||||||
msgid "Contract number"
|
|
||||||
msgstr "Номер договора"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_form
|
|
||||||
msgid "Contract parameters"
|
|
||||||
msgstr "Параметры договора"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_partner_id
|
|
||||||
msgid "Contract partner"
|
|
||||||
msgstr "Покупатель"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_payment_term
|
|
||||||
msgid "Contract payment term"
|
|
||||||
msgstr "Срок оплаты"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_payment_term_word
|
|
||||||
msgid "Contract payment term word"
|
|
||||||
msgstr "Срок оплаты(прописью)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_summ_word
|
|
||||||
msgid "Contract summ word"
|
|
||||||
msgstr "Сумма договора(прописью)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_summ_kop
|
|
||||||
msgid "Contract summ(kop)"
|
|
||||||
msgstr "Сумма договора(копейки)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_summ_rub
|
|
||||||
msgid "Contract summ(rub)"
|
|
||||||
msgstr "Сумма договора(рубли)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_summ_rub_word
|
|
||||||
msgid "Contract summ(rub), word"
|
|
||||||
msgstr "Сумма договора(рубли, прописью)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Contract values"
|
|
||||||
msgstr "Переменные для договора"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.actions.act_window,name:client_contracts.res_partner_contract_wizard_action
|
|
||||||
msgid "Contract wizard"
|
|
||||||
msgstr "Формирование печатной формы договора"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_sale_order_contract_id
|
|
||||||
msgid "Contract, assigned to this order"
|
|
||||||
msgstr "Договора, привязанные к этому заказу"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_client_contract_ids
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_users_client_contract_ids
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_tree
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_view_buttons
|
|
||||||
msgid "Contracts"
|
|
||||||
msgstr "Договора"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_client_contract_ids
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_users_client_contract_ids
|
|
||||||
msgid "Contracts for this partner"
|
|
||||||
msgstr "Договора этого покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_line_create_uid
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_type_create_uid
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_create_uid
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_create_uid
|
|
||||||
msgid "Created by"
|
|
||||||
msgstr "Создано"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_line_create_date
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_type_create_date
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_create_date
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_create_date
|
|
||||||
msgid "Created on"
|
|
||||||
msgstr "Создан"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_date
|
|
||||||
msgid "Date of conclusion"
|
|
||||||
msgstr "Дата заключения"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_date
|
|
||||||
msgid "Date, when contract was concluded"
|
|
||||||
msgstr "Дата, когда договор был заключен"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Delivery and payment terms"
|
|
||||||
msgstr "Сроки поставки и оплаты"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_delivery_terms
|
|
||||||
msgid "Delivery terms"
|
|
||||||
msgstr "Сроки поставки"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_line_description
|
|
||||||
msgid "Description"
|
|
||||||
msgstr "Описание"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_line_display_name
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_type_display_name
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_display_name
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_template_display_name
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_display_name
|
|
||||||
msgid "Display Name"
|
|
||||||
msgstr "Отображаемое Имя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Form DOCX from template"
|
|
||||||
msgstr "Сформировать DOCX из шаблона"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Form contract with company"
|
|
||||||
msgstr "Сформировать договор с фирмой"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Form contract with personal"
|
|
||||||
msgstr "Сформировать договор с частным лицом"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Form only appex contract"
|
|
||||||
msgstr "Сформировать только приложение"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_full_adress
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_users_full_adress
|
|
||||||
msgid "Full Adress"
|
|
||||||
msgstr "Полный адрес"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_line_id
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_type_id
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_id
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_template_id
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_id
|
|
||||||
msgid "ID"
|
|
||||||
msgstr "Номер"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_template_is_contract_template
|
|
||||||
msgid "Is Contract Template"
|
|
||||||
msgstr "Является шаблоном договора?"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_job_name
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_users_contract_job_name
|
|
||||||
msgid "Job position as it would be in contract"
|
|
||||||
msgstr "Название должности. как оно будет отображено в договоре"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract___last_update
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_line___last_update
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_type___last_update
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_template___last_update
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard___last_update
|
|
||||||
msgid "Last Modified on"
|
|
||||||
msgstr "Последнее изменение"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_line_write_uid
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_type_write_uid
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_template_write_uid
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_write_uid
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_write_uid
|
|
||||||
msgid "Last Updated by"
|
|
||||||
msgstr "Последний раз обновил"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_line_write_date
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_annex_type_write_date
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_template_write_date
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_write_date
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_write_date
|
|
||||||
msgid "Last Updated on"
|
|
||||||
msgstr "Последнее обновление"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_name_5614
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_users_contract_name
|
|
||||||
msgid "Name, as it would be in contract"
|
|
||||||
msgstr "ФИО, как оно будет отображено в договора"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_name
|
|
||||||
msgid "Number of contract, letters and digits"
|
|
||||||
msgstr "Номер договора. Генерируется автоматически"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Order info"
|
|
||||||
msgstr "Информация о заказе"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_partner_id
|
|
||||||
msgid "Partner"
|
|
||||||
msgstr "Партнёр"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_bik
|
|
||||||
msgid "Partner bank bik"
|
|
||||||
msgstr "БИК банка покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_bank
|
|
||||||
msgid "Partner bank name"
|
|
||||||
msgstr "Название банка покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_contract_name
|
|
||||||
msgid "Partner contract name"
|
|
||||||
msgstr "ФИО покупателя(в родительном падеже)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_rs
|
|
||||||
msgid "Partner corresponding account"
|
|
||||||
msgstr "Рассчетный счет покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_inn
|
|
||||||
msgid "Partner inn"
|
|
||||||
msgstr "ИНН покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_kpp
|
|
||||||
msgid "Partner kpp"
|
|
||||||
msgstr "КПП покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Partner parameters"
|
|
||||||
msgstr "Параметры покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_passport_data
|
|
||||||
msgid "Partner passport data"
|
|
||||||
msgstr "Паспортные данные покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_phone
|
|
||||||
msgid "Partner phone"
|
|
||||||
msgstr "Телефон покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_representer_name
|
|
||||||
msgid "Partner representer name"
|
|
||||||
msgstr "ФИО представителя покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_wizard_partner_id
|
|
||||||
msgid "Partner to render contract"
|
|
||||||
msgstr "Покупатель, с которым заключается контракт"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Partner values"
|
|
||||||
msgstr "Данные покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_passport_data
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_users_passport_data
|
|
||||||
msgid "Passport"
|
|
||||||
msgstr "Паспотрные данные"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_passport_data
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_users_passport_data
|
|
||||||
msgid "Passport data"
|
|
||||||
msgstr "Пасспортные данные"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_payment_terms
|
|
||||||
msgid "Payment term"
|
|
||||||
msgstr "Сроки оплаты"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_representative_id
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_users_representative_id
|
|
||||||
msgid "Person, who represents company"
|
|
||||||
msgstr "Человек, представляющий продавца/покупателя"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model,name:client_contracts.model_sale_order
|
|
||||||
msgid "Quotation"
|
|
||||||
msgstr "Оферта"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_representative_id
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_users_representative_id
|
|
||||||
msgid "Representative"
|
|
||||||
msgstr "Представитель"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.search_res_partner_contract_filter
|
|
||||||
msgid "Search Contract"
|
|
||||||
msgstr "Найти договор"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_bik
|
|
||||||
msgid "Seller bank bik"
|
|
||||||
msgstr "БИК банка продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_bank
|
|
||||||
msgid "Seller bank name"
|
|
||||||
msgstr "Название банка продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_wizard_company_id
|
|
||||||
msgid "Seller company"
|
|
||||||
msgstr "Компания-продавец"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_contract_name
|
|
||||||
msgid "Seller contract name"
|
|
||||||
msgstr "Название продавца(в родительном падеже)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_rs
|
|
||||||
msgid "Seller corresponding account"
|
|
||||||
msgstr "Рассчетный счет продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_adress
|
|
||||||
msgid "Seller full adress"
|
|
||||||
msgstr "Полный адрес продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_inn
|
|
||||||
msgid "Seller inn"
|
|
||||||
msgstr "ИНН продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_kpp
|
|
||||||
msgid "Seller kpp"
|
|
||||||
msgstr "КПП продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_wizard_view
|
|
||||||
msgid "Seller parameters"
|
|
||||||
msgstr "Параметры продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_phone
|
|
||||||
msgid "Seller phone"
|
|
||||||
msgstr "Телефон продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_representer_contract_job_name
|
|
||||||
msgid "Seller representer contract job name"
|
|
||||||
msgstr "Название должности представителя продавца(в родительном падеже)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_representer_contract_name
|
|
||||||
msgid "Seller representer contract name"
|
|
||||||
msgstr "ФИО представителя продавца(в родительном падеже)"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_representer_job_name
|
|
||||||
msgid "Seller representer job name"
|
|
||||||
msgstr "Должность представителя продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_seller_representer_name
|
|
||||||
msgid "Seller representer name"
|
|
||||||
msgstr "ФИО представителя продавца"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_template
|
|
||||||
#: model:ir.ui.view,arch_db:client_contracts.res_partner_contract_template_view
|
|
||||||
msgid "Template"
|
|
||||||
msgstr "Шаблон"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_wizard_template
|
|
||||||
msgid "Template for contract"
|
|
||||||
msgstr "Шаблон договора"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.ui.menu,name:client_contracts.res_partner_contract_templates
|
|
||||||
msgid "Templates"
|
|
||||||
msgstr "Шаблоны"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard_type
|
|
||||||
msgid "Type of contract"
|
|
||||||
msgstr "Тип договора"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_wizard_payment_terms
|
|
||||||
msgid "When customer must pay"
|
|
||||||
msgstr "Срок оплаты счета покупателем"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,help:client_contracts.field_res_partner_contract_wizard_delivery_terms
|
|
||||||
msgid "When product must be delivered"
|
|
||||||
msgstr "Срок доставки товара покупателю"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: selection:res.partner.contract.wizard,type:0
|
|
||||||
msgid "With company"
|
|
||||||
msgstr "С фирмой"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: selection:res.partner.contract.wizard,type:0
|
|
||||||
msgid "With person"
|
|
||||||
msgstr "С частным лицом"
|
|
||||||
|
|
||||||
#. module: client_contracts
|
|
||||||
#: model:ir.model.fields,field_description:client_contracts.field_res_partner_contract_wizard__context_partner_representer_contract_name
|
|
||||||
msgid "partner representer contract name"
|
|
||||||
msgstr "ФИО представителя покупателя(в родительном падеже)"
|
|
@ -1,3 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
from . import res_partner
|
||||||
|
from . import res_partner_contract
|
||||||
from . import models, contract_wizard
|
from . import res_partner_contract_annex
|
||||||
|
from . import res_partner_contract_field
|
||||||
|
from . import res_partner_contract_field_transient
|
||||||
|
from . import sale_order
|
||||||
|
@ -1,408 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
import math
|
|
||||||
|
|
||||||
from datetime import datetime
|
|
||||||
from docxtpl import DocxTemplate
|
|
||||||
from pytils import numeral
|
|
||||||
|
|
||||||
from odoo import models, fields, api
|
|
||||||
from odoo.tools.config import config
|
|
||||||
|
|
||||||
|
|
||||||
class AnnexLine(models.TransientModel):
|
|
||||||
_name = 'res.partner.contract.annex.line'
|
|
||||||
|
|
||||||
@api.onchange('annex_type')
|
|
||||||
def _get_default_description(self):
|
|
||||||
self.description = self.annex_type.description
|
|
||||||
|
|
||||||
annex_type = fields.Many2one('res.partner.contract.annex.type')
|
|
||||||
description = fields.Text()
|
|
||||||
|
|
||||||
|
|
||||||
class ContractWizard(models.TransientModel):
|
|
||||||
_name = 'res.partner.contract.wizard'
|
|
||||||
|
|
||||||
def _get_default_template(self):
|
|
||||||
_template = self.env['res.partner.contract.template'].search([('is_contract_template', '=', True)])
|
|
||||||
if _template:
|
|
||||||
return _template[0].id
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def _get_default_partner(self):
|
|
||||||
current_id = self.env.context.get('active_ids')
|
|
||||||
return self.env['res.partner.contract'].browse([current_id[0]]).partner_id.id
|
|
||||||
|
|
||||||
def _get_default_contract(self):
|
|
||||||
current_id = self.env.context.get('active_ids')
|
|
||||||
return self.env['res.partner.contract'].browse(current_id[0])
|
|
||||||
|
|
||||||
def _get_partner_representer(self):
|
|
||||||
return self.partner_id.representative_id
|
|
||||||
|
|
||||||
type = fields.Selection(string='Type of contract',
|
|
||||||
selection=[('person', 'With person'), ('company', 'With company')],
|
|
||||||
default='company')
|
|
||||||
|
|
||||||
template = fields.Many2one('res.partner.contract.template',
|
|
||||||
string='Template',
|
|
||||||
help='Template for contract',
|
|
||||||
default=_get_default_template)
|
|
||||||
partner_id = fields.Many2one('res.partner',
|
|
||||||
string='Partner',
|
|
||||||
help='Partner to render contract',
|
|
||||||
default=_get_default_partner)
|
|
||||||
order_id = fields.Many2one('sale.order',
|
|
||||||
string='Appex order',
|
|
||||||
help='Appex',
|
|
||||||
)
|
|
||||||
company_id = fields.Many2one('res.partner',
|
|
||||||
string='Company',
|
|
||||||
help='Seller company',
|
|
||||||
default=lambda self: self.env.user.company_id.partner_id)
|
|
||||||
|
|
||||||
contract_id = fields.Many2one('res.partner.contract',
|
|
||||||
string='Contract',
|
|
||||||
default=_get_default_contract)
|
|
||||||
payment_terms = fields.Integer(string='Payment term',
|
|
||||||
help='When customer must pay',
|
|
||||||
default=45)
|
|
||||||
delivery_terms = fields.Integer(string='Delivery terms',
|
|
||||||
help='When product must be delivered',
|
|
||||||
default=10)
|
|
||||||
|
|
||||||
annex_lines = fields.One2many('res.partner.contract.annex.line', 'id', auto_join=True, copy=True)
|
|
||||||
|
|
||||||
@api.depends('contract_id')
|
|
||||||
def _compute_context_name(self):
|
|
||||||
self._context_name = self.contract_id.name
|
|
||||||
|
|
||||||
@api.depends('contract_id')
|
|
||||||
def _compute_context_date(self):
|
|
||||||
contract_date = datetime.strptime(self.contract_id.date, '%Y-%m-%d')
|
|
||||||
self._context_date = contract_date.strftime('%d %B %Y')
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
def _compute_context_partner_contract_name(self):
|
|
||||||
self._context_partner_contract_name = self.partner_id.contract_name
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
def _compute_context_partner_adress(self):
|
|
||||||
self._compute_context_partner_adress = self.partner_id.full_adress
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
def _compute_context_partner_representer_contract_name(self):
|
|
||||||
if self.partner_id.representative_id:
|
|
||||||
partner_representer_contract_name = self.partner_id.representative_id.contract_name
|
|
||||||
else:
|
|
||||||
partner_representer_contract_name = ''
|
|
||||||
self._context_partner_representer_contract_name = partner_representer_contract_name
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
def _compute_context_partner_inn(self):
|
|
||||||
self._context_partner_inn = self.partner_id.inn
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
def _compute_context_partner_kpp(self):
|
|
||||||
self._context_partner_kpp = self.partner_id.kpp
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
def _compute_context_partner_rs(self):
|
|
||||||
self._context_partner_rs = self.partner_id.bank_account.acc_number
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
def _compute_context_partner_bik(self):
|
|
||||||
self._context_partner_bik = self.partner_id.bank_account.bank_id.bic
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
def _compute_context_partner_bank(self):
|
|
||||||
self._context_partner_bank = self.partner_id.bank_account.bank_id.name
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
def _compute_context_partner_phone(self):
|
|
||||||
self._context_partner_phone = self.partner_id.phone
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
def _compute_context_partner_representer_name(self):
|
|
||||||
self._context_partner_representer_name = self.partner_id.representative_id.name
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_contract_name(self):
|
|
||||||
self._context_seller_contract_name = self.company_id.contract_name
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_adress(self):
|
|
||||||
self._context_seller_adress = self.company_id.full_adress
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_representer_contract_job_name(self):
|
|
||||||
if self.company_id.representative_id:
|
|
||||||
seller_represent_contract_job_name = self.company_id.representative_id.contract_job_name
|
|
||||||
else:
|
|
||||||
seller_represent_contract_job_name = ''
|
|
||||||
self._context_seller_representer_contract_job_name = seller_represent_contract_job_name
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_representer_contract_name(self):
|
|
||||||
if self.company_id.representative_id:
|
|
||||||
seller_represent_contract_name = self.company_id.representative_id.contract_name
|
|
||||||
else:
|
|
||||||
seller_represent_contract_name = ''
|
|
||||||
self._context_seller_representer_contract_name = seller_represent_contract_name
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_inn(self):
|
|
||||||
self._context_seller_inn = self.company_id.inn
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_kpp(self):
|
|
||||||
self._context_seller_kpp = self.company_id.kpp
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_rs(self):
|
|
||||||
self._context_seller_rs = self.company_id.bank_account.acc_number
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_bik(self):
|
|
||||||
self._context_seller_bik = self.company_id.bank_account.bank_id.bic
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_bank(self):
|
|
||||||
self._context_seller_bank = self.company_id.bank_account.bank_id.name
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_phone(self):
|
|
||||||
self._context_seller_phone = self.company_id.phone
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_representer_job_name(self):
|
|
||||||
if self.company_id.representative_id:
|
|
||||||
seller_represent_job_name = self.company_id.representative_id.function
|
|
||||||
else:
|
|
||||||
seller_represent_job_name = ''
|
|
||||||
self._context_seller_representer_job_name = seller_represent_job_name
|
|
||||||
|
|
||||||
@api.depends('company_id')
|
|
||||||
def _compute_context_seller_representer_name(self):
|
|
||||||
if self.company_id.representative_id:
|
|
||||||
seller_represent_name = self.company_id.representative_id.name
|
|
||||||
else:
|
|
||||||
seller_represent_name = ''
|
|
||||||
self._context_seller_representer_name = seller_represent_name
|
|
||||||
|
|
||||||
@api.depends('order_id')
|
|
||||||
def _compute_context_summ_rub(self):
|
|
||||||
if self.order_id:
|
|
||||||
amount = math.modf(self.order_id.amount_total)
|
|
||||||
else:
|
|
||||||
amount = math.modf(0.0)
|
|
||||||
self._context_summ_rub = str(int(amount[1]))
|
|
||||||
|
|
||||||
@api.depends('order_id')
|
|
||||||
def _compute_context_summ_rub_word(self):
|
|
||||||
if self.order_id:
|
|
||||||
amount = math.modf(self.order_id.amount_total)
|
|
||||||
else:
|
|
||||||
amount = math.modf(0.0)
|
|
||||||
self._context_summ_rub_word = numeral.in_words(int(amount[1]))
|
|
||||||
|
|
||||||
@api.depends('order_id')
|
|
||||||
def _compute_context_summ_kop(self):
|
|
||||||
if self.order_id:
|
|
||||||
amount = math.modf(self.order_id.amount_total)
|
|
||||||
self._context_summ_kop = str(int(amount[0]))
|
|
||||||
else:
|
|
||||||
self._context_summ_kop = '0'
|
|
||||||
|
|
||||||
@api.depends('order_id')
|
|
||||||
def _compute_context_summ_word(self):
|
|
||||||
self._context_summ_word = numeral.rubles(self.order_id.amount_total)
|
|
||||||
|
|
||||||
@api.depends('delivery_terms')
|
|
||||||
def _compute_context_delivery_term(self):
|
|
||||||
self._context_delivery_term = self.delivery_terms
|
|
||||||
|
|
||||||
@api.depends('delivery_terms')
|
|
||||||
def _compute_context_delivery_term_word(self):
|
|
||||||
self._context_delivery_term_word = numeral.in_words(self.delivery_terms)
|
|
||||||
|
|
||||||
@api.depends('payment_terms')
|
|
||||||
def _compute_context_payment_term(self):
|
|
||||||
self._context_payment_term = self.payment_terms
|
|
||||||
|
|
||||||
@api.depends('payment_terms')
|
|
||||||
def _compute_context_payment_term_word(self):
|
|
||||||
self._context_payment_term_word = numeral.in_words(self.payment_terms)
|
|
||||||
|
|
||||||
_context_name = fields.Char(string='Contract number', compute='_compute_context_name', readonly=True)
|
|
||||||
_context_date = fields.Char(string='Contract date', compute='_compute_context_date', readonly=True)
|
|
||||||
_context_partner_contract_name = fields.Char(string='Partner contract name',
|
|
||||||
compute='_compute_context_partner_contract_name', readonly=True)
|
|
||||||
_context_partner_adress = fields.Char(compute='_compute_context_partner_adress', readonly=True)
|
|
||||||
_context_partner_representer_contract_name = fields.Char(string='partner representer contract name',
|
|
||||||
compute='_compute_context_partner_representer_contract_name', readonly=True)
|
|
||||||
_context_partner_inn = fields.Char(string='Partner inn', compute='_compute_context_partner_inn', readonly=True)
|
|
||||||
_context_partner_kpp = fields.Char(string='Partner kpp', compute='_compute_context_partner_kpp', readonly=True)
|
|
||||||
_context_partner_rs = fields.Char(string='Partner corresponding account',
|
|
||||||
compute='_compute_context_partner_rs',
|
|
||||||
readonly=True)
|
|
||||||
_context_partner_bik = fields.Char(string='Partner bank bik',
|
|
||||||
compute='_compute_context_partner_bik',
|
|
||||||
readonly=True)
|
|
||||||
_context_partner_bank = fields.Char(string='Partner bank name',
|
|
||||||
compute='_compute_context_partner_bank',
|
|
||||||
readonly=True)
|
|
||||||
_context_partner_phone = fields.Char(string='Partner phone',
|
|
||||||
compute='_compute_context_partner_phone',
|
|
||||||
readonly=True)
|
|
||||||
_context_partner_representer_name = fields.Char(string='Partner representer name',
|
|
||||||
compute='_compute_context_partner_representer_name',
|
|
||||||
readonly=True)
|
|
||||||
_context_seller_contract_name = fields.Char(string='Seller contract name',
|
|
||||||
compute='_compute_context_seller_contract_name',
|
|
||||||
readonly=True)
|
|
||||||
_context_seller_adress = fields.Char(string='Seller full adress',
|
|
||||||
compute='_compute_context_seller_adress',
|
|
||||||
readonly=True)
|
|
||||||
_context_seller_representer_contract_job_name = fields.Char(string='Seller representer contract job name',
|
|
||||||
compute='_compute_context_seller_representer_contract_job_name', readonly=True)
|
|
||||||
_context_seller_representer_contract_name = fields.Char(string='Seller representer contract name',
|
|
||||||
compute='_compute_context_seller_representer_contract_name',
|
|
||||||
readonly=True)
|
|
||||||
_context_seller_inn = fields.Char(string='Seller inn', compute='_compute_context_seller_inn', readonly=True)
|
|
||||||
_context_seller_kpp = fields.Char(string='Seller kpp', compute='_compute_context_seller_kpp', readonly=True)
|
|
||||||
_context_seller_rs = fields.Char(string='Seller corresponding account',
|
|
||||||
compute='_compute_context_seller_rs',
|
|
||||||
readonly=True)
|
|
||||||
_context_seller_bik = fields.Char(string='Seller bank bik', compute='_compute_context_seller_bik', readonly=True)
|
|
||||||
_context_seller_bank = fields.Char(string='Seller bank name', compute='_compute_context_seller_bank', readonly=True)
|
|
||||||
_context_seller_phone = fields.Char(string='Seller phone', compute='_compute_context_seller_phone', readonly=True)
|
|
||||||
_context_seller_representer_job_name = fields.Char(string='Seller representer job name',
|
|
||||||
compute='_compute_context_seller_representer_job_name',
|
|
||||||
readonly=True)
|
|
||||||
_context_seller_representer_name = fields.Char(string='Seller representer name',
|
|
||||||
compute='_compute_context_seller_representer_name', readonly=True)
|
|
||||||
_context_summ_rub = fields.Char(string='Contract summ(rub)', compute='_compute_context_summ_rub', readonly=True)
|
|
||||||
_context_summ_rub_word = fields.Char(string='Contract summ(rub), word',
|
|
||||||
compute='_compute_context_summ_rub_word',
|
|
||||||
readonly=True)
|
|
||||||
_context_summ_kop = fields.Char(string='Contract summ(kop)', compute='_compute_context_summ_kop', readonly=True)
|
|
||||||
_context_summ_word = fields.Char(string='Contract summ word', compute='_compute_context_summ_word', readonly=True)
|
|
||||||
_context_delivery_term = fields.Char(string='Contract delivery term',
|
|
||||||
compute='_compute_context_delivery_term',
|
|
||||||
readonly=True)
|
|
||||||
_context_delivery_term_word = fields.Char(string='Contract delivery term word',
|
|
||||||
compute='_compute_context_delivery_term_word',
|
|
||||||
readonly=True)
|
|
||||||
_context_payment_term = fields.Char(string='Contract payment term',
|
|
||||||
compute='_compute_context_payment_term', readonly=True)
|
|
||||||
_context_payment_term_word = fields.Char(string='Contract payment term word',
|
|
||||||
compute='_compute_context_payment_term_word', readonly=True)
|
|
||||||
_context_partner_passport_data = fields.Char(string='Partner passport data',
|
|
||||||
compute='_compute_partner_passport_data',
|
|
||||||
readonly=True)
|
|
||||||
|
|
||||||
@api.onchange('partner_id')
|
|
||||||
def _compute_partner_passport_data(self):
|
|
||||||
return self.partner_id.passport_data
|
|
||||||
|
|
||||||
@api.onchange('partner_id')
|
|
||||||
def _set_order_domain(self):
|
|
||||||
current_id = self.env.context.get('active_ids')
|
|
||||||
domain = [('contract_id', '=', current_id)]
|
|
||||||
return {'domain': {'order_id': domain}}
|
|
||||||
|
|
||||||
def _generate_context(self):
|
|
||||||
contract_date = datetime.strptime(self.contract_id.date, '%Y-%m-%d')
|
|
||||||
if self.partner_id.representative_id:
|
|
||||||
partner_representer_contract_name = self.partner_id.representative_id.contract_name
|
|
||||||
else:
|
|
||||||
partner_representer_contract_name = ''
|
|
||||||
|
|
||||||
if self.company_id.representative_id:
|
|
||||||
seller_represent_contract_name = self.company_id.representative_id.contract_name
|
|
||||||
seller_represent_contract_job_name = self.company_id.representative_id.contract_job_name
|
|
||||||
seller_represent_name = self.company_id.representative_id.name
|
|
||||||
seller_represent_job_name = self.company_id.representative_id.function
|
|
||||||
else:
|
|
||||||
seller_represent_contract_name = ''
|
|
||||||
seller_represent_contract_job_name = ''
|
|
||||||
seller_represent_name = ''
|
|
||||||
seller_represent_job_name = ''
|
|
||||||
|
|
||||||
amount = math.modf(self.order_id.amount_total)
|
|
||||||
|
|
||||||
order_goods = []
|
|
||||||
counter = 1
|
|
||||||
for line in self.order_id.order_line:
|
|
||||||
order_line_values = {'label': counter,
|
|
||||||
'description': line.name,
|
|
||||||
'count': line.product_qty,
|
|
||||||
'mesure': line.product_uom.name,
|
|
||||||
'price': line.price_unit,
|
|
||||||
'amount': line.price_total}
|
|
||||||
order_goods.append(order_line_values)
|
|
||||||
counter += 1
|
|
||||||
|
|
||||||
annex_terms = ''
|
|
||||||
counter = 1
|
|
||||||
for line in self.annex_lines:
|
|
||||||
annex_terms = annex_terms + '{}) {}\n'.format(counter, line.description)
|
|
||||||
counter += 1
|
|
||||||
context = {'name': self.contract_id.name,
|
|
||||||
'current_date': contract_date.strftime('%d %b %Y'),
|
|
||||||
'partner_contract_name': self.partner_id.contract_name,
|
|
||||||
'partner_adress': self.partner_id.full_adress,
|
|
||||||
'partner_representer_contract_name': partner_representer_contract_name,
|
|
||||||
'partner_inn': self.partner_id.inn,
|
|
||||||
'partner_kpp': self.partner_id.kpp,
|
|
||||||
'partner_rs': self.partner_id.bank_account.acc_number,
|
|
||||||
'partner_bik': self.partner_id.bank_account.bank_id.bic,
|
|
||||||
'partner_bank': self.partner_id.bank_account.bank_id.name,
|
|
||||||
'partner_passport_data': self.partner_id.passport_data,
|
|
||||||
'partner_phone': self.partner_id.phone,
|
|
||||||
'partner_representer_name': self.partner_id.representative_id.name,
|
|
||||||
'seller_contract_name': self.company_id.contract_name,
|
|
||||||
'seller_adress': self.company_id.full_adress,
|
|
||||||
'seller_representer_contract_job_name': seller_represent_contract_job_name,
|
|
||||||
'seller_representer_contract_name': seller_represent_contract_name,
|
|
||||||
'seller_inn': self.company_id.inn,
|
|
||||||
'seller_kpp': self.company_id.kpp,
|
|
||||||
'seller_rs': self.company_id.bank_account.acc_number,
|
|
||||||
'seller_bik': self.company_id.bank_account.bank_id.bic,
|
|
||||||
'seller_bank': self.company_id.bank_account.bank_id.name,
|
|
||||||
'seller_phone': self.company_id.phone,
|
|
||||||
'seller_representer_job_name': seller_represent_job_name,
|
|
||||||
'seller_representer_name': seller_represent_name,
|
|
||||||
'summ_rub': int(amount[1]),
|
|
||||||
'summ_rub_word': numeral.in_words(int(amount[1])),
|
|
||||||
'summ_kop': int(amount[0]),
|
|
||||||
'delivery_term': self.delivery_terms,
|
|
||||||
'delivery_term_word': numeral.in_words(self.delivery_terms),
|
|
||||||
'payment_term': self.payment_terms,
|
|
||||||
'payment_term_word': numeral.in_words(self.payment_terms),
|
|
||||||
'annex_terms': annex_terms,
|
|
||||||
'order_goods': order_goods,
|
|
||||||
}
|
|
||||||
return context
|
|
||||||
|
|
||||||
def get_docx_contract_1(self):
|
|
||||||
odoo_data_dir = config.get("data_dir")
|
|
||||||
odoo_bd = config.get("db_name")
|
|
||||||
filename = self.template.store_fname
|
|
||||||
full_path = '{}/filestore/{}/{}'.format(odoo_data_dir, odoo_bd, filename)
|
|
||||||
context = self._generate_context()
|
|
||||||
doc = DocxTemplate(full_path)
|
|
||||||
doc.render(context)
|
|
||||||
doc.save('tmp.docx')
|
|
||||||
return open('tmp.docx', 'rb').read()
|
|
||||||
|
|
||||||
def get_docx_contract(self):
|
|
||||||
return {
|
|
||||||
'type': 'ir.actions.act_url',
|
|
||||||
'url': '/web/binary/get_compiled_contract?doc_id={}&doc_name={}.docx'.format(self.id,
|
|
||||||
self.contract_id.name),
|
|
||||||
'target': 'self',
|
|
||||||
}
|
|
118
models/models.py
118
models/models.py
@ -1,118 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from odoo import models, fields, api
|
|
||||||
|
|
||||||
|
|
||||||
class PartnerContract(models.Model):
|
|
||||||
|
|
||||||
_name = 'res.partner.contract'
|
|
||||||
|
|
||||||
name = fields.Char(
|
|
||||||
string='Contract number',
|
|
||||||
help='Number of contract, letters and digits',)
|
|
||||||
date = fields.Date(
|
|
||||||
string='Date of conclusion',
|
|
||||||
help='Date, when contract was concluded',
|
|
||||||
default=datetime.now().date(),
|
|
||||||
required=True)
|
|
||||||
partner_id = fields.Many2one(
|
|
||||||
'res.partner',
|
|
||||||
string='Contract Partner',
|
|
||||||
help='Contract partner',
|
|
||||||
default=lambda self: self.env.context['active_id'],
|
|
||||||
required=True)
|
|
||||||
order_ids = fields.One2many(
|
|
||||||
'sale.order',
|
|
||||||
'contract_id',
|
|
||||||
string='Annexes',
|
|
||||||
help='Annexes to this contract')
|
|
||||||
|
|
||||||
def _calculate_contract_name(self, _date):
|
|
||||||
contract_date = datetime.strptime(_date, '%Y-%m-%d')
|
|
||||||
date_part = contract_date.strftime('%d%m-%y')
|
|
||||||
today_contracts = self.search([('date', '=', contract_date.date())])
|
|
||||||
if len(today_contracts) > 0:
|
|
||||||
last_contract_number = int(today_contracts[-1].name.split('-')[2]) + 1
|
|
||||||
else:
|
|
||||||
last_contract_number = 1
|
|
||||||
return '{}-{}'.format(date_part, last_contract_number)
|
|
||||||
|
|
||||||
@api.onchange('date')
|
|
||||||
def _change_contract_name(self):
|
|
||||||
"""
|
|
||||||
Procedure for forming contract name
|
|
||||||
:return: contract name in format "DDMM-YY-№"
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.name = self._calculate_contract_name(self.date)
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def create(self, vals):
|
|
||||||
datetime_now = datetime.now().strftime("%Y-%m-%d")
|
|
||||||
vals['name'] = self._calculate_contract_name(datetime_now)
|
|
||||||
return super(PartnerContract, self).create(vals)
|
|
||||||
|
|
||||||
|
|
||||||
class AnnexType(models.Model):
|
|
||||||
|
|
||||||
_name = 'res.partner.contract.annex.type'
|
|
||||||
|
|
||||||
name = fields.Char(string='Annex template name')
|
|
||||||
description = fields.Text(string='Annex template description')
|
|
||||||
|
|
||||||
|
|
||||||
class ResPartner(models.Model):
|
|
||||||
|
|
||||||
_inherit = 'res.partner'
|
|
||||||
|
|
||||||
client_contract_ids = fields.One2many(
|
|
||||||
'res.partner.contract',
|
|
||||||
'partner_id',
|
|
||||||
string='Contracts',
|
|
||||||
help='Contracts for this partner')
|
|
||||||
contract_count = fields.Integer(
|
|
||||||
compute='_compute_contract_count',
|
|
||||||
string='# of contracts')
|
|
||||||
contract_name = fields.Char(string='Contract name', help='Name, as it would be in contract')
|
|
||||||
contract_job_name = fields.Char(string='Contract job name', help='Job position as it would be in contract')
|
|
||||||
representative_id = fields.Many2one('res.partner', string='Representative', help='Person, who represents company')
|
|
||||||
passport_data = fields.Char(string='Passport', help='Passport data')
|
|
||||||
full_adress = fields.Char(compute='_compute_full_adress')
|
|
||||||
bank_account = fields.Many2one('res.partner.bank', string='Bank account')
|
|
||||||
signature = fields.Binary(string='Client signature')
|
|
||||||
|
|
||||||
@api.one
|
|
||||||
@api.depends('street', 'street2', 'city', 'state_id', 'zip', 'country_id')
|
|
||||||
def _compute_full_adress(self):
|
|
||||||
if self.zip:
|
|
||||||
full_adress = '{}, {}, {}, {} {}'.format(self.zip, self.country_id.name, self.city, self.street,
|
|
||||||
self.street2)
|
|
||||||
else:
|
|
||||||
full_adress = '{}, {}, {} {}'.format(self.country_id.name, self.city, self.street,
|
|
||||||
self.street2)
|
|
||||||
self.full_adress = full_adress
|
|
||||||
|
|
||||||
@api.one
|
|
||||||
@api.depends('self.client_contract_ids')
|
|
||||||
def _compute_contract_count(self):
|
|
||||||
self.contract_count = len(self.client_contract_ids)
|
|
||||||
|
|
||||||
|
|
||||||
class SaleOrder(models.Model):
|
|
||||||
|
|
||||||
_inherit = 'sale.order'
|
|
||||||
|
|
||||||
contract_id = fields.Many2one(
|
|
||||||
'res.partner.contract',
|
|
||||||
string='Contract',
|
|
||||||
help='Contract, assigned to this order')
|
|
||||||
|
|
||||||
|
|
||||||
class ContractTemplate(models.Model):
|
|
||||||
|
|
||||||
_name = 'res.partner.contract.template'
|
|
||||||
_inherit = 'ir.attachment'
|
|
||||||
|
|
||||||
is_contract_template = fields.Boolean(srting='Is this document contract template?', default=True)
|
|
46
models/res_partner.py
Normal file
46
models/res_partner.py
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
from odoo import api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ResPartner(models.Model):
|
||||||
|
_inherit = "res.partner"
|
||||||
|
|
||||||
|
name_parent_case = fields.Char(string="Name Parent Case",)
|
||||||
|
name_initials_case = fields.Char(string="Name Initials Case",)
|
||||||
|
function_parent_case = fields.Char(string="Function Parent Case",)
|
||||||
|
client_contract_ids = fields.One2many(
|
||||||
|
"res.partner.contract", "partner_id", string="Contracts",
|
||||||
|
)
|
||||||
|
contract_count = fields.Integer(
|
||||||
|
compute="_compute_contract_count", string="# of contracts"
|
||||||
|
)
|
||||||
|
full_address = fields.Char(
|
||||||
|
compute="_compute_full_address"
|
||||||
|
) # Check for res.partner.contact_address in base/res
|
||||||
|
street_actual = fields.Many2one("res.partner", string="Actual Address",)
|
||||||
|
representative_id = fields.Many2one(
|
||||||
|
"res.partner", string="Representative", help="Person, who represents company"
|
||||||
|
)
|
||||||
|
signature = fields.Binary(string="Client signature")
|
||||||
|
|
||||||
|
@api.depends("street", "street2", "city", "state_id", "zip", "country_id")
|
||||||
|
def _compute_full_address(self):
|
||||||
|
for record in self:
|
||||||
|
data = filter(
|
||||||
|
None,
|
||||||
|
map(
|
||||||
|
lambda s: s and s.strip(),
|
||||||
|
[
|
||||||
|
record.zip,
|
||||||
|
record.street,
|
||||||
|
record.street2,
|
||||||
|
record.country_id.name,
|
||||||
|
record.city,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
record.full_address = ", ".join(data)
|
||||||
|
|
||||||
|
@api.one
|
||||||
|
@api.depends("self.client_contract_ids")
|
||||||
|
def _compute_contract_count(self):
|
||||||
|
self.contract_count = len(self.client_contract_ids)
|
118
models/res_partner_contract.py
Normal file
118
models/res_partner_contract.py
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
import datetime
|
||||||
|
|
||||||
|
from odoo import _, api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class PartnerContract(models.Model):
|
||||||
|
_name = "res.partner.contract"
|
||||||
|
_description = "Contract"
|
||||||
|
_inherit = ["mail.thread", "mail.activity.mixin", "mail.followers"]
|
||||||
|
|
||||||
|
def _get_default_name(self):
|
||||||
|
"""Returns name format `№YYMM-D-N`,
|
||||||
|
where N is a sequence number of contracts which are created this day
|
||||||
|
"""
|
||||||
|
current_day_ts = (
|
||||||
|
datetime.datetime.now()
|
||||||
|
.replace(minute=0, hour=0, second=0, microsecond=0)
|
||||||
|
.timestamp()
|
||||||
|
)
|
||||||
|
partner = self.env["res.partner"].browse(self.env.context.get("active_id"))
|
||||||
|
|
||||||
|
contracts_today = self.search(
|
||||||
|
[("partner_id", "=", partner.id), ("create_date_ts", ">=", current_day_ts),]
|
||||||
|
)
|
||||||
|
|
||||||
|
contract_date = "{format_date}-{number}".format(
|
||||||
|
format_date=datetime.date.strftime(datetime.date.today(), "%y%m-%d"),
|
||||||
|
number=len(contracts_today) + 1,
|
||||||
|
)
|
||||||
|
return contract_date
|
||||||
|
|
||||||
|
def _get_default_create_date_ts(self):
|
||||||
|
"""Returns timestamp of now by local datetime"""
|
||||||
|
return datetime.datetime.now().timestamp()
|
||||||
|
|
||||||
|
name = fields.Char(string="Contract number", default=_get_default_name,)
|
||||||
|
create_date_ts = fields.Char(default=_get_default_create_date_ts)
|
||||||
|
date_conclusion = fields.Date(string="Date of system conclusion",)
|
||||||
|
date_conclusion_fix = fields.Date(
|
||||||
|
string="Date of manual conclusion",
|
||||||
|
help="Field for manual edit when contract is signed or closed",
|
||||||
|
default=lambda self: self.date_conclusion,
|
||||||
|
)
|
||||||
|
contract_annex_ids = fields.One2many(
|
||||||
|
"res.partner.contract.annex",
|
||||||
|
"contract_id",
|
||||||
|
string="Annexes",
|
||||||
|
help="Annexes to this contract",
|
||||||
|
)
|
||||||
|
contract_annex_number = fields.Integer(
|
||||||
|
default=1, help="Counter for generate Annex name"
|
||||||
|
)
|
||||||
|
partner_id = fields.Many2one(
|
||||||
|
"res.partner",
|
||||||
|
string="Partner",
|
||||||
|
default=lambda self: self.env.context.get("active_id"),
|
||||||
|
required=True,
|
||||||
|
)
|
||||||
|
company_id = fields.Many2one(
|
||||||
|
"res.partner",
|
||||||
|
string="Company",
|
||||||
|
default=lambda self: self.env.user.company_id.partner_id,
|
||||||
|
)
|
||||||
|
state = fields.Selection(
|
||||||
|
[("draft", "New"), ("sign", "Signed"), ("close", "Closed"),],
|
||||||
|
string="Status",
|
||||||
|
readonly=True,
|
||||||
|
copy=False,
|
||||||
|
index=True,
|
||||||
|
track_visibility="onchange",
|
||||||
|
track_sequence=3,
|
||||||
|
default="draft",
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def action_sign(self):
|
||||||
|
self.write({"state": "sign", "date_conclusion": fields.Date.today()})
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def action_close(self):
|
||||||
|
self.write({"state": "close"})
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def action_renew(self):
|
||||||
|
self.write({"state": "draft"})
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def action_print_form(self):
|
||||||
|
view = self.env.ref("client_contracts.res_partner_wizard_print_contract_view")
|
||||||
|
return {
|
||||||
|
"name": _("Print Form of Contract"),
|
||||||
|
"type": "ir.actions.act_window",
|
||||||
|
"res_model": "res.partner.contract.wizard",
|
||||||
|
"view_mode": "form",
|
||||||
|
"view_id": view.id,
|
||||||
|
"target": "new",
|
||||||
|
"context": {"self_id": self.id},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class PrintTemplateContract(models.Model):
|
||||||
|
_name = "res.partner.template.print.contract"
|
||||||
|
_description = "Print Template Contract"
|
||||||
|
|
||||||
|
attachment_id = fields.Many2one(
|
||||||
|
"ir.attachment", string="Template Attachment", required=True,
|
||||||
|
)
|
||||||
|
is_default = fields.Boolean(string="Default Template", default=False,)
|
||||||
|
|
||||||
|
|
||||||
|
class PrintTemplateAnnex(models.Model):
|
||||||
|
_name = "res.partner.template.print.annex"
|
||||||
|
_description = "Print Template Contract Annex"
|
||||||
|
|
||||||
|
attachment_id = fields.Many2one(
|
||||||
|
"ir.attachment", string="Template Attachment", required=True,
|
||||||
|
)
|
||||||
|
is_default = fields.Boolean(string="Default Template", default=False,)
|
74
models/res_partner_contract_annex.py
Normal file
74
models/res_partner_contract_annex.py
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
import math
|
||||||
|
|
||||||
|
from odoo import _, api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ContractOrderAnnex(models.Model):
|
||||||
|
_name = "res.partner.contract.annex"
|
||||||
|
_description = "Contract Annex"
|
||||||
|
|
||||||
|
name = fields.Char(string="Name", help="The Number of Annex")
|
||||||
|
order_id = fields.Many2one("sale.order", string="Order", required=True,)
|
||||||
|
contract_id = fields.Many2one(
|
||||||
|
"res.partner.contract", string="Contract", readonly=True,
|
||||||
|
)
|
||||||
|
date_conclusion = fields.Date(
|
||||||
|
string="Conclusion Date", default=fields.Date.today(),
|
||||||
|
)
|
||||||
|
prepaid_expence = fields.Float(string="Prepaid Expence", default=0)
|
||||||
|
delivery_time = fields.Integer(related="order_id.delivery_time", readonly=True,)
|
||||||
|
payment_term = fields.Many2one(
|
||||||
|
"account.payment.term", related="order_id.payment_term_id", readonly=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.onchange("contract_id")
|
||||||
|
def _onchange_contract_id(self):
|
||||||
|
# Compute name if there is no custom name
|
||||||
|
contract_number = self.contract_id.name
|
||||||
|
annex_number = self.contract_id.contract_annex_number
|
||||||
|
|
||||||
|
self.name = "{contract}--{annex}".format(
|
||||||
|
contract=contract_number, annex=annex_number
|
||||||
|
)
|
||||||
|
|
||||||
|
# Compute domain for order_id because of bug with
|
||||||
|
# not working correctly domain in model
|
||||||
|
return {
|
||||||
|
"domain": {
|
||||||
|
"order_id": [
|
||||||
|
("partner_id", "=", self.contract_id.partner_id.id),
|
||||||
|
("contract_annex_id", "=", False),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def create(self, values):
|
||||||
|
record = super().create(values)
|
||||||
|
|
||||||
|
# Fill annex_id to domain it in future
|
||||||
|
record.order_id.contract_annex_id = record.id
|
||||||
|
|
||||||
|
# Add counter
|
||||||
|
record.contract_id.contract_annex_number += 1
|
||||||
|
|
||||||
|
return record
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def action_print_form(self):
|
||||||
|
view = self.env.ref("client_contracts.res_partner_wizard_print_annex_view")
|
||||||
|
return {
|
||||||
|
"name": _("Print Form of Contract Annex"),
|
||||||
|
"type": "ir.actions.act_window",
|
||||||
|
"res_model": "res.partner.contract.wizard",
|
||||||
|
"view_mode": "form",
|
||||||
|
"view_id": view.id,
|
||||||
|
"target": "new",
|
||||||
|
"context": {"self_id": self.id},
|
||||||
|
}
|
||||||
|
|
||||||
|
def modf(self, arg):
|
||||||
|
"""Math.modf function for using in XML ir.action.server code
|
||||||
|
Uses in data/fields_default.xml
|
||||||
|
"""
|
||||||
|
return math.modf(arg)
|
12
models/res_partner_contract_field.py
Normal file
12
models/res_partner_contract_field.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ContractField(models.Model):
|
||||||
|
_name = "res.partner.contract.field"
|
||||||
|
_description = "Contract Field"
|
||||||
|
|
||||||
|
name = fields.Char(string="Name", required=True, translate=True,)
|
||||||
|
technical_name = fields.Char(
|
||||||
|
string="Technical Name", help="Name uses in template", required=True,
|
||||||
|
)
|
||||||
|
description = fields.Char(string="Description", translate=True, default="",)
|
21
models/res_partner_contract_field_transient.py
Normal file
21
models/res_partner_contract_field_transient.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ContractFieldTransient(models.TransientModel):
|
||||||
|
_name = "res.partner.contract.field.transient"
|
||||||
|
_description = "Contract Field Transient"
|
||||||
|
|
||||||
|
_contract_wizard_id = fields.Many2one(
|
||||||
|
"res.partner.contract.wizard", string="Contract", readonly=True,
|
||||||
|
)
|
||||||
|
contract_field_id = fields.Many2one("res.partner.contract.field", string="Field",)
|
||||||
|
name = fields.Char(related="contract_field_id.name", string="Name", readonly=True,)
|
||||||
|
technical_name = fields.Char(
|
||||||
|
related="contract_field_id.technical_name",
|
||||||
|
string="Technical Name",
|
||||||
|
readonly=True,
|
||||||
|
)
|
||||||
|
description = fields.Char(
|
||||||
|
related="contract_field_id.description", string="Description", readonly=True,
|
||||||
|
)
|
||||||
|
value = fields.Char(string="Value", default="",)
|
26
models/sale_order.py
Normal file
26
models/sale_order.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from odoo import api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class SaleOrder(models.Model):
|
||||||
|
_inherit = "sale.order"
|
||||||
|
|
||||||
|
delivery_time = fields.Integer(string="Delivery Time", default=45,)
|
||||||
|
contract_annex_id = fields.Many2one(
|
||||||
|
"res.partner.contract.annex", string="Contract Annex", readonly=True,
|
||||||
|
)
|
||||||
|
# Extend default field
|
||||||
|
payment_term_id = fields.Many2one(
|
||||||
|
"account.payment.term",
|
||||||
|
domain=lambda self: [("id", "in", self._get_payment_terms())],
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def _get_payment_terms(self):
|
||||||
|
ref = self.env.ref
|
||||||
|
terms = (
|
||||||
|
ref("client_contracts.payment_term_prepaid").id,
|
||||||
|
ref("client_contracts.payment_term_postpayment").id,
|
||||||
|
ref("client_contracts.payment_term_partial_2").id,
|
||||||
|
ref("client_contracts.payment_term_partial_3").id,
|
||||||
|
)
|
||||||
|
return terms
|
9
security/ir.model.access.csv
Normal file → Executable file
9
security/ir.model.access.csv
Normal file → Executable file
@ -1,2 +1,7 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_client_contracts_client_contracts,client_contracts.client_contracts,model_client_contracts_client_contracts,,1,0,0,0
|
|
||||||
|
access_contracts_contracts,access_contracts_contracts,model_res_partner_contract,base.group_user,1,1,1,1
|
||||||
|
access_contracts_field,access_contracts_field,model_res_partner_contract_field,base.group_user,1,1,1,1
|
||||||
|
access_contracts_field_contract_annex,access_contracts_field_contract_annex,model_res_partner_contract_annex,base.group_user,1,1,1,1
|
||||||
|
access_contract_document_template,access_contract_document_template,model_res_partner_template_print_contract,base.group_user,1,1,1,1
|
||||||
|
access_contract_annex_template,access_contract_annex_template,model_res_partner_template_print_annex,base.group_user,1,1,1,1
|
||||||
|
|
0
utils/__init__.py
Normal file
0
utils/__init__.py
Normal file
11
utils/docxtpl.py
Normal file
11
utils/docxtpl.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import io
|
||||||
|
from docxtpl import DocxTemplate
|
||||||
|
|
||||||
|
|
||||||
|
def get_document_from_values_stream(path_to_template: str, vals: dict):
|
||||||
|
doc = DocxTemplate(path_to_template)
|
||||||
|
doc.render(vals)
|
||||||
|
file_stream = io.BytesIO()
|
||||||
|
doc.save(file_stream)
|
||||||
|
file_stream.seek(0)
|
||||||
|
return file_stream
|
@ -1,125 +0,0 @@
|
|||||||
<?xml version="1.0" ?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<act_window id="res_partner_contract_wizard_action"
|
|
||||||
name="Contract wizard"
|
|
||||||
res_model="res.partner.contract.wizard"
|
|
||||||
src_model="res.partner.contract"
|
|
||||||
view_mode="form"
|
|
||||||
target="new"/>
|
|
||||||
|
|
||||||
<report
|
|
||||||
id="contract_company_template"
|
|
||||||
model="res.partner.contract.wizard"
|
|
||||||
string="Contract"
|
|
||||||
report_type="qweb-pdf"
|
|
||||||
name="client_contracts.contract_template"
|
|
||||||
file="client_contracts.contract_template"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<report
|
|
||||||
id="contract_personal_template"
|
|
||||||
model="res.partner.contract.wizard"
|
|
||||||
string="Contract"
|
|
||||||
report_type="qweb-pdf"
|
|
||||||
name="client_contracts.contract_fiz_template"
|
|
||||||
file="client_contracts.contract_fiz_template"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<report
|
|
||||||
id="contract_appex_only_template_print"
|
|
||||||
model="res.partner.contract.wizard"
|
|
||||||
string="Contract"
|
|
||||||
report_type="qweb-pdf"
|
|
||||||
name="client_contracts.contract_appex_only_template"
|
|
||||||
file="client_contracts.contract_appex_only_template"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<record id="res_partner_contract_wizard_view" model="ir.ui.view">
|
|
||||||
<field name="name">Contract print wizard</field>
|
|
||||||
<field name="model">res.partner.contract.wizard</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form>
|
|
||||||
<group>
|
|
||||||
<group name="template" string="Templates">
|
|
||||||
<field name="template" string="Templates"/>
|
|
||||||
</group>
|
|
||||||
<group name="partner" string="Partner parameters">
|
|
||||||
<field name="partner_id"/>
|
|
||||||
</group>
|
|
||||||
<group name="seller" string="Seller parameters">
|
|
||||||
<field name="company_id"/>
|
|
||||||
</group>
|
|
||||||
<group name="terms" string="Delivery and payment terms">
|
|
||||||
<field name="payment_terms"/>
|
|
||||||
<field name="delivery_terms"/>
|
|
||||||
</group>
|
|
||||||
<group string="Order info" name="order">
|
|
||||||
<field name="order_id"/>
|
|
||||||
</group>
|
|
||||||
<field name="annex_lines" mode="tree">
|
|
||||||
<form string="Annex info lines">
|
|
||||||
<field name="annex_type"/>
|
|
||||||
<field name="description"/>
|
|
||||||
</form>
|
|
||||||
<tree string="Annex info" editable="bottom">
|
|
||||||
<field name="annex_type"/>
|
|
||||||
<field name="description"/>
|
|
||||||
</tree>
|
|
||||||
</field>
|
|
||||||
<group string="Contract values">
|
|
||||||
<group string="Contract">
|
|
||||||
<field name="_context_name"/>
|
|
||||||
<field name="_context_date"/>
|
|
||||||
<field name="_context_summ_rub"/>
|
|
||||||
<field name="_context_summ_rub_word"/>
|
|
||||||
<field name="_context_summ_kop"/>
|
|
||||||
<field name="_context_summ_word"/>
|
|
||||||
<field name="_context_delivery_term"/>
|
|
||||||
<field name="_context_delivery_term_word"/>
|
|
||||||
<field name="_context_payment_term"/>
|
|
||||||
<field name="_context_payment_term_word"/>
|
|
||||||
</group>
|
|
||||||
<group string="Company values">
|
|
||||||
<field name="_context_seller_contract_name"/>
|
|
||||||
<field name="_context_seller_adress"/>
|
|
||||||
<field name="_context_seller_representer_contract_job_name"/>
|
|
||||||
<field name="_context_seller_representer_contract_name"/>
|
|
||||||
<field name="_context_seller_inn"/>
|
|
||||||
<field name="_context_seller_kpp"/>
|
|
||||||
<field name="_context_seller_rs"/>
|
|
||||||
<field name="_context_seller_bik"/>
|
|
||||||
<field name="_context_seller_bank"/>
|
|
||||||
<field name="_context_seller_phone"/>
|
|
||||||
<field name="_context_seller_representer_job_name"/>
|
|
||||||
<field name="_context_seller_representer_name"/>
|
|
||||||
</group>
|
|
||||||
<group string="Partner values">
|
|
||||||
<field name="_context_partner_contract_name"/>
|
|
||||||
<field name="_context_partner_adress"/>
|
|
||||||
<field name="_context_partner_representer_contract_name"/>
|
|
||||||
<field name="_context_partner_inn"/>
|
|
||||||
<field name="_context_partner_kpp"/>
|
|
||||||
<field name="_context_partner_rs"/>
|
|
||||||
<field name="_context_partner_bik"/>
|
|
||||||
<field name="_context_partner_bank"/>
|
|
||||||
<field name="_context_partner_phone"/>
|
|
||||||
<field name="_context_partner_representer_name"/>
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
<button string="Form DOCX from template" type="object" name="get_docx_contract" />
|
|
||||||
<button string="Form contract with company" type="action" name="%(contract_company_template)d" />
|
|
||||||
<button string="Form contract with personal" type="action" name="%(contract_personal_template)d" />
|
|
||||||
<button string="Form only appex contract" type="action" name="%(contract_appex_only_template_print)d" />
|
|
||||||
<footer>
|
|
||||||
</footer>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</odoo>
|
|
@ -1,70 +1,78 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<record id="search_res_partner_contract_filter" model="ir.ui.view">
|
<!-- res.partner.contract.field action window -->
|
||||||
<field name="name">res_partner_contract_search</field>
|
<record id="res_partner_contract_field_action" model="ir.actions.act_window">
|
||||||
<field name="model">res.partner.contract</field>
|
<field name="name">res.partner.contract.field.action</field>
|
||||||
<field name="arch" type="xml">
|
<field name="type">ir.actions.act_window</field>
|
||||||
<search string="Search Contract">
|
<field name="res_model">res.partner.contract.field</field>
|
||||||
<field name="partner_id" operator="child_of"/>
|
|
||||||
</search>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.ui.view" id="res_partner_contract_tree">
|
|
||||||
<field name="name">res_partner_contract</field>
|
|
||||||
<field name="model">res.partner.contract</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<tree string="Contracts">
|
|
||||||
<field name="name" readonly="1"/>
|
|
||||||
<field name="date"/>
|
|
||||||
<field name="partner_id"/>
|
|
||||||
</tree>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.ui.view" id="res_partner_contract_form">
|
|
||||||
<field name="name">res_partner_contract</field>
|
|
||||||
<field name="model">res.partner.contract</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="Contract">
|
|
||||||
<header>
|
|
||||||
<button name="do_toggle_active" type="object"
|
|
||||||
string="Active" class="oe_highlight" />
|
|
||||||
</header>
|
|
||||||
<sheet>
|
|
||||||
<group string="Contract parameters" name="single_params">
|
|
||||||
<field name="name" readonly="1"/>
|
|
||||||
<field name="date"/>
|
|
||||||
<field name="partner_id"/>
|
|
||||||
</group>
|
|
||||||
<group string="Annexed orders" name="multi_params">
|
|
||||||
<field name="order_ids" widget="many2many"/>
|
|
||||||
</group>
|
|
||||||
</sheet>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window" id="res_partner_contract_action">
|
|
||||||
<field name="name">res_partner_contract</field>
|
|
||||||
<field name="res_model">res.partner.contract</field>
|
|
||||||
<field name="view_type">form</field>
|
|
||||||
<field name="view_mode">tree,form</field>
|
<field name="view_mode">tree,form</field>
|
||||||
<field name="context">{'search_default_partner_id': active_id}</field>
|
<field name="view_type">form</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="order_contract_tree" model="ir.actions.act_window">
|
<!-- res.partner.template.print.contract action window -->
|
||||||
<field name="name">Appexes</field>
|
<record id="res_partner_print_contract_action" model="ir.actions.act_window">
|
||||||
<field name="res_model">sale.order</field>
|
<field name="name">res.partner.template.print.contract.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>
|
<field name="view_type">form</field>
|
||||||
<field name="view_mode">tree,form,graph</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="view_mode">tree,form</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_contract_info_inherit_view" model="ir.ui.view">
|
||||||
|
<field name="name">res.partner.contract.info</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="inherit_id" ref="base.view_partner_form" />
|
||||||
|
<field name="priority" eval="25"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree string="Appexes">
|
<xpath expr="//field[@name='type']" position="before">
|
||||||
<field name="name"/>
|
|
||||||
<field name="date"/>
|
<field name="name" attrs="{'invisible': [('company_type', '=', 'company')]}"/>
|
||||||
|
<field name="name_parent_case" attrs="{'invisible': [('company_type', '=', 'company')]}"/>
|
||||||
|
<field name="name_initials_case" attrs="{'invisible': [('company_type', '=', 'company')]}"/>
|
||||||
|
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='category_id']" position="after">
|
||||||
|
|
||||||
|
<field name="representative_id" domain="[('company_type', '=', 'person')]" attrs="{'invisible': [('company_type', '!=', 'company')]}"/>
|
||||||
|
<field name="signature" widget="image"/>
|
||||||
|
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
<xpath expr="//page[@name='internal_notes']" position="before">
|
||||||
|
|
||||||
|
<page string="Banks" name="banks">
|
||||||
|
<group>
|
||||||
|
<field name="bank_ids" attrs="{'invisible': [('company_type', '=', 'person')]}">
|
||||||
|
<tree>
|
||||||
|
<field name="acc_number"/>
|
||||||
|
<field name="bank_id"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
<!-- <xpath expr="//field[@name='vat']" position="before">
|
||||||
|
|
||||||
|
<field name="street_actual"/>
|
||||||
|
|
||||||
|
</xpath> -->
|
||||||
|
|
||||||
|
<xpath expr="//field[@name='function']" position="after">
|
||||||
|
<field name="function_parent_case" attrs="{'invisible': [('is_company','=', True)]}"/>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="res_partner_contract_view_buttons" model="ir.ui.view">
|
<record id="res_partner_contract_view_buttons" model="ir.ui.view">
|
||||||
@ -74,74 +82,40 @@
|
|||||||
<field name="priority" eval="25"/>
|
<field name="priority" eval="25"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<button name="toggle_active" position="before">
|
<button name="toggle_active" position="before">
|
||||||
<button class="oe_inline oe_stat_button" type="action" name="%(res_partner_contract_action)d"
|
<button class="oe_inline oe_stat_button" type="action" name="%(res_partner_contract_partner_action)d" attrs="{'invisible': [('customer', '=', False)]}" icon="fa-pencil-square-o">
|
||||||
attrs="{'invisible': [('customer', '=', False)]}"
|
|
||||||
icon="fa-pencil-square-o">
|
|
||||||
<field string="Contracts" name="contract_count" widget="statinfo"/>
|
<field string="Contracts" name="contract_count" widget="statinfo"/>
|
||||||
</button>
|
</button>
|
||||||
</button>
|
</button>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="res_partner_inherit" model="ir.ui.view">
|
|
||||||
<field name="name">res.partner.inherit</field>
|
|
||||||
<field name="model">res.partner</field>
|
|
||||||
<field name="inherit_id" ref="base.view_partner_form" />
|
|
||||||
<field name="priority" eval="25"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath expr="//field[@name='category_id']" position="after">
|
|
||||||
<field name="contract_name"/>
|
|
||||||
<field name="contract_job_name"/>
|
|
||||||
<field name="representative_id" domain="[('id', 'in', child_ids)]" attrs="{'invisible': [('company_type', '!=', 'company')]}"/>
|
|
||||||
<field name="passport_data" attrs="{'invisible': [('company_type', '=', 'company')]}"/>
|
|
||||||
<field name="bank_account"/>
|
|
||||||
<field name="signature" widget="image"/>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="annex_type_action" model="ir.actions.act_window">
|
<menuitem id="res_partner_menu_contracts"
|
||||||
<field name="name">annex_action</field>
|
name="Contract"
|
||||||
<field name="res_model">res.partner.contract.annex.type</field>
|
parent="contacts.res_partner_menu_config"
|
||||||
<field name="view_type">form</field>
|
sequence="7"/>
|
||||||
<field name="view_mode">tree,form,graph</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="res_partner_contract_annex_type_view" model="ir.ui.view">
|
<menuitem id="res_partner_menu_contracts_fields"
|
||||||
<field name="name">res_partner_contract_annex_type_view</field>
|
name="Fields"
|
||||||
<field name="model">res.partner.contract.annex.type</field>
|
action="res_partner_contract_field_action"
|
||||||
<field name="view_type">form</field>
|
parent="res_partner_menu_contracts"
|
||||||
<field name="view_mode">tree,form,graph</field>
|
sequence="1"/>
|
||||||
<field name="arch" type="xml">
|
|
||||||
<tree string="Annex type">
|
|
||||||
<field name="name"/>
|
|
||||||
<field name="description"/>
|
|
||||||
</tree>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="res_partner_contract_template_action" model="ir.actions.act_window">
|
<menuitem id="res_partner_menu_contracts_templates"
|
||||||
<field name="name">res_partner_contract_template_action</field>
|
name="Templates"
|
||||||
<field name="res_model">res.partner.contract.template</field>
|
parent="res_partner_menu_contracts"
|
||||||
<field name="view_type">form</field>
|
sequence="2"/>
|
||||||
<field name="view_mode">tree,form,graph</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="res_partner_contract_template_view" model="ir.ui.view">
|
<menuitem id="res_partner_menu_contracts_templates_contract"
|
||||||
<field name="name">res_partner_contract_template_view</field>
|
name="Contract"
|
||||||
<field name="model">res.partner.contract.template</field>
|
parent="res_partner_menu_contracts_templates"
|
||||||
<field name="view_type">form</field>
|
action="res_partner_print_contract_action"
|
||||||
<field name="view_mode">tree,form,graph</field>
|
sequence="1"/>
|
||||||
<field name="arch" type="xml">
|
|
||||||
<tree string="Template">
|
|
||||||
<field name="name"/>
|
|
||||||
<field name="is_contract_template"/>
|
|
||||||
</tree>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem name="Annex type" parent="sale.menu_sale_config" id="res_partner_contract_annex_type_menu" action="annex_type_action"/>
|
<menuitem id="res_partner_menu_contracts_templates_annex"
|
||||||
|
name="Annex"
|
||||||
<menuitem name="Templatesв" parent="sale.menu_sale_config" id="res_partner_contract_templates" action="res_partner_contract_template_action"/>
|
parent="res_partner_menu_contracts_templates"
|
||||||
|
action="res_partner_print_annex_action"
|
||||||
|
sequence="2"/>
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
99
views/res_partner_contract.xml
Normal file
99
views/res_partner_contract.xml
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<!-- res.partner.contract tree -->
|
||||||
|
<record id="res_partner_contract_tree" model="ir.ui.view">
|
||||||
|
<field name="name">Contracts</field>
|
||||||
|
<field name="model">res.partner.contract</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Contracts">
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="date_conclusion"/>
|
||||||
|
<field name="partner_id"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- res.partner.contract form -->
|
||||||
|
<record id="res_partner_contract_form" model="ir.ui.view">
|
||||||
|
<field name="name">Contract Form</field>
|
||||||
|
<field name="model">res.partner.contract</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Contract">
|
||||||
|
<header attrs="{'invisible': [('create_date', '=', False)]}">
|
||||||
|
<button name="action_sign" type="object" string="Sign" states="draft" class="oe_highlight"/>
|
||||||
|
<button name="action_close" type="object" string="Close" states="sign" class="oe_highlight"/>
|
||||||
|
<button name="action_renew" type="object" string="Renew" states="close"/>
|
||||||
|
|
||||||
|
<button name="action_print_form" type="object" string="Print"/>
|
||||||
|
|
||||||
|
<field name="state" widget="statusbar" statusbar_visible="draft,sign,close"/>
|
||||||
|
</header>
|
||||||
|
<sheet>
|
||||||
|
<group string="Contract parameters" name="single_params">
|
||||||
|
<field name="name" readonly="1"/>
|
||||||
|
<field name="partner_id" readonly="1"/>
|
||||||
|
<field name="create_date" readonly="1" attrs="{'invisible': [('create_date', '=', False)]}"/>
|
||||||
|
<field name="date_conclusion" readonly="1" attrs="{'invisible': ['|', ('create_date', '=', False), ('date_conclusion', '=', False)]}"/>
|
||||||
|
<field name="date_conclusion_fix" attrs="{'invisible': [('create_date', '=', False)]}"/>
|
||||||
|
|
||||||
|
<!-- Uses to generate number of Annex -->
|
||||||
|
<field name="contract_annex_number" invisible="1"/>
|
||||||
|
</group>
|
||||||
|
<group string="Annexed orders" name="annexes" attrs="{'invisible': [('create_date', '=', False)]}">
|
||||||
|
<field name="contract_annex_ids">
|
||||||
|
<field name="name"/>
|
||||||
|
</field>
|
||||||
|
</group>
|
||||||
|
</sheet>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Mail Thread -->
|
||||||
|
<!-- res.partner.contract inherit form -->
|
||||||
|
<record id="view_id" model="ir.ui.view">
|
||||||
|
<field name="name">res.partner.contract.inherit.view.form</field>
|
||||||
|
<field name="model">res.partner.contract</field>
|
||||||
|
<field name="inherit_id" ref="res_partner_contract_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
|
||||||
|
<xpath expr="//sheet" position="after">
|
||||||
|
<div class="oe_chatter">
|
||||||
|
<field name="message_follower_ids" widget="mail_followers"/>
|
||||||
|
<field name="activity_ids" widget="mail_activity"/>
|
||||||
|
<field name="message_ids" widget="mail_thread"/>
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Need it? -->
|
||||||
|
<record id="search_res_partner_contract_filter" model="ir.ui.view">
|
||||||
|
<field name="name">res_partner_contract_search</field>
|
||||||
|
<field name="model">res.partner.contract</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<search string="Search Contract">
|
||||||
|
<field name="partner_id" operator="child_of"/>
|
||||||
|
</search>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_contract_action" model="ir.actions.act_window">
|
||||||
|
<field name="name">Contracts</field>
|
||||||
|
<field name="res_model">res.partner.contract</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="context">{}</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_contract_partner_action" model="ir.actions.act_window">
|
||||||
|
<field name="name">Contracts</field>
|
||||||
|
<field name="res_model">res.partner.contract</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="context">{'search_default_partner_id': active_id}</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
31
views/res_partner_contract_annex.xml
Normal file
31
views/res_partner_contract_annex.xml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<odoo>
|
||||||
|
<data noupdate="0">
|
||||||
|
|
||||||
|
<!-- res.partner.contract.annex form view -->
|
||||||
|
<record id="res_partner_contract_annex_view_form" model="ir.ui.view">
|
||||||
|
<field name="name">res.partner.contract.annex.view.form</field>
|
||||||
|
<field name="model">res.partner.contract.annex</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
|
||||||
|
<form string="Contract Annex">
|
||||||
|
<sheet>
|
||||||
|
<group>
|
||||||
|
<field name="name" placeholder="Leave empty for compute"/>
|
||||||
|
<field name="contract_id" attrs="{'invisible': [('contract_id', '=', False)]}"/>
|
||||||
|
<field name="order_id"/>
|
||||||
|
<field name="date_conclusion"/>
|
||||||
|
<field name="payment_term"/>
|
||||||
|
<field name="delivery_time"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<button name="action_print_form" type="object" string="Print" attrs="{'invisible': [('contract_id', '=', False)]}"/>
|
||||||
|
</group>
|
||||||
|
</sheet>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</odoo>
|
21
views/sale_order.xml
Normal file
21
views/sale_order.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<!-- sale.order inherit form view -->
|
||||||
|
<record id="view_order_form" model="ir.ui.view">
|
||||||
|
<field name="name">sale.order.inherit.view.form</field>
|
||||||
|
<field name="model">sale.order</field>
|
||||||
|
<field name="inherit_id" ref="sale.view_order_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
|
||||||
|
<xpath expr="//field[@name='payment_term_id']" position="after">
|
||||||
|
<field name="delivery_time"/>
|
||||||
|
<field name="contract_annex_id"/>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem id="res_partner_contract_menu_act" name="Contracts" parent="sale.sale_order_menu" action="res_partner_contract_action" sequence="4"/>
|
||||||
|
|
||||||
|
</odoo>
|
@ -1,787 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<odoo>
|
|
||||||
<data>
|
|
||||||
<template id="contract_header_template">
|
|
||||||
<table align="center" border="0px" cellpadding="0" width="100%" style="font-family:Arial; font-size:12px; border-collapse:collapse">
|
|
||||||
<tr>
|
|
||||||
<td align="left" colspan="1">
|
|
||||||
<div t-field="doc.company_id.image" t-options="{'widget': 'image' }"/>
|
|
||||||
</td>
|
|
||||||
<td align="right">
|
|
||||||
<t t-esc="doc.company_id.phone"/> <t t-esc="doc.company_id.email" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_number_and_date">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<hr color="black"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top" width="100%">
|
|
||||||
<td align="center">
|
|
||||||
<b>ДОГОВОР № <t t-esc="doc.contract_id.name"/></b><br/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
&nbsp;
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="left" colspan="2">
|
|
||||||
Москва, <t t-esc="doc._context_date"/><br/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
&nbsp;
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_contact_partner_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td>
|
|
||||||
<b><t t-esc="docs.partner_id.contract_name"/></b>,
|
|
||||||
юридическое лицо, созданное и зарегистрированное в соответствии с законодательством , с зарегистрированным офисом по адресу: <t t-esc="doc.partner_id.full_adress"/>, здесь и далее именуемое «<b>Покупатель</b>»,
|
|
||||||
в лице уполномоченного представителя <b><t t-esc="doc.partner_id.representative_id.contract_name" /></b>, с одной стороны
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_contact_partner_fiz_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td>
|
|
||||||
<b><t t-esc="doc.partner_id.contract_name"/></b>,
|
|
||||||
физическое лицо, зарегистрированное по законодательству Российской Федерации, паспорт <t t-esc="doc.partner_id.passport_data" />, зарегистрированное по адресу: <t t-esc="doc.partner_id.full_adress" /> , здесь и далее именуемое «Покупатель», с одной стороны
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_contact_seller_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
и <b><t t-esc="doc.company_id.contract_name"/></b>, юридическое лицо, созданное и зарегистрированное в соответствии с законодательством Российской Федерации, с зарегистрированным офисом по адресу: <t t-esc="doc.company_id.full_adress" />, здесь и далее именуемое «<b>Продавец</b>», в лице <b><t t-esc="doc.company_id.representative_id.contract_job_name" /></b> <b><t t-esc="doc.company_id.representative_id.contract_name" /></b>, действующего на основании Устава, с другой стороны, совместно именуемые «Стороны» и по отдельности «Сторона»,
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_1_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>1. Предмет Договора</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
1.1. Продавец обязуется поставлять, а Покупатель принимать и оплачивать Товары, указанные в Приложениях, являющихся неотъемлемой частью настоящего Договора.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
1.2. В приложениях определяются наименование, количество, условия и срок поставки, порядок и срок оплаты, цена Товара и т.д.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_2_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>2. Сумма Договора</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
2.1. Общая сумма Договора складывается из сумм Приложений к настоящему Договору, подписанных Сторонами.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_3_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>3. Условия поставки</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
3.1. Товар поставляется в согласованные Сторонами сроки, которые указаны в Приложениях к настоящему Договору.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
3.2. В случае экспорта за пределы Российской Федерации Правила Толкования Торговых терминов - Международные торговые термины («Инкотермс 2010») имеют обязательный характер для сторон в рамках настоящего Договора.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
3.3. В случае экспорта за пределы Российской Федерации датой отгрузки товара считается дата транспортного документа.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
3.4. Продавец вправе по своему усмотрению поставлять товар лично, либо поручать отгрузку третьим лицам, в таком случае Продавец несет полную ответственность за них.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
3.5. Покупатель обязан принять поставку от любого из грузоотправителей, предложенных Продавцом, в случае, если это оговорено в приложении к Договору.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_4_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>4. Порядок расчетов</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
4.1. Платеж по настоящему Договору осуществляется Покупателем в течение <t t-esc="doc._context_payment_term" /> (<t t-esc="doc._context_payment_term_word" />) дней с момента выставления счета.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
4.2. При поставке товара на условиях 100% предоплаты, Продавец не позднее чем за 5 (пять) дней до отгрузки любыми имеющимися в его распоряжении средствами связи информирует об этом Покупателя.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
4.3. Стороны предусматривают возможность частичной предоплаты.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
4.4. Платеж осуществляется в рублях путем денежного перевода со счета Покупателя на счет Продавца посредством банковского перевода или с использованием электронных платежных систем.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
4.5. Все расходы, связанные с переводом денежных средств, стороны несут каждая на своей территории.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_5_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>5. Качество товара</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
5.1. Качество Товара должно полностью соответствовать действующим стандартам Российской Федерации или страны-импортера в случае экспорта за пределы Российской Федерации и удостоверяться документами, выданными компетентными организациями страны происхождения.<br/>
|
|
||||||
Покупатель вправе требовать у Продавца (уполномоченного представителя) безвозмездного устранения недостатков товара, если они обнаружены в течение гарантийного срока или срока годности.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
5.2. Гарантийный срок равняется гарантийному сроку на Товар, определенному производителем Товара, но не менее 1 (одного) года с момента передачи Товара Покупателю и начинает течь с даты продажи Товара, указанной в гарантийном талоне и перехода права собственности к конечному Покупателю. Гарантийный срок на Товар приостанавливается при невозможности пользоваться Товаром из-за обнаруженных недостатков.<br/>
|
|
||||||
Гарантийный срок на комплектующее изделие равен гарантийному сроку на основное изделие.<br/>
|
|
||||||
При замене некачественного Товара на качественный Товар устанавливается гарантийный срок той же продолжительности, что и на возвращенный некачественный Товар.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
5.3. Продавец в течение гарантийного срока обязуется осуществлять ремонт или замену комплектующих вышедших из строя по вине Продавца (Производителя), в случае не возможности осуществить ремонт или замену комплектующих Продавец заменяет на аналогичный качественный Товар.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
5.4. Продавец (уполномоченный представитель) обязан устранить недостатки Товара в течение 45 (сорока пяти) дней, без учета затраченного времени на транспортировку Товара, с даты получения требования от Покупателя.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
5.5. Гарантия не распротстраняется на неисправности и дефекты, вызванные следующими причинами:<br/>
|
|
||||||
- пожар, затопление стихийные бедствия, бытовые факторы;<br/>
|
|
||||||
- при наличии на мебельных поверхностях механических повреждений, термо-воздействий или следов воздействия химических веществ; неисправности, возникшие вследствие нормального износа изделия; преднамеренная порча изделия или ошибочные действия потребителя (покупателя);<br/>
|
|
||||||
- при неграмотно выполненном самостоятельном подъёме или сборке изделия, внесение изменений в его конструкцию;<br/>
|
|
||||||
- при нарушении правил эксплуатации изделия мебели, а также по истечению гарантийного срока на изделие мебели.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
5.6. В случае несоблюдения правил эксплуатации и использования Товара не по назначению, Продавец не несёт ответственности за потерю потребительских качеств Товара. Сервисное обслуживание и ремонт Товара будет производиться по решению Продавца, а оказание услуг по ремонту - только за счёт Покупателя по расценкам Продавца.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
5.7. Продавец обязан обеспечить возможность использования Товара в течение его срока службы. Для этой цели Продавец обеспечивает ремонт и техническое обслуживание Товара, а также выпуск и поставку в торговые и ремонтные организации запасных частей в течение срока производства Товара и после снятия его с производства в течение срока службы Товара.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
5.8. Качественный Товар возврату или обмену не подлежит.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
5.9. Товар является товаром длительного использования. На него не распространяются требования покупателя о безвозмездном предоставлении ему на период ремонта аналогичного товара.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_6_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>6. Упаковка и маркировка</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
6.1. Товар должен быть надлежащим образом упакован, запечатан и промаркирован в целях его идентификации и безопасности в процессе транспортировки, погрузки и/или хранения.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
6.2. Упаковка должна соответствовать действующим стандартам Российской Федерации.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
6.3. Маркировка Товара осуществляется его производителем.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_7_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>7. Порядок отгрузки</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
7.1. Продавец сообщает Покупателю о готовности Товара к отгрузке не позднее, чем за 5 (пять) дней до планируемой даты отгрузки.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
7.2. В товаросопроводительных документах указываются: наименование товара, количество грузовых мест, количество упаковок, вес брутто и нетто. Исправления, дописки и подчистки в указанных документах не допускаются.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
7.3. В случае экспорта за пределы Российской Федерации после отгрузки товара, но не позднее чем через 24 (двадцать четыре) часа, Продавец любыми доступными ему способами высылает Покупателю оригиналы коммерческих документов на отгруженную партию товара, необходимых для таможенного оформления в стране импортера:<br/>
|
|
||||||
- коммерческий счет в 2 экз.<br/>
|
|
||||||
- счет-проформу в 2 экз.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_8_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>8. Сдача - приемка Товара</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
8.1. Приемка товара производится:<br/>
|
|
||||||
- по количеству мест согласно количеству, указанному в товаросопроводительных документах;<br/>
|
|
||||||
- по количеству изделий согласно спецификации и упаковочным листам;<br/>
|
|
||||||
- по качеству - согласно п.5 настоящего Договора.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_9_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>9. Ответственность сторон</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
9.1. Со стороны Продавца:
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
9.1.1. Если поставка товаров не осуществляется в сроки, предусмотренные настоящим Договором, Продавец выплачивает Покупателю пени в размере 0,05% (ноль целых пяти сотых процента) от стоимости не поставленных в срок товаров за каждый день просрочки, но в совокупности не более 10 (десяти) процентов от стоимости товаров.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
9.1.2. Уплата штрафа за нарушение условий Договора не освобождает Продавца от возмещения ущерба, нанесенного Покупателю из-за несоблюдения Продавцом условий Договора, и от обязанностей по выполнению Договора.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
9.2. Со стороны Покупателя:
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
9.2.1. При несвоевременной оплате Покупатель выплачивает пени в размере 0,05% (ноль целых пяти сотых процента) от невыплаченной суммы за каждый день просрочки, но в совокупности не более 10 (десяти) процентов от общей суммы.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
9.2.2. Уплата штрафа не освобождает Покупателя от обязанностей по исполнению Договора.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
9.3. В случае если недостатки, повреждение или недостачу невозможно было визуально обнаружить при приемке товара (скрытые недостатки), включая контрафактные и фальсифицированные товары с поддельными сертификатами качества, техническими паспортами или свидетельствами на продукцию, Покупатель должен в течение 7 рабочих дней с даты обнаружения недостатков товара направить Продавцу письменное уведомление об обнаруженных им скрытых повреждениях и недостатках товара (Акт о скрытых недостатках). Уведомление направляется в адрес Продавца следующим способом: средствами факсимильной и или электронной связи с дальнейшим направлением заказным письмом с уведомлением.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
В таком случае Покупатель вправе, по своему выбору, требовать от Продавца:<br/>
|
|
||||||
- безвозмездного устранения недостатков товара в разумный срок;<br/>
|
|
||||||
- возмещения своих расходов на устранение недостатков товара.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
В случае существенного нарушения требований к качеству товара, Покупатель вправе, потребовать замены товара ненадлежащего качества товаром, соответствующим договору. В случае возврата некачественного товара Покупателем, Продавец обязуется заменить некачественный товар.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_10_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>10. Форс-мажор</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
10.1. Стороны освобождаются от ответственности за частичное или полное неисполнение обязательств по настоящему Договору, если это неисполнение явилось следствием обстоятельств непреодолимой силы, возникших после заключения договора в результате событий чрезвычайного характера, которые стороны не могли ни предвидеть, ни предотвратить разумными мерами.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
10.2. К обстоятельствам непреодолимой силы относятся события, на которые стороны не могут оказывать влияния и за возникновение которых не несут ответственности.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
10.3. В период действия непреодолимой силы и других обстоятельств, освобождающих от ответственности, обязательства сторон приостанавливаются, и санкции за неисполнение обязательств не применяются.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_11_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>11. Споры</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
11.1. Все споры и разногласия, которые могут возникнуть в связи с исполнением обязательств по настоящему Договору, разрешаются сторонами путем переговоров. В случае не урегулирования спорных вопросов путем переговоров, спор передается на разрешение Арбитражного суда Москвы и Московской области.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
11.2. Применимым правом по данному договору является законодательство Российской Федерации.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_chapter_12_template">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<br/><b>12. Прочие условия</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
12.1. Ни одна из сторон не вправе передавать свои права и обязанности по Договору третьим лицам без письменного на то согласия другой стороны.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
12.2. Всякие изменения и дополнения к настоящему Договору будут действительны лишь при условии, если они совершены в письменной форме и подписаны уполномоченными на то лицами обеих Сторон.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
12.3. Настоящий Договор составлен в двух экземплярах, по одному экземпляру для каждой из Сторон, оба экземпляра имеют равную юридическую силу.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
12.4. Настоящий договор вступает в силу с даты подписания и действует в течение 1 (одного) года, но в любом случае до полного выполнения сторонами своих обязательств по настоящему договору. В случае если ни одна из Сторон не заявит требования о расторжении договора за 30 (тридцать) календарных дней до его окончания, договор считается пролонгированным на каждый последующий год.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
12.5. С момента подписания настоящего Договора все предшествующие договоренности и переписка, связанные с настоящим Договором, теряют силу.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_inn_kpp_info">
|
|
||||||
<td>
|
|
||||||
<b><t t-esc="person.contract_name"/></b><br/>
|
|
||||||
<b>ИНН</b>: <t t-esc="person.inn"/><br/>
|
|
||||||
<b>КПП</b>: <t t-esc="person.kpp"/><br/>
|
|
||||||
</td>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_inn_kpp_fiz_info">
|
|
||||||
<td>
|
|
||||||
<b><t t-esc="person.contract_name"/></b><br/>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
</td>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_payment_template">
|
|
||||||
<td valign="top">
|
|
||||||
<b>Расчетный счет</b>: <t t-esc="person.bank_account.acc_number"/><br/>
|
|
||||||
<b>БИК</b>: <t t-esc="person.bank_account.bank_id.bic"/><br/>
|
|
||||||
<b>Банк-получатель</b>: <t t-esc="person.bank_account.bank_id.name"/><br/>
|
|
||||||
<b>Юридический адрес</b>:<br/>
|
|
||||||
<t t-esc="person.full_adress"/><br/>
|
|
||||||
<b>Телефон</b>: <t t-esc="person.phone" /><br/>
|
|
||||||
</td>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_payment_fiz_template">
|
|
||||||
<td valign="top">
|
|
||||||
<b>Паспорт</b>: <t t-esc="person.passport_data"/><br/>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
<b>Адрес</b>:<br/>
|
|
||||||
<t t-esc="person.full_adress"/><br/>
|
|
||||||
<b>Телефон</b>: <t t-esc="person.phone" /><br/>
|
|
||||||
</td>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_appex_template">
|
|
||||||
<table align="left" width="100%">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<b>Приложение 1 к Договору № <t t-esc="doc.contract_id.name"/> от <t t-esc="doc._context_date"/></b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<b>Спецификация</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<table align="center" width="100%" border="1px" cellpadding="5" cellspacing="0" style="border-style:solid; border-color:#000000; border-collapse:collapse">
|
|
||||||
<tr>
|
|
||||||
<td align="center" width="30" style="border: 1px solid;"><b>№</b></td>
|
|
||||||
<td align="center" style="border: 1px solid;"><b>Товары</b></td>
|
|
||||||
<td align="center" width="40" style="border: 1px solid;"><b>Кол-во</b></td>
|
|
||||||
<td align="center" width="30" style="border: 1px solid;"><b>Ед.</b></td>
|
|
||||||
<td align="center" width="80" style="border: 1px solid;"><b>Цена</b></td>
|
|
||||||
<td align="center" width="80" style="border: 1px solid;"><b>Сумма</b></td>
|
|
||||||
</tr>
|
|
||||||
<t t-set="counter" t-value="0" />
|
|
||||||
|
|
||||||
<t t-foreach="doc.order_id.order_line" t-as="line">
|
|
||||||
<tr>
|
|
||||||
<t t-set="counter" t-value="counter + 1"></t>
|
|
||||||
<td align="center" width="30" style="border: 1px solid;"><b><t t-esc="counter" /></b></td>
|
|
||||||
<td align="center" style="border: 1px solid;"><b><t t-esc="line.name"/></b></td>
|
|
||||||
<td align="center" width="40" style="border: 1px solid;"><b><t t-esc="line.product_qty" /></b></td>
|
|
||||||
<td align="center" width="30" style="border: 1px solid;"><b><t t-esc="line.product_uom.name" /></b></td>
|
|
||||||
<td align="center" width="80" style="border: 1px solid;"><b><t t-esc="line.price_unit" /></b></td>
|
|
||||||
<td align="center" width="80" style="border: 1px solid;"><b><t t-esc="line.price_total"/></b></td>
|
|
||||||
|
|
||||||
</tr>
|
|
||||||
</t>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
<table align="center" width="100%" border="0px" style="border-collapse:collapse;">
|
|
||||||
<tr>
|
|
||||||
<td align="right"><b>Итого:</b></td>
|
|
||||||
<td align="right" width="130"><b><t t-esc="doc.order_id.amount_untaxed"/></b></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="right"><b>Без налога (НДС)</b></td>
|
|
||||||
<td align="right" width="130"><b>-</b></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="right"><b>Всего к оплате:</b></td>
|
|
||||||
<td align="right" width="130"><b><t t-esc="doc.order_id.amount_total"/></b></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<table width="100%">
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="3">
|
|
||||||
Всего наименований <t t-esc="counter"/>, на сумму <t t-esc="doc.order_id.amount_total"/> руб. (<t t-esc="doc._context_summ_word"/>) .<br />
|
|
||||||
Поставка осуществляется на условиях: 100% предоплата<br />
|
|
||||||
Срок поставки - <t t-esc="doc.delivery_terms"/> дн.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td width="49%">
|
|
||||||
<br /><b>ПРОДАВЕЦ</b>
|
|
||||||
</td>
|
|
||||||
<td width="49%">
|
|
||||||
<br /><b>ПОКУПАТЕЛЬ</b>
|
|
||||||
</td>
|
|
||||||
<td class="to_hide"></td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td>
|
|
||||||
<b><t t-esc="doc.company_id.contract_name" /></b><br />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<b></b><br /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td valign="top">
|
|
||||||
<b><t t-esc="doc.company_id.representative_id.function" />:</b><br />
|
|
||||||
<t t-esc="doc.company_id.representative_id.name"/></td>
|
|
||||||
<td valign="top">
|
|
||||||
<b>Уполномоченный представитель</b>:<br />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="3" align="left">
|
|
||||||
<span id="br1" style="display:none"><br /></span>
|
|
||||||
<div id="sign1"><div t-field="doc.company_id.representative_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td>
|
|
||||||
_________________________
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
_________________________
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td>
|
|
||||||
М.П.
|
|
||||||
<div id="stamp1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<div t-field="doc.company_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
М.П.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_bottom_contact_data_template">
|
|
||||||
<table width="100%" border="0">
|
|
||||||
<tr valign="top">
|
|
||||||
<td width="49%">
|
|
||||||
<br/><b>ПРОДАВЕЦ</b>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td width="49%">
|
|
||||||
<br/><b>ПОКУПАТЕЛЬ</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<t t-set="person" t-value="doc.company_id"/>
|
|
||||||
<t t-call="client_contracts.contract_inn_kpp_info"/>
|
|
||||||
<t t-set="person" t-value="doc.partner_id"/>
|
|
||||||
<t t-call="client_contracts.contract_inn_kpp_info"/>
|
|
||||||
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<t t-set="person" t-value="doc.company_id"/>
|
|
||||||
<t t-call="client_contracts.contract_payment_template"/>
|
|
||||||
<t t-set="person" t-value="doc.partner_id"/>
|
|
||||||
<t t-call="client_contracts.contract_payment_template"/>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<b><t t-esc="doc.company_id.representative_id.function"/></b>:<br/>
|
|
||||||
<t t-esc="doc.company_id.representative_id.name"/></td>
|
|
||||||
<td valign="top">
|
|
||||||
<b>Уполномоченный представитель</b>:<br/>
|
|
||||||
<t t-esc="doc.partner_id.representative_id.name" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="3" align="left">
|
|
||||||
<span id="br" style="display:none"><br/></span>
|
|
||||||
<div id="sign"><div t-field="doc.company_id.representative_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td>
|
|
||||||
_________________________
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
_________________________
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td>
|
|
||||||
М.П.
|
|
||||||
<div id="stamp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<div t-field="doc.company_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
М.П.</td>
|
|
||||||
<td class="to_hide"></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_bottom_contact_data_fiz_template">
|
|
||||||
<table width="100%" border="0">
|
|
||||||
<tr valign="top">
|
|
||||||
<td width="49%">
|
|
||||||
<br/><b>ПРОДАВЕЦ</b>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td width="49%">
|
|
||||||
<br/><b>ПОКУПАТЕЛЬ</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<t t-set="person" t-value="doc.company_id"/>
|
|
||||||
<t t-call="client_contracts.contract_inn_kpp_info"/>
|
|
||||||
<t t-set="person" t-value="doc.partner_id"/>
|
|
||||||
<t t-call="client_contracts.contract_inn_kpp_fiz_info"/>
|
|
||||||
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<t t-set="person" t-value="doc.company_id"/>
|
|
||||||
<t t-call="client_contracts.contract_payment_template"/>
|
|
||||||
<t t-set="person" t-value="doc.partner_id"/>
|
|
||||||
<t t-call="client_contracts.contract_payment_fiz_template"/>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<b><t t-esc="doc.company_id.representative_id.function"/></b>:<br/>
|
|
||||||
<t t-esc="doc.company_id.representative_id.name"/></td>
|
|
||||||
<td valign="top">
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="3" align="left">
|
|
||||||
<span id="br" style="display:none"><br/></span>
|
|
||||||
<div id="sign"><div t-field="doc.company_id.representative_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td>
|
|
||||||
_________________________
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
_________________________
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td>
|
|
||||||
М.П.
|
|
||||||
<div id="stamp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<div t-field="doc.company_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td class="to_hide"></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_template">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-foreach="docs" t-as="doc">
|
|
||||||
<div class="article">
|
|
||||||
<t t-call="client_contracts.contract_header_template"/>
|
|
||||||
<table align="tablecenter" border="0px" cellpadding="0" width="100%" style="font-family:Arial; font-size:12px; border-collapse:collapse">
|
|
||||||
<t t-call="client_contracts.contract_number_and_date"/>
|
|
||||||
<t t-call="client_contracts.contract_contact_partner_template"/>
|
|
||||||
</table>
|
|
||||||
<table align="center" border="0px" cellpadding="0" width="100%" style="font-family:Arial; font-size:12px; border-collapse:collapse">
|
|
||||||
<t t-call="client_contracts.contract_contact_seller_template"/>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<b>заключили настоящий Договор о нижеследующем:</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<t t-call="client_contracts.contract_chapter_1_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_2_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_3_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_4_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_5_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_6_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_7_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_8_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_9_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_10_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_11_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_12_template"/>
|
|
||||||
</table>
|
|
||||||
<t t-call="client_contracts.contract_bottom_contact_data_template"/>
|
|
||||||
<p style="page-break-before:always;"> </p>
|
|
||||||
<t t-call="client_contracts.contract_appex_template"/>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_fiz_template">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-foreach="docs" t-as="doc">
|
|
||||||
<div class="article">
|
|
||||||
<t t-call="client_contracts.contract_header_template"/>
|
|
||||||
<table align="tablecenter" border="0px" cellpadding="0" width="100%" style="font-family:Arial; font-size:12px; border-collapse:collapse">
|
|
||||||
<t t-call="client_contracts.contract_number_and_date"/>
|
|
||||||
<t t-call="client_contracts.contract_contact_partner_fiz_template"/>
|
|
||||||
</table>
|
|
||||||
<table align="center" border="0px" cellpadding="0" width="100%" style="font-family:Arial; font-size:12px; border-collapse:collapse">
|
|
||||||
<t t-call="client_contracts.contract_contact_seller_template"/>
|
|
||||||
<tr valign="top">
|
|
||||||
<td colspan="2">
|
|
||||||
<b>заключили настоящий Договор о нижеследующем:</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<t t-call="client_contracts.contract_chapter_1_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_2_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_3_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_4_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_5_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_6_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_7_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_8_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_9_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_10_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_11_template"/>
|
|
||||||
<t t-call="client_contracts.contract_chapter_12_template"/>
|
|
||||||
</table>
|
|
||||||
<t t-call="client_contracts.contract_bottom_contact_data_fiz_template"/>
|
|
||||||
<p style="page-break-before:always;"> </p>
|
|
||||||
<t t-call="client_contracts.contract_appex_template"/>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="contract_appex_only_template">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-foreach="docs" t-as="doc">
|
|
||||||
<div class="article">
|
|
||||||
<t t-call="client_contracts.contract_appex_template"/>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</odoo>
|
|
1
wizard/__init__.py
Normal file
1
wizard/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
from . import res_partner_contract_wizard
|
183
wizard/res_partner_contract_wizard.py
Normal file
183
wizard/res_partner_contract_wizard.py
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import base64
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from odoo import _, api, fields, models
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
|
from ..utils.docxtpl import get_document_from_values_stream
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class ContractWizard(models.TransientModel):
|
||||||
|
_name = "res.partner.contract.wizard"
|
||||||
|
|
||||||
|
def _get_default_template_contract(self):
|
||||||
|
return (
|
||||||
|
self.env["res.partner.template.print.contract"]
|
||||||
|
.search([("is_default", "=", True)], limit=1)
|
||||||
|
.id
|
||||||
|
)
|
||||||
|
|
||||||
|
def _get_default_template_annex(self):
|
||||||
|
return (
|
||||||
|
self.env["res.partner.template.print.annex"]
|
||||||
|
.search([("is_default", "=", True)], limit=1)
|
||||||
|
.id
|
||||||
|
)
|
||||||
|
|
||||||
|
def _get_default_partner(self):
|
||||||
|
current_id = self.env.context.get("active_id")
|
||||||
|
return self.env["res.partner.contract"].browse(current_id).partner_id.id
|
||||||
|
|
||||||
|
target = fields.Reference(
|
||||||
|
selection=[
|
||||||
|
("res.partner.contract", "Contract"),
|
||||||
|
("res.partner.contract.annex", "Contract Annex"),
|
||||||
|
],
|
||||||
|
string="Target",
|
||||||
|
)
|
||||||
|
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",
|
||||||
|
default=_get_default_template_contract,
|
||||||
|
)
|
||||||
|
print_template_annex = fields.Many2one(
|
||||||
|
"res.partner.template.print.annex",
|
||||||
|
string="Print Template of Contract Annex",
|
||||||
|
default=_get_default_template_annex,
|
||||||
|
)
|
||||||
|
|
||||||
|
transient_field_ids = fields.One2many(
|
||||||
|
"res.partner.contract.field.transient",
|
||||||
|
"_contract_wizard_id",
|
||||||
|
string="Contract Fields",
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.onchange("target")
|
||||||
|
def _onchange_target(self):
|
||||||
|
"""Creates transient fields for generate contract template
|
||||||
|
Looks as a tree view of *_contract_field_transient model in xml
|
||||||
|
"""
|
||||||
|
|
||||||
|
def get_contract_field(technical_name):
|
||||||
|
return self.env["res.partner.contract.field"].search(
|
||||||
|
[("technical_name", "=", technical_name),]
|
||||||
|
)
|
||||||
|
|
||||||
|
# A model is the wizard called from
|
||||||
|
active_model = self.env.context.get("active_model")
|
||||||
|
# A record is the model called from (manually set with context)
|
||||||
|
target_id = self.env.context.get("self_id")
|
||||||
|
|
||||||
|
# Reference to this record
|
||||||
|
self.target = "{model},{record_id}".format(
|
||||||
|
model=active_model, record_id=int(target_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check for model and get this meta fields
|
||||||
|
company_id = (
|
||||||
|
self.target.company_id
|
||||||
|
if hasattr(self.target, "company_id")
|
||||||
|
else self.target.contract_id.company_id
|
||||||
|
)
|
||||||
|
partner_id = (
|
||||||
|
self.target.partner_id
|
||||||
|
if hasattr(self.target, "partner_id")
|
||||||
|
else self.target.contract_id.partner_id
|
||||||
|
)
|
||||||
|
|
||||||
|
self.company_id = company_id
|
||||||
|
self.partner_id = partner_id
|
||||||
|
|
||||||
|
model_to_action = {
|
||||||
|
"res.partner.contract": "client_contracts.action_get_contract_context",
|
||||||
|
"res.partner.contract.annex": "client_contracts.action_get_annex_context",
|
||||||
|
}
|
||||||
|
action = model_to_action[active_model]
|
||||||
|
|
||||||
|
# Get dictionary for `transient_fields_ids` with editable fields
|
||||||
|
# With data from Odoo database
|
||||||
|
contract_context_values = (
|
||||||
|
self.env.ref(action).with_context({"onchange_self": self.target}).run()
|
||||||
|
)
|
||||||
|
|
||||||
|
self.transient_field_ids = [ # one2many
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
self.env["res.partner.contract.field.transient"]
|
||||||
|
.create(
|
||||||
|
{"contract_field_id": get_contract_field(field).id, "value": value,}
|
||||||
|
)
|
||||||
|
.id,
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
for field, value in sorted(contract_context_values.items())
|
||||||
|
]
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def get_docx_contract(self):
|
||||||
|
template = self._get_template()
|
||||||
|
if not template:
|
||||||
|
raise UserError("Template must be set up")
|
||||||
|
|
||||||
|
path_to_template = template._full_path(template.store_fname)
|
||||||
|
|
||||||
|
fields = {
|
||||||
|
transient_field.technical_name: transient_field.value
|
||||||
|
for transient_field in self.transient_field_ids
|
||||||
|
if transient_field.technical_name and transient_field.value
|
||||||
|
}
|
||||||
|
|
||||||
|
binary_data = get_document_from_values_stream(path_to_template, fields).read()
|
||||||
|
encoded_data = base64.b64encode(binary_data)
|
||||||
|
|
||||||
|
attachment_name = "{name}-{number}.{ext}".format(
|
||||||
|
number=self.target.name,
|
||||||
|
ext="docx",
|
||||||
|
name=(
|
||||||
|
_("Contract")
|
||||||
|
if self.target._name == "res.partner.contract"
|
||||||
|
else (
|
||||||
|
_("Annex")
|
||||||
|
if self.target._name == "res.partner.contract.annex"
|
||||||
|
else ("Unknown")
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
document_as_attachment = self.env["ir.attachment"].create(
|
||||||
|
{
|
||||||
|
"name": attachment_name,
|
||||||
|
"datas_fname": attachment_name,
|
||||||
|
"type": "binary",
|
||||||
|
"datas": encoded_data,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Send message with attachment to a mail.thread of the company
|
||||||
|
res_id = self.target.id
|
||||||
|
if hasattr(self.target, "contract_id"):
|
||||||
|
res_id = self.target.contract_id.id
|
||||||
|
|
||||||
|
self.env["mail.message"].create(
|
||||||
|
{
|
||||||
|
"model": "res.partner.contract",
|
||||||
|
"res_id": res_id,
|
||||||
|
"message_type": "comment",
|
||||||
|
"attachment_ids": [(4, document_as_attachment.id, False)],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
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)
|
79
wizard/res_partner_contract_wizard.xml
Normal file
79
wizard/res_partner_contract_wizard.xml
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="res_partner_wizard_print_contract_view" model="ir.ui.view">
|
||||||
|
<field name="name">Print Contract</field>
|
||||||
|
<field name="model">res.partner.contract.wizard</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
|
||||||
|
<form>
|
||||||
|
|
||||||
|
<group>
|
||||||
|
<group name="requisites" string="Requisites">
|
||||||
|
<field name="target"/>
|
||||||
|
<field name="partner_id" string="Partner" readonly="1"/>
|
||||||
|
<field name="company_id" string="Seller" readonly="1"/>
|
||||||
|
</group>
|
||||||
|
<!-- <group name="terms" string="Delivery and payment terms">
|
||||||
|
<field name="payment_terms"/>
|
||||||
|
<field name="delivery_terms"/>
|
||||||
|
</group> -->
|
||||||
|
<group string="Contract values" colspan="4">
|
||||||
|
<field name="transient_field_ids">
|
||||||
|
<tree editable="1" create="0" delete="0">
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="value"/>
|
||||||
|
<field name="description" invisible="1"/>
|
||||||
|
<field name="technical_name" invisible="1"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<button string="Create a document" type="object" name="get_docx_contract" />
|
||||||
|
|
||||||
|
<footer/>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_wizard_print_annex_view" model="ir.ui.view">
|
||||||
|
<field name="name">Print Annex</field>
|
||||||
|
<field name="model">res.partner.contract.wizard</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
|
||||||
|
<form>
|
||||||
|
|
||||||
|
<group>
|
||||||
|
<group name="info" string="Info">
|
||||||
|
<field name="target"/>
|
||||||
|
</group>
|
||||||
|
<!-- <group name="terms" string="Delivery and payment terms">
|
||||||
|
<field name="payment_terms"/>
|
||||||
|
<field name="delivery_terms"/>
|
||||||
|
</group> -->
|
||||||
|
<!-- <group name="order" string="Order Info">
|
||||||
|
<field name="order_id"/>
|
||||||
|
</group> -->
|
||||||
|
<group string="Annex values" colspan="4">
|
||||||
|
<field name="transient_field_ids">
|
||||||
|
<tree editable="1" create="0" delete="0">
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="value"/>
|
||||||
|
<field name="description" invisible="1"/>
|
||||||
|
<field name="technical_name" invisible="1"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<button string="Create a document" type="object" name="get_docx_contract" />
|
||||||
|
|
||||||
|
<footer/>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
Loading…
x
Reference in New Issue
Block a user