diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2025-05-23 09:22:27 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2025-05-23 09:22:27 +0700 |
| commit | f6f59e660af6c4229ada54f7313d68867df1ba15 (patch) | |
| tree | 9a27b4e0e6571c639ba173df5ae25a2e7014aefd /indoteknik_custom | |
| parent | 68378dd2fb8d61b282a672ca0f09033d15d82283 (diff) | |
| parent | 558130bbf48c33ddfa6080450c80bc8801a570f0 (diff) | |
Merge branch 'CR/form-merchant' into odoo-backup
# Conflicts:
# indoteknik_custom/models/sale_order.py
# indoteknik_custom/views/sale_order.xml
Diffstat (limited to 'indoteknik_custom')
| -rwxr-xr-x | indoteknik_custom/__manifest__.py | 2 | ||||
| -rwxr-xr-x | indoteknik_custom/models/__init__.py | 2 | ||||
| -rw-r--r-- | indoteknik_custom/models/res_partner.py | 184 | ||||
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 46 | ||||
| -rw-r--r-- | indoteknik_custom/models/user_form_merchant.py | 98 | ||||
| -rw-r--r-- | indoteknik_custom/models/user_merchant_request.py | 125 | ||||
| -rwxr-xr-x | indoteknik_custom/security/ir.model.access.csv | 4 | ||||
| -rw-r--r-- | indoteknik_custom/views/res_partner.xml | 60 | ||||
| -rwxr-xr-x | indoteknik_custom/views/sale_order.xml | 13 | ||||
| -rw-r--r-- | indoteknik_custom/views/user_form_merchant.xml | 109 | ||||
| -rw-r--r-- | indoteknik_custom/views/user_merchant_request.xml | 112 |
11 files changed, 754 insertions, 1 deletions
diff --git a/indoteknik_custom/__manifest__.py b/indoteknik_custom/__manifest__.py index 9fe3dcdb..d93db041 100755 --- a/indoteknik_custom/__manifest__.py +++ b/indoteknik_custom/__manifest__.py @@ -31,6 +31,8 @@ 'views/web_logging/web_utm_source.xml', 'views/user_company_request.xml', 'views/user_pengajuan_tempo_request.xml', + 'views/user_form_merchant.xml', + 'views/user_merchant_request.xml', 'views/vit_kelurahan.xml', 'views/vit_kecamatan.xml', 'views/vit_kota.xml', diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py index 08fa9803..e17f68d1 100755 --- a/indoteknik_custom/models/__init__.py +++ b/indoteknik_custom/models/__init__.py @@ -144,6 +144,8 @@ from . import stock_immediate_transfer from . import coretax_fatur from . import public_holiday from . import ir_actions_report +from . import user_form_merchant +from . import user_merchant_request from . import barcoding_product from . import sales_order_koli from . import stock_backorder_confirmation diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index 191a44c9..ff07c94c 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -161,6 +161,86 @@ class ResPartner(models.Model): "this feature", tracking=3) telegram_id = fields.Char(string="Telegram") + # MERCHANT + # informasi perusahaan + name_merchant = fields.Char(string='Name') + pejabat_name = fields.Char(string='Pejabat Name') + pic_merchant = fields.Char(string='PIC Merchant', required=True) + pic_position = fields.Char(string='Jabatan PIC') + address_merchant = fields.Char(string='Alamat') + state_merchant = fields.Many2one('res.country.state', string='State') + city_merchant = fields.Many2one('vit.kota', string='Kota') + district_merchant = fields.Many2one('vit.kecamatan', string='Kecamatan') + subDistrict_merchant = fields.Many2one('vit.kelurahan', string='Kelurahan') + zip_merchant = fields.Char(string='Kode Pos') + bank_name_merchant = fields.Char(string='Nama Bank') + rekening_name_merchant = fields.Char(string='Nama Rekening') + account_number_merchant = fields.Char(string='Nomor Rekening Bank') + email_company_merchant = fields.Char(string='Email Perusahaan') + email_sales_merchant = fields.Char(string='Email Sales') + email_finance_merchant = fields.Char(string='Email Finance') + phone_merchant = fields.Char(string='No. Telepon Perusahaan') + mobile_merchant = fields.Char(string='No. Handphone') + bisnis_type = fields.Selection([ + ('1', 'PT'), + ('2', 'CV'), + ('3', 'Perorangan'), + ]) + website_merchant = fields.Char(string='Website') + category_perusahaan = fields.Selection([ + ('1', 'Principal (Pemegang merk/Produsen)'), + ('2', 'Sole Distributor (Distributor Tunggal)'), + ('3', 'Authorized Distributor (Distributor Resmi)'), + ('4', 'Importer (Pengimpor Barang)'), + ('5', 'Wholesaler (Pedagang Besar)'), + ]) + # Informasi Vendor + harga_tayang = fields.Char(string='Harga Tayang (HET)') + category_produk_ids_merchant = fields.Many2many( + 'product.public.category', + string='Kategori Produk Merchant', + domain=lambda self: self._get_default_category_domain(), + relation='res_partner_category_produk_ids_merchant_rel' # Nama tabel relasi berbeda + ) + + @api.model + def _get_default_category_domain(self): + return [('parent_id', '=', False)] + + merk_dagang = fields.Char(string='Merk Dagang') + is_pengajuan_tempo = fields.Boolean(string='Apakah anda memiliki Form Pengajuan Tempo?') + tempo_duration_merchant = fields.Many2one('account.payment.term', string='Durasi Tempo') + kredit_limit = fields.Char(string='Kredit Limit') + waktu_pengiriman = fields.Char(string='Waktu Pengiriman') + terhitung_sejak = fields.Selection([ + ('1', 'Terima PO'), + ('2', 'Barang Dikirimkan'), + ('3', 'Tukar Faktur'), + ]) + + # syarat dagang + is_kembali_barang = fields.Char(string='Syarat Pengembalian Barang') + tenggat_waktu = fields.Char(string='Tenggat Waktu Perubahan Harga') + sertifikat_produk = fields.Char(string='Dokumen/Sertifikat yang Dimiliki Oleh Brand') + custom_sertifikat_produk = fields.Char(string='Dokumen/Sertifikat Lainnya') + tempo_garansi = fields.Selection([ + ('1', '6 Bulan Garansi'), + ('2', '1 Tahun Garansi'), + ('3', '2 Tahun Garansi'), + ]) + explain_garansi = fields.Char(string='Garansi Yang Dimaksudkan') + is_order_quantity = fields.Char(string='Apakah Memiliki Minimum Order Quantity (MOQ)') + + # dokumen + file_npwp = fields.Many2one('ir.attachment', string="NPWP Perusahaan", tracking=3) + file_sppkp = fields.Many2one('ir.attachment', string="SPPKP Perusahaan", tracking=3) + file_dokumenKtpDirut = fields.Many2one('ir.attachment', string="KTP Dirut/Direktur", tracking=3) + file_kartuNama = fields.Many2one('ir.attachment', string="Kartu Nama", tracking=3) + file_suratPernyataan = fields.Many2one('ir.attachment', string="Surat Pernyataan Nomor Rekening", tracking=3) + file_fotoKantor = fields.Many2one('ir.attachment', string="Foto Gudang / Kantor Bagian Depan", tracking=3) + file_dataProduk = fields.Many2one('ir.attachment', string="Data Produk (Item Name, Gambar, Deskripsi)", tracking=3) + file_pricelist = fields.Many2one('ir.attachment', string="Pricelist", tracking=3) + @api.model def _default_payment_term(self): return self.env.ref('__export__.account_payment_term_26_484409e2').id @@ -329,6 +409,60 @@ class ResPartner(models.Model): 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) + # MERCHANT + # Informasi Perusahaan + vals['name_merchant'] = vals.get('name_merchant', self.name_merchant) + vals['pejabat_name'] = vals.get('pejabat_name', self.pejabat_name) + vals['pic_merchant'] = vals.get('pic_merchant', self.pic_merchant) + vals['pic_position'] = vals.get('pic_position', self.pic_position) + vals['address_merchant'] = vals.get('address_merchant', self.address_merchant) + vals['state_merchant'] = vals.get('state_merchant', self.state_merchant) + vals['city_merchant'] = vals.get('city_merchant', self.city_merchant) + vals['district_merchant'] = vals.get('district_merchant', self.district_merchant) + vals['subDistrict_merchant'] = vals.get('subDistrict_merchant', self.subDistrict_merchant) + vals['zip_merchant'] = vals.get('zip_merchant', self.zip_merchant) + vals['bank_name_merchant'] = vals.get('bank_name_merchant', self.bank_name_merchant) + vals['rekening_name_merchant'] = vals.get('rekening_name_merchant', self.rekening_name_merchant) + vals['account_number_merchant'] = vals.get('account_number_merchant', self.account_number_merchant) + vals['email_company_merchant'] = vals.get('email_company_merchant', self.email_company_merchant) + vals['email_sales_merchant'] = vals.get('email_sales_merchant', self.email_sales_merchant) + vals['email_finance_merchant'] = vals.get('email_finance_merchant', self.email_finance_merchant) + vals['phone_merchant'] = vals.get('phone_merchant', self.phone_merchant) + vals['mobile_merchant'] = vals.get('mobile_merchant', self.mobile_merchant) + vals['bisnis_type'] = vals.get('bisnis_type', self.bisnis_type) + vals['website_merchant'] = vals.get('website_merchant', self.website_merchant) + vals['category_perusahaan'] = vals.get('category_perusahaan', self.category_perusahaan) + + # Informasi Vendor + vals['harga_tayang'] = vals.get('harga_tayang', self.harga_tayang) + vals['category_produk_ids_merchant'] = vals.get('category_produk_ids_merchant', self.category_produk_ids_merchant) + vals['merk_dagang'] = vals.get('merk_dagang', self.merk_dagang) + vals['is_pengajuan_tempo'] = vals.get('is_pengajuan_tempo', self.is_pengajuan_tempo) + vals['tempo_duration_merchant'] = vals.get('tempo_duration_merchant', self.tempo_duration_merchant) + vals['kredit_limit'] = vals.get('kredit_limit', self.kredit_limit) + vals['waktu_pengiriman'] = vals.get('waktu_pengiriman', self.waktu_pengiriman) + vals['terhitung_sejak'] = vals.get('terhitung_sejak', self.terhitung_sejak) + + # Syarat Dagang + vals['is_kembali_barang'] = vals.get('is_kembali_barang', self.is_kembali_barang) + vals['tenggat_waktu'] = vals.get('tenggat_waktu', self.tenggat_waktu) + vals['sertifikat_produk'] = vals.get('sertifikat_produk', self.sertifikat_produk) + vals['custom_sertifikat_produk'] = vals.get('custom_sertifikat_produk', self.custom_sertifikat_produk) + vals['tempo_garansi'] = vals.get('tempo_garansi', self.tempo_garansi) + vals['explain_garansi'] = vals.get('explain_garansi', self.explain_garansi) + vals['is_order_quantity'] = vals.get('is_order_quantity', self.is_order_quantity) + + # Dokumen + vals['file_dokumenKtpDirut'] = vals.get('file_dokumenKtpDirut', self.file_dokumenKtpDirut) + vals['file_kartuNama'] = vals.get('file_kartuNama', self.file_kartuNama) + vals['file_npwp'] = vals.get('file_npwp', self.file_npwp) + vals['file_sppkp'] = vals.get('file_sppkp', self.file_sppkp) + vals['file_suratPernyataan'] = vals.get('file_suratPernyataan', self.file_suratPernyataan) + vals['file_fotoKantor'] = vals.get('file_fotoKantor', self.file_fotoKantor) + vals['file_dataProduk'] = vals.get('file_dataProduk', self.file_dataProduk) + vals['file_pricelist'] = vals.get('file_pricelist', self.file_pricelist) + vals['description'] = vals.get('description', self.description) + # Simpan hanya field yang perlu di-update pada child vals_for_child = { 'customer_type': vals.get('customer_type'), @@ -400,7 +534,55 @@ class ResPartner(models.Model): 'dokumen_tempat_bekerja': vals.get('dokumen_tempat_bekerja'), # internal_notes - 'comment': vals.get('comment') + 'comment': vals.get('comment'), + + # Merchant + 'name_merchant': vals.get('name_merchant'), + 'pejabat_name': vals.get('pejabat_name'), + 'pic_merchant': vals.get('pic_merchant'), + 'pic_position': vals.get('pic_position'), + 'address_merchant': vals.get('address_merchant'), + 'state_merchant': vals.get('state_merchant'), + 'city_merchant': vals.get('city_merchant'), + 'district_merchant': vals.get('district_merchant'), + 'subDistrict_merchant': vals.get('subDistrict_merchant'), + 'zip_merchant': vals.get('zip_merchant'), + 'bank_name_merchant': vals.get('bank_name_merchant'), + 'rekening_name_merchant': vals.get('rekening_name_merchant'), + 'account_number_merchant': vals.get('account_number_merchant'), + 'email_company_merchant': vals.get('email_company_merchant'), + 'email_sales_merchant': vals.get('email_sales_merchant'), + 'email_finance_merchant': vals.get('email_finance_merchant'), + 'phone_merchant': vals.get('phone_merchant'), + 'mobile_merchant': vals.get('mobile_merchant'), + 'bisnis_type': vals.get('bisnis_type'), + 'website_merchant': vals.get('website_merchant'), + 'category_perusahaan': vals.get('category_perusahaan'), + 'harga_tayang': vals.get('harga_tayang'), + 'category_produk_ids_merchant': vals.get('category_produk_ids_merchant'), + 'merk_dagang': vals.get('merk_dagang'), + 'is_pengajuan_tempo': vals.get('is_pengajuan_tempo'), + 'tempo_duration_merchant': vals.get('tempo_duration_merchant'), + 'kredit_limit': vals.get('kredit_limit'), + 'waktu_pengiriman': vals.get('waktu_pengiriman'), + 'terhitung_sejak': vals.get('terhitung_sejak'), + 'is_kembali_barang': vals.get('is_kembali_barang'), + 'tenggat_waktu': vals.get('tenggat_waktu'), + 'sertifikat_produk': vals.get('sertifikat_produk'), + 'custom_sertifikat_produk': vals.get('custom_sertifikat_produk'), + 'tempo_garansi': vals.get('tempo_garansi'), + 'explain_garansi': vals.get('explain_garansi'), + 'is_order_quantity': vals.get('is_order_quantity'), + + 'file_dokumenKtpDirut': vals.get('file_dokumenKtpDirut'), + 'file_kartuNama': vals.get('file_kartuNama'), + 'file_npwp': vals.get('file_npwp'), + 'file_sppkp': vals.get('file_sppkp'), + 'file_suratPernyataan': vals.get('file_suratPernyataan'), + 'file_fotoKantor': vals.get('file_fotoKantor'), + 'file_dataProduk': vals.get('file_dataProduk'), + 'file_pricelist': vals.get('file_pricelist'), + 'description': vals.get('description'), } # Lakukan update pada semua child secara rekursif diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index bdf8f1eb..6028a1d0 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -336,6 +336,12 @@ class SaleOrder(models.Model): date_unhold = fields.Datetime(string='Date Unhold', tracking=True, readonly=True, help='Waktu ketika SO di Unhold' ) + ready_to_ship_status_detail = fields.Char( + string='Status Shipping Detail', + compute='_compute_ready_to_ship_status_detail' + ) + + def _compute_total_margin_excl_third_party(self): for order in self: if order.amount_untaxed == 0: @@ -2006,5 +2012,45 @@ class SaleOrder(models.Model): if any(fields in vals for fields in ['delivery_amt', 'carrier_id', 'shipping_cost_covered']): self._validate_delivery_amt() if any(field in vals for field in ["order_line", "client_order_ref"]): +<<<<<<< HEAD self._calculate_etrts_date() return res +======= + self._calculate_etrts_date() + return res + + # @api.depends('commitment_date') + def _compute_ready_to_ship_status_detail(self): + for order in self: + eta = order.commitment_date + + match_lines = self.env['purchase.order.sales.match'].search([ + ('sale_id', '=', order.id) + ]) + + if match_lines: + for match in match_lines: + po = match.purchase_order_id + product = match.product_id + + po_line = self.env['purchase.order.line'].search([ + ('order_id', '=', po.id), + ('product_id', '=', product.id) + ], limit=1) + + stock_move = self.env['stock.move'].search([ + ('purchase_line_id', '=', po_line.id) + ], limit=1) + picking_in = stock_move.picking_id + + result_date = picking_in.date_done if picking_in else None + if result_date: + status = "Early" if result_date < eta else "Delay" + result_date_str = result_date.strftime('%m/%d/%Y') + eta_str = eta.strftime('%m/%d/%Y') + order.ready_to_ship_status_detail = f"Expected: {eta_str} | Realtime: {result_date_str} | {status}" + else: + order.ready_to_ship_status_detail = "On Track" + else: + order.ready_to_ship_status_detail = 'On Track' +>>>>>>> CR/form-merchant diff --git a/indoteknik_custom/models/user_form_merchant.py b/indoteknik_custom/models/user_form_merchant.py new file mode 100644 index 00000000..a804e93f --- /dev/null +++ b/indoteknik_custom/models/user_form_merchant.py @@ -0,0 +1,98 @@ +from odoo import models, fields, api +from odoo.exceptions import UserError +from odoo.http import request + + +class UserFormMerchant(models.Model): + _name = 'user.form.merchant' + _inherit = ['mail.thread', 'mail.activity.mixin'] + + name = fields.Char(string='Name') + # informasi peruhsaan + name_merchant = fields.Char(string='Name') + pejabat_name = fields.Char(string='Pejabat Name') + pic_merchant = fields.Char(string='PIC Merchant') + pic_position = fields.Char(string='Jabatan PIC') + partner_id = fields.Many2one('res.partner', string='Company') + address = fields.Char(string='Alamat') + state = fields.Many2one('res.country.state', string='State') + city = fields.Many2one('vit.kota', string='Kota') + district = fields.Many2one('vit.kecamatan', string='Kecamatan') + subDistrict = fields.Many2one('vit.kelurahan', string='Kelurahan') + zip = fields.Char(string='Kode Pos') + bank_name = fields.Char(string='Nama Bank') + rekening_name = fields.Char(string='Nama Rekening') + account_number = fields.Char(string='Nomor Rekening Bank') + email_company = fields.Char(string='Email Perusahaan') + email_sales = fields.Char(string='Email Sales') + email_finance = fields.Char(string='Email Finance') + phone = fields.Char(string='No. Telepon Perusahaan') + mobile = fields.Char(string='No. Handphone') + bisnis_type = fields.Selection([ + ('1', 'PT'), + ('2', 'CV'), + ('3', 'Perorangan'), + ]) + website = fields.Char(string='Website') + category_perusahaan = fields.Selection([ + ('1', 'Principal (Pemegang merk/Produsen)'), + ('2', 'Sole Distributor (Distributor Tunggal)'), + ('3', 'Authorized Distributor (Distributor Resmi)'), + ('4', 'Importer (Pengimpor Barang)'), + ('5', 'Wholesaler (Pedagang Besar)'), + ]) + description = fields.Text(string='Deskripsi') + + # imformasi Vendor + harga_tayang = fields.Char(string='Harga Tayang (HET)') + 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)] + + merk_dagang = fields.Char(string='Merk Dagang') + is_pengajuan_tempo = fields.Boolean(string='Apakah anda memiliki Form Pengajuan Tempo?') + tempo_duration = fields.Many2one('account.payment.term', string='Durasi Tempo') + kredit_limit = fields.Char(string='Kredit Limit') + waktu_pengiriman = fields.Char(string='Waktu Pengiriman') + terhitung_sejak = fields.Selection([ + ('1', 'Terima PO'), + ('2', 'Barang Dikirimkan'), + ('3', 'Tukar Faktur'), + ]) + + # syarat dagang + is_kembali_barang = fields.Char(string='Syarat Pengembalian Barang') + tenggat_waktu = fields.Char(string='Tenggat Waktu Perubahan Harga') + sertifikat_produk = fields.Char(string='Dokumen/Sertifikat yang Dimiliki Oleh Brand') + custom_sertifikat_produk = fields.Char(string='Dokumen/Sertifikat Lainnya') + tempo_garansi = fields.Selection([ + ('1', '6 Bulan Garansi'), + ('2', '1 Tahun Garansi'), + ('3', '2 Tahun Garansi'), + ]) + explain_garansi = fields.Char(string='Garansi Yang Dimaksudkan') + is_order_quantity = fields.Char(string='Apakah Memiliki Minimum Order Quantity (MOQ)') + + # dokumen + file_npwp = fields.Many2one('ir.attachment', string="NPWP Perusahaan", tracking=3) + file_sppkp = fields.Many2one('ir.attachment', string="SPPKP Perusahaan", tracking=3) + file_dokumenKtpDirut = fields.Many2one('ir.attachment', string="KTP Dirut/Direktur", tracking=3) + file_kartuNama = fields.Many2one('ir.attachment', string="Kartu Nama", tracking=3) + file_suratPernyataan = fields.Many2one('ir.attachment', string="Surat Pernyataan Nomor Rekening", tracking=3) + file_fotoKantor = fields.Many2one('ir.attachment', string="Foto Gudang / Kantor Bagian Depan", tracking=3) + file_dataProduk = fields.Many2one('ir.attachment', string="Data Produk (Item Name, Gambar, Deskripsi)", tracking=3) + file_pricelist = fields.Many2one('ir.attachment', string="Pricelist", tracking=3) + + @api.depends('name', 'name_merchant') + def name_get(self): + result = [] + for record in self: + if record.name_merchant: + display_name = record.name_merchant + else: + display_name = "DETAIL FORM MERCHANT" + result.append((record.id, display_name)) + return result
\ No newline at end of file diff --git a/indoteknik_custom/models/user_merchant_request.py b/indoteknik_custom/models/user_merchant_request.py new file mode 100644 index 00000000..dd571cdc --- /dev/null +++ b/indoteknik_custom/models/user_merchant_request.py @@ -0,0 +1,125 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import UserError +from odoo.http import request + + +class RejectReasonWizardMerchant(models.TransientModel): + _name = 'reject.reason.wizard.merchant' + _description = 'Wizard for Reject Reason' + + request_id = fields.Many2one('user.merchant.request', string='Request') + reason_reject = fields.Text(string='Reason for Rejection', required=True) + + def confirm_reject(self): + merchant = self.request_id + if merchant: + merchant.write({'reason_reject': self.reason_reject}) + merchant.state_merchant = 'reject' + return {'type': 'ir.actions.act_window_close'} + + +class ConfirmApprovalWizardMerchant(models.TransientModel): + _name = 'confirm.approval.wizard.merchant' + _description = 'Wizard Konfirmasi Approval' + + merchant_id = fields.Many2one('user.merchant.request', string='Merchant', required=True) + + def confirm_approval(self): + merchant = self.merchant_id + if merchant.state_merchant == 'draft': + merchant.state_merchant = 'approved' + + +class UserMerchantRequest(models.Model): + _name = 'user.merchant.request' + _inherit = ['mail.thread', 'mail.activity.mixin'] + _rec_name = 'user_id' + + user_id = fields.Many2one('res.partner', string='User') + merchant_id = fields.Many2one('user.form.merchant', string='Form Merchant') + user_company_id = fields.Many2one('res.partner', string='Company') + state_merchant = fields.Selection([ + ('draft', 'Pengajuan Merchant'), + ('approved', 'Approved Merchant'), + ('reject', 'Rejected'), + ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft') + reason_reject = fields.Char(string='Reaject Reason') + + def button_approve(self): + for merchant in self: + return { + 'type': 'ir.actions.act_window', + 'name': 'Konfirmasi Approve', + 'res_model': 'confirm.approval.wizard.merchant', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_merchant_id': merchant.id, + }} + + def button_reject(self): + return { + 'type': 'ir.actions.act_window', + 'name': _('Reject Reason'), + 'res_model': 'reject.reason.wizard.merchant', + 'view_mode': 'form', + 'target': 'new', + 'context': {'default_request_id': self.id}, + } + + def write(self, vals): + is_approve = True if self.state_merchant == 'approved' or vals.get('state_merchant') == 'approved' else False + if is_approve: + # Informasi Perusahaan + self.user_company_id.name_merchant = self.merchant_id.name_merchant + self.user_company_id.pejabat_name = self.merchant_id.pejabat_name + self.user_company_id.pic_merchant = self.merchant_id.pic_merchant + self.user_company_id.pic_position = self.merchant_id.pic_position + self.user_company_id.address_merchant = self.merchant_id.address + self.user_company_id.state_merchant = self.merchant_id.state + self.user_company_id.city_merchant = self.merchant_id.city + self.user_company_id.district_merchant = self.merchant_id.district + self.user_company_id.subDistrict_merchant = self.merchant_id.subDistrict + self.user_company_id.zip_merchant = self.merchant_id.zip + self.user_company_id.bank_name_merchant = self.merchant_id.bank_name + self.user_company_id.rekening_name_merchant = self.merchant_id.rekening_name + self.user_company_id.account_number_merchant = self.merchant_id.account_number + self.user_company_id.email_company_merchant = self.merchant_id.email_company + self.user_company_id.email_sales_merchant = self.merchant_id.email_sales + self.user_company_id.email_finance_merchant = self.merchant_id.email_finance + self.user_company_id.phone_merchant = self.merchant_id.phone + self.user_company_id.mobile_merchant = self.merchant_id.mobile + self.user_company_id.bisnis_type = self.merchant_id.bisnis_type + self.user_company_id.website_merchant = self.merchant_id.website + self.user_company_id.category_perusahaan = self.merchant_id.category_perusahaan + + # Informasi Vendor + self.user_company_id.harga_tayang = self.merchant_id.harga_tayang + self.user_company_id.category_produk_ids_merchant = self.merchant_id.category_produk_ids + self.user_company_id.merk_dagang = self.merchant_id.merk_dagang + self.user_company_id.is_pengajuan_tempo = self.merchant_id.is_pengajuan_tempo + self.user_company_id.tempo_duration_merchant = self.merchant_id.tempo_duration + self.user_company_id.kredit_limit = self.merchant_id.kredit_limit + self.user_company_id.waktu_pengiriman = self.merchant_id.waktu_pengiriman + self.user_company_id.terhitung_sejak = self.merchant_id.terhitung_sejak + + # Syarat Perdagangan + self.user_company_id.is_kembali_barang = self.merchant_id.is_kembali_barang + self.user_company_id.tenggat_waktu = self.merchant_id.tenggat_waktu + self.user_company_id.sertifikat_produk = self.merchant_id.sertifikat_produk + self.user_company_id.tempo_garansi = self.merchant_id.tempo_garansi + self.user_company_id.explain_garansi = self.merchant_id.explain_garansi + self.user_company_id.is_order_quantity = self.merchant_id.is_order_quantity + + # Dokumen + self.user_company_id.file_npwp = self.merchant_id.file_npwp + self.user_company_id.file_sppkp = self.merchant_id.file_sppkp + self.user_company_id.file_dokumenKtpDirut = self.merchant_id.file_dokumenKtpDirut + self.user_company_id.file_kartuNama = self.merchant_id.file_kartuNama + self.user_company_id.file_suratPernyataan = self.merchant_id.file_suratPernyataan + self.user_company_id.file_fotoKantor = self.merchant_id.file_fotoKantor + self.user_company_id.file_dataProduk = self.merchant_id.file_dataProduk + self.user_company_id.file_pricelist = self.merchant_id.file_pricelist + self.user_company_id.description = self.merchant_id.description + + return super(UserMerchantRequest, self).write(vals)
\ No newline at end of file diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv index 601f04c5..28fc760d 100755 --- a/indoteknik_custom/security/ir.model.access.csv +++ b/indoteknik_custom/security/ir.model.access.csv @@ -169,6 +169,10 @@ access_User_pengajuan_tempo_line,access.user.pengajuan.tempo.line,model_user_pen access_user_pengajuan_tempo,access.user.pengajuan.tempo,model_user_pengajuan_tempo,,1,1,1,1 access_reject_reason_wizard,reject.reason.wizard,model_reject_reason_wizard,,1,1,1,0 access_confirm_approval_wizard,confirm.approval.wizard,model_confirm_approval_wizard,,1,1,1,0 +access_user_form_merchant,access.user.form.merchant,model_user_form_merchant,,1,1,1,1 +access_user_merchant_request,access.user.merchant.request,model_user_merchant_request,,1,1,1,1 +access_reject_reason_wizard_merchant,reject.reason.wizard.merchant,model_reject_reason_wizard_merchant,,1,1,1,0 +access_confirm_approval_wizard_merchant,confirm.approval.wizard.merchant,model_confirm_approval_wizard_merchant,,1,1,1,0 access_hr_public_holiday,confirm.hr.public.holiday,model_hr_public_holiday,,1,1,1,0 access_barcode_product,access.barcode.product,model_barcode_product,,1,1,1,1 access_barcoding_product,access.barcoding.product,model_barcoding_product,,1,1,1,1 diff --git a/indoteknik_custom/views/res_partner.xml b/indoteknik_custom/views/res_partner.xml index cb9fa3ac..5160523f 100644 --- a/indoteknik_custom/views/res_partner.xml +++ b/indoteknik_custom/views/res_partner.xml @@ -190,6 +190,66 @@ </group> </page> </notebook> + <notebook> + <page string="Merchant"> + <group> + <group string="Informasi Perusahaan"> + <field name="name_merchant" /> + <field name="pejabat_name" /> + <field name="pic_merchant" /> + <field name="pic_position" /> + <field name="address_merchant" /> + <field name="state_merchant" /> + <field name="city_merchant" /> + <field name="district_merchant" /> + <field name="subDistrict_merchant" /> + <field name="zip_merchant" /> + <field name="bank_name_merchant" /> + <field name="rekening_name_merchant" /> + <field name="account_number_merchant" /> + <field name="email_company_merchant" widget="email"/> + <field name="email_sales_merchant" widget="email"/> + <field name="email_finance_merchant" widget="email"/> + <field name="phone_merchant" widget="phone"/> + <field name="mobile_merchant" widget="phone"/> + <field name="bisnis_type" /> + <field name="website_merchant" /> + <field name="category_perusahaan" /> + </group> + <group string="Syarat Perdagangan"> + <field name="is_kembali_barang" /> + <field name="tenggat_waktu" /> + <field name="sertifikat_produk" /> + <field name="tempo_garansi" /> + <field name="explain_garansi" /> + <field name="is_order_quantity" /> + </group> + <group string="Informasi Vendor"> + <field name="harga_tayang" /> + <field name="category_produk_ids_merchant" widget="many2many_tags" /> + <field name="merk_dagang" /> + <field name="is_pengajuan_tempo" /> + <field name="tempo_duration_merchant" /> + <field name="kredit_limit" /> + <field name="waktu_pengiriman" /> + <field name="terhitung_sejak" /> + </group> + <group string="Dokumen"> + <field name="file_npwp" /> + <field name="file_sppkp" /> + <field name="file_dokumenKtpDirut" /> + <field name="file_kartuNama" /> + <field name="file_suratPernyataan" /> + <field name="file_fotoKantor" /> + <field name="file_dataProduk" /> + <field name="file_pricelist" /> + </group> + <group> +<!-- <field name="description" />--> + </group> + </group> + </page> + </notebook> </field> </record> </data> diff --git a/indoteknik_custom/views/sale_order.xml b/indoteknik_custom/views/sale_order.xml index a599a7b8..92d13fa7 100755 --- a/indoteknik_custom/views/sale_order.xml +++ b/indoteknik_custom/views/sale_order.xml @@ -103,6 +103,7 @@ <field name="compute_fullfillment" invisible="1" /> </field> <field name="tag_ids" position="after"> +<<<<<<< HEAD <field name="eta_date_start"/> <t t-esc="' to '"/> <field name="eta_date" readonly="1"/> @@ -112,6 +113,18 @@ <field name="percent_margin_after_delivery_purchase"/> <field name="total_weight"/> <field name="pareto_status"/> +======= + <field name="eta_date_start" /> + <t t-esc="' to '" /> + <field name="eta_date" readonly="1" /> + <field name="expected_ready_to_ship" /> + <field name="ready_to_ship_status_detail"/> + <field name="flash_sale" /> + <field name="margin_after_delivery_purchase" /> + <field name="percent_margin_after_delivery_purchase" /> + <field name="total_weight" /> + <field name="pareto_status" /> +>>>>>>> CR/form-merchant </field> <field name="analytic_account_id" position="after"> <field name="customer_type" readonly="1"/> diff --git a/indoteknik_custom/views/user_form_merchant.xml b/indoteknik_custom/views/user_form_merchant.xml new file mode 100644 index 00000000..ae5a0f9f --- /dev/null +++ b/indoteknik_custom/views/user_form_merchant.xml @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<odoo> + <record id="user_form_merchant_tree" model="ir.ui.view"> + <field name="name">user.form.merchant.tree</field> + <field name="model">user.form.merchant</field> + <field name="arch" type="xml"> + <tree create="1" default_order="create_date desc"> + <field name="name_merchant"/> + <field name="email_company"/> + <field name="phone"/> + <field name="description"/> + <field name="create_date"/> + </tree> + </field> + </record> + + <record id="user_form_merchant_form" model="ir.ui.view"> + <field name="name">user.form.merchant.form</field> + <field name="model">user.form.merchant</field> + <field name="arch" type="xml"> + <form create="0"> + <sheet> + <group> + <group string="Informasi Perusahaan" > + <field name="name_merchant" /> + <field name="pejabat_name" /> + <field name="pic_merchant" /> + <field name="pic_position" /> + <field name="address" /> + <field name="state" /> + <field name="city" /> + <field name="district" /> + <field name="subDistrict" /> + <field name="zip" /> + <field name="bank_name" /> + <field name="rekening_name" /> + <field name="account_number" /> + <field name="email_company" widget="email"/> + <field name="email_sales" widget="email"/> + <field name="email_finance" widget="email"/> + <field name="phone" widget="phone"/> + <field name="mobile" widget="phone"/> + <field name="bisnis_type" /> + <field name="website" /> + <field name="category_perusahaan" /> + </group> + </group> + <group string="Informasi Vendor"> + <group> + <field name="harga_tayang" /> + <field name="category_produk_ids" widget="many2many_tags"/> + <field name="merk_dagang" /> + <field name="is_pengajuan_tempo" /> + <field name="tempo_duration" /> + <field name="kredit_limit" /> + <field name="waktu_pengiriman" /> + <field name="terhitung_sejak" /> + </group> + + </group> + <group string="Syarat Perdagangan"> + <group> + <field name="is_kembali_barang" /> + <field name="tenggat_waktu" /> + <field name="sertifikat_produk" /> +<!-- <field name="custom_sertifikat_produk" />--> + <field name="tempo_garansi" /> + <field name="explain_garansi" /> + <field name="is_order_quantity" /> + + </group> + </group> + <group string="Dokumen"> + <group> + <field name="file_npwp" /> + <field name="file_sppkp" /> + <field name="file_dokumenKtpDirut" /> + <field name="file_kartuNama" /> + <field name="file_suratPernyataan" /> + <field name="file_fotoKantor" /> + <field name="file_dataProduk" /> + <field name="file_pricelist" /> + </group> + <group> +<!-- <field name="description" />--> + </group> + </group> + </sheet> + </form> + </field> + </record> + + <record id="action_user_form_merchant" model="ir.actions.act_window"> + <field name="name">User Form Merchant</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">user.form.merchant</field> + <field name="view_mode">tree,form</field> + </record> + + +<!-- <menuitem--> +<!-- id="menu_user_form_merchant"--> +<!-- name="User Form Merchant"--> +<!-- parent="res_partner_menu_user"--> +<!-- sequence="1"--> +<!-- action="action_user_form_merchant"--> +<!-- />--> + +</odoo>
\ No newline at end of file diff --git a/indoteknik_custom/views/user_merchant_request.xml b/indoteknik_custom/views/user_merchant_request.xml new file mode 100644 index 00000000..e4f309fd --- /dev/null +++ b/indoteknik_custom/views/user_merchant_request.xml @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<odoo> + <record id="user_merchant_request_tree" model="ir.ui.view"> + <field name="name">user.merchant.request.tree</field> + <field name="model">user.merchant.request</field> + <field name="arch" type="xml"> + <tree create="1" default_order="create_date desc"> + <field name="user_id"/> + <field name="merchant_id"/> + <field name="state_merchant" decoration-success="state_merchant == 'approved'" decoration-danger="state_merchant == 'reject'" widget="badge" optional="show"/> + <field name="create_date"/> + </tree> + </field> + </record> + + <record id="user_merchant_request_form" model="ir.ui.view"> + <field name="name">user.merchant.request.form</field> + <field name="model">user.merchant.request</field> + <field name="arch" type="xml"> + <form create="0"> + <header> + <button name="button_approve" + string="Approve Merchant" + attrs="{'invisible': [('state_merchant', 'in', ['approved','reject'])]}" + type="object" + class="oe_highlight"/> + <button name="button_reject" + string="Reject" + attrs="{'invisible': [('state_merchant', 'in', ['approved','reject'])]}" + type="object" + groups="purchase.group_purchase_manager" + class="oe_highlight"/> + <field name="state_merchant" widget="statusbar" + statusbar_visible="draft,approved" + statusbar_colors='{"reject":"red"}'/> + </header> + <sheet> + <group> + <group> + <field name="user_id" readonly="1"/> + <field name="merchant_id"/> + </group> + </group> + </sheet> + <div class="oe_chatter"> + <field name="message_ids" widget="mail_thread"/> + </div> + </form> + </field> +</record> + + + + + <!-- Wizard for Reject Reason --> +<record id="view_reject_reason_wizard_merchant_form" model="ir.ui.view"> + <field name="name">reject.reason.wizard.merchant.form</field> + <field name="model">reject.reason.wizard.merchant</field> + <field name="arch" type="xml"> + <form string="Reject Reason"> + <group> + <field name="reason_reject" widget="text"/> + </group> + <footer> + <button string="Confirm" type="object" name="confirm_reject" class="btn-primary"/> + <button string="Cancel" class="btn-secondary" special="cancel"/> + </footer> + </form> + </field> +</record> + +<record id="action_reject_reason_wizard_merchant" model="ir.actions.act_window"> + <field name="name">Reject Reason</field> + <field name="res_model">reject.reason.wizard.merchant</field> + <field name="view_mode">form</field> + <field name="target">new</field> +</record> + + +<record id="view_confirm_approval_wizard_merchant_form" model="ir.ui.view"> + <field name="name">confirm.approval.wizard.merchant.form</field> + <field name="model">confirm.approval.wizard.merchant</field> + <field name="arch" type="xml"> + <form string="Konfirmasi Approval"> + <group> + <p>Apakah Anda yakin ingin mengapprove merchant ini?</p> + </group> + <footer> + <button string="Batal" class="btn-secondary" special="cancel"/> + <button string="Konfirmasi" type="object" name="confirm_approval" class="btn-primary"/> + </footer> + </form> + </field> +</record> + + + + <record id="action_user_merchant_request" model="ir.actions.act_window"> + <field name="name">User Merchant Request</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">user.merchant.request</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem + id="menu_user_merchant_request" + name="User Merchant Request" + parent="res_partner_menu_user" + sequence="2" + action="action_user_merchant_request" + /> +</odoo>
\ No newline at end of file |
