12/25/2023

Axapta กู้คืนข้อมูลบางส่วนย้อนหลัง

 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

  1. 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]
  2. FROM [INVENTTABLE]
  3. WHERE [INVENTTABLE].[RECID]>180919242
  4. 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
  1. 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]
  2. FROM [INVENTTABLEMODULE]
  3. WHERE [INVENTTABLEMODULE].[RECID]>180919239
  4. 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]
  5.  

Code Query InventItemLocation
  1. 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]
  2. FROM [INVENTITEMLOCATION]
  3. WHERE [INVENTITEMLOCATION].[RECID]>180919241
  4. 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]
  5.  


2. PO : PurchTable เอาเข้าเฉพาะ เลขที่ PO ส่วน รายการ Purchline ให้ ฝจห. คีย์เพิ่มเติม
ทำตามข้อ 1 - 6
ข้อ 4 ใช้วิธี Query
ใช้ CreateDate เป็นตัวกรอกข้อมูล
Code Query
  1. 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]
  2. FROM [PURCHTABLE]
  3. WHERE [PURCHTABLE].[CREATEDDATE]>='2023-12-02' AND
  4. [PURCHTABLE].[CREATEDDATE]<='2023-12-11'
  5. 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
Selection_127.png (19.55 KB) Viewed 30 times

Code Query หรือจะไป Fielter จาก Table ProdTable ก็ได้
  1. PRODTABLE
  2. 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]
  3. FROM [PRODTABLE]
  4. WHERE [PRODTABLE].[CREATEDDATE]>='2023-12-02 00:00:00' AND
  5. [PRODTABLE].[CREATEDDATE]<='2023-12-11 00:00:00'
  6. 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
  1. static void duplicateProdTable(Args _args)
  2. {
  3.     ProdTable2023       prodTable2023;
  4.     ProdTable           selectProdTable;
  5.     ProdTable           updateProdTable;
  6.     InventTable         item;
  7.     int                 no;
  8.     ProdTable2023       myProd;
  9.     ProdTable           tmpProdTable;
  10.  
  11.     AsciiIO                 myFile;
  12.     str                     filename = "ProdTable_1";
  13.  
  14.     container               RecData;
  15.     int                     i;
  16.  
  17.     ProdId                  myProdId;
  18.     ItemId                  myItemId;
  19.     Qty                     myQty;
  20.     ;
  21. //  CREATE NEW LINE
  22.  
  23.         myFile=new AsciiIO(strfmt("C:\\%1.csv", filename),"r");
  24.         myfile.inFieldDelimiter(",");
  25.         while(myFile.status() == IO_Status::Ok)
  26.             RecData += myFile.read();
  27.         myFile = null;
  28.  
  29.  
  30.         ttsBegin;
  31.         for(i=1; i <= conlen(RecData); i++){
  32.  
  33.             myProdId = conpeek(RecData, i);
  34.             i++;
  35.  
  36.             myQty = conpeek(RecData, i);
  37.  
  38.             SELECT * FROM myProd WHERE myProd.ProdId == myProdId;
  39.  
  40.             item = InventTable::find(myProd.ItemId);
  41.  
  42.             tmpProdTable.clear();
  43.             tmpProdTable.initValue();
  44.             tmpProdTable.ProdId                = myProd.ProdId;
  45.             tmpProdTable.ItemId                = item.ItemId;
  46.             tmpProdTable.initFromInventTable(item);
  47.             tmpProdTable.Name                   = myProd.Name;
  48.             tmpProdTable.RefSalesId            = myProd.RefSalesId;
  49.             tmpProdTable.SalesOrderLine     = myProd.SalesOrderLine;
  50.             tmpProdTable.SalesOrderLot      = myProd.SalesOrderLot;
  51.             tmpProdTable.PdExtra            = myProd.PdExtra;
  52.             tmpProdTable.Plant              = myProd.Plant;
  53.             tmpProdTable.RemarkPD             = myprod.RemarkPD;
  54.  
  55.             tmpProdTable.QtySched              = myQty;
  56.             tmpProdTable.RemainInventPhysical  = myQty;
  57.             tmpProdTable.BOMId = BOMVersion::findActive(tmpProdTable.ItemId,
  58.                                                         tmpProdTable.BOMDate,
  59.                                                         myQty).BOMId;
  60.             tmpProdTable.RouteId = RouteVersion::findActive(tmpProdTable.ItemId,
  61.                                                             tmpProdTable.BOMDate,
  62.                                                             myQty).RouteId;
  63.             tmpProdTable.initRouteVersion();
  64.             tmpProdTable.initBOMVersion();
  65.             tmpProdTable.ProdPostingType       = ProdPostingType::ItemCategory;
  66.             tmpProdTable.type().insert();
  67.  
  68.             no++;
  69.             info(strfmt("%1 : %2 : %3 : %4  : %5", no, myProd.ProdId, myProd.ItemId, myQty, tmpProdTable.BOMId));
  70.         }
  71.         ttscommit;
  72. }


