|
|
|
เกี่ยวกับ SQL เเละ C# ครับ มีปัญหาครับ ช่วยหน่อยครับ |
|
|
|
|
|
|
|
งั้นสร้างตารางไว้เก็บรายการชำระของลูกค้าและรายละเอียดการชำระ (เก็บเลขใบเสร็จและจำนวนเงินที่ชำระ) แยกไว้ต่างหากครับ
เก็บรายละเอียดการชำระเงินของลูกค้า
ยอดรวมเงินที่ชำระเท่าไหร่
และแยกย่อยใบเสร็จแต่ละใบชำระเท่าไหร่
Payment
--รหัส
--จำนวนเงินที่นำมาชำระ
--ผลการอนุมัติ/ทำรายการ
--ผู้ทำรายการ
--เวลาที่ทำรายการ
Payment_Details
--เลขที่ invoice
--จำนวนเงินที่ชำระให้กับ invoice นี้
เช่น
ครั้งนี้จ่าย 150 บาทนะ
จ่าย 01 --> 70
จ่าย 02 --> 30
จา่ย 03 --> 50
เมื่อเพิ่มรายการนี้แล้วควรมีการอนุมัติอีกรอบเพื่อจะได้ตรวจสอบเงินที่รับชำระเข้ามาจริงๆด้วยนะครับ
หากผ่านการอนุมัติแล้วก็เอายอดเงินมาคำณวนว่าใบเสร็จไหนจ่ายเงินครบก็ปรับสถานะการจ่ายเงิน (ตัดจ่าย) ให้กับแต่ละใบเสร็จต่อไปครับ
(ตรงนี้อาจจะใช้ view ครับ รวมจำนวนเงินที่ชำระ กรุ๊ปตามเลขที่ invoice ที่ยังไม่ได้ตัดจ่าย)
เราจะได้ทราบว่ามี invoice ไหนบ้าง
--ที่ยังไม่ได้ชำระ หรือชำระครบแล้ว
--ชำระยังไม่ครบ แล้วขาดอีกเท่าไหร่
--มีการชำระมาตอนไหนบ้าง
--ใครเป็นคนตรวจสอบ/อนุมัติการชำระเงิน
การรับชำระมีหลายรูปแบบนะครับ ศึกษาธุรกิจก่อนออกแบบเพื่อให้สอดคล้องและรองรับกับงานจะดีที่สุดครับ
--เงินสด
--บัตรเครดิต
--เช็ค
--โอน
|
|
|
|
|
Date :
2016-03-26 23:54:35 |
By :
deksoke |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุบคุณครับพอเห็นเเนวทางเเเล้วครับแต่ยังนึกโค้ดไม่ออกครับ อิอิ
|
|
|
|
|
Date :
2016-03-27 09:41:39 |
By :
mtts10448 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอเข้าใจแนวทางเเล้วครับ แต่ปัญหาคือจะเขียน c# หรือ SQL ยังไงให้มัน INSERT ใน Payment รันตาม InvoiceID แบบครั้งเดียว หลายๆ row ตาม Invoice เช่น
มี
001 = 70
002 = 30
003 = 50
เท่ากับ 150
ลูกค้าจ่ายเงินสดมาแค่ 130 บาท จะรันยังไงให้ ใน Payment เป็น
001 = 70
002 = 30
003 = 30
โดยกดปุ่มเพียงครั้งเดียวครับไม่ต้องกดเลือก Invoice
|
|
|
|
|
Date :
2016-03-27 10:15:29 |
By :
mtts10448 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รับ id หลังจาก insert
sql get auto increment value after insert
หลังจาก insert ไปที่ payment แล้วก็เอา id ที่ได้
ไปวนลูป insert ต่อที่ payment_details ครับ
หากเกิดข้อผิดพลาดให้ rollback ถอยข้อมูลกลับทั้ง payment และ payment_details --ตรงนี้ใช้ transaction ช่วยนะครับ
ลูกค้าจ่ายเงินสดมาแค่ 130 บาท จะรันยังไงให้ ใน Payment เป็น
001 = 70
002 = 30
003 = 30
โดยกดปุ่มเพียงครั้งเดียวครับไม่ต้องกดเลือก Invoice
หากจะให้ใส่ตัวเลขชำระออโต้ ต้องคุยกันยาวหน่อยว่าทางยูสเซอร์อยากได้แบบไหน
บางทีลูกค้าที่จ่ายไม่ครบแล้วแบ่งจ่ายเนี่ย เค้าไม่ได้จ่ายตามใบเสร็จ 1 2 3 นะครับ
มีเงินพอจ่ายครบใบที่ 2 ก็เอามาจ่ายก่อน อย่างนี้ก็มี ซึ่งตรงนี้ถามยูสเซอร์ก่อนดีกว่ามั้ยเด๋วทำไปแล้วได้กลับมาแก้อีกนะครับ
ถ้าเอาแบบง่ายๆก็
อาจจะเรียงลำดับความสำคัญตามเลขที่ใบ invoice ก่อน-หลังก็ดีครับ แล้วนำจำนวนเงินที่ค้างชำระมาหักจากยอดชำระที่ลูกค้าจ่ายมา
|
ประวัติการแก้ไข 2016-03-27 16:13:26
|
|
|
|
Date :
2016-03-27 16:06:57 |
By :
deksoke |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อย่างที่บอกครับ มีเงินเท่าไหร่จ่ายเท่านั้น ไม่ตรงตาม ที่สั่งซื้อเลยครับ จะทำอย่าไรดีครับ
|
|
|
|
|
Date :
2016-03-27 22:00:17 |
By :
mtts10448 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สงสัยเป็นร้านค้าเล็กๆ
ปกติบริษัททั่วๆ ไป ไม่รับการจ่ายแบบนี้
ต้องชำระใบแจ้งหนี้เต็มจำนวน เป็นใบๆ
เช่น ถ้ามีสามใบ อาจชำระสองใบแรกก่อนก็ได้ ต้องชำระ 110
0001 25/3/2559 50
0002 25/3/2559 60
0003 25/3/2559 70
|
|
|
|
|
Date :
2016-03-28 09:10:46 |
By :
watcharop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช่ครับเป็นร้านค้าเล็กๆครับ อิอิ
|
|
|
|
|
Date :
2016-03-28 11:38:49 |
By :
mtts10448 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|