รูปภาพแจ้งข่าว ทางเว็บบอร์ด openerpthailand.org ได้เปลี่ยนระบบเว็บบอร์ด ใหม่เป็น phpBB 3.1
  1. บุคคลทั่วไป จะไม่สามารถเข้าอ่านกระทู้บางบอร์ด แนะนำให้ท่าน สมัครสมาชิกคลิกตามลิงค์นี้
  2. สมาชิกใหม่ ถ้ายังไม่ได้แนะนำตัวจะไม่สามารถ ตั้งกระทู้ และ ดาวน์โหลด ไฟล์จากเว็บบอร์ดได้ ท่านจำเป็นต้องแนะนำตัวที่หมวดนี้
  3. ถ้ามีปัญหาการใช้งาน หรือ ข้อเสนอแนะใดๆ แนะนำได้ที่นี่
  4. ปุ่มรูปหัวใจใต้โพส แต่ละโพส ท่านสามารถกดเพื่อสื่อถึงคนโพสนั้นถูกใจท่าน
  5. ห้ามลง E-mail, เบอร์โทรส่วนตัว, Line id หรือข้อมูลส่วนตัวอื่นๆ เพื่อป้องกันการแอบอ้างและโฆษณาแฝง โดยสามารถติดต่อสมาชิกท่านอื่นผ่านระบบ PM ของบอร์ด
  6. ท่านสามารถปิดการแจ้งนี้ได้ ที่มุมขวาของกล่องข้อความนี้

บุคคลทั่วไปสามาเข้าสู่ระบบ ด้วย Account ของ FaceBook ได้แล้ว คลิกที่นี่ได้เลย

อยากได้ตัวอย่างการใช้ cursor ใน Odoo

หมวดนี้สำหรับนักพัฒนา Customize & Develop ปรับแต่งแก้ไขโค้ด รายงาน พัฒนาโมดูล ปรึกษาโค้ด ได้ที่หมวดนี้
กฎการใช้บอร์ด
หมวดนี้สำหรับนักพัฒนา
ลงโค้ดอย่าลืมครอบโค้ด เพื่อการแสดงผลที่อ่านง่ายสำหรับคนตอบ
ntnw
โพสต์: 112
ลงทะเบียนเมื่อ: ศุกร์ 25 ก.ค. 2014 10:20 am

อยากได้ตัวอย่างการใช้ cursor ใน Odoo

โพสต์โดย ntnw » พุธ 29 ก.ค. 2015 3:51 pm

คิด ๆ ดูแล้ว จำเป็นต้องรู้ เพราะน่าจะต้องใช้เยอะ ปัจจุบัน ผมใช้วิธีการ เลี่ยงไปทำใน PGSql (ถนัด ภาษ Sql) ซึ่งก็สามารถทำงานได้ แต่ตอนติดตั้งจริง ถ้าลืม import sql เข้าไปที่ PGsql ด้วย จะเซ็งน่าดู ถ้าทำใน .py ได้น่าจะปลอดภัยกว่า เป็นตัวกันโง่ไปในตัว
ยกตัวอย่าง Code ที่ผมเขียนใน Sql ดังนี้

โค้ด: เลือกทั้งหมด

CREATE OR REPLACE FUNCTION barcode(so integer)
  RETURNS void AS
$BODY$

DECLARE
   tqty float;
   count float;
   so_line integer;
   item integer;
   cur_sale CURSOR FOR select id,product_uom_qty from sale_order_line where order_id=so order by id;

BEGIN
    DELETE FROM mrp_sticker_barcode;
   
    OPEN cur_sale;
    item = 1;
    LOOP
   FETCH NEXT FROM cur_sale into so_line,tqty;
   EXIT WHEN NOT FOUND;
   count = 1;
      loop
         insert into mrp_sticker_barcode VALUES(so_line,count,tqty,item);
         count = count + 1;
         exit when count > tqty;
      end loop;
   item = item+1;
     END LOOP;
     
     CLOSE cur_sale;
END 
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION barcode(integer)
  OWNER TO openpg;


ซึ่งอ่านตาม Code ผมได้ดังนี้
เรียก cursor ไปที่ Table sale_order_line โดย where ที่ order_id (รับค่าจาก ตัวแปล) สมมุติว่าได้ค่า

sale_line_id /กะ / qty
1 / 3
2 / 4

code ผมจะ วน loop ออกมาได้ดังนี้
sale_line_id / qty / total_qty
1 / 1 / 3
1 / 2 / 3
1 / 3 / 3
2 / 1 / 4
2 / 2 / 4
2 / 3 / 4
2 / 4 / 4

เป้าหมายของ code นี้คือ จะเอาไปทำ barcode report เวลา Print จะได้จำนวน barcode = จำนวน qty ที่สั่ง และ run serial ด้วยว่าเป็น แผ่นที่เท่าไร ของจำนวนเต็ม

รบกวนผู้เชี่ยวชาญ python ด้วยครับ

  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 4 และ บุคคลทั่วไป 0 ท่าน