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 @@ - +