4. เอกสาร Transfer, Movement : InventJournalTable, InventJournalTrans โดย
จะทำคล้ายกับ ProdTable
4.1. นำเข้าข้อมูล InventJournalTable ตามข้อ Import ข้อมูลโดยใช้วิธีข้อ 1 - 6
ข้อ 4 ใช้วิธี Query
Code
  1. INVENTJOURNALTABLE
  2. 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]
  3. FROM [INVENTJOURNALTABLE]
  4. WHERE [INVENTJOURNALTABLE].[CREATEDATE]>='2023-11-02 00:00:00' AND
  5. [INVENTJOURNALTABLE].[CREATEDATE]<='2023-11-11 00:00:00'
  6. ORDER BY [INVENTJOURNALTABLE].[RECID]


กรณีนี้มีการใช้เลขที่ไปแล้วต้องเพิ่มเงื่อนไข ตัดเลขที่ ที่ใช้ไปแล้วออก แล้วให้คีย์เอง
Code
  1. SELECT     JOURNALID, DESCRIPTION, POSTED, RESERVATION, SYSTEMBLOCKED, DEL_LOG, BLOCKUSERID, JOURNALTYPE, JOURNALNAMEID,
  2.                       INVENTDIMFIXED, EMPLID, BLOCKUSERGROUPID, VOUCHERDRAW, VOUCHERCHANGE, VOUCHERSEQID, SESSIONLOGINTIME,
  3.                       SESSIONLOGINDATE, SESSIONID, POSTEDUSERID, POSTEDDATE, NUMOFLINES, JOURNALIDORIGNAL, DETAILSUMMARY, DELETEPOSTEDLINES,
  4.                       LEDGERACCOUNTIDOFFSET, VENDACCOUNT, CREATEBY, SALESORDERLOT, RECEIVEDATE, REFSALESID, ITEMID, NOINSO, QTYINSO, TRANSDATE,
  5.                       PLANT, PICKINGBY, CAUSE, CREATEDATE, DATAAREAID, RECID
  6. FROM         INVENTJOURNALTABLE
  7. WHERE     (CREATEDATE >= '2023-12-02 00:00:00') AND (CREATEDATE <= '2023-12-11 00:00:00') AND (JOURNALID <> '23-0020130') AND
  8.                       (JOURNALID <> '23-0020131') AND (JOURNALID <> '23-0020125') AND (JOURNALID <> '23-0020127') AND (JOURNALID <> '23-0020128') AND
  9.                       (JOURNALID <> '23-0020122') AND (JOURNALID <> '23-0020119') AND (JOURNALID <> '23-0020120')
  10. ORDER BY RECID

