[IMP] : black, isort, prettier

pull/2505/head
Kitti U 2020-08-24 17:57:03 +07:00 committed by Aungkokolin1997
parent 7521e19465
commit 0cb075863b
18 changed files with 286 additions and 287 deletions

View File

@ -1,28 +1,29 @@
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
{'name': 'Excel Import/Export/Report Demo',
'version': '12.0.1.0.0',
'author': 'Ecosoft,Odoo Community Association (OCA)',
'license': 'AGPL-3',
'website': 'https://github.com/OCA/server-tools/',
'category': 'Tools',
'depends': ['excel_import_export',
'sale_management'],
'data': ['import_export_sale_order/actions.xml',
'import_export_sale_order/templates.xml',
'report_sale_order/report_sale_order.xml',
'report_sale_order/templates.xml',
'import_sale_orders/menu_action.xml',
'import_sale_orders/templates.xml',
# Use report action
'report_action/sale_order/report.xml',
'report_action/sale_order/templates.xml',
'report_action/partner_list/report.xml',
'report_action/partner_list/templates.xml',
'report_action/partner_list/report_partner_list.xml',
],
'installable': True,
'development_status': 'alpha',
'maintainers': ['kittiu'],
}
{
"name": "Excel Import/Export/Report Demo",
"version": "12.0.1.0.0",
"author": "Ecosoft,Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/server-tools/",
"category": "Tools",
"depends": ["excel_import_export", "sale_management"],
"data": [
"import_export_sale_order/actions.xml",
"import_export_sale_order/templates.xml",
"report_sale_order/report_sale_order.xml",
"report_sale_order/templates.xml",
"import_sale_orders/menu_action.xml",
"import_sale_orders/templates.xml",
# Use report action
"report_action/sale_order/report.xml",
"report_action/sale_order/templates.xml",
"report_action/partner_list/report.xml",
"report_action/partner_list/templates.xml",
"report_action/partner_list/report_partner_list.xml",
],
"installable": True,
"development_status": "alpha",
"maintainers": ["kittiu"],
}

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2019 Ecosoft Co., Ltd.
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).-->
<odoo>
<act_window id="action_sale_oder_export_xlsx"
<act_window
id="action_sale_oder_export_xlsx"
name="Export Excel"
res_model="export.xlsx.wizard"
src_model="sale.order"
@ -14,8 +14,10 @@
'template_domain': [('res_model', '=', 'sale.order'),
('fname', '=', 'sale_order.xlsx'),
('gname', '=', False)],
}"/>
<act_window id="action_sale_oder_import_xlsx"
}"
/>
<act_window
id="action_sale_oder_import_xlsx"
name="Import Excel"
res_model="import.xlsx.wizard"
src_model="sale.order"
@ -27,6 +29,6 @@
('gname', '=', False)],
'template_context': {},
'template_import_states': [],
}"/>
}"
/>
</odoo>

View File

@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2019 Ecosoft Co., Ltd.
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).-->
<odoo>
<record id="sale_order_xlsx_template" model="xlsx.template">
<field name="res_model">sale.order</field>
<field name="fname">sale_order.xlsx</field>
@ -44,9 +43,7 @@
}
</field>
</record>
<function model="xlsx.template" name="load_xlsx_template">
<value eval="[ref('sale_order_xlsx_template')]"/>
<value eval="[ref('sale_order_xlsx_template')]" />
</function>
</odoo>

View File

@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2019 Ecosoft Co., Ltd.
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).-->
<odoo>
<record id="action_import_sale_order" model="ir.actions.act_window">
<field name="name">Sample Import Sale Order</field>
<field name="res_model">import.xlsx.wizard</field>
@ -16,10 +15,10 @@
('gname', '=', False)], }
</field>
</record>
<menuitem id="menu_import_sale_order"
<menuitem
id="menu_import_sale_order"
parent="excel_import_export.menu_excel_import_export"
action="action_import_sale_order"
sequence="30"/>
sequence="30"
/>
</odoo>

