Esempio n. 1
0
    def _setDatiAnagraficiCessionario(self, partner, fatturapa):
        fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
            DatiAnagrafici = DatiAnagraficiCessionarioType()
        if not partner.vat and not partner.fiscalcode:
            if (
                    partner.codice_destinatario == 'XXXXXXX'
                    and partner.country_id.code
                    and partner.country_id.code != 'IT'
            ):
                # SDI accepts missing VAT# for foreign customers by setting a
                # fake IdCodice and a valid IdPaese
                # Otherwise raise error if we have no VAT# and no Fiscal code
                fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
                    DatiAnagrafici.IdFiscaleIVA = IdFiscaleType(
                        IdPaese=partner.country_id.code,
                        IdCodice='99999999999')
            else:
                raise UserError(
                    _('VAT number and fiscal code are not set for %s.') %
                    partner.name)
        if partner.fiscalcode:
            fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
                DatiAnagrafici.CodiceFiscale = partner.fiscalcode
        if partner.vat:
            fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
                DatiAnagrafici.IdFiscaleIVA = IdFiscaleType(
                    IdPaese=partner.vat[0:2], IdCodice=partner.vat[2:])
        if partner.company_name:
            # This is valorized by e-commerce orders typically
            fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
                DatiAnagrafici.Anagrafica = AnagraficaType(
                    Denominazione=partner.company_name)
        elif partner.company_type == 'company':
            fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
                DatiAnagrafici.Anagrafica = AnagraficaType(
                    Denominazione=partner.name)
        elif partner.company_type == 'person':
            if not partner.lastname or not partner.firstname:
                raise UserError(
                    _("Partner %s must have name and surname.") %
                    partner.name)
            fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
                DatiAnagrafici.Anagrafica = AnagraficaType(
                    Cognome=partner.lastname,
                    Nome=partner.firstname
                )

        if partner.eori_code:
            fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
                DatiAnagrafici.Anagrafica.CodEORI = partner.eori_code

        return True
Esempio n. 2
0
 def _setTerzoIntermediarioOSoggettoEmittente(self, partner, fatturapa):
     fatturapa.FatturaElettronicaHeader.\
         TerzoIntermediarioOSoggettoEmittente = (
             TerzoIntermediarioSoggettoEmittenteType()
         )
     fatturapa.FatturaElettronicaHeader.\
         TerzoIntermediarioOSoggettoEmittente.\
         DatiAnagrafici = DatiAnagraficiTerzoIntermediarioType()
     if not partner.vat and not partner.fiscalcode:
         raise UserError(
             _('Partner VAT number and fiscal code are not set.'))
     if partner.fiscalcode:
         fatturapa.FatturaElettronicaHeader.\
             TerzoIntermediarioOSoggettoEmittente.\
             DatiAnagrafici.CodiceFiscale = partner.fiscalcode
     if partner.vat:
         fatturapa.FatturaElettronicaHeader.\
             TerzoIntermediarioOSoggettoEmittente.\
             DatiAnagrafici.IdFiscaleIVA = IdFiscaleType(
                 IdPaese=partner.vat[0:2], IdCodice=partner.vat[2:])
     fatturapa.FatturaElettronicaHeader.\
         TerzoIntermediarioOSoggettoEmittente.\
         DatiAnagrafici.Anagrafica = AnagraficaType(
             Denominazione=partner.name)
     if partner.eori_code:
         fatturapa.FatturaElettronicaHeader.\
             TerzoIntermediarioOSoggettoEmittente.\
             DatiAnagrafici.Anagrafica.CodEORI = partner.eori_code
     fatturapa.FatturaElettronicaHeader.SoggettoEmittente = 'TZ'
     return True
