Beispiel #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
Beispiel #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
    def _setDatiAnagraficiCessionario(self, partner, fatturapa):
        fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
            DatiAnagrafici = DatiAnagraficiCessionarioType()
        if not partner.vat and not partner.fiscalcode:
            raise UserError(
                _('Partner VAT and Fiscalcode not set.'))
        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:])
        fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
            DatiAnagrafici.Anagrafica = AnagraficaType(
                Denominazione=partner.name)

        # not using for now
        #
        # Anagrafica = DatiAnagrafici.find('Anagrafica')
        # Nome = Anagrafica.find('Nome')
        # Cognome = Anagrafica.find('Cognome')
        # Titolo = Anagrafica.find('Titolo')
        # Anagrafica.remove(Nome)
        # Anagrafica.remove(Cognome)
        # Anagrafica.remove(Titolo)

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

        return True
    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(
                _('FatturaPA fiscal position not set.'))
        CedentePrestatore.DatiAnagrafici.IdFiscaleIVA = IdFiscaleType(
            IdPaese=company.country_id.code, IdCodice=company.vat[2:])
        CedentePrestatore.DatiAnagrafici.Anagrafica = AnagraficaType(
            Denominazione=company.name)

        # not using for now
        #
        # Anagrafica = DatiAnagrafici.find('Anagrafica')
        # Nome = Anagrafica.find('Nome')
        # Cognome = Anagrafica.find('Cognome')
        # Titolo = Anagrafica.find('Titolo')
        # Anagrafica.remove(Nome)
        # Anagrafica.remove(Cognome)
        # Anagrafica.remove(Titolo)

        if company.partner_id.fiscalcode:
            CedentePrestatore.DatiAnagrafici.CodiceFiscale = (
                company.partner_id.fiscalcode)
        CedentePrestatore.DatiAnagrafici.RegimeFiscale = fatturapa_fp.code
        return True
Beispiel #5
0
    def _setDatiAnagraficiCessionario(self, partner, fatturapa):
        fatturapa.FatturaElettronicaHeader.CessionarioCommittente.\
            DatiAnagrafici = DatiAnagraficiCessionarioType()
        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.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_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
 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' % invoice.gross_weight,
             PesoNetto='%.2f' % invoice.weight,
             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
Beispiel #7
0
    def _setIdTrasmittente(self, company, fatturapa):

        if not company.country_id:
            raise UserError(_('Company Country not set.'))
        IdPaese = company.country_id.code

        IdCodice = company.partner_id.fiscalcode
        if not IdCodice:
            if company.vat:
                IdCodice = company.vat[2:]
        if not IdCodice:
            raise UserError(
                _('Company does not have fiscal code or VAT number.'))

        fatturapa.FatturaElettronicaHeader.DatiTrasmissione.\
            IdTrasmittente = IdFiscaleType(
                IdPaese=IdPaese, IdCodice=IdCodice)

        return True
Beispiel #8
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
    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 and Fiscalcode 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