Skip to content

Commit

Permalink
[IMP] l10n_it_fatturapa_sale: black, isort, prettier
Browse files Browse the repository at this point in the history
  • Loading branch information
TheMule71 committed Apr 2, 2021
1 parent 6d16845 commit b22e569
Show file tree
Hide file tree
Showing 12 changed files with 167 additions and 123 deletions.
8 changes: 3 additions & 5 deletions l10n_it_fatturapa_sale/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@
{
"name": "ITA - Fattura elettronica - Integrazione vendite",
"summary": "Aggiunge alcuni dati per la "
"fatturazione elettronica nell'ordine di vendita",
"fatturazione elettronica nell'ordine di vendita",
"version": "12.0.1.1.1",
"website": "https://github.com/OCA/l10n-italy/tree/"
"12.0/l10n_it_fatturapa_sale",
"author": "Agile Business Group, "
"Odoo Community Association (OCA)",
"website": "https://github.com/OCA/l10n-italy" "12.0/l10n_it_fatturapa_sale",
"author": "Agile Business Group, " "Odoo Community Association (OCA)",
"license": "AGPL-3",
"category": "Hidden",
"auto_install": True,
Expand Down
6 changes: 3 additions & 3 deletions l10n_it_fatturapa_sale/models/account_invoice.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
from odoo import api, models


class AccountInvoice (models.Model):
_inherit = 'account.invoice'
class AccountInvoice(models.Model):
_inherit = "account.invoice"

@api.multi
def unlink(self):
related_documents = self.mapped('related_documents')
related_documents = self.mapped("related_documents")
res = super().unlink()
related_documents.check_unlink().unlink()
return res
6 changes: 3 additions & 3 deletions l10n_it_fatturapa_sale/models/account_invoice_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
from odoo import api, models


class AccountInvoiceLine (models.Model):
_inherit = 'account.invoice.line'
class AccountInvoiceLine(models.Model):
_inherit = "account.invoice.line"

@api.multi
def unlink(self):
related_documents = self.mapped('related_documents')
related_documents = self.mapped("related_documents")
res = super().unlink()
related_documents.check_unlink().unlink()
return res
18 changes: 9 additions & 9 deletions l10n_it_fatturapa_sale/models/related_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,22 @@


class FatturapaRelatedDocumentType(models.Model):
_inherit = 'fatturapa.related_document_type'
_inherit = "fatturapa.related_document_type"

invoice_line_id = fields.Many2one(
ondelete='set null',
ondelete="set null",
)
invoice_id = fields.Many2one(
ondelete='set null',
ondelete="set null",
)
sale_order_id = fields.Many2one(
comodel_name='sale.order',
comodel_name="sale.order",
string="Sale order",
index=True,
readonly=True,
)
sale_order_line_id = fields.Many2one(
comodel_name='sale.order.line',
comodel_name="sale.order.line",
string="Sale order line",
index=True,
readonly=True,
Expand All @@ -36,10 +36,10 @@ def check_unlink(self):
"""
to_delete = self.env[self._name].browse()
check_fields = [
'invoice_line_id',
'invoice_id',
'sale_order_id',
'sale_order_line_id',
"invoice_line_id",
"invoice_id",
"sale_order_id",
"sale_order_line_id",
]
for related_document in self:
for check_field in check_fields:
Expand Down
28 changes: 15 additions & 13 deletions l10n_it_fatturapa_sale/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
from odoo import api, fields, models


class SaleOrder (models.Model):
_inherit = 'sale.order'
class SaleOrder(models.Model):
_inherit = "sale.order"

related_documents = fields.One2many(
comodel_name='fatturapa.related_document_type',
inverse_name='sale_order_id',
string='Related Documents',
comodel_name="fatturapa.related_document_type",
inverse_name="sale_order_id",
string="Related Documents",
copy=False,
groups="account.group_account_user",
)
Expand All @@ -21,19 +21,21 @@ def _finalize_invoices(self, invoices, references):
# To each invoice, link the documents of the related order
# only if the order is in `self`
for invoice in invoices.values():
orders = invoice.invoice_line_ids.mapped('sale_line_ids.order_id')
orders = invoice.invoice_line_ids.mapped("sale_line_ids.order_id")
orders = orders.filtered(lambda o: o in self)
sale_documents = orders.mapped('related_documents')
invoice.update({
'related_documents': [
(4, sale_document_id)
for sale_document_id in sale_documents.ids],
})
sale_documents = orders.mapped("related_documents")
invoice.update(
{
"related_documents": [
(4, sale_document_id) for sale_document_id in sale_documents.ids
],
}
)
return res

@api.multi
def unlink(self):
related_documents = self.mapped('related_documents')
related_documents = self.mapped("related_documents")
res = super().unlink()
related_documents.check_unlink().unlink()
return res
48 changes: 28 additions & 20 deletions l10n_it_fatturapa_sale/models/sale_order_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@


class SaleOrderLine(models.Model):
_inherit = 'sale.order.line'
_inherit = "sale.order.line"

related_documents = fields.One2many(
comodel_name='fatturapa.related_document_type',
inverse_name='sale_order_line_id',
string='Related Documents',
comodel_name="fatturapa.related_document_type",
inverse_name="sale_order_line_id",
string="Related Documents",
copy=False,
groups="account.group_account_user",
)
Expand All @@ -27,30 +27,38 @@ def _prepare_invoice_line(self, qty):
invoice_line_vals = super()._prepare_invoice_line(qty)
sale_line_documents = self.related_documents
if sale_line_documents:
invoice_line_documents = invoice_line_vals.get(
'related_documents', list())
invoice_line_documents = invoice_line_vals.get("related_documents", list())
invoice_line_documents.extend(
(4, line_document_id)
for line_document_id in sale_line_documents.ids)
invoice_line_vals.update({
'related_documents': invoice_line_documents,
})
(4, line_document_id) for line_document_id in sale_line_documents.ids
)
invoice_line_vals.update(
{
"related_documents": invoice_line_documents,
}
)

sale_line_admin_ref = self.admin_ref
if sale_line_admin_ref:
invoice_line_admin_ref = invoice_line_vals.get('admin_ref')
invoice_line_admin_ref = ', '.join(filter(None, [
invoice_line_admin_ref,
sale_line_admin_ref,
]))
invoice_line_vals.update({
'admin_ref': invoice_line_admin_ref,
})
invoice_line_admin_ref = invoice_line_vals.get("admin_ref")
invoice_line_admin_ref = ", ".join(
filter(
None,
[
invoice_line_admin_ref,
sale_line_admin_ref,
],
)
)
invoice_line_vals.update(
{
"admin_ref": invoice_line_admin_ref,
}
)
return invoice_line_vals

@api.multi
def unlink(self):
related_documents = self.mapped('related_documents')
related_documents = self.mapped("related_documents")
res = super().unlink()
related_documents.check_unlink().unlink()
return res
105 changes: 58 additions & 47 deletions l10n_it_fatturapa_sale/tests/test_fatturapa_sale.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,49 @@


class TestFatturapaSale(TransactionCase):

def setUp(self):
super().setUp()
self.partner_id = self.env['res.partner'] \
.name_create("Test partner")[0]
self.product_id = self.env['product.product'] \
.name_create("Test product")[0]
self.partner_id = self.env["res.partner"].name_create("Test partner")[0]
self.product_id = self.env["product.product"].name_create("Test product")[0]

def _create_order(self):
sale_order = self.env['sale.order'].create([{
'partner_id': self.partner_id,
'related_documents': [(0, 0, {
'type': 'order',
'name': 'order1',
})],
}])
order_line = self.env['sale.order.line'].create([{
'order_id': sale_order.id,
'product_id': self.product_id,
'product_uom_qty': 1,
'admin_ref': 'line admin ref',
'related_documents': [(0, 0, {
'type': 'order',
'name': 'line1',
})],
}])
sale_order = self.env["sale.order"].create(
[
{
"partner_id": self.partner_id,
"related_documents": [
(
0,
0,
{
"type": "order",
"name": "order1",
},
)
],
}
]
)
order_line = self.env["sale.order.line"].create(
[
{
"order_id": sale_order.id,
"product_id": self.product_id,
"product_uom_qty": 1,
"admin_ref": "line admin ref",
"related_documents": [
(
0,
0,
{
"type": "order",
"name": "line1",
},
)
],
}
]
)
sale_order.action_confirm()
return order_line, sale_order

Expand All @@ -44,25 +61,20 @@ def test_create_invoice(self):

# Check the invoice
invoice_ids = sale_order.action_invoice_create()
self.assertEqual(len(invoice_ids), 1,
"Multiple invoices for sale order")
invoice = self.env['account.invoice'].browse(invoice_ids)
self.assertEqual(
invoice.related_documents,
sale_order.related_documents)
self.assertEqual(len(invoice_ids), 1, "Multiple invoices for sale order")
invoice = self.env["account.invoice"].browse(invoice_ids)
self.assertEqual(invoice.related_documents, sale_order.related_documents)

# Check the invoice line
invoice_line = invoice.invoice_line_ids.filtered(
lambda l: order_line in l.sale_line_ids)
self.assertEqual(len(invoice_line), 1,
"Multiple invoice lines for sale order line")

lambda l: order_line in l.sale_line_ids
)
self.assertEqual(
invoice_line.related_documents,
order_line.related_documents)
self.assertEqual(
invoice_line.admin_ref,
order_line.admin_ref)
len(invoice_line), 1, "Multiple invoice lines for sale order line"
)

self.assertEqual(invoice_line.related_documents, order_line.related_documents)
self.assertEqual(invoice_line.admin_ref, order_line.admin_ref)

def test_create_invoice_multiple(self):
"""
Expand All @@ -78,17 +90,17 @@ def test_create_invoice_multiple(self):

# Check the invoice
invoice_ids = sale_orders.action_invoice_create()
self.assertEqual(len(invoice_ids), 1,
"Multiple invoices for sale order")
invoice = self.env['account.invoice'].browse(invoice_ids)
self.assertEqual(len(invoice_ids), 1, "Multiple invoices for sale order")
invoice = self.env["account.invoice"].browse(invoice_ids)
self.assertEqual(
invoice.related_documents,
sale_orders.mapped('related_documents'))
invoice.related_documents, sale_orders.mapped("related_documents")
)

# Check the invoice lines
self.assertEqual(
invoice.invoice_line_ids.mapped('related_documents'),
sale_orders_lines.mapped('related_documents'))
invoice.invoice_line_ids.mapped("related_documents"),
sale_orders_lines.mapped("related_documents"),
)

