From 4588b8df03628821dce6eb6029ac4bcd5065aba8 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Sat, 26 Oct 2024 14:01:20 +0700 Subject: add pengajuan tempo --- indoteknik_custom/models/res_partner.py | 127 +++++++++++++++++++++++++------- 1 file changed, 99 insertions(+), 28 deletions(-) (limited to 'indoteknik_custom/models/res_partner.py') 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' - - - -- cgit v1.2.3 From d8c12d085edbd81d974555780b16421c7b155f7f Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Thu, 31 Oct 2024 13:49:23 +0700 Subject: update pengajuan tempo final --- indoteknik_custom/models/res_partner.py | 103 +++++++++++++++++++++++--------- 1 file changed, 76 insertions(+), 27 deletions(-) (limited to 'indoteknik_custom/models/res_partner.py') diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index bf7c45ad..c2b54dd9 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -8,23 +8,74 @@ class GroupPartner(models.Model): 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' +# +# # Referensi +# supplier_ids = fields.One2many('pengajuan.tempo.line', 'pengajuan_tempo_id', string="Suppliers") +# +# # 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') -class NewPengajuanTempo(models.Model): - _name = 'new.pengajuan.tempo' - _inherit = 'pengajuan.tempo.supplier' + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + # Referensi + supplier_ids = fields.One2many('user.pengajuan.tempo.line', 'pengajuan_tempo_partner', string="Suppliers") # informasi perusahaan - name_tempo = fields.Char(string="Nama Perusahaan") + name_tempo = fields.Many2one( + 'res.partner', string='Nama Perusahaan', + tracking=True, # Menambahkan tracking=True + ) 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') @@ -38,7 +89,8 @@ class NewPengajuanTempo(models.Model): 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()) + 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): @@ -63,7 +115,6 @@ class NewPengajuanTempo(models.Model): 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') @@ -71,19 +122,17 @@ class NewPengajuanTempo(models.Model): 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): - _name = 'res.partner' - _inherit = ['res.partner', 'new.pengajuan.tempo'] + # Dokumen + dokumen_nib = fields.Many2one('ir.attachment', string="NIB (SIUP/TDP/SKDP)", tracking=3, readonly=True,) + dokumen_npwp = fields.Many2one('ir.attachment', string="NPWP Perusahaan", tracking=3, readonly=True) + dokumen_sppkp = fields.Many2one('ir.attachment', string="SPPKP Perusahaan", tracking=3, readonly=True) + dokumen_akta_perubahan = fields.Many2one('ir.attachment', string="Akta Perubahan", tracking=3, readonly=True) + dokumen_ktp_dirut = fields.Many2one('ir.attachment', string="KTP Dirut/Direktur", tracking=3, readonly=True) + dokumen_akta_pendirian = fields.Many2one('ir.attachment', string="Akta Pendirian", tracking=3, readonly=True) + dokumen_laporan_keuangan = fields.Many2one('ir.attachment', string="Laporan Keuangan", tracking=3, readonly=True) + dokumen_foto_kantor = fields.Many2one('ir.attachment', string=" Foto Kantor (Tampak Depan)", tracking=3, readonly=True) + dokumen_tempat_bekerja = fields.Many2one('ir.attachment', string="Tempat Bekerja", tracking=3, readonly=True) - # 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') -- cgit v1.2.3 From 414ced359c181c612b302376cb740c7f5c02075f Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Thu, 31 Oct 2024 16:06:40 +0700 Subject: update pengajuan tempo fix suplier ids --- indoteknik_custom/models/res_partner.py | 174 ++++++++++++++++++++------------ 1 file changed, 107 insertions(+), 67 deletions(-) (limited to 'indoteknik_custom/models/res_partner.py') diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index 017c7c96..ec027ec1 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -8,74 +8,14 @@ class GroupPartner(models.Model): name = fields.Char(string='Name') - -# class NewPengajuanTempo(models.Model): -# _name = 'new.pengajuan.tempo' -# -# # Referensi -# supplier_ids = fields.One2many('pengajuan.tempo.line', 'pengajuan_tempo_id', string="Suppliers") -# -# # 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') - - - class ResPartner(models.Model): _inherit = 'res.partner' # Referensi - supplier_ids = fields.One2many('user.pengajuan.tempo.line', 'pengajuan_tempo_partner', string="Suppliers") + supplier_ids = fields.Many2many('user.pengajuan.tempo.line', string="Suppliers") # informasi perusahaan - name_tempo = fields.Many2one( - 'res.partner', string='Nama Perusahaan', - tracking=True, # Menambahkan tracking=True - ) + name_tempo = fields.Many2one('res.partner', string='Nama Perusahaan',tracking=True) 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') @@ -89,8 +29,7 @@ class ResPartner(models.Model): 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()) + 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): @@ -235,8 +174,63 @@ class ResPartner(models.Model): vals['sppkp'] = vals.get('sppkp', self.sppkp) vals['alamat_lengkap_text'] = vals.get('alamat_lengkap_text', self.alamat_lengkap_text) vals['industry_id'] = vals.get('industry_id', self.industry_id.id if self.industry_id else None) - vals['company_type_id'] = vals.get('company_type_id', - self.company_type_id.id if self.company_type_id else None) + vals['company_type_id'] = vals.get('company_type_id', self.company_type_id.id if self.company_type_id else None) + + # Referensi + vals['supplier_ids'] = vals.get('supplier_ids', self.supplier_ids) + + # informasi perusahaan + vals['name_tempo'] = vals.get('name_tempo', self.name_tempo) + vals['industry_id_tempo'] = vals.get('industry_id_tempo', self.industry_id_tempo) + vals['street_tempo'] = vals.get('street_tempo', self.street_tempo) + vals['state_id_tempo'] = vals.get('state_id_tempo', self.state_id_tempo) + vals['city_id_tempo'] = vals.get('city_id_tempo', self.city_id_tempo) + vals['zip_tempo'] = vals.get('zip_tempo', self.zip_tempo) + vals['bank_name_tempo'] = vals.get('bank_name_tempo', self.bank_name_tempo) + vals['account_name_tempo'] = vals.get('account_name_tempo', self.account_name_tempo) + vals['account_number_tempo'] = vals.get('account_number_tempo', self.account_number_tempo) + vals['website_tempo'] = vals.get('website_tempo', self.website_tempo) + vals['estimasi_tempo'] = vals.get('estimasi_tempo', self.estimasi_tempo) + vals['tempo_duration'] = vals.get('tempo_duration', self.tempo_duration) + vals['tempo_limit'] = vals.get('tempo_limit', self.tempo_limit) + vals['category_produk_ids'] = vals.get('category_produk_ids', self.category_produk_ids) + + # Kontak Perusahaan + vals['direktur_name'] = vals.get('direktur_name', self.direktur_name) + vals['direktur_mobile'] = vals.get('direktur_mobile', self.direktur_mobile) + vals['direktur_email'] = vals.get('direktur_email', self.direktur_email) + vals['purchasing_name'] = vals.get('purchasing_name', self.purchasing_name) + vals['purchasing_mobile'] = vals.get('purchasing_mobile', self.purchasing_mobile) + vals['purchasing_email'] = vals.get('purchasing_email', self.purchasing_email) + vals['finance_name'] = vals.get('finance_name', self.finance_name) + vals['finance_mobile'] = vals.get('finance_mobile', self.finance_mobile) + vals['finance_email'] = vals.get('finance_email', self.finance_email) + + # Pengiriman + vals['pic_name'] = vals.get('pic_name', self.pic_name) + vals['street_pengiriman'] = vals.get('street_pengiriman', self.street_pengiriman) + vals['state_id_pengiriman'] = vals.get('state_id_pengiriman', self.state_id_pengiriman) + vals['city_id_pengiriman'] = vals.get('city_id_pengiriman', self.city_id_pengiriman) + vals['zip_pengiriman'] = vals.get('zip_pengiriman', self.zip_pengiriman) + vals['invoice_pic'] = vals.get('invoice_pic', self.invoice_pic) + vals['street_invoice'] = vals.get('street_invoice', self.street_invoice) + vals['state_id_invoice'] = vals.get('state_id_invoice', self.state_id_invoice) + vals['city_id_invoice'] = vals.get('city_id_invoice', self.city_id_invoice) + vals['tukar_invoice'] = vals.get('tukar_invoice', self.tukar_invoice) + vals['jadwal_bayar'] = vals.get('jadwal_bayar', self.jadwal_bayar) + vals['dokumen_pengiriman'] = vals.get('dokumen_pengiriman', self.dokumen_pengiriman) + vals['dokumen_invoice'] = vals.get('dokumen_invoice', self.dokumen_invoice) + + # Dokumen + vals['dokumen_nib'] = vals.get('dokumen_nib', self.dokumen_nib) + vals['dokumen_npwp'] = vals.get('dokumen_npwp', self.dokumen_npwp) + vals['dokumen_sppkp'] = vals.get('dokumen_sppkp', self.dokumen_sppkp) + vals['dokumen_akta_perubahan'] = vals.get('dokumen_akta_perubahan', self.dokumen_akta_perubahan) + vals['dokumen_ktp_dirut'] = vals.get('dokumen_ktp_dirut', self.dokumen_ktp_dirut) + vals['dokumen_akta_pendirian'] = vals.get('dokumen_akta_pendirian', self.dokumen_akta_pendirian) + vals['dokumen_laporan_keuangan'] = vals.get('dokumen_laporan_keuangan', self.dokumen_laporan_keuangan) + vals['dokumen_foto_kantor'] = vals.get('dokumen_foto_kantor', self.dokumen_foto_kantor) + vals['dokumen_tempat_bekerja'] = vals.get('dokumen_tempat_bekerja', self.dokumen_tempat_bekerja) # Simpan hanya field yang perlu di-update pada child vals_for_child = { @@ -246,7 +240,53 @@ class ResPartner(models.Model): 'sppkp': vals.get('sppkp'), 'alamat_lengkap_text': vals.get('alamat_lengkap_text'), 'industry_id': vals.get('industry_id'), - 'company_type_id': vals.get('company_type_id') + 'company_type_id': vals.get('company_type_id'), + 'supplier_ids': vals.get('supplier_ids'), + 'name_tempo': vals.get('name_tempo'), + 'industry_id_tempo': vals.get('industry_id_tempo'), + 'street_tempo': vals.get('street_tempo'), + 'state_id_tempo': vals.get('state_id_tempo'), + 'city_id_tempo': vals.get('city_id_tempo'), + 'zip_tempo': vals.get('zip_tempo'), + 'bank_name_tempo': vals.get('bank_name_tempo'), + 'account_name_tempo': vals.get('account_name_tempo'), + 'account_number_tempo': vals.get('account_number_tempo'), + 'website_tempo': vals.get('website_tempo'), + 'estimasi_tempo': vals.get('estimasi_tempo'), + 'tempo_duration': vals.get('tempo_duration'), + 'tempo_limit': vals.get('tempo_limit'), + 'category_produk_ids': vals.get('category_produk_ids'), + 'direktur_name': vals.get('direktur_name'), + 'direktur_mobile': vals.get('direktur_mobile'), + 'direktur_email': vals.get('direktur_email'), + 'purchasing_name': vals.get('purchasing_name'), + 'purchasing_mobile': vals.get('purchasing_mobile'), + 'purchasing_email': vals.get('purchasing_email'), + 'finance_name': vals.get('finance_name'), + 'finance_mobile': vals.get('finance_mobile'), + 'finance_email': vals.get('finance_email'), + 'pic_name': vals.get('pic_name'), + 'street_pengiriman': vals.get('street_pengiriman'), + 'state_id_pengiriman': vals.get('state_id_pengiriman'), + 'city_id_pengiriman': vals.get('city_id_pengiriman'), + 'zip_pengiriman': vals.get('zip_pengiriman'), + 'invoice_pic': vals.get('invoice_pic'), + 'street_invoice': vals.get('street_invoice'), + 'state_id_invoice': vals.get('state_id_invoice'), + 'city_id_invoice': vals.get('city_id_invoice'), + 'tukar_invoice': vals.get('tukar_invoice'), + 'jadwal_bayar': vals.get('jadwal_bayar'), + 'dokumen_pengiriman': vals.get('dokumen_pengiriman'), + 'dokumen_invoice': vals.get('dokumen_invoice'), + 'dokumen_nib': vals.get('dokumen_nib'), + 'dokumen_npwp': vals.get('dokumen_npwp'), + 'dokumen_sppkp': vals.get('dokumen_sppkp'), + 'dokumen_akta_perubahan': vals.get('dokumen_akta_perubahan'), + 'dokumen_ktp_dirut': vals.get('dokumen_ktp_dirut'), + 'dokumen_akta_pendirian': vals.get('dokumen_akta_pendirian'), + 'dokumen_laporan_keuangan': vals.get('dokumen_laporan_keuangan'), + 'dokumen_foto_kantor': vals.get('dokumen_foto_kantor'), + 'dokumen_tempat_bekerja': vals.get('dokumen_tempat_bekerja'), } # Lakukan update pada semua child secara rekursif -- cgit v1.2.3 From 6fbfe31167e6eb66d4995374dadb14774026e8c7 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 2 Dec 2024 09:31:13 +0700 Subject: pengajuan tempo update --- indoteknik_custom/models/res_partner.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'indoteknik_custom/models/res_partner.py') diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index f01ea481..b21b1965 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -406,13 +406,10 @@ class ResPartner(models.Model): if self.customer_type == 'nonpkp': self.npwp = '00.000.000.0-000.000' - def get_check_tempo_partner(self): + def get_check_payment_term(self): self.ensure_one() partner = self.parent_id or self - if not partner.property_payment_term_id or 'Tempo' not in partner.property_payment_term_id.name: - return False - else: - return True + return partner.property_payment_term_id.name if partner.property_payment_term_id.id else 'Cash Before Delivery (C.B.D)' -- cgit v1.2.3 From af85c0d2248728fe33675dcec6e513eefd6553a4 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 6 Dec 2024 17:08:46 +0700 Subject: update pengajuan tempo --- indoteknik_custom/models/res_partner.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indoteknik_custom/models/res_partner.py') diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index b21b1965..d2395dc5 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -68,6 +68,7 @@ class ResPartner(models.Model): 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_pengiriman_input = fields.Char(string='Dokumen saat Pengiriman Barang input') dokumen_invoice = fields.Char(string='Dokumen yang dilampirkan saat Pengiriman Invoice') # Dokumen @@ -238,6 +239,7 @@ class ResPartner(models.Model): vals['tukar_invoice'] = vals.get('tukar_invoice', self.tukar_invoice) vals['jadwal_bayar'] = vals.get('jadwal_bayar', self.jadwal_bayar) vals['dokumen_pengiriman'] = vals.get('dokumen_pengiriman', self.dokumen_pengiriman) + vals['dokumen_pengiriman_input'] = vals.get('dokumen_pengiriman_input', self.dokumen_pengiriman_input) vals['dokumen_invoice'] = vals.get('dokumen_invoice', self.dokumen_invoice) # Dokumen @@ -296,6 +298,7 @@ class ResPartner(models.Model): 'tukar_invoice': vals.get('tukar_invoice'), 'jadwal_bayar': vals.get('jadwal_bayar'), 'dokumen_pengiriman': vals.get('dokumen_pengiriman'), + 'dokumen_pengiriman_input': vals.get('dokumen_pengiriman_input'), 'dokumen_invoice': vals.get('dokumen_invoice'), 'dokumen_nib': vals.get('dokumen_nib'), 'dokumen_npwp': vals.get('dokumen_npwp'), -- cgit v1.2.3 From 02eacd54387953f42a884a22544e2f7c94081536 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 9 Dec 2024 15:04:12 +0700 Subject: update pengajuan tempo --- indoteknik_custom/models/res_partner.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'indoteknik_custom/models/res_partner.py') diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index d2395dc5..835ac65d 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -36,7 +36,7 @@ class ResPartner(models.Model): 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_duration = fields.Many2one('account.payment.term', 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()) @@ -309,6 +309,9 @@ class ResPartner(models.Model): 'dokumen_laporan_keuangan': vals.get('dokumen_laporan_keuangan'), 'dokumen_foto_kantor': vals.get('dokumen_foto_kantor'), 'dokumen_tempat_bekerja': vals.get('dokumen_tempat_bekerja'), + + # internal_notes + 'comment': vals.get('comment') } # Lakukan update pada semua child secara rekursif -- cgit v1.2.3 From 61427e249985af385de6619e8b362d249a68c688 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 13 Dec 2024 14:14:49 +0700 Subject: update pengajuan tempo --- indoteknik_custom/models/res_partner.py | 40 ++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'indoteknik_custom/models/res_partner.py') diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index 835ac65d..93125bb9 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -35,6 +35,7 @@ class ResPartner(models.Model): account_name_tempo = fields.Char(string="Nama Rekening") account_number_tempo = fields.Char(string="Nomor Rekening Bank") website_tempo = fields.Char(string='Website') + portal = fields.Boolean(string='Portal Website') estimasi_tempo = fields.Char(string='Estimasi Pembelian Pertahun') tempo_duration = fields.Many2one('account.payment.term', string='Durasi Tempo') tempo_limit = fields.Char(string='Limit Tempo') @@ -60,21 +61,30 @@ class ResPartner(models.Model): 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') + district_id_pengiriman = fields.Many2one('vit.kecamatan', string='Kecamatan') + subDistrict_id_pengiriman = fields.Many2one('vit.kelurahan', string='Kelurahan') zip_pengiriman = fields.Char(string="Zip") invoice_pic = fields.Char(string='Nama PIC Penerimaan Invoice') street_invoice = fields.Char(string="Alamat Perusahaan") state_id_invoice = fields.Many2one('res.country.state', string='State') city_id_invoice = fields.Many2one('vit.kota', string='City') + district_id_invoice = fields.Many2one('vit.kecamatan', string='Kecamatan') + subDistrict_id_invoice = fields.Many2one('vit.kelurahan', string='Kelurahan') + zip_invoice = fields.Char(string="Zip") 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_pengiriman_input = fields.Char(string='Dokumen saat Pengiriman Barang input') + dokumen_pengiriman = fields.Char(string='Dokumen Tanda Terima yang Diberikan Pada Saat Pengiriman Barang') + dokumen_pengiriman_input = fields.Char(string='Dokumen yang Dibawa Saat Pengiriman Barang') dokumen_invoice = fields.Char(string='Dokumen yang dilampirkan saat Pengiriman Invoice') # Dokumen - dokumen_nib = fields.Many2one('ir.attachment', string="NIB (SIUP/TDP/SKDP)", tracking=3, readonly=True,) dokumen_npwp = fields.Many2one('ir.attachment', string="NPWP Perusahaan", tracking=3, readonly=True) dokumen_sppkp = fields.Many2one('ir.attachment', string="SPPKP Perusahaan", tracking=3, readonly=True) + dokumen_nib = fields.Many2one('ir.attachment', string="NIB (SIUP/TDP/SKDP)", tracking=3, readonly=True,) + dokumen_siup = fields.Many2many('ir.attachment', 'pengajuan_dokumen_siup_rel', string="SIUP Perusahaan", tracking=True) + dokumen_tdp = fields.Many2many('ir.attachment', 'pengajuan_dokumen_tdp_rel', string="TDP Perusahaan", tracking=True) + dokumen_skdp = fields.Many2many('ir.attachment', 'pengajuan_dokumen_skdp_rel', string="SKDP Perusahaan",tracking=True) + dokumen_skt = fields.Many2many('ir.attachment', 'pengajuan_dokumen_skt_rel', string="SKT Perusahaan", tracking=True) dokumen_akta_perubahan = fields.Many2one('ir.attachment', string="Akta Perubahan", tracking=3, readonly=True) dokumen_ktp_dirut = fields.Many2one('ir.attachment', string="KTP Dirut/Direktur", tracking=3, readonly=True) dokumen_akta_pendirian = fields.Many2one('ir.attachment', string="Akta Pendirian", tracking=3, readonly=True) @@ -210,6 +220,7 @@ class ResPartner(models.Model): vals['account_name_tempo'] = vals.get('account_name_tempo', self.account_name_tempo) vals['account_number_tempo'] = vals.get('account_number_tempo', self.account_number_tempo) vals['website_tempo'] = vals.get('website_tempo', self.website_tempo) + vals['portal'] = vals.get('portal', self.portal) vals['estimasi_tempo'] = vals.get('estimasi_tempo', self.estimasi_tempo) vals['tempo_duration'] = vals.get('tempo_duration', self.tempo_duration) vals['tempo_limit'] = vals.get('tempo_limit', self.tempo_limit) @@ -231,11 +242,16 @@ class ResPartner(models.Model): vals['street_pengiriman'] = vals.get('street_pengiriman', self.street_pengiriman) vals['state_id_pengiriman'] = vals.get('state_id_pengiriman', self.state_id_pengiriman) vals['city_id_pengiriman'] = vals.get('city_id_pengiriman', self.city_id_pengiriman) + vals['district_id_pengiriman'] = vals.get('district_id_pengiriman', self.district_id_pengiriman) + vals['subDistrict_id_pengiriman'] = vals.get('subDistrict_id_pengiriman', self.subDistrict_id_pengiriman) vals['zip_pengiriman'] = vals.get('zip_pengiriman', self.zip_pengiriman) vals['invoice_pic'] = vals.get('invoice_pic', self.invoice_pic) vals['street_invoice'] = vals.get('street_invoice', self.street_invoice) vals['state_id_invoice'] = vals.get('state_id_invoice', self.state_id_invoice) vals['city_id_invoice'] = vals.get('city_id_invoice', self.city_id_invoice) + vals['district_id_invoice'] = vals.get('district_id_invoice', self.district_id_invoice) + vals['subDistrict_id_invoice'] = vals.get('subDistrict_id_invoice', self.subDistrict_id_invoice) + vals['zip_invoice'] = vals.get('zip_invoice', self.zip_invoice) vals['tukar_invoice'] = vals.get('tukar_invoice', self.tukar_invoice) vals['jadwal_bayar'] = vals.get('jadwal_bayar', self.jadwal_bayar) vals['dokumen_pengiriman'] = vals.get('dokumen_pengiriman', self.dokumen_pengiriman) @@ -243,9 +259,13 @@ class ResPartner(models.Model): vals['dokumen_invoice'] = vals.get('dokumen_invoice', self.dokumen_invoice) # Dokumen - vals['dokumen_nib'] = vals.get('dokumen_nib', self.dokumen_nib) vals['dokumen_npwp'] = vals.get('dokumen_npwp', self.dokumen_npwp) vals['dokumen_sppkp'] = vals.get('dokumen_sppkp', self.dokumen_sppkp) + vals['dokumen_nib'] = vals.get('dokumen_nib', self.dokumen_nib) + vals['dokumen_siup'] = vals.get('dokumen_siup', self.dokumen_siup) + vals['dokumen_tdp'] = vals.get('dokumen_tdp', self.dokumen_tdp) + vals['dokumen_skdp'] = vals.get('dokumen_skdp', self.dokumen_skdp) + vals['dokumen_skt'] = vals.get('dokumen_skt', self.dokumen_skt) vals['dokumen_akta_perubahan'] = vals.get('dokumen_akta_perubahan', self.dokumen_akta_perubahan) vals['dokumen_ktp_dirut'] = vals.get('dokumen_ktp_dirut', self.dokumen_ktp_dirut) vals['dokumen_akta_pendirian'] = vals.get('dokumen_akta_pendirian', self.dokumen_akta_pendirian) @@ -273,6 +293,7 @@ class ResPartner(models.Model): 'account_name_tempo': vals.get('account_name_tempo'), 'account_number_tempo': vals.get('account_number_tempo'), 'website_tempo': vals.get('website_tempo'), + 'portal': vals.get('portal'), 'estimasi_tempo': vals.get('estimasi_tempo'), 'tempo_duration': vals.get('tempo_duration'), 'tempo_limit': vals.get('tempo_limit'), @@ -290,19 +311,28 @@ class ResPartner(models.Model): 'street_pengiriman': vals.get('street_pengiriman'), 'state_id_pengiriman': vals.get('state_id_pengiriman'), 'city_id_pengiriman': vals.get('city_id_pengiriman'), + 'district_id_pengiriman': vals.get('district_id_pengiriman'), + 'subDistrict_id_pengiriman': vals.get('subDistrict_id_pengiriman'), 'zip_pengiriman': vals.get('zip_pengiriman'), 'invoice_pic': vals.get('invoice_pic'), 'street_invoice': vals.get('street_invoice'), 'state_id_invoice': vals.get('state_id_invoice'), 'city_id_invoice': vals.get('city_id_invoice'), + 'district_id_invoice': vals.get('district_id_invoice'), + 'subDistrict_id_invoice': vals.get('subDistrict_id_invoice'), + 'zip_invoice': vals.get('zip_invoice'), 'tukar_invoice': vals.get('tukar_invoice'), 'jadwal_bayar': vals.get('jadwal_bayar'), 'dokumen_pengiriman': vals.get('dokumen_pengiriman'), 'dokumen_pengiriman_input': vals.get('dokumen_pengiriman_input'), 'dokumen_invoice': vals.get('dokumen_invoice'), - 'dokumen_nib': vals.get('dokumen_nib'), 'dokumen_npwp': vals.get('dokumen_npwp'), 'dokumen_sppkp': vals.get('dokumen_sppkp'), + 'dokumen_nib': vals.get('dokumen_nib'), + 'dokumen_siup': vals.get('dokumen_siup'), + 'dokumen_tdp': vals.get('dokumen_tdp'), + 'dokumen_skdp': vals.get('dokumen_skdp'), + 'dokumen_skt': vals.get('dokumen_skt'), 'dokumen_akta_perubahan': vals.get('dokumen_akta_perubahan'), 'dokumen_ktp_dirut': vals.get('dokumen_ktp_dirut'), 'dokumen_akta_pendirian': vals.get('dokumen_akta_pendirian'), -- cgit v1.2.3 From 5343cbd0bfceb6bd50dbbed55a1de4b116f5fef4 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 13 Dec 2024 15:53:20 +0700 Subject: update code --- indoteknik_custom/models/res_partner.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'indoteknik_custom/models/res_partner.py') diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index 93125bb9..57fab403 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -81,10 +81,10 @@ class ResPartner(models.Model): dokumen_npwp = fields.Many2one('ir.attachment', string="NPWP Perusahaan", tracking=3, readonly=True) dokumen_sppkp = fields.Many2one('ir.attachment', string="SPPKP Perusahaan", tracking=3, readonly=True) dokumen_nib = fields.Many2one('ir.attachment', string="NIB (SIUP/TDP/SKDP)", tracking=3, readonly=True,) - dokumen_siup = fields.Many2many('ir.attachment', 'pengajuan_dokumen_siup_rel', string="SIUP Perusahaan", tracking=True) - dokumen_tdp = fields.Many2many('ir.attachment', 'pengajuan_dokumen_tdp_rel', string="TDP Perusahaan", tracking=True) - dokumen_skdp = fields.Many2many('ir.attachment', 'pengajuan_dokumen_skdp_rel', string="SKDP Perusahaan",tracking=True) - dokumen_skt = fields.Many2many('ir.attachment', 'pengajuan_dokumen_skt_rel', string="SKT Perusahaan", tracking=True) + dokumen_siup = fields.Many2one('ir.attachment', string="SIUP Perusahaan", tracking=3, readonly=True) + dokumen_tdp = fields.Many2one('ir.attachment', string="TDP Perusahaan", tracking=3, readonly=True) + dokumen_skdp = fields.Many2one('ir.attachment', string="SKDP Perusahaan",tracking=True, readonly=True) + dokumen_skt = fields.Many2one('ir.attachment', string="SKT Perusahaan", tracking=True, readonly=True) dokumen_akta_perubahan = fields.Many2one('ir.attachment', string="Akta Perubahan", tracking=3, readonly=True) dokumen_ktp_dirut = fields.Many2one('ir.attachment', string="KTP Dirut/Direktur", tracking=3, readonly=True) dokumen_akta_pendirian = fields.Many2one('ir.attachment', string="Akta Pendirian", tracking=3, readonly=True) -- cgit v1.2.3