Esempio n. 3
0
 def _setDatiAnagraficiCedente(self, CedentePrestatore, company):
     res = super(WizardExportFatturapa,
                 self)._setDatiAnagraficiCedente(CedentePrestatore, company)
     if self.env.context.get("rc_supplier"):
         partner = self.env.context["rc_supplier"]
         CedentePrestatore.DatiAnagrafici.CodiceFiscale = None
         fiscal_document_type_codes = self.env.context.get(
             'invoices_fiscal_document_type_codes')
         # Se vale IT , il sistema verifica che il TipoDocumento sia diverso da
         # TD17, TD18 e TD19; in caso contrario il file viene scartato
         if partner.vat:
             if partner.vat[0:2] == 'IT' and any([
                     x in ['TD17', 'TD18', 'TD19']
                     for x in fiscal_document_type_codes
             ]):
                 raise UserError(
                     _("A self-invoice cannot be issued with IT country code and "
                       "fiscal document type in 'TD17', 'TD18', 'TD19'."))
             if partner.vat[0:2] not in self.env['res.country'].search([]).\
                     mapped('code'):
                 raise ValueError(
                     _("Country code does not exist or it is not mapped in countries: "
                       "%s" % partner.vat[0:2]))
             CedentePrestatore.DatiAnagrafici.IdFiscaleIVA = IdFiscaleType(
                 IdPaese=partner.vat[0:2], IdCodice=partner.vat[2:])
         elif partner.country_id.code and partner.country_id.code != 'IT':
             CedentePrestatore.DatiAnagrafici.IdFiscaleIVA = IdFiscaleType(
                 IdPaese=partner.country_id.code, IdCodice='99999999999')
         else:
             raise UserError(
                 _("Impossible to set IdFiscaleIVA for %s") %
                 partner.display_name)
         CedentePrestatore.DatiAnagrafici.Anagrafica = AnagraficaType(
             Denominazione=partner.name)
     return res
Esempio n. 4
0
 def setDatiDDT(self, invoice, body):
     res = super(WizardExportFatturapa, self).setDatiDDT(invoice, body)
     if self.include_ddt_data == 'dati_ddt':
         inv_lines_by_ddt = {}
         for line in invoice.invoice_line_ids:
             if (line.ddt_line_id
                     and line.ddt_line_id.package_preparation_id.ddt_number
                     and line.ddt_line_id.package_preparation_id.date):
                 key = (line.ddt_line_id.package_preparation_id.ddt_number,
                        line.ddt_line_id.package_preparation_id.date)
                 if key not in inv_lines_by_ddt:
                     inv_lines_by_ddt[key] = []
                 inv_lines_by_ddt[key].append(line.ftpa_line_number)
         for key in sorted(inv_lines_by_ddt.keys()):
             DatiDDT = DatiDDTType(NumeroDDT=key[0], DataDDT=key[1])
             for line_number in inv_lines_by_ddt[key]:
                 DatiDDT.RiferimentoNumeroLinea.append(line_number)
             body.DatiGenerali.DatiDDT.append(DatiDDT)
     elif self.include_ddt_data == 'dati_trasporto':
         body.DatiGenerali.DatiTrasporto = DatiTrasportoType(
             MezzoTrasporto=invoice.transportation_method_id.name or None,
             CausaleTrasporto=invoice.transportation_reason_id.name or None,
             NumeroColli=invoice.parcels or None,
             Descrizione=invoice.goods_description_id.name or None,
             PesoLordo='%.2f' % float_round(invoice.gross_weight, 2),
             PesoNetto='%.2f' % float_round(invoice.weight, 2),
             TipoResa=invoice.incoterms_id.code or None)
         if invoice.carrier_id:
             if not invoice.carrier_id.vat:
                 raise UserError(
                     _('TIN not set for %s.') % invoice.carrier_id.name)
             body.DatiGenerali.DatiTrasporto.DatiAnagraficiVettore = (
                 DatiAnagraficiVettoreType())
             if invoice.carrier_id.fiscalcode:
                 body.DatiGenerali.DatiTrasporto.DatiAnagraficiVettore.\
                     CodiceFiscale = invoice.carrier_id.fiscalcode
             body.DatiGenerali.DatiTrasporto.DatiAnagraficiVettore.\
                 IdFiscaleIVA = IdFiscaleType(
                     IdPaese=invoice.carrier_id.vat[0:2],
                     IdCodice=invoice.carrier_id.vat[2:]
                 )
             body.DatiGenerali.DatiTrasporto.DatiAnagraficiVettore.\
                 Anagrafica = AnagraficaType(
                     Denominazione=invoice.carrier_id.name)
     return res
 def _setDatiAnagraficiCedente(self, CedentePrestatore, company):
     res = super(WizardExportFatturapa,
                 self)._setDatiAnagraficiCedente(CedentePrestatore, company)
     if self.env.context.get("rc_supplier"):
         partner = self.env.context["rc_supplier"]
         CedentePrestatore.DatiAnagrafici.CodiceFiscale = None
         if partner.vat:
             CedentePrestatore.DatiAnagrafici.IdFiscaleIVA = IdFiscaleType(
                 IdPaese=partner.vat[0:2], IdCodice=partner.vat[2:])
         elif partner.country_id.code and partner.country_id.code != 'IT':
             CedentePrestatore.DatiAnagrafici.IdFiscaleIVA = IdFiscaleType(
                 IdPaese=partner.country_id.code, IdCodice='99999999999')
         else:
             raise UserError(
                 _("Impossible to set IdFiscaleIVA for %s") %
                 partner.display_name)
         CedentePrestatore.DatiAnagrafici.Anagrafica = AnagraficaType(
             Denominazione=partner.name)
     return res
