Example #1
0
    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_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(str(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})

        action = {
            'view_type': 'form',
            'name': "Export Electronic Invoice",
            'res_model': 'fatturapa.attachment.out',
            'type': 'ir.actions.act_window',
            }
        if len(attachments) == 1:
            action['view_mode'] = 'form'
            action['res_id'] = attachments[0].id
        else:
            action['view_mode'] = 'tree,form'
            action['domain'] = [('id', 'in', attachments.ids)]
        return action
    def exportFatturaPA(self):

        # self.setNameSpace()

        model_data_obj = self.env['ir.model.data']
        invoice_obj = self.env['account.invoice']
        invoice_ids = self.env.context.get('active_ids', False)
        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 FatturaPA 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)

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

        view_id = model_data_obj.xmlid_to_res_id(
            'l10n_it_fatturapa_out.view_fatturapa_out_attachment_form')

        return {
            'view_type': 'form',
            'name': "Export Electronic Invoice",
            'view_id': [view_id],
            'res_id': attach.id,
            'view_mode': 'form',
            'res_model': 'fatturapa.attachment.out',
            'type': 'ir.actions.act_window',
            }