summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-10-15 15:55:35 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-10-15 15:55:35 +0700
commit7f5dca3d98d6f537ebb8062286621a6e1b95f8f6 (patch)
treee00a6d63067778d5f23aba9ce9b596599fa3e654
parent29e6aa1d25a7484736399ddbf21dd180ffb2f025 (diff)
parent65436a03d40cd31e0111727fe6c84380eba005d5 (diff)
Merge branch 'production' of bitbucket.org:altafixco/indoteknik-addons into production
-rw-r--r--indoteknik_api/controllers/api_v1/product.py5
-rw-r--r--indoteknik_api/controllers/api_v1/user.py2
-rwxr-xr-xindoteknik_custom/models/crm_lead.py91
-rwxr-xr-xindoteknik_custom/models/sale_order.py15
4 files changed, 107 insertions, 6 deletions
diff --git a/indoteknik_api/controllers/api_v1/product.py b/indoteknik_api/controllers/api_v1/product.py
index e779e623..8fe48932 100644
--- a/indoteknik_api/controllers/api_v1/product.py
+++ b/indoteknik_api/controllers/api_v1/product.py
@@ -73,7 +73,10 @@ class Product(controller.Controller):
total_adem = qty_altama
if qty_available > 0:
- qty = qty_available + total_adem + total_excell
+ qty = qty_available
+ sla_date = '1 Hari'
+ elif qty_available > 0 and qty_altama > 0:
+ qty = qty_available
sla_date = '1 Hari'
elif qty_altama > 0 or qty_vendor > 0:
qty = total_adem if qty_altama > 0 else total_excell
diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py
index c7bfe91a..e4f8b97f 100644
--- a/indoteknik_api/controllers/api_v1/user.py
+++ b/indoteknik_api/controllers/api_v1/user.py
@@ -248,7 +248,7 @@ class User(controller.Controller):
if type_acc == 'individu':
user.partner_id.customer_type = 'nonpkp'
- user.partner_id.npwp = '0.000.000.0-000.000'
+ user.partner_id.npwp = '00.000.000.0-000.000'
user.partner_id.sppkp = '-'
user.partner_id.nama_wajib_pajak = name
user.partner_id.user_id = 3222
diff --git a/indoteknik_custom/models/crm_lead.py b/indoteknik_custom/models/crm_lead.py
index 9ffd607c..de2bdb12 100755
--- a/indoteknik_custom/models/crm_lead.py
+++ b/indoteknik_custom/models/crm_lead.py
@@ -2,6 +2,7 @@ from odoo import fields, models, api
import logging
import random
from odoo.exceptions import AccessError, UserError, ValidationError
+from datetime import datetime, timedelta
_logger = logging.getLogger(__name__)
@@ -97,4 +98,92 @@ class CrmLead(models.Model):
lead.user_id = salesperson_id
-
+ def _update_pipeline(self, delta=48, limit=100):
+ # Get the current time
+ current_time = datetime.now()
+
+ # Calculate the time 24 hours ago
+ time_48_hours_ago = current_time - timedelta(hours=delta)
+
+ # Define the allowed states
+ allowed_states = ['sale', 'done']
+
+ # Search for sale orders with date_order greater than 24 hours ago and opportunity_id is null
+ orders = self.env['sale.order'].search([
+ ('write_date', '>=', time_48_hours_ago),
+ ('opportunity_id', '!=', False),
+ ('state', 'in', allowed_states)
+ ], limit=limit)
+ for order in orders:
+ order.opportunity_id.stage_id = 4
+ _logger.info('finish order stage pipeline %s' % order.id)
+
+ def _cancel_pipeline(self, delta=48, limit=100):
+ # Get the current time
+ current_time = datetime.now()
+
+ # Calculate the time 24 hours ago
+ time_48_hours_ago = current_time - timedelta(hours=delta)
+
+ # Define the allowed states
+ allowed_states = ['cancel']
+
+ # Search for sale orders with date_order greater than 24 hours ago and opportunity_id is null
+ orders = self.env['sale.order'].search([
+ ('write_date', '>=', time_48_hours_ago),
+ ('opportunity_id', '!=', False),
+ ('state', 'in', allowed_states)
+ ], limit=limit)
+ for order in orders:
+ order.opportunity_id.stage_id = 7
+ _logger.info('cancel order stage pipeline %s' % order.id)
+
+ def _convert_to_pipeline(self, delta=48, limit=100):
+ # Get the current time
+ current_time = datetime.now()
+
+ # Calculate the time 24 hours ago
+ time_48_hours_ago = current_time - timedelta(hours=delta)
+
+ # Define the allowed states
+ allowed_states = ['draft', 'done', 'sale', 'sent', 'cancel']
+
+ # Search for sale orders with date_order greater than 24 hours ago and opportunity_id is null
+ orders = self.env['sale.order'].search([
+ ('write_date', '>=', time_48_hours_ago),
+ ('opportunity_id', '=', False),
+ ('state', 'in', allowed_states)
+ ], limit=limit)
+ # stage
+ # 1 potensi baru, 2 proses quotation, 3 proses lain visit, 4 proses berhasil, 5 proses negosiasi, 7 tidak terpakai / gagal
+ for order in orders:
+ # stage_id = 2
+ if order.state == 'sale' or order.state == 'done':
+ stage_id = 4
+ elif order.state == 'sent':
+ stage_id = 5
+ elif order.state == 'cancel':
+ stage_id = 7
+ else:
+ stage_id = 2
+ crm_lead = self.env['crm.lead'].create([{
+ 'email_normalized': order.email,
+ 'name': order.name,
+ 'user_id': order.user_id.id,
+ 'company_id': 1,
+ 'type': 'opportunity',
+ 'priority': 0,
+ 'team_id': order.team_id.id,
+ 'stage_id': stage_id,
+ 'expected_revenue': order.amount_untaxed,
+ 'partner_id': order.partner_id.parent_id.id or order.partner_id.id,
+ 'contact_name': order.partner_id.name,
+ 'partner_name': order.partner_id.parent_id.name or order.partner_id.name,
+ 'phone': order.partner_id.mobile,
+ 'street': order.partner_id.street,
+ 'street2': order.partner_id.street2,
+ 'zip': order.partner_id.zip,
+ 'order_id': order.id
+ }])
+ order.opportunity_id = crm_lead.id
+ _logger.info('convert order to opportunity %s' % crm_lead.id)
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index c1c2c267..e6382cd9 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -1024,11 +1024,20 @@ class SaleOrder(models.Model):
def _set_sppkp_npwp_contact(self):
partner = self.partner_id.parent_id or self.partner_id
- if not partner.sppkp or not partner.npwp or not partner.email or partner.customer_type:
- partner.customer_type = self.customer_type
- partner.npwp = self.npwp
+ if not partner.sppkp:
partner.sppkp = self.sppkp
+ if not partner.npwp:
+ partner.npwp = self.npwp
+ if not partner.email:
partner.email = self.email
+ if not partner.customer_type:
+ partner.customer_type = self.customer_type
+
+ # if not partner.sppkp or not partner.npwp or not partner.email or partner.customer_type:
+ # partner.customer_type = self.customer_type
+ # partner.npwp = self.npwp
+ # partner.sppkp = self.sppkp
+ # partner.email = self.email
def _compute_total_margin(self):
for order in self: