12/25/2020

PI : Motion Trick GPIO

Motion Trick GPIO By Python

ถ้า Error
root@raspberrypi:/home/pi# python3 SCI_Notify.py
Traceback (most recent call last):
File "SCI_Notify.py", line 10, in <module>
import RPi.GPIO as GPIO
ModuleNotFoundError: No module named 'RPi'[/quote]

ต้องลง Program เพิ่ม

  1. sudo apt-get -y install python3-rpi.gpio

 

เพิ่มเติมสั่ง Motion ให้สั่ง GPIO ไม่ได้ต้อง
Add user motion เข้า GPIO ก่อน

  1. sudo adduser motion gpio

 

12/15/2020

Axapta : Axapta End คำสั่งผลิตไม่ได้ เนื่องจากมี Reports ติดลบ

 Axapta : Axapta End คำสั่งผลิตไม่ได้ เนื่องจากมี Reports ติดลบ

คำสั่งผลิต Reports ติดลบ แล้วคำสั่งที่จะเอา Item จาก PD ที่ Reports ติดลบ ไปใช้งาน Upcost ไม่ได้ Error

Up Costing PD20-026941:465027353015 Error


Production - Costing
Calculating BOM comsumption
Financial item picking
...
Item consumption for .. cannot be updated, as the cost price is known only for 0.00 instock.
Update has been canceled.


เกิดจาก PD20-018752:061093653220 มีการ Post Reports ติดลบ ทำให้ยอดที่ Reports ตามมาทีหลังไม่เกิดมูลค่าและนำไปใช้งานในคำสั่งผลิตอื่น ไม่ได้







วิธีแก้ คือ ต้องลบ Transaction ที่เกิดขึ้นตอน +10 และ -10 ออกให้หมด ให้เลือกเฉพาะ 4 ตัวที่ Reports มาทีหลังเพราะมีการเอาไป Post Packing list แล้วที่ PD20-026941

1. แก้ข้อมูล Table : InventTrans ลอกข้อมูลให้เหมือนกับตัว +10 ที่ทำสำเร็จ ยกเว้นราคา กับ QTY
เช่น Field : StatusIssue, CostAmountPost, CurrencyCode, StatusReceipt, InvoicerTurned,Direction


2. ลบข้อมูล IniventTrans ที่ +10 กับ -10 ออก
3. Run Job recalcInventSum


4. ลบข้อมูล Reports PD ที่ผิดออก ให้เหลือแต่ตัวที่ถูกต้อง
ProdJournalProd และ ProdJournalTable และ ProdTableJour
5. Update คำสั่งผลิต PD20-026941 ที่ Error
6. ดู Onhand เรียกรายงาน Inventory และ Stockcard ดูความถูกต้อง






12/10/2020

PI : Python On Delay 10 Seconds

PI : Python On Delay 10 Seconds
การต่อ



เมื่อมีการทำงาน Python จะเปิด Delay และค้างไว้ 10 วิ และสั่ง Trick GPIO ขาที่ต่อ
Code Python
  1. import RPi.GPIO as GPIO
  2. import time
  3.  
  4. stop_time = time.time() + 10
  5.  
  6. GPIO.setmode(GPIO.BOARD)
  7. GPIO.setup(10,GPIO.OUT)
  8.  
  9. try:
  10.     while time.time() < stop_time:
  11.        GPIO.output(10,1)
  12.        time.sleep(0.0015)
  13.        GPIO.output(10,0)
  14.        time.sleep(0.01)
  15.  
  16. except KeyboardInterrupt:
  17.     pass
  18.  
  19. print"Stopping Auto-Feeder"
  20. GPIO.cleanup()

PI : PI Motion Monitor HC-SR501 PIR จับการเคลื่อนไหว และแจ้งเตือน

 PI : PI Motion Monitor HC-SR501 PIR จับการเคลื่อนไหว และแจ้งเตือน
การต่อ


