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

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

วิธีแสดงจำนวนเงินเป็นตัวอักษร ( ภาษาไทย ) openerp

หมวดนี้สำหรับนักพัฒนา Customize & Develop ปรับแต่งแก้ไขโค้ด รายงาน พัฒนาโมดูล ปรึกษาโค้ด ได้ที่หมวดนี้
กฎการใช้บอร์ด
หมวดนี้สำหรับนักพัฒนา
ลงโค้ดอย่าลืมครอบโค้ด เพื่อการแสดงผลที่อ่านง่ายสำหรับคนตอบ
nopphadol.b
โพสต์: 5
ลงทะเบียนเมื่อ: พฤหัสฯ. 06 มิ.ย. 2013 11:01 am

วิธีแสดงจำนวนเงินเป็นตัวอักษร ( ภาษาไทย ) openerp

โพสต์โดย nopphadol.b » พุธ 03 ก.ค. 2013 11:42 am

วิธีการแสดงจำนวนเงินเป็นตัวอักษรในใบเสนอราคาและใบสั่งขาย สำหรับ OpenERP7 มีขั้นตอนดังนี้
1. ทำการเพิ่ม Code นี้ ในไฟล์ที่ชื่อ amount_to_text.py ไฟล์นี้จะถูกเก็บอยู่ในโฟลเดอร์ openerp/tools

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

#---------------------------------------------------------------------
#                Thai_Number to Word                                      #
#---------------------------------------------------------------------
def conto(val):
    lek = ("ศูนย์","หนึ่ง","สอง","สาม","สี่","ห้า","หก","เจ็ด","แปด","เก้า")
    luk = ("สิบ","ร้อย","พัน","หมื่น","แสน","ล้าน")
    text = ''
    def thainumtext(val):
        i=0
        n,l = len(val),len(val)
        text = ''
        temp_int = 0
        while n>0:
            temp_int = int(val[i])
            if (temp_int>0):
                if ((n==1) and temp_int ==1 and l > 1):
                    text = text + 'เอ็ด'
                elif ((2==n) and temp_int ==1):
                    pass
                elif ((2==n) and temp_int ==2):
                    text = text + 'ยี่'
                else:
                    text = text + lek[temp_int]
                if n > 1:
                    text = text + luk[n-2]
            n=n-1
            i+=1
        return text
   
   
    n = len(val)
    if n == 1: return  lek[int(val)]
    nlist = []
    n=6
    temp = ''
    for i in reversed(val):
        temp = i+temp
        n = n-1
        if n == 0:
            nlist.append(temp)
            temp = ''
            n = 6
    else:
        if temp <> '':  nlist.append(temp)
    n = 1
    for i in (nlist):
        if n:
            text = thainumtext(i) + text
            n=0
        else:
            text = thainumtext(i) +'ล้าน' + text
    return text
def amount_to_text_th(number,currency):
    number = '%.2f' % float(number)
    units_name=currency
    list=str(number).split('.')
    start_word=conto(list[0])
    end_word=conto(list[1])
    cents_number = int(list[1])
    if cents_number == 0:
        cents_name='ถ้วน'
    else:
        cents_name=(cents_number>1) and 'สตางค์' or 'สตางค์'
    final_result = start_word+units_name+end_word+cents_name
    return final_result



2. ทำการแก้ไขไฟล์ sale_order.py ไฟล์นี้จะเก็บอยู่ในโฟลเดอร์ openerp/addons/sale/report ให้เป็นดังนี้

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

import time
from tools.translate import _
from tools import amount_to_text
from tools.amount_to_text import amount_to_text_th
from openerp.report import report_sxw
class order(report_sxw.rml_parse):
    def __init__(self, cr, uid, name, context=None):
        super(order, self).__init__(cr, uid, name, context=context)
        self.localcontext.update({
            'time': time,
            'amount_to_text_th': amount_to_text_th,
            'show_discount':self._show_discount,
        })

