/* scrip for google analytic */

Ads 468x60px

วันอังคารที่ 13 ตุลาคม พ.ศ. 2558

[Project] มาสร้าง point of sale ด้วย linux command และ java เปรียบเทียบกันเถอะ ตอนที่ 1

introduce

สวัสดีครับ ในบทความนี้เป็นบทความประยุกษ์ใช้ คำสั่งต่างๆที่ได้เขียนแนะนำเอาไว้ในลิ้งบทความด้านล่างนี้ ถ้าใครที่ยังไม่ได้อ่าน ลองเข้าไปอ่านกันนะครับ

"Writing your first script" วิธีเขียนสคลิป Linux command บทที่ 1
"Writing your first script" วิธีเขียนสคลิป Linux command บทที่ 2
"Writing your first script" วิธีเขียนสคลิป Linux command บทที่ 3

รอติดตาม "Writing your first script" วิธีเขียนสคลิป Linux command บทที่ 4 ด้วยนะครับ

สำหรับบทความนี้บังเอิญ ผู้เขียนได้ไอเดียขณะที่เข้าไปรับประทานอาหารที่ร้านอาหารฟาสฟูดแห่งหนึ่ง ซึ่งไม่อาจจะเอ่ยชื่อได้ว่า แมคโดนัล

หลังจากที่ได้สั่งอาหารมานั่งทาน ผู้เขียนก็นั่งมองๆ กระดาษที่ให้มาพร้อมเงินทอน ที่เรียกว่า ใบเสร็จรับเงิน แล้วก็ลองอ่านๆ ข้อความในกระดาษไปพร้อมกับกินอาหารแก้หิว แล้วก็เห็นอยู่คำๆหนึ่งว่า POS ก็เลย ปิ้งไอเดียว่า อยากจะทำอะไรขึ้นมาทันที

บทความนี้จะลองออกแบบต้นแบบของโปรแกรม POS กัน จริงๆแล้วผู้เขียนก็ไม่เคยทำโปรเจคกับอุปกรณ์ ฮาร์ดแวร์หรือซอร์ฟแวร์แต่อย่างใด อาจจะทำส่วนที่ติดต่อกับดาต้าเบสแบบง่ายๆ แต่จะไม่มีการติดต่อกับอุปกรณ์ฮาร์ดแวร์ตัวอื่นๆ แต่ถ้าบทความเป็นที่สนใจมีคนรีเควสมาเยอะก็อาจจะพยายามหามาเขียนเป็น ตอนสอง ตอนสามต่อ เช่น ติดต่อกับดาต้าเบสยังไง ใช้data structor&algorithm แบบไหน เชื่อมต่อกับอุปกรณ์ยิงบาร์โค๊ดยังไง ผู้เขียนแค่ เพ้อไว้ก่อน อาจจะทำไม่ได้ก็ได้ (เขียนไปเขียนมาได้ไอเดียสร้างข้อมูลที่ไม่ต้องติดต่อกับดาต้าเบสไว้ลองเขียนบทถัดไป)^^

เอาเป็นว่ามาลองออกแบบโปรแกรมและเทคโนโลยีที่มีอยู่เกลื่อนกลาดตลาดไปพร้อมๆกันนะครับ ถือว่าได้เรียนรู้สำหรับมือใหม่แบบผู้เขียนและผู้ที่สนใจท่านอื่นๆก็แล้วกัน จะได้นำไปต่อยอดกับเทคโนโลยีในยุคนี้ได้อีกด้วย เช่น android ,IOS จะได้ไม่ต้องไปซื้อกับฝรั่งมังคราซะหมด แต่ก่อนอื่น มาศึกษากันก่อนว่า POS คืออะไร



ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส



point of sale คืออะไร

Point of sale แปลตรงตัวเลย คือ จุดขาย หรือจุดชำระเงิน โดยโปรแกรมอะไรก็ได้แล้วแต่ นักพัฒนาจะประดิษฐ์ รูปร่างหน้าตา ความสวยงาม ความสะดวกสบาย ฟังก์ชันครบครัน ตามงบประมาณ ใช้เว็บ ใช้แอพพลิเคชั่น ใช้ embedded system บลา ๆ ๆ ๆ ก็ตามใจโปรแกรมเมอร์ เอ้ย...ผู้ว่าจ้าง เลยครับ โปรแกรมเมอร์ใจดีก็อาจจะทำให้ฟรีก็ได้(เหรอออ)นะครับ

