Skip to content

Commit

Permalink
Merge cf689f5 into 3a62c70
Browse files Browse the repository at this point in the history
  • Loading branch information
robyf70 committed Dec 19, 2019
2 parents 3a62c70 + cf689f5 commit 31329b8
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 40 deletions.
1 change: 1 addition & 0 deletions l10n_it_fatturapa_out/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
'wizard/wizard_export_fatturapa_view.xml',
'views/attachment_view.xml',
'views/account_view.xml',
'views/partner_view.xml',
'security/ir.model.access.csv',
'security/rules.xml',
],
Expand Down
1 change: 1 addition & 0 deletions l10n_it_fatturapa_out/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@

from . import attachment
from . import account
from . import partner
22 changes: 22 additions & 0 deletions l10n_it_fatturapa_out/models/partner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Copyright 2019 Roberto Fichera <roberto.fichera@levelprime.com>
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).

from odoo import fields, models, api, _
from odoo.exceptions import ValidationError


class ResPartner(models.Model):
_inherit = "res.partner"

max_invoice_in_xml = fields.Integer(
string='Max Num. Invoice in XML',
default=0,
help="Maximum number of invoices to group in a single XML file. "
"Default=0 unlimited")

@api.constrains('max_invoice_in_xml')
def _validate_max_invoice_in_xml(self):
if self.max_invoice_in_xml < 0:
raise ValidationError(
_("The max number of invoice to group can't be negative"))
15 changes: 15 additions & 0 deletions l10n_it_fatturapa_out/views/partner_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>

<record model="ir.ui.view" id="view_partner_form_fatturapa">
<field name="name">partner.form.fatturapa</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="l10n_it_fatturapa.view_partner_form_fatturapa"/>
<field name="arch" type="xml">
<field name="ipa_code" position="before">
<field name="max_invoice_in_xml"/>
</field>
</field>
</record>

</odoo>
97 changes: 57 additions & 40 deletions l10n_it_fatturapa_out/wizard/wizard_export_fatturapa.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import os
import string
import random
import itertools

from odoo import api, fields, models
from odoo.tools.translate import _
Expand Down Expand Up @@ -841,60 +842,76 @@ def getPartnerId(self, invoice_ids):
return partner

def group_invoices_by_partner(self):
def split_list(my_list, size):
it = iter(my_list)
item = list(itertools.islice(it, size))
while item:
yield item
item = list(itertools.islice(it, size))

invoice_ids = self.env.context.get('active_ids', False)
res = {}
for invoice in self.env['account.invoice'].browse(invoice_ids):
if invoice.partner_id.id not in res:
res[invoice.partner_id.id] = []
res[invoice.partner_id.id].append(invoice.id)

partner_obj = self.env['res.partner']
for partner in res.keys():
partner_id = partner_obj.browse(partner)
if partner_id.max_invoice_in_xml:
res[partner] = list(
split_list(res[partner], partner_id.max_invoice_in_xml))
else:
res[partner] = [res[partner]]
return res

def exportFatturaPA(self):
invoice_obj = self.env['account.invoice']
invoices_by_partner = self.group_invoices_by_partner()
attachments = self.env['fatturapa.attachment.out']
for partner_id in invoices_by_partner:
invoice_ids = invoices_by_partner[partner_id]
partner = self.getPartnerId(invoice_ids)
if partner.is_pa:
fatturapa = FatturaElettronica(versione='FPA12')
else:
fatturapa = FatturaElettronica(versione='FPR12')

company = self.env.user.company_id
context_partner = self.env.context.copy()
context_partner.update({'lang': partner.lang})
try:
self.with_context(context_partner).setFatturaElettronicaHeader(
company, partner, fatturapa)
for invoice_ids in invoices_by_partner[partner_id]:
partner = self.getPartnerId(invoice_ids)
if partner.is_pa:
fatturapa = FatturaElettronica(versione='FPA12')
else:
fatturapa = FatturaElettronica(versione='FPR12')

company = self.env.user.company_id
context_partner = self.env.context.copy()
context_partner.update({'lang': partner.lang})
try:
self.with_context(context_partner).\
setFatturaElettronicaHeader(company, partner, fatturapa)
for invoice_id in invoice_ids:
inv = invoice_obj.with_context(context_partner).browse(
invoice_id)
if inv.fatturapa_attachment_out_id:
raise UserError(
_("Invoice %s has e-invoice export file yet.")
% (inv.number))
if self.report_print_menu:
self.generate_attach_report(inv)
invoice_body = FatturaElettronicaBodyType()
inv.preventive_checks()
self.with_context(
context_partner
).setFatturaElettronicaBody(
inv, invoice_body)
fatturapa.FatturaElettronicaBody.append(invoice_body)
# TODO DatiVeicoli

number = self.setProgressivoInvio(fatturapa)
except (SimpleFacetValueError, SimpleTypeValueError) as e:
raise UserError(unicode(e))

attach = self.saveAttachment(fatturapa, number)
attachments |= attach

for invoice_id in invoice_ids:
inv = invoice_obj.with_context(context_partner).browse(
invoice_id)
if inv.fatturapa_attachment_out_id:
raise UserError(
_("Invoice %s has e-invoice export file yet.") % (
inv.number))
if self.report_print_menu:
self.generate_attach_report(inv)
invoice_body = FatturaElettronicaBodyType()
inv.preventive_checks()
self.with_context(
context_partner
).setFatturaElettronicaBody(
inv, invoice_body)
fatturapa.FatturaElettronicaBody.append(invoice_body)
# TODO DatiVeicoli

number = self.setProgressivoInvio(fatturapa)
except (SimpleFacetValueError, SimpleTypeValueError) as e:
raise UserError(unicode(e))

attach = self.saveAttachment(fatturapa, number)
attachments |= attach

for invoice_id in invoice_ids:
inv = invoice_obj.browse(invoice_id)
inv.write({'fatturapa_attachment_out_id': attach.id})
inv = invoice_obj.browse(invoice_id)
inv.write({'fatturapa_attachment_out_id': attach.id})

action = {
'view_type': 'form',
Expand Down

0 comments on commit 31329b8

Please sign in to comment.