เมื่อมีการเคลื่อนไหว ผ่าน หน้า Sensor ก็จะมีแจ้งเตือน ไฟก็จะติด
Code Python
  1. #!/usr/bin/python
  2.  
  3. import RPi.GPIO as GPIO
  4. import time
  5.  
  6. GPIO.setmode(GPIO.BOARD)            #Set GPIO to pin numbering
  7. pir = 8                             #Assign pin 8 to PIR
  8. led = 10                            #Assign pin 10 to LED
  9. GPIO.setup(pir, GPIO.IN)            #Setup GPIO pin PIR as input
  10. GPIO.setup(led, GPIO.OUT)           #Setup GPIO pin for LED as output
  11. print ("Sensor initializing . . .")
  12. time.sleep(2)                       #Give sensor time to startup
  13. print ("Active")
  14. print ("Press Ctrl+c to end program")
  15.  
  16. try:
  17.   while True:
  18.    if GPIO.input(pir) == True:      #If PIR pin goes high, motion is detected
  19.       print ("Motion Detected!")
  20.       GPIO.output(led, True)        #Turn on LED
  21.       time.sleep(4)                 #Keep LED on for 4 seconds
  22.    GPIO.output(led, False)          #Turn off LED
  23.    time.sleep(0.1)
  24.  
  25. except KeyboardInterrupt:           #Ctrl+c
  26.   pass                              #Do nothing, continue to finally
  27.  
  28. finally:
  29.   GPIO.output(led, False)           #Turn off LED in case left on
  30.   GPIO.cleanup()                    #reset all GPIO
  31.   print ("Program ended")
  32.  

12/07/2020

Axapta : Error Transaction is already marked for settlement

 Error Transaction is already marked for settlement.


ใน Open Transaction Editing เกิดขึ้นได้ทั้งฝั่ง Vendor และ Customer
เกิดจากมีการไปกด Mark ที่รายการนั้น
1. เข้าไปหาเล่มที่จะปลด Mark ออก เข้าไปที่
Inquiry --> Specifications
2. เลือก View ที่ต้องการดู เป็นเช่น Sales Order แล้วกด Open Journal Form

3. กด Functions --> Open Transaction Editing

4. ตอบ No
5. กดจะมีรายการ Mark ไว้ ให้ติ๊กออก

6. กลับไปที่ Open Transaction Editing ของ Customer Is Mark จะหายไป ก็จะสามารถกด Mark และ Update ออกได้




11/07/2020

SQL : SQL Server Enterprise Manager นำเข้าข้อมูลจากการ Query

 SQL : SQL Server Enterprise Manager นำเข้าข้อมูลจากการ Query
โดยการ Query เอาเฉพาะข้อมูลส่วนที่ต่างกัน หรือส่วนที่ไม่มีในอีก Table 1
1. นำ Table ที่ต้องการมาไว้ที่ Database เดียวกัน ด้วยการ copy table และใส่ชื่อต่อท้าย


2. เลือก Table ที่ต้องการ Export
เลือก Source Database
เลือก Destination Database
3. เลือก Use a query to specify the data to transfer.

4. เขียนคำสั่งสำหรับ Query (สามารถไปลองใน SQL ก่อนเพื่อดูความถูกต้องของข้อมูลแล้วค่อย copy มาใส่ก็ได้)
ตัวอย่างคือ เอาข้อมูลที่ไม่มีใน Table2 ไปเทียบกับข้อมูลใน Table1 ใช้ NOT EXISTS

5. เลือก Table destination สามารถกด Preview เพื่อดูข้อมูล หรือกด Transform เพื่อดู File ได้
6. กด Next
7. กด Finish ดูรายระเอียดว่าส่งไปถูกที่หรือไม่
8. ส่งข้อมูลสำเร็จ

10/27/2020

ตัวแปร $S_FinishDate_Edit ยัดเข้า Database

 PHP : การนำวันที่ต่อด้วยเวลาปัจจุบัน และการ Set ค่า NULL เข้าDB
รับ Get หรือ Post มาจาก Form วันที่

  1. list($dd, $mm, $yyyy) = explode("/", $_POST["S_FinishDate_Edit"]);
  2. $S_FinishDate_Edit = "'".$yyyy."-".$mm."-".$dd." ".date("h:i:s")."'";   

ตัวแปร $S_FinishDate_Edit ยัดเข้า Database

การ Set ค่า NULL ให้กับวันที่
ประกาศตัวแปรรับค่า NULL สำคัญต้องใส่ "" ด้วย
  1. $S_FinishDate_Edit = "NULL"


SQL String ไม่ต้องใส่ ' ' หรือ " " ถ้าใส่จะ Error เพราะช่องรับค่า NULL เช่น
  1. $SQL .=" `S_SectionDate`=".$S_SectionDate_Edit.",`S_DoneDate`=".$S_DoneDate_Edit.";


ตัวอย่างใน ข้อเสนอแนะตอนแก้ไข
https://intranet.sci.com/sci/suggestion/qp_start.php?YR=2020

Pi : Pi moition camera notification Line Nofity API

 Pi : Pi moition camera notification Line Nofity API
