summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2023-12-15 16:23:26 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2023-12-15 16:23:26 +0700
commit8fc9eddc57f76f62c3efaa70c9a3aee8be1911fa (patch)
tree6d6b2e5742f8788a86f016e37e584eff50641578
parentcd2844a0ed01d85c0a5f917ea611e787a664ce7e (diff)
partner_id in invoice always takes parent_id
-rwxr-xr-xindoteknik_custom/models/__init__.py1
-rw-r--r--indoteknik_custom/models/sale_advance_payment_inv.py37
-rwxr-xr-xindoteknik_custom/models/sale_order.py39
-rwxr-xr-xindoteknik_custom/security/ir.model.access.csv3
4 files changed, 78 insertions, 2 deletions
diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py
index 35f06f03..50885f56 100755
--- a/indoteknik_custom/models/__init__.py
+++ b/indoteknik_custom/models/__init__.py
@@ -93,3 +93,4 @@ from . import product_monitoring
from . import account_bank_statement
from . import stock_warehouse_orderpoint
from . import commision
+from . import sale_advance_payment_inv
diff --git a/indoteknik_custom/models/sale_advance_payment_inv.py b/indoteknik_custom/models/sale_advance_payment_inv.py
index e07d0ee0..dde7ed74 100644
--- a/indoteknik_custom/models/sale_advance_payment_inv.py
+++ b/indoteknik_custom/models/sale_advance_payment_inv.py
@@ -5,6 +5,42 @@ from odoo.exceptions import UserError
class SaleAdvancePaymentInv(models.TransientModel):
_inherit = 'sale.advance.payment.inv'
+ def _prepare_invoice_values(self, order, name, amount, so_line):
+ parent_id = order.partner_id.parent_id
+ parent_id = parent_id if parent_id else order.partner_id
+
+ invoice_vals = {
+ 'ref': order.client_order_ref,
+ 'move_type': 'out_invoice',
+ 'invoice_origin': order.name,
+ 'invoice_user_id': order.user_id.id,
+ 'narration': order.note,
+ 'partner_id': parent_id,
+ 'fiscal_position_id': (order.fiscal_position_id or order.fiscal_position_id.get_fiscal_position(order.partner_id.id)).id,
+ 'partner_shipping_id': parent_id.id,
+ 'currency_id': order.pricelist_id.currency_id.id,
+ 'payment_reference': order.reference,
+ 'invoice_payment_term_id': order.payment_term_id.id,
+ 'partner_bank_id': order.company_id.partner_id.bank_ids[:1].id,
+ 'team_id': order.team_id.id,
+ 'campaign_id': order.campaign_id.id,
+ 'medium_id': order.medium_id.id,
+ 'source_id': order.source_id.id,
+ 'invoice_line_ids': [(0, 0, {
+ 'name': name,
+ 'price_unit': amount,
+ 'quantity': 1.0,
+ 'product_id': self.product_id.id,
+ 'product_uom_id': so_line.product_uom.id,
+ 'tax_ids': [(6, 0, so_line.tax_id.ids)],
+ 'sale_line_ids': [(6, 0, [so_line.id])],
+ 'analytic_tag_ids': [(6, 0, so_line.analytic_tag_ids.ids)],
+ 'analytic_account_id': order.analytic_account_id.id or False,
+ })],
+ }
+
+ return invoice_vals
+
def create_invoices(self):
sale_orders = self.env['sale.order'].browse(self._context.get('active_ids', []))
@@ -40,7 +76,6 @@ class SaleAdvancePaymentInv(models.TransientModel):
if self._context.get('open_invoices', False):
return sale_orders.action_view_invoice()
return {'type': 'ir.actions.act_window_close'}
-
# def _create_invoices(self, grouped=False, final=False, date=None):
# """
# Create the invoice associated to the SO.
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index bf10246a..9f31c0fd 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -84,6 +84,45 @@ class SaleOrder(models.Model):
helper_by_id = fields.Many2one('res.users', 'Helper By')
# picking_ids = fields.Many2many('stock.picking', string='Pickings', compute='_get_pickings', readonly=True, copy=False, search="_search_picking_ids")
+ def _prepare_invoice(self):
+ """
+ Prepare the dict of values to create the new invoice for a sales order. This method may be
+ overridden to implement custom invoice generation (making sure to call super() to establish
+ a clean extension chain).
+ """
+ self.ensure_one()
+ journal = self.env['account.move'].with_context(default_move_type='out_invoice')._get_default_journal()
+ if not journal:
+ raise UserError(_('Please define an accounting sales journal for the company %s (%s).') % (self.company_id.name, self.company_id.id))
+
+ parent_id = self.partner_id.parent_id
+ parent_id = parent_id if parent_id else self.partner_id
+
+ invoice_vals = {
+ 'ref': self.client_order_ref or '',
+ 'move_type': 'out_invoice',
+ 'narration': self.note,
+ 'currency_id': self.pricelist_id.currency_id.id,
+ 'campaign_id': self.campaign_id.id,
+ 'medium_id': self.medium_id.id,
+ 'source_id': self.source_id.id,
+ 'user_id': self.user_id.id,
+ 'invoice_user_id': self.user_id.id,
+ 'team_id': self.team_id.id,
+ 'partner_id': parent_id.id,
+ 'partner_shipping_id': parent_id.id,
+ 'fiscal_position_id': (self.fiscal_position_id or self.fiscal_position_id.get_fiscal_position(self.partner_invoice_id.id)).id,
+ 'partner_bank_id': self.company_id.partner_id.bank_ids[:1].id,
+ 'journal_id': journal.id, # company comes from the journal
+ 'invoice_origin': self.name,
+ 'invoice_payment_term_id': self.payment_term_id.id,
+ 'payment_reference': self.reference,
+ 'transaction_ids': [(6, 0, self.transaction_ids.ids)],
+ 'invoice_line_ids': [],
+ 'company_id': self.company_id.id,
+ }
+ return invoice_vals
+
@api.constrains('email')
def _validate_email(self):
rule_regex = self.env['ir.config_parameter'].sudo().get_param('sale.order.validate_email') or ''
diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv
index 56d00b3e..444a1b42 100755
--- a/indoteknik_custom/security/ir.model.access.csv
+++ b/indoteknik_custom/security/ir.model.access.csv
@@ -83,4 +83,5 @@ access_customer_commision,access.customer.commision,model_customer_commision,,1,
access_customer_commision_line,access.customer.commision.line,model_customer_commision_line,,1,1,1,1
access_customer_rebate,access.customer.rebate,model_customer_rebate,,1,1,1,1
access_wati_history,access.wati.history,model_wati_history,,1,1,1,1
-access_wati_history_line,access.wati.history.line,model_wati_history_line,,1,1,1,1 \ No newline at end of file
+access_wati_history_line,access.wati.history.line,model_wati_history_line,,1,1,1,1
+access_sale_advance_payment_inv,access.sale.advance.payment.inv,model_sale_advance_payment_inv,,1,1,1,1 \ No newline at end of file