View File

@ -1,15 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2019 Ecosoft Co., Ltd.
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).-->
<odoo>
<record id="import_sale_order_xlsx_template" model="xlsx.template">
<field name="res_model">sale.order</field>
<field name="fname">import_sale_order.xlsx</field>
<field name="name">Import Sale Order Template</field>
<field name="description">Sample Import Sales Order Tempalte for testing</field>
<field name="redirect_action" ref="sale.action_orders"/>
<field name="redirect_action" ref="sale.action_orders" />
<field name="input_instruction">
{
'__IMPORT__': {
@ -30,9 +29,7 @@
}
</field>
</record>
<function model="xlsx.template" name="load_xlsx_template">
<value eval="[ref('import_sale_order_xlsx_template')]"/>
<value eval="[ref('import_sale_order_xlsx_template')]" />
</function>
</odoo>

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<report id='action_report_partner_excel'
string='Partner List (.xlsx)'
model='report.partner.list'
name='partner_list.xlsx'
file='partner_list'
report_type='excel'
<report
id='action_report_partner_excel'
string='Partner List (.xlsx)'
model='report.partner.list'
name='partner_list.xlsx'
file='partner_list'
report_type='excel'
/>
</odoo>

View File

@ -1,27 +1,21 @@
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
from odoo import models, fields, api
from odoo import api, fields, models
class ReportPartnerList(models.TransientModel):
_name = 'report.partner.list'
_description = 'Wizard for report.partner.list'
_name = "report.partner.list"
_description = "Wizard for report.partner.list"
partner_ids = fields.Many2many(
comodel_name='res.partner',
)
supplier = fields.Boolean(
default=True,
)
customer = fields.Boolean(
default=True,
)
partner_ids = fields.Many2many(comodel_name="res.partner",)
supplier = fields.Boolean(default=True,)
customer = fields.Boolean(default=True,)
results = fields.Many2many(
'res.partner',
string='Results',
compute='_compute_results',
help='Use compute fields, so there is nothing store in database',
"res.partner",
string="Results",
compute="_compute_results",
help="Use compute fields, so there is nothing store in database",
)
@api.multi
@ -30,8 +24,11 @@ class ReportPartnerList(models.TransientModel):
before export to excel by report_excel action
"""
self.ensure_one()
domain = ['|', ('supplier', '=', self.supplier),
('customer', '=', self.customer)]
domain = [
"|",
("supplier", "=", self.supplier),
("customer", "=", self.customer),
]
if self.partner_ids:
domain.append(('id', 'in', self.partner_ids.ids))
self.results = self.env['res.partner'].search(domain, order='id')
domain.append(("id", "in", self.partner_ids.ids))
self.results = self.env["res.partner"].search(domain, order="id")

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="partner_list_wizard" model="ir.ui.view">
<field name="name">partner.list.wizard</field>
<field name="model">report.partner.list</field>
@ -8,24 +7,25 @@
<form>
<group>
<group>
<field name="partner_ids" widget="many2many_tags"/>
<field name="partner_ids" widget="many2many_tags" />
</group>
<group>
<field name="customer"/>
<field name="supplier"/>
<field name="customer" />
<field name="supplier" />
</group>
</group>
<footer>
<button name='%(excel_import_export_demo.action_report_partner_excel)d'
type='action' string='Execute'
class='oe_highlight'/>
<button special='cancel'
string='Cancel'/>
<button
name='%(excel_import_export_demo.action_report_partner_excel)d'
type='action'
string='Execute'
class='oe_highlight'
/>
<button special='cancel' string='Cancel' />
</footer>
</form>
</field>
</record>
<record id='action_report_partner_list' model='ir.actions.act_window'>
<field name='name'>Partner List Report</field>
<field name='res_model'>report.partner.list</field>
@ -33,11 +33,10 @@
<field name='view_mode'>form</field>
<field name='target'>new</field>
</record>
<menuitem id="menu_report_partner_list"
<menuitem
id="menu_report_partner_list"
parent="sale.menu_sale_report"
action="action_report_partner_list"
name="Partner List Report"
/>
</odoo>

View File

@ -1,11 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="partner_list_xlsx_template" model="xlsx.template">
<field name="res_model">report.partner.list</field>
<field name="fname">partner_list.xlsx</field>
<field name="name">Partner List Report Template</field>
<field name="description">Sample Partner List Report Template for testing</field>
<field
name="description"
>Sample Partner List Report Template for testing</field>
<field name="input_instruction">
{
'__EXPORT__': {
@ -21,9 +22,7 @@
}
</field>
</record>
<function model="xlsx.template" name="load_xlsx_template">
<value eval="[ref('partner_list_xlsx_template')]"/>
<value eval="[ref('partner_list_xlsx_template')]" />
</function>
</odoo>

View File

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<report id='action_report_saleorder_excel'
string='Quotation / Order (.xlsx)'
model='sale.order'
name='sale_order_form.xlsx'
file='sale_order'
print_report_name="(object.state in ('draft', 'sent') and 'Quotation - %s' % (object.name)) or 'Order - %s' % (object.name)"
report_type='excel'
<report
id='action_report_saleorder_excel'
string='Quotation / Order (.xlsx)'
model='sale.order'
name='sale_order_form.xlsx'
file='sale_order'
print_report_name="(object.state in ('draft', 'sent') and 'Quotation - %s' % (object.name)) or 'Order - %s' % (object.name)"
report_type='excel'
/>
</odoo>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="sale_order_excel_template" model="xlsx.template">
<field name="res_model">sale.order</field>
<field name="fname">sale_order_form.xlsx</field>
@ -28,9 +27,7 @@
}
</field>
</record>
<function model="xlsx.template" name="load_xlsx_template">
<value eval="[ref('sale_order_excel_template')]"/>
<value eval="[ref('sale_order_excel_template')]" />
</function>
</odoo>

View File

@ -1,25 +1,22 @@
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
from openerp import models, fields, api
from openerp import api, fields, models
class ReportSaleOrder(models.TransientModel):
_name = 'report.sale.order'
_description = 'Wizard for report.sale.order'
_inherit = 'xlsx.report'
_name = "report.sale.order"
_description = "Wizard for report.sale.order"
_inherit = "xlsx.report"
# Search Criteria
partner_id = fields.Many2one(
'res.partner',
string='Partner',
)
partner_id = fields.Many2one("res.partner", string="Partner",)
# Report Result, sale.order
results = fields.Many2many(
'sale.order',
string='Results',
compute='_compute_results',
help='Use compute fields, so there is nothing stored in database',
"sale.order",
string="Results",
compute="_compute_results",
help="Use compute fields, so there is nothing stored in database",
)
@api.multi
@ -28,8 +25,8 @@ class ReportSaleOrder(models.TransientModel):
before export to excel, by using xlsx.export
"""
self.ensure_one()
Result = self.env['sale.order']
Result = self.env["sale.order"]
domain = []
if self.partner_id:
domain += [('partner_id', '=', self.partner_id.id)]
domain += [("partner_id", "=", self.partner_id.id)]
self.results = Result.search(domain)

View File

@ -1,25 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2019 Ecosoft Co., Ltd.
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).-->
<odoo>
<record id="report_sale_order" model="ir.ui.view">
<field name="name">report.sale.order</field>
<field name="model">report.sale.order</field>
<field name="inherit_id" ref="excel_import_export.xlsx_report_view"/>
<field name="inherit_id" ref="excel_import_export.xlsx_report_view" />
<field name="mode">primary</field>
<field name="arch" type="xml">
<xpath expr="//group[@name='criteria']" position="inside">
<group>
<field name="partner_id"/>
<field name="partner_id" />
</group>
<group>
</group>
</xpath>
</field>
</record>
<record id="action_report_sale_order" model="ir.actions.act_window">
<field name="name">Sample Sales Report</field>
<field name="res_model">report.sale.order</field>
@ -32,10 +30,10 @@
('gname', '=', False)]}
</field>
</record>
<menuitem id="menu_report_sale_order"
<menuitem
id="menu_report_sale_order"
parent="excel_import_export.menu_excel_import_export"
action="action_report_sale_order"
sequence="20"/>
sequence="20"
/>
</odoo>