ติดตั้ง motion
https://intranet.sci.com/blog.php?u=281&b=1667

เพิ่มเติม แก้ Motion ให้ไปเรียกใช้งาน ไฟล์ python ที่สร้างขึ้นเมื่อมีการสร้าง Video

  1. nana /etc/motion/motion.conf

แก้ตรง
on_movie_start python3 /home/pi/line.py


Code pyton ส่ง Line
http://intranet.sci.com/blog.php?u=281&b=1809

Code สำเร็จ
  1. import requests, json
  2. import urllib.parse
  3. import sys
  4.  
  5. import glob
  6. import os
  7. import time
  8.  
  9. LINE_ACCESS_TOKEN = "XXXXXXX"
  10.  
  11. URL_LINE = "https://notify-api.line.me/api/notify"
  12.  
  13. def line_text(message):
  14.     msg = urllib.parse.urlencode({"message":message})
  15.     LINE_HEADERS = {'Content-Type':'application/x-www-form-urlencoded',"Authorization":"Bearer "+LINE_ACCESS_TOKEN}
  16.     session = requests.Session()
  17.     session_post = session.post(URL_LINE, headers=LINE_HEADERS, data=msg)
  18.     print(session_post.text)
  19.  
  20. def line_pic(message, path_file):
  21.     file_img = {'imageFile': open(path_file, 'rb')}
  22.     msg = ({'message': message})
  23.     LINE_HEADERS = {"Authorization":"Bearer "+LINE_ACCESS_TOKEN}
  24.     session = requests.Session()
  25.     session_post = session.post(URL_LINE, headers=LINE_HEADERS, files=file_img, data=msg)
  26.     print(session_post.text)
  27.  
  28. list_of_files = glob.glob('/home/pi/Monitor/*.jpg')
  29. latest_file = max(list_of_files, key=os.path.getctime)
  30. #print(latest_file)
  31. text_send = "Motion Detect OD."
  32. line_pic(text_send, latest_file)
  33.  
  34. #//// Delete All File In Folder Monitor ////#
  35. parth = "/home/pi/Monitor/"
  36. for i in os.listdir ( parth ):
  37.     os.remove(parth+i)

ส่งข้อความเข้า Line Bot ด้วย Sell Script ส่งหา UID ของแต่ละ User ทีละหลาย ๆ User

 ส่งข้อความเข้า Line Bot ด้วย Sell Script ส่งหา UID ของแต่ละ User ทีละหลาย ๆ User
XXX : Token Line Bot
UID = User ID Line
Code

  1. #!/bin/sh
  2. curl -v -X POST https://api.line.me/v2/bot/message/multicast \
  3. -H 'Content-Type: application/json' \
  4. -H 'Authorization: Bearer {XXX}' \
  5. -d '{
  6.     "to": ["UID","UID2","UID2"],
  7.     "messages":[
  8.         {
  9.             "type":"text",
  10.             "text":"Hello, world1"
  11.         },
  12.         {
  13.             "type":"text",
  14.             "text":"Hello, world2"
  15.         }
  16.     ]
  17. }'

Line : Python ส่งรูปเข้า Line API

 Line : Python ส่งรูปเข้า Line API
โปรแกรมที่ต้องใช้ ในเครื่อง rasberry pi
- python 3 ขึ้นไป
- ติดตั้ง

  1. pip install requests

- ติดตั้ง pip
  1. wget "https://bootstrap.pypa.io/get-pip.py"
  2. sudo python get-pip.py


1. เปิดใช้งาน Token ที่ https://notify-bot.line.me/
สามารถทำเป็น User หรือ ทำเป็น Group ก็ได้

*** สำคัญต้องเอา LINE Notify เข้าไปใน Group ด้วย ถึงจะส่งข้อความได้ ***

