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 @@
-
@@ -173,4 +180,19 @@ + + 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,