def test_keep_document(self):
"""
Expand All @@ -99,9 +111,8 @@ def test_keep_document(self):
order_line, sale_order = self._create_order()

invoice_ids = sale_order.action_invoice_create()
self.assertEqual(len(invoice_ids), 1,
"Multiple invoices for sale order")
invoice = self.env['account.invoice'].browse(invoice_ids)
self.assertEqual(len(invoice_ids), 1, "Multiple invoices for sale order")
invoice = self.env["account.invoice"].browse(invoice_ids)
related_documents = invoice.related_documents

# Delete the invoice: the related document persists
Expand Down
16 changes: 10 additions & 6 deletions l10n_it_fatturapa_sale/views/related_document_type_views.xml
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2020 Simone Rubino - Agile Business Group
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->

<odoo>
<record id="fatturapa_related_document_type_view_form" model="ir.ui.view">
<field name="name">Add sale fields to fatturapa.related_document_type form view</field>
<field
name="name"
>Add sale fields to fatturapa.related_document_type form view</field>
<field name="model">fatturapa.related_document_type</field>
<field name="inherit_id" ref="l10n_it_fatturapa.fatturapa_related_document_type_view_form"/>
<field
name="inherit_id"
ref="l10n_it_fatturapa.fatturapa_related_document_type_view_form"
/>
<field name="arch" type="xml">
<xpath expr="//sheet/group/group[2]" position="inside">
<field name="sale_order_id"/>
<field name="sale_order_line_id"/>
<field name="sale_order_id" />
<field name="sale_order_line_id" />
</xpath>
</field>
</record>
Expand Down
Loading

0 comments on commit b22e569

Please sign in to comment.