2. สร้าง Code python line.py
XXXX คือ Token ที่ได้จากข้อ 1.
Code
  1. import requests, json
  2. import urllib.parse
  3. import sys
  4.  
  5. LINE_ACCESS_TOKEN = "XXXX" #Use Token Or Group Token https://notify-bot.line.me/
  6.  
  7. URL_LINE = "https://notify-api.line.me/api/notify"
  8.  
  9. def line_text(message):
  10.     msg = urllib.parse.urlencode({"message":message})
  11.     LINE_HEADERS = {'Content-Type':'application/x-www-form-urlencoded',"Authorization":"Bearer "+LINE_ACCESS_TOKEN}
  12.     session = requests.Session()
  13.     session_post = session.post(URL_LINE, headers=LINE_HEADERS, data=msg)
  14.     print(session_post.text)
  15.  
  16. def line_pic(message, path_file):
  17.     file_img = {'imageFile': open(path_file, 'rb')}
  18.     msg = ({'message': message})
  19.     LINE_HEADERS = {"Authorization":"Bearer "+LINE_ACCESS_TOKEN}
  20.     session = requests.Session()
  21.     session_post = session.post(URL_LINE, headers=LINE_HEADERS, files=file_img, data=msg)
  22.     print(session_post.text)
  23.  
  24. if __name__ == "__main__":
  25.     if len(sys.argv) < 3:
  26.         # <Linux>
  27.         # python line.py "Test"
  28.         line_text(sys.argv[1])
  29.     else:
  30.         # <Linux>
  31.         # python line.py "Test" "/home/pi/test.jpg"
  32.         line_pic(sys.argv[1], sys.argv[2])


3. ทดลองส่งข้อความ
  1. python3 line_group.py "พบการเคลื่อนไหว"

จะมีข้อความแจ้ง
{"status":200,"message":"ok"}

และมีข้อความส่งไป Line

4. ส่งรูปใช้คำสั่ง
  1. python3 line.py "พบการเคลื่อนไหว" "/home/pi/3923-7.jpg"


ส่วนตัว Line Bot จะส่งได้เฉพาะรูปที่ผ่าน Link และต้องเป็น https เมื่อรูปถูกลบหรือเปลี่ยนชื่อ Line จะไม่สามารถแสดงผลรูป
ข้อจำกับ Line notify ส่งได้เดือนละ 1000 ครั้ง
https://notify-bot.line.me/doc/en/

ตัวอย่าง
https://maker.goisgo.net/raspberry-pi-w ... ne-notice/
https://medium.com/@dome.soda125/%E0%B8 ... 8ce98f0bd6
https://medium.com/dolab/blog-7-line-no ... 9724796428
https://engineering.linecorp.com/en/blo ... ad-images/

9/29/2020

Axapta 2009 : Split, Export แบ่งคำด้วย String

 Axapta 2009 : Split, Export แบ่งคำด้วย String

  1. static void Job1(Args _args)
  2. {
  3.     str paramAsStr = "Value 1|Value 2|Value 3";
  4.     container paramAsCon;
  5.     int i;
  6.  
  7.     paramAsCon = str2con(paramAsStr, "|");
  8.    
  9.     for (i=1;i<=conLen(paramAsCon);i++)
  10.     {
  11.         info(conPeek(paramAsCon, i));    
  12.     }
  13. }


ส่วน Version 2012 เป็นต้นมามี Function strSplit
  1. static void Job1(Args _args)
  2. {
  3.     str paramAsStr = "Value 1|Value 2|Value 3";
  4.     List paramAsList;
  5.     ListEnumerator le;
  6.  
  7.     paramAsList = strSplit(paramAsStr, "|");
  8.    
  9.     le = paramAsList.getEnumerator();
  10.     while(le.moveNext())
  11.     {
  12.         info(le.current());    
  13.     }
  14. }

https://www.schweda.net/blog_ax.php?bid=628&wdl=en

Pi : Pi moition camera notification Line Nofity API

 Pi : Pi moition camera notification Line Nofity API
ติดตั้ง motion
https://porpramarn.blogspot.com/2019/02/pi-pi-camera-motion.html

เพิ่มเติม แก้ Motion ให้ไปเรียกใช้งาน ไฟล์ python ที่สร้างขึ้นเมื่อมีการสร้าง Video

  1. nana /etc/motion/motion.conf
แก้ตรง
on_movie_start python3 /home/pi/line.py


Code python ส่ง Line
https://porpramarn.blogspot.com/2020/09/line-python-line-api-notify.html

