summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/purchase_order_line.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_custom/models/purchase_order_line.py')
-rwxr-xr-xindoteknik_custom/models/purchase_order_line.py42
1 files changed, 42 insertions, 0 deletions
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: