วันอังคารที่ 14 กุมภาพันธ์ พ.ศ. 2560

Ledger pt.5

     ในขณะที่ทำงานอยู่นั้น เพื่อนได้มาหอแล้วได้บอกว่าที่ผมทำไปเกี่ยวกับเรื่อง Total นั้นมันยังไม่ถูกนะ บอกว่าผมเข้าใจผิด เพื่อนบอกให้ลองหารูปใน google ดู ผลก็คือ......



    ผิดเต็มๆ ใช่แล้วครับบรรทัดแรกของการบันทึก เงินคงเหลือก็ขึ้นตามนั้นเลยครับไม่ได้เป็น 0 ผมเลยนั่งแก้ ผลที่ได้ก็เป็นดังนี้


    เย้ !! ดูมีมาตรฐานขึ้นมาเยอะเลย โดยวิธีที่ใช้ในการแก้ปัญหาก็คือ

    บรรทัด ที่สามแค่บรรทัดเดียวเลย โดยโค้ดส่วนนี้จะอยู่ใน function add_list วิธีก็คือเวลาเราจะใส่ค่า cost_total เราจะเอาค่าที่ได้จากการคำนวณค่ายอดคงเหลือ ที่ได้มาจาก function total_money() มาเลยไม่ได้เพราะว่าตอนแรกมัน มันยังไม่มี object ไปคำนวณเงินค่ามันเลยออกมาเป็น 0 ผมก็เลยให้มันบวกกับค่า new_money ที่ถูกกลับเครื่องหมาย แล้วไปบวกเพิ่มกับ ค่าที่ได้จาก total_money() ก่อน แล้วค่อยใส่ลงไปในค่า cost_total นั้นเอง ง่ายใช่ไหมละ ทำไมคิดไม่ได้ตั้งแต่แรก ส่วน สองบรรทัดแรกนั้นผมไม่ได้อธิบายไว้ก่อนหน้านี้ ซึ่งมันก็คือ 

    money_type จะเป็นค่าที่ได้จากการ request.POST หรือ ค่าที่รับมาจากการ submit form นั้นเองโดยตัวนี้จะรับค่ามาจากเจ้านี้..!

    โดย value ก็จะเป็น in , ex ก็ถ้า money_type = ex หรือ ติ๊กว่าเป็นรายจ่าย ก็จะนำค่า new_money มาใส่เครื่องหมาย - ด้านหน้า ทำให้เป็นค่าติดลบนั้นเองงง !!

    ส่วนที่ทำเพิ่มมาอีกนิดนึง ก็จากตัวอย่างเลยครับ คือ บรรทัดสุดท้ายเขาจะใส่เป็น รวมของแต่ละหลักไว้ๆ ซึ่งผมก็ต้องขอขอบคุณตัวอย่างมาก เพราะผมก็ลืมเรื่องนี้ไปสนิทเลยเหมือนกัน ว่ามันควรจะเป็นแบบนั้น ก็เลยไปจัดเพิ่มมาอีก 2 function ก็คือ total_income() กับ total_expense() 


    ก็จะเหมือนกับ total_money() function ที่ไว้คำนวณยอดคงเหลือทั้งหมด เกือบทุกประการเพียงแต่เพิ่มเจ้าเงื่อนไข if ไว้เช็คว่าค่า cost_value นั้นติดลบหรือไม่ ถ้าหากติดลบ ซึ่งก็คือรายจ่าย ก็จะให้บวกเฉพาะค่าติดลบไปเรื่อยๆ ถ้าหากไม่ติดลบหรือเป็นบวก ก็จะให้บวกเฉพาะค่าบวกไปเรื่อยๆ แค่นี้ก็เรียบร้อย

    การเรียกใช้ function ก็จะไปเรียกใช้ใน function index เพื่อที่จะให้ส่งค่า ไปแสดงโดย มีตัวแปร income_index, expense_index ไว้เก็บค่ารวมของรายรับรายจ่าย แล้วก็ที่ใส่ - ให้กับ total_expense() เพราะว่าตัวนี้จะ return ค่าที่เป็นลบ แต่อยากให้แสดงผลเป็น + ก็เลยให้กลับเครื่องหมายอีกครั้งหนึ่ง แล้วก็ใส่ค่าใน context ไปแสดงผลต่อ





ไม่มีความคิดเห็น:

แสดงความคิดเห็น