diff --git a/l10n_it_fatturapa_import_zip/models/attachment.py b/l10n_it_fatturapa_import_zip/models/attachment.py
index 4ecc28574cd9..cc0ea235582d 100644
--- a/l10n_it_fatturapa_import_zip/models/attachment.py
+++ b/l10n_it_fatturapa_import_zip/models/attachment.py
@@ -152,7 +152,7 @@ def _compute_invoices_data(self):
),
)
- def action_import(self):
+ def action_import(self, with_invoice=True):
self.ensure_one()
company_partner = self.env.company.partner_id
with tempfile.TemporaryDirectory() as tmp_dir_path:
@@ -182,16 +182,17 @@ def action_import(self):
attachment = self.env["fatturapa.attachment.out"].create(
attach_vals
)
- wizard = (
- self.env["wizard.import.fatturapa"]
- .with_context(
- active_ids=attachment.ids,
- active_model=attachment._name,
+ if with_invoice:
+ wizard = (
+ self.env["wizard.import.fatturapa"]
+ .with_context(
+ active_ids=attachment.ids,
+ active_model=attachment._name,
+ )
+ .create({})
)
- .create({})
- )
- _logger.info(f"Importing {xml_file}")
- wizard.importFatturaPA()
+ _logger.info(f"Importing {xml_file}")
+ wizard.importFatturaPA()
else:
_logger.info(f"Skipping {xml_file}, not an XML/P7M file")
self.env.company.in_invoice_registration_date = (
@@ -200,6 +201,14 @@ def action_import(self):
self.state = "done"
+ def action_import_with_invoice(self):
+ self.ensure_one()
+ self.action_import(with_invoice=True)
+
+ def action_import_no_invoice(self):
+ self.ensure_one()
+ self.action_import(with_invoice=False)
+
class FatturaPAAttachmentIn(models.Model):
_inherit = "fatturapa.attachment.in"
diff --git a/l10n_it_fatturapa_import_zip/views/attachment_views.xml b/l10n_it_fatturapa_import_zip/views/attachment_views.xml
index a811872a81ec..142a15aed7b8 100644
--- a/l10n_it_fatturapa_import_zip/views/attachment_views.xml
+++ b/l10n_it_fatturapa_import_zip/views/attachment_views.xml
@@ -7,13 +7,20 @@
+
+ Import Electronic Invoice Out
+ wizard.import.fatturapa
+
+ form
+ new
+
+
+
diff --git a/l10n_it_fatturapa_import_zip/wizards/wizard_import_fatturapa.py b/l10n_it_fatturapa_import_zip/wizards/wizard_import_fatturapa.py
index 2b9c3a352c0c..41c5e3bd4aed 100644
--- a/l10n_it_fatturapa_import_zip/wizards/wizard_import_fatturapa.py
+++ b/l10n_it_fatturapa_import_zip/wizards/wizard_import_fatturapa.py
@@ -114,3 +114,57 @@ def set_payments_data(self, FatturaBody, invoice, partner_id):
)
else:
return super().set_payments_data(FatturaBody, invoice, partner_id)
+
+ def _get_payment_term(self, partner):
+ payment_term_id = False
+ if self._is_import_attachment_out():
+ if partner.property_payment_term_id:
+ payment_term_id = partner.property_payment_term_id.id
+ else:
+ payment_term_id = super()._get_payment_term(partner=partner)
+ return payment_term_id
+
+ def get_credit_account(self, product=None):
+ if self._is_import_attachment_out():
+ ret = self.get_debit_account(product=product)
+ else:
+ ret = super().get_credit_account(product=product)
+ return ret
+
+ # function to mimics get_credit_account() for outgoing invoices
+ def get_debit_account(self, product=None):
+ debit_account = self.env["account.account"]
+
+ if product:
+ template = product.product_tmpl_id
+ accounts_dict = template.get_product_accounts()
+ debit_account = accounts_dict["income"]
+
+ company = self.env.company
+ # Search in journal
+ journal = self.get_journal(company)
+ if not debit_account:
+ debit_account = journal.default_account_id
+
+ # Search in company defaults
+ if not debit_account:
+ debit_account = (
+ self.env["ir.property"]
+ .with_company(company)
+ ._get("property_account_income_categ_id", "product.category")
+ )
+
+ if not debit_account:
+ raise UserError(
+ _(
+ "Please configure Default Debit Account "
+ "in Journal '{journal}' "
+ "or check default income account "
+ "for company '{company}'."
+ ).format(
+ journal=journal.display_name,
+ company=company.display_name,
+ )
+ )
+
+ return debit_account
diff --git a/l10n_it_fatturapa_in/wizard/wizard_import_fatturapa.py b/l10n_it_fatturapa_in/wizard/wizard_import_fatturapa.py
index 0dd7b279252d..9bf8ad3dfa7e 100644
--- a/l10n_it_fatturapa_in/wizard/wizard_import_fatturapa.py
+++ b/l10n_it_fatturapa_in/wizard/wizard_import_fatturapa.py
@@ -1167,6 +1167,12 @@ def _get_received_date(self, attachment):
received_date = received_date.date()
return received_date
+ def _get_payment_term(self, partner):
+ payment_term_id = False
+ if partner.property_supplier_payment_term_id:
+ payment_term_id = partner.property_supplier_payment_term_id.id
+ return payment_term_id
+
def _prepare_invoice_values(self, fatt, fatturapa_attachment, FatturaBody, partner):
company = self.env.company
currency = self._get_currency(FatturaBody)
@@ -1197,6 +1203,7 @@ def _prepare_invoice_values(self, fatt, fatturapa_attachment, FatturaBody, partn
partner,
delivery=delivery_partner,
)
+ payment_term_id = self._get_payment_term(partner)
invoice_data = {
"e_invoice_received_date": e_invoice_received_date,
@@ -1212,7 +1219,7 @@ def _prepare_invoice_values(self, fatt, fatturapa_attachment, FatturaBody, partn
"journal_id": purchase_journal.id,
# 'origin': xmlData.datiOrdineAcquisto,
"fiscal_position_id": fiscal_position.id,
- "invoice_payment_term_id": partner.property_supplier_payment_term_id.id,
+ "invoice_payment_term_id": payment_term_id,
"company_id": company.id,
"fatturapa_attachment_in_id": fatturapa_attachment.id,
"narration": comment,