Code สำเร็จ

  1. import requests, json
  2. import urllib.parse
  3. import sys
  4.  
  5. import glob
  6. import os
  7. import time
  8.  
  9. LINE_ACCESS_TOKEN = "XXXXXXX"
  10.  
  11. URL_LINE = "https://notify-api.line.me/api/notify"
  12.  
  13. def line_text(message):
  14.     msg = urllib.parse.urlencode({"message":message})
  15.     LINE_HEADERS = {'Content-Type':'application/x-www-form-urlencoded',"Authorization":"Bearer "+LINE_ACCESS_TOKEN}
  16.     session = requests.Session()
  17.     session_post = session.post(URL_LINE, headers=LINE_HEADERS, data=msg)
  18.     print(session_post.text)
  19.  
  20. def line_pic(message, path_file):
  21.     file_img = {'imageFile': open(path_file, 'rb')}
  22.     msg = ({'message': message})
  23.     LINE_HEADERS = {"Authorization":"Bearer "+LINE_ACCESS_TOKEN}
  24.     session = requests.Session()
  25.     session_post = session.post(URL_LINE, headers=LINE_HEADERS, files=file_img, data=msg)
  26.     print(session_post.text)
  27.  
  28. list_of_files = glob.glob('/home/pi/Monitor/*.jpg')
  29. latest_file = max(list_of_files, key=os.path.getctime)
  30. #print(latest_file)
  31. text_send = "Motion Detect OD."
  32. line_pic(text_send, latest_file)
  33.  
  34. #//// Delete All File In Folder Monitor ////#
  35. parth = "/home/pi/Monitor/"
  36. for i in os.listdir ( parth ):
  37.     os.remove(parth+i)

Line : Python ส่งรูปเข้า Line API Notify

 Line : Python ส่งรูปเข้า Line API Notify
โปรแกรมที่ต้องใช้ ในเครื่อง rasberry pi
- python 3 ขึ้นไป
- ติดตั้ง

  1. pip install requests

- ติดตั้ง pip
  1. wget "https://bootstrap.pypa.io/get-pip.py"
  2. sudo python get-pip.py


1. เปิดใช้งาน Token ที่ https://notify-bot.line.me/
สามารถทำเป็น User หรือ ทำเป็น Group ก็ได้

2. สร้าง Code python line.py
XXXX คือ Token ที่ได้จากข้อ 1.
Code
  1. import requests, json
  2. import urllib.parse
  3. import sys
  4.  
  5. LINE_ACCESS_TOKEN = "XXXX" #Use Token Or Group Token https://notify-bot.line.me/
  6.  
  7. URL_LINE = "https://notify-api.line.me/api/notify"
  8.  
  9. def line_text(message):
  10.     msg = urllib.parse.urlencode({"message":message})
  11.     LINE_HEADERS = {'Content-Type':'application/x-www-form-urlencoded',"Authorization":"Bearer "+LINE_ACCESS_TOKEN}
  12.     session = requests.Session()
  13.     session_post = session.post(URL_LINE, headers=LINE_HEADERS, data=msg)
  14.     print(session_post.text)
  15.  
  16. def line_pic(message, path_file):
  17.     file_img = {'imageFile': open(path_file, 'rb')}
  18.     msg = ({'message': message})
  19.     LINE_HEADERS = {"Authorization":"Bearer "+LINE_ACCESS_TOKEN}
  20.     session = requests.Session()
  21.     session_post = session.post(URL_LINE, headers=LINE_HEADERS, files=file_img, data=msg)
  22.     print(session_post.text)
  23.  
  24. if __name__ == "__main__":
  25.     if len(sys.argv) < 3:
  26.         # <Linux>
  27.         # python line.py "Test"
  28.         line_text(sys.argv[1])
  29.     else:
  30.         # <Linux>
  31.         # python line.py "Test" "/home/pi/test.jpg"
  32.         line_pic(sys.argv[1], sys.argv[2])


3. ทดลองส่งข้อความ
  1. python3 line_group.py "พบการเคลื่อนไหว"

จะมีข้อความแจ้ง
{"status":200,"message":"ok"}

และมีข้อความส่งไป Line

4. ส่งรูปใช้คำสั่ง
  1. python3 line.py "พบการเคลื่อนไหว" "/home/pi/3923-7.jpg"


ส่วนตัว Line Bot จะส่งได้เฉพาะรูปที่ผ่าน Link และต้องเป็น https เมื่อรูปถูกลบหรือเปลี่ยนชื่อ Line จะไม่สามารถแสดงผลรูป
ข้อจำกับ Line notify ส่งได้เดือนละ 1000 ครั้ง
https://notify-bot.line.me/doc/en/

ตัวอย่าง
https://maker.goisgo.net/raspberry-pi-webcam-cctv-line-notice/
https://medium.com/@dome.soda125/%E0%B8%A1%E0%B8%B2%E0%B8%AA%E0%B8%A3%E0%B9%89%E0%B8%B2%E0%B8%87-line-notification-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-python-%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B9%80%E0%B8%96%E0%B8%AD%E0%B8%B0-ab8ce98f0bd6
https://medium.com/dolab/blog-7-line-notify-with-python-8c9724796428
https://engineering.linecorp.com/en/blog/using-line-notify-to-send-stickers-and-upload-images/

 