View File

@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2019 Ecosoft Co., Ltd.
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).-->
<odoo>
<record id="report_sale_order_template" model="xlsx.template">
<field name="res_model">report.sale.order</field>
<field name="fname">report_sale_order.xlsx</field>
@ -28,9 +27,7 @@
}
</field>
</record>
<function model="xlsx.template" name="load_xlsx_template">
<value eval="[ref('report_sale_order_template')]"/>
<value eval="[ref('report_sale_order_template')]" />
</function>
</odoo>

View File

@ -4,56 +4,54 @@ from odoo.tests.common import SingleTransactionCase
class TestExcelImportExport(SingleTransactionCase):
@classmethod
def setUpClass(cls):
super(TestExcelImportExport, cls).setUpClass()
@classmethod
def setUpXLSXTemplate(cls):
cls.template_obj = cls.env['xlsx.template']
cls.template_obj = cls.env["xlsx.template"]
# Create xlsx.template using input_instruction
input_instruction = {
'__EXPORT__': {
'sale_order': {
'_HEAD_': {
'B2': 'partner_id.display_name${value or ""}'
'#{align=left;style=text}',
'B3': 'name${value or ""}#{align=left;style=text}',
"__EXPORT__": {
"sale_order": {
"_HEAD_": {
"B2": 'partner_id.display_name${value or ""}'
"#{align=left;style=text}",
"B3": 'name${value or ""}#{align=left;style=text}',
},
"order_line": {
"A6": 'product_id.display_name${value or ""}' "#{style=text}",
"B6": 'name${value or ""}#{style=text}',
"C6": "product_uom_qty${value or 0}#{style=number}",
"D6": 'product_uom.name${value or ""}#{style=text}',
"E6": "price_unit${value or 0}#{style=number}",
"F6": 'tax_id${value and ","'
'.join([x.display_name for x in value]) or ""}',
"G6": "price_subtotal${value or 0}#{style=number}",
},
'order_line': {
'A6': 'product_id.display_name${value or ""}'
'#{style=text}',
'B6': 'name${value or ""}#{style=text}',
'C6': 'product_uom_qty${value or 0}#{style=number}',
'D6': 'product_uom.name${value or ""}#{style=text}',
'E6': 'price_unit${value or 0}#{style=number}',
'F6': 'tax_id${value and ","'
'.join([x.display_name for x in value]) or ""}',
'G6': 'price_subtotal${value or 0}#{style=number}',
}
}
},
'__IMPORT__': {
'sale_order': {
'order_line': {
'A6': 'product_id',
'B6': 'name',
'C6': 'product_uom_qty',
'D6': 'product_uom',
'E6': 'price_unit',
'F6': 'tax_id',
"__IMPORT__": {
"sale_order": {
"order_line": {
"A6": "product_id",
"B6": "name",
"C6": "product_uom_qty",
"D6": "product_uom",
"E6": "price_unit",
"F6": "tax_id",
}
}
},
# '__POST_IMPORT__': '${object.post_import_do_something()}',
}
vals = {
'res_model': 'sale.order',
'fname': 'sale_order.xlsx',
'name': 'Sale Order Template',
'description': 'Sample Sales Order Tempalte for testing',
'input_instruction': str(input_instruction),
"res_model": "sale.order",
"fname": "sale_order.xlsx",
"name": "Sale Order Template",
"description": "Sample Sales Order Tempalte for testing",
"input_instruction": str(input_instruction),
}
cls.sample_template = cls.template_obj.create(vals)
@ -62,69 +60,77 @@ class TestExcelImportExport(SingleTransactionCase):
cls.setUpPrepSaleOrder()
# Create a Sales Order
product_line = {
'name': cls.product_order.name,
'product_id': cls.product_order.id,
'product_uom_qty': 2,
'product_uom': cls.product_order.uom_id.id,
'price_unit': cls.product_order.list_price,
'tax_id': False,
"name": cls.product_order.name,
"product_id": cls.product_order.id,
"product_uom_qty": 2,
"product_uom": cls.product_order.uom_id.id,
"price_unit": cls.product_order.list_price,
"tax_id": False,
}
cls.sale_order = cls.env['sale.order'].create({
'partner_id': cls.partner.id,
'order_line': [(0, 0, product_line), (0, 0, product_line)],
})
cls.sale_order = cls.env["sale.order"].create(
{
"partner_id": cls.partner.id,
"order_line": [(0, 0, product_line), (0, 0, product_line)],
}
)
@classmethod
def setUpManySaleOrder(cls):
cls.setUpPrepSaleOrder()
# Create a Sales Order
product_line = {
'name': cls.product_order.name,
'product_id': cls.product_order.id,
'product_uom_qty': 2,
'product_uom': cls.product_order.uom_id.id,
'price_unit': cls.product_order.list_price,
'tax_id': False,
"name": cls.product_order.name,
"product_id": cls.product_order.id,
"product_uom_qty": 2,
"product_uom": cls.product_order.uom_id.id,
"price_unit": cls.product_order.list_price,
"tax_id": False,
}
for i in range(10):
cls.env['sale.order'].create({
'partner_id': cls.partner.id,
'order_line': [(0, 0, product_line), (0, 0, product_line)],
})
cls.env["sale.order"].create(
{
"partner_id": cls.partner.id,
"order_line": [(0, 0, product_line), (0, 0, product_line)],
}
)
@classmethod
def setUpPrepSaleOrder(cls):
categ_ids = cls.env['res.partner.category'].search([]).ids
cls.partner = cls.env['res.partner'].create({
'name': 'Test Partner',
'category_id': [(6, 0, categ_ids)],
})
categ_ids = cls.env["res.partner.category"].search([]).ids
cls.partner = cls.env["res.partner"].create(
{"name": "Test Partner", "category_id": [(6, 0, categ_ids)],}
)
# Create a Product
user_type_income = \
cls.env.ref('account.data_account_type_direct_costs')
cls.account_income_product = cls.env['account.account'].create({
'code': 'INCOME_PROD111',
'name': 'Icome - Test Account',
'user_type_id': user_type_income.id,
})
user_type_income = cls.env.ref("account.data_account_type_direct_costs")
cls.account_income_product = cls.env["account.account"].create(
{
"code": "INCOME_PROD111",
"name": "Icome - Test Account",
"user_type_id": user_type_income.id,
}
)
# Create category
cls.product_category = cls.env['product.category'].create({
'name': 'Product Category with Income account',
'property_account_income_categ_id': cls.account_income_product.id
})
cls.product_category = cls.env["product.category"].create(
{
"name": "Product Category with Income account",
"property_account_income_categ_id": cls.account_income_product.id,
}
)
# Products
uom_unit = cls.env.ref('uom.product_uom_unit')
cls.product_order = cls.env['product.product'].create({
'name': "Test Product",
'standard_price': 235.0,
'list_price': 280.0,
'type': 'consu',
'uom_id': uom_unit.id,
'uom_po_id': uom_unit.id,
'invoice_policy': 'order',
'expense_policy': 'no',
'default_code': 'PROD_ORDER',
'service_type': 'manual',
'taxes_id': False,
'categ_id': cls.product_category.id,
})
uom_unit = cls.env.ref("uom.product_uom_unit")
cls.product_order = cls.env["product.product"].create(
{
"name": "Test Product",
"standard_price": 235.0,
"list_price": 280.0,
"type": "consu",
"uom_id": uom_unit.id,
"uom_po_id": uom_unit.id,
"invoice_policy": "order",
"expense_policy": "no",
"default_code": "PROD_ORDER",
"service_type": "manual",
"taxes_id": False,
"categ_id": cls.product_category.id,
}
)

View File

@ -1,11 +1,11 @@
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
from .test_common import TestExcelImportExport
from odoo.tests.common import Form
from .test_common import TestExcelImportExport
class TestXLSXImportExport(TestExcelImportExport):
@classmethod
def setUpClass(cls):
super(TestExcelImportExport, cls).setUpClass()
@ -15,38 +15,48 @@ class TestXLSXImportExport(TestExcelImportExport):
# Create Sales Order
self.setUpSaleOrder()
# ----------- EXPORT ---------------
ctx = {'active_model': 'sale.order',
'active_id': self.sale_order.id,
'template_domain': [('res_model', '=', 'sale.order'),
('fname', '=', 'sale_order.xlsx'),
('gname', '=', False)], }
f = Form(self.env['export.xlsx.wizard'].with_context(ctx))
ctx = {
"active_model": "sale.order",
"active_id": self.sale_order.id,
"template_domain": [
("res_model", "=", "sale.order"),
("fname", "=", "sale_order.xlsx"),
("gname", "=", False),
],
}
f = Form(self.env["export.xlsx.wizard"].with_context(ctx))
export_wizard = f.save()
# Test whether it loads correct template
self.assertEqual(export_wizard.template_id,
self.env.ref('excel_import_export_demo.'
'sale_order_xlsx_template'))
self.assertEqual(
export_wizard.template_id,
self.env.ref("excel_import_export_demo." "sale_order_xlsx_template"),
)
# Export excel
export_wizard.action_export()
self.assertTrue(export_wizard.data)
self.export_file = export_wizard.data
# ----------- IMPORT ---------------
ctx = {'active_model': 'sale.order',
'active_id': self.sale_order.id,
'template_domain': [('res_model', '=', 'sale.order'),
('fname', '=', 'sale_order.xlsx'),
('gname', '=', False)],
'template_context': {'state': 'draft'}, }
with Form(self.env['import.xlsx.wizard'].with_context(ctx)) as f:
ctx = {
"active_model": "sale.order",
"active_id": self.sale_order.id,
"template_domain": [
("res_model", "=", "sale.order"),
("fname", "=", "sale_order.xlsx"),
("gname", "=", False),
],
"template_context": {"state": "draft"},
}
with Form(self.env["import.xlsx.wizard"].with_context(ctx)) as f:
f.import_file = self.export_file
import_wizard = f.save()
# Test sample template
import_wizard.get_import_sample()
self.assertTrue(import_wizard.datas)
# Test whether it loads correct template
self.assertEqual(import_wizard.template_id,
self.env.ref('excel_import_export_demo.'
'sale_order_xlsx_template'))
self.assertEqual(
import_wizard.template_id,
self.env.ref("excel_import_export_demo." "sale_order_xlsx_template"),
)
# Import Excel
import_wizard.action_import()

View File

@ -1,11 +1,11 @@
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
from .test_common import TestExcelImportExport
from odoo.tests.common import Form
from .test_common import TestExcelImportExport
class TestXLSXReport(TestExcelImportExport):
@classmethod
def setUpClass(cls):
super(TestXLSXReport, cls).setUpClass()
@ -14,16 +14,21 @@ class TestXLSXReport(TestExcelImportExport):
""" Test Report from Sales Order """
# Create Many Sales Orders
self.setUpManySaleOrder()
ctx = {'template_domain': [('res_model', '=', 'report.sale.order'),
('fname', '=', 'report_sale_order.xlsx'),
('gname', '=', False)], }
with Form(self.env['report.sale.order'].with_context(ctx)) as f:
ctx = {
"template_domain": [
("res_model", "=", "report.sale.order"),
("fname", "=", "report_sale_order.xlsx"),
("gname", "=", False),
],
}
with Form(self.env["report.sale.order"].with_context(ctx)) as f:
f.partner_id = self.partner
report_wizard = f.save()
# Test whether it loads correct template
self.assertEqual(report_wizard.template_id,
self.env.ref('excel_import_export_demo.'
'report_sale_order_template'))
self.assertEqual(
report_wizard.template_id,
self.env.ref("excel_import_export_demo." "report_sale_order_template"),
)
# Report excel
report_wizard.report_xlsx()
self.assertTrue(report_wizard.data)

View File

@ -1,11 +1,11 @@
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
from ast import literal_eval
from .test_common import TestExcelImportExport
class TestXLSXTemplate(TestExcelImportExport):
@classmethod
def setUpClass(cls):
super(TestExcelImportExport, cls).setUpClass()
@ -17,46 +17,44 @@ class TestXLSXTemplate(TestExcelImportExport):
self.assertDictEqual(
instruction_dict,
{
'__EXPORT__': {
'sale_order': {
'_HEAD_': {
'B2': 'partner_id.display_name${value or ""}'
'#{align=left;style=text}#??',
'B3': 'name${value or ""}'
'#{align=left;style=text}#??'},
'order_line': {
'A6': 'product_id.display_name${value or ""}'
'#{style=text}#??',
'B6': 'name${value or ""}#{style=text}#??',
'C6': 'product_uom_qty${value or 0}'
'#{style=number}#??',
'D6': 'product_uom.name${value or ""}'
'#{style=text}#??',
'E6': 'price_unit${value or 0}#{style=number}#??',
'F6': 'tax_id${value and ",".join([x.display_name '
'for x in value]) or ""}#{}#??',
'G6': 'price_subtotal${value or 0}'
'#{style=number}#??'
"__EXPORT__": {
"sale_order": {
"_HEAD_": {
"B2": 'partner_id.display_name${value or ""}'
"#{align=left;style=text}#??",
"B3": 'name${value or ""}' "#{align=left;style=text}#??",
},
"order_line": {
"A6": 'product_id.display_name${value or ""}'
"#{style=text}#??",
"B6": 'name${value or ""}#{style=text}#??',
"C6": "product_uom_qty${value or 0}" "#{style=number}#??",
"D6": 'product_uom.name${value or ""}' "#{style=text}#??",
"E6": "price_unit${value or 0}#{style=number}#??",
"F6": 'tax_id${value and ",".join([x.display_name '
'for x in value]) or ""}#{}#??',
"G6": "price_subtotal${value or 0}" "#{style=number}#??",
},
}
},
"__IMPORT__": {
"sale_order": {
"order_line": {
"A6": "product_id",
"B6": "name",
"C6": "product_uom_qty",
"D6": "product_uom",
"E6": "price_unit",
"F6": "tax_id",
}
}
},
'__IMPORT__': {
'sale_order': {
'order_line': {
'A6': 'product_id',
'B6': 'name',
'C6': 'product_uom_qty',
'D6': 'product_uom',
'E6': 'price_unit',
'F6': 'tax_id',
}
}
},
'__POST_IMPORT__': False
}
"__POST_IMPORT__": False,
},
)
# Finally load excel file into this new template
self.assertFalse(self.sample_template.datas) # Not yet loaded
self.template_obj.load_xlsx_template([self.sample_template.id],
addon='excel_import_export_demo')
self.template_obj.load_xlsx_template(
[self.sample_template.id], addon="excel_import_export_demo"
)
self.assertTrue(self.sample_template.datas) # Loaded successfully