3. หลังจากนั้นก็ทำการเรียกใช้ฟังฟังก์ชันใน Report ด้วยการเพิ่มคำสั่ง

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

 <para style="terp_default_Bold_9">([[ amount_to_text_th(o.amount_total,'บาท') ]])</para>

เข้าไปที่ไฟล์ sale_order.rml ที่อยู่ในโฟล์เดอร์ openerp/addons/sale/report
เท่านี้ก็จะสามารถแสดงจำนวนเงินเป็นตัวอักษรใน ใบเสนอราคา และ ใบสั่งขาย ครับ

dreaminfo
โพสต์: 3
ลงทะเบียนเมื่อ: พฤหัสฯ. 21 พ.ย. 2013 4:02 pm

Re: วิธีแสดงจำนวนเงินเป็นตัวอักษร ( ภาษาไทย ) openerp

โพสต์โดย dreaminfo » พฤหัสฯ. 21 พ.ย. 2013 4:10 pm

ผมทำตามวิธีข้างบนแล้วแต่ใน pdf มันยังไม่สามารถแสดงผลออกมาได้เลยอ่ะครับ พอจะมีวิธีการเขียนและการเรียกใช้งานฟังก์ชันของ py กับ rml ไฟล์บ้างไหมครับ

ไกร
โพสต์: 51
ลงทะเบียนเมื่อ: พฤหัสฯ. 15 พ.ย. 2012 10:43 am

Re: วิธีแสดงจำนวนเงินเป็นตัวอักษร ( ภาษาไทย ) openerp

โพสต์โดย ไกร » จันทร์ 19 พ.ค. 2014 6:49 pm

ขอบคุณมากๆครับ จะลองนำไปทำดูครับ

arnon
โพสต์: 4
ลงทะเบียนเมื่อ: จันทร์ 20 ต.ค. 2014 1:46 pm

Re: วิธีแสดงจำนวนเงินเป็นตัวอักษร ( ภาษาไทย ) openerp

โพสต์โดย arnon » อังคาร 01 ธ.ค. 2015 4:45 pm

ใน Odoo8 ทำยังไงครับ

kitcle
โพสต์: 258
ลงทะเบียนเมื่อ: เสาร์ 22 ธ.ค. 2012 8:15 am

Re: วิธีแสดงจำนวนเงินเป็นตัวอักษร ( ภาษาไทย ) openerp

โพสต์โดย kitcle » เสาร์ 05 ธ.ค. 2015 7:21 am

V8 ,V9 เหมือนกันครับ แตกต่างนิดเดียวในขั้นตอนนำไปใช้
ยกตัวอย่างการพิมพ์ใบเสนอราคาใน sale.py

import openerp
from openerp.tools import amount_to_text
from openerp.tools.amount_to_text import amount_to_text_th
from openerp import api

class sale_order(osv.osv):
_inherit = 'sale.order'

@api.multi
def amount_to_text_th(self, amount, currency='บาท'):
return amount_to_text_th(amount, currency)


วิธีเอาไปแสดงในหน้ารายงานก็เรียกฟังกชั่นตรงๆไปใช้ได้เลย
<span t-esc="o.amount_to_text_th(o.amount_total, 'บาท')"/>


