summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_custom/models/automatic_purchase.py10
-rwxr-xr-xindoteknik_custom/models/purchase_order.py2
-rwxr-xr-xindoteknik_custom/models/purchase_order_line.py42
-rw-r--r--indoteknik_custom/models/purchasing_job.py1
-rw-r--r--indoteknik_custom/models/stock_move.py1
-rw-r--r--indoteknik_custom/models/stock_picking.py2
-rwxr-xr-xindoteknik_custom/views/purchase_order.xml1
-rw-r--r--indoteknik_custom/views/stock_picking.xml3
8 files changed, 56 insertions, 6 deletions
diff --git a/indoteknik_custom/models/automatic_purchase.py b/indoteknik_custom/models/automatic_purchase.py
index 479d4e42..6478f2c9 100644
--- a/indoteknik_custom/models/automatic_purchase.py
+++ b/indoteknik_custom/models/automatic_purchase.py
@@ -253,7 +253,8 @@ class AutomaticPurchase(models.Model):
'product_uom_qty': line.qty_purchase,
'price_unit': line.last_price,
'taxes_id': [line.taxes_id.id] if line.taxes_id else None,
- # 'so_line_id': [sales.sale_line_id.id for sales in sales_match],
+ 'so_line_id': sales_match[0].sale_line_id.id if sales_match else None,
+ 'so_id': sales_match[0].sale_id.id if sales_match else None
}
new_po_line = self.env['purchase.order.line'].create([param_line])
line.current_po_id = new_po.id
@@ -279,9 +280,9 @@ class AutomaticPurchase(models.Model):
('sale_line_id.product_id', 'in', matches_so_product_ids),
])
- sale_ids = []
+ sale_ids_set = set()
for sale_order in matches_so:
- sale_ids.append(str(sale_order.sale_id.name))
+ sale_ids_set.add(str(sale_order.sale_id.name))
matches_so_line = {
'purchase_order_id': purchase_order.id,
@@ -299,10 +300,9 @@ class AutomaticPurchase(models.Model):
}
po_matches_so_line = self.env['purchase.order.sales.match'].create([matches_so_line])
- sale_ids_str = ','.join(sale_ids)
+ sale_ids_str = ','.join(sale_ids_set)
purchase_order.sale_order = sale_ids_str
-
self.create_sales_order_purchase_match(purchase_order)
diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py
index be971307..5946399d 100755
--- a/indoteknik_custom/models/purchase_order.py
+++ b/indoteknik_custom/models/purchase_order.py
@@ -1,5 +1,6 @@
from odoo import fields, models, api, _
from odoo.exceptions import AccessError, UserError, ValidationError
+from dateutil.relativedelta import relativedelta
from datetime import datetime, timedelta
import logging
from pytz import timezone, utc
@@ -315,6 +316,7 @@ class PurchaseOrder(models.Model):
'qty_available_store': qty_available,
# 'suggest': suggest,
'so_line_id': order_line.id,
+ 'so_id': order_line.order_id.id,
}
self.order_line.create(values)
for order_line in self.order_line:
diff --git a/indoteknik_custom/models/purchase_order_line.py b/indoteknik_custom/models/purchase_order_line.py
index 2eeb7d3e..8a3b3930 100755
--- a/indoteknik_custom/models/purchase_order_line.py
+++ b/indoteknik_custom/models/purchase_order_line.py
@@ -2,6 +2,7 @@ from odoo import fields, models, api, _
from odoo.exceptions import AccessError, UserError, ValidationError
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
import logging
+from dateutil.relativedelta import relativedelta
from datetime import datetime
_logger = logging.getLogger(__name__)
@@ -31,6 +32,7 @@ class PurchaseOrderLine(models.Model):
suggest = fields.Char(string='Suggest')
price_vendor = fields.Float(string='Price Vendor', compute='compute_price_vendor')
so_line_id = fields.Many2one('sale.order.line', string='ID SO Line')
+ so_id = fields.Many2one('sale.order', string='SO')
indent = fields.Boolean(string='Indent', help='centang ini jika barang indent')
is_ltc = fields.Boolean(string='Sudah di LTC', default=False, help='centang ini jika barang sudah di LTC')
note = fields.Char(string='Note')
@@ -40,6 +42,46 @@ class PurchaseOrderLine(models.Model):
delete_line = fields.Boolean(string='Delete', default=False, help='centang ini jika anda ingin menghapus line ini')
is_edit_product_qty = fields.Boolean(string='Is Edit Product Qty', compute='_compute_is_edit_product_qty')
+ def _prepare_stock_move_vals(self, picking, price_unit, product_uom_qty, product_uom):
+ self.ensure_one()
+ product = self.product_id.with_context(lang=self.order_id.dest_address_id.lang or self.env.user.lang)
+ description_picking = product._get_description(self.order_id.picking_type_id)
+ if self.product_description_variants:
+ description_picking += "\n" + self.product_description_variants
+ date_planned = self.date_planned or self.order_id.date_planned
+
+ if self.so_id:
+ sale_id = self.so_id.id
+ else:
+ sale_id = self.so_line_id.order_id.id
+
+ return {
+ # truncate to 2000 to avoid triggering index limit error
+ # TODO: remove index in master?
+ 'name': (self.name or '')[:2000],
+ 'product_id': self.product_id.id,
+ 'date': date_planned,
+ 'date_deadline': date_planned + relativedelta(days=self.order_id.company_id.po_lead),
+ 'location_id': self.order_id.partner_id.property_stock_supplier.id,
+ 'location_dest_id': (self.orderpoint_id and not (self.move_ids | self.move_dest_ids)) and self.orderpoint_id.location_id.id or self.order_id._get_destination_location(),
+ 'picking_id': picking.id,
+ 'partner_id': self.order_id.dest_address_id.id,
+ 'move_dest_ids': [(4, x) for x in self.move_dest_ids.ids],
+ 'state': 'draft',
+ 'purchase_line_id': self.id,
+ 'company_id': self.order_id.company_id.id,
+ 'price_unit': price_unit,
+ 'picking_type_id': self.order_id.picking_type_id.id,
+ 'group_id': self.order_id.group_id.id,
+ 'origin': self.order_id.name,
+ 'description_picking': description_picking,
+ 'propagate_cancel': self.propagate_cancel,
+ 'warehouse_id': self.order_id.picking_type_id.warehouse_id.id,
+ 'product_uom_qty': product_uom_qty,
+ 'product_uom': product_uom.id,
+ 'sale_id': sale_id,
+ }
+
@api.constrains('price_unit')
def constrains_purchase_price(self):
for line in self:
diff --git a/indoteknik_custom/models/purchasing_job.py b/indoteknik_custom/models/purchasing_job.py
index deec88d7..bdd35874 100644
--- a/indoteknik_custom/models/purchasing_job.py
+++ b/indoteknik_custom/models/purchasing_job.py
@@ -58,6 +58,7 @@ class PurchasingJob(models.Model):
CASE
WHEN vendor_id = 5571 THEN 27
WHEN vendor_id = 9688 THEN 397
+ WHEN vendor_id = 35475 THEN 397
ELSE (CASE WHEN random() < 0.5 THEN 397 ELSE 1036 END)
END AS user_id,
vendor_id
diff --git a/indoteknik_custom/models/stock_move.py b/indoteknik_custom/models/stock_move.py
index dade9a04..9c991be3 100644
--- a/indoteknik_custom/models/stock_move.py
+++ b/indoteknik_custom/models/stock_move.py
@@ -5,6 +5,7 @@ class StockMove(models.Model):
_inherit = 'stock.move'
line_no = fields.Integer('No', default=0)
+ sale_id = fields.Many2one('sale.order', string='SO')
def _prepare_account_move_line_from_mr(self, po_line, qty, move=False):
po_line.ensure_one()
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index d98a2c82..9b4fffb1 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -81,7 +81,7 @@ class StockPicking(models.Model):
status_printed = fields.Selection([
('not_printed', 'Belum Print'),
('printed', 'Printed')
- ], string='Printed?', copy=False)
+ ], string='Printed?', copy=False, tracking=True)
date_unreserve = fields.Datetime(string="Date Unreserved", copy=False, tracking=True)
date_availability = fields.Datetime(string="Date Availability", copy=False, tracking=True)
sale_order = fields.Char(string='Matches SO', copy=False)
diff --git a/indoteknik_custom/views/purchase_order.xml b/indoteknik_custom/views/purchase_order.xml
index eedd9ec9..bb38715e 100755
--- a/indoteknik_custom/views/purchase_order.xml
+++ b/indoteknik_custom/views/purchase_order.xml
@@ -72,6 +72,7 @@
</field>
<field name="price_subtotal" position="after">
<field name="so_line_id" attrs="{'readonly': 1}" optional="hide"/>
+ <field name="so_id" attrs="{'readonly': 1}" optional="hide"/>
<field name="indent" optional="hide"/>
</field>
<page name="purchase_delivery_invoice" position="after">
diff --git a/indoteknik_custom/views/stock_picking.xml b/indoteknik_custom/views/stock_picking.xml
index e4b7596f..90f662cc 100644
--- a/indoteknik_custom/views/stock_picking.xml
+++ b/indoteknik_custom/views/stock_picking.xml
@@ -88,6 +88,9 @@
<field name="product_id" position="before">
<field name="line_no" attrs="{'readonly': 1}" optional="hide"/>
</field>
+ <field name="product_uom" position="after">
+ <field name="sale_id" attrs="{'readonly': 1}" optional="hide"/>
+ </field>
<page name="note" position="after">
<page string="E-Faktur" name="efaktur" attrs="{'invisible': [['is_internal_use', '=', False]]}">
<group>