diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-10-26 14:01:20 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-10-26 14:01:20 +0700 |
| commit | 4588b8df03628821dce6eb6029ac4bcd5065aba8 (patch) | |
| tree | 922dfb3db3cb0577bd47512cf0057de1a5fa0229 | |
| parent | 907db76e2edfa56186c188e319fdd4bc59383769 (diff) | |
<iman> add pengajuan tempo
| -rw-r--r-- | indoteknik_custom/models/res_partner.py | 127 | ||||
| -rwxr-xr-x | indoteknik_custom/security/ir.model.access.csv | 1 | ||||
| -rw-r--r-- | indoteknik_custom/views/res_partner.xml | 73 |
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> |
