diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2023-03-20 14:46:25 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2023-03-20 14:46:25 +0700 |
| commit | cdd6919af886ab6eba9daa32d10254c6f3e14101 (patch) | |
| tree | d61bde78dd1d7f4fc578d470a85a1b185049f58d | |
| parent | d8750844beed392c0dd3e588ea242be3c86f2be9 (diff) | |
add ongkir and selisih in process uang muka penjualan
| -rw-r--r-- | indoteknik_custom/models/uangmuka_pembelian.py | 5 | ||||
| -rw-r--r-- | indoteknik_custom/models/uangmuka_penjualan.py | 60 | ||||
| -rw-r--r-- | indoteknik_custom/views/uangmuka_penjualan.xml | 3 |
3 files changed, 60 insertions, 8 deletions
diff --git a/indoteknik_custom/models/uangmuka_pembelian.py b/indoteknik_custom/models/uangmuka_pembelian.py index 29d188d3..3d271117 100644 --- a/indoteknik_custom/models/uangmuka_pembelian.py +++ b/indoteknik_custom/models/uangmuka_pembelian.py @@ -27,8 +27,9 @@ class UangmukaPembelian(models.TransientModel): current_time = datetime.now() for order in orders: + ref_label = 'UANG MUKA PEMBELIAN '+order.name+' '+order.partner_id.name param_header = { - 'ref': 'UANG MUKA PEMBELIAN '+order.name+' '+order.partner_id.name, + 'ref': ref_label, 'date': current_time, 'journal_id': 11 } @@ -43,6 +44,7 @@ class UangmukaPembelian(models.TransientModel): 'currency_id': 12, 'debit': self.pay_amt, 'credit': 0, + 'name': ref_label, } param_credit = { @@ -52,6 +54,7 @@ class UangmukaPembelian(models.TransientModel): 'currency_id': 12, 'debit': 0, 'credit': self.pay_amt, + 'name': ref_label, } request.env['account.move.line'].create([param_debit, param_credit]) return { diff --git a/indoteknik_custom/models/uangmuka_penjualan.py b/indoteknik_custom/models/uangmuka_penjualan.py index 6c234369..406caa4e 100644 --- a/indoteknik_custom/models/uangmuka_penjualan.py +++ b/indoteknik_custom/models/uangmuka_penjualan.py @@ -1,9 +1,9 @@ -from odoo import fields, models, _ +from odoo import fields, models, _, api from odoo.exceptions import UserError from datetime import datetime from odoo.http import request -import logging +import logging, math _logger = logging.getLogger(__name__) @@ -14,7 +14,15 @@ class UangmukaPenjualan(models.TransientModel): pay_amt = fields.Float(string='Payment', help='berapa nilai yang terbentuk untuk COA Uang Muka Penjualan') account_id = fields.Many2one('account.account', string='Bank Intransit', default=389, help='pilih COA intransit bank') + ongkir_amt = fields.Float(string='Ongkir', help='masukan nilai yang akan menjadi Pendapatan Ongkos Kirim') + selisih_amt = fields.Float(string='Selisih', help='masukan nilai yang akan menjadi Selisih Pembayaran') + total_amt = fields.Float(string='Total', help='Total yang akan masuk di journal entries') + @api.onchange('pay_amt', 'ongkir_amt', 'selisih_amt') + def _compute_total_amt(self): + for o in self: + o.total_amt = o.pay_amt + o.ongkir_amt + o.selisih_amt + def create_uangmukapenjualan(self): if self.pay_amt <= 0: raise UserError('Payment Amount harus diisi') @@ -23,12 +31,22 @@ class UangmukaPenjualan(models.TransientModel): if not self.env.user.is_accounting: raise UserError('Hanya Finance yang dapat membuat Uang Muka Penjualan') + is_have_ongkir = is_have_selisih = False + + if self.ongkir_amt > 0: + is_have_ongkir = True + if not math.isclose(self.selisih_amt, 0): + is_have_selisih = True + # elif self.selisih_amt > 0: + # is_have_selisih = True + orders = self.env['sale.order'].browse(self._context.get('active_ids',[])) current_time = datetime.now() for order in orders: + ref_label = 'UANG MUKA PENJUALAN '+order.name+' '+order.partner_id.name param_header = { - 'ref': 'UANG MUKA PENJUALAN '+order.name+' '+order.partner_id.name, + 'ref': ref_label, 'date': current_time, 'journal_id': 11 } @@ -38,13 +56,14 @@ class UangmukaPenjualan(models.TransientModel): param_debit = { 'move_id': account_move.id, - 'account_id': self.account_id.id, + 'account_id': self.account_id.id, # intransit 'partner_id': order.partner_id.id, 'currency_id': 12, - 'debit': self.pay_amt, + 'debit': self.pay_amt + self.ongkir_amt + self.selisih_amt, 'credit': 0, + 'name': ref_label, } - + # sisa di credit untuk uang muka penjualan, diluar ongkir dan selisih param_credit = { 'move_id': account_move.id, 'account_id': 449, # uang muka penjualan @@ -52,8 +71,35 @@ class UangmukaPenjualan(models.TransientModel): 'currency_id': 12, 'debit': 0, 'credit': self.pay_amt, + 'name': ref_label, + } + param_ongkir_credit = { + 'move_id': account_move.id, + 'account_id': 550, # pendapatan ongkos kirim + 'partner_id': order.partner_id.id, + 'currency_id': 12, + 'debit': 0, + 'credit': self.ongkir_amt, + 'name': ref_label, + } + param_selisih_credit = { + 'move_id': account_move.id, + 'account_id': 561, # selisih pembayaran + 'partner_id': order.partner_id.id, + 'currency_id': 12, + 'debit': 0, + 'credit': self.selisih_amt, + 'name': ref_label, } - request.env['account.move.line'].create([param_debit, param_credit]) + + if is_have_ongkir and is_have_selisih: + request.env['account.move.line'].create([param_debit, param_credit, param_ongkir_credit, param_selisih_credit]) + elif is_have_ongkir: + request.env['account.move.line'].create([param_debit, param_credit, param_ongkir_credit]) + elif is_have_selisih: + request.env['account.move.line'].create([param_debit, param_credit, param_selisih_credit]) + else: + request.env['account.move.line'].create([param_debit, param_credit]) return { 'name': _('Journal Entries'), 'view_mode': 'form', diff --git a/indoteknik_custom/views/uangmuka_penjualan.xml b/indoteknik_custom/views/uangmuka_penjualan.xml index b2353f12..f2fc83bc 100644 --- a/indoteknik_custom/views/uangmuka_penjualan.xml +++ b/indoteknik_custom/views/uangmuka_penjualan.xml @@ -10,7 +10,10 @@ </p> <group> <field name="pay_amt"/> + <field name="ongkir_amt"/> + <field name="selisih_amt"/> <field name="account_id" domain="[('name', 'ilike', 'intransit')]"/> + <field name="total_amt" readonly="1"/> </group> <footer> <button name="create_uangmukapenjualan" id="create_uangmukapenjualan" string="Create" type="object" required="1"/> |