Esempio n. 6
0
    def _setDatiAnagraficiCedente(self, CedentePrestatore, company):

        if not company.vat:
            raise UserError(_('TIN not set.'))
        CedentePrestatore.DatiAnagrafici = DatiAnagraficiCedenteType()
        fatturapa_fp = company.fatturapa_fiscal_position_id
        if not fatturapa_fp:
            raise UserError(
                _('Fiscal position for electronic invoice not set '
                  'for company %s. '
                  '(Go to Accounting / Configuration / Settings / '
                  'Electronic Invoice)' % company.name))
        CedentePrestatore.DatiAnagrafici.IdFiscaleIVA = IdFiscaleType(
            IdPaese=company.country_id.code, IdCodice=company.vat[2:])
        CedentePrestatore.DatiAnagrafici.Anagrafica = AnagraficaType(
            Denominazione=company.name)

        if company.partner_id.fiscalcode:
            CedentePrestatore.DatiAnagrafici.CodiceFiscale = (
                company.partner_id.fiscalcode)
        CedentePrestatore.DatiAnagrafici.RegimeFiscale = fatturapa_fp.code
        return True
Esempio n. 7
0
    def _setDatiAnagraficiRappresentanteFiscale(self, partner, fatturapa):
        fatturapa.FatturaElettronicaHeader.RappresentanteFiscale = (
            RappresentanteFiscaleType())
        fatturapa.FatturaElettronicaHeader.RappresentanteFiscale.\
            DatiAnagrafici = DatiAnagraficiRappresentanteType()
        if not partner.vat and not partner.fiscalcode:
            raise UserError(
                _('VAT number and fiscal code are not set for %s.') %
                partner.name)
        if partner.fiscalcode:
            fatturapa.FatturaElettronicaHeader.RappresentanteFiscale.\
                DatiAnagrafici.CodiceFiscale = partner.fiscalcode
        if partner.vat:
            fatturapa.FatturaElettronicaHeader.RappresentanteFiscale.\
                DatiAnagrafici.IdFiscaleIVA = IdFiscaleType(
                    IdPaese=partner.vat[0:2], IdCodice=partner.vat[2:])
        fatturapa.FatturaElettronicaHeader.RappresentanteFiscale.\
            DatiAnagrafici.Anagrafica = AnagraficaType(
                Denominazione=partner.name)
        if partner.eori_code:
            fatturapa.FatturaElettronicaHeader.RappresentanteFiscale.\
                DatiAnagrafici.Anagrafica.CodEORI = partner.eori_code

        return True