8/25/2020

Axapta : การ Adjust มูลค่าของที่ Onhand เป็น 0 สามารถทำได้

 Axapta : การ Adjust มูลค่าของที่ Onhand เป็น 0 สามารถทำได้
แต่ก่อนเข้าใจว่าถ้ายอดเป็น 0 แล้วมีการ Adjust + Recall จะทำให้รายงาน Inventory ไม่มียอด Onhand แต่จะมีมูลค่า

หลังจากได้ทดลองอีกครั้ง พบว่า สามารถทำได้ เช่น 154360121003
1. หายอด Onhand ที่มียอด เป็น 0 เรียกรายงาน Inventory ไม่มียอดและมูลค่า


2. ทำการ Adjust ต้นทุนเข้าไป และเรียกรายงาน Invent จะพบมียอดเงินแต่ไม่มีของตามรูป
3. ทำการ Recalculation พบว่ามูลค่าที่ค้างอยู่หายไป
และต้นทุน Code อื่น ๆ ที่นำ Item นี้ไปใช้ ก่อน Recalculation


หลัง Call ต้นทุนที่นำ Parts ที่ Adjust ไปใช้ก็จะเปลี่ยนไป

สรุปคือ สามารถทำได้ การที่รายงาน Inventory ไม่มีของแต่มีมูลค่าอาจจะมาจากสาเหตุอื่น

8/19/2020

การ Update Firmware ของเครื่อง Ubiquiti loco m5 (กรณีเครื่องสามารถออก Internet ได้)

 การ Update Firmware ของเครื่อง Ubiquiti loco m5 (กรณีเครื่องสามารถออก Internet ได้)
ให้ทำเครื่อง Station ก่อน แล้วค่อยทำเครื่อง AP เพราะจะหลุดเพื่อเข้าไม่ได้
1. เข้า Menu SYSTEM ดู Version เก่า แล้วกด Check Now


2. ที่มุมขวาล่างถ้ามี Version ใหม่จะมีขึ้นมาให้กด Update

ถ้าเป็น Version ล่าสุดแล้วจะขึ้นเป็น Last Version

 
3. รอจนกว่าจะ Download เสร็จใช้เวลาไม่นาน



4. กด agree


5. กด Update อีกครั้ง

6. รอจนกว่าจะเสร็จระหว่างนั้นห้ามปิดเครื่อง

7. รอจนกว่าจะเสร็จแล้วเครื่องจะ Reboot

8. เมื่อเสร็จ Login อีกครั้ง ตัว Version ก็จะเปลี่ยนไป

8/04/2020

Axapta : Axapta Sales Order Invoice ไปแล้วถูกลบ Line Status จะเปลี่ยนจาก Invoice เป็น Open

Axapta : Axapta Sales Order Invoice ไปแล้วถูกลบ Line Status จะเปลี่ยนจาก Invoice เป็น Open
เช่น SO20-221 ฝบง. Post Invoice ไปแล้ว แต่มีการลบและแก้ไข Line ใหม่ ทำให้ Status ของ Sales Order เปลี่ยน แต่ Transaction เกิดไปแล้ว
ใช้วิธี Reinsert จาก Database Logs ไม่ได้ Error Lot ID is not specified.


วิธีแก้
1. ให้ งสข. ใส่ Item ที่ลบไปและข้อมูลใน Line เหมือนเดิม
2. ลอกข้อมูลจาก Database จาก Local ที่จะต้องแก้มี
SalesLine, SalesTable แก้ข้อมูลเหมือนเหมือนกับ Local (จด InventTransID ไว้ด้วยสำหรับไปลบ Transaction ออก)
3. ลบ ข้อมูลใน Table Inventtrans ออก ใช้ TransId จากข้อ 2.
4. Run Job recalcInventSum เพื่อให้ Update Onhand จำนวนจะได้ถูกต้อง

7/15/2020

FreeNas : FreeNas SMB Ldap Login Shared Samba

FreeNas : FreeNas SMB Ldap Login Shared Samba
ตั้งค่า
1. Storage --> Pool สร้าง HOME
2. Directory Services ตั้งค่า AD
2.1. Active Directory
2.2. LDAP

2.3. Kerberos Realms


3. Sharing --> Windows Shares (SMB) ตั้งค่า Folder Shared จาก Home ที่สร้างไว้ในข้อ 1


4. Services --> SMB Stop แล้ว Start ใหม่