From 768f8f8d76463e7eabb01cf28cea00732bca227d Mon Sep 17 00:00:00 2001
From: zhou <123@>
Date: Fri, 8 Aug 2025 17:36:43 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../models/purchase_fixed_assets.py | 25 ++++++++++++++--
yuthon_purchase/models/purchase_low_orders.py | 30 ++++++++++++++++++-
.../models/purchase_service_orders.py | 27 ++++++++++++++++-
.../views/purchase_fixed_assets_views.xml | 5 +++-
.../views/purchase_low_orders_views.xml | 5 +++-
.../views/purchase_service_orders_views.xml | 5 +++-
6 files changed, 90 insertions(+), 7 deletions(-)
diff --git a/yuthon_purchase/models/purchase_fixed_assets.py b/yuthon_purchase/models/purchase_fixed_assets.py
index 5f09240fa..776f55b3c 100644
--- a/yuthon_purchase/models/purchase_fixed_assets.py
+++ b/yuthon_purchase/models/purchase_fixed_assets.py
@@ -32,6 +32,27 @@ class PurchaseFixedAssets(models.Model):
name_title = fields.Char(default=_get_default_name_title, string="标题")
+ def end_approval(self):
+ for rec in self:
+ purchase_order = self.env['purchase.order'].create({
+ 'partner_id': rec.partner_id.id,
+ 'date_order': rec.date_order if rec.date_order else None,
+ 'date_planned': rec.date_planned if rec.date_planned else None,
+ 'company_id': rec.company_id.id,
+ 'user_id': rec.user_id.id,
+ })
+ order_lines = []
+ for fixed_line in rec.fixed_ids:
+ if not fixed_line.product_id:
+ continue
+ order_lines.append((0, 0, {
+ 'order_id': purchase_order.id,
+ 'product_id': fixed_line.product_id.id,
+ 'product_qty': fixed_line.number,
+ }))
+ if order_lines:
+ purchase_order.order_line = order_lines
+
class PurchaseOrderPayLine(models.Model):
_name = "purchase.order.pay.line"
@@ -55,5 +76,5 @@ class PurchaseFixedLine(models.Model):
brand = fields.Char(string="品牌")
specs = fields.Char(string="规格")
number = fields.Integer(string="数量")
- unit_id = fields.Many2one('uom.uom', string="单位")
- price = fields.Float(related='product_id.standard_price', string="单价")
\ No newline at end of file
+ unit_id = fields.Many2one(related='product_id.uom_id', string="单位")
+ price = fields.Float(related='product_id.standard_price', string="单价", stroe=True)
\ No newline at end of file
diff --git a/yuthon_purchase/models/purchase_low_orders.py b/yuthon_purchase/models/purchase_low_orders.py
index 0bb5762c0..fa3ae651b 100644
--- a/yuthon_purchase/models/purchase_low_orders.py
+++ b/yuthon_purchase/models/purchase_low_orders.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models
+from datetime import datetime
class PurchaseLowOrders(models.Model):
@@ -30,6 +31,33 @@ class PurchaseLowOrders(models.Model):
name_title = fields.Char(default=_get_default_name_title)
+ def end_approval(self):
+ for rec in self:
+ date_with_time = datetime.combine(
+ fields.Date.from_string(rec.date_application),
+ datetime.min.time().replace(hour=0)
+ )
+ purchase_order = self.env['purchase.order'].create({
+ 'partner_id': rec.partyB.id,
+ 'date_order': date_with_time,
+ 'company_id': rec.company_id.id,
+ 'user_id': rec.user_id.id,
+ })
+ order_lines = []
+ for low_line in rec.low_line_ids:
+ if not low_line.product_id:
+ continue
+ order_lines.append((0, 0, {
+ 'order_id': purchase_order.id,
+ 'product_id': low_line.product_id.id,
+ 'product_qty': low_line.number,
+ 'product_uom': low_line.unit_id.id,
+ 'price_unit': low_line.price,
+ }))
+ if order_lines:
+ purchase_order.order_line = order_lines
+
+
class PurchaseLowLine(models.Model):
_name = 'purchase.low.line'
@@ -40,7 +68,7 @@ class PurchaseLowLine(models.Model):
brand = fields.Char(string="品牌")
specs = fields.Char(string="规格")
number = fields.Integer(string="数量")
- unit_id = fields.Many2one('uom.uom', string="单位")
+ unit_id = fields.Many2one(related='product_id.uom_id', string="单位")
price = fields.Float(related='product_id.standard_price', string="单价")
diff --git a/yuthon_purchase/models/purchase_service_orders.py b/yuthon_purchase/models/purchase_service_orders.py
index 73fd9a6e8..f3cbd2444 100644
--- a/yuthon_purchase/models/purchase_service_orders.py
+++ b/yuthon_purchase/models/purchase_service_orders.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models
+from datetime import datetime
class PurchaseServiceOrders(models.Model):
@@ -38,6 +39,30 @@ class PurchaseServiceOrders(models.Model):
name_title = fields.Char(default=_get_default_name_title)
+ def end_approval(self):
+ for rec in self:
+ date_with_time = datetime.combine(
+ fields.Date.from_string(rec.date_application),
+ datetime.min.time().replace(hour=0)
+ )
+ purchase_order = self.env['purchase.order'].create({
+ 'partner_id': rec.partyB.id,
+ 'date_order': date_with_time,
+ 'company_id': rec.company_id.id,
+ 'user_id': rec.user_id.id,
+ })
+ order_lines = []
+ for service_line in rec.service_line_ids:
+ if not service_line.product_id:
+ continue
+ order_lines.append((0, 0, {
+ 'order_id': purchase_order.id,
+ 'product_id': service_line.product_id.id,
+ }))
+ if order_lines:
+ purchase_order.order_line = order_lines
+
+
class PurchaseServiceLine(models.Model):
_name = 'purchase.service.line'
_description = '服务采购单明细'
@@ -46,7 +71,7 @@ class PurchaseServiceLine(models.Model):
product_id = fields.Many2one('product.product', string="服务项目")
frequency = fields.Char(string='频次')
fee = fields.Float(string="费用")
- unit_id = fields.Many2one('uom.uom', string="单位")
+ unit_id = fields.Many2one(related='product_id.uom_id', string="单位")
partyB = fields.Many2one('res.partner', string="供应商")
price = fields.Float(related='product_id.standard_price', string="单价")
diff --git a/yuthon_purchase/views/purchase_fixed_assets_views.xml b/yuthon_purchase/views/purchase_fixed_assets_views.xml
index ecb9bee82..3285b384b 100644
--- a/yuthon_purchase/views/purchase_fixed_assets_views.xml
+++ b/yuthon_purchase/views/purchase_fixed_assets_views.xml
@@ -25,6 +25,9 @@
invisible="urgency_level != 'urgent'"/>
+
@@ -50,7 +53,7 @@
-
+
diff --git a/yuthon_purchase/views/purchase_low_orders_views.xml b/yuthon_purchase/views/purchase_low_orders_views.xml
index 815c39e31..c7e8acd7d 100644
--- a/yuthon_purchase/views/purchase_low_orders_views.xml
+++ b/yuthon_purchase/views/purchase_low_orders_views.xml
@@ -26,6 +26,9 @@
invisible="urgency_level != 'urgent'"/>
+
@@ -46,7 +49,7 @@
-
+
diff --git a/yuthon_purchase/views/purchase_service_orders_views.xml b/yuthon_purchase/views/purchase_service_orders_views.xml
index 69cb49434..77210508d 100644
--- a/yuthon_purchase/views/purchase_service_orders_views.xml
+++ b/yuthon_purchase/views/purchase_service_orders_views.xml
@@ -26,6 +26,9 @@
invisible="urgency_level != 'urgent'"/>
+
@@ -47,7 +50,7 @@
-
+