summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-08-04 14:41:27 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-08-04 14:41:27 +0700
commit747075fb85372666b89d5ffd07a43664ecf169e1 (patch)
tree9b5e1e4a4c0cb03102f77abe763cf6b811ae2f0a
parentc4e1c36e28e4e9585f58e28326d1b0889eb1fa1f (diff)
<hafid> Fix problem
-rw-r--r--indoteknik_custom/models/refund_sale_order.py20
-rw-r--r--indoteknik_custom/views/ir_sequence.xml2
-rw-r--r--indoteknik_custom/views/refund_sale_order.xml10
3 files changed, 18 insertions, 14 deletions
diff --git a/indoteknik_custom/models/refund_sale_order.py b/indoteknik_custom/models/refund_sale_order.py
index 65e93ba4..077809e9 100644
--- a/indoteknik_custom/models/refund_sale_order.py
+++ b/indoteknik_custom/models/refund_sale_order.py
@@ -181,14 +181,17 @@ class RefundSaleOrder(models.Model):
raise ValidationError(f"SO {', '.join(so.mapped('name'))} belum memiliki invoice untuk Retur Sebagian.")
total_invoice = sum(self.env['account.move'].browse(invoice_ids).mapped('amount_total_signed')) if invoice_ids else 0.0
- uang_masuk = vals.get('uang_masuk', 0.0)
ongkir = vals.get('ongkir', 0.0)
+ vals['total_invoice'] = total_invoice
pengurangan = total_invoice + ongkir
if refund_type == 'barang_kosong_sebagian' and so_ids:
sale_orders = self.env['sale.order'].browse(so_ids)
vals['uang_masuk'] = sum(sale_orders.mapped('amount_total'))
+
+ uang_masuk = vals.get('uang_masuk', 0.0)
+
if uang_masuk > pengurangan:
vals['amount_refund'] = uang_masuk - pengurangan
else:
@@ -284,6 +287,7 @@ class RefundSaleOrder(models.Model):
if any(field in vals for field in ['uang_masuk', 'invoice_ids', 'ongkir', 'sale_order_ids']):
total_invoice = sum(self.env['account.move'].browse(invoice_ids).mapped('amount_total_signed'))
+ vals['total_invoice'] = total_invoice
uang_masuk = vals.get('uang_masuk', rec.uang_masuk)
ongkir = vals.get('ongkir', rec.ongkir)
@@ -296,10 +300,10 @@ class RefundSaleOrder(models.Model):
return super().write(vals)
- @api.depends('status_payment')
+ @api.depends('status_payment', 'status')
def _compute_is_locked(self):
for rec in self:
- rec.is_locked = rec.status_payment in ['done', 'reject']
+ rec.is_locked = rec.status_payment in ['done', 'reject'] or rec.status in ['pengajuan3', 'refund', 'reject']
@api.depends('sale_order_ids.name', 'invoice_ids.name')
def _compute_order_invoice_names(self):
@@ -506,19 +510,19 @@ class RefundSaleOrder(models.Model):
if not rec.status or rec.status == 'draft':
rec.status = 'pengajuan1'
- elif rec.status == 'pengajuan1' and self.env.user.id == 19:
+ elif rec.status == 'pengajuan1':
rec.status = 'pengajuan2'
rec.approved_by = f"{rec.approved_by}, {user_name}" if rec.approved_by else user_name
rec.date_approved_sales = now
rec.position_sales = 'Sales Manager'
- elif rec.status == 'pengajuan2' and self.env.user.id == 688:
+ elif rec.status == 'pengajuan2':
rec.status = 'pengajuan3'
rec.approved_by = f"{rec.approved_by}, {user_name}" if rec.approved_by else user_name
rec.date_approved_ar = now
rec.position_ar = 'AR'
- elif rec.status == 'pengajuan3' and self.env.user.id == 7:
+ elif rec.status == 'pengajuan3':
rec.status = 'refund'
rec.approved_by = f"{rec.approved_by}, {user_name}" if rec.approved_by else user_name
rec.date_approved_pimpinan = now
@@ -532,7 +536,7 @@ class RefundSaleOrder(models.Model):
is_fat = self.env.user.has_group('indoteknik_custom.group_role_fat')
allowed_user_ids = [19, 688, 7]
for rec in self:
- if self.user.id not in allowed_user_ids and not is_fat:
+ if self.env.uid not in allowed_user_ids and not is_fat:
raise UserError("❌ Hanya user yang bersangkutan atau Finance (FAT) yang bisa melakukan penolakan.")
if rec.status not in ['refund', 'reject']:
rec.status = 'reject'
@@ -548,7 +552,7 @@ class RefundSaleOrder(models.Model):
is_fat = self.env.user.has_group('indoteknik_custom.group_role_fat')
for rec in self:
if not is_fat:
- raise UserError("Hanya Finance yang dapat mengkonfirmasi refund.")
+ raise UserError("Hanya Finance yang dapat mengkonfirmasi pembayaran refund.")
if rec.status_payment == 'pending':
rec.status_payment = 'done'
rec.refund_date = fields.Date.context_today(self)
diff --git a/indoteknik_custom/views/ir_sequence.xml b/indoteknik_custom/views/ir_sequence.xml
index 4915e4c5..94c2cd07 100644
--- a/indoteknik_custom/views/ir_sequence.xml
+++ b/indoteknik_custom/views/ir_sequence.xml
@@ -220,7 +220,7 @@
</record>
<record id="seq_refund_sale_order" model="ir.sequence">
- <field name="name">Refund Sale Order</field>
+ <field name="name">Refund Sales Order</field>
<field name="code">refund.sale.order</field>
<field name="prefix">RC/%(year)s/%(month)s/</field>
<field name="padding">4</field>
diff --git a/indoteknik_custom/views/refund_sale_order.xml b/indoteknik_custom/views/refund_sale_order.xml
index e35e76b3..27c5feec 100644
--- a/indoteknik_custom/views/refund_sale_order.xml
+++ b/indoteknik_custom/views/refund_sale_order.xml
@@ -56,7 +56,7 @@
<button name="action_trigger_cancel"
type="object"
string="Cancel"
- attrs="{'invisible': ['|', ('status_payment', '!=', 'pending'), ('status', '=', 'reject')]}" />
+ attrs="{'invisible': ['|', ('status_payment', '!=', 'pending'), ('status', 'in', ['reject', 'refund'])]}" />
<button name="action_confirm_refund"
type="object"
string="Confirm Payment"
@@ -66,7 +66,7 @@
string="AP Only"
type="object"
class="oe_highlight"
- attrs="{'invisible': ['|', ('journal_refund_state', '=', 'posted'), ('status', 'not in', ['pengajuan3','refund'])]}"/>
+ attrs="{'invisible': ['|', ('journal_refund_state', 'in', ['posted', 'draft']), ('status', 'not in', ['pengajuan3','refund'])]}"/>
<field name="status"
widget="statusbar"
@@ -85,7 +85,7 @@
class="oe_stat_button"
icon="fa-book"
width="250px"
- attrs="{'invisible': ['|', ('journal_refund_move_id', '=', False), ('journal_refund_state', '!=', 'posted')]}">
+ attrs="{'invisible': [('journal_refund_move_id', '=', False)]}">
<field name="journal_refund_move_id" string="Journal Refund" widget="statinfo"/>
</button>
</div>
@@ -163,8 +163,8 @@
</group>
<group>
<field name="bukti_refund_type" reqiured="1" attrs="{'readonly': [('is_locked', '=', True)]}"/>
- <field name="bukti_transfer_refund_pdf" widget="pdf_viewer" attrs="{'invisible': [('bukti_refund_type', '=', 'image')]}"/>
- <field name="bukti_transfer_refund_image" widget="image" attrs="{'invisible': [('bukti_refund_type', '=', 'pdf')]}"/>
+ <field name="bukti_transfer_refund_pdf" widget="pdf_viewer" attrs="{'invisible': [('bukti_refund_type', '=', 'image')], 'readonly': [('is_locked', '=', True)]}"/>
+ <field name="bukti_transfer_refund_image" widget="image" attrs="{'invisible': [('bukti_refund_type', '=', 'pdf')], 'readonly': [('is_locked', '=', True)]}"/>
</group>
</group>
</page>