summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2025-03-26 11:11:48 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2025-03-26 11:11:48 +0700
commit4d2041d834a05692a17954a8968acde866379801 (patch)
treeef4be6c5faea725fa488c19b35e64a5e61a11867
parente4256fb981175c456c2033cde443f4f98d72747e (diff)
parent659387826b7d4a8db4afac158065ca125d6d98a6 (diff)
Merge branch 'odoo-backup' into feature/feedback_bitehisp
-rw-r--r--indoteknik_api/controllers/api_v1/banner.py30
-rw-r--r--indoteknik_custom/models/mrp_production.py17
-rwxr-xr-xindoteknik_custom/models/sale_order.py17
-rw-r--r--indoteknik_custom/models/solr/x_banner_banner.py3
-rw-r--r--indoteknik_custom/models/user_pengajuan_tempo_request.py19
-rwxr-xr-xindoteknik_custom/models/x_banner_banner.py3
-rw-r--r--indoteknik_custom/views/mrp_production.xml2
-rwxr-xr-xindoteknik_custom/views/x_banner_banner.xml1
8 files changed, 65 insertions, 27 deletions
diff --git a/indoteknik_api/controllers/api_v1/banner.py b/indoteknik_api/controllers/api_v1/banner.py
index 308d2765..64a6167b 100644
--- a/indoteknik_api/controllers/api_v1/banner.py
+++ b/indoteknik_api/controllers/api_v1/banner.py
@@ -15,7 +15,8 @@ class Banner(controller.Controller):
limit = int(kw.get('limit', 0))
offset = int(kw.get('offset', 0))
order = kw.get('order', 'write_date DESC')
-
+ keyword = kw.get('keyword')
+
query = [('x_status_banner', '=', 'tayang')]
if type:
query += [('x_banner_category.x_studio_field_KKVl4', '=', type)]
@@ -25,9 +26,27 @@ class Banner(controller.Controller):
if manufacture_id:
query += [('x_relasi_manufacture', '=', int(manufacture_id))]
-
- banners = request.env['x_banner.banner'].search(query, limit=limit, offset=offset, order=order)
-
+
+ banner_kumpulan = []
+ banner_ids = set() # Set untuk menyimpan ID banner agar tidak duplikat
+
+ if keyword:
+ keyword_list = [word.strip() for word in keyword.split() if word.strip()] # Pisahkan berdasarkan spasi
+
+ for word in keyword_list:
+ keyword_query = query + [('x_keyword_banner', 'ilike', word)] # Buat query baru dengan keyword
+ banners = request.env['x_banner.banner'].search(keyword_query, limit=limit, offset=offset, order=order)
+
+ for banner in banners:
+ if banner.id not in banner_ids: # Pastikan tidak ada duplikasi
+ banner_kumpulan.append(banner)
+ banner_ids.add(banner.id)
+
+ if not keyword:
+ banners = request.env['x_banner.banner'].search(query, limit=limit, offset=offset, order=order)
+ else:
+ banners = banner_kumpulan if len(banner_kumpulan) > 0 else request.env['x_banner.banner'].search(query, limit=limit, offset=offset, order=order)
+
week_number = self.get_week_number_of_current_month()
end_datas = []
@@ -41,7 +60,8 @@ class Banner(controller.Controller):
'group_by_week': banner.group_by_week,
'image': request.env['ir.attachment'].api_image('x_banner.banner', 'x_banner_image', banner.id),
'headline_banner': banner.x_headline_banner,
- 'description_banner': banner.x_description_banner
+ 'description_banner': banner.x_description_banner,
+ 'keyword_banner': banner.x_keyword_banner
}
if banner.group_by_week and int(banner.group_by_week) < week_number and type == 'index-a-1':
diff --git a/indoteknik_custom/models/mrp_production.py b/indoteknik_custom/models/mrp_production.py
index 54d90256..0bf98702 100644
--- a/indoteknik_custom/models/mrp_production.py
+++ b/indoteknik_custom/models/mrp_production.py
@@ -6,5 +6,18 @@ class MrpProduction(models.Model):
_inherit = 'mrp.production'
desc = fields.Text(string='Description')
-
- \ No newline at end of file
+ sale_order = fields.Many2one('sale.order', string='Sale Order', required=True, copy=False)
+
+ def action_confirm(self):
+ """Override action_confirm untuk mengirim pesan ke Sale Order jika state berubah menjadi 'confirmed'."""
+ if self._name != 'mrp.production':
+ return super(MrpProduction, self).action_confirm()
+
+ result = super(MrpProduction, self).action_confirm()
+
+ for record in self:
+ if record.sale_order and record.state == 'confirmed':
+ message = _("Manufacturing order telah dibuat dengan nomor %s") % (record.name)
+ record.sale_order.message_post(body=message)
+
+ return result \ No newline at end of file
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index b17df045..c7fcabbb 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -237,7 +237,8 @@ class SaleOrder(models.Model):
@api.constrains('shipping_option_id')
def _check_shipping_option(self):
for rec in self:
- rec.delivery_amt = rec.shipping_option_id.price
+ if rec.shipping_option_id:
+ rec.delivery_amt = rec.shipping_option_id.price
def _compute_shipping_method_picking(self):
for order in self:
@@ -653,6 +654,14 @@ class SaleOrder(models.Model):
if self.email and not re.match(pattern, self.email):
raise UserError('Email yang anda input kurang valid')
+ def _validate_delivery_amt(self):
+ if self.delivery_amt < 1:
+ if(self.carrier_id.id == 1 or self.shipping_cost_covered == 'indoteknik'):
+ if(self.carrier_id.id == 1):
+ raise UserError('Untuk Kurir Indoteknik Delivery, Estimasi Ongkos Kirim Harus di isi')
+ else:
+ raise UserError('Untuk Shipping Covered Indoteknik, Estimasi Ongkos Kirim Harus di isi')
+
def override_allow_create_invoice(self):
if not self.env.user.is_accounting:
raise UserError('Hanya Finance Accounting yang dapat klik tombol ini')
@@ -1416,7 +1425,9 @@ class SaleOrder(models.Model):
delivery_amt = order.delivery_amt
else:
delivery_amt = 0
- order.total_percent_margin = round((order.total_margin / (order.amount_untaxed-delivery_amt-order.fee_third_party)) * 100, 2)
+
+ # order.total_percent_margin = round((order.total_margin / (order.amount_untaxed-delivery_amt-order.fee_third_party)) * 100, 2)
+ order.total_percent_margin = round((order.total_margin / (order.amount_untaxed-order.fee_third_party)) * 100, 2)
# order.total_percent_margin = round((order.total_margin / (order.amount_untaxed)) * 100, 2)
@api.onchange('sales_tax_id')
@@ -1672,6 +1683,7 @@ class SaleOrder(models.Model):
order = super(SaleOrder, self).create(vals)
order._compute_etrts_date()
order._validate_expected_ready_ship_date()
+ order._validate_delivery_amt()
# order._update_partner_details()
return order
@@ -1714,6 +1726,7 @@ class SaleOrder(models.Model):
"SO tidak dapat ditambahkan produk baru karena SO sudah menjadi sale order.")
res = super(SaleOrder, self).write(vals)
+ self._validate_delivery_amt()
if any(field in vals for field in ["order_line", "client_order_ref"]):
self._calculate_etrts_date()
return res \ No newline at end of file
diff --git a/indoteknik_custom/models/solr/x_banner_banner.py b/indoteknik_custom/models/solr/x_banner_banner.py
index 8452644c..aa6e0c2a 100644
--- a/indoteknik_custom/models/solr/x_banner_banner.py
+++ b/indoteknik_custom/models/solr/x_banner_banner.py
@@ -23,7 +23,7 @@ class XBannerBanner(models.Model):
'function_name': function_name
})
- @api.constrains('x_name', 'x_url_banner', 'background_color', 'x_banner_image', 'x_banner_category', 'x_relasi_manufacture', 'x_sequence_banner', 'x_status_banner', 'sequence', 'group_by_week', 'headline_banner_s', 'description_banner_s')
+ @api.constrains('x_name', 'x_url_banner', 'background_color', 'x_banner_image', 'x_banner_category', 'x_relasi_manufacture', 'x_sequence_banner', 'x_status_banner', 'sequence', 'group_by_week', 'headline_banner_s', 'description_banner_s', 'x_keyword_banner')
def _create_solr_queue_sync_brands(self):
self._create_solr_queue('_sync_banners_to_solr')
@@ -51,6 +51,7 @@ class XBannerBanner(models.Model):
'group_by_week': banners.group_by_week or '',
'headline_banner_s': banners.x_headline_banner or '',
'description_banner_s': banners.x_description_banner or '',
+ 'keyword_banner_s': banners.x_keyword_banner or '',
})
self.solr().add([document])
banners.update_last_update_solr()
diff --git a/indoteknik_custom/models/user_pengajuan_tempo_request.py b/indoteknik_custom/models/user_pengajuan_tempo_request.py
index abcb6f2f..565b0315 100644
--- a/indoteknik_custom/models/user_pengajuan_tempo_request.py
+++ b/indoteknik_custom/models/user_pengajuan_tempo_request.py
@@ -110,7 +110,7 @@ class UserPengajuanTempoRequest(models.Model):
pic_tittle = fields.Char(string='Tittle PIC Penerimaan Barang', related='pengajuan_tempo_id.pic_tittle', store=True, readonly=False)
pic_mobile = fields.Char(string='Nomor HP PIC Penerimaan Barang', related='pengajuan_tempo_id.pic_mobile', store=True, readonly=False)
pic_name = fields.Char(string='Nama PIC Penerimaan Barang', related='pengajuan_tempo_id.pic_name', store=True, readonly=False)
- street_pengiriman = fields.Char(string="Alamat Perusahaan", related='pengajuan_tempo_id.street_pengiriman', store=True, readonly=False)
+ street_pengiriman = fields.Char(string="Alamat Pengiriman Barang", related='pengajuan_tempo_id.street_pengiriman', store=True, readonly=False)
state_id_pengiriman = fields.Many2one('res.country.state', string='State', related='pengajuan_tempo_id.state_id_pengiriman', store=True, readonly=False)
city_id_pengiriman = fields.Many2one('vit.kota', string='City', related='pengajuan_tempo_id.city_id_pengiriman', store=True, readonly=False)
district_id_pengiriman = fields.Many2one('vit.kecamatan', string='Kecamatan',related='pengajuan_tempo_id.district_id_pengiriman', store=True, readonly=False)
@@ -119,7 +119,7 @@ class UserPengajuanTempoRequest(models.Model):
invoice_pic_tittle = fields.Char(string='Tittle PIC Penerimaan Invoice', related='pengajuan_tempo_id.invoice_pic_tittle', store=True, readonly=False)
invoice_pic_mobile = fields.Char(string='Nomor HP PIC Penerimaan Invoice', related='pengajuan_tempo_id.invoice_pic_mobile', store=True, readonly=False)
invoice_pic = fields.Char(string='Nama PIC Penerimaan Invoice', related='pengajuan_tempo_id.invoice_pic', store=True, readonly=False)
- street_invoice = fields.Char(string="Alamat Perusahaan", related='pengajuan_tempo_id.street_invoice', store=True, readonly=False)
+ street_invoice = fields.Char(string="Alamat Pengiriman Invoice", related='pengajuan_tempo_id.street_invoice', store=True, readonly=False)
state_id_invoice = fields.Many2one('res.country.state', string='State', related='pengajuan_tempo_id.state_id_invoice', store=True, readonly=False)
city_id_invoice = fields.Many2one('vit.kota', string='City', related='pengajuan_tempo_id.city_id_invoice', store=True, readonly=False)
district_id_invoice = fields.Many2one('vit.kecamatan', string='Kecamatan', related='pengajuan_tempo_id.district_id_invoice', store=True, readonly=False)
@@ -548,20 +548,7 @@ class UserPengajuanTempoRequest(models.Model):
('name', '=', contact_data['name'])
], limit=1)
- if existing_contact:
- # Pastikan tidak ada duplikasi nama dalam perusahaan yang sama
- duplicate_check = self.env['res.partner'].search([
- ('name', '=', contact_data['name']),
- ('id', '!=', existing_contact.id) # Hindari update yang menyebabkan duplikasi global
- ], limit=1)
-
- if not duplicate_check:
- # Perbarui hanya field yang tidak menyebabkan konflik
- update_data = {k: v for k, v in contact_data.items() if k != 'name'}
- existing_contact.write(update_data)
- else:
- raise UserError(f"Skipping update for {contact_data['name']} due to existing duplicate.")
- else:
+ if not existing_contact:
# Pastikan tidak ada partner lain dengan nama yang sama sebelum membuat baru
duplicate_check = self.env['res.partner'].search([
('name', '=', contact_data['name'])
diff --git a/indoteknik_custom/models/x_banner_banner.py b/indoteknik_custom/models/x_banner_banner.py
index 810bdf39..16d54b02 100755
--- a/indoteknik_custom/models/x_banner_banner.py
+++ b/indoteknik_custom/models/x_banner_banner.py
@@ -25,4 +25,5 @@ class XBannerBanner(models.Model):
('4', '4')
], string='Group by Week')
x_headline_banner = fields.Text(string="Headline Banner")
- x_description_banner = fields.Text(string="Description Banner") \ No newline at end of file
+ x_description_banner = fields.Text(string="Description Banner")
+ x_keyword_banner = fields.Text(string="Keyword Banner") \ No newline at end of file
diff --git a/indoteknik_custom/views/mrp_production.xml b/indoteknik_custom/views/mrp_production.xml
index f81d65e8..95f419f6 100644
--- a/indoteknik_custom/views/mrp_production.xml
+++ b/indoteknik_custom/views/mrp_production.xml
@@ -7,6 +7,7 @@
<field name="arch" type="xml">
<field name="bom_id" position="after">
<field name="desc"/>
+ <field name="sale_order"/>
</field>
</field>
</record>
@@ -18,6 +19,7 @@
<field name="arch" type="xml">
<field name="product_id" position="after">
<field name="desc"/>
+ <field name="sale_order"/>
</field>
</field>
</record>
diff --git a/indoteknik_custom/views/x_banner_banner.xml b/indoteknik_custom/views/x_banner_banner.xml
index ec1e38a5..e40568cc 100755
--- a/indoteknik_custom/views/x_banner_banner.xml
+++ b/indoteknik_custom/views/x_banner_banner.xml
@@ -33,6 +33,7 @@
<field name="group_by_week" />
<field name="x_headline_banner" />
<field name="x_description_banner" />
+ <field name="x_keyword_banner" />
<field name="last_update_solr" readonly="1"/>
</group>
<group>