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
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 _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
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
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 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