+ attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), '&', ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}"/>
+ attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), '&', ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}">
+ attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), '&', ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}"/>
+ attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), '&', ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}">
+ attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), '&', ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}"/>
+ attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), '&', ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}">
diff --git a/sf_sale/__manifest__.py b/sf_sale/__manifest__.py
index c12f94fd..94c97825 100644
--- a/sf_sale/__manifest__.py
+++ b/sf_sale/__manifest__.py
@@ -17,6 +17,7 @@
'wizard/sale_order_wizard_views.xml',
'wizard/purchase_order_wizard_views.xml',
'data/cron_data.xml',
+ 'data/documents_data.xml',
'views/sale_team.xml',
'views/sale_order_view.xml',
'views/res_partner_view.xml',
diff --git a/sf_sale/data/documents_data.xml b/sf_sale/data/documents_data.xml
new file mode 100644
index 00000000..d8182c75
--- /dev/null
+++ b/sf_sale/data/documents_data.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+ 销售合同
+ 存放销售合同相关文件
+ 8
+
+
+ 下单凭证
+
+
+
+
\ No newline at end of file
diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py
index dea7a57a..7fce28ee 100644
--- a/sf_sale/models/sale_order.py
+++ b/sf_sale/models/sale_order.py
@@ -63,6 +63,11 @@ class ReSaleOrder(models.Model):
model_display_version = fields.Char('模型展示版本', default="v1")
+ contract_code = fields.Char('合同编号')
+ contract_document_id = fields.Many2one('documents.document', string='合同文件')
+ contract_file = fields.Binary(related='contract_document_id.datas', string='合同文件内容')
+ contract_file_name = fields.Char(related='contract_document_id.attachment_id.name', string='文件名')
+
# 业务平台分配工厂后在智能工厂先创建销售订单
def sale_order_create(self, company_id, delivery_name, delivery_telephone, delivery_address,
deadline_of_delivery, payments_way, pay_way, order_number, state='sale',
@@ -194,18 +199,15 @@ class ReSaleOrder(models.Model):
@api.depends('order_line.purchase_line_ids.order_id')
def _compute_purchase_order_count(self):
for order in self:
- order.purchase_order_count = len(order._get_purchase_orders().filtered(
- lambda po: po.purchase_type not in ['outsourcing']))
- order.consignment_purchase_order_count = len(order._get_purchase_orders().filtered(
- lambda po: po.purchase_type in ['outsourcing']))
+ order.purchase_order_count = len(order._get_sale_to_purchase('outsourcing'))
+ order.consignment_purchase_order_count = len(order._get_sale_to_purchase_1('outsourcing'))
def action_view_purchase_orders(self):
"""
采购
"""
self.ensure_one()
- purchase_order_ids = self._get_purchase_orders().filtered(
- lambda po: po.purchase_type not in ['outsourcing']).ids
+ purchase_order_ids = self._get_sale_to_purchase('outsourcing')
action = {
'res_model': 'purchase.order',
'type': 'ir.actions.act_window',
@@ -223,13 +225,20 @@ class ReSaleOrder(models.Model):
})
return action
+ def _get_sale_to_purchase(self, purchase_type):
+ """查询满足条件的采购订单"""
+ purchase_order_ids = self._get_purchase_orders().filtered(
+ lambda po: po.purchase_type not in ['outsourcing']).ids
+ order_ids = self.env['purchase.order'].sudo().search(
+ [('origin', '=', self.name), ('purchase_type', '!=', purchase_type)]).ids
+ return list(set(purchase_order_ids) | set(order_ids))
+
def action_view_consignment_purchase_orders(self):
"""
委外加工
"""
self.ensure_one()
- outsourcing_purchase_order_ids = self._get_purchase_orders().filtered(
- lambda po: po.purchase_type in ['outsourcing']).ids
+ outsourcing_purchase_order_ids = self._get_sale_to_purchase_1('outsourcing')
action = {
'res_model': 'purchase.order',
'type': 'ir.actions.act_window',
@@ -247,6 +256,14 @@ class ReSaleOrder(models.Model):
})
return action
+ def _get_sale_to_purchase_1(self, purchase_type):
+ """查询满足条件的采购订单"""
+ purchase_order_ids = self._get_purchase_orders().filtered(
+ lambda po: po.purchase_type == purchase_type).ids
+ order_ids = self.env['purchase.order'].sudo().search(
+ [('origin', '=', self.name), ('purchase_type', '=', purchase_type)]).ids
+ return list(set(purchase_order_ids) | set(order_ids))
+
class ResaleOrderLine(models.Model):
_inherit = 'sale.order.line'
@@ -358,12 +375,13 @@ class RePurchaseOrder(models.Model):
@api.depends('partner_id')
def _compute_user_id(self):
- if not self.user_id:
- if self.partner_id:
- self.user_id = self.partner_id.purchase_user_id.id
- # self.state = 'purchase'
- else:
- self.user_id = self.env.user.id
+ for item in self:
+ if not item.user_id:
+ if item.partner_id:
+ item.user_id = item.partner_id.purchase_user_id.id
+ # self.state = 'purchase'
+ else:
+ item.user_id = item.env.user.id
@api.constrains('order_line')
def check_order_line(self):
@@ -393,10 +411,11 @@ class RePurchaseOrder(models.Model):
# # route_ids
# result.append({
# "product_id": server_template.product_variant_id.id,
+ # 'related_product': production.product_id.id,
# "name": production.procurement_group_id.name,
# "date_required": fields.Datetime.now(),
# "product_uom_id":server_template.uom_id.id,
- # "product_qty": 1,
+ # "product_qty": production.product_qty,
# "request_id": False,
# "move_dest_ids": False,
# "orderpoint_id": False,
diff --git a/sf_sale/views/sale_order_view.xml b/sf_sale/views/sale_order_view.xml
index 0574f5d5..05460a61 100644
--- a/sf_sale/views/sale_order_view.xml
+++ b/sf_sale/views/sale_order_view.xml
@@ -198,7 +198,20 @@
-
+