ผู้เขียนเอง ก็จะทำแบบงบน้อยนี้แระ ไม่น่าใช้ แต่ก็ประสิทธิภาพนะเออ...

ระบบนี้ก็แบ่งเป็นสองส่วนมี ฮาร์ดแวร์ และ ซอร์ฟแวร์

ในส่วนของซอร์ฟแวร์ ก็ อาจจะมี ดาต้าเบสไว้เก็บข้อมูลสินค้า และ หรือหน้าตา GUI (graphic User Interface)




 ในส่วนฮาร์ดแวร์ ก็มี 

คอมพิวเตอร์ สแกนบาร์โค๊ด จอภาพ เครื่องพิมพ์ ลิ้นชัก ต่างๆนานา

ขออธิบายสั้นๆ เพราะ เรฟเฟอร์เรนไว้หมดแล้ว...

บริษัทอะไรบ้างที่ใช้ pos

จากที่ได้ซื้อของ....ก็ไม่ค่อยเยอะไม่ค่อยแยะสักเท่าไรเพราะ แฟนผู้เขียนเก็บหมด เหอๆ ก็จากที่ได้รวบรวมและมโนเองว่ามีบริษัทอะไรบ้างก็มีดังนี้


 Mr. Jones


Bonchon chicken


Mcdonal

ร้านอาหารทั่วไป หรือ....7-11, Lotus, Big-C, ร้านขายยา,ร้านขายของชำ และอื่นๆ

จากที่ได้วิเคราะห์ ข้อมูลที่ได้จากใบเสร็จแล้วสามารถ แจกแจง ออกมา ซึ่งตัวแปรต้องมีอะไรบ้างที่อยู่ในใบเสร็จ ได้ดังนี้

ตัวแปรข้อมูลในใบเสร็จ

ชื่อร้านหรือชื่อบริษัท
รหัสผู้เสียภาษี
เบอร์โทร
สาขา
ผู้รับเงิน
คนรับออเดอร์
หมายเลขเครื่อง
เวลาที่ดำเนินการ
จำนวนของสินค้า
ราคาของสินค้า
ราคารวมของสินค้า
ค่าสุทธิของราคาสินค้า
ภาษี
เงินที่รับจากลูกค้า
เงินทอน

ตัวแปรเหล่านี้ ขึ้นอยู่กับประเภทของธุรกิจครับ

จากที่ได้วิเคราะห์ตัวแปรต่างๆที่ระบุไว้ สามารถแบ่งออกได้ 2 กลุ่ม ดังนี้

1. ตัวแปรคงที่ คือเป็นข้อมูลที่เอาไว้แสดงผลให้ลูกค้ารับรู้และไว้เป็นหลักฐาน เช่น ชื่อร้าน, สาขา, หมายเลขเครื่อง, รหัสผู้เสียภาษี, เบอร์โทร, เวลาที่ซื้อสินค้า เป็นต้น

2. ตัวแปรแปรผัน คือตัวแปรที่เปลี่ยนแปลงได้ขึ้นอยู่กับผู้ป้อนข้อมูล แล้วนำมาคำนวน เช่น จำนวนสินค้า, ราคาสินค้า, ราคารวม, ค่าสุทธิ, ภาษี, เงินที่รับจากลูกค้า, เงินทอน เป็นต้น

ดังนั้นตัวแปรเหล่านี้จึงต้องเอามาคำนวนด้วยคำสั่งต่างๆที่เกี่ยวข้องโดยมีคำสั่งที่สำคัญดังนี้



ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส



ขั้นตอนการออกแบบ








code

#!/bin/bash

###constants

NAME="NAME : Sheep Code Service"
BRANCH="BRANCH : Sheep baby"
TEL="TEL : 02-123-4567"
NUMBER="NUMBER : ID9999999999"
RECEIP="RECEIP : SKLSheepCode"
RIGHT_NOW=$(date +="%x %r %z")

header="\n %-10s %8s %10s \n"
footer="\n %-10s %8s %10s \n"
format=" %-12s %05d %10s \n"
width=43

#Function

POS_CAL_NET(){
_TOTAL=$(POS_CAL_SUM)
bc <<< "scale = 2; ($_TOTAL / 1.07)"
}

POS_CAL_SUM(){
declare -i TOTAL
TOTAL=$value*$amount
echo $TOTAL
}

POS_CAL_VAT(){
_TOTAL=$(POS_CAL_SUM)
_NET=$(POS_CAL_NET)
bc <<< "scale = 2; ($_TOTAL - $_NET)"
}

