summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2024-01-09 06:34:24 +0000
committerIT Fixcomart <it@fixcomart.co.id>2024-01-09 06:34:24 +0000
commit6f62411bf3965fc27e24d8c997cc2bca771a0b8e (patch)
tree3c0dc3837885ddf0e644558b46b598909b06d504 /indoteknik_custom/models
parent5b607722945ac1b64eb3e6f2393a441064783342 (diff)
parent7622354cbe00ca428d94469c6bd5ae3de5e73a76 (diff)
Merged in multiple-reklas (pull request #134)
Multiple reklas
Diffstat (limited to 'indoteknik_custom/models')
-rwxr-xr-xindoteknik_custom/models/__init__.py1
-rw-r--r--indoteknik_custom/models/account_move.py20
-rw-r--r--indoteknik_custom/models/invoice_reklas.py48
-rw-r--r--indoteknik_custom/models/invoice_reklas_penjualan.py80
-rw-r--r--indoteknik_custom/models/sale_advance_payment_inv.py1
-rwxr-xr-xindoteknik_custom/models/sale_order.py2
-rw-r--r--indoteknik_custom/models/uangmuka_penjualan.py3
7 files changed, 153 insertions, 2 deletions
diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py
index e7bcd323..509fceef 100755
--- a/indoteknik_custom/models/__init__.py
+++ b/indoteknik_custom/models/__init__.py
@@ -95,3 +95,4 @@ from . import stock_warehouse_orderpoint
from . import commision
from . import sale_advance_payment_inv
from . import purchase_order_multi_update
+from . import invoice_reklas_penjualan
diff --git a/indoteknik_custom/models/account_move.py b/indoteknik_custom/models/account_move.py
index 82a86a39..ae09d0ee 100644
--- a/indoteknik_custom/models/account_move.py
+++ b/indoteknik_custom/models/account_move.py
@@ -35,6 +35,26 @@ class AccountMove(models.Model):
('belum_upload', 'Belum Upload FP'),
('sudah_upload', 'Sudah Upload FP'),
], 'Mark Upload Faktur', compute='_compute_mark_upload_efaktur', default='belum_upload')
+ sale_id = fields.Many2one('sale.order', string='Sale Order')
+ reklas_id = fields.Many2one('account.move', string='Nomor CAB', domain="[('partner_id', '=', partner_id)]")
+
+ def open_form_multi_create_reklas_penjualan(self):
+ action = self.env['ir.actions.act_window']._for_xml_id('indoteknik_custom.action_view_invoice_reklas_penjualan')
+ invoice = self.env['invoice.reklas.penjualan'].create([{
+ 'name': '-',
+ }])
+ for move in self:
+ sale_id = move.sale_id.id
+ self.env['invoice.reklas.penjualan.line'].create([{
+ 'invoice_reklas_id': invoice.id,
+ 'name': move.name,
+ 'partner_id': move.partner_id.id,
+ 'sale_id': move.sale_id.id,
+ 'amount_untaxed_signed': move.amount_untaxed_signed,
+ 'amount_total_signed': move.amount_total_signed,
+ }])
+ action['res_id'] = invoice.id
+ return action
def _compute_mark_upload_efaktur(self):
for move in self:
diff --git a/indoteknik_custom/models/invoice_reklas.py b/indoteknik_custom/models/invoice_reklas.py
index c2ee7e3d..b1ba49e8 100644
--- a/indoteknik_custom/models/invoice_reklas.py
+++ b/indoteknik_custom/models/invoice_reklas.py
@@ -94,3 +94,51 @@ class InvoiceReklas(models.TransientModel):
'type': 'ir.actions.act_window',
'res_id': account_move.id
}
+
+
+ def create_reklas_penjualan(self):
+ if not self.pay_amt:
+ raise UserError('Yang dibayarkan harus diisi')
+
+ account_ids = self._context['account_ids']
+ invoices = self.env['account.move'].browse(account_ids)
+ current_time = datetime.now()
+ for invoice in invoices:
+ ref_name = 'REKLAS '+invoice.reklas_id.name+" UANG MUKA PENJUALAN "+invoice.name+" "+invoice.partner_id.name
+ parameters_header = {
+ 'ref': ref_name,
+ 'date': current_time,
+ 'journal_id': 13
+ }
+
+ account_move = request.env['account.move'].create([parameters_header])
+ _logger.info('Success Reklas with %s' % account_move.name)
+
+ parameter_debit = {
+ 'move_id': account_move.id,
+ 'account_id': 449, # uang muka penjualan
+ 'partner_id': invoice.partner_id.id,
+ 'currency_id': 12,
+ 'debit': self.pay_amt,
+ 'credit': 0,
+ 'name': ref_name
+ }
+ parameter_credit = {
+ 'move_id': account_move.id,
+ 'account_id': 395,
+ 'partner_id': invoice.partner_id.id,
+ 'currency_id': 12,
+ 'debit': 0,
+ 'credit': self.pay_amt,
+ 'name': ref_name
+ }
+ request.env['account.move.line'].create([parameter_debit, parameter_credit])
+ return {
+ 'name': _('Journal Entries'),
+ 'view_mode': 'form',
+ 'res_model': 'account.move',
+ 'target': 'current',
+ 'view_id': False,
+ 'type': 'ir.actions.act_window',
+ 'res_id': account_move.id
+ }
diff --git a/indoteknik_custom/models/invoice_reklas_penjualan.py b/indoteknik_custom/models/invoice_reklas_penjualan.py
new file mode 100644
index 00000000..533270d2
--- /dev/null
+++ b/indoteknik_custom/models/invoice_reklas_penjualan.py
@@ -0,0 +1,80 @@
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+from datetime import datetime
+from odoo.http import request
+
+import logging
+
+_logger = logging.getLogger(__name__)
+
+
+class InvoiceReklasPenjualan(models.TransientModel):
+ _name = 'invoice.reklas.penjualan'
+ _description = "digunakan untuk reklas Uang Muka Penjualan"
+
+ name = fields.Char(string='Name')
+ invoice_reklas_line = fields.One2many('invoice.reklas.penjualan.line', 'invoice_reklas_id', string='Invoice Reklas Line')
+
+ def create_reklas_penjualan(self):
+ # invoices = self.invoice_reklas_line.mapped('invoice_id')
+ invoices = self.invoice_reklas_line
+
+ current_time = datetime.now()
+ account_move_ids = []
+ for invoice in invoices:
+ ref_name = 'REKLAS ' + invoice.reklas_id.name + " UANG MUKA PENJUALAN " + invoice.name + " " + invoice.partner_id.name
+ parameters_header = {
+ 'ref': ref_name,
+ 'date': current_time,
+ 'journal_id': 13
+ }
+
+ account_move = self.env['account.move'].create([parameters_header])
+ _logger.info('Success Reklas with %s' % account_move.name)
+
+ parameter_debit = {
+ 'move_id': account_move.id,
+ 'account_id': 449, # uang muka penjualan
+ 'partner_id': invoice.partner_id.id,
+ 'currency_id': 12,
+ 'debit': invoice.pay_amt,
+ 'credit': 0,
+ 'name': ref_name
+ }
+ parameter_credit = {
+ 'move_id': account_move.id,
+ 'account_id': 395,
+ 'partner_id': invoice.partner_id.id,
+ 'currency_id': 12,
+ 'debit': 0,
+ 'credit': invoice.pay_amt,
+ 'name': ref_name
+ }
+ self.env['account.move.line'].create([parameter_debit, parameter_credit])
+ account_move_ids.append(account_move.id)
+ invoice.unlink()
+
+ self.unlink()
+ return {
+ 'name': _('Journal Entries'),
+ 'view_mode': 'tree,form',
+ 'res_model': 'account.move',
+ 'target': 'current',
+ 'type': 'ir.actions.act_window',
+ 'domain': [('id', 'in', account_move_ids)],
+ }
+
+class InvoiceReklasPenjualanLine(models.TransientModel):
+ _name = 'invoice.reklas.penjualan.line'
+ _description = "digunakan untuk reklas Uang Muka Penjualan"
+
+ invoice_reklas_id = fields.Many2one('invoice.reklas.penjualan', string='Invoice Reklas')
+ pay_amt = fields.Float(string='Yang dibayarkan')
+ reklas_id = fields.Many2one('account.move', string='Nomor CAB', domain="[('sale_id', '=', sale_id)]")
+ sale_id = fields.Many2one('sale.order', string='Sale Order')
+ amount_untaxed_signed = fields.Float(string='Tax excluded')
+ amount_total_signed = fields.Float(string='Total')
+ name = fields.Char(string='Name')
+ partner_id = fields.Many2one('res.partner', string='Partner')
+
+
diff --git a/indoteknik_custom/models/sale_advance_payment_inv.py b/indoteknik_custom/models/sale_advance_payment_inv.py
index dde7ed74..ebbba6b9 100644
--- a/indoteknik_custom/models/sale_advance_payment_inv.py
+++ b/indoteknik_custom/models/sale_advance_payment_inv.py
@@ -16,6 +16,7 @@ class SaleAdvancePaymentInv(models.TransientModel):
'invoice_user_id': order.user_id.id,
'narration': order.note,
'partner_id': parent_id,
+ 'sale_id': order.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,
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index cb963122..95cbf8ce 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -379,7 +379,7 @@ class SaleOrder(models.Model):
def _validate_npwp(self):
num_digits = sum(c.isdigit() for c in self.npwp)
- if num_digits <= 10:
+ if num_digits < 10:
raise UserError("NPWP harus memiliki minimal 10 digit")
# pattern = r'^\d{10,}$'
diff --git a/indoteknik_custom/models/uangmuka_penjualan.py b/indoteknik_custom/models/uangmuka_penjualan.py
index 93a33b52..65f5361b 100644
--- a/indoteknik_custom/models/uangmuka_penjualan.py
+++ b/indoteknik_custom/models/uangmuka_penjualan.py
@@ -48,7 +48,8 @@ class UangmukaPenjualan(models.TransientModel):
param_header = {
'ref': ref_label,
'date': current_time,
- 'journal_id': 11
+ 'journal_id': 11,
+ 'sale_id': order.id,
}
account_move = request.env['account.move'].create([param_header])