diff --git a/sf_dlm/models/product_template.py b/sf_dlm/models/product_template.py
index 1364c76e..d37e2887 100644
--- a/sf_dlm/models/product_template.py
+++ b/sf_dlm/models/product_template.py
@@ -31,8 +31,9 @@ class ResProductTemplate(models.Model):
embryo_model_type_id = fields.Many2one('sf.model.type', string='胚料模型类型')
model_processing_panel = fields.Char('模型加工面板')
# model_surface_process_category_id = fields.Many2one('sf.production.process.category', string='表面工艺类别')
- model_surface_process_id = fields.Many2many('sf.production.process', 'rel_product_process', string='表面工艺')
- model_process_parameters_id = fields.Many2many('sf.processing.technology', 'rel_product_technology', string='工艺参数')
+ model_surface_process_ids = fields.Many2many('sf.production.process', 'rel_product_process', string='表面工艺')
+ model_process_parameters_ids = fields.Many2many('sf.production.process.parameter', 'rel_product_parameter',
+ string='工艺参数')
# model_price = fields.Float('模型单价', digits=(16, 3))
model_remark = fields.Char('模型备注说明')
length = fields.Float('长[mm]', digits=(16, 3))
@@ -99,6 +100,7 @@ class ResProductTemplate(models.Model):
'model_file': '' if not item['model_file'] else base64.b64decode(item['model_file']),
'model_name': attachment.name,
'upload_model_file': [(6, 0, [attachment.id])],
+ # 'tag_ids': [(6, 0, [t.id for t in account_template.tag_ids])],
# 'single_manufacturing': True,
# 'tracking': 'serial',
'list_price': item['price'],
@@ -107,10 +109,8 @@ class ResProductTemplate(models.Model):
[('materials_no', '=', item['texture_code'])]).id,
'materials_type_id': self.env['sf.materials.model'].search(
[('materials_no', '=', item['texture_type_code'])]).id,
- 'model_surface_process_id': self.env['sf.production.process'].search(
- [('process_encode', '=', item['surface_process_code'])]).id,
- 'model_process_parameters_id': self.env['sf.processing.technology'].search(
- [('process_encode', '=', item['process_parameters_code'])]).id,
+ 'model_surface_process_ids': self.get_production_process_id(item['surface_process_code']),
+ 'model_process_parameters_ids': self.get_process_parameters_id(item['process_parameters_code']),
'model_remark': item['remark'],
'default_code': '%s-%s' % (order_number, i),
# 'barcode': item['barcode'],
@@ -121,6 +121,20 @@ class ResProductTemplate(models.Model):
# product_id.product_tmpl_id.active = False
return copy_product_id
+ def get_production_process_id(self, surface_process_code):
+ production_process_ids = []
+ for item in surface_process_code:
+ production_process = self.env['sf.production.process'].search([('process_encode', '=', item)])
+ production_process_ids.append(production_process.id)
+ return [(6, 0, production_process_ids)]
+
+ def get_process_parameters_id(self, process_parameters_code):
+ process_parameters_ids = []
+ for item in process_parameters_code:
+ process_parameters = self.env['sf.production.process.parameter'].search([('code', '=', item)])
+ process_parameters_ids.append(process_parameters.id)
+ return [(6, 0, process_parameters_ids)]
+
def attachment_create(self, name, data):
attachment = self.env['ir.attachment'].create({
'datas': base64.b64decode(data),
@@ -226,7 +240,7 @@ class ResProductTemplate(models.Model):
item.model_file = self.transition_glb_file(report_path, model_code)
# 将attach的datas内容转为glb文件
- def transition_glb_file(self,report_path, code):
+ def transition_glb_file(self, report_path, code):
shapes = read_step_file(report_path)
output_file = os.path.join('/tmp', str(code) + '.stl')
write_stl_file(shapes, output_file, 'binary', 0.03, 0.5)
diff --git a/sf_dlm/views/product_template_view.xml b/sf_dlm/views/product_template_view.xml
index 176a4669..aeb4ee63 100644
--- a/sf_dlm/views/product_template_view.xml
+++ b/sf_dlm/views/product_template_view.xml
@@ -25,8 +25,10 @@
-
-
+
+
@@ -67,9 +69,8 @@
-
-
+
+
diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py
index 03095ad4..abd7fad8 100644
--- a/sf_manufacturing/models/stock.py
+++ b/sf_manufacturing/models/stock.py
@@ -3,8 +3,9 @@ from collections import defaultdict, namedtuple
from odoo.addons.stock.models.stock_rule import ProcurementException
from re import findall as regex_findall
from re import split as regex_split
-from odoo import SUPERUSER_ID, _, api, models
+from odoo import SUPERUSER_ID, _, api, models
from odoo.tools import float_compare
+from odoo.exceptions import UserError
class StockRule(models.Model):
@@ -226,3 +227,87 @@ class ProductionLot(models.Model):
return self.env['stock.lot'].generate_lot_names1(product.name, last_serial.name, 2)[
1]
return "%s-%03d" % (product.name, 1)
+
+
+# class ResPurchaseOrder(models.Model):
+# _inherit = 'purchase.order'
+#
+# # def button_approve(self, force=False):
+# # result = super().button_approve(force=force)
+# # self._create_picking_RES()
+# # return result
+#
+# # @api.depends('order_line.move_ids')
+# # def _compute_subcontracting_resupply_picking_count(self):
+# # for purchase in self:
+# # purchase.subcontracting_resupply_picking_count = len(purchase._get_subcontracting_resupplies_new())
+# #
+# # def _get_subcontracting_resupplies_new(self):
+# # moves_subcontracted = self.order_line.move_ids.filtered(lambda m: m.is_subcontract)
+# # # subcontracted_productions = moves_subcontracted.move_orig_ids.production_id
+# # return moves_subcontracted.picking_id
+#
+# def _prepare_picking_RES(self):
+# if not self.group_id:
+# self.group_id = self.group_id.create({
+# 'name': self.name,
+# 'partner_id': self.partner_id.id
+# })
+# if not self.partner_id.property_stock_supplier.id:
+# raise UserError(_("You must set a Vendor Location for this partner %s", self.partner_id.name))
+# picking_type_id_res = self.env['stock.picking.type'].search(
+# [('sequence_code', '=', 'RES'), ('barcode', '=', 'WH-RESUPPLY')])
+# return {
+# 'picking_type_id': picking_type_id_res.id if picking_type_id_res else self.picking_type_id.id,
+# 'partner_id': self.partner_id.id,
+# 'user_id': False,
+# 'date': self.date_order,
+# 'origin': self.name,
+# 'location_dest_id': self._get_destination_location(),
+# 'location_id': self.partner_id.property_stock_supplier.id,
+# 'company_id': self.company_id.id,
+# }
+#
+# def _create_picking(self):
+# StockPicking = self.env['stock.picking']
+# for order in self.filtered(lambda po: po.state in ('purchase', 'done')):
+# if any(product.type in ['product', 'consu'] for product in order.order_line.product_id):
+# order = order.with_company(order.company_id)
+# pickings = order.picking_ids.filtered(lambda x: x.state not in ('done', 'cancel'))
+# if not pickings:
+# if order.order_line.product_id.categ_type == '胚料':
+# res = order._prepare_picking_RES()
+# else:
+# res = order._prepare_picking()
+# picking = StockPicking.with_user(SUPERUSER_ID).create(res)
+# pickings = picking
+# else:
+# picking = pickings[0]
+# moves = order.order_line._create_stock_moves(picking)
+# moves = moves.filtered(lambda x: x.state not in ('done', 'cancel'))._action_confirm()
+# seq = 0
+# for move in sorted(moves, key=lambda move: move.date):
+# seq += 5
+# move.sequence = seq
+# moves._action_assign()
+# # Get following pickings (created by push rules) to confirm them as well.
+# forward_pickings = self.env['stock.picking']._get_impacted_pickings(moves)
+# (pickings | forward_pickings).action_confirm()
+# picking.message_post_with_view('mail.message_origin_link',
+# values={'self': picking, 'origin': order},
+# subtype_id=self.env.ref('mail.mt_note').id)
+# return True
+#
+#
+# class ResPurchaseOrderLine(models.Model):
+# _inherit = 'purchase.order.line'
+#
+# def _create_stock_moves(self, picking):
+# values = []
+# for line in self.filtered(lambda l: not l.display_type):
+# for val in line._prepare_stock_moves(picking):
+# val['production_id'] = 10
+# values.append(val)
+# line.move_dest_ids.created_purchase_line_id = False
+#
+# return self.env['stock.move'].create(values)