โพสต์ โดย kittiu » พฤหัสฯ. 16 พ.ค. 2013 11:28 pm
น่าจะต้องแก้โค้ดนะครับ ที่ ไฟล์ addons/purchase_requisition/purchase_requisition.py (ผมดูที่ ver7 นะแต่โค้ดส่วนนี้น่าจะไม่เปลี่ยน)
โค้ด: เลือกทั้งหมด
def make_purchase_order(self, cr, uid, ids, partner_id, context=None):
"""
Create New RFQ for Supplier
"""
if context is None:
context = {}
assert partner_id, 'Supplier should be specified'
purchase_order = self.pool.get('purchase.order')
purchase_order_line = self.pool.get('purchase.order.line')
res_partner = self.pool.get('res.partner')
fiscal_position = self.pool.get('account.fiscal.position')
supplier = res_partner.browse(cr, uid, partner_id, context=context)
supplier_pricelist = supplier.property_product_pricelist_purchase or False
res = {}
for requisition in self.browse(cr, uid, ids, context=context):
if supplier.id in filter(lambda x: x, [rfq.state <> 'cancel' and rfq.partner_id.id or None for rfq in requisition.purchase_ids]):
raise osv.except_osv(_('Warning!'), _('You have already one %s purchase order for this partner, you must cancel this purchase order to create a new quotation.') % rfq.state)
location_id = requisition.warehouse_id.lot_input_id.id
purchase_id = purchase_order.create(cr, uid, {
'origin': requisition.name,
'partner_id': supplier.id,
'pricelist_id': supplier_pricelist.id,
'location_id': location_id,
'company_id': requisition.company_id.id,
'fiscal_position': supplier.property_account_position and supplier.property_account_position.id or False,
'requisition_id':requisition.id,
'notes':requisition.description,
'warehouse_id':requisition.warehouse_id.id ,
})
res[requisition.id] = purchase_id
for line in requisition.line_ids:
product = line.product_id
seller_price, qty, default_uom_po_id, date_planned = self._seller_details(cr, uid, line, supplier, context=context)
taxes_ids = product.supplier_taxes_id
taxes = fiscal_position.map_tax(cr, uid, supplier.property_account_position, taxes_ids)
purchase_order_line.create(cr, uid, {
'order_id': purchase_id,
'name': product.partner_ref,
'product_qty': qty,
'price_unit': line.req_price_unit # <-------------- เพิ่มที่นี่ โดยผมสมมุติว่าคุณใช้ฟิลด์ว่า req_price_unit
'product_id': product.id,
'product_uom': default_uom_po_id,
'price_unit': seller_price,
'date_planned': date_planned,
'taxes_id': [(6, 0, taxes)],
}, context=context)
return res
ไม่ได้ลองนะครับ แต่น่าจะประมาณนี้ ที่จริงถ้าจะให้ดีเขียนเป็น addons ดีกว่าเพราะไม่กระทบ standard code แต่อธิบายลำบากครับ
kittiu
น่าจะต้องแก้โค้ดนะครับ ที่ ไฟล์ addons/purchase_requisition/purchase_requisition.py (ผมดูที่ ver7 นะแต่โค้ดส่วนนี้น่าจะไม่เปลี่ยน)
[code]
def make_purchase_order(self, cr, uid, ids, partner_id, context=None):
"""
Create New RFQ for Supplier
"""
if context is None:
context = {}
assert partner_id, 'Supplier should be specified'
purchase_order = self.pool.get('purchase.order')
purchase_order_line = self.pool.get('purchase.order.line')
res_partner = self.pool.get('res.partner')
fiscal_position = self.pool.get('account.fiscal.position')
supplier = res_partner.browse(cr, uid, partner_id, context=context)
supplier_pricelist = supplier.property_product_pricelist_purchase or False
res = {}
for requisition in self.browse(cr, uid, ids, context=context):
if supplier.id in filter(lambda x: x, [rfq.state <> 'cancel' and rfq.partner_id.id or None for rfq in requisition.purchase_ids]):
raise osv.except_osv(_('Warning!'), _('You have already one %s purchase order for this partner, you must cancel this purchase order to create a new quotation.') % rfq.state)
location_id = requisition.warehouse_id.lot_input_id.id
purchase_id = purchase_order.create(cr, uid, {
'origin': requisition.name,
'partner_id': supplier.id,
'pricelist_id': supplier_pricelist.id,
'location_id': location_id,
'company_id': requisition.company_id.id,
'fiscal_position': supplier.property_account_position and supplier.property_account_position.id or False,
'requisition_id':requisition.id,
'notes':requisition.description,
'warehouse_id':requisition.warehouse_id.id ,
})
res[requisition.id] = purchase_id
for line in requisition.line_ids:
product = line.product_id
seller_price, qty, default_uom_po_id, date_planned = self._seller_details(cr, uid, line, supplier, context=context)
taxes_ids = product.supplier_taxes_id
taxes = fiscal_position.map_tax(cr, uid, supplier.property_account_position, taxes_ids)
purchase_order_line.create(cr, uid, {
'order_id': purchase_id,
'name': product.partner_ref,
'product_qty': qty,
'price_unit': line.req_price_unit # <-------------- เพิ่มที่นี่ โดยผมสมมุติว่าคุณใช้ฟิลด์ว่า req_price_unit
'product_id': product.id,
'product_uom': default_uom_po_id,
'price_unit': seller_price,
'date_planned': date_planned,
'taxes_id': [(6, 0, taxes)],
}, context=context)
return res
[/code]
ไม่ได้ลองนะครับ แต่น่าจะประมาณนี้ ที่จริงถ้าจะให้ดีเขียนเป็น addons ดีกว่าเพราะไม่กระทบ standard code แต่อธิบายลำบากครับ
kittiu