summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/user_pengajuan_tempo_request.py
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-05-14 09:23:14 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-05-14 09:23:14 +0700
commitf120c760c6a837681ebed26d9eea33a8961cd1aa (patch)
tree728ecdd5ffd1530d97d58a9f18b850186b39aa67 /indoteknik_custom/models/user_pengajuan_tempo_request.py
parenta571531bd8626f9bee25e89c62bbd9268ed30597 (diff)
parent2469ee37cfe854f0419a8c3fbabed5bc32bcaa6e (diff)
Merge branch 'odoo-backup' into CR/form-merchant
# Conflicts: # indoteknik_custom/models/__init__.py # indoteknik_custom/security/ir.model.access.csv
Diffstat (limited to 'indoteknik_custom/models/user_pengajuan_tempo_request.py')
-rw-r--r--indoteknik_custom/models/user_pengajuan_tempo_request.py93
1 files changed, 75 insertions, 18 deletions
diff --git a/indoteknik_custom/models/user_pengajuan_tempo_request.py b/indoteknik_custom/models/user_pengajuan_tempo_request.py
index b43f56ac..565b0315 100644
--- a/indoteknik_custom/models/user_pengajuan_tempo_request.py
+++ b/indoteknik_custom/models/user_pengajuan_tempo_request.py
@@ -7,7 +7,7 @@ class RejectReasonWizard(models.TransientModel):
_description = 'Wizard for Reject Reason'
request_id = fields.Many2one('user.pengajuan.tempo.request', string='Request')
- reason_reject = fields.Text(string='Reason for Rejection', required=True)
+ reason_reject = fields.Text(string='Reason for Rejection', required=True, tracking=True)
def confirm_reject(self):
tempo = self.request_id
@@ -55,7 +55,27 @@ class UserPengajuanTempoRequest(models.Model):
('approval_director', 'Approved by Director'),
('reject', 'Rejected'),
], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft')
- reason_reject = fields.Char(string='Limit Tempo')
+ last_state_tempo = fields.Selection([
+ ('draft', 'Pengajuan Tempo'),
+ ('approval_sales', 'Approved by Sales Manager'),
+ ('approval_finance', 'Approved by Finance'),
+ ('approval_director', 'Approved by Director'),
+ ('reject', 'Rejected'),
+ ], string='Status',)
+ reason_reject = fields.Char(string='Reason Reaject', tracking=True, track_visibility='onchange')
+ state_tempo_text = fields.Char(string="Status", compute="_compute_state_tempo_text")
+
+ @api.depends('state_tempo')
+ def _compute_state_tempo_text(self):
+ for record in self:
+ status_mapping = {
+ 'draft': "Menunggu Approve Manager",
+ 'approval_sales': "Menunggu Approve Finance",
+ 'approval_finance': "Menunggu Approve Direktur",
+ 'approval_director': "Approved",
+ 'reject': "Rejected",
+ }
+ record.state_tempo_text = status_mapping.get(record.state_tempo, "Unknown")
# informasi perusahaan
name_tempo = fields.Many2one('res.partner', string='Nama Perusahaan', related='pengajuan_tempo_id.name_tempo', store=True, tracking=True, readonly=False)
@@ -71,7 +91,7 @@ class UserPengajuanTempoRequest(models.Model):
website_tempo = fields.Char(string='Website', related='pengajuan_tempo_id.website_tempo', store=True, tracking=True, readonly=False)
portal = fields.Boolean(string='Portal Website', related='pengajuan_tempo_id.portal', store=True, tracking=True, readonly=False)
estimasi_tempo = fields.Char(string='Estimasi Pembelian Pertahun', related='pengajuan_tempo_id.estimasi_tempo', store=True, tracking=True, readonly=False)
- tempo_duration_origin = fields.Many2one('account.payment.term', string='Durasi Tempo', related='pengajuan_tempo_id.tempo_duration', store=True, tracking=True, readonly=False, domain=[('id', 'in', [24, 25, 29, 32])])
+ tempo_duration_origin = fields.Many2one('account.payment.term', string='Durasi Tempo', related='tempo_duration', store=True, tracking=True, readonly=False, domain=[('id', 'in', [24, 25, 29, 32])])
tempo_limit_origin = fields.Char(string='Limit Tempo', related='pengajuan_tempo_id.tempo_limit' , store=True, tracking=True, readonly=False)
category_produk_ids = fields.Many2many('product.public.category', string='Kategori Produk yang Digunakan', related='pengajuan_tempo_id.category_produk_ids', readonly=False)
@@ -88,16 +108,18 @@ class UserPengajuanTempoRequest(models.Model):
# Pengiriman
pic_tittle = fields.Char(string='Tittle PIC Penerimaan Barang', related='pengajuan_tempo_id.pic_tittle', store=True, readonly=False)
+ pic_mobile = fields.Char(string='Nomor HP PIC Penerimaan Barang', related='pengajuan_tempo_id.pic_mobile', store=True, readonly=False)
pic_name = fields.Char(string='Nama PIC Penerimaan Barang', related='pengajuan_tempo_id.pic_name', store=True, readonly=False)
- street_pengiriman = fields.Char(string="Alamat Perusahaan", related='pengajuan_tempo_id.street_pengiriman', store=True, readonly=False)
+ street_pengiriman = fields.Char(string="Alamat Pengiriman Barang", related='pengajuan_tempo_id.street_pengiriman', store=True, readonly=False)
state_id_pengiriman = fields.Many2one('res.country.state', string='State', related='pengajuan_tempo_id.state_id_pengiriman', store=True, readonly=False)
city_id_pengiriman = fields.Many2one('vit.kota', string='City', related='pengajuan_tempo_id.city_id_pengiriman', store=True, readonly=False)
district_id_pengiriman = fields.Many2one('vit.kecamatan', string='Kecamatan',related='pengajuan_tempo_id.district_id_pengiriman', store=True, readonly=False)
subDistrict_id_pengiriman = fields.Many2one('vit.kelurahan', string='Kelurahan', related='pengajuan_tempo_id.subDistrict_id_pengiriman', store=True, readonly=False)
zip_pengiriman = fields.Char(string="Zip", related='pengajuan_tempo_id.zip_pengiriman', store=True, readonly=False)
invoice_pic_tittle = fields.Char(string='Tittle PIC Penerimaan Invoice', related='pengajuan_tempo_id.invoice_pic_tittle', store=True, readonly=False)
+ invoice_pic_mobile = fields.Char(string='Nomor HP PIC Penerimaan Invoice', related='pengajuan_tempo_id.invoice_pic_mobile', store=True, readonly=False)
invoice_pic = fields.Char(string='Nama PIC Penerimaan Invoice', related='pengajuan_tempo_id.invoice_pic', store=True, readonly=False)
- street_invoice = fields.Char(string="Alamat Perusahaan", related='pengajuan_tempo_id.street_invoice', store=True, readonly=False)
+ street_invoice = fields.Char(string="Alamat Pengiriman Invoice", related='pengajuan_tempo_id.street_invoice', store=True, readonly=False)
state_id_invoice = fields.Many2one('res.country.state', string='State', related='pengajuan_tempo_id.state_id_invoice', store=True, readonly=False)
city_id_invoice = fields.Many2one('vit.kota', string='City', related='pengajuan_tempo_id.city_id_invoice', store=True, readonly=False)
district_id_invoice = fields.Many2one('vit.kecamatan', string='Kecamatan', related='pengajuan_tempo_id.district_id_invoice', store=True, readonly=False)
@@ -110,7 +132,14 @@ class UserPengajuanTempoRequest(models.Model):
dokumen_invoice = fields.Char(string='Dokumen yang dilampirkan saat Pengiriman Invoice', related='pengajuan_tempo_id.dokumen_invoice', store=True, readonly=False)
is_same_address = fields.Boolean(string="Same Address pengiriman invoicr dan alamat pengiriman barang", related='pengajuan_tempo_id.is_same_address', store=True, readonly=False)
is_same_address_street = fields.Boolean(string="Same Address pengiriman barang dan alamat bisnis", related='pengajuan_tempo_id.is_same_address_street', store=True, readonly=False)
-
+ dokumen_prosedur = fields.Many2many(
+ 'ir.attachment',
+ 'dokumen_prosedur_rel',
+ string="Dokumen Prosedur",
+ related='pengajuan_tempo_id.dokumen_prosedur',
+ readonly=False,
+ tracking=3
+ )
#Referensi
supplier_ids = fields.Many2many('user.pengajuan.tempo.line',related='pengajuan_tempo_id.supplier_ids', string="Suppliers", readonly=False)
@@ -272,16 +301,17 @@ class UserPengajuanTempoRequest(models.Model):
self.pengajuan_tempo_id.finance_mobile = self.finance_mobile
self.pengajuan_tempo_id.finance_email = self.finance_email
- @api.onchange('pic_tittle', 'pic_name', 'street_pengiriman', 'state_id_pengiriman', 'city_id_pengiriman',
+ @api.onchange('pic_tittle','pic_mobile', 'pic_name', 'street_pengiriman', 'state_id_pengiriman', 'city_id_pengiriman',
'zip_pengiriman', 'district_id_pengiriman', 'subDistrict_id_pengiriman'
- 'invoice_pic_tittle', 'invoice_pic', 'street_invoice', 'state_id_invoice', 'city_id_invoice',
+ 'invoice_pic_tittle','invoice_pic_mobile', 'invoice_pic', 'street_invoice', 'state_id_invoice', 'city_id_invoice',
'district_id_invoice', 'subDistrict_id_invoice', 'zip_invoice',
'tukar_invoice', 'jadwal_bayar', 'dokumen_pengiriman', 'dokumen_pengiriman_input', 'dokumen_invoice',
- 'is_same_address', 'is_same_address_street')
+ 'is_same_address', 'is_same_address_street','dokumen_prosedur')
def _onchange_related_fields_pengiriman(self):
if self.pengajuan_tempo_id:
# Perbarui nilai di pengajuan_tempo_id
self.pengajuan_tempo_id.pic_tittle = self.pic_tittle
+ self.pengajuan_tempo_id.pic_mobile = self.pic_mobile
self.pengajuan_tempo_id.pic_name = self.pic_name
self.pengajuan_tempo_id.street_pengiriman = self.street_pengiriman
self.pengajuan_tempo_id.state_id_pengiriman = self.state_id_pengiriman
@@ -290,6 +320,7 @@ class UserPengajuanTempoRequest(models.Model):
self.pengajuan_tempo_id.subDistrict_id_pengiriman = self.subDistrict_id_pengiriman
self.pengajuan_tempo_id.zip_pengiriman = self.zip_pengiriman
self.pengajuan_tempo_id.invoice_pic_tittle = self.invoice_pic_tittle
+ self.pengajuan_tempo_id.invoice_pic_mobile = self.invoice_pic_mobile
self.pengajuan_tempo_id.invoice_pic = self.invoice_pic
self.pengajuan_tempo_id.street_invoice = self.street_invoice
self.pengajuan_tempo_id.state_id_invoice = self.state_id_invoice
@@ -304,6 +335,7 @@ class UserPengajuanTempoRequest(models.Model):
self.pengajuan_tempo_id.dokumen_invoice = self.dokumen_invoice
self.pengajuan_tempo_id.is_same_address = self.is_same_address
self.pengajuan_tempo_id.is_same_address_street = self.is_same_address_street
+ self.pengajuan_tempo_id.dokumen_prosedur = self.dokumen_prosedur
@api.onchange('supplier_ids')
def _onchange_supplier_ids(self):
@@ -317,7 +349,6 @@ class UserPengajuanTempoRequest(models.Model):
def _onchange_related_fields_dokumen(self):
if self.pengajuan_tempo_id:
# Perbarui nilai di pengajuan_tempo_id
- self.pengajuan_tempo_id.dokumen_nib = self.dokumen_nib
self.pengajuan_tempo_id.dokumen_siup = self.dokumen_siup
self.pengajuan_tempo_id.dokumen_tdp = self.dokumen_tdp
self.pengajuan_tempo_id.dokumen_skdp = self.dokumen_skdp
@@ -334,13 +365,13 @@ class UserPengajuanTempoRequest(models.Model):
@api.onchange('tempo_duration')
def _tempo_duration_change(self):
for tempo in self:
- if tempo.env.user.id not in (7, 377, 12182):
+ if tempo.env.user.id not in (7, 688, 28, 377, 12182):
raise UserError("Durasi tempo hanya bisa di ubah oleh Sales Manager atau Direktur")
@api.onchange('tempo_limit')
def _onchange_tempo_limit(self):
for tempo in self:
- if tempo.env.user.id not in (7, 377, 12182):
+ if tempo.env.user.id not in (7, 688, 28, 377, 12182):
raise UserError("Limit tempo hanya bisa diubah oleh Sales Manager atau Direktur")
def button_approve(self):
for tempo in self:
@@ -409,6 +440,9 @@ class UserPengajuanTempoRequest(models.Model):
'target': 'new',
'context': {'default_request_id': self.id},
}
+ def button_draft(self):
+ for tempo in self:
+ tempo.state_tempo = tempo.last_state_tempo if tempo.last_state_tempo else 'draft'
def write(self, vals):
is_approve = True if self.state_tempo == 'approval_director' or vals.get('state_tempo') == 'approval_director' else False
@@ -486,6 +520,7 @@ class UserPengajuanTempoRequest(models.Model):
{
"type": "delivery",
"name": self.pengajuan_tempo_id.pic_name,
+ "phone": self.pengajuan_tempo_id.pic_mobile,
"street": self.pengajuan_tempo_id.street_pengiriman,
"state_id": self.pengajuan_tempo_id.state_id_pengiriman.id,
"kota_id": self.pengajuan_tempo_id.city_id_pengiriman.id,
@@ -496,6 +531,7 @@ class UserPengajuanTempoRequest(models.Model):
{
"type": "invoice",
"name": self.pengajuan_tempo_id.invoice_pic,
+ "phone": self.pengajuan_tempo_id.invoice_pic_mobile,
"street": self.pengajuan_tempo_id.street_invoice,
"state_id": self.pengajuan_tempo_id.state_id_invoice.id,
"kota_id": self.pengajuan_tempo_id.city_id_invoice.id,
@@ -507,10 +543,25 @@ class UserPengajuanTempoRequest(models.Model):
# Buat kontak baru untuk company_id
for contact_data in contacts_data:
- self.env['res.partner'].create({
- "parent_id": self.user_company_id.id, # Hubungkan ke perusahaan
- **contact_data, # Tambahkan data kontak
- })
+ existing_contact = self.env['res.partner'].search([
+ ('parent_id', '=', self.user_company_id.id),
+ ('name', '=', contact_data['name'])
+ ], limit=1)
+
+ if not existing_contact:
+ # Pastikan tidak ada partner lain dengan nama yang sama sebelum membuat baru
+ duplicate_check = self.env['res.partner'].search([
+ ('name', '=', contact_data['name'])
+ ], limit=1)
+
+ if duplicate_check:
+ # Jika nama sudah ada tetapi di perusahaan lain, tambahkan nama perusahaan
+ contact_data['name'] = f"{contact_data['name']} ({self.user_company_id.name})"
+
+ self.env['res.partner'].create({
+ "parent_id": self.user_company_id.id, # Hubungkan ke perusahaan
+ **contact_data, # Tambahkan data kontak
+ })
# Pengiriman
self.user_company_id.pic_name = self.pengajuan_tempo_id.pic_name
@@ -532,6 +583,10 @@ class UserPengajuanTempoRequest(models.Model):
self.user_company_id.dokumen_pengiriman = self.pengajuan_tempo_id.dokumen_pengiriman
self.user_company_id.dokumen_pengiriman_input = self.pengajuan_tempo_id.dokumen_pengiriman_input
self.user_company_id.dokumen_invoice = self.pengajuan_tempo_id.dokumen_invoice
+ self.user_company_id.dokumen_prosedur = self.pengajuan_tempo_id.dokumen_prosedur[0] if self.pengajuan_tempo_id.dokumen_prosedur else []
+ if self.user_company_id.dokumen_prosedur:
+ self.user_company_id.message_post(body='Dokumen Prosedur',
+ attachment_ids=[self.user_company_id.dokumen_prosedur.id])
# Referensi
self.user_company_id.supplier_ids = self.pengajuan_tempo_id.supplier_ids
@@ -541,6 +596,8 @@ class UserPengajuanTempoRequest(models.Model):
if self.user_company_id.dokumen_npwp:
self.user_company_id.message_post(body='Dokumen NPWP', attachment_ids=[self.user_company_id.dokumen_npwp.id])
+
+
self.user_company_id.dokumen_sppkp = self.pengajuan_tempo_id.dokumen_sppkp[0] if self.pengajuan_tempo_id.dokumen_sppkp else []
if self.user_company_id.dokumen_sppkp:
self.user_company_id.message_post(body='Dokumen SPPKP', attachment_ids=[self.user_company_id.dokumen_sppkp.id])
@@ -596,10 +653,10 @@ class UserPengajuanTempoRequest(models.Model):
attachment_ids=[self.user_company_id.dokumen_tempat_bekerja.id])
# self.user_company_id.active = True
# user.send_company_request_approve_mail()
- self.user_company_id.property_payment_term_id = self.pengajuan_tempo_id.tempo_duration.id
+ self.user_company_id.property_payment_term_id = self.tempo_duration.id
self.user_company_id.active_limit = True
- self.user_company_id.warning_stage = float(limit_tempo) - (float(limit_tempo)/2)
self.user_company_id.blocking_stage = limit_tempo
+ self.user_company_id.warning_stage = float(limit_tempo) - (float(limit_tempo)/2)
# Internal Notes
comment = []