12289693_488852591284736_5011931001900706228_n.jpg
คุณไม่มีสิทธิ์ดูไฟล์ที่แนบมาในกระทู้
[b][color=#008000]รับปรึกษาปัญหาเทคนิค[/color] *** สายเซ็นผิดกฏ *** [/b]

esansoreal
โพสต์: 2
ลงทะเบียนเมื่อ: พฤหัสฯ. 02 ก.ค. 2015 5:32 pm

Re: วิธีแสดงจำนวนเงินเป็นตัวอักษร ( ภาษาไทย ) openerp

โพสต์โดย esansoreal » พุธ 23 ธ.ค. 2015 2:28 pm

ผมทดลองตามทำใน odoo 8 ตามขั้นตอนตัวอย่าง
1. ทำการเพิ่ม Code นี้ ในไฟล์ที่ชื่อ amount_to_text.py ไฟล์นี้จะถูกเก็บอยู่ในโฟลเดอร์ openerp/tools
2. ทำการแก้ไขไฟล์ sale_order.py ไฟล์นี้จะเก็บอยู่ในโฟลเดอร์ openerp/addons/sale/report
ใน path: openerp/addons/sale/report นี้ odoo 8 ไม่มีไฟล์ sale_order.py
ไฟล์ sale_order.py พบใน openerp/addons/sale/edi
3. เพิ่ม code ใน sale.py ดังนี้
import openerp
from openerp.tools import amount_to_text
from openerp.tools.amount_to_text import amount_to_text_th
from openerp import api

class sale_order(osv.osv):
_inherit = 'sale.order'

@api.multi
def amount_to_text_th(self, amount, currency='บาท'):
return amount_to_text_th(amount, currency)

4.หลังจากนั้นก็ทำการเรียกใช้ฟังฟังก์ชันใน Report ด้วยการเพิ่มคำสั่ง
เอาไปแสดงในหน้ารายงานก็เรียกฟังกชั่น
<span t-esc="o.amount_to_text_th(o.amount_total, 'บาท')"/> พอเอา Code นี้ใส่เข้าไป Error ครับ

อยากทราบว่าที่ผมทำใน odoo 8 ถูกต้องหรือไม่ เพราะอะไรจึงเรียกใช้งานในขั้นตอนที่ 4 ไม่ได้
ผมขอขั้นตอนการทำของ V.8 แบบทีละขั้นได้ไหมครับ....ขอบคุณครับ

kitcle
โพสต์: 258
ลงทะเบียนเมื่อ: เสาร์ 22 ธ.ค. 2012 8:15 am

Re: วิธีแสดงจำนวนเงินเป็นตัวอักษร ( ภาษาไทย ) openerp

โพสต์โดย kitcle » อังคาร 19 ม.ค. 2016 1:35 am

คุณมี 2 ทางเลือกในการใช้
1. ไปเพิ่มโค๊ดในโมดูลหลัก

2.ไปสร้าง custome module มาใช้เอง


วิธีที่ 1 ไปเพิ่มโค๊ดในโมดูลหลัก
ใน addons\sale มันจะมีไฟล์ sale.py
------> import openerp
from openerp.tools import amount_to_text
from openerp.tools.amount_to_text import amount_to_text_th
from openerp import api

----> class sale_order(osv.osv):
//ภายในคลาสนี้ใส่
@api.multi
def amount_to_text_th(self, amount, currency='บาท'):
return amount_to_text_th(amount, currency)

หลังจากนั้นก็ทำการเรียกใช้ฟังฟังก์ชันใน Report ด้วยการเพิ่มคำสั่ง
เอาไปแสดงในหน้ารายงานก็เรียกฟังกชั่น
<span t-esc="o.amount_to_text_th(o.amount_total, 'บาท')"/>

------>reatart service > Upgrade module sale management
------> หมายเหตุ: ระวัง syntax ident ด้วยนะครับ ห้ามพลาดด


วิธีที่ 2 เรื่องมันยาวครับ เด๋วหาเวลามาทำภาพประกอบ
[b][color=#008000]รับปรึกษาปัญหาเทคนิค[/color] *** สายเซ็นผิดกฏ *** [/b]

arnon
โพสต์: 4
ลงทะเบียนเมื่อ: จันทร์ 20 ต.ค. 2014 1:46 pm

Re: วิธีแสดงจำนวนเงินเป็นตัวอักษร ( ภาษาไทย ) openerp

โพสต์โดย arnon » เสาร์ 06 ก.พ. 2016 4:47 pm

ขอบคุณครับ


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

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

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

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