4.2. เปลี่ยน Status รายการที่ Post แล้วให้เป็น Create และ User ที่ Post , วันที่ Post นำออก
Code
  1. UPDATE    INVENTJOURNALTABLE
  2. SET              POSTED = 0, POSTEDUSERID = '', POSTEDDATE = '1900-01-01'
  3. 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
  1.  
  2. static void duplicateInventJournalTrans(Args _args)
  3. {
  4.  
  5.     InventJournalTrans2023  queryInventJournalTrans;
  6.     //InventJournalTrans      queryInventJournalTrans;
  7.     InventJournalTrans      updateInventJournalTrans;
  8.     InventJournalTrans      deleteInventJournalTrans;
  9.  
  10.     InventJournalTable      myInventJournalTable;
  11.     int                     no = 1;
  12.  
  13.     InventDim               myInventDim;
  14.     InventDim               myInventDim2;
  15.  
  16.     InventDim               FromInventDim;
  17.     InventDim               ToInventDim;
  18.  
  19.     InventDim2023           myInventDim2023;
  20.     ;
  21.  
  22. ttsBegin;
  23.     WHILE
  24.     SELECT JournalId FROM myInventJournalTable
  25.     WHERE myInventJournalTable.CreateDate >= str2date("02/12/2023", 123)
  26.         && myInventJournalTable.CreateDate <= str2date("11/12/2023", 123)
  27.     {
  28.         WHILE
  29.         SELECT * FROM queryInventJournalTrans
  30.         WHERE queryInventJournalTrans.JournalId == myInventJournalTable.JournalId
  31.         {
  32.             //SELECT * FROM queryInventJournalTrans WHERE queryInventJournalTrans.RecId == inventJournalTrans2014.RecId;
  33.             //SELECT FORUPDATE deleteInventJournalTrans WHERE deleteInventJournalTrans.RecId == queryInventJournalTrans.RecId;
  34.             updateInventJournalTrans.clear();
  35.            
  36.             //insertInventJournalTrans.initFromInventJournalTrans(queryInventJournalTrans);
  37.             insertInventJournalTrans.JournalId          = queryInventJournalTrans.JournalId;
  38.             insertInventJournalTrans.JournalType        = queryInventJournalTrans.JournalType;
  39.             insertInventJournalTrans.LineNum            = queryInventJournalTrans.LineNum;
  40.             insertInventJournalTrans.ItemId             = queryInventJournalTrans.ItemId;
  41.             insertInventJournalTrans.FinishedCode       = queryInventJournalTrans.FinishedCode;
  42.             insertInventJournalTrans.OrderQty           = queryInventJournalTrans.OrderQty;
  43.             insertInventJournalTrans.Qty                = queryInventJournalTrans.Qty;
  44.             insertInventJournalTrans.CostAmount         = queryInventJournalTrans.CostAmount;
  45.        
  46.             SELECT * FROM myInventDim
  47.             WHERE myInventDim.inventDimId == queryInventJournalTrans.InventDimId;
  48.  
  49.             if(myInventDim.inventDimId != ""){
  50.                 insertInventJournalTrans.InventDimId  = queryInventJournalTrans.InventDimId;
  51.             } else {
  52.  
  53.                 SELECT * FROM myInventDim2023
  54.                 WHERE myInventDim2023.inventDimId == queryInventJournalTrans.InventDimId;
  55.  
  56.                 FromInventDim.InventLocationId = myInventDim2023.InventLocationId;
  57.                 FromInventDim.wMSLocationId   = myInventDim2023.wMSLocationId;
  58.                 FromInventDim.inventBatchId = "";
  59.                 FromInventDim.configId = "";
  60.                 FromInventDim.InventSizeId = "";
  61.                 FromInventDim.InventColorId = "";
  62.                 FromInventDim = InventDim::findOrCreate(FromInventDim);
  63.                 insertInventJournalTrans.InventDimId = FromInventDim.inventDimId;//Some line not invent batch fix use WH.
  64.  
  65.             }
  66.  
  67.             SELECT * FROM myInventDim2
  68.             WHERE myInventDim2.inventDimId == queryInventJournalTrans.ToInventDimId;
  69.             if(myInventDim2.inventDimId != ""){
  70.                 insertInventJournalTrans.ToInventDimId = queryInventJournalTrans.ToInventDimId;
  71.             } else {
  72.                 SELECT * FROM myInventDim2023
  73.                 WHERE myInventDim2023.inventDimId == queryInventJournalTrans.ToInventDimId;
  74.  
  75.                 ToInventDim.InventLocationId = myInventDim2023.InventLocationId;
  76.                 ToInventDim.wMSLocationId   = myInventDim2023.wMSLocationId;
  77.                 ToInventDim.inventBatchId = "";
  78.                 ToInventDim.configId = "";
  79.                 ToInventDim.InventSizeId = "";
  80.                 ToInventDim.InventColorId = "";
  81.                 ToInventDim = InventDim::findOrCreate(ToInventDim);
  82.  
  83.                 ttsBegin;
  84.                 SELECT FORUPDATE * FROM updateInventJournalTrans
  85.                 WHERE updateInventJournalTrans.JournalId == queryInventJournalTrans.JournalId
  86.                    && updateInventJournalTrans.ItemId == queryInventJournalTrans.ItemId
  87.                    && updateInventJournalTrans.LineNum == queryInventJournalTrans.LineNum;
  88.  
  89.                 updateInventJournalTrans.ToInventDimId = ToInventDim.ToInventDimId;
  90.                 updateInventJournalTrans.update();
  91.  
  92.                 ttsCommit;
  93.             }
  94.  
  95.             //insertInventJournalTrans.InventDimId        = "         06-00000001";
  96.             //insertInventJournalTrans.ToInventDimId      = "         06-00000010";
  97.  
  98.             insertInventJournalTrans.RefSalesId         = queryInventJournalTrans.RefSalesId;
  99.             insertInventJournalTrans.TransDate          = queryInventJournalTrans.TransDate;
  100.             //insertInventJournalTrans.TransDate          = today();
  101.             insertInventJournalTrans.DeliveryDate       = queryInventJournalTrans.DeliveryDate;
  102.             insertInventJournalTrans.Remark             = queryInventJournalTrans.Remark;
  103.  
  104.             //deleteInventJournalTrans.delete();
  105.             insertInventJournalTrans.insert();
  106.  
  107.         }
  108.     info(strfmt("%1 : %2", no, myInventJournalTable.JournalId));
  109.     no++;
  110.     }
  111. ttsCommit;
  112. }
  113.  

