Thiết lập Sequence để sinh mã tự động cho các object trong OpenERP

Thảo luận trong 'Quản Trị Trong OpenERP' bắt đầu bởi openerpvietnam, 27/1/13.

  1. openerpvietnam Active Member

    - Vào thiết lập Sequence Codes (Setting - Sequences & Identifiers - Sequence Codes)
    [IMG]
    Field name (dùng lựa chọn cho field code khi thiết lập Sequence)
    Field code (dùng áp dụng trong đoạn code thuộc object mà ta cần sinh mã tự động)
    - Vào thiết lập Sequence (Setting - Sequences & Identifiers - Sequences)
    Field Prefix (Trước số thứ tự) và field Suffix (Sau số thứ tự) như chỉ dẫn của màn hình:
    Current Year with Century: %(year)s
    Current Year without Century: %(y)s
    Month: %(month)s
    Day: %(day)s
    Day of the Year: %(doy)s
    Week of the Year: %(woy)s
    Day of the Week (0:Monday): %(weekday)s
    Hour 00->24: %(h24)s
    Hour 00->12: %(h12)s
    Minute: %(min)s
    Second: %(sec)s
    Field Number Padding : chính là số kí tự sẽ xuất hiện (ví dụ 3 thì số thứ tự của ta sẽ là 001)
    Field Increment Number : là phần khoảng cách của 2 số thứ tự (ví dụ 2 thì sau số 001 sẽ là 003)
    Field Next Number : số thứ tự sinh tự động kế tiếp.
    Field Implementation : sẽ có 2 giá trị cho ta lựa chọn,
    + Standard : ta không thấy được số thứ tự tiếp theo Next Number khi sinh mã (dùng hàm sinh số tự động nextval() trong Postgresql http://www.postgresql.org/docs/8.1/static/functions-sequence.html)
    + No gap : hiển thị số thứ tự tiếp theo khi phát sinh, số thứ tự kế tiếp khi sinh mã là số này.
    Field Code : Chọn tên Sequence Codes mà bạn đã thiết lập bên trên.
    - Sau khi thiết lập xong tại Object cần sinh mã tự động, các bạn sẽ dùng self.pool.get('ir.sequence').get(cr, uid, 'd_a_o') (trong đó 'd_a_o' là field code đã tạo khi thiết lập Sequence Codes bên trên) và dùng hàm create hoặc gán default cho để sinh mã tự động cho field thuộc object mà ta cần sinh mã.
  2. thinhgr Active Member

    Hay quá đang mò cái này, cám ơn
  3. minimum New Member

    Minh comment thêm về no_gap vs standard:
    - Standard: openerp sẽ get next number của cùng 1 sequence
    - No gap: với mỗi record tạo mới, openerp sẽ gen thêm một sequence ở database
    Khi dung no gap anh/ em sẽ hạn chế được bug: lock sequence
    admin thích bài này.
  4. thinhgr Active Member

    Mình gặp trường hợp này: khi mình tạo record thì nó hiện số 1 sau đó lưu nó lại hiện số 2 có nghĩa là lưu record toàn nhảy cách số (mình chọn no gap). Cám ơn.
    Khi mình tạo record mà mình không lưu thì nó vẫn tăng số, có cách nào mình lưu record nó mới tăng không?
  5. openerpvietnam Active Member

    Bạn bỏ default phần sinh mã tự động đi và chỉ gọi đến cái sinh mã tự động trong hàm create thôi.
    Thân.
    thinhgr thích bài này.
  6. thinhgr Active Member

    Oh quên cái vụ này, cám ơn nhiều nha

Chia sẻ trang này