POS_CAL_CHANGE(){
_TOTAL=$(POS_CAL_SUM)
declare -i change
change=$reciep-$_TOTAL
echo $change
}

#Main

# INPUT FROM USER

echo "ยินต้อนรับเข้าสู่โปรแกรม POS By SheepCode"
echo "กรุณาป้อนชื่อสินค้า"
echo -n "ชื่อสินค้า : "
read nameItem
echo "กรุณาป้อน จำนวนสินค้า"
echo -n "จำนวนสินค้า : "
read amount
echo "กรุณาป้อนราคาสินค้า"
echo -n "ราคาสินค้า : "
read value
echo -n "เงินที่ได้รับ : "
read reciep

# DISPLAY
#cat <<- __EOF__
divider===============================
divider=$divider$divider
printf "%$width.${width}s\n" "$divider" >> POS.txt
echo -e "$NAME \n$BRANCH \n$TEL \n$NUMBER \n$RECEIP \nTIME$RIGHT_NOW" >> POS.txt
printf "%$width.${width}s\n" "$divider" >> POS.txt
printf "$header" "ITEM NAME" "amount" "PRICE" >> POS.txt
printf "%$width.${width}s\n" "$divider" >> POS.txt
printf "$format" $nameItem $amount $value >> POS.txt
printf "%$width.${width}s\n" "$divider" >> POS.txt
printf "$footer" "Total" "$(POS_CAL_SUM)" "บาท" >> POS.txt
printf "$footer" "NET" "$(POS_CAL_NET)" "บาท" >> POS.txt
printf "$footer" "VAT" "$(POS_CAL_VAT)" "บาท" >> POS.txt
printf "$footer" "CASH" "$reciep" "บาท" >> POS.txt
printf "$footer" "CHANGE" "$(POS_CAL_CHANGE)" "บาท" >> POS.txt
printf "%$width.${width}s\n" "$divider" >> POS.txt
#__EOF__

ผลการทดลอง

จากโค๊ดด้านบน โปรแกรมจะแบ่งเป็น 4 ส่วน คือ
1. ประกาศตัวแปร
   สร้างข้อความเพื่อเอาไว้แสดงผล
2. ฟังก์ชัน
   ทำหน้าที่คำนวนค่าต่างๆ
3. รับค่า
   ทำหน้าที่รับค่าจากผู้ใช้
4.แสดงผล
   ทำหน้าที่ปริ้นออกมาแสดงผลทางหน้าจอ หรือ ปริ้นสร้างไฟล์ไปเก็บไว้เพื่อรอปริ้น

จะเห็นว่า ในส่วนของแสดงผล จะนำข้อความที่ print ออกมา ไว้ที่ไฟล์

  
ใช้คำสั่ง cat อ่านไฟล์ ออกมาได้ภาพด้านล่าง




ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส




สรุปผล

ในบทความนี้เป็นตอนที่ 1 ก็ได้ทำการออกแบบระบบ POS แบบง่ายๆขึ้นมาก่อน ในบทความต่อไปก็ผู้เขียนคิดว่า จะพัฒนาต่อให้สามารถ ปริ้นไฟล์ที่สร้างขึ้นในทันที และ สร้างที่เก็บข้อมูลเป็นโครงสร้างข้อมูล(data structor) เพื่อเก็บข้อมูลสินค้าเอาไว้เรียกใช้ และที่สำคัญที่สุด จะทำให้สามารถป้อน สินค้าได้หลายๆ ครั้ง ถ้าลองทำตามจะสังเกตว่า สามารถป้อนสินค้าได้แค่บรรทัดเดียว ในส่วนของคำสั่งต่างๆ ที่ไว้ใช้คำนวนหรือ แสดงผล จะขอยกไปเขียนในบทความของ Linux Command ในตอนหน้าก็จะพัฒนากับภาษา java ลองดูว่าจะเขียนง่ายกว่ากันหรือไม่ โปรดติดตามกันด้วยนะครับ

credit of picture 
http://pointofsale.com/Retail-point-of-sale-software-single-store/POS-Prophet-Systems.html
https://utaiacademy.files.wordpress.com/2014/06/de22d-screenshot2012-07-27at1-13-45am.png?w=538&h=342 

reference
https://en.wikipedia.org/wiki/Point_of_sale
https://utaiacademy.files.wordpress.com/2014/06/de22d-screenshot2012-07-27at1-13-45am.png?w=538&h=342
http://linuxconfig.org/bash-printf-syntax-basics-with-examples 
http://stackoverflow.com/questions/12147040/division-in-script-and-floating-point
 
 
Blogger Templates