4.3.4. เอกสารที่ เป็น Movement จะ Post ไม่ได้จะ Error Offset Account ต้องกรอก LedgerAccountOffet เป็น 9000000
Code Update
  1. static void JobUpdateLedgerOffset(Args _args)
  2. {
  3.     InventJournalTable      InventJournalTable;
  4.     InventJournalTrans      InventJournalTrans;
  5.     InventJournalTrans      updateInventJournalTrans;
  6.     ;
  7.  
  8.     WHILE
  9.     SELECT JournalId FROM InventJournalTable
  10.     WHERE InventJournalTable.CreateDate >= str2date("02/12/2023", 123)
  11.         && InventJournalTable.CreateDate <= str2date("11/12/2023", 123)
  12.         && InventJournalTable.Posted == NoYes::No
  13.         && InventJournalTable.JournalType == InventJournalType::Movement
  14.         //&& InventJournalTable.JournalId == '23-0020140'
  15.     {
  16.         WHILE
  17.         SELECT * FROM InventJournalTrans
  18.         WHERE InventJournalTrans.JournalId == InventJournalTable.JournalId
  19.         {
  20.             ttsBegin;
  21.                 SELECT FORUPDATE * FROM updateInventJournalTrans
  22.                 WHERE updateInventJournalTrans.RecId == InventJournalTrans.RecId;
  23.  
  24.                 updateInventJournalTrans.LedgerAccountIdOffset = '9000000';
  25.                 updateInventJournalTrans.update();
  26.             ttsCommit;
  27.         }
  28.     }
  29.  
  30. }


No comments:

Post a Comment