Public release from ruodoo-project: 19.0 - 2026-05-10 21:19:01 UTC
This commit is contained in:
38
l10n_ru_doc/README.md
Normal file
38
l10n_ru_doc/README.md
Normal file
@ -0,0 +1,38 @@
|
||||
# Российская локализация - Документы
|
||||
name: l10n_ru_doc
|
||||
|
||||
## Описание
|
||||
Модуль для печати документов в соответствии с законодательством России.
|
||||
|
||||
## Возможности:
|
||||
* Товарная накладная (ТОРГ-12)
|
||||
* Счет на оплату (по форме 1С)
|
||||
* Счет-фактура
|
||||
* Акт выполненных работ
|
||||
* Универсальный передаточный документ
|
||||
|
||||
### Товарная накладная (ТОРГ-12)
|
||||
#### Для печати:
|
||||
1. Меню Бухгалтерия - Клиенты - Счета (account.move);
|
||||
2. Отчет "Товарная накладная (ТОРГ-12)".
|
||||
|
||||
### Счет на оплату (по форме 1С)
|
||||
1. Меню Продажи - Заказ продаж (sale.order));
|
||||
2. Отчет "Счет по форме 1С".
|
||||
|
||||
### Счет-фактура
|
||||
1. Меню Бухгалтерия - Клиенты - Счета (account.move);
|
||||
2. Отчет "Счет-фактура".
|
||||
|
||||
### Акт выполненных работ
|
||||
1. Меню Бухгалтерия - Клиенты - Счета (account.move);
|
||||
2. Отчет "Акт выполненных работ".
|
||||
|
||||
### Универсальный передаточный документ
|
||||
1. Меню Бухгалтерия - Клиенты - Счета (account.move);
|
||||
2. В двух вариантах:отчет "Универсальный передаточный документ(УПД)"
|
||||
|
||||
2.1. Отчет "Универсальный передаточный документ(УПД)";
|
||||
|
||||
2.2. Отчет "УПД без печатей";
|
||||
|
||||
5
l10n_ru_doc/__init__.py
Normal file
5
l10n_ru_doc/__init__.py
Normal file
@ -0,0 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import models
|
||||
from . import report_helper
|
||||
from . import report
|
||||
76
l10n_ru_doc/__manifest__.py
Normal file
76
l10n_ru_doc/__manifest__.py
Normal file
@ -0,0 +1,76 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
{
|
||||
'name': "Российская локализация - Документы",
|
||||
|
||||
'summary': "Первичные документы",
|
||||
|
||||
'description': """
|
||||
Модуль для печати документов в соответствии с законодательством России.
|
||||
============================================================
|
||||
Возможности:
|
||||
* Товарная накладная (ТОРГ-12)
|
||||
* Счет на оплату (по форме 1С)
|
||||
* Счет-фактура
|
||||
* Акт выполненных работ
|
||||
* Универсальный передаточный документ
|
||||
|
||||
Для печати:
|
||||
Товарная накладная (ТОРГ-12)
|
||||
1. Меню Бухгалтерия - Клиенты - Счета (account.move);
|
||||
2. Отчет "Товарная накладная (ТОРГ-12)".
|
||||
|
||||
Счет на оплату (по форме 1С)
|
||||
1. Меню Продажи - Заказ продаж (sale.order));
|
||||
2. Отчет "Счет по форме 1С".
|
||||
|
||||
Счет-фактура
|
||||
1. Меню Бухгалтерия - Клиенты - Счета (account.move);
|
||||
2. Отчет "Счет-фактура".
|
||||
|
||||
Акт выполненных работ
|
||||
1. Меню Бухгалтерия - Клиенты - Счета (account.move);
|
||||
2. Отчет "Акт выполненных работ".
|
||||
|
||||
Универсальный передаточный документ
|
||||
1. Меню Бухгалтерия - Клиенты - Счета (account.move);
|
||||
2. В двух вариантах:отчет "Универсальный передаточный документ(УПД)"
|
||||
2.1. Отчет "Универсальный передаточный документ(УПД)";
|
||||
2.2. Отчет "УПД без печатей";
|
||||
|
||||
""",
|
||||
|
||||
'author': "CodeUP and MK.Lab",
|
||||
'website': "https://www.inf-centre.ru/",
|
||||
|
||||
'license': 'AGPL-3',
|
||||
'category': 'Localization',
|
||||
'version': '19.0.2025.11.11',
|
||||
|
||||
'depends': ['base', 'sale', 'account', 'sale_stock', 'uom', 'l10n_ru_base', 'docx_report_generation'],
|
||||
|
||||
'external_dependencies': {'python': ['pytils']},
|
||||
|
||||
'data': [
|
||||
'views/account_invoice_view.xml',
|
||||
'views/res_partner_view.xml',
|
||||
'views/res_company_view.xml',
|
||||
'views/res_users_view.xml',
|
||||
'views/res_bank_view.xml',
|
||||
'views/uom.xml',
|
||||
'views/tax.xml',
|
||||
'views/product.xml',
|
||||
'views/l10n_ru_doc_data.xml',
|
||||
'report/l10n_ru_doc_report.xml',
|
||||
'report/report_order.xml',
|
||||
'report/report_invoice.xml',
|
||||
'report/report_bill.xml',
|
||||
'report/report_act.xml',
|
||||
'report/report_upd.xml',
|
||||
'report/report_updn.xml',
|
||||
],
|
||||
|
||||
'demo': [
|
||||
'demo/l10n_ru_doc_demo.xml',
|
||||
'demo/l10n_ru_doc_demo_extra.xml',
|
||||
],
|
||||
}
|
||||
63
l10n_ru_doc/demo/l10n_ru_doc_demo.xml
Normal file
63
l10n_ru_doc/demo/l10n_ru_doc_demo.xml
Normal file
File diff suppressed because one or more lines are too long
60
l10n_ru_doc/demo/l10n_ru_doc_demo_extra.xml
Normal file
60
l10n_ru_doc/demo/l10n_ru_doc_demo_extra.xml
Normal file
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- ===== ПАРТНЁРЫ — добавляем страну и zip ===== -->
|
||||
<record id="l10n_ru_contract.demo_partner_buyer" model="res.partner">
|
||||
<field name="country_id" ref="base.ru"/>
|
||||
<field name="zip">101000</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ru_contract.demo_partner_supplier" model="res.partner">
|
||||
<field name="country_id" ref="base.ru"/>
|
||||
<field name="zip">190000</field>
|
||||
</record>
|
||||
|
||||
<!-- ===== КОНТАКТ-PERSON от компании покупателя ===== -->
|
||||
<record id="demo_contact_person_buyer" model="res.partner">
|
||||
<field name="name">Иванов Иван Иванович</field>
|
||||
<field name="parent_id" ref="l10n_ru_contract.demo_partner_buyer"/>
|
||||
<field name="type">contact</field>
|
||||
<field name="is_company" eval="False"/>
|
||||
<field name="country_id" ref="base.ru"/>
|
||||
<field name="zip">101000</field>
|
||||
<field name="passport">4510 123456</field>
|
||||
</record>
|
||||
|
||||
<!-- ===== ПРОДУКТ ===== -->
|
||||
<record id="demo_product_tovar" model="product.product">
|
||||
<field name="name">Товар</field>
|
||||
<field name="default_code">TOV-001</field>
|
||||
<field name="barcode">4607001234567</field>
|
||||
<field name="kod_tnved">8471300000</field>
|
||||
<field name="list_price">15000.0</field>
|
||||
<field name="standard_price">9000.0</field>
|
||||
<field name="categ_id" ref="product.product_category_goods"/>
|
||||
<field name="type">consu</field>
|
||||
</record>
|
||||
|
||||
<!-- ===== ИНВОЙС ===== -->
|
||||
<record id="demo_invoice_doc_001" model="account.move">
|
||||
<field name="move_type">out_invoice</field>
|
||||
<field name="partner_id" ref="l10n_ru_contract.demo_partner_buyer"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="invoice_date">2026-02-10</field>
|
||||
<field name="gruzopol" ref="l10n_ru_contract.demo_partner_buyer"/>
|
||||
<field name="gruzootpr" ref="l10n_ru_contract.demo_partner_buyer"/>
|
||||
<field name="sf_number">547</field>
|
||||
<field name="osnovanie">Договор поставки</field>
|
||||
</record>
|
||||
|
||||
<record id="demo_invoice_doc_line_001" model="account.move.line">
|
||||
<field name="move_id" ref="demo_invoice_doc_001"/>
|
||||
<field name="product_id" ref="demo_product_tovar"/>
|
||||
<field name="quantity">3.0</field>
|
||||
<field name="price_unit">15000.0</field>
|
||||
<field name="name">Товар</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
116
l10n_ru_doc/i18n/ru.po
Normal file
116
l10n_ru_doc/i18n/ru.po
Normal file
@ -0,0 +1,116 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_ru_doc
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-08-19 09:27+0000\n"
|
||||
"PO-Revision-Date: 2020-08-19 09:27+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: l10n_ru_doc
|
||||
#: model:ir.actions.report,name:l10n_ru_doc.report_account_invoice_act
|
||||
msgid "Act"
|
||||
msgstr "Акт об оказании услуг"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.actions.report,name:l10n_ru_doc.report_account_invoice_bill
|
||||
msgid "Bill"
|
||||
msgstr "Товарная накладная (ТОРГ-12)"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,help:l10n_ru_doc.field_res_company__print_facsimile
|
||||
#: model:ir.model.fields,help:l10n_ru_doc.field_res_users__print_facsimile
|
||||
msgid "Check this for adding Facsimiles of responsible persons to documents."
|
||||
msgstr "Отметьте, для вставки подписей ответственных лиц в документы."
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,help:l10n_ru_doc.field_res_company__print_stamp
|
||||
msgid "Check this for adding Stamp of company to documents."
|
||||
msgstr "Отметьте, для вставки печати организации в документы."
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_company__chief_id
|
||||
msgid "Chief"
|
||||
msgstr "Руководитель организации"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_account_setup_bank_manual_config__bank_corr_acc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_bank__corr_acc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_partner_bank__bank_corr_acc
|
||||
msgid "Corresponding account"
|
||||
msgstr "Корр. счет"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_ru_doc.view_company_ru_form
|
||||
msgid "Documents"
|
||||
msgstr "Документы"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_users__facsimile
|
||||
msgid "Facsimile"
|
||||
msgstr "Подпись"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_company__inn
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_partner__inn
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_users__inn
|
||||
msgid "INN"
|
||||
msgstr "ИНН"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_company__kpp
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_partner__kpp
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_users__kpp
|
||||
msgid "KPP"
|
||||
msgstr "КПП"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_company__okpo
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_partner__okpo
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_users__okpo
|
||||
msgid "OKPO"
|
||||
msgstr "ОКПО"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_company__print_anywhere
|
||||
msgid "Print Anywhere"
|
||||
msgstr "Документы"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_company__print_facsimile
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_users__print_facsimile
|
||||
msgid "Print Facsimile"
|
||||
msgstr "Выводить подписи"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_company__print_stamp
|
||||
msgid "Print Stamp"
|
||||
msgstr "Выводить печать"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_ru_doc.view_company_ru_form
|
||||
msgid "Responsible Persons"
|
||||
msgstr "Ответственные лица"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,field_description:l10n_ru_doc.field_res_company__stamp
|
||||
msgid "Stamp"
|
||||
msgstr "Печать"
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.model.fields,help:l10n_ru_doc.field_res_company__print_anywhere
|
||||
msgid "Uncheck this, if you want add Facsimile and Stamp only in email."
|
||||
msgstr "Снимите отметку, если хотите добавлять подписи и печать только в email."
|
||||
|
||||
#. module: l10n_ru_doc
|
||||
#: model:ir.actions.report,name:l10n_ru_doc.report_account_invoice_upd
|
||||
msgid "Upd"
|
||||
msgstr "Универсальный платежный документ (УПД)"
|
||||
12
l10n_ru_doc/models/__init__.py
Normal file
12
l10n_ru_doc/models/__init__.py
Normal file
@ -0,0 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import res_partner
|
||||
from . import res_company
|
||||
from . import res_users
|
||||
from . import res_bank
|
||||
from . import account_invoice
|
||||
from . import account_move_line
|
||||
from . import sale
|
||||
from . import uom
|
||||
from . import tax
|
||||
from . import product
|
||||
150
l10n_ru_doc/models/account_invoice.py
Normal file
150
l10n_ru_doc/models/account_invoice.py
Normal file
@ -0,0 +1,150 @@
|
||||
from datetime import datetime
|
||||
from odoo import api, fields, models
|
||||
|
||||
class AccountInvoice(models.Model):
|
||||
_inherit = 'account.move'
|
||||
kladov=fields.Many2one('res.users', string='Ответственный за передачу товаров/услуг')
|
||||
gruzopol=fields.Many2one('res.partner', string='Грузополучатель')
|
||||
gruzootpr=fields.Many2one('res.partner', string='Грузоотправитель')
|
||||
transport=fields.Char('Данные о транспортировке и грузе')
|
||||
osnovanie=fields.Char('Основание')
|
||||
payment_text=fields.Char('Текст для платежек в УПД', compute='_compute_get_txtpayment')
|
||||
payment_num=fields.Char('Номер платежки в УПД', compute='_compute_get_txtpayment')
|
||||
payment_date = fields.Char('Дата платежки в УПД', compute='_compute_get_txtpayment')
|
||||
only_service = fields.Boolean('Только услуги', compute='_compute_get_check_service')
|
||||
|
||||
@api.depends('invoice_line_ids')
|
||||
def _compute_get_check_service(self):
|
||||
for s in self:
|
||||
s.only_service = all((line.product_id.type=='service') for line in s.invoice_line_ids)
|
||||
|
||||
def _compute_get_txtpayment(self):
|
||||
for s in self:
|
||||
payments = s._get_reconciled_payments()
|
||||
payment_text = ''
|
||||
|
||||
for payment in payments:
|
||||
if payment.date:
|
||||
payment_text += payment.name + ' от ' + \
|
||||
fields.Datetime.from_string(payment.date).strftime("%d.%m.%Y")
|
||||
if payments[-1]!=payment:
|
||||
payment_text += ', '
|
||||
if payments:
|
||||
s.payment_num = payments[0].name
|
||||
s.payment_date = fields.Datetime.from_string(payments[0].date).strftime("%d.%m.%Y")
|
||||
else:
|
||||
s.payment_num = ''
|
||||
s.payment_text = ''
|
||||
s.payment_date = ''
|
||||
|
||||
s.payment_text = payment_text
|
||||
|
||||
# def action_bill_sent(self):
|
||||
# assert len(self) == 1, 'This option should only be used for a single id at a time.'
|
||||
# template = self.env.ref('account.email_template_edi_invoice', False)
|
||||
# compose_form = self.env.ref('mail.email_compose_message_wizard_form', False)
|
||||
# ctx = {
|
||||
# 'default_model': 'account.move',
|
||||
# 'default_res_id': self.id,
|
||||
# 'default_use_template': bool(template),
|
||||
# 'default_template_id': template.id,
|
||||
# 'default_composition_mode': 'comment',
|
||||
# 'mark_invoice_as_sent': True,
|
||||
# }
|
||||
# return {
|
||||
# 'name': 'Compose Email',
|
||||
# 'type': 'ir.actions.act_window',
|
||||
# 'view_type': 'form',
|
||||
# 'view_mode': 'form',
|
||||
# 'res_model': 'mail.compose.message',
|
||||
# 'views': [(compose_form.id, 'form')],
|
||||
# 'view_id': compose_form.id,
|
||||
# 'target': 'new',
|
||||
# 'context': ctx,
|
||||
# }
|
||||
|
||||
def bill_print(self):
|
||||
assert len(self) == 1, 'This option should only be used for a single id at a time.'
|
||||
return self.env['report'].get_action(self, 'l10n_ru_doc.report_upd')
|
||||
|
||||
def get_delivery_doc_name(self):
|
||||
for s in self:
|
||||
if s:
|
||||
pickings = []
|
||||
pickings_list = '0'
|
||||
orders = self.env['sale.order'].sudo().search([('name','=',s.invoice_origin)]) if s.invoice_origin else []
|
||||
for o in orders:
|
||||
if o.picking_ids:
|
||||
for p in o.picking_ids:
|
||||
pickings.append(p.name)
|
||||
if len(pickings)>0:
|
||||
pickings_list = ';'.join(pickings)
|
||||
if pickings_list != '0':
|
||||
return pickings_list
|
||||
if s.name and s.name.find('/') > -1:
|
||||
return 'УПД № ' + s.name[len(s.name) - 4:]
|
||||
return 'УПД № ' + str(s.name) if s.name else ''
|
||||
|
||||
|
||||
def get_delivery_doc_date(self):
|
||||
for s in self:
|
||||
if s:
|
||||
delivery_dates = []
|
||||
pickings = []
|
||||
orders = self.env['sale.order'].sudo().search([('name', '=', s.invoice_origin)])
|
||||
for o in orders:
|
||||
if o.picking_ids:
|
||||
for p in o.picking_ids:
|
||||
if p.date_done:
|
||||
formatted_date = datetime.strftime(p.date, '%d.%m.%Y')
|
||||
pickings.append(formatted_date)
|
||||
if pickings and len(pickings)>0:
|
||||
delivery_dates.append(';'.join(pickings))
|
||||
else:
|
||||
if s.date:
|
||||
delivery_dates.append(datetime.strftime(s.date, '%d.%m.%Y'))
|
||||
return delivery_dates
|
||||
|
||||
def get_function_partner(self, partner=False, type='director'):
|
||||
if partner:
|
||||
if partner.parent_id:
|
||||
partner = partner.parent_id
|
||||
director = self.env['res.partner'].search([('parent_id', '=', partner.id),
|
||||
('type', '=', type)], limit=1)
|
||||
if director:
|
||||
if director.function:
|
||||
return director.function
|
||||
return ''
|
||||
|
||||
def get_name_partner(self, partner=False, type='director'):
|
||||
if partner:
|
||||
if partner.parent_id:
|
||||
partner = partner.parent_id
|
||||
director = self.env['res.partner'].search([('parent_id', '=', partner.id),
|
||||
('type', '=', type)], limit=1)
|
||||
if director:
|
||||
if director.name:
|
||||
return director.name
|
||||
return ''
|
||||
|
||||
def get_facsimile_partner(self, partner=False, type='director'):
|
||||
if partner:
|
||||
if partner.parent_id:
|
||||
partner = partner.parent_id
|
||||
director = self.env['res.partner'].search([('parent_id', '=', partner.id),
|
||||
('type', '=', type)],
|
||||
limit=1)
|
||||
if director:
|
||||
if director.facsimile:
|
||||
return director.facsimile
|
||||
return ''
|
||||
|
||||
def get_stamp_partner(self, partner=False):
|
||||
if partner:
|
||||
if partner.parent_id:
|
||||
partner = partner.parent_id
|
||||
if partner.stamp:
|
||||
return partner.stamp
|
||||
return False
|
||||
|
||||
|
||||
29
l10n_ru_doc/models/account_move_line.py
Normal file
29
l10n_ru_doc/models/account_move_line.py
Normal file
@ -0,0 +1,29 @@
|
||||
from datetime import datetime
|
||||
from odoo import api, fields, models
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
_inherit = 'account.move.line'
|
||||
|
||||
price_total_pf = fields.Monetary(
|
||||
string='TotalPF',
|
||||
compute='_compute_totals',
|
||||
currency_field='currency_id',
|
||||
)
|
||||
|
||||
@api.depends('quantity', 'discount', 'price_unit', 'tax_ids', 'currency_id')
|
||||
def _compute_totals(self):
|
||||
super(AccountMoveLine,self)._compute_totals()
|
||||
for line in self:
|
||||
line_discount_price_unit = line.price_unit * (1 - (line.discount / 100.0))
|
||||
if line.tax_ids.filtered(lambda tax: tax.invisiblePF == False):
|
||||
taxes_res = line.tax_ids.filtered(lambda tax: tax.invisiblePF == False).compute_all(
|
||||
line_discount_price_unit,
|
||||
quantity=line.quantity,
|
||||
currency=line.currency_id,
|
||||
product=line.product_id,
|
||||
partner=line.partner_id,
|
||||
is_refund=line.is_refund,
|
||||
)
|
||||
line.price_total_pf = taxes_res['total_included']
|
||||
else:
|
||||
line.price_total_pf = line.price_total
|
||||
5
l10n_ru_doc/models/product.py
Normal file
5
l10n_ru_doc/models/product.py
Normal file
@ -0,0 +1,5 @@
|
||||
from odoo import fields, models
|
||||
|
||||
class ProductTnved(models.Model):
|
||||
_inherit = 'product.product'
|
||||
kod_tnved = fields.Char('Код ТНВЭД')
|
||||
19
l10n_ru_doc/models/res_bank.py
Normal file
19
l10n_ru_doc/models/res_bank.py
Normal file
@ -0,0 +1,19 @@
|
||||
from odoo import api, fields, models
|
||||
|
||||
class Bank(models.Model):
|
||||
_inherit = 'res.bank'
|
||||
|
||||
corr_acc = fields.Char('Corresponding account', size=64)
|
||||
|
||||
|
||||
class ResPartnerBank(models.Model):
|
||||
_inherit = 'res.partner.bank'
|
||||
|
||||
bank_corr_acc = fields.Char('Corresponding account', size=64)
|
||||
|
||||
@api.onchange('bank_id')
|
||||
def onchange_bank_id(self):
|
||||
for s in self:
|
||||
s.bank_name = s.bank_id.name
|
||||
s.bank_bic = s.bank_id.bic
|
||||
s.bank_corr_acc = s.bank_id.corr_acc
|
||||
18
l10n_ru_doc/models/res_company.py
Normal file
18
l10n_ru_doc/models/res_company.py
Normal file
@ -0,0 +1,18 @@
|
||||
from odoo import fields, models
|
||||
|
||||
class Company(models.Model):
|
||||
_inherit = 'res.company'
|
||||
|
||||
inn = fields.Char(related='partner_id.inn', readonly=False)
|
||||
kpp = fields.Char(related='partner_id.kpp', readonly=False)
|
||||
okpo = fields.Char(related='partner_id.okpo', readonly=False)
|
||||
chief_id = fields.Many2one('res.users', 'Chief')
|
||||
accountant_id = fields.Many2one('res.users', 'General Accountant')
|
||||
print_facsimile = fields.Boolean(string='Print Facsimile',
|
||||
help="Check this for adding Facsimiles of responsible persons to documents.")
|
||||
print_stamp = fields.Boolean(string='Print Stamp',
|
||||
help="Check this for adding Stamp of company to documents.")
|
||||
stamp = fields.Binary("Stamp")
|
||||
print_anywhere = fields.Boolean(string='Print Anywhere',
|
||||
help="Uncheck this, if you want add Facsimile and Stamp only in email.",
|
||||
default=True)
|
||||
11
l10n_ru_doc/models/res_partner.py
Normal file
11
l10n_ru_doc/models/res_partner.py
Normal file
@ -0,0 +1,11 @@
|
||||
from odoo import fields, models
|
||||
class ResPartner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
inn = fields.Char('INN', related='vat')
|
||||
kpp = fields.Char('KPP', size=9)
|
||||
okpo = fields.Char('OKPO', size=14)
|
||||
ogrn = fields.Char('ОГРН')
|
||||
type = fields.Selection(selection_add=[('director', 'Директор'), ('accountant', 'Бухгалтер')])
|
||||
facsimile = fields.Binary("Подпись")
|
||||
stamp = fields.Binary("Печать")
|
||||
7
l10n_ru_doc/models/res_users.py
Normal file
7
l10n_ru_doc/models/res_users.py
Normal file
@ -0,0 +1,7 @@
|
||||
from odoo import fields, models
|
||||
|
||||
class Users(models.Model):
|
||||
_inherit = 'res.users'
|
||||
|
||||
print_facsimile = fields.Boolean(related='company_id.print_facsimile')
|
||||
facsimile = fields.Binary()
|
||||
73
l10n_ru_doc/models/sale.py
Normal file
73
l10n_ru_doc/models/sale.py
Normal file
@ -0,0 +1,73 @@
|
||||
from odoo import models, fields, api
|
||||
from datetime import datetime
|
||||
import re
|
||||
from pytils import numeral, dt
|
||||
from odoo.tools import pycompat
|
||||
|
||||
|
||||
class SaleOrder(models.Model):
|
||||
_inherit = 'sale.order'
|
||||
|
||||
amount_total_words = fields.Char(
|
||||
string='Сумма прописью',
|
||||
compute='_compute_amount_total_words',
|
||||
store=True
|
||||
)
|
||||
|
||||
chief_initials = fields.Char(
|
||||
string='Инициалы руководителя',
|
||||
compute='_compute_chief_initials',
|
||||
store=True
|
||||
)
|
||||
|
||||
accountant_initials = fields.Char(
|
||||
string='Инициалы бухгалтера',
|
||||
compute='_compute_accountant_initials',
|
||||
store=True
|
||||
)
|
||||
|
||||
@api.depends('company_id.chief_id.name')
|
||||
def _compute_chief_initials(self):
|
||||
for order in self:
|
||||
if order.company_id and order.company_id.chief_id:
|
||||
order.chief_initials = self._get_initials(order.company_id.chief_id.name)
|
||||
else:
|
||||
order.chief_initials = ''
|
||||
|
||||
@api.depends('company_id.accountant_id.name')
|
||||
def _compute_accountant_initials(self):
|
||||
for order in self:
|
||||
if order.company_id and order.company_id.accountant_id:
|
||||
order.accountant_initials = self._get_initials(order.company_id.accountant_id.name)
|
||||
else:
|
||||
order.accountant_initials = ''
|
||||
|
||||
def _get_initials(self, fio):
|
||||
if fio:
|
||||
# fio.split()[0]
|
||||
# [fio[0:1]+'.' for fio in fio.split()[1:]]
|
||||
return (fio.split()[0] + ' ' + ''.join([part[0:1] + '.' for part in fio.split()[1:]])).strip()
|
||||
return ''
|
||||
|
||||
@api.depends('amount_total')
|
||||
def _compute_amount_total_words(self):
|
||||
for order in self:
|
||||
if order.amount_total:
|
||||
order.amount_total_words = self.rubles(order.amount_total)
|
||||
else:
|
||||
order.amount_total_words = ''
|
||||
|
||||
def rubles(self, sum_amount):
|
||||
rub = int(sum_amount)
|
||||
kop = int(round((sum_amount - rub) * 100))
|
||||
|
||||
text_rubles = numeral.rubles(rub)
|
||||
text_copeck = numeral.choose_plural(kop, ("копейка", "копейки", "копеек"))
|
||||
text_rubles = text_rubles[0].upper() + text_rubles[1:]
|
||||
|
||||
return ("%s %02d %s") % (text_rubles, kop, text_copeck)
|
||||
|
||||
def print_quotation(self):
|
||||
self.filtered(lambda s: s.state == 'draft').write({'state': 'sent'})
|
||||
return self.env['report'].get_action(self, 'l10n_ru_doc.report_order')
|
||||
|
||||
6
l10n_ru_doc/models/tax.py
Normal file
6
l10n_ru_doc/models/tax.py
Normal file
@ -0,0 +1,6 @@
|
||||
from odoo import fields, models
|
||||
|
||||
class TaxInherit(models.Model):
|
||||
_inherit = 'account.tax'
|
||||
|
||||
invisiblePF = fields.Boolean('Не видно в ПФ')
|
||||
4
l10n_ru_doc/models/uom.py
Normal file
4
l10n_ru_doc/models/uom.py
Normal file
@ -0,0 +1,4 @@
|
||||
from odoo import fields, models
|
||||
class UomInherit(models.Model):
|
||||
_inherit = 'uom.uom'
|
||||
kod = fields.Char('Код единицы измерения')
|
||||
5
l10n_ru_doc/report/__init__.py
Normal file
5
l10n_ru_doc/report/__init__.py
Normal file
@ -0,0 +1,5 @@
|
||||
from . import report_order
|
||||
from . import report_invoice
|
||||
from . import report_bill
|
||||
from . import report_act
|
||||
from . import report_upd
|
||||
179
l10n_ru_doc/report/l10n_ru_doc_report.xml
Normal file
179
l10n_ru_doc/report/l10n_ru_doc_report.xml
Normal file
@ -0,0 +1,179 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="paperformat_a4" model="report.paperformat">
|
||||
<field name="name">A4</field>
|
||||
<field name="default" eval="True"/>
|
||||
<field name="format">A4</field>
|
||||
<field name="page_height">0</field>
|
||||
<field name="page_width">0</field>
|
||||
<field name="orientation">Portrait</field>
|
||||
<field name="margin_top">7</field>
|
||||
<field name="margin_bottom">7</field>
|
||||
<field name="margin_left">7</field>
|
||||
<field name="margin_right">7</field>
|
||||
<field name="header_line" eval="False"/>
|
||||
<field name="header_spacing">35</field>
|
||||
<field name="dpi">75</field>
|
||||
</record>
|
||||
<record id="paperformat_a4l" model="report.paperformat">
|
||||
<field name="name">A4 Landscape</field>
|
||||
<field name="default" eval="True"/>
|
||||
<field name="format">A4</field>
|
||||
<field name="page_height">0</field>
|
||||
<field name="page_width">0</field>
|
||||
<field name="orientation">Landscape</field>
|
||||
<field name="margin_top">7</field>
|
||||
<field name="margin_bottom">7</field>
|
||||
<field name="margin_left">7</field>
|
||||
<field name="margin_right">7</field>
|
||||
<field name="header_line" eval="False"/>
|
||||
<field name="header_spacing">75</field>
|
||||
<field name="dpi">60</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ru_doc.action_report_saleorder_new" model="ir.actions.report">
|
||||
<field name="name">Счет по форме 1С</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="report_type">qweb-pdf</field>
|
||||
<field name="report_name">l10n_ru_doc.report_order</field>
|
||||
<field name="report_file">l10n_ru_doc.report_order</field>
|
||||
<field name="print_report_name">'Счет - %s ' % ((object.name or '')+' '+(object.partner_id.parent_id.name if object.partner_id.parent_id else object.partner_id.name))</field>
|
||||
<field name="binding_model_id" ref="sale.model_sale_order" />
|
||||
<field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4" />
|
||||
<field name="binding_type">report</field>
|
||||
</record>
|
||||
|
||||
<!-- <record id="l10n_ru_doc.action_report_saleorder_new_templates" model="ir.actions.report">-->
|
||||
<!-- <field name="name">Счет по форме 1С DOCX</field>-->
|
||||
<!-- <field name="model">sale.order</field>-->
|
||||
<!-- <field name="report_type">docx-docx</field>-->
|
||||
<!-- <field name="report_file">l10n_ru_doc.report_order</field>-->
|
||||
<!-- <field name="print_report_name">'Счет - %s DOCX' % ((object.name or '')+' '+(object.partner_id.parent_id.name if object.partner_id.parent_id else object.partner_id.name))</field>-->
|
||||
<!-- <field name="binding_model_id" ref="sale.model_sale_order"/>-->
|
||||
<!-- <field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4"/>-->
|
||||
<!-- <field name="binding_type">report</field>-->
|
||||
<!-- <field name="report_docx_template" type="base64" file="docx_report/static/src/docx/report_saleorder_new_template.docx"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <record id="l10n_ru_doc.account_invoices_new" model="ir.actions.report">-->
|
||||
<!-- <field name="name">Счет-фактура</field>-->
|
||||
<!-- <field name="model">account.move</field>-->
|
||||
<!-- <field name="report_type">qweb-pdf</field>-->
|
||||
<!-- <field name="report_name">l10n_ru_doc.report_invoice</field>-->
|
||||
<!-- <field name="report_file">l10n_ru_doc.report_invoice</field>-->
|
||||
<!-- <field name="print_report_name">'Счет-фактура - %s ' % ((object.name or '')+' '+(object.partner_id.parent_id.name if object.partner_id.parent_id else object.partner_id.name))</field>-->
|
||||
<!-- <field name="binding_model_id" ref="account.model_account_move" />-->
|
||||
<!-- <field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4l" />-->
|
||||
<!-- <field name="binding_type">report</field>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <record id="l10n_ru_doc.account_invoices_new_templates" model="ir.actions.report">-->
|
||||
<!-- <field name="name">Счет-фактура DOCX</field>-->
|
||||
<!-- <field name="model">account.move</field>-->
|
||||
<!-- <field name="report_type">docx-docx</field>-->
|
||||
<!-- <field name="report_file">l10n_ru_doc.report_invoice</field>-->
|
||||
<!-- <field name="print_report_name">'Счет-фактура - %s DOCX' % ((object.name or '')+' '+(object.partner_id.parent_id.name if object.partner_id.parent_id else object.partner_id.name))</field>-->
|
||||
<!-- <field name="binding_model_id" ref="account.model_account_move" />-->
|
||||
<!-- <field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4l" />-->
|
||||
<!-- <field name="binding_type">report</field>-->
|
||||
<!-- <field name="report_docx_template" type="base64" file="l10n_ru_doc/static/src/docx/report_account_invoices_new_templates.docx"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <record id="l10n_ru_doc.report_account_invoice_bill_new" model="ir.actions.report">-->
|
||||
<!-- <field name="name">Товарная накладная (ТОРГ-12)</field>-->
|
||||
<!-- <field name="model">account.move</field>-->
|
||||
<!-- <field name="report_type">qweb-pdf</field>-->
|
||||
<!-- <field name="report_name">l10n_ru_doc.report_bill</field>-->
|
||||
<!-- <field name="report_file">l10n_ru_doc.report_bill</field>-->
|
||||
<!-- <field name="print_report_name">'Товарная накладная - %s ' % ((object.name or '')+' '+(object.partner_id.parent_id.name if object.partner_id.parent_id else object.partner_id.name))</field>-->
|
||||
<!-- <field name="binding_model_id" ref="account.model_account_move" />-->
|
||||
<!-- <field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4l" />-->
|
||||
<!-- <field name="binding_type">report</field>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <record id="l10n_ru_doc.report_account_invoice_bill_new_templates" model="ir.actions.report">-->
|
||||
<!-- <field name="name">Товарная накладная (ТОРГ-12) DOCX</field>-->
|
||||
<!-- <field name="model">account.move</field>-->
|
||||
<!-- <field name="report_type">docx-docx</field>-->
|
||||
<!-- <field name="report_file">l10n_ru_doc.report_bill</field>-->
|
||||
<!-- <field name="print_report_name">'Товарная накладная - %s DOCX' % ((object.name or '')+' '+(object.partner_id.parent_id.name if object.partner_id.parent_id else object.partner_id.name))</field>-->
|
||||
<!-- <field name="binding_model_id" ref="account.model_account_move" />-->
|
||||
<!-- <field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4l" />-->
|
||||
<!-- <field name="binding_type">report</field>-->
|
||||
<!-- <field name="report_docx_template" type="base64" file="l10n_ru_doc/static/src/docx/report_account_invoice_bill_new_templates.docx"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <record id="l10n_ru_doc.report_account_invoice_act_new" model="ir.actions.report">-->
|
||||
<!-- <field name="name">Акт выполненных работ</field>-->
|
||||
<!-- <field name="model">account.move</field>-->
|
||||
<!-- <field name="report_type">qweb-pdf</field>-->
|
||||
<!-- <field name="report_name">l10n_ru_doc.report_act</field>-->
|
||||
<!-- <field name="report_file">l10n_ru_doc.report_act</field>-->
|
||||
<!-- <field name="print_report_name">'Акт - %s ' % ((object.name or '')+' '+(object.partner_id.parent_id.name if object.partner_id.parent_id else object.partner_id.name))</field>-->
|
||||
<!-- <field name="binding_model_id" ref="account.model_account_move" />-->
|
||||
<!-- <field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4" />-->
|
||||
<!-- <field name="binding_type">report</field>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <record id="l10n_ru_doc.report_account_invoice_act_new_templates" model="ir.actions.report">-->
|
||||
<!-- <field name="name">Акт выполненных работ DOCX</field>-->
|
||||
<!-- <field name="model">account.move</field>-->
|
||||
<!-- <field name="report_type">docx-docx</field>-->
|
||||
<!-- <field name="report_file">l10n_ru_doc.report_act</field>-->
|
||||
<!-- <field name="print_report_name">'Акт - %s ' % ((object.name or '')+' DOCX '+(object.partner_id.parent_id.name if object.partner_id.parent_id else object.partner_id.name))</field>-->
|
||||
<!-- <field name="binding_model_id" ref="account.model_account_move" />-->
|
||||
<!-- <field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4" />-->
|
||||
<!-- <field name="binding_type">report</field>-->
|
||||
<!-- <field name="report_docx_template" type="base64" file="l10n_ru_doc/static/src/docx/report_account_invoice_act_new_templates.docx"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<record id="report_account_invoice_upd_new" model="ir.actions.report">
|
||||
<field name="name">Универсальный передаточный документ(УПД)</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="report_type">qweb-pdf</field>
|
||||
<field name="report_name">l10n_ru_doc.report_upd</field>
|
||||
<field name="report_file">l10n_ru_doc.report_upd</field>
|
||||
<field name="print_report_name">'УПД'</field>
|
||||
<field name="binding_model_id" ref="account.model_account_move" />
|
||||
<field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4l" />
|
||||
<field name="binding_type">report</field>
|
||||
</record>
|
||||
|
||||
<!-- <record id="report_account_invoice_upd_new_templates" model="ir.actions.report">-->
|
||||
<!-- <field name="name">Универсальный передаточный документ(УПД) DOCX</field>-->
|
||||
<!-- <field name="model">account.move</field>-->
|
||||
<!-- <field name="report_type">docx-docx</field>-->
|
||||
<!-- <field name="report_file">l10n_ru_doc.report_upd</field>-->
|
||||
<!-- <field name="print_report_name">'УПД DOCX'</field>-->
|
||||
<!-- <field name="binding_model_id" ref="account.model_account_move" />-->
|
||||
<!-- <field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4l" />-->
|
||||
<!-- <field name="binding_type">report</field>-->
|
||||
<!-- <field name="report_docx_template" type="base64" file="docx_report/static/src/docx/report_account_invoice_upd_new_templates.docx"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<record id="report_account_invoice_updn" model="ir.actions.report">
|
||||
<field name="name">УПД без печатей</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="report_type">qweb-pdf</field>
|
||||
<field name="report_name">l10n_ru_doc.report_updn</field>
|
||||
<field name="report_file">l10n_ru_doc.report_updn</field>
|
||||
<field name="print_report_name">'УПД без печатей'</field>
|
||||
<field name="binding_model_id" ref="account.model_account_move" />
|
||||
<field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4l" />
|
||||
<field name="binding_type">report</field>
|
||||
</record>
|
||||
|
||||
<!-- <record id="report_account_invoice_updn_templates" model="ir.actions.report">-->
|
||||
<!-- <field name="name">УПД без печатей DOCX</field>-->
|
||||
<!-- <field name="model">account.move</field>-->
|
||||
<!-- <field name="report_type">docx-docx</field>-->
|
||||
<!-- <field name="report_file">l10n_ru_doc.report_updn</field>-->
|
||||
<!-- <field name="print_report_name">'УПД без печатей DOCX'</field>-->
|
||||
<!-- <field name="binding_model_id" ref="account.model_account_move" />-->
|
||||
<!-- <field name="paperformat_id" ref="l10n_ru_doc.paperformat_a4l" />-->
|
||||
<!-- <field name="binding_type">report</field>-->
|
||||
<!-- <field name="report_docx_template" type="base64" file="docx_report/static/src/docx/report_account_invoice_updn_templates.docx"/>-->
|
||||
<!-- </record>-->
|
||||
</data>
|
||||
</openerp>
|
||||
16
l10n_ru_doc/report/report_act.py
Normal file
16
l10n_ru_doc/report/report_act.py
Normal file
@ -0,0 +1,16 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import models
|
||||
from odoo.addons.l10n_ru_doc.report_helper import QWebHelper
|
||||
|
||||
class RuActReport(models.AbstractModel):
|
||||
_name = 'report.l10n_ru_doc.report_act'
|
||||
|
||||
def _get_report_values(self, docids, data=None):
|
||||
docs = self.env['account.move'].browse(docids)
|
||||
return {
|
||||
'helper': QWebHelper(),
|
||||
'doc_ids': docs.ids,
|
||||
'doc_model': 'account.move',
|
||||
'docs': docs
|
||||
}
|
||||
203
l10n_ru_doc/report/report_act.xml
Normal file
203
l10n_ru_doc/report/report_act.xml
Normal file
@ -0,0 +1,203 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<template id="report_act">
|
||||
<t t-call="web.basic_layout">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<!-- Multicompany -->
|
||||
<t t-if="o and 'company_id' in o">
|
||||
<t t-set="company" t-value="o.company_id"></t>
|
||||
</t>
|
||||
<t t-if="not o or not 'company_id' in o">
|
||||
<t t-set="company" t-value="res_company"></t>
|
||||
</t>
|
||||
<t t-set="context" t-value="o._context"></t>
|
||||
|
||||
<div class="page">
|
||||
|
||||
<STYLE TYPE="text/css">
|
||||
body { background: #ffffff; margin: 0; font-family: Arial; font-size: 8pt; font-style: normal; }
|
||||
tr.R0{ height: 15px; }
|
||||
tr.R0 td.R11C1{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: center; vertical-align: medium; border-left: #000000 2px solid; border-top: #000000 2px solid; }
|
||||
tr.R0 td.R11C29{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 2px solid; border-right: #000000 2px solid; }
|
||||
tr.R0 td.R11C3{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 2px solid; }
|
||||
tr.R0 td.R14C1{ text-align: center; vertical-align: top; border-left: #000000 2px solid; border-top: #000000 1px solid; }
|
||||
tr.R0 td.R14C20{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; }
|
||||
tr.R0 td.R14C23{ vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; }
|
||||
tr.R0 td.R14C29{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-right: #000000 2px solid; }
|
||||
tr.R0 td.R14C3{ vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; }
|
||||
tr.R0 td.R31C1{ font-family: Arial; font-size: 9pt; font-style: normal; }
|
||||
tr.R17{ height: 20px; }
|
||||
tr.R2{ height: 1px; }
|
||||
tr.R3{ height: 28px; }
|
||||
tr.R3 td.R3C1{ font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; vertical-align: medium; border-bottom: #000000 2px solid; }
|
||||
tr.R32{ height: 19px; }
|
||||
tr.R37{ height: 25px; }
|
||||
tr.R37 td.R37C1{ border-bottom: #000000 1px solid; }
|
||||
tr.R37 td.R37C17{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; }
|
||||
tr.R37 td.R37C4{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: right; border-bottom: #000000 1px solid; }
|
||||
tr.R37 td.R37C5, tr.R37 td.R37C5I, tr.R37 td.R37C5S{ font-family: Arial; font-size: 7pt; font-style: normal; text-align: right; border-bottom: #000000 1px solid; }
|
||||
tr.R37 td.R37C5I,tr.R37 td.R37C5S { overflow: visible; }
|
||||
tr.R37 td.R37C5I span,tr.R37 td.R37C5S span { position: relative; }
|
||||
tr.R37 td.R37C5I span img { position: absolute; width: 100px; top: -30px; left: -120px;}
|
||||
tr.R37 td.R37C5S span img { position: absolute; width: 140px; top: -60px; left: -60px; }
|
||||
tr.R5{ height: 17px; }
|
||||
tr.R5 td.R22C28{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: right; vertical-align: top; }
|
||||
tr.R5 td.R35C1{ font-family: Arial; font-size: 10pt; font-style: normal; font-weight: bold; }
|
||||
tr.R5 td.R35C17{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; }
|
||||
tr.R5 td.R35C20{ font-family: Arial; font-size: 10pt; font-style: normal; font-weight: bold; border-bottom: #ffffff 1px none; }
|
||||
tr.R5 td.R36C1{ }
|
||||
tr.R5 td.R36C20{ border-bottom: #ffffff 1px none; }
|
||||
tr.R5 td.R38C1{ text-align: center; border-top: #000000 1px solid;}
|
||||
tr.R5 td.R5C1{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align: medium; }
|
||||
tr.R5 td.R5C5{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; vertical-align: top; }
|
||||
tr.R6{ height: 9px; }
|
||||
tr.R6 td.R21C1{ border-top: #000000 2px solid; }
|
||||
tr.R6 td.R33C1{ border-bottom: #000000 2px solid; }
|
||||
table {table-layout: fixed; padding: 0px; padding-left: 2px; vertical-align:bottom; border-collapse:collapse;width: 100%; font-family: Arial; font-size: 8pt; font-style: normal; }
|
||||
td { padding: 0px; padding-left: 2px; overflow:hidden; }
|
||||
.cu_wspace { white-space:nowrap; }
|
||||
.cu_space1 { width:100%;height:1px;overflow:hidden; }
|
||||
.cu_space28 { width:100%;height:28px;overflow:hidden; }
|
||||
.cu_space9 { width:100%;height:9px;overflow:hidden; }
|
||||
.cu_space29 { width:100%;height:29px;overflow:hidden; }
|
||||
.cu_space34 { width:100%;height:34px;overflow:hidden; }
|
||||
.cu_space20 { width:100%;height:20px;overflow:hidden; }
|
||||
.cu_space19 { width:100%;height:19px;overflow:hidden; }
|
||||
.cu_space33 { width:100%;height:33px;overflow:hidden; }
|
||||
.cu_space25 { width:100%;height:25px;overflow:hidden; }
|
||||
tbody, table, tr, td, th{border: none;}
|
||||
</STYLE>
|
||||
|
||||
<!-- start header -->
|
||||
<TABLE CELLSPACING="0">
|
||||
<COL WIDTH="10%"/>
|
||||
<COL WIDTH="10%"/>
|
||||
<COL WIDTH="40%"/>
|
||||
<COL WIDTH="10%"/>
|
||||
<COL WIDTH="10%"/>
|
||||
<COL WIDTH="10%"/>
|
||||
<COL WIDTH="10%"/>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="7"><DIV class="cu_space28"><SPAN class="cu_wspace">Акт № <t t-esc="helper.numer(o.name)"/> от <span t-field="o.invoice_date"/></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R5C1" COLSPAN="2"><SPAN class="cu_wspace">Исполнитель:</SPAN></TD>
|
||||
<TD CLASS="R5C5" COLSPAN="5"><t t-esc="helper.full_representation(company.partner_id)"/></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R5C1" COLSPAN="2"><SPAN class="cu_wspace">Заказчик:</SPAN></TD>
|
||||
<TD CLASS="R5C5" COLSPAN="5"><t t-esc="helper.full_representation(o.partner_id.parent_id or o.partner_id)"/></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R11C1"><DIV class="cu_space29"><SPAN class="cu_wspace">№</SPAN></DIV></TD>
|
||||
<TD CLASS="R11C3" COLSPAN="2"><DIV class="cu_space29"><SPAN class="cu_wspace">Наименование<![CDATA[ ]]>работ,<![CDATA[ ]]>услуг</SPAN></DIV></TD>
|
||||
<TD CLASS="R11C3"><DIV class="cu_space29"><SPAN class="cu_wspace">Кол-во</SPAN></DIV></TD>
|
||||
<TD CLASS="R11C3"><DIV class="cu_space29"><SPAN class="cu_wspace">Ед.</SPAN></DIV></TD>
|
||||
<TD CLASS="R11C3"><DIV class="cu_space29"><SPAN class="cu_wspace">Цена</SPAN></DIV></TD>
|
||||
<TD CLASS="R11C29"><DIV class="cu_space29"><SPAN class="cu_wspace">Сумма</SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0" t-foreach="o.invoice_line_ids" t-as="line">
|
||||
<TD CLASS="R14C1"><SPAN class="cu_wspace"><t t-esc="line_index+1"/></SPAN></TD>
|
||||
<TD CLASS="R14C3" COLSPAN="2"><t t-esc="line.product_id.name or ''"/></TD>
|
||||
<TD CLASS="R14C20"><SPAN class="cu_wspace"><t t-esc="line.quantity or ''"/></SPAN></TD>
|
||||
<TD CLASS="R14C23"><SPAN class="cu_wspace"><t t-esc="line.product_uom_id.name or ''"/></SPAN></TD>
|
||||
<TD CLASS="R14C20"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(line.price_subtotal/line.quantity)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R14C29"><SPAN class="cu_wspace"><t t-esc="line.price_subtotal or ''"/></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R6">
|
||||
<TD COLSPAN="7" CLASS="R21C1"><DIV class="cu_space9"><![CDATA[ ]]></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R22C28" COLSPAN="6"><SPAN class="cu_wspace">Итого:</SPAN></TD>
|
||||
<TD CLASS="R22C28"><SPAN class="cu_wspace"><t t-esc="o.amount_untaxed or '0,00'"/></SPAN></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><DIV class="cu_space9"><![CDATA[ ]]></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R22C28" COLSPAN="6"><SPAN class="cu_wspace">Сумма НДС: <!-- TO DO: [НДС]: --></SPAN></TD>
|
||||
<TD CLASS="R22C28"><SPAN class="cu_wspace"><t t-esc="o.amount_tax or '0,00'"/></SPAN></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="7"><SPAN class="cu_wspace">Всего оказано услуг <t t-esc="o.invoice_line_ids and len(o.invoice_line_ids) or 0"/>, на сумму <t t-esc="o.amount_total or '0,00'"/> руб.</SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R5C5" COLSPAN="7"><t t-esc="helper.rubles(o.amount_total).capitalize()"/></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<!-- end total -->
|
||||
<!-- start footer -->
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R31C1" COLSPAN="7"><DIV class="cu_space33">Вышеперечисленные услуги выполнены полностью и в срок. Заказчик претензий по объему, качеству и срокам оказания услуг не имеет.</DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R32">
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R6">
|
||||
<TD CLASS="R33C1" COLSPAN="7"><DIV class="cu_space9"><![CDATA[ ]]></DIV></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R35C1" COLSPAN="2"><SPAN class="cu_wspace">ИСПОЛНИТЕЛЬ</SPAN></TD>
|
||||
<TD CLASS="R35C17"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R35C20" COLSPAN="4"><SPAN class="cu_wspace">ЗАКАЗЧИК</SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R36C1" COLSPAN="3">Директор <t t-esc="company.name or ''"/><!-- TO DO: ДолжностьИНазваниеОрганизации --></TD>
|
||||
<TD CLASS="R35C17" COLSPAN="3"><SPAN></SPAN></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD COLSPAN="7"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R37">
|
||||
<TD CLASS="R37C5S"><SPAN><t t-raw="company.print_stamp and (company.print_anywhere or context.get('mark_invoice_as_sent', False)) and helper.img(company.stamp) or ''"/></SPAN></TD>
|
||||
<TD CLASS="R37C5I"><SPAN><t t-raw="company.print_facsimile and (company.print_anywhere or context.get('mark_invoice_as_sent', False)) and helper.img(company.chief_id.facsimile) or ''"/></SPAN></TD>
|
||||
<TD><DIV class="cu_space25" COLSPAN="5"><SPAN></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R38C1" COLSPAN="2"><t t-esc="helper.initials(company.chief_id.name)"/></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R38C1" COLSPAN="2"><SPAN></SPAN></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</data>
|
||||
</openerp>
|
||||
14
l10n_ru_doc/report/report_bill.py
Normal file
14
l10n_ru_doc/report/report_bill.py
Normal file
@ -0,0 +1,14 @@
|
||||
from odoo import models
|
||||
from odoo.addons.l10n_ru_doc.report_helper import QWebHelper
|
||||
|
||||
class RuBillReport(models.AbstractModel):
|
||||
_name = 'report.l10n_ru_doc.report_bill'
|
||||
|
||||
def _get_report_values(self, docids, data=None):
|
||||
docs = self.env['account.move'].browse(docids)
|
||||
return {
|
||||
'helper': QWebHelper(),
|
||||
'doc_ids': docs.ids,
|
||||
'doc_model': 'account.move',
|
||||
'docs': docs
|
||||
}
|
||||
758
l10n_ru_doc/report/report_bill.xml
Normal file
758
l10n_ru_doc/report/report_bill.xml
Normal file
@ -0,0 +1,758 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<template id="report_bill">
|
||||
<t t-call="web.basic_layout">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<!-- Multicompany -->
|
||||
<t t-if="o and 'company_id' in o">
|
||||
<t t-set="company" t-value="o.company_id"></t>
|
||||
</t>
|
||||
<t t-if="not o or not 'company_id' in o">
|
||||
<t t-set="company" t-value="res_company"></t>
|
||||
</t>
|
||||
<t t-set="context" t-value="o._context"></t>
|
||||
|
||||
<div class="page">
|
||||
|
||||
<STYLE TYPE="text/css">
|
||||
body { background: #ffffff; margin: 0; font-family: Arial; font-size: 8pt; font-style: normal; }
|
||||
tr.R0{ height: 17px; }
|
||||
tr.R0 td.R0C0{ color: #413003; }
|
||||
tr.R0 td.R0C5{ font-family: Arial; font-size: 6pt; font-style: normal; vertical-align: top; }
|
||||
tr.R0 td.R0C8{ font-family: Arial; font-size: 7pt; font-style: normal; text-align: right; }
|
||||
tr.R0 td.R19C15{ font-family: Arial; font-size: 8pt; font-style: normal; text-align: right; vertical-align: medium; }
|
||||
tr.R0 td.R20C0{ vertical-align: top; }
|
||||
tr.R0 td.R20C15{ font-family: Arial; font-size: 8pt; font-style: italic; text-align: right; vertical-align: top; }
|
||||
tr.R0 td.R20C3{ text-align: center; vertical-align: top; }
|
||||
tr.R0 td.R20C7{ text-align: right; vertical-align: top; }
|
||||
tr.R0 td.R21C0{ vertical-align: top; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; border-right: #ffffff 1px none; }
|
||||
tr.R0 td.R21C1{ text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R21C2{ text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R23C0{ vertical-align: medium; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; border-right: #ffffff 1px none; }
|
||||
tr.R0 td.R23C1{ font-family: Arial; font-size: 7pt; font-style: normal; text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R23C3{ font-family: Arial; font-size: 7pt; font-style: normal; text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 2px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R25C1{ vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #ffffff 0px none; }
|
||||
tr.R0 td.R25C10{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R25C12{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #ffffff 0px none; }
|
||||
tr.R0 td.R25C13{ text-align: center; vertical-align: top; border-left: #000000 2px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #ffffff 0px none; }
|
||||
tr.R0 td.R25C14{ text-align: right; vertical-align: top; border-left: #000000 2px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R25C15{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 2px solid; }
|
||||
tr.R0 td.R25C2{ vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R25C3{ text-align: left; vertical-align: top; border-left: #000000 2px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R25C4{ text-align: center; vertical-align: top; border-left: #000000 2px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R25C5{ text-align: center; vertical-align: top; border-left: #000000 2px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #ffffff 0px none; }
|
||||
tr.R0 td.R25C6{ text-align: center; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R25C7{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R25C8{ vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R27C0{ border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; border-right: #ffffff 1px none; }
|
||||
tr.R0 td.R27C1{ border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; }
|
||||
tr.R0 td.R27C11{ text-align: center; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 2px solid; border-bottom: #000000 1px solid; border-right: #ffffff 0px none; }
|
||||
tr.R0 td.R27C12{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 2px solid; border-bottom: #000000 1px solid; border-right: #ffffff 1px none; }
|
||||
tr.R0 td.R27C13{ text-align: center; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #ffffff 0px none; }
|
||||
tr.R0 td.R27C14{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 2px solid; border-bottom: #000000 1px solid; border-right: #ffffff 0px none; }
|
||||
tr.R0 td.R27C15{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 2px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R27C2{ border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; border-right: #ffffff 1px none; }
|
||||
tr.R0 td.R27C3{ border-top: #000000 2px solid; }
|
||||
tr.R0 td.R27C7{ text-align: right; border-top: #000000 2px solid; }
|
||||
tr.R0 td.R27C8{ text-align: right; border-left: #000000 1px solid; border-top: #000000 2px solid; border-bottom: #000000 1px solid; border-right: #ffffff 0px none; }
|
||||
tr.R0 td.R29C11{ text-align: center; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R29C7, tr.R0 td.R29C7S{ text-align: right; }
|
||||
tr.R0 td.R29C8{ text-align: right; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R32C3{ border-top: #ffffff 1px none; border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R32C4{ border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R32C7{ border-top: #000000 1px solid; border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R32C8, tr.R0 td.R32C8I{ border-bottom: #000000 1px solid; }
|
||||
|
||||
tr.R0 td.R32C8I,tr.R0 td.R29C7S { overflow: visible; }
|
||||
tr.R0 td.R32C8I span,tr.R0 td.R29C7S span { position: relative; }
|
||||
tr.R0 td.R32C8I span img { position: absolute; width: 100px; top: -30px; }
|
||||
tr.R0 td.R29C7S span img { position: absolute; width: 140px; top: -110px; left: 50px; }
|
||||
|
||||
tr.R0 td.R34C8{ border-left: #ffffff 0px none; border-top: #ffffff 0px none; border-bottom: #000000 1px solid; border-right: #ffffff 0px none; }
|
||||
tr.R0 td.R36C16{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-top: #ffffff 1px none; }
|
||||
tr.R0 td.R36C9{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-top: #ffffff 1px none; border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R42C0{ font-family: Arial; font-size: 8pt; font-style: normal; font-weight: bold; vertical-align: bottom; }
|
||||
tr.R0 td.R42C1{ font-family: Arial; font-size: 8pt; font-style: normal; font-weight: bold; vertical-align: bottom; border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R42C2{ font-family: Arial; font-size: 8pt; font-style: normal; font-weight: bold; vertical-align: top; border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R42C7{ font-family: Arial; font-size: 8pt; font-style: normal; font-weight: bold; vertical-align: top; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R44C2{ border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R44C3{ border-bottom: #ffffff 1px none; }
|
||||
tr.R0 td.R44C6{ border-bottom: #000000 1px solid;}
|
||||
tr.R0 td.R44C6_1{border-right: #000000 1px solid; }
|
||||
tr.R0 td.R46C0{ font-family: Arial; font-size: 8pt; font-style: normal; font-weight: bold; }
|
||||
tr.R0 td.R47C17{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; overflow: hidden;border-top: #ffffff 1px none; }
|
||||
tr.R0 td.R47C2{ font-family: Arial; font-size: 8pt; font-style: normal; text-align: left; vertical-align: bottom; border-top: #ffffff 1px none; }
|
||||
tr.R0 td.R47C6{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-top: #ffffff 1px none;}
|
||||
tr.R0 td.R47C6_1{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top;border-right: #000000 1px solid; }
|
||||
tr.R0 td.R48C2{ font-family: Arial; font-size: 8pt; font-style: normal; text-align: left; vertical-align: bottom; border-bottom: #000000 1px solid; }
|
||||
tr.R0 td.R48C3{ font-family: Arial; font-size: 8pt; font-style: normal; text-align: left; vertical-align: bottom; border-bottom: #ffffff 1px none; }
|
||||
tr.R0 td.R51C10{ text-align: center; }
|
||||
tr.R0 td.R51C7{ border-right: #000000 1px solid; }
|
||||
tr.R1{ height: 21px; }
|
||||
tr.R1 td.R1C5{ font-family: Arial; font-size: 6pt; font-style: normal; vertical-align: top; }
|
||||
tr.R1 td.R1C9{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: right; }
|
||||
tr.R2{ height: 17px; }
|
||||
tr.R2 td.R2C0{ font-family: Arial; font-size: 8pt; font-style: normal; vertical-align: top; }
|
||||
tr.R2 td.R2C7{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: right; vertical-align: medium; }
|
||||
tr.R2 td.R2C9{ text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R22{ height: 56px; }
|
||||
tr.R22 td.R22C0{ vertical-align: top; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; border-right: #ffffff 1px none; }
|
||||
tr.R22 td.R22C2{ text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R22 td.R22C3{ text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R3{ height: 16px; }
|
||||
tr.R3 td.R14C2{ vertical-align: bottom; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #000000 1px solid; }
|
||||
tr.R3 td.R15C1{ font-family: Arial; font-size: 8pt; font-style: normal; }
|
||||
tr.R3 td.R15C2{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; }
|
||||
tr.R3 td.R15C8{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: right; vertical-align: bottom; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R16C3{ font-family: Arial; font-size: 8pt; font-style: normal; text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R17C2{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: right; vertical-align: medium; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R17C3{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: center; vertical-align: medium; border-left: #000000 2px solid; border-top: #000000 2px solid; border-bottom: #000000 2px solid; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R17C4{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 2px solid; border-bottom: #000000 2px solid; border-right: #000000 2px solid; }
|
||||
tr.R3 td.R18C3{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: center; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; border-right: #ffffff 1px none; }
|
||||
tr.R3 td.R18C7{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: right; vertical-align: bottom; }
|
||||
tr.R3 td.R18C9{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: center; vertical-align: bottom; overflow: hidden;border-left: #000000 2px solid; border-top: #000000 1px solid; border-bottom: #000000 2px solid; border-right: #000000 2px solid; }
|
||||
tr.R3 td.R31C5{ border-bottom: #ffffff 1px none; }
|
||||
tr.R3 td.R31C6{ border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #000000 1px solid; }
|
||||
tr.R3 td.R3C0{ font-family: Arial; font-size: 8pt; font-style: normal; vertical-align: top; }
|
||||
tr.R3 td.R3C1{ font-family: Arial; font-size: 8pt; font-style: normal; vertical-align: bottom; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #000000 1px solid; }
|
||||
tr.R3 td.R3C7{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: right; vertical-align: medium; }
|
||||
tr.R3 td.R3C9{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: center; vertical-align: medium; border-left: #000000 2px solid; border-top: #000000 2px solid; border-right: #000000 2px solid; }
|
||||
tr.R3 td.R4C0{ text-align: right; }
|
||||
tr.R3 td.R4C6{ border-bottom: #000000 1px solid; }
|
||||
tr.R3 td.R4C7{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: right; }
|
||||
tr.R3 td.R4C9{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: center; vertical-align: bottom; overflow: hidden;border-left: #000000 2px solid; border-top: #000000 1px solid; border-right: #000000 2px solid; }
|
||||
tr.R3 td.R6C1{ font-family: Arial; font-size: 8pt; font-style: normal; vertical-align: bottom; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #000000 1px solid; }
|
||||
tr.R3 td.R6C7{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: right; }
|
||||
tr.R3 td.R8C1{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: right; }
|
||||
tr.R3 td.R8C9{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: center; vertical-align: bottom; overflow: hidden;border-left: #000000 2px solid; border-right: #000000 2px solid; }
|
||||
tr.R38{ height: 7px; }
|
||||
tr.R38 td.R50C7{ border-right: #000000 1px solid; }
|
||||
tr.R39{ height: 13px; }
|
||||
tr.R39 td.R39C10{ text-align: right; }
|
||||
tr.R39 td.R39C14{ text-align: center; }
|
||||
tr.R39 td.R39C4{ border-bottom: #000000 1px solid; }
|
||||
tr.R39 td.R39C7{ border-right: #000000 1px solid; }
|
||||
tr.R39 td.R41C0{ font-family: Arial; font-size: 8pt; font-style: normal; font-weight: bold; }
|
||||
tr.R39 td.R41C11{ border-top: #ffffff 1px none; border-bottom: #000000 1px solid; }
|
||||
tr.R39 td.R41C2{ font-family: Arial; font-size: 8pt; font-style: normal; font-weight: bold; }
|
||||
tr.R40{ height: 14px; }
|
||||
tr.R40 td.R40C4{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-top: #ffffff 1px none; }
|
||||
tr.R40 td.R40C7{ border-right: #000000 1px solid; }
|
||||
tr.R45{ height: 12px; }
|
||||
tr.R45 td.R45C10{ border-left: #ffffff 0px none; border-top: #ffffff 1px none; }
|
||||
tr.R45 td.R45C11{ border-top: #ffffff 1px none; }
|
||||
tr.R45 td.R45C2{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-top: #ffffff 1px none; }
|
||||
tr.R45 td.R45C6{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-top: #ffffff 1px none;}
|
||||
tr.R45 td.R45C6_1{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-right: #000000 1px solid; }
|
||||
tr.R5{ height: 15px; }
|
||||
tr.R5 td.R11C3{ font-family: Arial; font-size: 8pt; font-style: normal; vertical-align: bottom; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; }
|
||||
tr.R5 td.R13C8{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: right; vertical-align: bottom; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R5 td.R33C17{ border-left: #000000 2px solid; border-top: #000000 2px solid; border-bottom: #000000 2px solid; border-right: #000000 2px solid; }
|
||||
tr.R5 td.R35C10{ border-top: #ffffff 1px none; }
|
||||
tr.R5 td.R35C9{ font-family: Arial; font-size: 6pt; font-style: normal; border-top: #ffffff 1px none; }
|
||||
tr.R5 td.R43C1{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; }
|
||||
tr.R5 td.R43C11{ border-bottom: #000000 1px solid; }
|
||||
tr.R5 td.R43C7{ border-right: #000000 1px solid; }
|
||||
tr.R5 td.R5C0{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-top: #ffffff 1px none; }
|
||||
tr.R5 td.R5C2{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; }
|
||||
tr.R5 td.R5C7{ font-family: Arial; font-size: 8pt; font-style: normal; }
|
||||
tr.R5 td.R5C9{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align: bottom; overflow: hidden;border-left: #000000 2px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 2px solid; }
|
||||
tr.R5 td.R9C0{ text-align: right; }
|
||||
tr.R5 td.R9C1{ font-family: Arial; font-size: 8pt; font-style: normal; text-align: right; }
|
||||
tr.R5 td.R9C3{ font-family: Arial; font-size: 8pt; font-style: normal; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; }
|
||||
tr.R5 td.R9C7{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: right; }
|
||||
tr.R5 td.R9C9{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: center; vertical-align: bottom; overflow: hidden;border-left: #000000 2px solid; border-top: #000000 1px solid; border-right: #000000 2px solid; }
|
||||
tr.R7{ height: 19px; }
|
||||
tr.R7 td.R7C0{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-left: #ffffff 0px none; border-top: #ffffff 1px none; }
|
||||
tr.R7 td.R7C2{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; border-left: #ffffff 1px none; border-top: #ffffff 1px none; border-bottom: #ffffff 1px none; }
|
||||
tr.R7 td.R7C7{ font-family: Arial; font-size: 9pt; font-style: normal; text-align: right; }
|
||||
tr.R7 td.R7C9{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold; text-align: center; vertical-align: bottom; overflow: hidden;border-left: #000000 2px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 2px solid; }
|
||||
table {table-layout: fixed; padding: 0px; padding-left: 2px; vertical-align:bottom; border-collapse:collapse;width: 100%; font-family: Arial; font-size: 8pt; font-style: normal; }
|
||||
td { padding: 0px; padding-left: 2px; overflow:hidden; }
|
||||
|
||||
.cu_wspace { white-space:nowrap; }
|
||||
.cu_space21 { width:100%;height:30px;overflow:hidden; }
|
||||
.cu_space31 { width:100%;height:31px;overflow:hidden; }
|
||||
.cu_space11 { width:100%;height:15px;overflow:hidden; }
|
||||
.cu_space16 { width:100%;height:16px;overflow:hidden; }
|
||||
.cu_space19 { width:100%;height:19px;overflow:hidden; }
|
||||
.cu_space26 { width:100%;height:26px;overflow:hidden; }
|
||||
.cu_left { border-left: #ffffff 0px none; }
|
||||
.cu_space15 { width:100%;height:15px;overflow:hidden; }
|
||||
.cu_space70 { width:100%;height:70px;overflow:hidden; }
|
||||
.cu_space40 { width:100%;height:40px;overflow:hidden; }
|
||||
.cu_space7 { width:100%;height:7px;overflow:hidden; }
|
||||
.cu_space13 { width:100%;height:13px;overflow:hidden; }
|
||||
.cu_right { border-right: #000000 1px solid; }
|
||||
.cu_space14 { width:100%;height:14px;overflow:hidden; }
|
||||
.cu_space12 { width:100%;height:12px;overflow:hidden; }
|
||||
tbody, table, tr, td, th{border: none;}
|
||||
</STYLE>
|
||||
<!-- start header -->
|
||||
<TABLE CELLSPACING="0">
|
||||
<COL WIDTH="3%"/>
|
||||
<COL WIDTH="15%"/>
|
||||
<COL WIDTH="5%"/>
|
||||
<COL WIDTH="5%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<TR CLASS="R1">
|
||||
<TD CLASS="R1C9" COLSPAN="15"><DIV class="cu_space21"><SPAN class="cu_wspace">Унифицированная<![CDATA[ ]]>форма<![CDATA[ ]]>№<![CDATA[ ]]>ТОРГ-12<BR/>Утверждена<![CDATA[ ]]>постановлением<![CDATA[ ]]>Госкомстата<![CDATA[ ]]>России<![CDATA[ ]]>от<![CDATA[ ]]>25.12.98<![CDATA[ ]]>№<![CDATA[ ]]>132</SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R2">
|
||||
<TD CLASS="R2C0" COLSPAN="14"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R2C9"><SPAN class="cu_wspace">Коды</SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="12" ROWSPAN="2"><DIV class="cu_space31"><t t-esc="helper.full_representation(company.partner_id)"/></DIV></TD>
|
||||
<TD CLASS="R3C7" COLSPAN="2"><SPAN class="cu_wspace">Форма<![CDATA[ ]]>по<![CDATA[ ]]>ОКУД<![CDATA[ ]]></SPAN></TD>
|
||||
<TD CLASS="R3C9"><SPAN class="cu_wspace">0330212</SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R4C7" COLSPAN="2"><SPAN class="cu_wspace">по<![CDATA[ ]]>ОКПО</SPAN></TD>
|
||||
<TD CLASS="R4C9"><SPAN class="cu_wspace"><t t-esc="company.okpo or ''"/></SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R5C2" COLSPAN="12"><DIV class="cu_space11"><SPAN class="cu_wspace">организация-грузоотправитель,<![CDATA[ ]]>адрес,<![CDATA[ ]]>телефон,<![CDATA[ ]]>факс,<![CDATA[ ]]>банковские<![CDATA[ ]]>реквизиты</SPAN></DIV></TD>
|
||||
<TD CLASS="R5C7" COLSPAN="2"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R5C9" ROWSPAN="2"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R6C1" COLSPAN="12"><DIV class="cu_space16"><SPAN class="cu_wspace"><!-- TO DO: ПредставлениеПодразделения --></SPAN></DIV></TD>
|
||||
<TD CLASS="R6C7" COLSPAN="2"><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R6C7"><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R7">
|
||||
<TD CLASS="R7C2" COLSPAN="12"><DIV class="cu_space19"><SPAN class="cu_wspace">структурное<![CDATA[ ]]>подразделение</SPAN></DIV></TD>
|
||||
<TD CLASS="R7C7" COLSPAN="2"><DIV class="cu_space19"><SPAN class="cu_wspace">Вид<![CDATA[ ]]>деятельности<![CDATA[ ]]>по<![CDATA[ ]]>ОКДП</SPAN></DIV></TD>
|
||||
<TD CLASS="R7C9"><DIV class="cu_space19"><SPAN class="cu_wspace"><!-- TO DO: ВидДеятельностиПоОКДП --></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R8C1" COLSPAN="2">Грузополучатель</TD>
|
||||
<TD CLASS="R3C1" COLSPAN="10"><t t-esc="helper.full_representation(o.partner_id)"/></TD>
|
||||
<TD CLASS="R4C7" COLSPAN="2"><SPAN class="cu_wspace">по<![CDATA[ ]]>ОКПО</SPAN></TD>
|
||||
<TD CLASS="R8C9"><SPAN class="cu_wspace"><t t-esc="o.partner_id.okpo or ''"/></SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R9C0" COLSPAN="2"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R5C2" COLSPAN="10"><DIV class="cu_space11"><SPAN class="cu_wspace">организация,<![CDATA[ ]]>адрес,<![CDATA[ ]]>телефон,<![CDATA[ ]]>факс,<![CDATA[ ]]>банковские<![CDATA[ ]]>реквизиты</SPAN></DIV></TD>
|
||||
<TD CLASS="R9C7" COLSPAN="2"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R9C9" ROWSPAN="2"><DIV class="cu_space26"><SPAN class="cu_wspace"><t t-esc="company.okpo or ''"/></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R4C7" COLSPAN="2"><SPAN class="cu_wspace">Поставщик</SPAN></TD>
|
||||
<TD CLASS="R3C1" COLSPAN="10"><t t-esc="helper.full_representation(company.partner_id)"/></TD>
|
||||
<TD CLASS="R4C7" COLSPAN="2"><SPAN class="cu_wspace">по<![CDATA[ ]]>ОКПО</SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R9C0" COLSPAN="2"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R5C2" COLSPAN="10"><DIV class="cu_space11"><SPAN class="cu_wspace">организация,<![CDATA[ ]]>адрес,<![CDATA[ ]]>телефон,<![CDATA[ ]]>факс,<![CDATA[ ]]>банковские<![CDATA[ ]]>реквизиты</SPAN></DIV></TD>
|
||||
<TD COLSPAN="2"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R9C9" ROWSPAN="2"><DIV class="cu_space26"><SPAN class="cu_wspace"><t t-esc="o.partner_id.okpo or ''"/></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R4C7" COLSPAN="2"><SPAN class="cu_wspace">Плательщик</SPAN></TD>
|
||||
<TD CLASS="R3C1" COLSPAN="10"><t t-esc="helper.full_representation(o.partner_id.parent_id or o.partner_id)"/></TD>
|
||||
<TD CLASS="R4C7" COLSPAN="2"><SPAN class="cu_wspace">по<![CDATA[ ]]>ОКПО</SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD CLASS="R9C0" COLSPAN="2"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R5C2" COLSPAN="10"><DIV class="cu_space11"><SPAN class="cu_wspace">организация,<![CDATA[ ]]>адрес,<![CDATA[ ]]>телефон,<![CDATA[ ]]>факс,<![CDATA[ ]]>банковские<![CDATA[ ]]>реквизиты</SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"></DIV></TD>
|
||||
<TD CLASS="R13C8" ROWSPAN="2"><DIV class="cu_space26"><SPAN class="cu_wspace">номер</SPAN></DIV></TD>
|
||||
<TD CLASS="R9C9" ROWSPAN="2"><DIV class="cu_space26"><SPAN class="cu_wspace"><!-- TO DO: ОснованиеНомер --></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R4C7" COLSPAN="2"><DIV class="cu_space16"><SPAN class="cu_wspace">Основание</SPAN></DIV></TD>
|
||||
<TD CLASS="R14C2" COLSPAN="10"><DIV class="cu_space16"><SPAN class="cu_wspace"><t t-esc="o.name or ''"/></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD COLSPAN="2"><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R15C2" COLSPAN="10"><DIV class="cu_space16"><SPAN class="cu_wspace">договор,<![CDATA[ ]]>заказ-наряд</SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R15C8"><DIV class="cu_space16"><SPAN class="cu_wspace">дата</SPAN></DIV></TD>
|
||||
<TD CLASS="R4C9"><DIV class="cu_space16"><SPAN class="cu_wspace"><!-- TO DO: ОснованиеДата --></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD COLSPAN="5"><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R16C3" COLSPAN="2"><DIV class="cu_space16"><SPAN class="cu_wspace">Номер<![CDATA[ ]]>документа</SPAN></DIV></TD>
|
||||
<TD CLASS="R16C3" COLSPAN="2"><DIV class="cu_space16"><SPAN class="cu_wspace">Дата<![CDATA[ ]]>составления</SPAN></DIV></TD>
|
||||
<TD CLASS="R6C7" COLSPAN="3"><DIV class="cu_space16"><SPAN class="cu_wspace">Транспортная<![CDATA[ ]]>накладная</SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R15C8"><DIV class="cu_space16"><SPAN class="cu_wspace">номер</SPAN></DIV></TD>
|
||||
<TD CLASS="R4C9"><DIV class="cu_space16"><SPAN class="cu_wspace"><!-- TO DO: ТранспортнаяНакладнаяНомер --></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R17C2" COLSPAN="5"><DIV class="cu_space16"><SPAN class="cu_wspace">ТОВАРНАЯ<![CDATA[ ]]>НАКЛАДНАЯ<![CDATA[ ]]><![CDATA[ ]]></SPAN></DIV></TD>
|
||||
<TD CLASS="R17C3" COLSPAN="2"><DIV class="cu_space16"><SPAN class="cu_wspace"><t t-esc="helper.numer(o.name)"/></SPAN></DIV></TD>
|
||||
<TD CLASS="R17C4" COLSPAN="2"><DIV class="cu_space16"><span class="cu_wspace" t-field="o.invoice_date"/></DIV></TD>
|
||||
<TD COLSPAN="3"><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R15C8"><DIV class="cu_space16"><SPAN class="cu_wspace">дата</SPAN></DIV></TD>
|
||||
<TD CLASS="R4C9"><DIV class="cu_space16"><SPAN class="cu_wspace"><!-- TO DO: ТранспортнаяНакладнаяДата --></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R4C7" COLSPAN="10"><DIV class="cu_space16"><SPAN class="cu_wspace"></SPAN></DIV></TD>
|
||||
<TD CLASS="R18C7" COLSPAN="4"><DIV class="cu_space16"><SPAN class="cu_wspace">Вид<![CDATA[ ]]>операции</SPAN></DIV></TD>
|
||||
<TD CLASS="R18C9"><DIV class="cu_space16"><SPAN class="cu_wspace"><!-- TO DO: ВидОперации --></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R20C15" COLSPAN="15"><SPAN class="cu_wspace">Страница 1<!-- TO DO: НомерСтраницы --></SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R21C1" ROWSPAN="2"><DIV class="cu_space70">Но-<BR/>мер<BR/>по по-<BR/>рядку </DIV></TD>
|
||||
<TD CLASS="R21C2" COLSPAN="2"><DIV class="cu_space15"><SPAN class="cu_wspace">Товар</SPAN></DIV></TD>
|
||||
<TD CLASS="R21C2" COLSPAN="2"><DIV class="cu_space15"><SPAN class="cu_wspace">Единица<![CDATA[ ]]>измерения</SPAN></DIV></TD>
|
||||
<TD CLASS="R21C1" ROWSPAN="2"><DIV class="cu_space70">Вид упаков<BR/>ки</DIV></TD>
|
||||
<TD CLASS="R21C2" COLSPAN="2"><DIV class="cu_space15"><SPAN class="cu_wspace">Количество</SPAN></DIV></TD>
|
||||
<TD CLASS="R21C1" ROWSPAN="2"><DIV class="cu_space70">Масса брутто</DIV></TD>
|
||||
<TD CLASS="R21C2" ROWSPAN="2"><DIV class="cu_space70"><SPAN class="cu_wspace">Коли-<BR/>чество<![CDATA[ ]]><BR/>(масса<![CDATA[ ]]><BR/>нетто)</SPAN></DIV></TD>
|
||||
<TD CLASS="R21C2" ROWSPAN="2"><DIV class="cu_space70"><SPAN class="cu_wspace">Цена,<BR/>руб.<![CDATA[ ]]>коп.</SPAN></DIV></TD>
|
||||
<TD CLASS="R21C2" ROWSPAN="2"><DIV class="cu_space70"><SPAN class="cu_wspace">Сумма<![CDATA[ ]]>без<BR/>учета<![CDATA[ ]]>НДС,<BR/>руб.<![CDATA[ ]]>коп.</SPAN></DIV></TD>
|
||||
<TD CLASS="R21C2" COLSPAN="2"><DIV class="cu_space15"><SPAN class="cu_wspace">НДС</SPAN></DIV></TD>
|
||||
<TD CLASS="R21C2" ROWSPAN="2"><DIV class="cu_space70"><SPAN class="cu_wspace">Сумма<![CDATA[ ]]>с<BR/>учетом<![CDATA[ ]]><BR/>НДС,<![CDATA[ ]]><BR/>руб.<![CDATA[ ]]>коп.</SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R22">
|
||||
<TD CLASS="R22C2">наименование, характеристика, сорт, артикул товара</TD>
|
||||
<TD CLASS="R22C3"><SPAN class="cu_wspace">код</SPAN></TD>
|
||||
<TD CLASS="R22C2">наиме- нование</TD>
|
||||
<TD CLASS="R22C2">код по ОКЕИ</TD>
|
||||
<TD CLASS="R22C2">в одном месте</TD>
|
||||
<TD CLASS="R22C2">мест,<BR/>штук</TD>
|
||||
<TD CLASS="R22C2">ставка, %</TD>
|
||||
<TD CLASS="R22C2">сумма, <BR/>руб. коп.</TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R23C1"><SPAN class="cu_wspace">1</SPAN></TD>
|
||||
<TD CLASS="R23C1"><SPAN class="cu_wspace">2</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">3</SPAN></TD>
|
||||
<TD CLASS="R23C1"><SPAN class="cu_wspace">4</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">5</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">6</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">7</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">8</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">9</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">10</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">11</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">12</SPAN></TD>
|
||||
<TD CLASS="R23C1"><SPAN class="cu_wspace">13</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">14</SPAN></TD>
|
||||
<TD CLASS="R23C3"><SPAN class="cu_wspace">15</SPAN></TD>
|
||||
</TR>
|
||||
<t t-set="page_quantity" t-value="sum([line.quantity for line in o.invoice_line_ids])" />
|
||||
<t t-set="total_quantity" t-value="sum([line.quantity for line in o.invoice_line_ids])"/>
|
||||
<t t-set="page_price_subtotal" t-value="sum([line.price_subtotal for line in o.invoice_line_ids])"/>
|
||||
<t t-set="total_price_subtotal" t-value="sum([line.price_subtotal for line in o.invoice_line_ids])"/>
|
||||
<t t-set="page_tax" t-value="sum([line.price_unit*line.quantity - line.price_subtotal for line in o.invoice_line_ids])"/>
|
||||
<t t-set="total_tax" t-value="sum([line.price_unit*line.quantity - line.price_subtotal for line in o.invoice_line_ids])"/>
|
||||
<t t-set="page_price_tax_subtotal" t-value="sum([line.price_unit*line.quantity for line in o.invoice_line_ids])"/>
|
||||
<t t-set="total_price_tax_subtotal" t-value="sum([line.price_unit*line.quantity for line in o.invoice_line_ids])"/>
|
||||
<tr CLASS="R0" t-foreach="o.invoice_line_ids" t-as="line">
|
||||
<TD CLASS="R25C1"><SPAN class="cu_wspace"><t t-esc="line_index+1"/></SPAN></TD>
|
||||
<TD CLASS="R25C2"><t t-esc="line.name or ''"/></TD>
|
||||
<TD CLASS="R25C3"><!-- TO DO: ТоварКод --></TD>
|
||||
<TD CLASS="R25C4"><SPAN class="cu_wspace"><t t-esc="line.product_uom_id.name or ''"/></SPAN></TD>
|
||||
<TD CLASS="R25C5">796<!-- TO DO: БазоваяЕдиницаКодПоОКЕИ --></TD>
|
||||
<TD CLASS="R25C6"><SPAN class="cu_wspace"><!-- TO DO: ВидУпаковки --></SPAN></TD>
|
||||
<TD CLASS="R25C7"><SPAN class="cu_wspace"><!-- TO DO: КоличествоВОдномМесте --></SPAN></TD>
|
||||
<TD CLASS="R25C8"><SPAN class="cu_wspace"><!-- TO DO: КоличествоМест --></SPAN></TD>
|
||||
<TD CLASS="R25C7"><SPAN class="cu_wspace"><!-- TO DO: МассаБрутто --></SPAN></TD>
|
||||
<TD CLASS="R25C10"><SPAN class="cu_wspace"><t t-esc="line.quantity or ''"/></SPAN></TD>
|
||||
<TD CLASS="R25C10"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(line.price_subtotal/line.quantity)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R25C12"><SPAN class="cu_wspace"><t t-esc="line.price_subtotal or ''"/></SPAN></TD>
|
||||
<TD CLASS="R25C13"><SPAN class="cu_wspace">18% <!-- TO DO: СтавкаНДС --></SPAN></TD>
|
||||
<TD CLASS="R25C14"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(line.price_unit*line.quantity - line.price_subtotal)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R25C15"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(line.price_unit*line.quantity)).replace('.',',') or ''"/></SPAN></TD>
|
||||
</tr>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R27C1"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R27C2"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R27C3"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R27C0"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R27C7" COLSPAN="3"><SPAN class="cu_wspace">Итого<![CDATA[ ]]></SPAN></TD>
|
||||
<TD CLASS="R27C8"><SPAN class="cu_wspace"><!-- TO DO: ИтогоКоличествоМест --></SPAN></TD>
|
||||
<TD CLASS="R27C8"><SPAN class="cu_wspace"><!-- TO DO: ИтогоМассаБрутто --></SPAN></TD>
|
||||
<TD CLASS="R27C8"><SPAN class="cu_wspace"><t t-esc="(('%.3f')%(page_quantity)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R27C11"><SPAN class="cu_wspace">Х</SPAN></TD>
|
||||
<TD CLASS="R27C12"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(page_price_subtotal)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R27C13"><SPAN class="cu_wspace">Х</SPAN></TD>
|
||||
<TD CLASS="R27C14"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(page_tax)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R27C15"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(page_price_tax_subtotal)).replace('.',',') or ''"/></SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R29C7" COLSPAN="7"><SPAN class="cu_wspace">Всего<![CDATA[ ]]>по<![CDATA[ ]]>накладной<![CDATA[ ]]></SPAN></TD>
|
||||
<TD CLASS="R29C8"><SPAN class="cu_wspace"><!-- TO DO: ИтогМест --></SPAN></TD>
|
||||
<TD CLASS="R29C8"><SPAN class="cu_wspace"><!-- TO DO: ИтогМассаБрутто --></SPAN></TD>
|
||||
<TD CLASS="R29C8"><SPAN class="cu_wspace"><t t-esc="(('%.3f')%(total_quantity)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R29C11"><SPAN class="cu_wspace">Х</SPAN></TD>
|
||||
<TD CLASS="R25C10"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(total_price_subtotal)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R29C11"><SPAN class="cu_wspace">Х</SPAN></TD>
|
||||
<TD CLASS="R25C10"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(total_tax)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R25C10"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(total_price_tax_subtotal)).replace('.',',') or ''"/></SPAN></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<TABLE CELLSPACING="0">
|
||||
<COL WIDTH="17"/>
|
||||
<COL WIDTH="143"/>
|
||||
<COL WIDTH="130"/>
|
||||
<COL WIDTH="30"/>
|
||||
<COL WIDTH="122"/>
|
||||
<COL WIDTH="31"/>
|
||||
<COL WIDTH="216"/>
|
||||
<COL WIDTH="33"/>
|
||||
<COL WIDTH="34"/>
|
||||
<COL WIDTH="74"/>
|
||||
<COL WIDTH="60"/>
|
||||
<COL WIDTH="100"/>
|
||||
<COL WIDTH="30"/>
|
||||
<COL WIDTH="46"/>
|
||||
<COL WIDTH="40"/>
|
||||
<COL WIDTH="51"/>
|
||||
<COL WIDTH="30"/>
|
||||
<COL WIDTH="182"/>
|
||||
<TR CLASS="R3">
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="3"><DIV class="cu_space16"><SPAN class="cu_space11">Товарная<![CDATA[ ]]>накладная<![CDATA[ ]]>имеет<![CDATA[ ]]>приложение<![CDATA[ ]]>на</SPAN></DIV></TD>
|
||||
<TD CLASS="R31C5"><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R31C6"><DIV class="cu_space16"><SPAN class="cu_space11"><!-- TO DO: КоличествоЛистовВПриложении --></SPAN></DIV></TD>
|
||||
<TD CLASS="R4C6"><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R4C6"><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R4C6"><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="3"><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space16"></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD><DIV class="cu_space15"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space15"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space15"><SPAN class="cu_space11">и<![CDATA[ ]]>содержит</SPAN></DIV></TD>
|
||||
<TD CLASS="R32C3" COLSPAN="4"><DIV class="cu_space15"><SPAN class="cu_space11"><t t-esc="helper.in_words(o.invoice_line_ids and len(o.invoice_line_ids) or 0).capitalize()"/></SPAN></DIV></TD>
|
||||
<TD CLASS="R32C7"><DIV class="cu_space15"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R32C8"><DIV class="cu_space15"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R32C8"><DIV class="cu_space15"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R32C8"><DIV class="cu_space15"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="8"><DIV class="cu_space15"><SPAN class="cu_space11">порядковых<![CDATA[ ]]>номеров<![CDATA[ ]]>записей</SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R5C0" COLSPAN="8"><DIV class="cu_space11"><SPAN class="cu_wspace">прописью</SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="3"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R33C17" ROWSPAN="3"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD COLSPAN="2"><SPAN class="cu_space11"><![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]>Масса<![CDATA[ ]]>груза<![CDATA[ ]]>(нетто)</SPAN></TD>
|
||||
<TD CLASS="R34C8"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R34C8"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R34C8"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R34C8"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R34C8"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R34C8" COLSPAN="3"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R5C0" COLSPAN="8"><DIV class="cu_space11"><SPAN class="cu_space11">прописью</SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R33C17" ROWSPAN="2"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN class="cu_space11">Всего<![CDATA[ ]]>мест</SPAN></TD>
|
||||
<TD CLASS="R32C4"><SPAN class="cu_space"/></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD COLSPAN="2"><SPAN class="cu_space11"><![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]>Масса<![CDATA[ ]]>груза<![CDATA[ ]]>(брутто)</SPAN></TD>
|
||||
<TD CLASS="R32C3" COLSPAN="8"><SPAN class="cu_space"><!-- TO DO: МассаГрузаПрописью --></SPAN></TD>
|
||||
<TD></TD>
|
||||
<TD></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R5C0" COLSPAN="2"><DIV class="cu_space11"><SPAN class="cu_space11">прописью</SPAN></DIV></TD>
|
||||
<TD CLASS="R5C0"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R5C0" COLSPAN="8"><DIV class="cu_space11"><SPAN class="cu_space11">прописью</SPAN></DIV></TD>
|
||||
<TD CLASS="R5C0"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R38">
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="3"><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><![CDATA[ ]]></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R39">
|
||||
<TD><DIV class="cu_space13"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="3"><DIV class="cu_space13"><SPAN class="cu_space11">Приложение<![CDATA[ ]]>(паспорта,<![CDATA[ ]]>сертификаты<![CDATA[ ]]>и<![CDATA[ ]]>т.п.)<![CDATA[ ]]>на<![CDATA[ ]]></SPAN></DIV></TD>
|
||||
<TD CLASS="R39C4"><DIV class="cu_space13"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space13"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="2" class="cu_right"><DIV class="cu_space13"><SPAN class="cu_space11">листах</SPAN></DIV></TD>
|
||||
<TD CLASS="R39C10" COLSPAN="3"><DIV class="cu_space13"><SPAN class="cu_space11">По<![CDATA[ ]]>доверенности<![CDATA[ ]]>№</SPAN></DIV></TD>
|
||||
<TD CLASS="R39C4" COLSPAN="3"><DIV class="cu_space13"><SPAN class="cu_space11"><!-- TO DO: ДоверенностьНомер --></SPAN></DIV></TD>
|
||||
<TD CLASS="R39C14"><DIV class="cu_space13"><SPAN class="cu_space11">от</SPAN></DIV></TD>
|
||||
<TD CLASS="R39C4" COLSPAN="3"><DIV class="cu_space13"><SPAN class="cu_space11"><!-- TO DO: ДоверенностьДата --></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R40">
|
||||
<TD><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R40C4" COLSPAN="2"><DIV class="cu_space14"><SPAN class="cu_space11">прописью</SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R40C7"><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="3"><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="3"><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space14"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space14"></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R39">
|
||||
<TD CLASS="R41C0"><DIV class="cu_space13"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R41C0" COLSPAN="2"><DIV class="cu_space13"><SPAN class="cu_space11">Всего<![CDATA[ ]]>отпущено<![CDATA[ ]]><![CDATA[ ]]>на<![CDATA[ ]]>сумму</SPAN></DIV></TD>
|
||||
<TD COLSPAN="5" class="cu_right"><DIV class="cu_space13"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space13"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="2"><DIV class="cu_space13"><SPAN class="cu_space11">выданной</SPAN></DIV></TD>
|
||||
<TD CLASS="R41C11" COLSPAN="7"><DIV class="cu_space13"><SPAN class="cu_space11"><!-- TO DO: ДоверенностьВыдана --></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R42C0"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R42C1" COLSPAN="6"><t t-esc="helper.rubles(o.amount_total).capitalize()"/></TD>
|
||||
<TD class="cu_right"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R36C16" COLSPAN="7"><SPAN class="cu_wspace">кем,<![CDATA[ ]]>кому<![CDATA[ ]]>(организация,<![CDATA[ ]]>должность,<![CDATA[ ]]>фамилия,<![CDATA[ ]]>и.<![CDATA[ ]]>о.)</SPAN></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R5">
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R43C1" COLSPAN="6"><DIV class="cu_space11"><SPAN class="cu_wspace">прописью</SPAN></DIV></TD>
|
||||
<TD CLASS="R43C7"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R43C11"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R43C11"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R43C11" COLSPAN="3"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R43C11"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R43C11"><DIV class="cu_space11"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space11"></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN class="cu_wspace">Отпуск<![CDATA[ ]]>груза<![CDATA[ ]]>разрешил</SPAN></TD>
|
||||
<TD CLASS="R44C2">Директор<!-- TO DO: ДолжностьРуководителя --></TD>
|
||||
<TD CLASS="R44C3"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R32C8I"><SPAN><t t-raw="company.print_facsimile and (company.print_anywhere or context.get('mark_invoice_as_sent', False)) and helper.img(company.chief_id.facsimile) or ''"/></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R44C6"><t t-esc="helper.initials(company.chief_id.name)"/></TD>
|
||||
<TD CLASS="R44C6_1"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R32C8" COLSPAN="7"><SPAN class="cu_wspace"><!-- TO DO: ДоверенностьЧерезКого --></SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R45">
|
||||
<TD><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R45C2"><DIV class="cu_space12"><SPAN class="cu_wspace">должность</SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R45C2"><DIV class="cu_space12"><SPAN class="cu_wspace">подпись</SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R45C6"><DIV class="cu_space12"><SPAN class="cu_wspace">расшифровка<![CDATA[ ]]>подписи</SPAN></DIV></TD>
|
||||
<TD CLASS="R45C6_1"><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R45C10"><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R45C11"><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R45C11"><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R45C11" COLSPAN="3"><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R45C11"><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R45C11"><DIV class="cu_space12"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space12"></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R46C0"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R46C0" COLSPAN="3"><SPAN class="cu_wspace">Главный<![CDATA[ ]]>(старший)<![CDATA[ ]]>бухгалтер</SPAN></TD>
|
||||
<TD CLASS="R32C8I"><SPAN><t t-raw="company.print_facsimile and (company.print_anywhere or context.get('mark_invoice_as_sent', False)) and helper.img(company.accountant_id.facsimile) or ''"/></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R44C6"><t t-esc="helper.initials(company.accountant_id.name)"/></TD>
|
||||
<TD CLASS="R44C6_1"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD COLSPAN="2"><SPAN class="cu_wspace">Груз<![CDATA[ ]]>принял</SPAN></TD>
|
||||
<TD CLASS="R32C8"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R32C8" COLSPAN="3"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R32C8"><SPAN></SPAN></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD></TD>
|
||||
<TD COLSPAN="3"></TD>
|
||||
<TD CLASS="R36C16">подпись</TD>
|
||||
<TD></TD>
|
||||
<TD CLASS="R47C6"><SPAN class="cu_wspace">расшифровка<![CDATA[ ]]>подписи</SPAN></TD>
|
||||
<TD CLASS="R47C6_1"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R36C16"><SPAN class="cu_wspace">должность</SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R36C16" COLSPAN="3"><SPAN class="cu_wspace">подпись</SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R47C17"><SPAN class="cu_wspace">расшифровка<![CDATA[ ]]>подписи</SPAN></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN class="cu_wspace">Отпуск<![CDATA[ ]]>груза<![CDATA[ ]]>произвел</SPAN></TD>
|
||||
<TD CLASS="R48C2"><!-- TO DO: ДолжностьКладовщика --></TD>
|
||||
<TD CLASS="R48C3"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R32C8"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R44C6"><!-- TO DO: ФИОКладовщика --></TD>
|
||||
<TD CLASS="R44C6_1"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD COLSPAN="2"><SPAN class="cu_wspace">Груз<![CDATA[ ]]>получил<![CDATA[ ]]></SPAN></TD>
|
||||
<TD CLASS="R32C8"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R32C8" COLSPAN="3"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R32C8"><SPAN></SPAN></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R36C16"><SPAN class="cu_wspace">должность</SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R36C16"><SPAN class="cu_wspace">подпись</SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R47C6"><SPAN class="cu_wspace">расшифровка<![CDATA[ ]]>подписи</SPAN></TD>
|
||||
<TD CLASS="R47C6_1"><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R20C0" COLSPAN="2"><SPAN class="cu_wspace">грузополучатель</SPAN></TD>
|
||||
<TD CLASS="R36C16"><SPAN class="cu_wspace">должность</SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R36C16" COLSPAN="3"><SPAN class="cu_wspace">подпись</SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R47C17"><SPAN class="cu_wspace">расшифровка<![CDATA[ ]]>подписи</SPAN></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R38">
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD CLASS="R50C7"><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD COLSPAN="3"><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><SPAN></SPAN></DIV></TD>
|
||||
<TD><DIV class="cu_space7"><![CDATA[ ]]></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R29C7S"><SPAN><t t-raw="company.print_stamp and (company.print_anywhere or context.get('mark_invoice_as_sent', False)) and helper.img(company.stamp) or ''"/></SPAN></TD>
|
||||
<TD CLASS="R29C7"><DIV class="cu_space15"><SPAN class="cu_wspace">М.П.</SPAN></DIV></TD>
|
||||
<TD CLASS="R29C7" COLSPAN="3"><DIV class="cu_space15"><SPAN class="cu_wspace"><t t-esc="helper.ru_date(o.invoice_date)"/><!-- TO DO: ДатаДокументаДень --></SPAN></DIV></TD>
|
||||
<TD COLSPAN="3" class="cu_right"><DIV class="cu_space15"><SPAN class="cu_wspace"><!-- TO DO: ДатаДокументаГод --></SPAN></DIV></TD>
|
||||
<TD CLASS="R51C10" COLSPAN="4"><DIV class="cu_space15"><SPAN class="cu_wspace">М.П.</SPAN></DIV></TD>
|
||||
<TD COLSPAN="7"><DIV class="cu_space15"><SPAN class="cu_wspace">"<![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]>"<![CDATA[ ]]>_____________<![CDATA[ ]]>20<![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]><![CDATA[ ]]>года</SPAN></DIV></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</data>
|
||||
</openerp>
|
||||
13
l10n_ru_doc/report/report_invoice.py
Normal file
13
l10n_ru_doc/report/report_invoice.py
Normal file
@ -0,0 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from odoo import models
|
||||
from odoo.addons.l10n_ru_doc.report_helper import QWebHelper
|
||||
class RuInvoiceReport(models.AbstractModel):
|
||||
_name = 'report.l10n_ru_doc.report_invoice'
|
||||
def _get_report_values(self, docids, data=None):
|
||||
docs = self.env['account.move'].browse(docids)
|
||||
return {
|
||||
'helper': QWebHelper(),
|
||||
'doc_ids': docs.ids,
|
||||
'doc_model': 'account.move',
|
||||
'docs': docs
|
||||
}
|
||||
329
l10n_ru_doc/report/report_invoice.xml
Normal file
329
l10n_ru_doc/report/report_invoice.xml
Normal file
@ -0,0 +1,329 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<template id="report_invoice">
|
||||
<t t-call="web.html_container">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<!-- Multicompany -->
|
||||
<t t-if="o and 'company_id' in o">
|
||||
<t t-set="company" t-value="o.company_id"></t>
|
||||
</t>
|
||||
<t t-if="not o or not 'company_id' in o">
|
||||
<t t-set="company" t-value="res_company"></t>
|
||||
</t>
|
||||
<t t-set="context" t-value="o._context"></t>
|
||||
|
||||
<div class="article o_report_layout_standard" t-att-data-oe-model="o and o._name" t-att-data-oe-id="o and o.id" t-att-data-oe-lang="o and o.env.context.get('lang')">
|
||||
<div class="page">
|
||||
|
||||
<STYLE TYPE="text/css">
|
||||
body { background: #ffffff; margin: 0; font-family: Arial; font-size: 8pt; font-style: normal; }
|
||||
tr.R0{ font-family: Arial; font-size: 8pt; font-style: normal; height: 31px; }
|
||||
tr.R0 td.R0C14{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: right; overflow: hidden;}
|
||||
tr.R1{ font-family: Arial; font-size: 8pt; font-style: normal; height: 25px; }
|
||||
tr.R1 td.R1C1{ font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; vertical-align: top; overflow: hidden;}
|
||||
tr.R1 td.R2C1{ font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold; overflow: hidden;}
|
||||
tr.R12{ height: 15px; }
|
||||
tr.R12 td.R12C1{ vertical-align: top; overflow: hidden;}
|
||||
tr.R12 td.R14C1{ vertical-align: top; }
|
||||
tr.R12 td.R16C14{ text-align: right; }
|
||||
tr.R18{ font-family: Arial; font-size: 8pt; font-style: normal; height: 43px; }
|
||||
tr.R18 td.R18C1{ text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; }
|
||||
tr.R18 td.R18C10{ text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R18 td.R18C4{ text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; }
|
||||
tr.R18 td.R19C11{ text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R27{ font-family: Arial; font-size: 8pt; font-style: normal; height: 29px; }
|
||||
tr.R27 td.R27C1{ overflow: hidden;}
|
||||
tr.R27 td.R27C2, tr.R27 td.R27C2I{ overflow: hidden;border-bottom: #ffffff 1px none; }
|
||||
|
||||
tr.R27 td.R27C2I{ overflow: visible; }
|
||||
tr.R27 td.R27C2I span{ position: relative; }
|
||||
tr.R27 td.R27C2I span img { position: absolute; width: 100px; top: -30px; }
|
||||
|
||||
tr.R27 td.R27C5{ border-bottom: #ffffff 1px none; }
|
||||
tr.R27 td.R30C8{ text-align: center; overflow: hidden;border-bottom: #ffffff 1px none; }
|
||||
tr.R3{ font-family: Arial; font-size: 8pt; font-style: normal; height: 15px; }
|
||||
tr.R3 td.R20C1{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-bottom: #000000 1px solid; }
|
||||
tr.R3 td.R20C10{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R22C1{ vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R22C14{ font-family: Arial; font-size: 8pt; font-style: normal; vertical-align: top; }
|
||||
tr.R3 td.R22C2{ vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R22C4{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R22C7{ text-align: right; vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R24C1{ font-family: Arial; font-size: 8pt; font-style: normal; font-weight: bold; border-left: #000000 1px solid; border-bottom: #000000 1px solid; }
|
||||
tr.R3 td.R24C2{ border-bottom: #000000 1px solid; }
|
||||
tr.R3 td.R24C6{ text-align: right; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R24C7{ font-family: Arial; font-size: 8pt; font-style: normal; font-weight: bold; text-align: center; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; }
|
||||
tr.R3 td.R24C8{ text-align: center; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R3 td.R28C11{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; }
|
||||
tr.R3 td.R28C2{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; overflow: hidden;border-top: #000000 1px solid; }
|
||||
tr.R3 td.R29C1{ vertical-align: top; }
|
||||
tr.R3 td.R3C1{ }
|
||||
tr.R31{ font-family: Arial; font-size: 8pt; font-style: normal; height: 21px; }
|
||||
tr.R31 td.R31C2{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; vertical-align: top; overflow: hidden;border-top: #000000 1px solid; }
|
||||
tr.R31 td.R31C8{ font-family: Arial; font-size: 6pt; font-style: normal; text-align: center; overflow: hidden;border-top: #000000 1px solid; }
|
||||
table {table-layout: fixed; padding: 0px; padding-left: 2px; vertical-align:bottom; border-collapse:collapse;width: 100%; font-family: Arial; font-size: 8pt; font-style: normal; }
|
||||
td { padding: 0px; padding-left: 2px; overflow:hidden; }
|
||||
|
||||
.cu_wspace { white-space:nowrap; }
|
||||
.cu_space43 { width:100%;height:48px;overflow:hidden; }
|
||||
.cu_space85 { width:100%;height:85px;overflow:hidden; }
|
||||
tbody, table, tr, td, th{border: none;}
|
||||
</STYLE>
|
||||
|
||||
<TABLE CELLSPACING="0">
|
||||
<COL WIDTH="25%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
<COL WIDTH="5%"/>
|
||||
<COL WIDTH="5%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
<COL WIDTH="5%"/>
|
||||
<COL WIDTH="4%"/>
|
||||
<COL WIDTH="4%"/>
|
||||
<COL WIDTH="4%"/>
|
||||
<COL WIDTH="4%"/>
|
||||
<COL WIDTH="4%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="15%"/>
|
||||
<TR CLASS="R0">
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R0C14"><SPAN class="cu_wspace">Приложение<![CDATA[ ]]>№<![CDATA[ ]]>1<BR/>к<![CDATA[ ]]>постановлению<![CDATA[ ]]>Правительства<![CDATA[ ]]>Российской<![CDATA[ ]]>Федерации<BR/>от<![CDATA[ ]]>26<![CDATA[ ]]>декабря<![CDATA[ ]]>2011<![CDATA[ ]]>г.<![CDATA[ ]]>№<![CDATA[ ]]>1137</SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R1">
|
||||
<TD CLASS="R1C1" COLSPAN="14"><SPAN class="cu_wspace">Счет-фактура № <t t-esc="helper.numer(o.name)"/> от <span t-field="o.invoice_date"/></SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R1">
|
||||
<TD CLASS="R2C1" COLSPAN="14"><SPAN class="cu_wspace"><!-- TO DO: НомерИсправления --></SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="14">Продавец: <t t-esc="company.name or ''"/></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="14">Адрес: <t t-esc="helper.address(company)"/></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="14">ИНН/КПП продавца: <t t-esc="company.inn or ''"/><t t-esc="company.kpp and '/'+company.kpp or ''"/></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="14">Грузоотправитель и его адрес: <t t-esc="helper.representation(o.gruzootpr or o.partner_id)"/></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="14">Грузополучатель и его адрес: <t t-esc="helper.representation(o.partner_id)"/><!-- TO DO: ПредставлениеГрузополучателя --></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="14">К платежно-расчетному документу № от <!-- TO DO: ПоДокументу --></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="14">Покупатель: <t t-esc="helper.representation(o.partner_id.parent_id) if o.partner_id.parent_id else helper.representation(o.partner_id) "/><!-- TO DO: ПредставлениеПокупателя --></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="14">Адрес: <t t-esc="helper.address(o.partner_id)"/></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R3C1" COLSPAN="14">ИНН/КПП покупателя: <t t-esc="o.partner_id.inn or ''"/><t t-esc="o.partner_id.kpp and '/'+o.partner_id.kpp or ''"/></TD>
|
||||
</TR>
|
||||
<TR CLASS="R12">
|
||||
<TD CLASS="R12C1" COLSPAN="14"><SPAN class="cu_wspace">Валюта: наименование, код Российский рубль, 643</SPAN></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<!-- end header -->
|
||||
<!-- start items header -->
|
||||
<TABLE CELLSPACING="0">
|
||||
<COL WIDTH="16%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="7%"/>
|
||||
<COL WIDTH="10%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
<COL WIDTH="6%"/>
|
||||
|
||||
<TR CLASS="R18">
|
||||
<TD CLASS="R18C1" ROWSPAN="2"><DIV class="cu_space85">Наименование товара (описание выполненных работ, оказанных услуг), имущественного права</DIV></TD>
|
||||
<TD CLASS="R18C1" COLSPAN="2"><DIV class="cu_space43">Единица<BR/>измерения</DIV></TD>
|
||||
<TD CLASS="R18C4" ROWSPAN="2"><DIV class="cu_space85"><SPAN class="cu_wspace">Коли-<BR/>чество<![CDATA[ ]]><BR/>(объем)</SPAN></DIV></TD>
|
||||
<TD CLASS="R18C1" ROWSPAN="2"><DIV class="cu_space85">Цена (тариф) за единицу измерения</DIV></TD>
|
||||
<TD CLASS="R18C1" ROWSPAN="2"><DIV class="cu_space85">Стоимость товаров (работ, услуг), имущественных прав без налога - всего</DIV></TD>
|
||||
<TD CLASS="R18C4" ROWSPAN="2"><DIV class="cu_space85"><SPAN class="cu_wspace">В<![CDATA[ ]]>том<BR/>числе<BR/>сумма<![CDATA[ ]]><BR/>акциза</SPAN></DIV></TD>
|
||||
<TD CLASS="R18C1" ROWSPAN="2"><DIV class="cu_space85">Налоговая ставка</DIV></TD>
|
||||
<TD CLASS="R18C1" ROWSPAN="2"><DIV class="cu_space85">Сумма налога, предъявляемая покупателю</DIV></TD>
|
||||
<TD CLASS="R18C10" ROWSPAN="2"><DIV class="cu_space85">Стоимость товаров (работ, услуг), имущественных прав с налогом - всего</DIV></TD>
|
||||
<TD CLASS="R18C10" COLSPAN="2"><DIV class="cu_space43">Страна<BR/>происхождения товара</DIV></TD>
|
||||
<TD CLASS="R18C10" ROWSPAN="2"><DIV class="cu_space85">Номер<BR/>таможенной<BR/>декларации</DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R18">
|
||||
<TD CLASS="R18C4"><DIV class="cu_space43"><SPAN class="cu_wspace">код</SPAN></DIV></TD>
|
||||
<TD CLASS="R18C1"><DIV class="cu_space43">условное обозначение (национальное)</DIV></TD>
|
||||
<TD CLASS="R19C11"><DIV class="cu_space43">цифровой код</DIV></TD>
|
||||
<TD CLASS="R19C11"><DIV class="cu_space43">краткое наименование</DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">1</SPAN></TD>
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">2</SPAN></TD>
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">2а</SPAN></TD>
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">3</SPAN></TD>
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">4</SPAN></TD>
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">5</SPAN></TD>
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">6</SPAN></TD>
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">7</SPAN></TD>
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">8</SPAN></TD>
|
||||
<TD CLASS="R20C10"><SPAN class="cu_wspace">9</SPAN></TD>
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">10</SPAN></TD>
|
||||
<TD CLASS="R20C1"><SPAN class="cu_wspace">10а</SPAN></TD>
|
||||
<TD CLASS="R20C10"><SPAN class="cu_wspace">11</SPAN></TD>
|
||||
</TR>
|
||||
<!-- end items header -->
|
||||
<!-- start items -->
|
||||
<t t-set="invoice_line_ids" t-value="o.invoice_line_ids"/>
|
||||
<t t-set="page_quantity" t-value="sum([line.quantity for line in invoice_line_ids])"/>
|
||||
<t t-set="total_quantity" t-value="sum([line.quantity for line in invoice_line_ids])"/>
|
||||
<t t-set="page_price_subtotal"
|
||||
t-value="sum([line.price_subtotal for line in invoice_line_ids])"/>
|
||||
<t t-set="total_price_subtotal"
|
||||
t-value="sum([line.price_subtotal for line in invoice_line_ids])"/>
|
||||
<t t-set="page_tax"
|
||||
t-value="sum([line.price_total_pf - line.price_subtotal for line in invoice_line_ids])"/>
|
||||
<t t-set="total_tax"
|
||||
t-value="sum([line.price_total_pf - line.price_subtotal for line in invoice_line_ids])"/>
|
||||
|
||||
<t t-set="page_price_tax_subtotal"
|
||||
t-value="sum([line.price_total_pf for line in invoice_line_ids])"/>
|
||||
<t t-set="total_price_tax_subtotal"
|
||||
t-value="sum([line.price_total_pf for line in invoice_line_ids])"/>
|
||||
<tr CLASS="R3" t-foreach="o.invoice_line_ids" t-as="line">
|
||||
<TD CLASS="R22C1"><t t-esc="line.name or ''"/></TD>
|
||||
<TD CLASS="R22C2"><SPAN class="cu_wspace"><!-- TO DO: ЕдиницаИзмеренияКод --></SPAN></TD>
|
||||
<TD CLASS="R22C2"><SPAN class="cu_wspace"><t t-esc="line.product_uom_id.name or ''"/></SPAN></TD>
|
||||
<TD CLASS="R22C4"><SPAN class="cu_wspace"><t t-esc="line.quantity or ''"/></SPAN></TD>
|
||||
<TD CLASS="R22C4"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(line.price_subtotal/line.quantity)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R22C4"><SPAN class="cu_wspace"><t t-esc="line.price_subtotal or ''"/></SPAN></TD>
|
||||
<TD CLASS="R22C7">без акциза <!-- TO DO: Акциз --></TD>
|
||||
<TD CLASS="R22C2"><SPAN class="cu_wspace"><t t-esc="line.tax_ids[0].filtered(lambda tax: tax.invisiblePF == False).amount if line.tax_ids.filtered(lambda tax: tax.invisiblePF == False) else ''"/> %<!-- TO DO: СтавкаНДС --></SPAN></TD>
|
||||
<TD CLASS="R22C4"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(line.price_total_pf-line.price_subtotal)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R22C4"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(line.price_total_pf)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R22C1">-- <!-- TO DO: СтранаПроисхожденияКод --></TD>
|
||||
<TD CLASS="R22C1">-- <!-- TO DO: ПредставлениеСтраны --></TD>
|
||||
<TD CLASS="R22C1">-- <!-- TO DO: ПредставлениеГТД --></TD>
|
||||
</tr>
|
||||
<!-- end items -->
|
||||
<!-- start total -->
|
||||
<TR CLASS="R3">
|
||||
<TD CLASS="R24C1" COLSPAN="5"><SPAN class="cu_wspace">Всего<![CDATA[ ]]>к<![CDATA[ ]]>оплате</SPAN></TD>
|
||||
<TD CLASS="R24C6"><SPAN class="cu_wspace"><t t-esc="o.amount_untaxed or ''"/></SPAN></TD>
|
||||
<TD CLASS="R24C7" COLSPAN="2" STYLE="border-right: #000000 1px solid; "><SPAN class="cu_wspace">Х</SPAN></TD>
|
||||
<TD CLASS="R24C6"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(page_tax)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD CLASS="R24C6"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(page_price_tax_subtotal)).replace('.',',') or ''"/></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<!-- end total -->
|
||||
<!-- start footer -->
|
||||
<TABLE CELLSPACING="0">
|
||||
<COL WIDTH="14"/>
|
||||
<COL WIDTH="215"/>
|
||||
<COL WIDTH="62"/>
|
||||
<COL WIDTH="70"/>
|
||||
<COL WIDTH="18"/>
|
||||
<COL WIDTH="73"/>
|
||||
<COL WIDTH="127"/>
|
||||
<COL WIDTH="97"/>
|
||||
<COL WIDTH="102"/>
|
||||
<COL WIDTH="103"/>
|
||||
<COL WIDTH="113"/>
|
||||
<COL WIDTH="24"/>
|
||||
<COL WIDTH="73"/>
|
||||
<COL WIDTH="101"/>
|
||||
<TR CLASS="R12">
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
</TR>
|
||||
<!-- TO DO: flag of order type -->
|
||||
<!-- start company sign -->
|
||||
<TR>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R27">
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R27C1"><SPAN class="cu_wspace">Руководитель<![CDATA[ ]]>организации<BR/>или<![CDATA[ ]]>иное<![CDATA[ ]]>уполномоченное<![CDATA[ ]]>лицо</SPAN></TD>
|
||||
<TD CLASS="R27C2I" COLSPAN="2"><SPAN><t t-raw="company.print_facsimile and (company.print_anywhere or context.get('mark_invoice_as_sent', False)) and helper.img(company.chief_id.facsimile) or ''"/></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R27C5" COLSPAN="2"><t t-esc="helper.initials(company.chief_id.name)"/></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R27C1" COLSPAN="2"><SPAN class="cu_wspace">Главный<![CDATA[ ]]>бухгалтер<BR/>или<![CDATA[ ]]>иное<![CDATA[ ]]>уполномоченное<![CDATA[ ]]>лицо</SPAN></TD>
|
||||
<TD CLASS="R27C2I"><SPAN><t t-raw="company.print_facsimile and (company.print_anywhere or context.get('mark_invoice_as_sent', False)) and helper.img(company.accountant_id.facsimile) or ''"/></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R27C5" COLSPAN="2"><t t-esc="helper.initials(company.accountant_id.name)"/></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R3">
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R28C2" COLSPAN="2"><SPAN class="cu_wspace">(подпись)</SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R28C2" COLSPAN="2"><SPAN class="cu_wspace">(ф.и.о.)</SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
<TD CLASS="R28C2"><SPAN class="cu_wspace">(подпись)</SPAN></TD>
|
||||
<TD CLASS="R28C11"><SPAN></SPAN></TD>
|
||||
<TD CLASS="R28C2" COLSPAN="2"><SPAN class="cu_wspace">(ф.и.о.)</SPAN></TD>
|
||||
<TD><SPAN></SPAN></TD>
|
||||
</TR>
|
||||
<!-- end company sign -->
|
||||
</TABLE>
|
||||
<!-- end footer -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</data>
|
||||
</openerp>
|
||||
13
l10n_ru_doc/report/report_order.py
Normal file
13
l10n_ru_doc/report/report_order.py
Normal file
@ -0,0 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from odoo import models
|
||||
from odoo.addons.l10n_ru_doc.report_helper import QWebHelper
|
||||
class RuSaleOrderReport(models.AbstractModel):
|
||||
_name = 'report.l10n_ru_doc.report_order'
|
||||
def _get_report_values(self, docids, data=None):
|
||||
docs = self.env['sale.order'].browse(docids)
|
||||
return {
|
||||
'helper': QWebHelper(),
|
||||
'doc_ids': docs.ids,
|
||||
'doc_model': 'sale.order',
|
||||
'docs': docs
|
||||
}
|
||||
336
l10n_ru_doc/report/report_order.xml
Normal file
336
l10n_ru_doc/report/report_order.xml
Normal file
@ -0,0 +1,336 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<template id="report_order">
|
||||
<t t-call="web.basic_layout">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<!-- Multicompany -->
|
||||
<t t-if="o and 'company_id' in o">
|
||||
<t t-set="company" t-value="o.company_id"></t>
|
||||
</t>
|
||||
<t t-if="not o or not 'company_id' in o">
|
||||
<t t-set="company" t-value="res_company"></t>
|
||||
</t>
|
||||
<t t-set="context" t-value="o._context"></t>
|
||||
|
||||
<div class="page">
|
||||
|
||||
<STYLE TYPE="text/css">
|
||||
body { background: #ffffff; margin: 0; font-family: Arial; font-size: 8pt; font-style:
|
||||
normal; }
|
||||
tr.R0{ height: 15px; }
|
||||
tr.R0 td.R0C1{ text-align: center; vertical-align: medium; }
|
||||
tr.R0 td.R16C19{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align:
|
||||
top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000
|
||||
1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R16C22{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align:
|
||||
top; border-left: #000000 1px solid; border-top: #ffffff 0px none; border-bottom: #000000
|
||||
1px solid; border-right: #000000 1px solid; }
|
||||
tr.R0 td.R17C1{ border-left: #000000 1px solid; border-bottom: #000000 1px solid;
|
||||
border-right: #000000 1px solid; }
|
||||
tr.R0 td.R19C1{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align: top;
|
||||
border-left: #000000 1px solid; border-top: #000000 1px solid; }
|
||||
tr.R0 td.R21C1{ font-family: Arial; font-size: 8pt; font-style: normal; vertical-align:
|
||||
medium; border-left: #000000 1px solid; border-top: #ffffff 0px none; border-bottom: #000000
|
||||
1px solid; }
|
||||
tr.R0 td.R24C1{ font-family: Arial; font-size: 14pt; font-style: normal; font-weight: bold;
|
||||
vertical-align: medium; }
|
||||
tr.R0 td.R37C1{ text-align: center; vertical-align: top; overflow: hidden;border-left:
|
||||
#000000 2px solid; border-top: #000000 1px solid; }
|
||||
tr.R0 td.R37C2{ vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px
|
||||
solid; }
|
||||
tr.R0 td.R37C4{ text-align: right; vertical-align: top; border-left: #000000 1px solid;
|
||||
border-top: #000000 1px solid; }
|
||||
tr.R0 td.R37C5{ vertical-align: top; border-left: #000000 1px solid; border-top: #000000 1px
|
||||
solid; }
|
||||
tr.R0 td.R37C7{ text-align: right; vertical-align: top; border-left: #000000 1px solid;
|
||||
border-top: #000000 1px solid; border-right: #000000 2px solid; }
|
||||
tr.R15{ height: 17px; }
|
||||
tr.R15 td.R15C1{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align:
|
||||
top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-right: #000000
|
||||
1px solid; }
|
||||
tr.R15 td.R15C19{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align:
|
||||
medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom:
|
||||
#000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R15 td.R15C22{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align:
|
||||
medium; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom:
|
||||
#ffffff 0px none; border-right: #000000 1px solid; }
|
||||
tr.R15 td.R18C1{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align:
|
||||
medium; border-left: #000000 1px solid; border-top: #000000 1px solid; }
|
||||
tr.R15 td.R18C19{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align:
|
||||
top; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000
|
||||
1px solid; border-right: #000000 1px solid; }
|
||||
tr.R15 td.R18C3{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align:
|
||||
medium; border-top: #000000 1px solid; border-right: #000000 1px solid; }
|
||||
tr.R15 td.R29C1{ font-family: Arial; font-size: 9pt; font-style: normal; vertical-align:
|
||||
top; }
|
||||
tr.R15 td.R29C5{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold;
|
||||
vertical-align: top; }
|
||||
tr.R15 td.R35C1{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold;
|
||||
text-align: center; vertical-align: medium; border-left: #000000 2px solid; border-top:
|
||||
#000000 2px solid; }
|
||||
tr.R15 td.R35C2{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold;
|
||||
text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top:
|
||||
#000000 2px solid; }
|
||||
tr.R15 td.R35C7{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold;
|
||||
text-align: center; vertical-align: medium; border-left: #000000 1px solid; border-top:
|
||||
#000000 2px solid; border-right: #000000 2px solid; }
|
||||
tr.R15 td.R40C6{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold;
|
||||
text-align: right; vertical-align: top; }
|
||||
tr.R15 td.R46C1{ font-family: Arial; font-size: 9pt; font-style: normal; }
|
||||
tr.R15 td.R51C1{ font-family: Arial; font-size: 9pt; font-style: normal; font-weight: bold;
|
||||
}
|
||||
tr.R15 td.R51C10{ text-align: right; border-bottom: #000000 1px solid; }
|
||||
tr.R15 td.R51C6,tr.R15 td.R51C6I,tr.R15 td.R51C6S{ border-bottom: #000000 1px solid; }
|
||||
tr.R15 td.R51C6I,tr.R15 td.R51C6S { overflow: visible; }
|
||||
tr.R15 td.R51C6I span,tr.R15 td.R51C6S span { position: relative; }
|
||||
tr.R15 td.R51C6I span img { position: absolute; width: 100px; top: -40px; }
|
||||
tr.R15 td.R51C6S span img { position: absolute; width: 140px; top: -80px; left: -100px; }
|
||||
tr.R26{ height: 9px; }
|
||||
tr.R26 td.R26C1{ border-bottom: #000000 2px solid; }
|
||||
tr.R26 td.R39C1{ border-top: #000000 2px solid; }
|
||||
table {table-layout: fixed; padding: 0px; padding-left: 2px; vertical-align:bottom;
|
||||
border-collapse:collapse;width: 100%; font-family: Arial; font-size: 8pt; font-style:
|
||||
normal; }
|
||||
td { padding: 0px; padding-left: 2px; overflow:hidden; }
|
||||
.cu_space15 { width:100%;height:15px;overflow:hidden; }
|
||||
.cu_space44 { width:100%;height:44px;overflow:hidden; }
|
||||
.cu_space104 { width:100%;height:104px;overflow:hidden; }
|
||||
.cu_space31 { width:100%;height:31px;overflow:hidden; }
|
||||
.cu_wspace { white-space:nowrap; }
|
||||
.cu_space29 { width:100%;height:29px;overflow:hidden; }
|
||||
.cu_space61 { width:100%;height:61px;overflow:hidden; }
|
||||
.cu_space9 { width:100%;height:9px;overflow:hidden; }
|
||||
tbody, table, tr, td, th{border: none;}
|
||||
</STYLE>
|
||||
|
||||
<TABLE CELLSPACING="0">
|
||||
<COL WIDTH="13%"/>
|
||||
<COL WIDTH="13%"/>
|
||||
<COL WIDTH="13%"/>
|
||||
<COL WIDTH="13%"/>
|
||||
<COL WIDTH="12%"/>
|
||||
<COL WIDTH="12%"/>
|
||||
<COL WIDTH="12%"/>
|
||||
<COL WIDTH="12%"/>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R0C1" COLSPAN="8"> <DIV class="cu_space44"><![CDATA[ ]]></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R0C1" COLSPAN="8"> <DIV class="cu_space44">Внимание! Оплата данного счета означает согласие с условиями поставки товара.</DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R0C1" COLSPAN="8"> <DIV class="cu_space44"><![CDATA[ ]]></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
<TD CLASS="R15C1" COLSPAN="4" ROWSPAN="2">
|
||||
<DIV class="cu_space31" t-esc="(company.partner_id.bank_ids and company.partner_id.bank_ids[0].bank_name or '')+' '+(company.partner_id.bank_ids and company.partner_id.bank_ids[0].bank_id.city or '')"></DIV>
|
||||
</TD>
|
||||
<TD CLASS="R15C19">
|
||||
<SPAN class="cu_wspace">БИК</SPAN>
|
||||
</TD>
|
||||
<TD CLASS="R15C22" COLSPAN="3">
|
||||
<SPAN class="cu_wspace" t-esc="company.partner_id.bank_ids and company.partner_id.bank_ids[0].bank_bic or ''"></SPAN>
|
||||
</TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R16C19" ROWSPAN="2">
|
||||
<DIV class="cu_space29"><SPAN class="cu_wspace">Сч. №</SPAN></DIV>
|
||||
</TD>
|
||||
<TD CLASS="R16C22" COLSPAN="3" ROWSPAN="2">
|
||||
<DIV class="cu_space29">
|
||||
<SPAN class="cu_wspace" t-esc="company.partner_id.bank_ids and company.partner_id.bank_ids[0].bank_id.corr_acc or ''"></SPAN>
|
||||
</DIV>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R17C1" COLSPAN="4">
|
||||
<SPAN class="cu_wspace">Банк получателя</SPAN>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
<TD CLASS="R18C1" COLSPAN="1"><SPAN class="cu_wspace">ИНН</SPAN></TD>
|
||||
<TD CLASS="R18C3" COLSPAN="1"><SPAN class="cu_wspace" t-esc="company.inn or ''"></SPAN></TD>
|
||||
<TD CLASS="R18C1" COLSPAN="1"><SPAN class="cu_wspace">КПП</SPAN></TD>
|
||||
<TD CLASS="R18C3" COLSPAN="1"><SPAN class="cu_wspace" t-esc="company.kpp or ''"></SPAN></TD>
|
||||
<TD CLASS="R18C19" ROWSPAN="4">
|
||||
<DIV class="cu_space61"><SPAN class="cu_wspace">Сч. №</SPAN></DIV>
|
||||
</TD>
|
||||
<TD CLASS="R18C19" COLSPAN="3" ROWSPAN="4">
|
||||
<DIV class="cu_space61">
|
||||
<SPAN class="cu_wspace" t-esc="company.partner_id.bank_ids and company.partner_id.bank_ids[0].acc_number or ''"></SPAN>
|
||||
</DIV>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R19C1" COLSPAN="4" ROWSPAN="2"><DIV class="cu_space29" t-esc="company.name or ''"></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R21C1" COLSPAN="4"><SPAN class="cu_wspace">Получатель</SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="8"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="8"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD CLASS="R24C1" COLSPAN="8" ROWSPAN="2">
|
||||
<DIV class="cu_space29">
|
||||
<SPAN class="cu_wspace">
|
||||
<t t-esc="'Комм. предложение' if o.state in ['draft','sent'] else 'Счет на оплату'"/>
|
||||
<t t-esc="' № '"/>
|
||||
<t t-esc="helper.numer(o.name)"/>
|
||||
<t t-esc="' от '"/>
|
||||
<t t-esc="helper.ru_date2(o.date_order)"/>
|
||||
</SPAN>
|
||||
</DIV>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="8"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R26">
|
||||
<TD CLASS="R26C1" COLSPAN="8"> <DIV class="cu_space9"> <SPAN><![CDATA[ ]]></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="8"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
<TD CLASS="R29C1" COLSPAN="1">
|
||||
<SPAN class="cu_wspace">Поставщик:</SPAN>
|
||||
</TD>
|
||||
<TD CLASS="R29C5" COLSPAN="7">
|
||||
<t t-esc="helper.representation(company)"/>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="8"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
<TD CLASS="R29C1" COLSPAN="1">
|
||||
<SPAN class="cu_wspace">Покупатель:</SPAN>
|
||||
</TD>
|
||||
<TD CLASS="R29C5" COLSPAN="7">
|
||||
<t t-esc="helper.representation(o.partner_id.parent_id) if o.partner_id.parent_id else helper.representation(o.partner_id) "/>
|
||||
</TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="8"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
|
||||
<TD CLASS="R35C1"> <SPAN class="cu_wspace">№</SPAN></TD>
|
||||
<TD CLASS="R35C2" COLSPAN="3"><SPAN class="cu_wspace">Товары (работы, услуги)</SPAN></TD>
|
||||
<TD CLASS="R35C2"><SPAN class="cu_wspace">Кол-во</SPAN></TD>
|
||||
<TD CLASS="R35C2"><SPAN class="cu_wspace">Ед.</SPAN></TD>
|
||||
<TD CLASS="R35C2"><SPAN class="cu_wspace">Цена</SPAN></TD>
|
||||
<TD CLASS="R35C7"><SPAN class="cu_wspace">Сумма</SPAN></TD>
|
||||
</TR>
|
||||
|
||||
<tr CLASS="R0"
|
||||
t-foreach="o.order_line.filtered(lambda s: 'аванс' not in s.name.lower() and 'депозит' not in s.name.lower())"
|
||||
t-as="line">
|
||||
<TD CLASS="R37C1"><SPAN class="cu_wspace"><t t-esc="line_index+1"/></SPAN></TD>
|
||||
<TD CLASS="R37C2" COLSPAN="3"><t t-esc="line.name or ''"/></TD>
|
||||
<TD CLASS="R37C4"><SPAN class="cu_wspace"><t t-esc="line.product_uom_qty or ''"/></SPAN></TD>
|
||||
<TD CLASS="R37C5"><SPAN class="cu_wspace"><t t-esc="line.product_uom_id.name or ''"/></SPAN></TD>
|
||||
<TD CLASS="R37C4"><SPAN class="cu_wspace"><t t-esc="line.price_unit or ''"/></SPAN></TD>
|
||||
<TD CLASS="R37C7"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(line.price_unit*line.product_uom_qty)).replace('.',',') or ''"/></SPAN></TD>
|
||||
</tr>
|
||||
<TR CLASS="R26">
|
||||
<TD COLSPAN="8" CLASS="R39C1"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
<t t-if="o.amount_tax and float(o.amount_tax) > 0">
|
||||
<TD CLASS="R40C6" COLSPAN="7"><SPAN class="cu_wspace">Сумма НДС: <!-- TO DO: [НДС]: --></SPAN></TD>
|
||||
<TD CLASS="R40C6"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(o.amount_tax)).replace('.',',') or '0,00'"/></SPAN></TD>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<TD CLASS="R40C6" COLSPAN="7"><SPAN class="cu_wspace">НДС:</SPAN></TD>
|
||||
<TD CLASS="R40C6"><SPAN class="cu_wspace">Без НДС</SPAN></TD>
|
||||
</t>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
<TD CLASS="R40C6" COLSPAN="7"><SPAN class="cu_wspace">Итого:</SPAN></TD>
|
||||
<TD CLASS="R40C6"><SPAN class="cu_wspace"><t t-esc="(('%.2f')%(o.amount_total)).replace('.',',') or '0,00'"/></SPAN></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="8"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
<TD CLASS="R46C1" COLSPAN="8">
|
||||
<SPAN class="cu_wspace">Всего наименований <t
|
||||
t-esc="o.order_line and len(o.order_line) or '0' "/>, на сумму
|
||||
<t t-esc="o.amount_total or '0,00'"/>
|
||||
руб.
|
||||
</SPAN>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
<TD CLASS="R29C5" COLSPAN="8">
|
||||
<t t-esc="helper.rubles(o.amount_total).capitalize()"/>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
<TD CLASS="R29C5" COLSPAN="8">Условия оплаты:
|
||||
<t t-esc="o.payment_term_id.name"/>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="8"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R26">
|
||||
<TD CLASS="R26C1" COLSPAN="8"> <DIV class="cu_space9"> <SPAN><![CDATA[ ]]></SPAN></DIV></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="8"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R0">
|
||||
<TD COLSPAN="8"><![CDATA[ ]]></TD>
|
||||
</TR>
|
||||
<TR CLASS="R15">
|
||||
<TD CLASS="R51C1" COLSPAN="1">
|
||||
<SPAN class="cu_wspace">Руководитель</SPAN>
|
||||
</TD>
|
||||
<TD CLASS="R51C10" COLSPAN="1">
|
||||
<t t-esc="helper.initials(company.chief_id.name)"/>
|
||||
</TD>
|
||||
<TD CLASS="R51C6I">
|
||||
<SPAN>
|
||||
<t t-raw="company.print_facsimile and (company.print_anywhere or context.get('mark_so_as_sent', False)) and helper.img(company.chief_id.facsimile) or ''"/>
|
||||
</SPAN>
|
||||
</TD>
|
||||
<TD CLASS="R51C6S">
|
||||
<SPAN>
|
||||
<t t-raw="company.print_stamp and (company.print_anywhere or context.get('mark_so_as_sent', False)) and helper.img(company.stamp) or ''"/>
|
||||
</SPAN>
|
||||
</TD>
|
||||
|
||||
<TD CLASS="R51C1" COLSPAN="1">
|
||||
<SPAN class="cu_wspace">Бухгалтер</SPAN>
|
||||
</TD>
|
||||
<TD CLASS="R51C10" COLSPAN="1">
|
||||
<t t-esc="helper.initials(company.accountant_id.name)"/>
|
||||
</TD>
|
||||
<TD CLASS="R51C6I">
|
||||
<SPAN>
|
||||
<t t-raw="company.print_facsimile and (company.print_anywhere or context.get('mark_so_as_sent', False)) and helper.img(company.accountant_id.facsimile) or ''"/>
|
||||
</SPAN>
|
||||
</TD>
|
||||
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</data>
|
||||
</openerp>
|
||||
24
l10n_ru_doc/report/report_upd.py
Normal file
24
l10n_ru_doc/report/report_upd.py
Normal file
@ -0,0 +1,24 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from odoo import models
|
||||
from odoo.addons.l10n_ru_doc.report_helper import QWebHelper
|
||||
|
||||
class RuUpdReport(models.AbstractModel):
|
||||
_name = 'report.l10n_ru_doc.report_upd'
|
||||
def _get_report_values(self, docids, data=None):
|
||||
docs = self.env['account.move'].browse(docids)
|
||||
return {
|
||||
'helper': QWebHelper(),
|
||||
'doc_ids': docs.ids,
|
||||
'doc_model': 'account.move',
|
||||
'docs': docs
|
||||
}
|
||||
class RuUpdReportn(models.AbstractModel):
|
||||
_name = 'report.l10n_ru_doc.report_updn'
|
||||
def _get_report_values(self, docids, data=None):
|
||||
docs = self.env['account.move'].browse(docids)
|
||||
return {
|
||||
'helper': QWebHelper(),
|
||||
'doc_ids': docs.ids,
|
||||
'doc_model': 'account.move',
|
||||
'docs': docs
|
||||
}
|
||||
1108
l10n_ru_doc/report/report_upd.xml
Normal file
1108
l10n_ru_doc/report/report_upd.xml
Normal file
File diff suppressed because it is too large
Load Diff
1177
l10n_ru_doc/report/report_updn.xml
Normal file
1177
l10n_ru_doc/report/report_updn.xml
Normal file
File diff suppressed because it is too large
Load Diff
112
l10n_ru_doc/report_helper.py
Normal file
112
l10n_ru_doc/report_helper.py
Normal file
@ -0,0 +1,112 @@
|
||||
from datetime import datetime
|
||||
import re
|
||||
from pytils import numeral, dt
|
||||
from odoo.tools import pycompat
|
||||
|
||||
|
||||
class QWebHelper(object):
|
||||
|
||||
def img(self, img, type='png', width=0, height=0) :
|
||||
if width :
|
||||
width = "width='%spx'"%(width)
|
||||
else :
|
||||
width = " "
|
||||
if height :
|
||||
height = "height='%spx'"%(height)
|
||||
else :
|
||||
height = " "
|
||||
toreturn = "<img %s %s src='data:image/%s;base64,%s' />"%(
|
||||
width,
|
||||
height,
|
||||
type,
|
||||
str(pycompat.to_text(img)))
|
||||
return toreturn
|
||||
|
||||
def numer(self, name):
|
||||
if name:
|
||||
numeration = re.findall(r'\d+$', name)
|
||||
if numeration:
|
||||
return numeration[0]
|
||||
return ''
|
||||
|
||||
def ru_date(self, date):
|
||||
if date and date != 'False':
|
||||
return dt.ru_strftime('"%d" %B %Y года', date=datetime.strptime(str(date),
|
||||
"%Y-%m-%d"), inflected=True)
|
||||
return ''
|
||||
|
||||
def ru_date2(self, date):
|
||||
if date and date != 'False':
|
||||
return dt.ru_strftime('%d %B %Y г.', date=datetime.strptime(str(date),
|
||||
"%Y-%m-%d %H:%M:%S"), inflected=True)
|
||||
return ''
|
||||
|
||||
def in_words(self, number):
|
||||
return numeral.in_words(number)
|
||||
|
||||
def rubles(self, sum):
|
||||
text_rubles = numeral.rubles(int(sum))
|
||||
copeck = round((sum - int(sum))*100)
|
||||
text_copeck = numeral.choose_plural(int(copeck), ("копейка", "копейки", "копеек"))
|
||||
return ("%s %02d %s")%(text_rubles, copeck, text_copeck)
|
||||
|
||||
def initials(self, fio):
|
||||
if fio:
|
||||
return (fio.split()[0]+' '+''.join([fio[0:1]+'.' for fio in fio.split()[1:]])).strip()
|
||||
return ''
|
||||
|
||||
def address(self, partner):
|
||||
repr = []
|
||||
if partner.zip:
|
||||
repr.append(partner.zip)
|
||||
if partner.country_id:
|
||||
repr.append(partner.country_id.name)
|
||||
if partner.state_id:
|
||||
repr.append(partner.state_id.name)
|
||||
if partner.city:
|
||||
repr.append(partner.city)
|
||||
if partner.street:
|
||||
repr.append(partner.street)
|
||||
if partner.street2:
|
||||
repr.append(partner.street2)
|
||||
return ', '.join(repr)
|
||||
|
||||
def representation(self, partner):
|
||||
repr = []
|
||||
if partner.name:
|
||||
repr.append(partner.name)
|
||||
if partner.inn:
|
||||
repr.append("ИНН " + partner.inn)
|
||||
if partner.kpp:
|
||||
repr.append("КПП " + partner.kpp)
|
||||
repr.append(self.address(partner))
|
||||
return ', '.join(repr)
|
||||
|
||||
def full_representation(self, partner):
|
||||
repr = [self.representation(partner)]
|
||||
if partner.phone:
|
||||
repr.append("тел.: " + partner.phone)
|
||||
elif partner.parent_id.phone:
|
||||
repr.append("тел.: " + partner.parent_id.phone)
|
||||
bank = None
|
||||
if partner.bank_ids:
|
||||
bank = partner.bank_ids[0]
|
||||
elif partner.parent_id.bank_ids:
|
||||
bank = partner.parent_id.bank_ids[0]
|
||||
if bank and bank.acc_number:
|
||||
repr.append("р/сч " + bank.acc_number)
|
||||
if bank and bank.bank_name:
|
||||
repr.append("в банке " + bank.bank_name)
|
||||
if bank and bank.bank_bic:
|
||||
repr.append("БИК " + bank.bank_bic)
|
||||
if bank and bank.bank_corr_acc:
|
||||
repr.append("к/с " + bank.bank_corr_acc)
|
||||
return ', '.join(repr)
|
||||
|
||||
def representation_small(self, partner):
|
||||
repr = []
|
||||
if partner.name:
|
||||
repr.append(partner.name)
|
||||
|
||||
repr.append(self.address(partner))
|
||||
return ', '.join(repr)
|
||||
BIN
l10n_ru_doc/static/description/docs.png
Normal file
BIN
l10n_ru_doc/static/description/docs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
BIN
l10n_ru_doc/static/description/icon.png
Normal file
BIN
l10n_ru_doc/static/description/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
45
l10n_ru_doc/static/description/index.html
Normal file
45
l10n_ru_doc/static/description/index.html
Normal file
@ -0,0 +1,45 @@
|
||||
<section class="oe_container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="oe_slogan">Первичные документы РФ</h2>
|
||||
<div class="oe_span6">
|
||||
<p class="oe_mt32">
|
||||
Модуль для печати первичных документов в соответствии с законами РФ.
|
||||
</p>
|
||||
<p class="oe_mt32">
|
||||
Возможности:
|
||||
<ul>
|
||||
<li>Товарная накладная (ТОРГ-12)</li>
|
||||
<li>Счет на оплату</li>
|
||||
<li>Счет-фактура</li>
|
||||
<li>Акт выполненных работ</li>
|
||||
<li>Вывод подписей и печати</li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_span6">
|
||||
<div class="oe_row_img oe_centered">
|
||||
<img class="oe_picture" src="waybill.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="oe_slogan">Помощь и поддержка</h2>
|
||||
<div class="oe_span6">
|
||||
<div class="oe_row_img oe_centered">
|
||||
<img class="oe_picture" src="support.png">
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_span6">
|
||||
<p class="oe_mt32">
|
||||
<ul>
|
||||
<li><a href="http://codup.com/prilojeniya/lokalizaciya/248-dokumenti-rf.html">Помощь</a></li>
|
||||
<li><a href="http://codup.com/prilojeniya/lokalizaciya/248-dokumenti-rf.html">Поддержка</a></li>
|
||||
<li><a href="http://codup.com/prilojeniya/lokalizaciya/248-dokumenti-rf.html">Запрос новых возможностей</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
BIN
l10n_ru_doc/static/description/support.png
Normal file
BIN
l10n_ru_doc/static/description/support.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
l10n_ru_doc/static/description/waybill.png
Normal file
BIN
l10n_ru_doc/static/description/waybill.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
7
l10n_ru_doc/static/src/css/l10n_ru_doc.css
Normal file
7
l10n_ru_doc/static/src/css/l10n_ru_doc.css
Normal file
@ -0,0 +1,7 @@
|
||||
@charset "utf-8";
|
||||
.openerp .codup_sign > img {
|
||||
width: 235px;
|
||||
height: 65px;
|
||||
max-width: 235px;
|
||||
max-height: 65px;
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
l10n_ru_doc/static/src/docx/report_saleorder_new_template.docx
Normal file
BIN
l10n_ru_doc/static/src/docx/report_saleorder_new_template.docx
Normal file
Binary file not shown.
2
l10n_ru_doc/tests/__init__.py
Normal file
2
l10n_ru_doc/tests/__init__.py
Normal file
@ -0,0 +1,2 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import test_ru_doc
|
||||
77
l10n_ru_doc/tests/test_ru_doc.py
Normal file
77
l10n_ru_doc/tests/test_ru_doc.py
Normal file
@ -0,0 +1,77 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Tests for l10n_ru_doc report generation.
|
||||
|
||||
Validates: Requirement 12.1
|
||||
"""
|
||||
from odoo.tests.common import TransactionCase
|
||||
from odoo.tests import tagged
|
||||
|
||||
|
||||
def _make_out_invoice(env):
|
||||
"""Create a minimal out_invoice account.move for report testing."""
|
||||
partner = env['res.partner'].search([('is_company', '=', True)], limit=1)
|
||||
if not partner:
|
||||
partner = env['res.partner'].create({'name': 'Test Partner RU', 'is_company': True})
|
||||
|
||||
journal = env['account.journal'].search(
|
||||
[('type', '=', 'sale'), ('company_id', '=', env.company.id)], limit=1
|
||||
)
|
||||
if not journal:
|
||||
journal = env['account.journal'].create({
|
||||
'name': 'Test Sales Journal',
|
||||
'type': 'sale',
|
||||
'code': 'TSALE',
|
||||
})
|
||||
|
||||
move = env['account.move'].create({
|
||||
'move_type': 'out_invoice',
|
||||
'partner_id': partner.id,
|
||||
'journal_id': journal.id,
|
||||
'invoice_date': '2024-01-15',
|
||||
})
|
||||
return move
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install')
|
||||
class TestRuDoc(TransactionCase):
|
||||
"""
|
||||
Validates: Requirement 12.1 — ТОРГ-12 report generation for out_invoice
|
||||
returns non-empty binary content without exceptions.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.invoice = _make_out_invoice(self.env)
|
||||
|
||||
def test_torg12_report_values_no_exception(self):
|
||||
"""
|
||||
Req 12.1 — calling _get_report_values on the ТОРГ-12 report model
|
||||
for an out_invoice returns a non-empty dict without exceptions.
|
||||
"""
|
||||
report_model = self.env['report.l10n_ru_doc.report_bill']
|
||||
result = report_model._get_report_values([self.invoice.id])
|
||||
self.assertIsInstance(result, dict, "Report values should be a dict")
|
||||
self.assertIn('docs', result, "Report values should contain 'docs' key")
|
||||
self.assertTrue(result['docs'], "Report docs should be non-empty")
|
||||
|
||||
def test_torg12_html_render_returns_binary_content(self):
|
||||
"""
|
||||
Req 12.1 — rendering the ТОРГ-12 QWeb template for an out_invoice
|
||||
returns non-empty binary content without exceptions.
|
||||
"""
|
||||
html_content, content_type = self.env['ir.actions.report']._render_qweb_html(
|
||||
'l10n_ru_doc.report_bill', [self.invoice.id]
|
||||
)
|
||||
self.assertTrue(html_content, "ТОРГ-12 HTML render should return non-empty binary content")
|
||||
self.assertIsInstance(html_content, bytes, "Rendered content should be bytes")
|
||||
self.assertGreater(len(html_content), 0, "Rendered content should have non-zero length")
|
||||
|
||||
def test_torg12_report_values_contains_helper(self):
|
||||
"""
|
||||
Req 12.1 — report values include the QWebHelper instance for formatting.
|
||||
"""
|
||||
report_model = self.env['report.l10n_ru_doc.report_bill']
|
||||
result = report_model._get_report_values([self.invoice.id])
|
||||
self.assertIn('helper', result, "Report values should contain 'helper' key")
|
||||
self.assertIsNotNone(result['helper'], "Helper should not be None")
|
||||
36
l10n_ru_doc/views/account_invoice_view.xml
Normal file
36
l10n_ru_doc/views/account_invoice_view.xml
Normal file
@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<record id="invoice_ru_form" model="ir.ui.view">
|
||||
<field name="name">account.invoice.ru.form</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="inherit_id" ref="account.view_move_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<!-- <data>-->
|
||||
<!-- <button name="action_invoice_sent" position="attributes">-->
|
||||
<!-- <attribute name="name">action_bill_sent</attribute>-->
|
||||
<!-- </button>-->
|
||||
<!-- </data>-->
|
||||
<xpath expr="//group[@id='header_left_group']" position="inside">
|
||||
|
||||
<field name="kladov"/>
|
||||
<field name="gruzopol"/>
|
||||
<field name="gruzootpr"/>
|
||||
|
||||
<field name="transport"/>
|
||||
<field name="osnovanie"/>
|
||||
<field name="only_service" invisible="1"/> <!-- reason: need-->
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//page[@name='invoice_tab']/field[@name='invoice_line_ids']/list/field[@name='tax_ids']" position="after">
|
||||
<field name="price_total_pf" column_invisible="True"/><!-- reason: need-->
|
||||
</xpath>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
|
||||
14
l10n_ru_doc/views/l10n_ru_doc_data.xml
Normal file
14
l10n_ru_doc/views/l10n_ru_doc_data.xml
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<record model="base.language.install" id="install_russian">
|
||||
<field name="lang_ids" eval="[(4, ref('base.lang_ru'))]"/>
|
||||
<field name="overwrite">1</field>
|
||||
</record>
|
||||
<function model="base.language.install" name="lang_install">
|
||||
<value eval="[ref('l10n_ru_doc.install_russian')]"/>
|
||||
</function>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
16
l10n_ru_doc/views/product.xml
Normal file
16
l10n_ru_doc/views/product.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="tnved_product" model="ir.ui.view">
|
||||
<field name="name">tnved_product</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='default_code']" position="after">
|
||||
<field name="kod_tnved"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
18
l10n_ru_doc/views/res_bank_view.xml
Normal file
18
l10n_ru_doc/views/res_bank_view.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_res_bank_ru_form" model="ir.ui.view">
|
||||
<field name="name">res.bank.ru.form</field>
|
||||
<field name="model">res.bank</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base.view_res_bank_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="bic" position="after">
|
||||
<field name="corr_acc"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
42
l10n_ru_doc/views/res_company_view.xml
Normal file
42
l10n_ru_doc/views/res_company_view.xml
Normal file
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<record id="view_companyruform" model="ir.ui.view">
|
||||
<field name="name">res.companyruform</field>
|
||||
<field name="model">res.company</field>
|
||||
<field name="inherit_id" ref="base.view_company_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='vat']" position="after">
|
||||
<field name="inn" invisible="True"/><!-- reason: need-->
|
||||
<field name="kpp"/>
|
||||
<field name="okpo"/>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//field[@name='vat']" position="attributes">
|
||||
<attribute name="string">ИНН</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='company_registry']" position="attributes">
|
||||
<attribute name="string">ОГРН</attribute>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//notebook" position="inside">
|
||||
<page string="Подписи и печати">
|
||||
<group string="Ответственные">
|
||||
<field name="chief_id"/>
|
||||
<field name="accountant_id"/>
|
||||
</group>
|
||||
<group string="Настройки печати">
|
||||
<field name="print_facsimile"/>
|
||||
<field name="print_stamp"/>
|
||||
<field name="print_anywhere"/>
|
||||
<field name="stamp" widget="image" class="oe_avatar codup_stamp" invisible="print_stamp==False"/>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
36
l10n_ru_doc/views/res_partner_view.xml
Normal file
36
l10n_ru_doc/views/res_partner_view.xml
Normal file
@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_partner_ru_form" model="ir.ui.view">
|
||||
<field name="name">res.partner.ru.form</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='website']" position="before">
|
||||
<field name="inn" string="ИНН" invisible="True"/> <!-- reason: need-->
|
||||
<field name="kpp" string="КПП" invisible="is_company==False"/>
|
||||
<field name="okpo" string="ОКПО" invisible="is_company==False"/>
|
||||
<field name="ogrn" string="ОГРН" invisible="is_company==False"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='vat']" position="attributes">
|
||||
<attribute name="string">ИНН</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='internal_notes']" position="inside">
|
||||
<group>
|
||||
<field name="facsimile" invisible="is_company==True" widget="image" class="oe_avatar codup_sign"/>
|
||||
</group>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='contact_addresses']/field[@name='child_ids']/form/sheet/group" position="after">
|
||||
<group>
|
||||
<field name="facsimile" invisible="type not in ['director','accountant','contact']" widget="image" class="oe_avatar codup_sign"/>
|
||||
</group>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='contact_addresses']/field[@name='child_ids']/form/sheet//field[@name='function']" position="replace">
|
||||
<field name="function" placeholder="e.g. Sales Director" invisible="type not in ['director','accountant','contact']"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
33
l10n_ru_doc/views/res_users_view.xml
Normal file
33
l10n_ru_doc/views/res_users_view.xml
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_users_facsimile_form" model="ir.ui.view">
|
||||
<field name="name">res.users.signature.form</field>
|
||||
<field name="model">res.users</field>
|
||||
<field name="inherit_id" ref="base.view_users_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='signature']" position="after">
|
||||
|
||||
<field name="facsimile" widget="image" colspan="2" class="oe_avatar codup_sign"/>
|
||||
<field name="print_facsimile"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_users_simple_form" model="ir.ui.view">
|
||||
<field name="name">res.users.simple.form</field>
|
||||
<field name="model">res.users</field>
|
||||
<field name="inherit_id" ref="base.view_users_simple_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//form/sheet" position="inside">
|
||||
<group name="facsimile_group">
|
||||
<field name="facsimile" widget="image" colspan="2" class="oe_avatar codup_sign"/>
|
||||
<field name="print_facsimile"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
17
l10n_ru_doc/views/tax.xml
Normal file
17
l10n_ru_doc/views/tax.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="view_taxiher_form" model="ir.ui.view">
|
||||
<field name="name">view_taxiher_form</field>
|
||||
<field name="model">account.tax</field>
|
||||
<field name="inherit_id" ref="account.view_tax_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='active']" position="after">
|
||||
<field name="invisiblePF" widget="boolean_toggle"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
16
l10n_ru_doc/views/uom.xml
Normal file
16
l10n_ru_doc/views/uom.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="view_uomiher_form" model="ir.ui.view">
|
||||
<field name="name">view_uomiher_form</field>
|
||||
<field name="model">uom.uom</field>
|
||||
<field name="inherit_id" ref="uom.product_uom_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='name']" position="after">
|
||||
<field name="kod"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user