หน้า 1 จากทั้งหมด 1

เชื่อมโยงข้อมูลในแต่ละ Process

โพสต์แล้ว: พฤหัสฯ. 16 พ.ค. 2013 3:56 pm
โดย wichate
สวัสดีทุกท่าน วันนี้ผมมีปัญหาเรื่องการปรับแต่ง OpenERP จะมาขอคำแนะนำฮะ
..เดี๋ยวขออธิบายคร่าวๆ ก่อนเลย

1.ตอนนี้ผมใช้ OpenERP 6.1 ใน module purchase ตรงใบ Purchase Requisitions (PR) ผมเพิ่มช่อง ราคา กับ Remark เข้าไปในรายการย่อยด้วย
2.คราวนี้เวลาผมเอาใบ PR ไปเปิดเป็น Purchase Order (PO) จะมีวิธีไหนที่จะให้นำเอาตัวเลขราคาใน PR ไปขึ้นใน PO โดยอัตโนมัติเลย ไม่ต้องกรอกราคาเอง


ตอนนี้ที่ผมทำคือเขียนเป็น store procedure ใน postgressql เพื่อดึงข้อมูลจาก Table PR มาใส่ใน Table ของ PO ครับ
ซึ่งเป็นการแก้ใขในระดับโครงสร้าง Database และ store procedure มันก็มีผลกับเอกสารทุกใบ ไม่ได้มีผลเฉพาะกับเอกสารที่กำลังทำ
ผมเลยอยากหาวิธีอื่นที่ดีกว่านี้มีไหมครับท่าน :roll:

Re: เชื่อมโยงข้อมูลในแต่ละ Process

โพสต์แล้ว: พฤหัสฯ. 16 พ.ค. 2013 11:28 pm
โดย kittiu
น่าจะต้องแก้โค้ดนะครับ ที่ ไฟล์ 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

Re: เชื่อมโยงข้อมูลในแต่ละ Process

โพสต์แล้ว: ศุกร์ 17 พ.ค. 2013 8:27 am
โดย wichate
^
ขอบคุณครับท่าน คงต้องศึกษา python เพิ่มเสียแล้ว

Re: เชื่อมโยงข้อมูลในแต่ละ Process

โพสต์แล้ว: ศุกร์ 17 พ.ค. 2013 10:26 am
โดย openerpthailand
ตรงนี้ผมคิดว่า ทำจาก เครื่องมือ น่าจะดีกว่านะครับจะได้ไม่กระทบกับ core สามารถทำเป็น Server Action ได้ หน้า admin (ใน OpenERP7.0) นะครับ
ส่วน 6.0 นี่ไม่แน่ใจว่าทำได้จากหน้า admin หรือเปล่า

Re: เชื่อมโยงข้อมูลในแต่ละ Process

โพสต์แล้ว: ศุกร์ 17 พ.ค. 2013 12:42 pm
โดย wichate
^
เจอแล้วครับ มีให้ตั้ง Server Action ได้ แต่ยอมรับว่าทำไม่เป็น ช่วยแนะนำหน่อยครับ