summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/sale_order.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_custom/models/sale_order.py')
-rwxr-xr-xindoteknik_custom/models/sale_order.py66
1 files changed, 65 insertions, 1 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index f21a80fe..3f6f5032 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -1,9 +1,11 @@
from odoo import fields, models, api, _
from odoo.exceptions import AccessError, UserError, ValidationError
from odoo.tools.misc import formatLang, get_lang
-
+import logging
import warnings
+_logger = logging.getLogger(__name__)
+
class SaleOrder(models.Model):
_inherit = "sale.order"
@@ -42,6 +44,68 @@ class SaleOrder(models.Model):
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]",
help="Dipakai untuk alamat tempel")
fee_third_party = fields.Float('Fee Pihak Ketiga')
+ so_status = fields.Selection([
+ ('terproses', 'Terproses'),
+ ('sebagian', 'Sebagian Diproses'),
+ ('menunggu', 'Menunggu Diproses'),
+ ])
+ partner_purchase_order_name = fields.Char(string='Nama PO Customer', copy=False, help="Nama purchase order customer, diisi oleh customer melalui website.", tracking=3)
+ partner_purchase_order_description = fields.Text(string='Keterangan PO Customer', copy=False, help="Keterangan purchase order customer, diisi oleh customer melalui website.", tracking=3)
+ partner_purchase_order_file = fields.Binary(string='File PO Customer', copy=False, help="File purchase order customer, diisi oleh customer melalui website.")
+
+ def calculate_so_status_beginning(self):
+ so_state = ['sale']
+ sales = self.env['sale.order'].search([
+ ('state', 'in', so_state),# must add validation so_status
+ ])
+ for sale in sales:
+ sum_qty_ship = sum_qty_so = 0
+ have_outstanding_pick = False
+
+ for pick in sale.picking_ids:
+ if pick.state == 'draft' or pick.state == 'assigned' or pick.state == 'confirmed' or pick.state == 'waiting':
+ have_outstanding_pick = True
+
+ for so_line in sale.order_line:
+ sum_qty_so += so_line.product_uom_qty
+ sum_qty_ship += so_line.qty_delivered
+
+ if have_outstanding_pick:
+ if sum_qty_so > sum_qty_ship > 0:
+ sale.so_status = 'sebagian'
+ else:
+ sale.so_status = 'menunggu'
+ else:
+ sale.so_status = 'terproses'
+ _logger.info('Calculate SO Status %s' % sale.id)
+
+ def calculate_so_status(self):
+ so_state = ['sale']
+ so_status = ['sebagian', 'menunggu']
+ sales = self.env['sale.order'].search([
+ ('state', 'in', so_state),
+ ('so_status', 'in', so_status),
+ ])
+ for sale in sales:
+ sum_qty_ship = sum_qty_so = 0
+ have_outstanding_pick = False
+
+ for pick in sale.picking_ids:
+ if pick.state == 'draft' or pick.state == 'assigned' or pick.state == 'confirmed' or pick.state == 'waiting':
+ have_outstanding_pick = True
+
+ for so_line in sale.order_line:
+ sum_qty_so += so_line.product_uom_qty
+ sum_qty_ship += so_line.qty_delivered
+
+ if have_outstanding_pick:
+ if sum_qty_so > sum_qty_ship > 0:
+ sale.so_status = 'sebagian'
+ else:
+ sale.so_status = 'menunggu'
+ else:
+ sale.so_status = 'terproses'
+ _logger.info('Calculate SO Status %s' % sale.id)
@api.onchange('partner_shipping_id')
def onchange_partner_shipping(self):