From 3253b26818b6dcae289081873c1336b94e14bdc1 Mon Sep 17 00:00:00 2001
From: yuxianghui <3437689193@qq.com>
Date: Fri, 13 Dec 2024 13:38:22 +0800
Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=8A=A5=E4=BB=B7=E3=80=81=E9=94=80?=
=?UTF-8?q?=E5=94=AE=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8=E8=A7=86=E5=9B=BE?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B9=B3=E5=8F=B0=E8=AE=A2=E5=8D=95=E5=8F=B7?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5=E3=80=822=E3=80=81=E9=94=80=E5=94=AE?=
=?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85=E7=9A=84=E9=87=87=E8=B4=AD?=
=?UTF-8?q?=E9=93=BE=E6=8E=A5=E6=8C=89=E9=87=87=E8=B4=AD=E7=B1=BB=E5=9E=8B?=
=?UTF-8?q?=E6=8B=86=E5=88=86=E4=B8=BA=E5=A7=94=E5=A4=96=E5=8A=A0=E5=B7=A5?=
=?UTF-8?q?=E5=92=8C=E9=87=87=E8=B4=AD=E7=9A=84=E8=B7=B3=E8=BD=AC=E9=93=BE?=
=?UTF-8?q?=E6=8E=A5=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/controllers/main.py | 2 +-
sf_sale/models/sale_order.py | 69 +++++++++++++++++++++++++++-
sf_sale/views/sale_order_view.xml | 25 ++++++++--
3 files changed, 89 insertions(+), 7 deletions(-)
diff --git a/sf_manufacturing/controllers/main.py b/sf_manufacturing/controllers/main.py
index e45265d3..839b87fe 100644
--- a/sf_manufacturing/controllers/main.py
+++ b/sf_manufacturing/controllers/main.py
@@ -27,7 +27,7 @@ class JikimoSaleRoutePicking(Sf_Bf_Connect):
bfm_process_order_list = json.loads(kw['bfm_process_order_list'])
order_id = request.env['sale.order'].with_user(request.env.ref("base.user_admin")).sale_order_create(
company_id, kw['delivery_name'], kw['delivery_telephone'], kw['delivery_address'],
- kw['delivery_end_date'], kw['payments_way'], kw['pay_way'], state='draft')
+ kw['delivery_end_date'], kw['payments_way'], kw['pay_way'], kw['order_number'], state='draft')
i = 1
# 给sale_order的default_code字段赋值
# aa = request.env['sale.order'].sudo().search([('name', '=', order_id.name)])
diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py
index ca851fc6..c9cf8af8 100644
--- a/sf_sale/models/sale_order.py
+++ b/sf_sale/models/sale_order.py
@@ -58,9 +58,11 @@ class ReSaleOrder(models.Model):
delivery_warning = fields.Selection([('normal', '正常'), ('warning', '告警'), ('overdue', '逾期')], string='时效',
tracking=True)
+ order_code = fields.Char('平台订单号', readonly=True)
+
# 业务平台分配工厂后在智能工厂先创建销售订单
def sale_order_create(self, company_id, delivery_name, delivery_telephone, delivery_address,
- deadline_of_delivery, payments_way, pay_way, state='sale'):
+ deadline_of_delivery, payments_way, pay_way, order_number, state='sale'):
now_time = datetime.datetime.now()
partner = self.get_customer()
data = {
@@ -76,6 +78,7 @@ class ReSaleOrder(models.Model):
'address_of_delivery': delivery_address,
'payments_way': payments_way,
'pay_way': pay_way,
+ 'order_code': order_number,
}
if deadline_of_delivery:
# deadline_of_delivery字段存在为false字符串情况
@@ -158,6 +161,68 @@ class ReSaleOrder(models.Model):
if not line.tax_id:
raise UserError('请对【订单行】中的【税】进行选择')
+ consignment_purchase_order_count = fields.Integer(
+ "Number of consignment Purchase Order Generated",
+ compute='_compute_purchase_order_count')
+
+ @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 ['consignment']))
+ order.consignment_purchase_order_count = len(order._get_purchase_orders().filtered(
+ lambda po: po.purchase_type in ['consignment']))
+
+ def action_view_purchase_orders(self):
+ """
+ 采购
+ """
+ self.ensure_one()
+ purchase_order_ids = self._get_purchase_orders().filtered(
+ lambda po: po.purchase_type not in ['consignment']).ids
+ action = {
+ 'res_model': 'purchase.order',
+ 'type': 'ir.actions.act_window',
+ }
+ if len(purchase_order_ids) == 1:
+ action.update({
+ 'view_mode': 'form',
+ 'res_id': purchase_order_ids[0],
+ })
+ else:
+ action.update({
+ 'name': _("从 %s生成采购订单", self.name),
+ 'domain': [('id', 'in', purchase_order_ids)],
+ 'view_mode': 'tree,form',
+ })
+ return action
+
+ def action_view_consignment_purchase_orders(self):
+ """
+ 委外加工
+ """
+ self.ensure_one()
+ consignment_purchase_order_ids = self._get_purchase_orders().filtered(
+ lambda po: po.purchase_type in ['consignment']).ids
+ action = {
+ 'res_model': 'purchase.order',
+ 'type': 'ir.actions.act_window',
+ }
+ if len(consignment_purchase_order_ids) == 1:
+ action.update({
+ 'view_mode': 'form',
+ 'res_id': consignment_purchase_order_ids[0],
+ })
+ else:
+ action.update({
+ 'name': _("从 %s生成委外加工订单", self.name),
+ 'domain': [('id', 'in', consignment_purchase_order_ids)],
+ 'view_mode': 'tree,form',
+ })
+ return action
+
+
+
class ResaleOrderLine(models.Model):
_inherit = 'sale.order.line'
@@ -255,7 +320,7 @@ class RePurchaseOrder(models.Model):
else:
server_template = self.env['product.template'].search(
[('server_product_process_parameters_id', '=', pp.surface_technics_parameters_id.id),
- ('detailed_type', '=', 'service')])
+ ('detailed_type', '=', 'service')])
server_product_process.append((0, 0, {
'product_id': server_template.product_variant_id.id,
'product_qty': 1,
diff --git a/sf_sale/views/sale_order_view.xml b/sf_sale/views/sale_order_view.xml
index 673d7fa3..641e4278 100644
--- a/sf_sale/views/sale_order_view.xml
+++ b/sf_sale/views/sale_order_view.xml
@@ -170,19 +170,34 @@
- 下单时间
+ 下单日期
+
+ sale.order.inherited.form.purchase
+ sale.order
+
+
+
+
+
+
+
+
sale.management.order.form.quote.inherit.sf
sale.order
-
- 下单日期
-
@@ -224,6 +239,7 @@
hide
+