summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2024-04-29 06:30:50 +0000
committerIT Fixcomart <it@fixcomart.co.id>2024-04-29 06:30:50 +0000
commit1c0c7be74b11371299bead2626840b3ebc2632f7 (patch)
tree14e43d531e420cedb3f69956c2e5b75e81a2345e /indoteknik_custom/models
parent09c3b3a6a706d176f61bf89fc7acb690650b528c (diff)
parenta5727ae0dd3f82bf22b888125d924520833838b4 (diff)
Merged in feature/request-by-abl (pull request #140)
Feature/request by abl
Diffstat (limited to 'indoteknik_custom/models')
-rwxr-xr-xindoteknik_custom/models/__init__.py1
-rw-r--r--indoteknik_custom/models/automatic_purchase.py3
-rw-r--r--indoteknik_custom/models/commision.py3
-rwxr-xr-xindoteknik_custom/models/crm_lead.py9
-rw-r--r--indoteknik_custom/models/cust_commision.py1
-rw-r--r--indoteknik_custom/models/logbook_sj.py4
-rwxr-xr-xindoteknik_custom/models/purchase_order_line.py11
-rw-r--r--indoteknik_custom/models/report_logbook_sj.py1
-rw-r--r--indoteknik_custom/models/res_partner.py27
-rw-r--r--indoteknik_custom/models/res_partner_site.py20
-rwxr-xr-xindoteknik_custom/models/sale_order.py7
-rw-r--r--indoteknik_custom/models/solr/promotion_program_line.py5
12 files changed, 84 insertions, 8 deletions
diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py
index 92a0f232..160d2af3 100755
--- a/indoteknik_custom/models/__init__.py
+++ b/indoteknik_custom/models/__init__.py
@@ -110,3 +110,4 @@ from . import cust_commision
from . import report_stock_forecasted
from . import web_logging
from . import sales_order_fullfillment
+from . import res_partner_site
diff --git a/indoteknik_custom/models/automatic_purchase.py b/indoteknik_custom/models/automatic_purchase.py
index ca64d8b0..dae1c6a4 100644
--- a/indoteknik_custom/models/automatic_purchase.py
+++ b/indoteknik_custom/models/automatic_purchase.py
@@ -406,6 +406,7 @@ class AutomaticPurchase(models.Model):
'qty_so': sale.outgoing,
'qty_po': line.qty_purchase,
'purchase_price': price_so.purchase_price,
+ 'purchase_tax_id': price_so.purchase_tax_id.id if price_so.purchase_tax_id.id else None,
}])
def _create_sync_purchasing_job(self, jobs):
@@ -558,7 +559,7 @@ class AutomaticPurchaseSalesMatch(models.Model):
qty_so = fields.Float(string='Qty SO')
qty_po = fields.Float(string='Qty PO')
purchase_price = fields.Float(string='Purchase Price SO')
-
+ purchase_tax_id = fields.Many2one('account.tax', string='Tax', domain=['|', ('active', '=', False), ('active', '=', True)])
class SyncPurchasingJob(models.Model):
_name = 'sync.purchasing.job'
diff --git a/indoteknik_custom/models/commision.py b/indoteknik_custom/models/commision.py
index e60fe9a7..7ec2cecc 100644
--- a/indoteknik_custom/models/commision.py
+++ b/indoteknik_custom/models/commision.py
@@ -152,6 +152,7 @@ class CustomerCommision(models.Model):
account_name = fields.Char(string='Account Name', tracking=3)
bank_account = fields.Char(string='Account No', tracking=3)
note_transfer = fields.Char(string='Keterangan')
+ brand_ids = fields.Many2many('x_manufactures', string='Brands')
# add status for type of commision, fee, rebate / cashback
# include child or not?
@@ -250,7 +251,7 @@ class CustomerCommision(models.Model):
partners = rec.partner_ids
for partner in partners:
- brand = [92, 10, 89, 12, 324, 11]
+ brand = [int(brand) for brand in rec.brand_ids]
where = [
('move_id.move_type', '=', 'out_invoice'),
('move_id.state', '=', 'posted'),
diff --git a/indoteknik_custom/models/crm_lead.py b/indoteknik_custom/models/crm_lead.py
index e8721142..9ffd607c 100755
--- a/indoteknik_custom/models/crm_lead.py
+++ b/indoteknik_custom/models/crm_lead.py
@@ -23,6 +23,15 @@ class CrmLead(models.Model):
operator_name = fields.Char('Operator Name', help='Operator yang membalas')
order_id = fields.Many2one('sale.order', string='Sales Order', help='Link ke sales order id')
+ @api.model
+ def create(self, vals):
+ rec = super(CrmLead, self).create(vals)
+
+ if rec.email_from == 'api.noreply@altama.co.id' and rec.name.startswith('INDOTEKNIK|ODOO|'):
+ rec.user_id = 20 # User ID: Nabila Rahmawati
+
+ return rec
+
@api.onchange('user_id')
def _change_salesperson_so(self):
if self.order_id:
diff --git a/indoteknik_custom/models/cust_commision.py b/indoteknik_custom/models/cust_commision.py
index da345f04..c3105cfd 100644
--- a/indoteknik_custom/models/cust_commision.py
+++ b/indoteknik_custom/models/cust_commision.py
@@ -21,6 +21,7 @@ class CustCommision(models.Model):
('cashback', 'Cashback'),
('rebate', 'Rebate'),
], string='Commision Type', required=True)
+ brand_ids = fields.Many2many('x_manufactures', string='Brands', help='Voucher appplied only for brand')
@api.constrains('partner_id')
def _check_partner_id(self):
diff --git a/indoteknik_custom/models/logbook_sj.py b/indoteknik_custom/models/logbook_sj.py
index 9e3daf20..f84619ad 100644
--- a/indoteknik_custom/models/logbook_sj.py
+++ b/indoteknik_custom/models/logbook_sj.py
@@ -40,7 +40,8 @@ class LogbookSJ(models.TransientModel):
'carrier_id': stock.carrier_id.id,
'tracking_no': stock.delivery_tracking_no,
'partner_id': parent_id,
- 'report_logbook_sj_id': report_logbook.id
+ 'report_logbook_sj_id': report_logbook.id,
+ 'note': line.note
}
self.env['report.logbook.sj.line'].create([data])
@@ -69,6 +70,7 @@ class LogbookSJLine(models.TransientModel):
logbook_sj_id = fields.Many2one('logbook.sj', string='Logbook SJ')
partner_id = fields.Many2one('res.partner', string='Customer')
picking_id = fields.Many2one('res.partner', string='Customer')
+ note = fields.Char(string='Note')
@api.onchange('name')
def onchange_name(self):
diff --git a/indoteknik_custom/models/purchase_order_line.py b/indoteknik_custom/models/purchase_order_line.py
index 624415e3..2eeb7d3e 100755
--- a/indoteknik_custom/models/purchase_order_line.py
+++ b/indoteknik_custom/models/purchase_order_line.py
@@ -42,12 +42,13 @@ class PurchaseOrderLine(models.Model):
@api.constrains('price_unit')
def constrains_purchase_price(self):
- matches_so = self.env['purchase.order.sales.match'].search([
- ('purchase_order_id', '=', self.order_id.id),
- ('product_id', '=', self.product_id.id),
- ])
+ for line in self:
+ matches_so = self.env['purchase.order.sales.match'].search([
+ ('purchase_order_id', '=', line.order_id.id),
+ ('product_id', '=', line.product_id.id),
+ ])
- matches_so.sale_line_id.purchase_price = self.price_unit
+ matches_so.sale_line_id.purchase_price = line.price_unit
@api.constrains('product_qty')
def constrains_product_qty(self):
diff --git a/indoteknik_custom/models/report_logbook_sj.py b/indoteknik_custom/models/report_logbook_sj.py
index f34835ae..093848b5 100644
--- a/indoteknik_custom/models/report_logbook_sj.py
+++ b/indoteknik_custom/models/report_logbook_sj.py
@@ -67,3 +67,4 @@ class ReportLogbookSJLine(models.Model):
sale_id = fields.Many2one('sale.order', string='Sale Order')
report_logbook_sj_id = fields.Many2one('report.logbook.sj', string='Logbook SJ')
not_exist = fields.Boolean(string='Not Exist')
+ note = fields.Char(string='Note')
diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py
index ad6fd6ec..bc8e2b0d 100644
--- a/indoteknik_custom/models/res_partner.py
+++ b/indoteknik_custom/models/res_partner.py
@@ -31,6 +31,33 @@ class ResPartner(models.Model):
('director', 'Director'),
('procurement', 'Procurement'),
], string='Web Role')
+ site_id = fields.Many2one('res.partner.site', string='Site')
+ main_parent_id = fields.Many2one('res.partner', string='Main Parent', compute='_compute_main_parent_id')
+
+ @api.onchange('site_id')
+ def _onchange_site_id(self):
+ for rec in self:
+ if not rec.site_id: continue
+ site = rec.site_id
+
+ rec.street = site.street
+ rec.street2 = site.street2
+ rec.city = site.city
+ 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()
def get_child_ids(self):
partner = self.env['res.partner'].search([('id', '=', self.id)], limit=1)
diff --git a/indoteknik_custom/models/res_partner_site.py b/indoteknik_custom/models/res_partner_site.py
new file mode 100644
index 00000000..00850c97
--- /dev/null
+++ b/indoteknik_custom/models/res_partner_site.py
@@ -0,0 +1,20 @@
+from odoo import models, fields, api
+
+class ResPartnerSite(models.Model):
+ _name = 'res.partner.site'
+
+ partner_ids = fields.One2many('res.partner', 'site_id', string='Partners')
+ partner_id = fields.Many2one('res.partner', string='Partner')
+ name = fields.Char(string='Name')
+ street = fields.Char(string='Street')
+ street2 = fields.Char(string='Street 2')
+ city = fields.Char(string='City')
+ state_id = fields.Many2one('res.country.state', string='State')
+ country_id = fields.Many2one('res.country', string='Country')
+ zip = fields.Char(string='Zip')
+
+ @api.model
+ def create(self, vals):
+ rec = super(ResPartnerSite, self).create(vals)
+ rec.partner_id = rec.partner_id.get_main_parent()
+ return rec \ No newline at end of file
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 1c85914e..055b545a 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -459,6 +459,12 @@ class SaleOrder(models.Model):
raise UserError("Bisa langsung Confirm")
+ def send_notif_to_salesperson(self):
+ for rec in self:
+ if not rec.partner_id.main_parent_id.use_so_approval: continue
+ template = self.env.ref('indoteknik_custom.mail_template_sale_order_notification_to_salesperson')
+ template.send_mail(rec.id, force_send=True)
+
def action_confirm(self):
for order in self:
order._validate_order()
@@ -484,6 +490,7 @@ class SaleOrder(models.Model):
order.approval_status = 'approved'
order._set_sppkp_npwp_contact()
order.calculate_line_no()
+ order.send_notif_to_salesperson()
# order.order_line.get_reserved_from()
res = super(SaleOrder, self).action_confirm()
diff --git a/indoteknik_custom/models/solr/promotion_program_line.py b/indoteknik_custom/models/solr/promotion_program_line.py
index 9cd226fb..36aea1ed 100644
--- a/indoteknik_custom/models/solr/promotion_program_line.py
+++ b/indoteknik_custom/models/solr/promotion_program_line.py
@@ -75,3 +75,8 @@ class PromotionProgramLine(models.Model):
for record in records:
record._create_solr_queue('_sync_to_solr')
record.solr_flag = 1
+
+ def action_sync_to_solr(self):
+ rec_ids = self.env.context.get('active_ids', [])
+ recs = self.search([('id', 'in', rec_ids)])
+ recs._create_solr_queue('_sync_to_solr') \ No newline at end of file