Commit c3a273c8 董杰

待确认询价单按bom分开,报价单权限修改

1 个父辈 018e0b7f
......@@ -40,7 +40,8 @@ class AccTools(models.Model):
toaddrs = toaddrs
# subject = "最新消息"
subject = subjects
password = "Acc@0113"
# password = "Acc@0113"
password = "Acc@011"
# msg = "测试"
msg = message
mail_msg = MIMEMultipart()
......
......@@ -35,6 +35,7 @@ class BeforePurchase(models.Model):
purchase_order_ids = fields.Many2many('purchase.order','before_purchase_rel','before_id','purchase_id',string='关联采购单',readonly=True)
purchase_company = fields.Many2one('acc.company',string='采购公司',required=True)
delivery_address = fields.Many2one('delivery.address',string='交货地址')
mrp_bom_id = fields.Many2one('mrp.bom',string='关联BOM',readonly=True)
state = fields.Selection([('draft', '待确认'), ('done', '已确认'),('cancel', '已取消')], '状态', default='draft',track_visibility='onchange')
order_line = fields.One2many('before.purchase.line', 'order_id', 'Order Lines')
recreate_line = fields.One2many('recreate.purchase.line', 'before_id', 'recreate Lines')
......
......@@ -34,6 +34,7 @@
<field name="gen_datetime" readonly="1"/>
<field name="charge_person"/>
<field name="purchase_company"/>
<field name="mrp_bom_id"/>
</group>
</group>
<notebook colspan="4">
......@@ -101,6 +102,7 @@
<field name="name"/>
<field name="sale_order_id"/>
<field name="demand_purchase_id"/>
<field name="mrp_bom_id"/>
<field name="charge_person"/>
<field name="gen_datetime"/>
<field name="is_excipients"/>
......@@ -138,6 +140,7 @@
<field name="sale_order_id"/>
<field name="demand_purchase_id"/>
<field name="charge_person"/>
<field name="mrp_bom_id"/>
</search>
</field>
</record>
......
......@@ -266,18 +266,26 @@ class AccSaleOrder(models.Model):
bom_line = self.env['sale.bom.line'].create(vals)
return True
# @api.multi
# def update_bom_record(self,mrp_eco,sale_bom_line):
# mrp_bom = self.env['mrp.bom'].search([('product_tmpl_id', '=', mrp_eco.product_tmpl_id),('active', '=', True)])
# sale_bom_line.write({'mrp_bom_id':mrp_bom.id})
@api.multi
def check_eco_products(self):
res_line = []
mrp_ecos = []
# add_ids = []
remove_ids = []
# res_line = []
# mrp_ecos = []
# remove_ids = []
if self.bom_line:
for bom in self.bom_line:
res_line = []
# mrp_ecos = []
remove_ids = []
mrp_eco = self.env['mrp.eco'].search([('bom_id', '=', bom.mrp_bom_id.id),('state', '=', 'done')])
if mrp_eco:
mrp_eco.write({'is_use':'on'})
mrp_ecos.append(mrp_eco.id)
# mrp_ecos.append(mrp_eco.id)
for change in mrp_eco.bom_change_ids:
if change.change_type == 'add':
# add_ids.append(change.product_id.id)
......@@ -325,23 +333,25 @@ class AccSaleOrder(models.Model):
remove_ids.append(remove_vals)
# if not res_line[0]:
# raise ValidationError('没有需要增补的物料!!!')
self.add_new_bp(res_line,mrp_eco,remove_ids)
mrp_bom = self.env['mrp.bom'].search([('product_tmpl_id', '=', mrp_eco.product_tmpl_id.id),('active', '=', True)])
bom.write({'mrp_bom_id':mrp_bom.id})
if not self.bom_line:
raise ValidationError('因之前版本(6.28号之前的单据)未做bom记录,无法进行自动增补!!!')
# products["add"] = res_line
# products["remove"] = remove_ids
return res_line,remove_ids,mrp_ecos
# return res_line,remove_ids,mrp_ecos
return True
@api.multi
def add_new_bom(self):
before_purchase = self.env['before.purchase'].search([('id', '=', self.before_purchase_id.id)])
res_line,remove_ids,mrp_ecos = self.check_eco_products()
def add_new_bp(self,res_line,mrp_eco,remove_ids):
if remove_ids:
remove_products = []
for p in remove_ids:
po_name = self.get_poname(p)
p_str = '物料名称:' + p['product_id'] + ' ' + '型号:' + p['product_model'] + ' ' + '品牌:' + p['brand'] + ' ' + '编码:' + p['acc_code'] + ' ' + '移除数量:' + str(p['qty']) + '采购单号:' + po_name + '<br>'
p_str = '物料名称:' + p['product_id'] + ' ' + '型号:' + p['product_model'] + ' ' + '品牌:' + p['brand'] + ' ' + '编码:' + p['acc_code'] + ' ' + '移除数量:' + str(p['qty']) + '采购单号:' + po_name + '变更单号' + mrp_eco.name +'<br>'
remove_products.append(p_str)
toaddrs = ['luna.zhang@neotel-technology.com','xue.zhang@neotel.tech','fiona.wu@neotel-technology.com','tina.dong@neotel.tech']
toaddrs.append(self.purchase_charge_person.login)
......@@ -351,45 +361,102 @@ class AccSaleOrder(models.Model):
self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
# self.check_res(res_line)
if res_line:
if before_purchase and before_purchase.state == 'draft':
raise ValidationError('该销售订单所关联待确认询价单尚未完成,请完成后再进行物料清单变动操作')
if before_purchase and before_purchase.state == 'done':
new_res_line = []
for line in res_line:
new_line_vals = {
'product_id':line['product_id'],
'product_model':line['product_model'],
'qty':line['qty'],
'acc_purchase_price':line['acc_purchase_price'],
'brand':line['brand'],
'acc_code':line['acc_code'],
'partner_code':line['partner_code'],
}
new_res_line.append((0,0,new_line_vals))
vals = {
'sale_order_id':self.id,
'purchase_company':self.sale_company.id,
'charge_person':self.purchase_charge_person.id,
'delivery_address':self.delivery_address.id,
'order_line':new_res_line
# if before_purchase and before_purchase.state == 'draft':
# raise ValidationError('该销售订单所关联待确认询价单尚未完成,请完成后再进行物料清单变动操作')
# if before_purchase and before_purchase.state == 'done':
new_res_line = []
for line in res_line:
new_line_vals = {
'product_id':line['product_id'],
'product_model':line['product_model'],
'qty':line['qty'],
'acc_purchase_price':line['acc_purchase_price'],
'brand':line['brand'],
'acc_code':line['acc_code'],
'partner_code':line['partner_code'],
}
bp_obj = self.env['before.purchase'].create(vals)
toaddrs = ['luna.zhang@neotel-technology.com','xue.zhang@neotel.tech']
# toaddrs.append(bp_obj.charge_person.login)
subjects = "待确认询价单{}".format(bp_obj.name)
message = "待确认询价单{}已生成,请及时处理".format(bp_obj.name)
self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
if mrp_ecos:
for ecoid in mrp_ecos:
eco_obj = self.env['mrp.eco'].browse(ecoid)
eco_obj.write({'before_purchase_id':bp_obj.id})
# for remove_id in remove_ids:
# 删除的东西怎么处理?
self.change_bom_record()
new_res_line.append((0,0,new_line_vals))
mrp_bom = self.env['mrp.bom'].search([('product_tmpl_id', '=', mrp_eco.product_tmpl_id.id),('active', '=', True)])
vals = {
'sale_order_id':self.id,
'mrp_bom_id':mrp_bom.id,
'purchase_company':self.sale_company.id,
'charge_person':self.purchase_charge_person.id,
'delivery_address':self.delivery_address.id,
'order_line':new_res_line
}
bp_obj = self.env['before.purchase'].create(vals)
toaddrs = ['luna.zhang@neotel-technology.com','xue.zhang@neotel.tech']
# toaddrs.append(bp_obj.charge_person.login)
subjects = "待确认询价单{}".format(bp_obj.name)
message = "待确认询价单{}已生成,请及时处理".format(bp_obj.name)
self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
# if mrp_ecos:
# for ecoid in mrp_ecos:
# eco_obj = self.env['mrp.eco'].browse(ecoid)
# eco_obj.write({'before_purchase_id':bp_obj.id})
if mrp_eco:
eco_obj = self.env['mrp.eco'].browse(mrp_eco.id)
eco_obj.write({'before_purchase_id':bp_obj.id})
# self.update_bom_record(mrp_eco,bom)
# self.change_bom_record()
# self.env.user.notify_success(message='变更成功')
@api.multi
def add_new_bom(self):
before_purchase = self.env['before.purchase'].search([('id', '=', self.before_purchase_id.id)])
self.check_eco_products()
# if remove_ids:
# remove_products = []
# for p in remove_ids:
# po_name = self.get_poname(p)
# p_str = '物料名称:' + p['product_id'] + ' ' + '型号:' + p['product_model'] + ' ' + '品牌:' + p['brand'] + ' ' + '编码:' + p['acc_code'] + ' ' + '移除数量:' + str(p['qty']) + '采购单号:' + po_name + '<br>'
# remove_products.append(p_str)
# toaddrs = ['luna.zhang@neotel-technology.com','xue.zhang@neotel.tech','fiona.wu@neotel-technology.com','tina.dong@neotel.tech']
# toaddrs.append(self.purchase_charge_person.login)
# # toaddrs = ['jie.dong@acctronics.cn']
# subjects = "源单据{}所申请物料清单有变动,请及时处理".format(self.name)
# message = "源单据{}所申请物料清单,有以下物料从物料清单中移除<br><br>{}".format(self.name,remove_products)
# self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
# if res_line:
# if before_purchase and before_purchase.state == 'draft':
# raise ValidationError('该销售订单所关联待确认询价单尚未完成,请完成后再进行物料清单变动操作')
# if before_purchase and before_purchase.state == 'done':
# new_res_line = []
# for line in res_line:
# new_line_vals = {
# 'product_id':line['product_id'],
# 'product_model':line['product_model'],
# 'qty':line['qty'],
# 'acc_purchase_price':line['acc_purchase_price'],
# 'brand':line['brand'],
# 'acc_code':line['acc_code'],
# 'partner_code':line['partner_code'],
# }
# new_res_line.append((0,0,new_line_vals))
# vals = {
# 'sale_order_id':self.id,
# 'purchase_company':self.sale_company.id,
# 'charge_person':self.purchase_charge_person.id,
# 'delivery_address':self.delivery_address.id,
# 'order_line':new_res_line
# }
# bp_obj = self.env['before.purchase'].create(vals)
# toaddrs = ['luna.zhang@neotel-technology.com','xue.zhang@neotel.tech']
# # toaddrs.append(bp_obj.charge_person.login)
# subjects = "待确认询价单{}".format(bp_obj.name)
# message = "待确认询价单{}已生成,请及时处理".format(bp_obj.name)
# self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
# if mrp_ecos:
# for ecoid in mrp_ecos:
# eco_obj = self.env['mrp.eco'].browse(ecoid)
# eco_obj.write({'before_purchase_id':bp_obj.id})
# self.change_bom_record()
now_time = fields.Datetime.now()
self.write({'bomupdate_time':now_time,'wait_change':'yes'})
self.env.user.notify_success(message='变更成功')
# self.write({'before_purchase_id':bp_obj.id})
#
#
@api.multi
def check_res(self,res_line):
line = res_line
......@@ -410,32 +477,6 @@ class AccSaleOrder(models.Model):
taget_poname = '无'
return taget_poname
# @api.multi
# def _fresh_now_qty(self):
# excipients = self.env['excipients.product'].search([('is_active', '=', True)])
# for line in excipients:
# p_id = line.product_id.id
# location_id = line.location_id.id
# cr = self.env.cr
# # location_ids = []
# now_qty_sql = """ SELECT
# SUM (quantity-reserved_quantity) AS theory_qty
# FROM
# stock_quant
# WHERE
# location_id = %s
# AND product_id = %s """%(location_id, p_id)
# # now_qty = cr.execute(now_qty_sql, (location_id,p_id))
# cr.execute(now_qty_sql)
# result = request.cr.dictfetchall()
# if result[0]['theory_qty']:
# now_qty = result[0]['theory_qty']
# else:
# now_qty = 0.00
# onway_qty = line.onway_qty()
# line.write({'now_qty':now_qty,'purchase_qty':onway_qty})
# return True
......@@ -476,8 +517,10 @@ class AccSaleOrder(models.Model):
@api.multi
def create_before_po(self):
res_line = []
# res_line = []
regular_line = []
for line in self.order_line:
res_line = []
mrp_bom = self.check_bom(line)
if mrp_bom:
qty = line.product_uom_qty
......@@ -494,24 +537,39 @@ class AccSaleOrder(models.Model):
'acc_code':line.product_id.product_tmpl_id.acc_code,
'partner_code':line.product_id.product_tmpl_id.partner_code
}
res_line.append((0,0,line_vals))
vals = {
'sale_order_id':self.id,
'charge_person':self.purchase_charge_person.id,
'delivery_address':self.delivery_address.id,
'purchase_company':self.sale_company.id,
'order_line':res_line
}
bp_obj = self.env['before.purchase'].create(vals)
self.write({'before_purchase_id':bp_obj.id})
# toaddrs = ['jie.dong@acctronics.cn','cissy.shen@acctronics.cn','yuanyuan.lu@acctronics.cn']
# toaddrs = []
# toaddrs.append(bp_obj.charge_person.login)
toaddrs = []
toaddrs.append(bp_obj.charge_person.login)
subjects = "待确认询价单{}".format(bp_obj.name)
message = "待确认询价单{}已生成,请及时处理".format(bp_obj.name)
self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
regular_line.append((0,0,line_vals))
if res_line:
vals = {
'sale_order_id':self.id,
'mrp_bom_id':mrp_bom.id,
'charge_person':self.purchase_charge_person.id,
'delivery_address':self.delivery_address.id,
'purchase_company':self.sale_company.id,
'order_line':res_line
}
bp_obj = self.env['before.purchase'].create(vals)
self.write({'before_purchase_id':bp_obj.id})
toaddrs = []
toaddrs.append(bp_obj.charge_person.login)
subjects = "待确认询价单{}".format(bp_obj.name)
message = "待确认询价单{}已生成,请及时处理".format(bp_obj.name)
self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
if regular_line:
vals = {
'sale_order_id':self.id,
# 'mrp_bom_id':mrp_bom.id,
'charge_person':self.purchase_charge_person.id,
'delivery_address':self.delivery_address.id,
'purchase_company':self.sale_company.id,
'order_line':regular_line
}
bp_obj = self.env['before.purchase'].create(vals)
self.write({'before_purchase_id':bp_obj.id})
toaddrs = []
toaddrs.append(bp_obj.charge_person.login)
subjects = "待确认询价单{}".format(bp_obj.name)
message = "待确认询价单{}已生成,请及时处理".format(bp_obj.name)
self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
return True
# def log_field(self):
......
......@@ -365,7 +365,7 @@
</tree>
</field>
<group class="oe_subtotal_footer oe_right" groups="purchase.group_purchase_user">
<group class="oe_subtotal_footer oe_right">
<field name="amount_untaxed" widget="monetary" options="{'currency_field': 'currency_id'}"/>
<field name="amount_tax" widget="monetary" options="{'currency_field': 'currency_id'}"/>
<field name="discount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!