From 38b28cfb316a1abf62f192ce03f938c70f21f1fb Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Sat, 6 Jan 2024 13:12:51 +0700 Subject: multiple reklas --- indoteknik_custom/__manifest__.py | 1 + indoteknik_custom/models/__init__.py | 1 + indoteknik_custom/models/account_move.py | 17 +++++ indoteknik_custom/models/invoice_reklas.py | 48 +++++++++++++ .../models/invoice_reklas_penjualan.py | 79 ++++++++++++++++++++++ indoteknik_custom/security/ir.model.access.csv | 4 +- indoteknik_custom/views/account_move.xml | 9 +++ .../views/invoice_reklas_penjualan.xml | 39 +++++++++++ 8 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 indoteknik_custom/models/invoice_reklas_penjualan.py create mode 100644 indoteknik_custom/views/invoice_reklas_penjualan.xml diff --git a/indoteknik_custom/__manifest__.py b/indoteknik_custom/__manifest__.py index d8058bff..d6e69718 100755 --- a/indoteknik_custom/__manifest__.py +++ b/indoteknik_custom/__manifest__.py @@ -105,6 +105,7 @@ 'views/customer_commision.xml', 'views/wati_history.xml', 'views/purchase_order_multi_update.xml', + 'views/invoice_reklas_penjualan.xml', 'report/report.xml', 'report/report_banner_banner.xml', 'report/report_banner_banner2.xml', 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..929d2ee6 100644 --- a/indoteknik_custom/models/account_move.py +++ b/indoteknik_custom/models/account_move.py @@ -35,6 +35,23 @@ 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') + 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: + self.env['invoice.reklas.penjualan.line'].create([{ + 'invoice_reklas_id': invoice.id, + 'name': move.name, + 'partner_id': move.partner_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..22417864 --- /dev/null +++ b/indoteknik_custom/models/invoice_reklas_penjualan.py @@ -0,0 +1,79 @@ +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="[('partner_id', '=', partner_id)]") + 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/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv index dd7605ab..8520961d 100755 --- a/indoteknik_custom/security/ir.model.access.csv +++ b/indoteknik_custom/security/ir.model.access.csv @@ -85,4 +85,6 @@ 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 access_sale_advance_payment_inv,access.sale.advance.payment.inv,model_sale_advance_payment_inv,,1,1,1,1 -access_purchase_order_multi_update,access.purchase.order.multi_update,model_purchase_order_multi_update,,1,1,1,1 \ No newline at end of file +access_purchase_order_multi_update,access.purchase.order.multi_update,model_purchase_order_multi_update,,1,1,1,1 +access_invoice_reklas_penjualan,access.invoice.reklas.penjualan,model_invoice_reklas_penjualan,,1,1,1,1 +access_invoice_reklas_penjualan_line,access.invoice.reklas.penjualan.line,model_invoice_reklas_penjualan_line,,1,1,1,1 \ No newline at end of file diff --git a/indoteknik_custom/views/account_move.xml b/indoteknik_custom/views/account_move.xml index 7995b83b..97ac5460 100644 --- a/indoteknik_custom/views/account_move.xml +++ b/indoteknik_custom/views/account_move.xml @@ -15,6 +15,7 @@ + @@ -108,5 +109,13 @@ code action = records.open_form_multi_update() + + + Create Reklas Penjualan + + + code + action = records.open_form_multi_create_reklas_penjualan() + \ No newline at end of file diff --git a/indoteknik_custom/views/invoice_reklas_penjualan.xml b/indoteknik_custom/views/invoice_reklas_penjualan.xml new file mode 100644 index 00000000..ba892633 --- /dev/null +++ b/indoteknik_custom/views/invoice_reklas_penjualan.xml @@ -0,0 +1,39 @@ + + + + Invoice Reklas Penjualan + invoice.reklas.penjualan + +
+ + + + + + + + + + + + + +
+
+
+
+
+ + + Create Reklas Penjualan + ir.actions.act_window + invoice.reklas.penjualan + form + new + +
-- cgit v1.2.3 From e5474a12a7d3b0d8c1a73d5e072078e6be745196 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Mon, 8 Jan 2024 11:39:54 +0700 Subject: multiple-reklas --- indoteknik_custom/models/account_move.py | 1 + indoteknik_custom/models/sale_advance_payment_inv.py | 1 + indoteknik_custom/models/sale_order.py | 2 +- indoteknik_custom/models/uangmuka_penjualan.py | 3 ++- indoteknik_custom/views/account_move.xml | 7 +++++++ 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/indoteknik_custom/models/account_move.py b/indoteknik_custom/models/account_move.py index 929d2ee6..47eb90f8 100644 --- a/indoteknik_custom/models/account_move.py +++ b/indoteknik_custom/models/account_move.py @@ -35,6 +35,7 @@ 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): 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]) diff --git a/indoteknik_custom/views/account_move.xml b/indoteknik_custom/views/account_move.xml index 97ac5460..ddd266bb 100644 --- a/indoteknik_custom/views/account_move.xml +++ b/indoteknik_custom/views/account_move.xml @@ -17,6 +17,12 @@ + + + + + + @@ -24,6 +30,7 @@ pdf_viewer + -- cgit v1.2.3 From 7622354cbe00ca428d94469c6bd5ae3de5e73a76 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Mon, 8 Jan 2024 13:26:16 +0700 Subject: multiple invoice reklas penjualan --- indoteknik_custom/models/account_move.py | 2 ++ indoteknik_custom/models/invoice_reklas_penjualan.py | 3 ++- indoteknik_custom/views/invoice_reklas_penjualan.xml | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/indoteknik_custom/models/account_move.py b/indoteknik_custom/models/account_move.py index 47eb90f8..ae09d0ee 100644 --- a/indoteknik_custom/models/account_move.py +++ b/indoteknik_custom/models/account_move.py @@ -44,10 +44,12 @@ class AccountMove(models.Model): '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, }]) diff --git a/indoteknik_custom/models/invoice_reklas_penjualan.py b/indoteknik_custom/models/invoice_reklas_penjualan.py index 22417864..533270d2 100644 --- a/indoteknik_custom/models/invoice_reklas_penjualan.py +++ b/indoteknik_custom/models/invoice_reklas_penjualan.py @@ -70,7 +70,8 @@ class InvoiceReklasPenjualanLine(models.TransientModel): 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="[('partner_id', '=', partner_id)]") + 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') diff --git a/indoteknik_custom/views/invoice_reklas_penjualan.xml b/indoteknik_custom/views/invoice_reklas_penjualan.xml index ba892633..9c875cca 100644 --- a/indoteknik_custom/views/invoice_reklas_penjualan.xml +++ b/indoteknik_custom/views/invoice_reklas_penjualan.xml @@ -17,6 +17,7 @@ + -- cgit v1.2.3