Axapta กู้คืนข้อมูลบางส่วนย้อนหลัง เช่น 30/11/2023 ปิด Inventory
แล้วข้อมูลมีปัญหา ต้องเอาข้อมูลย้อนหลัง 1 อาทิตย์ มากู้
แล้วทำการคีย์เอกสารใหม่
โดยใช้วิธีดึงข้อมูลจาก Database ที่ต้องการมาใส่ Database ก้อนที่ใช้อยู่ปัจจุบัน ทำใน Local ก่อนแล้วค่อยดึงข้ามเครื่องทำในของจริง
เช่น Database AC_Local คือข้อมูลที่ต้องการเอา , Suwit_Local คือข้อมูลที่ใช้ปัจจุบัน
โดยฐานข้อมูลที่ใช้จะมี 2 ตัว
A. Database ที่จะนำจะเอาข้อมูล
AC_Local คือข้อมูลที่ใช้งาน ถึงวันที่ 11/12/2023 เป็นข้อมูลที่
Inventory ไม่ถูกต้อง
แต่ต้องการนำข้อมูลบางส่วนมาใช้เพื่อไม่ต้องคีย์เอกสารใหม่ทั้งหมด
B. Database จริง Suwit_Local คือข้อมูลวันที่ 1/12/2023 สั่งปิด Inventory ใหม่ ให้ข้อมูลถูกต้อง พร้อมที่จะดึงข้อมูลมาใส่เพิ่ม
***** สำคัญ ******A. จะให้ดีควรหยุดสร้างเอกสาร หยุด Post ทุกอย่างก่อน เลขที่ และ RecId จะได้ไม่ซ้ำ
B. แต่ถ้าจะมีการคีย์เอกสารเพิ่มเติม ต้องไปเปลี่ยน Number sequence เพื่อให้เลขที่สร้างมาใหม่ไม่ซ้ำกับเลขเดิม
เช่น เลขที่เอกสาร Movemenet, Transfer , PO, PD
IV_03 : Inventory jouranal number
PO_01 : Purchase order
PD_PD : Production order number
โดยดูข้อมูลจาก Database AC_Local ว่าเลขที่ของแต่ละเอกสาร Run ถึงไหนแล้ว + เพิ่มนิดหน่อย เพื่อไม่ให้เลขซ้ำกัน
C. แต่ถ้าทำไปแล้วต้องกรองเอกสารที่เลขที่ซ้ำออกไม่ต้องนำเข้าเพราะจะ Error แล้วให้คีย์เพิ่มเอง
เช่น เอกสาร Movement, Transfer มีการคีย์ Run ไปก่อนจึงต้องกรองออกใน Code
วิธี Import Data โดยใช้ SQL Server Enterprise Managerข้อมูลที่ต้องนำคืน คือช่วงวันที่
'2023-12-02 00:00:00'
'2023-12-11 00:00:00'
โดย
1. คลิ๊กขวาที่ ฐานข้อมูลปัจจุบัน เลือก All Tasks --> Import Data กด Next
2. เลือก Source ใส่ user : password กด Next
3. เลือก Destination
4. เลือกรูปแบบที่ต้องการใช้งาน
จะใช้ 2 ข้อนี้
หัวข้อที่ 1
Copy table : สำหรับ Copy Table ทั้งหมดและ ข้อมูลไปอีก Table ใหม่ Table ที่จะรับข้อมูลต้องไม่มีข้อมูลหรือว่าง
หัวข้อที่ 2
Use a query : สำหรับใช้ query กรองข้อมูลบางส่วนที่เราต้องการ ไม่ได้เอาไปทั้งหมด
5. จะใช้ Query Builder หรือ เขียนคำสั่ง SQL ก็ได้แล้วใช้ปุ่ม Parse เพื่อเช็คความถูกต้อง กด Next
6. เลือก Table ที่ต้องการเก็บข้อมูล เช่น InventTable,
PurchTable หรือ Table อื่น ๆ ตามที่ต้องการ กดปุ่ม Preview
เพื่อดูข้อมูลบางส่วน ว่าถูกหรือไม่ แล้วกด Next
8. ดูข้อมูลว่าถูกต้องตามที่เราต้องการหรือไม่ เลือกจาก Database ไหน ไป ไหน Table อะไร แล้วกด Finish
ดูข้อมูลถ้าผ่านจะแสดงจำนวนที่นำเข้าข้อมูลได้
แต่ถ้า Error ต้องตรวจสอบว่า Error อะไรเช่น Key ซ้ำ หรือสาเหตุอื่น ๆ
ข้อมูลที่จะนำเข้า
A. Item : InventTable เอาเข้าเฉพาะ Item ส่วน Bom ให้ ฝอบ. คีย์เพิ่มเติม
ต้องเอาเข้า 3 Table
InventTable, InventTableModule, InventItemLocation
ทำตามข้อ 1 - 6
ข้อ 4 ใช้วิธี Query
RECID นำมาจากข้อมูลที่มีใน Database จริง เทียบกับ Database ที่จะเอาข้อมูล ใช้ RecId เพราะไม่มี Field CreateDate
Code Query Prodtable
- SELECT [INVENTTABLE].[ITEMGROUPID], [INVENTTABLE].[ITEMID], [INVENTTABLE].[ITEMNAME], [INVENTTABLE].[ITEMTYPE], [INVENTTABLE].[PURCHMODEL], [INVENTTABLE].[HEIGHT], [INVENTTABLE].[WIDTH], [INVENTTABLE].[SALESMODEL], [INVENTTABLE].[COSTGROUPID], [INVENTTABLE].[REQGROUPID], [INVENTTABLE].[PRIMARYVENDORID], [INVENTTABLE].[NETWEIGHT], [INVENTTABLE].[DEPTH], [INVENTTABLE].[UNITVOLUME], [INVENTTABLE].[BOMUNITID], [INVENTTABLE].[DENSITY], [INVENTTABLE].[DEL_SCRAPTYPEID], [INVENTTABLE].[DIMENSION], [INVENTTABLE].[DIMENSION2_], [INVENTTABLE].[DIMENSION3_], [INVENTTABLE].[COSTMODEL], [INVENTTABLE].[USEALTITEMID], [INVENTTABLE].[ALTITEMID], [INVENTTABLE].[INTRACODE], [INVENTTABLE].[BOMMANUALCONSUMP], [INVENTTABLE].[BOMMANUALRECEIPT], [INVENTTABLE].[STOPEXPLODE], [INVENTTABLE].[DEL_COVPERINVENTLOCATION], [INVENTTABLE].[PHANTOM], [INVENTTABLE].[INTRAUNIT], [INVENTTABLE].[BOMLEVEL], [INVENTTABLE].[BATCHNUMGROUPID], [INVENTTABLE].[AUTOREPORTFINISHED], [INVENTTABLE].[ORIGCOUNTRYID], [INVENTTABLE].[STATISTICSFACTOR], [INVENTTABLE].[ALTCONFIGID], [INVENTTABLE].[STANDARDCONFIGID], [INVENTTABLE].[DEL_CONFIGACTIVE], [INVENTTABLE].[PRODPOOLID], [INVENTTABLE].[PROPERTYID], [INVENTTABLE].[ABCTIEUP], [INVENTTABLE].[ABCREVENUE], [INVENTTABLE].[ABCVALUE], [INVENTTABLE].[ABCCONTRIBUTIONMARGIN], [INVENTTABLE].[COMMISSIONGROUPID], [INVENTTABLE].[DEL_BARCODE], [INVENTTABLE].[DEL_BARCODETYPE], [INVENTTABLE].[CONFIGURABLE], [INVENTTABLE].[SALESPERCENTMARKUP], [INVENTTABLE].[SALESCONTRIBUTIONRATIO], [INVENTTABLE].[SALESPRICEMODELBASIC], [INVENTTABLE].[MINAVERAGESETTLE], [INVENTTABLE].[NAMEALIAS], [INVENTTABLE].[PRODGROUPID], [INVENTTABLE].[GROSSDEPTH], [INVENTTABLE].[GROSSWIDTH], [INVENTTABLE].[GROSSHEIGHT], [INVENTTABLE].[SORTCODE], [INVENTTABLE].[CONFIGSIMILAR], [INVENTTABLE].[SERIALNUMGROUPID], [INVENTTABLE].[DIMGROUPID], [INVENTTABLE].[MODELGROUPID], [INVENTTABLE].[ITEMBUYERGROUPID], [INVENTTABLE].[TAXPACKAGINGQTY], [INVENTTABLE].[DEL_TEMPLATE], [INVENTTABLE].[ORIGSTATEID], [INVENTTABLE].[STOPEXPLODEPRICE], [INVENTTABLE].[TARAWEIGHT], [INVENTTABLE].[PACKAGINGGROUPID], [INVENTTABLE].[SCRAPVAR], [INVENTTABLE].[SCRAPCONST], [INVENTTABLE].[STANDARDINVENTCOLORID], [INVENTTABLE].[STANDARDINVENTSIZEID], [INVENTTABLE].[ITEMDIMCOMBINATIONAUTOCREATE], [INVENTTABLE].[ITEMDIMCOSTPRICE], [INVENTTABLE].[ALTINVENTSIZEID], [INVENTTABLE].[ALTINVENTCOLORID], [INVENTTABLE].[INVENTADJUSTNO], [INVENTTABLE].[BODYMARK], [INVENTTABLE].[SALESID], [INVENTTABLE].[ITEMESTWEIGHT], [INVENTTABLE].[SALESITEMTYPE], [INVENTTABLE].[SALESITEMSIZE], [INVENTTABLE].[CASTMETHOD], [INVENTTABLE].[INVENTPOSITIONID], [INVENTTABLE].[SANDPROCESS], [INVENTTABLE].[CORETYPE], [INVENTTABLE].[DEPOSITNOYES], [INVENTTABLE].[PAINTING], [INVENTTABLE].[PTMATERIAL], [INVENTTABLE].[PTLIFETIME], [INVENTTABLE].[PTPIECE], [INVENTTABLE].[PTRECORD], [INVENTTABLE].[HASDRAWING], [INVENTTABLE].[USEREDITDRW], [INVENTTABLE].[LASTDATEEDITDRW], [INVENTTABLE].[STANDARDID], [INVENTTABLE].[MAXPO], [INVENTTABLE].[REMARKITEMONHAND], [INVENTTABLE].[DATELASTWEIGHT], [INVENTTABLE].[WEIGHTLAST], [INVENTTABLE].[ITEMCORE], [INVENTTABLE].[MATERIALGROUPID], [INVENTTABLE].[ASTRAITEMTYPE], [INVENTTABLE].[DRWNO], [INVENTTABLE].[PURCHWEIGHT], [INVENTTABLE].[INVENTADJUSTDATE], [INVENTTABLE].[INVENTCOUNTDATE], [INVENTTABLE].[FILENO], [INVENTTABLE].[DATAAREAID], [INVENTTABLE].[RECID]
- FROM [INVENTTABLE]
- WHERE [INVENTTABLE].[RECID]>180919242
- ORDER BY [INVENTTABLE].[ITEMGROUPID], [INVENTTABLE].[ITEMID], [INVENTTABLE].[ITEMNAME], [INVENTTABLE].[ITEMTYPE], [INVENTTABLE].[PURCHMODEL], [INVENTTABLE].[HEIGHT], [INVENTTABLE].[WIDTH], [INVENTTABLE].[SALESMODEL], [INVENTTABLE].[COSTGROUPID], [INVENTTABLE].[REQGROUPID], [INVENTTABLE].[PRIMARYVENDORID], [INVENTTABLE].[NETWEIGHT], [INVENTTABLE].[DEPTH], [INVENTTABLE].[UNITVOLUME], [INVENTTABLE].[BOMUNITID], [INVENTTABLE].[DENSITY], [INVENTTABLE].[DEL_SCRAPTYPEID], [INVENTTABLE].[DIMENSION], [INVENTTABLE].[DIMENSION2_], [INVENTTABLE].[DIMENSION3_], [INVENTTABLE].[COSTMODEL], [INVENTTABLE].[USEALTITEMID], [INVENTTABLE].[ALTITEMID], [INVENTTABLE].[INTRACODE], [INVENTTABLE].[BOMMANUALCONSUMP], [INVENTTABLE].[BOMMANUALRECEIPT], [INVENTTABLE].[STOPEXPLODE], [INVENTTABLE].[DEL_COVPERINVENTLOCATION], [INVENTTABLE].[PHANTOM], [INVENTTABLE].[INTRAUNIT], [INVENTTABLE].[BOMLEVEL], [INVENTTABLE].[BATCHNUMGROUPID], [INVENTTABLE].[AUTOREPORTFINISHED], [INVENTTABLE].[ORIGCOUNTRYID], [INVENTTABLE].[STATISTICSFACTOR], [INVENTTABLE].[ALTCONFIGID], [INVENTTABLE].[STANDARDCONFIGID], [INVENTTABLE].[DEL_CONFIGACTIVE], [INVENTTABLE].[PRODPOOLID], [INVENTTABLE].[PROPERTYID], [INVENTTABLE].[ABCTIEUP], [INVENTTABLE].[ABCREVENUE], [INVENTTABLE].[ABCVALUE], [INVENTTABLE].[ABCCONTRIBUTIONMARGIN], [INVENTTABLE].[COMMISSIONGROUPID], [INVENTTABLE].[DEL_BARCODE], [INVENTTABLE].[DEL_BARCODETYPE], [INVENTTABLE].[CONFIGURABLE], [INVENTTABLE].[SALESPERCENTMARKUP], [INVENTTABLE].[SALESCONTRIBUTIONRATIO], [INVENTTABLE].[SALESPRICEMODELBASIC], [INVENTTABLE].[MINAVERAGESETTLE], [INVENTTABLE].[NAMEALIAS], [INVENTTABLE].[PRODGROUPID], [INVENTTABLE].[GROSSDEPTH], [INVENTTABLE].[GROSSWIDTH], [INVENTTABLE].[GROSSHEIGHT], [INVENTTABLE].[SORTCODE], [INVENTTABLE].[CONFIGSIMILAR], [INVENTTABLE].[SERIALNUMGROUPID], [INVENTTABLE].[DIMGROUPID], [INVENTTABLE].[MODELGROUPID], [INVENTTABLE].[ITEMBUYERGROUPID], [INVENTTABLE].[TAXPACKAGINGQTY], [INVENTTABLE].[DEL_TEMPLATE], [INVENTTABLE].[ORIGSTATEID], [INVENTTABLE].[STOPEXPLODEPRICE], [INVENTTABLE].[TARAWEIGHT], [INVENTTABLE].[PACKAGINGGROUPID], [INVENTTABLE].[SCRAPVAR], [INVENTTABLE].[SCRAPCONST], [INVENTTABLE].[STANDARDINVENTCOLORID], [INVENTTABLE].[STANDARDINVENTSIZEID], [INVENTTABLE].[ITEMDIMCOMBINATIONAUTOCREATE], [INVENTTABLE].[ITEMDIMCOSTPRICE], [INVENTTABLE].[ALTINVENTSIZEID], [INVENTTABLE].[ALTINVENTCOLORID], [INVENTTABLE].[INVENTADJUSTNO], [INVENTTABLE].[BODYMARK], [INVENTTABLE].[SALESID], [INVENTTABLE].[ITEMESTWEIGHT], [INVENTTABLE].[SALESITEMTYPE], [INVENTTABLE].[SALESITEMSIZE], [INVENTTABLE].[CASTMETHOD], [INVENTTABLE].[INVENTPOSITIONID], [INVENTTABLE].[SANDPROCESS], [INVENTTABLE].[CORETYPE], [INVENTTABLE].[DEPOSITNOYES], [INVENTTABLE].[PAINTING], [INVENTTABLE].[PTMATERIAL], [INVENTTABLE].[PTLIFETIME], [INVENTTABLE].[PTPIECE], [INVENTTABLE].[PTRECORD], [INVENTTABLE].[HASDRAWING], [INVENTTABLE].[USEREDITDRW], [INVENTTABLE].[LASTDATEEDITDRW], [INVENTTABLE].[STANDARDID], [INVENTTABLE].[MAXPO], [INVENTTABLE].[REMARKITEMONHAND], [INVENTTABLE].[DATELASTWEIGHT], [INVENTTABLE].[WEIGHTLAST], [INVENTTABLE].[ITEMCORE], [INVENTTABLE].[MATERIALGROUPID], [INVENTTABLE].[ASTRAITEMTYPE], [INVENTTABLE].[DRWNO], [INVENTTABLE].[PURCHWEIGHT], [INVENTTABLE].[INVENTADJUSTDATE], [INVENTTABLE].[INVENTCOUNTDATE], [INVENTTABLE].[FILENO], [INVENTTABLE].[DATAAREAID], [INVENTTABLE].[RECID]
Code Query InventTableModule- SELECT [INVENTTABLEMODULE].[ITEMID], [INVENTTABLEMODULE].[MODULETYPE], [INVENTTABLEMODULE].[UNITID], [INVENTTABLEMODULE].[PRICE], [INVENTTABLEMODULE].[PRICEUNIT], [INVENTTABLEMODULE].[MARKUP], [INVENTTABLEMODULE].[LINEDISC], [INVENTTABLEMODULE].[MULTILINEDISC], [INVENTTABLEMODULE].[ENDDISC], [INVENTTABLEMODULE].[QUANTITY], [INVENTTABLEMODULE].[LOWESTQTY], [INVENTTABLEMODULE].[HIGHESTQTY], [INVENTTABLEMODULE].[TAXITEMGROUPID], [INVENTTABLEMODULE].[BLOCKED], [INVENTTABLEMODULE].[DELIVERYTIME], [INVENTTABLEMODULE].[INVENTLOCATIONID], [INVENTTABLEMODULE].[MANDATORYINVENTLOCATION], [INVENTTABLEMODULE].[STANDARDQTY], [INVENTTABLEMODULE].[MARKUPGROUPID], [INVENTTABLEMODULE].[PRICEDATE], [INVENTTABLEMODULE].[PRICEQTY], [INVENTTABLEMODULE].[ALLOCATEMARKUP], [INVENTTABLEMODULE].[OVERDELIVERYPCT], [INVENTTABLEMODULE].[UNDERDELIVERYPCT], [INVENTTABLEMODULE].[SUPPITEMGROUPID], [INVENTTABLEMODULE].[CALENDARDAYS], [INVENTTABLEMODULE].[PRICEKGS], [INVENTTABLEMODULE].[WMSLOCATIONID], [INVENTTABLEMODULE].[DATAAREAID], [INVENTTABLEMODULE].[RECID], [INVENTTABLEMODULE].[MINORDERDATE]
- FROM [INVENTTABLEMODULE]
- WHERE [INVENTTABLEMODULE].[RECID]>180919239
- ORDER BY [INVENTTABLEMODULE].[ITEMID], [INVENTTABLEMODULE].[MODULETYPE], [INVENTTABLEMODULE].[UNITID], [INVENTTABLEMODULE].[PRICE], [INVENTTABLEMODULE].[PRICEUNIT], [INVENTTABLEMODULE].[MARKUP], [INVENTTABLEMODULE].[LINEDISC], [INVENTTABLEMODULE].[MULTILINEDISC], [INVENTTABLEMODULE].[ENDDISC], [INVENTTABLEMODULE].[QUANTITY], [INVENTTABLEMODULE].[LOWESTQTY], [INVENTTABLEMODULE].[HIGHESTQTY], [INVENTTABLEMODULE].[TAXITEMGROUPID], [INVENTTABLEMODULE].[BLOCKED], [INVENTTABLEMODULE].[DELIVERYTIME], [INVENTTABLEMODULE].[INVENTLOCATIONID], [INVENTTABLEMODULE].[MANDATORYINVENTLOCATION], [INVENTTABLEMODULE].[STANDARDQTY], [INVENTTABLEMODULE].[MARKUPGROUPID], [INVENTTABLEMODULE].[PRICEDATE], [INVENTTABLEMODULE].[PRICEQTY], [INVENTTABLEMODULE].[ALLOCATEMARKUP], [INVENTTABLEMODULE].[OVERDELIVERYPCT], [INVENTTABLEMODULE].[UNDERDELIVERYPCT], [INVENTTABLEMODULE].[SUPPITEMGROUPID], [INVENTTABLEMODULE].[CALENDARDAYS], [INVENTTABLEMODULE].[PRICEKGS], [INVENTTABLEMODULE].[WMSLOCATIONID], [INVENTTABLEMODULE].[DATAAREAID], [INVENTTABLEMODULE].[RECID], [INVENTTABLEMODULE].[MINORDERDATE]
-
Code Query InventItemLocation- SELECT [INVENTITEMLOCATION].[ITEMID], [INVENTITEMLOCATION].[DEL_CONFIGID], [INVENTITEMLOCATION].[DEL_INVENTLOCATIONID], [INVENTITEMLOCATION].[DEL_COVRULE], [INVENTITEMLOCATION].[DEL_COVPERIOD], [INVENTITEMLOCATION].[DEL_MININVENTONHAND], [INVENTITEMLOCATION].[DEL_MAXINVENTONHAND], [INVENTITEMLOCATION].[COUNTGROUPID], [INVENTITEMLOCATION].[DEL_DELIVERYTIME], [INVENTITEMLOCATION].[WMSPICKINGLOCATION], [INVENTITEMLOCATION].[COUNTINGSTARTED], [INVENTITEMLOCATION].[COUNTINGJOURNALID], [INVENTITEMLOCATION].[WMSLOCATIONIDDEFAULTISSUE], [INVENTITEMLOCATION].[WMSLOCATIONIDDEFAULTRECEIPT], [INVENTITEMLOCATION].[INVENTDIMID], [INVENTITEMLOCATION].[DATAAREAID], [INVENTITEMLOCATION].[RECID]
- FROM [INVENTITEMLOCATION]
- WHERE [INVENTITEMLOCATION].[RECID]>180919241
- ORDER BY [INVENTITEMLOCATION].[ITEMID], [INVENTITEMLOCATION].[DEL_CONFIGID], [INVENTITEMLOCATION].[DEL_INVENTLOCATIONID], [INVENTITEMLOCATION].[DEL_COVRULE], [INVENTITEMLOCATION].[DEL_COVPERIOD], [INVENTITEMLOCATION].[DEL_MININVENTONHAND], [INVENTITEMLOCATION].[DEL_MAXINVENTONHAND], [INVENTITEMLOCATION].[COUNTGROUPID], [INVENTITEMLOCATION].[DEL_DELIVERYTIME], [INVENTITEMLOCATION].[WMSPICKINGLOCATION], [INVENTITEMLOCATION].[COUNTINGSTARTED], [INVENTITEMLOCATION].[COUNTINGJOURNALID], [INVENTITEMLOCATION].[WMSLOCATIONIDDEFAULTISSUE], [INVENTITEMLOCATION].[WMSLOCATIONIDDEFAULTRECEIPT], [INVENTITEMLOCATION].[INVENTDIMID], [INVENTITEMLOCATION].[DATAAREAID], [INVENTITEMLOCATION].[RECID]
-
2. PO : PurchTable เอาเข้าเฉพาะ เลขที่ PO ส่วน รายการ Purchline ให้ ฝจห. คีย์เพิ่มเติม
ทำตามข้อ 1 - 6
ข้อ 4 ใช้วิธี Query ใช้ CreateDate เป็นตัวกรอกข้อมูล
Code Query- SELECT [PURCHTABLE].[PURCHID], [PURCHTABLE].[PURCHNAME], [PURCHTABLE].[ORDERACCOUNT], [PURCHTABLE].[INVOICEACCOUNT], [PURCHTABLE].[FREIGHTZONE], [PURCHTABLE].[EMAIL], [PURCHTABLE].[DELIVERYDATE], [PURCHTABLE].[DELIVERYTYPE], [PURCHTABLE].[CURRENCYCODE], [PURCHTABLE].[PAYMENT], [PURCHTABLE].[CASHDISC], [PURCHTABLE].[PURCHPLACER], [PURCHTABLE].[VENDGROUP], [PURCHTABLE].[LINEDISC], [PURCHTABLE].[DISCPERCENT], [PURCHTABLE].[DIMENSION], [PURCHTABLE].[DIMENSION2_], [PURCHTABLE].[DIMENSION3_], [PURCHTABLE].[PRICEGROUPID], [PURCHTABLE].[MULTILINEDISC], [PURCHTABLE].[ENDDISC], [PURCHTABLE].[DELIVERYADDRESS], [PURCHTABLE].[TAXGROUP], [PURCHTABLE].[DLVTERM], [PURCHTABLE].[DLVMODE], [PURCHTABLE].[PURCHSTATUS], [PURCHTABLE].[MARKUPGROUP], [PURCHTABLE].[PURCHASETYPE], [PURCHTABLE].[URL], [PURCHTABLE].[POSTINGPROFILE], [PURCHTABLE].[TRANSACTIONCODE], [PURCHTABLE].[DELIVERYZIPCODE], [PURCHTABLE].[DLVCOUNTY], [PURCHTABLE].[DLVCOUNTRY], [PURCHTABLE].[DLVSTATE], [PURCHTABLE].[SETTLEVOUCHER], [PURCHTABLE].[DELIVERYNAME], [PURCHTABLE].[COVSTATUS], [PURCHTABLE].[PAYMENTSCHED], [PURCHTABLE].[ONETIMEVENDOR], [PURCHTABLE].[RETURNITEMNUM], [PURCHTABLE].[FREIGHTSLIPTYPE], [PURCHTABLE].[DOCUMENTSTATUS], [PURCHTABLE].[CONTACTPERSONID], [PURCHTABLE].[DEL_SUMINVOICEID], [PURCHTABLE].[DEL_SUMPACKINGSLIPID], [PURCHTABLE].[DEL_SUMPURCHASEORDERID], [PURCHTABLE].[INVENTLOCATIONID], [PURCHTABLE].[DEL_SUMRECEIPTSLISTID], [PURCHTABLE].[ITEMBUYERGROUPID], [PURCHTABLE].[PURCHPOOLID], [PURCHTABLE].[VATNUM], [PURCHTABLE].[PORT], [PURCHTABLE].[DEL_PURCHASEORDERORIGINALS], [PURCHTABLE].[DEL_PURCHASEORDERCOPIES], [PURCHTABLE].[INCLTAX], [PURCHTABLE].[NUMBERSEQUENCEGROUP], [PURCHTABLE].[LANGUAGEID], [PURCHTABLE].[AUTOSUMMARYMODULETYPE], [PURCHTABLE].[TRANSPORT], [PURCHTABLE].[PRINTMODULETYPE], [PURCHTABLE].[PAYMMODE], [PURCHTABLE].[PAYMSPEC], [PURCHTABLE].[FIXEDDUEDATE], [PURCHTABLE].[DELIVERYCITY], [PURCHTABLE].[DELIVERYSTREET], [PURCHTABLE].[STATPROCID], [PURCHTABLE].[REFDLVZIPCODE], [PURCHTABLE].[VENDORREF], [PURCHTABLE].[REMARKPO], [PURCHTABLE].[REMARKPLAN], [PURCHTABLE].[PAYMENTALL_DATE], [PURCHTABLE].[PAYMENTFIRST_DATE], [PURCHTABLE].[ETD_DATE], [PURCHTABLE].[CIFCOST], [PURCHTABLE].[COURIER], [PURCHTABLE].[CREATEDDATE], [PURCHTABLE].[DATAAREAID], [PURCHTABLE].[RECID]
- FROM [PURCHTABLE]
- WHERE [PURCHTABLE].[CREATEDDATE]>='2023-12-02' AND
- [PURCHTABLE].[CREATEDDATE]<='2023-12-11'
- ORDER BY [PURCHTABLE].[PURCHID], [PURCHTABLE].[PURCHNAME], [PURCHTABLE].[ORDERACCOUNT], [PURCHTABLE].[INVOICEACCOUNT], [PURCHTABLE].[FREIGHTZONE], [PURCHTABLE].[EMAIL], [PURCHTABLE].[DELIVERYDATE], [PURCHTABLE].[DELIVERYTYPE], [PURCHTABLE].[CURRENCYCODE], [PURCHTABLE].[PAYMENT], [PURCHTABLE].[CASHDISC], [PURCHTABLE].[PURCHPLACER], [PURCHTABLE].[VENDGROUP], [PURCHTABLE].[LINEDISC], [PURCHTABLE].[DISCPERCENT], [PURCHTABLE].[DIMENSION], [PURCHTABLE].[DIMENSION2_], [PURCHTABLE].[DIMENSION3_], [PURCHTABLE].[PRICEGROUPID], [PURCHTABLE].[MULTILINEDISC], [PURCHTABLE].[ENDDISC], [PURCHTABLE].[DELIVERYADDRESS], [PURCHTABLE].[TAXGROUP], [PURCHTABLE].[DLVTERM], [PURCHTABLE].[DLVMODE], [PURCHTABLE].[PURCHSTATUS], [PURCHTABLE].[MARKUPGROUP], [PURCHTABLE].[PURCHASETYPE], [PURCHTABLE].[URL], [PURCHTABLE].[POSTINGPROFILE], [PURCHTABLE].[TRANSACTIONCODE], [PURCHTABLE].[DELIVERYZIPCODE], [PURCHTABLE].[DLVCOUNTY], [PURCHTABLE].[DLVCOUNTRY], [PURCHTABLE].[DLVSTATE], [PURCHTABLE].[SETTLEVOUCHER], [PURCHTABLE].[DELIVERYNAME], [PURCHTABLE].[COVSTATUS], [PURCHTABLE].[PAYMENTSCHED], [PURCHTABLE].[ONETIMEVENDOR], [PURCHTABLE].[RETURNITEMNUM], [PURCHTABLE].[FREIGHTSLIPTYPE], [PURCHTABLE].[DOCUMENTSTATUS], [PURCHTABLE].[CONTACTPERSONID], [PURCHTABLE].[DEL_SUMINVOICEID], [PURCHTABLE].[DEL_SUMPACKINGSLIPID], [PURCHTABLE].[DEL_SUMPURCHASEORDERID], [PURCHTABLE].[INVENTLOCATIONID], [PURCHTABLE].[DEL_SUMRECEIPTSLISTID], [PURCHTABLE].[ITEMBUYERGROUPID], [PURCHTABLE].[PURCHPOOLID], [PURCHTABLE].[VATNUM], [PURCHTABLE].[PORT], [PURCHTABLE].[DEL_PURCHASEORDERORIGINALS], [PURCHTABLE].[DEL_PURCHASEORDERCOPIES], [PURCHTABLE].[INCLTAX], [PURCHTABLE].[NUMBERSEQUENCEGROUP], [PURCHTABLE].[LANGUAGEID], [PURCHTABLE].[AUTOSUMMARYMODULETYPE], [PURCHTABLE].[TRANSPORT], [PURCHTABLE].[PRINTMODULETYPE], [PURCHTABLE].[PAYMMODE], [PURCHTABLE].[PAYMSPEC], [PURCHTABLE].[FIXEDDUEDATE], [PURCHTABLE].[DELIVERYCITY], [PURCHTABLE].[DELIVERYSTREET], [PURCHTABLE].[STATPROCID], [PURCHTABLE].[REFDLVZIPCODE], [PURCHTABLE].[VENDORREF], [PURCHTABLE].[REMARKPO], [PURCHTABLE].[REMARKPLAN], [PURCHTABLE].[PAYMENTALL_DATE], [PURCHTABLE].[PAYMENTFIRST_DATE], [PURCHTABLE].[ETD_DATE], [PURCHTABLE].[CIFCOST], [PURCHTABLE].[COURIER], [PURCHTABLE].[CREATEDDATE], [PURCHTABLE].[DATAAREAID], [PURCHTABLE].[RECID]
3. PD : ProdTable จะใช้วิธีผ่าน Code เพื่อให้เกิด ProdBom และเกิด InventTrans ผ่านการ Insert Status จะเป็น Create ทั้งหมดโดย
*** สำคัญต้องรอ ฝอบ. สร้าง BOM และ Active BOM ให้เรียบร้อยก่อน จึงค่อยสร้าง ProdTable เพราะจะไม่เกิด ProdBom ***
3.1. ทำไฟล์ .CSV PD ที่จะนำเข้า โดยกรองข้อมูลเอาจากช่อง CreateDate ข้อมูลที่จะใช้ PordId,Qty
- Selection_127.png (19.55 KB) Viewed 30 times
Code Query หรือจะไป Fielter จาก Table ProdTable ก็ได้
- PRODTABLE
- SELECT [PRODTABLE].[ITEMID], [PRODTABLE].[NAME], [PRODTABLE].[PRODGROUPID], [PRODTABLE].[PRODSTATUS], [PRODTABLE].[PRODPRIO], [PRODTABLE].[PRODLOCKED], [PRODTABLE].[PRODTYPE], [PRODTABLE].[SCHEDSTATUS], [PRODTABLE].[SCHEDDATE], [PRODTABLE].[QTYSCHED], [PRODTABLE].[QTYSTUP], [PRODTABLE].[DLVDATE], [PRODTABLE].[STUPDATE], [PRODTABLE].[FINISHEDDATE], [PRODTABLE].[SCHEDSTART], [PRODTABLE].[SCHEDEND], [PRODTABLE].[HEIGHT], [PRODTABLE].[WIDTH], [PRODTABLE].[DEPTH], [PRODTABLE].[DENSITY], [PRODTABLE].[QTYCALC], [PRODTABLE].[REALDATE], [PRODTABLE].[RESERVATION], [PRODTABLE].[PRODPOSTINGTYPE], [PRODTABLE].[INVENTTRANSID], [PRODTABLE].[DIMENSION], [PRODTABLE].[DIMENSION2_], [PRODTABLE].[DIMENSION3_], [PRODTABLE].[INVENTREFTYPE], [PRODTABLE].[INVENTREFID], [PRODTABLE].[INVENTREFTRANSID], [PRODTABLE].[COLLECTREFLEVEL], [PRODTABLE].[COLLECTREFPRODID], [PRODTABLE].[BOMDATE], [PRODTABLE].[BACKORDERSTATUS], [PRODTABLE].[PRODPOOLID], [PRODTABLE].[PROFITSET], [PRODTABLE].[CALCDATE], [PRODTABLE].[ROUTEJOBS], [PRODTABLE].[CHECKROUTE], [PRODTABLE].[PROPERTYID], [PRODTABLE].[REMAININVENTPHYSICAL], [PRODTABLE].[BOMID], [PRODTABLE].[ROUTEID], [PRODTABLE].[DEL_CONFIGID], [PRODTABLE].[REQPLANIDSCHED], [PRODTABLE].[REQPOID], [PRODTABLE].[REFLOOKUP], [PRODTABLE].[LATESTSCHEDDIRECTION], [PRODTABLE].[LATESTSCHEDDATE], [PRODTABLE].[PRODID], [PRODTABLE].[INVENTDIMID], [PRODTABLE].[SCHEDTOTIME], [PRODTABLE].[SCHEDFROMTIME], [PRODTABLE].[LATESTSCHEDTIME], [PRODTABLE].[DLVTIME], [PRODTABLE].[PRODORIGID], [PRODTABLE].[GANTTCOLORID], [PRODTABLE].[REFSALESID], [PRODTABLE].[ACTIONDATE], [PRODTABLE].[REMARKPD], [PRODTABLE].[SALESORDERLINE], [PRODTABLE].[SALESORDERLOT], [PRODTABLE].[PDEXTRA], [PRODTABLE].[PLANT], [PRODTABLE].[QTY2014], [PRODTABLE].[REPORTWEIGHTVALVE], [PRODTABLE].[HASCHECKVALVE], [PRODTABLE].[REMARKPDASSEMBLY], [PRODTABLE].[CHECKUPWL], [PRODTABLE].[CREATEDDATE], [PRODTABLE].[CREATEDTIME], [PRODTABLE].[CREATEDBY], [PRODTABLE].[DATAAREAID], [PRODTABLE].[RECID]
- FROM [PRODTABLE]
- WHERE [PRODTABLE].[CREATEDDATE]>='2023-12-02 00:00:00' AND
- [PRODTABLE].[CREATEDDATE]<='2023-12-11 00:00:00'
- ORDER BY [PRODTABLE].[RECID]
3.2.
สร้าง Table ที่ Axapta Database จริง ที่จะใช้งาน
เพื่อนำมาเปรียบเทียบข้อมูลและ Run Code นำเข้า Table ProdTable โดยสร้าง
Table ชื่อ ProdTable2023
3.3.
Import ข้อมูลโดยใช้วิธีข้อ 1 - 6 ข้อ 4 เลือกเป็น Copy table จาก AC_Local.ProdTable ไป Suwit_Local.ProdTable2023
3.4. เขียนโปรแกรมใน Job duplicateProdTable ตั้งชื่อไฟลื .CSV และนำไปไว้ที่ Path ที่ต้องการ
Code
ทำงานโดย เอา PD กับ QTY จาก CSV ไฟล์ ไปหา ProdTable2023 ที่ Copy
มาตามข้อ 3.3. เพื่อเอาข้อมูลที่ต้องการเข้า ProdTable ที่จะใช้งานจริง
Code
- static void duplicateProdTable(Args _args)
- {
- ProdTable2023 prodTable2023;
- ProdTable selectProdTable;
- ProdTable updateProdTable;
- InventTable item;
- int no;
- ProdTable2023 myProd;
- ProdTable tmpProdTable;
-
- AsciiIO myFile;
- str filename = "ProdTable_1";
-
- container RecData;
- int i;
-
- ProdId myProdId;
- ItemId myItemId;
- Qty myQty;
- ;
- // CREATE NEW LINE
-
- myFile=new AsciiIO(strfmt("C:\\%1.csv", filename),"r");
- myfile.inFieldDelimiter(",");
- while(myFile.status() == IO_Status::Ok)
- RecData += myFile.read();
- myFile = null;
-
-
- ttsBegin;
- for(i=1; i <= conlen(RecData); i++){
-
- myProdId = conpeek(RecData, i);
- i++;
-
- myQty = conpeek(RecData, i);
-
- SELECT * FROM myProd WHERE myProd.ProdId == myProdId;
-
- item = InventTable::find(myProd.ItemId);
-
- tmpProdTable.clear();
- tmpProdTable.initValue();
- tmpProdTable.ProdId = myProd.ProdId;
- tmpProdTable.ItemId = item.ItemId;
- tmpProdTable.initFromInventTable(item);
- tmpProdTable.Name = myProd.Name;
- tmpProdTable.RefSalesId = myProd.RefSalesId;
- tmpProdTable.SalesOrderLine = myProd.SalesOrderLine;
- tmpProdTable.SalesOrderLot = myProd.SalesOrderLot;
- tmpProdTable.PdExtra = myProd.PdExtra;
- tmpProdTable.Plant = myProd.Plant;
- tmpProdTable.RemarkPD = myprod.RemarkPD;
-
- tmpProdTable.QtySched = myQty;
- tmpProdTable.RemainInventPhysical = myQty;
- tmpProdTable.BOMId = BOMVersion::findActive(tmpProdTable.ItemId,
- tmpProdTable.BOMDate,
- myQty).BOMId;
- tmpProdTable.RouteId = RouteVersion::findActive(tmpProdTable.ItemId,
- tmpProdTable.BOMDate,
- myQty).RouteId;
- tmpProdTable.initRouteVersion();
- tmpProdTable.initBOMVersion();
- tmpProdTable.ProdPostingType = ProdPostingType::ItemCategory;
- tmpProdTable.type().insert();
-
- no++;
- info(strfmt("%1 : %2 : %3 : %4 : %5", no, myProd.ProdId, myProd.ItemId, myQty, tmpProdTable.BOMId));
- }
- ttscommit;
- }
4. เอกสาร Transfer, Movement : InventJournalTable, InventJournalTrans โดย
จะทำคล้ายกับ ProdTable
4.1. นำเข้าข้อมูล InventJournalTable ตามข้อ
Import ข้อมูลโดยใช้วิธีข้อ 1 - 6 ข้อ 4 ใช้วิธี Query Code
- INVENTJOURNALTABLE
- SELECT [INVENTJOURNALTABLE].[JOURNALID], [INVENTJOURNALTABLE].[DESCRIPTION], [INVENTJOURNALTABLE].[POSTED], [INVENTJOURNALTABLE].[RESERVATION], [INVENTJOURNALTABLE].[SYSTEMBLOCKED], [INVENTJOURNALTABLE].[DEL_LOG], [INVENTJOURNALTABLE].[BLOCKUSERID], [INVENTJOURNALTABLE].[JOURNALTYPE], [INVENTJOURNALTABLE].[JOURNALNAMEID], [INVENTJOURNALTABLE].[INVENTDIMFIXED], [INVENTJOURNALTABLE].[EMPLID], [INVENTJOURNALTABLE].[BLOCKUSERGROUPID], [INVENTJOURNALTABLE].[VOUCHERDRAW], [INVENTJOURNALTABLE].[VOUCHERCHANGE], [INVENTJOURNALTABLE].[VOUCHERSEQID], [INVENTJOURNALTABLE].[SESSIONLOGINTIME], [INVENTJOURNALTABLE].[SESSIONLOGINDATE], [INVENTJOURNALTABLE].[SESSIONID], [INVENTJOURNALTABLE].[POSTEDUSERID], [INVENTJOURNALTABLE].[POSTEDDATE], [INVENTJOURNALTABLE].[NUMOFLINES], [INVENTJOURNALTABLE].[JOURNALIDORIGNAL], [INVENTJOURNALTABLE].[DETAILSUMMARY], [INVENTJOURNALTABLE].[DELETEPOSTEDLINES], [INVENTJOURNALTABLE].[LEDGERACCOUNTIDOFFSET], [INVENTJOURNALTABLE].[VENDACCOUNT], [INVENTJOURNALTABLE].[CREATEBY], [INVENTJOURNALTABLE].[SALESORDERLOT], [INVENTJOURNALTABLE].[RECEIVEDATE], [INVENTJOURNALTABLE].[REFSALESID], [INVENTJOURNALTABLE].[ITEMID], [INVENTJOURNALTABLE].[NOINSO], [INVENTJOURNALTABLE].[QTYINSO], [INVENTJOURNALTABLE].[TRANSDATE], [INVENTJOURNALTABLE].[PLANT], [INVENTJOURNALTABLE].[PICKINGBY], [INVENTJOURNALTABLE].[CAUSE], [INVENTJOURNALTABLE].[CREATEDATE], [INVENTJOURNALTABLE].[DATAAREAID], [INVENTJOURNALTABLE].[RECID]
- FROM [INVENTJOURNALTABLE]
- WHERE [INVENTJOURNALTABLE].[CREATEDATE]>='2023-11-02 00:00:00' AND
- [INVENTJOURNALTABLE].[CREATEDATE]<='2023-11-11 00:00:00'
- ORDER BY [INVENTJOURNALTABLE].[RECID]
กรณีนี้มีการใช้เลขที่ไปแล้วต้องเพิ่มเงื่อนไข ตัดเลขที่ ที่ใช้ไปแล้วออก แล้วให้คีย์เอง
Code
- SELECT JOURNALID, DESCRIPTION, POSTED, RESERVATION, SYSTEMBLOCKED, DEL_LOG, BLOCKUSERID, JOURNALTYPE, JOURNALNAMEID,
- INVENTDIMFIXED, EMPLID, BLOCKUSERGROUPID, VOUCHERDRAW, VOUCHERCHANGE, VOUCHERSEQID, SESSIONLOGINTIME,
-
SESSIONLOGINDATE, SESSIONID, POSTEDUSERID,
POSTEDDATE, NUMOFLINES, JOURNALIDORIGNAL, DETAILSUMMARY,
DELETEPOSTEDLINES,
-
LEDGERACCOUNTIDOFFSET, VENDACCOUNT, CREATEBY, SALESORDERLOT,
RECEIVEDATE, REFSALESID, ITEMID, NOINSO, QTYINSO, TRANSDATE,
- PLANT, PICKINGBY, CAUSE, CREATEDATE, DATAAREAID, RECID
- FROM INVENTJOURNALTABLE
- WHERE
(CREATEDATE >= '2023-12-02 00:00:00') AND (CREATEDATE <=
'2023-12-11 00:00:00') AND (JOURNALID <> '23-0020130') AND
-
(JOURNALID <> '23-0020131') AND (JOURNALID
<> '23-0020125') AND (JOURNALID <> '23-0020127') AND
(JOURNALID <> '23-0020128') AND
-
(JOURNALID <> '23-0020122') AND (JOURNALID
<> '23-0020119') AND (JOURNALID <> '23-0020120')
- ORDER BY RECID
4.2. เปลี่ยน Status รายการที่ Post แล้วให้เป็น Create และ User ที่ Post , วันที่ Post นำออก
Code
- UPDATE INVENTJOURNALTABLE
- SET POSTED = 0, POSTEDUSERID = '', POSTEDDATE = '1900-01-01'
- WHERE (CREATEDATE >= '2023-12-02 00:00:00') AND (CREATEDATE <= '2023-12-11 00:00:00')
4.3. เตรียมข้อมูลที่จะดึงเข้า InventJournalTrans เพื่อให้เกิด Transaction
4.3.1. สร้าง Table InventJournalTrans2023, InventDim2023 ที่ Axapta ที่จะใช้งานจริง Suwit_Local
ต้องใช้ InventDim ด้วยเพราะมีการคีย์การลบ เปลี่ยนแปลงไปแล้ว แต่ถ้าสั่งหยุดคีย์หรือ Post ก็ไม่ต้องใช้ InventDim
4.3.2. นำเข้าข้อมูล InventJournalTrans ตามข้อ
Import ข้อมูลโดยใช้วิธีข้อ 1 - 6 ข้อ 4 ใช้วิธี Copy Table ทั้ง AC_Local.InventJournalTrans --> Suwit_Local.InventJournalTranls
AC_Local.InventDim --> Suwit_Local.InventDim
4.3.3. เขียน Code Run Job นำข้อมูลเข้า InventJournalTrans
Code
ทำงานโดย กรองเอาเฉพาะเล่ม ใน InventJournalTable ที่อยู่ในช่วงวันที่
ที่ต้องการ เอา JournalId ไปหา InventJournalTrans2023
เพื่อเอาข้อมูลที่ต้องการ
InventDim2023 ใช้สร้าง InventDim ใหม่ กรณีหาไม่เจอเพราะมีการใช้งานและเปลี่ยนแปลง
**** สำคัญ InventDim Code Form InventDimId กับ To InventDimId ดูให้ดี ถ้าเอาเข้าผิดต้อง Update ใหม่ ****Code
4.3.4. เอกสารที่ เป็น Movement จะ Post ไม่ได้จะ Error Offset Account ต้องกรอก LedgerAccountOffet เป็น 9000000
Code Update
- static void JobUpdateLedgerOffset(Args _args)
- {
- InventJournalTable InventJournalTable;
- InventJournalTrans InventJournalTrans;
- InventJournalTrans updateInventJournalTrans;
- ;
-
- WHILE
- SELECT JournalId FROM InventJournalTable
- WHERE InventJournalTable.CreateDate >= str2date("02/12/2023", 123)
- && InventJournalTable.CreateDate <= str2date("11/12/2023", 123)
- && InventJournalTable.Posted == NoYes::No
- && InventJournalTable.JournalType == InventJournalType::Movement
- //&& InventJournalTable.JournalId == '23-0020140'
- {
- WHILE
- SELECT * FROM InventJournalTrans
- WHERE InventJournalTrans.JournalId == InventJournalTable.JournalId
- {
- ttsBegin;
- SELECT FORUPDATE * FROM updateInventJournalTrans
- WHERE updateInventJournalTrans.RecId == InventJournalTrans.RecId;
-
- updateInventJournalTrans.LedgerAccountIdOffset = '9000000';
- updateInventJournalTrans.update();
- ttsCommit;
- }
- }
-
- }