summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-10-26 14:01:20 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-10-26 14:01:20 +0700
commit4588b8df03628821dce6eb6029ac4bcd5065aba8 (patch)
tree922dfb3db3cb0577bd47512cf0057de1a5fa0229
parent907db76e2edfa56186c188e319fdd4bc59383769 (diff)
<iman> add pengajuan tempo
-rw-r--r--indoteknik_custom/models/res_partner.py127
-rwxr-xr-xindoteknik_custom/security/ir.model.access.csv1
-rw-r--r--indoteknik_custom/views/res_partner.xml73
3 files changed, 173 insertions, 28 deletions
diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py
index 25db16d0..bf7c45ad 100644
--- a/indoteknik_custom/models/res_partner.py
+++ b/indoteknik_custom/models/res_partner.py
@@ -2,14 +2,88 @@ from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError
from datetime import datetime
+
class GroupPartner(models.Model):
_name = 'group.partner'
name = fields.Char(string='Name')
+class PengajuanTempoSupplier(models.Model):
+ _name = 'pengajuan.tempo.supplier'
+
+ # Fields untuk tabel supplier
+ name_supplier = fields.Char(string="Nama Supplier")
+ pic_name = fields.Char(string="PIC")
+ phone = fields.Char(string="Telepon")
+ tempo_duration = fields.Char(string="Durasi Tempo")
+ credit_limit = fields.Char(string="Credit Limit")
+ pengajuan_tempo_id = fields.Many2one('new.pengajuan.tempo', string="Pengajuan Tempo", ondelete='cascade')
+
+class NewPengajuanTempo(models.Model):
+ _name = 'new.pengajuan.tempo'
+ _inherit = 'pengajuan.tempo.supplier'
+
+ # informasi perusahaan
+ name_tempo = fields.Char(string="Nama Perusahaan")
+ industry_id_tempo = fields.Many2one('res.partner.industry', 'Customer Industry', readonly=True)
+ street_tempo = fields.Char(string="Alamat Perusahaan")
+ state_id_tempo = fields.Many2one('res.country.state', string='State')
+ city_id_tempo = fields.Many2one('vit.kota', string='City')
+ zip_tempo = fields.Char(string="Zip")
+ mobile_tempo = fields.Char(string="No. Telfon Perusahaan")
+ bank_name_tempo = fields.Char(string="Nama Bank")
+ account_name_tempo = fields.Char(string="Nama Rekening")
+ account_number_tempo = fields.Char(string="Nomor Rekening Bank")
+ website_tempo = fields.Char(string='Website')
+ estimasi_tempo = fields.Char(string='Estimasi Pembelian Pertahun')
+ tempo_duration = fields.Char(string='Durasi Tempo')
+ tempo_limit = fields.Char(string='Limit Tempo')
+ category_produk_ids = fields.Many2many('product.public.category', string='Kategori Produk yang Digunakan', domain=lambda self: self._get_default_category_domain())
+
+ @api.model
+ def _get_default_category_domain(self):
+ return [('parent_id', '=', False)]
+
+ # Kontak Perusahaan
+ direktur_name = fields.Char(string='Nama Lengkap Direktur')
+ direktur_mobile = fields.Char(string='No. Telpon Direktur')
+ direktur_email = fields.Char(string='Email Direktur')
+ purchasing_name = fields.Char(string='Nama Purchasing')
+ purchasing_mobile = fields.Char(string='No. Telpon Purchasing')
+ purchasing_email = fields.Char(string='Email Purchasing')
+ finance_name = fields.Char(string='Nama Finance')
+ finance_mobile = fields.Char(string='No. Telpon Finance')
+ finance_email = fields.Char(string='Email Finance')
+
+ # Pengiriman
+ pic_name = fields.Char(string='Nama PIC Penerimaan Barang')
+ street_pengiriman = fields.Char(string="Alamat Perusahaan")
+ state_id_pengiriman = fields.Many2one('res.country.state', string='State')
+ city_id_pengiriman = fields.Many2one('vit.kota', string='City')
+ zip_pengiriman = fields.Char(string="Zip")
+ invoice_pic = fields.Char(string='Nama PIC Penerimaan Invoice')
+ street_invoice = fields.Char(string="Alamat Perusahaan")
+ country_id_invoice = fields.Many2one('res.country', string='Country')
+ state_id_invoice = fields.Many2one('res.country.state', string='State')
+ city_id_invoice = fields.Many2one('vit.kota', string='City')
+ tukar_invoice = fields.Char(string='Jadwal Penukaran Invoice')
+ jadwal_bayar = fields.Char(string='Jadwal Pembayaran')
+ dokumen_pengiriman = fields.Char(string='Dokumen saat Pengiriman Barang')
+ dokumen_invoice = fields.Char(string='Dokumen yang dilampirkan saat Pengiriman Invoice')
+
+ # Referensi
+ # supplier_ids = fields.One2many('pengajuan.tempo.supplier',)
+ # category_id = fields.Many2one('product.public.category', string='Category Level 1')
+ supplier_ids = fields.One2many('pengajuan.tempo.supplier', 'pengajuan_tempo_id', string="Suppliers")
+
+
+
class ResPartner(models.Model):
- _inherit = 'res.partner'
+ _name = 'res.partner'
+ _inherit = ['res.partner', 'new.pengajuan.tempo']
+ # Relasi ke web.pengajuan.tempo
+ pengajuan_tempo_id = fields.Many2one('web.pengajuan.tempo', string="Pengajuan Tempo")
reference_number = fields.Char(string="Reference Number")
company_type_id = fields.Many2one('res.partner.company_type', string='Company Type')
custom_pricelist_id = fields.Many2one('product.pricelist', string='Price Matrix')
@@ -25,7 +99,7 @@ class ResPartner(models.Model):
digital_invoice_tax = fields.Boolean(string="Digital Invoice & Faktur Pajak")
is_potential = fields.Boolean(string='Potential')
pakta_integritas = fields.Boolean(string='Pakta Integritas')
-
+
use_so_approval = fields.Boolean(string='Use SO Approval')
use_only_ready_stock = fields.Boolean(string='Use Only Ready Stock')
web_role = fields.Selection([
@@ -66,23 +140,22 @@ class ResPartner(models.Model):
if partner.company_type == 'person' and not partner.parent_id:
partner.alamat_lengkap_text = partner.street
# if partner.company_type == 'person' and partner.parent_id:
- # partner.alamat_lengkap_text = partner.parent_id.alamat_lengkap_text
-
+ # partner.alamat_lengkap_text = partner.parent_id.alamat_lengkap_text
- alamat_lengkap_text = fields.Text(string="Alamat Lengkap", required=False , tracking=3)
+ alamat_lengkap_text = fields.Text(string="Alamat Lengkap", required=False, tracking=3)
def write(self, vals):
res = super(ResPartner, self).write(vals)
- #
- # # if 'property_payment_term_id' in vals:
- # # if not self.env.user.is_accounting and vals['property_payment_term_id'] != 26:
- # # raise UserError('Hanya Finance Accounting yang dapat merubah payment term')
- #
- # # group_id = self.env.ref('indoteknik_custom.group_role_merchandiser').id
- # # users_in_group = self.env['res.users'].search([('groups_id', 'in', [group_id])])
- # # if self.env.user.id not in users_in_group.mapped('id'):
- # # raise UserError('You name it')
- #
+ #
+ # # if 'property_payment_term_id' in vals:
+ # # if not self.env.user.is_accounting and vals['property_payment_term_id'] != 26:
+ # # raise UserError('Hanya Finance Accounting yang dapat merubah payment term')
+ #
+ # # group_id = self.env.ref('indoteknik_custom.group_role_merchandiser').id
+ # # users_in_group = self.env['res.users'].search([('groups_id', 'in', [group_id])])
+ # # if self.env.user.id not in users_in_group.mapped('id'):
+ # # raise UserError('You name it')
+ #
return res
def write(self, vals):
@@ -139,7 +212,8 @@ class ResPartner(models.Model):
# res = super(ResPartner, self).write(vals)
# return res
- @api.depends('company_type', 'parent_id', 'npwp', 'sppkp', 'nama_wajib_pajak','alamat_lengkap_text', 'industry_id', 'company_type_id')
+ @api.depends('company_type', 'parent_id', 'npwp', 'sppkp', 'nama_wajib_pajak', 'alamat_lengkap_text', 'industry_id',
+ 'company_type_id')
def _related_fields(self):
for partner in self:
if partner.company_type == 'person' and partner.parent_id:
@@ -156,7 +230,7 @@ class ResPartner(models.Model):
for rec in self:
rec.user_payment_terms_sales = self.env.user.id
rec.date_payment_terms_sales = datetime.utcnow()
-
+
@api.constrains('property_supplier_payment_term_id')
def updated_by_payment_term(self):
for rec in self:
@@ -175,15 +249,15 @@ class ResPartner(models.Model):
rec.state_id = site.state_id
rec.country_id = site.country_id
rec.zip = site.zip
-
+
def get_main_parent(self):
partner = self
-
+
while partner.parent_id:
partner = partner.parent_id
-
+
return partner
-
+
def _compute_main_parent_id(self):
for partner in self:
partner.main_parent_id = partner.get_main_parent()
@@ -195,14 +269,14 @@ class ResPartner(models.Model):
partner_child_ids += [x['id'] for x in partner.parent_id.child_ids]
partner_child_ids += [partner.parent_id.id]
return partner_child_ids
-
+
def get_approve_partner_ids(self, type=False):
parent = self.parent_id or self
partners = self.search([('parent_id', '=', parent.id), ('web_role', '!=', False)])
-
+
if type == 'email_comma_sep':
return ",".join([x.email for x in partners])
-
+
return partners
@api.constrains('kota_id')
@@ -213,11 +287,8 @@ class ResPartner(models.Model):
def unlink(self):
if self._name == 'res.partner':
raise UserError('Maaf anda tidak bisa delete contact')
-
+
@api.onchange('customer_type')
def _onchange_customer_type(self):
if self.customer_type == 'nonpkp':
self.npwp = '00.000.000.0-000.000'
-
-
-
diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv
index 553047e6..398a3067 100755
--- a/indoteknik_custom/security/ir.model.access.csv
+++ b/indoteknik_custom/security/ir.model.access.csv
@@ -143,3 +143,4 @@ access_vendor_approval_line,access.vendor.approval.line,model_vendor_approval_li
access_vit_kota,access.vit.kota,model_vit_kota,,1,1,1,1
access_v_brand_product_category,access.v.brand.product.category,model_v_brand_product_category,,1,1,1,1
access_web_find_page,access.web.find.page,model_web_find_page,,1,1,1,1
+access_pengajuan_tempo_supplier,access_pengajuan_tempo_supplier,model_pengajuan_tempo_supplier,base.group_user,1,1,1,1 \ No newline at end of file
diff --git a/indoteknik_custom/views/res_partner.xml b/indoteknik_custom/views/res_partner.xml
index 6d02a86b..278f6d44 100644
--- a/indoteknik_custom/views/res_partner.xml
+++ b/indoteknik_custom/views/res_partner.xml
@@ -71,6 +71,79 @@
<xpath expr="//field[@name='property_supplier_payment_term_id']" position="attributes">
<attribute name="readonly">1</attribute>
</xpath>
+ <notebook>
+ <page string="Pengajuan Tempo">
+ <group col="2">
+ <group string="Informasi Usaha" colspan="1">
+ <field name="name_tempo" />
+ <field name="industry_id_tempo"/>
+ <field name="street_tempo" />
+ <field name="state_id_tempo" />
+ <field name="city_id_tempo" />
+ <field name="zip_tempo" />
+ <field name="mobile_tempo" />
+ <field name="bank_name_tempo" />
+ <field name="account_name_tempo"/>
+ <field name="account_number_tempo"/>
+ <field name="website_tempo"/>
+ <field name="estimasi_tempo"/>
+ <field name="tempo_duration"/>
+ <field name="tempo_limit"/>
+ <field name="category_produk_ids" widget="many2many_tags"/>
+ </group>
+ <group string="Kontak Person" colspan="1">
+ <field name="direktur_name" />
+ <field name="direktur_mobile"/>
+ <field name="direktur_email" />
+ <field name="purchasing_name" />
+ <field name="purchasing_mobile" />
+ <field name="purchasing_email" />
+ <field name="finance_name" />
+ <field name="finance_mobile" />
+ <field name="finance_email" />
+ </group>
+
+ </group>
+ <group col="2">
+ <group string="Pengiriman" colspan="1">
+ <field name="pic_name" />
+ <field name="street_pengiriman" />
+ <field name="state_id_pengiriman" />
+ <field name="city_id_pengiriman" />
+ <field name="zip_pengiriman" />
+ <field name="invoice_pic" />
+ <field name="street_invoice" />
+ <field name="country_id_invoice" />
+ <field name="state_id_invoice" />
+ <field name="city_id_invoice" />
+ <field name="tukar_invoice" />
+ <field name="jadwal_bayar" />
+ <field name="dokumen_pengiriman" />
+ <field name="dokumen_invoice" />
+ <field name="supplier_ids">
+ <tree editable="bottom">
+ <field name="name_supplier" string="Nama Supplier"/>
+ <field name="pic_name" string="PIC"/>
+ <field name="phone" string="Telepon"/>
+ <field name="tempo_duration" string="Durasi Tempo"/>
+ <field name="credit_limit" string="Credit Limit"/>
+ </tree>
+ </field>
+ </group>
+<!-- <group string="Referensi Supplier / Rekanan Bisnis Perusahaan" colspan="1">-->
+<!-- <field name="supplier_ids">-->
+<!-- <tree>-->
+<!-- <field name="name_supplier" string="Nama Supplier"/>-->
+<!-- <field name="pic_name" string="PIC"/>-->
+<!-- <field name="phone" string="Telepon"/>-->
+<!-- <field name="tempo_duration" string="Durasi Tempo"/>-->
+<!-- <field name="credit_limit" string="Credit Limit"/>-->
+<!-- </tree>-->
+<!-- </field>-->
+<!-- </group>-->
+ </group>
+ </page>
+ </notebook>
</field>
</record>
</data>