summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-03-03 13:15:17 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-03-03 13:15:17 +0700
commite9836504e2c814652165cd1a7055e91a8b6ea854 (patch)
tree0b2abefc0153d00d8bcdebf0b099c3648a4e5674 /indoteknik_custom/models
parent7c675cd5bc9f45d2ebca33a63b7184cbb97f0f2f (diff)
<iman> CR customer commision jasper
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/commision.py65
1 files changed, 58 insertions, 7 deletions
diff --git a/indoteknik_custom/models/commision.py b/indoteknik_custom/models/commision.py
index 6920154a..67cc5a62 100644
--- a/indoteknik_custom/models/commision.py
+++ b/indoteknik_custom/models/commision.py
@@ -1,4 +1,4 @@
-from odoo import models, api, fields
+from odoo import models, api, fields, _
from odoo.exceptions import UserError
from datetime import datetime
import logging
@@ -121,6 +121,21 @@ class CustomerRebate(models.Model):
sum_dpp += invoice.price_subtotal
return sum_dpp
+class RejectReasonCommision(models.TransientModel):
+ _name = 'reject.reason.commision'
+ _description = 'Wizard for Reject Reason Customer Commision'
+
+ request_id = fields.Many2one('customer.commision', string='Request')
+ reason_reject = fields.Text(string='Reason for Rejection', required=True, tracking=True)
+
+ def confirm_reject(self):
+ commision = self.request_id
+ if commision:
+ commision.last_status = commision.status
+ commision.write({'reason_reject': self.reason_reject})
+ commision.status = 'reject'
+ return {'type': 'ir.actions.act_window_close'}
+
class CustomerCommision(models.Model):
_name = 'customer.commision'
@@ -136,10 +151,23 @@ class CustomerCommision(models.Model):
notification = fields.Char(string='Notification')
commision_lines = fields.One2many('customer.commision.line', 'customer_commision_id', string='Lines', auto_join=True)
status = fields.Selection([
+ ('draft', 'Menunggu Approval Manager Sales'),
+ ('pengajuan1', 'Menunggu Approval Marketing'),
+ ('pengajuan2', 'Menunggu Approval Pimpinan'),
+ ('pengajuan3', 'Menunggu Approval Accounting'),
+ ('pengajuan4', 'Menunggu Approval Finnence'),
+ ('approved', 'Approved'),
+ ('reject', 'Rejected'),
+ ], string='Status', copy=False, readonly=True, tracking=3, index=True, track_visibility='onchange',default='draft')
+ last_status = fields.Selection([
+ ('draft', 'Menunggu Approval Manager Sales'),
('pengajuan1', 'Menunggu Approval Marketing'),
('pengajuan2', 'Menunggu Approval Pimpinan'),
- ('approved', 'Approved')
- ], string='Status', copy=False, readonly=True, tracking=3)
+ ('pengajuan3', 'Menunggu Approval Accounting'),
+ ('pengajuan4', 'Menunggu Approval Finnence'),
+ ('approved', 'Approved'),
+ ('reject', 'Rejected'),
+ ], string='Status')
commision_percent = fields.Float(string='Commision %', tracking=3)
commision_amt = fields.Float(string='Commision Amount', tracking=3)
total_dpp = fields.Float(string='Total DPP', compute='_compute_total_dpp')
@@ -148,15 +176,18 @@ class CustomerCommision(models.Model):
('cashback', 'Cashback'),
('rebate', 'Rebate'),
], string='Commision Type', required=True)
- bank_name = fields.Char(string='Bank', tracking=3)
- account_name = fields.Char(string='Account Name', tracking=3)
- bank_account = fields.Char(string='Account No', tracking=3)
+ bank_name = fields.Char(string='Bank', tracking=3, required=True)
+ account_name = fields.Char(string='Account Name', tracking=3, required=True)
+ bank_account = fields.Char(string='Account No', tracking=3, required=True)
note_transfer = fields.Char(string='Keterangan')
brand_ids = fields.Many2many('x_manufactures', string='Brands')
payment_status = fields.Selection([
('pending', 'Pending'),
('payment', 'Payment'),
], string='Payment Status', copy=False, readonly=True, tracking=3, default='pending')
+ note_finnance = fields.Text('Notes Finnance')
+ reason_reject = fields.Char(string='Reason Reaject', tracking=True, track_visibility='onchange')
+
# add status for type of commision, fee, rebate / cashback
# include child or not?
@@ -220,11 +251,15 @@ class CustomerCommision(models.Model):
return result
def action_confirm_customer_commision(self):#add 2 step approval
- if not self.status:
+ if not self.status or self.status == 'draft':
self.status = 'pengajuan1'
elif self.status == 'pengajuan1' and self.env.user.id == 19:
self.status = 'pengajuan2'
elif self.status == 'pengajuan2' and self.env.user.is_leader:
+ self.status = 'pengajuan3'
+ elif self.status == 'pengajuan3' and self.env.user.id == 1272:
+ self.status = 'pengajuan4'
+ elif self.status == 'pengajuan4' and self.env.user.id == 23:
for line in self.commision_lines:
line.invoice_id.is_customer_commision = True
self.status = 'approved'
@@ -232,6 +267,21 @@ class CustomerCommision(models.Model):
raise UserError('Harus di approved oleh yang bersangkutan')
return
+ def action_reject(self):#add 2 step approval
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': _('Reject Reason'),
+ 'res_model': 'reject.reason.commision',
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'context': {'default_request_id': self.id},
+ }
+
+ def button_draft(self):
+ for commision in self:
+ commision.status = commision.last_status if commision.last_status else 'draft'
+
+
def action_confirm_customer_payment(self):
if self.status != 'approved':
raise UserError('Commision harus di approve terlebih dahulu sebelum di konfirmasi pembayarannya')
@@ -337,6 +387,7 @@ class CustomerCommisionLine(models.Model):
total = fields.Float(string='Total')
total_percent_margin = fields.Float('Total Margin', related='invoice_id.sale_id.total_percent_margin')
product_id = fields.Many2one('product.product', string='Product')
+ sale_order_id = fields.Many2one('sale.order', string='Sale Order', related='invoice_id.sale_id')
class AccountMove(models.Model):
_inherit = 'account.move'