Inventory Unit Activity Report value not correctly

I use SDK to insert Inventory Adjustment data , the data in Invnetory Adjustment Journal report is correct , but data in Inventory Unit Activity Report is not correct .

if using Support Utinities-integrity check , the data in Inventory Unit Activity Report will be correct .

plese help how to insert correct data using SDK ?

    private void btnSave_Click(object sender, EventArgs e)
        {
            //PawCom2.PublicDefinitions.bts bts = new PawCom2.PublicDefinitions.bts();
            //PawCom2.PublicDefinitions.ptf ptf = new PawCom2.PublicDefinitions.ptf();
            //PawCom2.Btrieve bJrnlHdr = new PawCom2.Btrieve();
            //PawCom2.JrnlHdr oJrnlHdr = new PawCom2.JrnlHdr();
            //PawCom2.Btrieve bJrnlRow = new PawCom2.Btrieve();
            //PawCom2.JrnlRow oJrnlRow = new PawCom2.JrnlRow();

            LineItems lineItems = new LineItems();

            try
            {

                if (!mwPostingMethodIsBatch())
                {
                    //MessageBox.Show("Peachtree must be set to batch posting in order to insert an Inventory Adjustment transaction.  Operation cancelled.");
                    //return;
                    mwSetBatchMode();

                }

                ExecuteStatus = bJrnlHdr.btOpen(mCompanyPath + "\\" + ptf.JrnlHdr);
                if (ExecuteStatus == bts.OK)
                {
                    ExecuteStatus = bJrnlRow.btOpen(mCompanyPath + "\\" + ptf.JrnlRow, 0);
                }
                oJrnlHdr.Initialize(bJrnlHdr.ThreadIndex);
                oJrnlRow.Initialize(bJrnlRow.ThreadIndex);

                bGeneralData.btOpen(mCompanyPath + "\\" + ptf.General, -2);
                btJrnlHdr.btOpen(mCompanyPath + "\\" + ptf.JrnlHdr, 0);

                //Inventory Adjustment Journal: JournalEx =14 JournalID=7 JrnlTypeEx=0
                int NewNRecord = GetmaxNRecord() + 1;//新單號
                //DateTime ImportDate = DateTime.Now; //匯入日期,通常是隔月匯上個月耗用量
                DateTime ImportDate = dateTimePicker1.Value; //匯入日期,通常是隔月匯上個月耗用量
                //int MainAccountIndex = GetDefaultARAccount();
                //int MainAccountIndex = 22;
                lineItems = GetLineItems(txtItemID.Text);

                oJrnlHdr.ClearRecord();

                oJrnlHdr.NRecord = NewNRecord;
                Int16 CurrentPeriod = 17;
                CurrentPeriod = mwCurrentPeriod();
                oJrnlHdr.Period = CurrentPeriod;
                oJrnlHdr.TrxDate = ImportDate;
                //oJrnlHdr.TrxNumber = (GetMaxTrx(mwCurrentPeriod()) + 1);
                oJrnlHdr.TrxNumber = (GetMaxTrx(CurrentPeriod, 7) + 1);
                oJrnlHdr.JournalID = 7;//Appendix A
                oJrnlHdr.Subindex1 = 0;
                oJrnlHdr.Subindex2 = 0;
                oJrnlHdr.JournalCode = "I";
                oJrnlHdr.Posted = true;
                oJrnlHdr.DateCleared = DateTime.Parse("1-1-1900");
                oJrnlHdr.ReceiptDate = DateTime.Parse("1-1-1900");
                oJrnlHdr.LastUpdateCounter = 0;
                oJrnlHdr.JrnlTypeEx = 0;//Appendix A
                oJrnlHdr.JournalEx = 14;//Appendix A :14 = Inventory Adjustment 
                oJrnlHdr.GUID = bJrnlHdr.NewGUID;
                oJrnlHdr.IDNumber = lineItems.ItemIndex;
                oJrnlHdr.Description = txtReason.Text;
                oJrnlHdr.Description = lineItems.ItemDescription;
                oJrnlHdr.Reference = txtReference.Text; //寫上item no.

                double Amount = double.Parse(txtQuantity.Text) * lineItems.Cost;
                Amount = Math.Round(Amount, 2);
                if (double.Parse(txtQuantity.Text) < 0)
                {
                    Amount = 0;
                }
                oJrnlHdr.Amount = Amount;

                //oJrnlHdr.Description = "inventory adjustment";
                //oJrnlHdr.MainAccountIndex = MainAccountIndex;
                oJrnlHdr.MainAccountIndex = 22;//12000 Raw materials inventory 存貨

                //add by 8/16
                oJrnlHdr.Timestamp = oJrnlHdr.NewTimestamp();
                oJrnlHdr.BeginningBalance = false;
                //oJrnlHdr.Description = "Inventory adjustment";
                //oJrnlHdr.ReceiptDate = ImportDate;
                oJrnlHdr.ReceiptDate =  DateTime.Parse("1-1-1900");
                //oJrnlHdr.BeginningBalance = false;
                //bJrnlHdr.btBeginTransaction();

                ExecuteStatus = bJrnlHdr.btInsert(0);

                if (ExecuteStatus != bts.OK)
                {
                    //bJrnlHdr.btAbortTransaction();
                    MessageBox.Show("Status Code:" + ExecuteStatus.ToString());
                }

                lblTrxNumber.Text = oJrnlHdr.TrxNumber.ToString();
                lblNrecord.Text = NewNRecord.ToString();
                //detail


                //bLineItem.btOpen(mCompanyPath + "\\" + ptf.LineItem, 0);
                //oLineItem.Initialize(bLineItem.ThreadIndex);
                //bLineItem.SetKeyString(txtItemID.Text, Convert.ToInt16(txtItemID.Text.Length + 1), 0);
                //ExecuteStatus = bLineItem.btGetEqual(0);
                //if (ExecuteStatus == bts.OK)
                //{
                //    oJrnlRow.ItemIndex = oLineItem.Index;  //item found in PT, get ItemIndex value
                //}
                oJrnlRow.ClearRecord();
                double cost = Math.Round(lineItems.Cost, 2);

                oJrnlRow.NRecord = NewNRecord;//unit key 1
                oJrnlRow.LineNo = 0;//第n筆紀錄--->要修改 //unit key 2
                oJrnlRow.TrxType = 0; //unit key 3
                //oJrnlRow.AccountIndex = 181;//50010 Cost of Raw Material Sold 銷貨成本
                oJrnlRow.AccountIndex = 22; //存貨
                //oJrnlRow.Amount =0;
                oJrnlRow.Amount = Amount;
                //add 8/16
                //oJrnlRow.Extension = Amount;
                oJrnlRow.TrxDate = ImportDate;
                oJrnlRow.JournalID = 7; // Appendix A
                oJrnlRow.StockingQuantity = double.Parse(txtQuantity.Text);//耗用數量----------------->要修改The stocking quantity associated with this row
                                                                           //oJrnlRow.Quantity = double.Parse(txtQuantity.Text); 
                oJrnlRow.Quantity = 0;
                oJrnlRow.Description = txtReason.Text;
                //oJrnlRow.JobIndex = 0;
                oJrnlRow.PhaseIndex = 0;
                oJrnlRow.CostIndex = 0;
                //oJrnlRow.StockingUnitPrice = cost;
                oJrnlRow.StockingUnitPrice = 0;
                oJrnlRow.UnitPrice = 0; ;//UnitCost
                //oJrnlRow.UnitPrice = cost; //add by 8/16
                oJrnlRow.CostOfSalesTrx = true;
                oJrnlRow.ItemIndex = lineItems.ItemIndex; ;
                oJrnlRow.IncludeInGL = true;
                oJrnlRow.DateCleared = Convert.ToDateTime("1-1-1900");
                oJrnlRow.HasSerialNumbers = false;
                oJrnlRow.LastUpdateCounter = 0;
                oJrnlRow.GUID = bJrnlRow.NewGUID;


                //add 8/16
                oJrnlRow.UMGUID = "";
                oJrnlRow.LastUpdateCounter = 0;
                oJrnlRow.JournalRowEx = 23;
                oJrnlRow.LinkJournalRowEx = 0;


                //其他
                oJrnlRow.QuantityShipped = 0;
                oJrnlRow.JobIndex = 0;
                oJrnlRow.PhaseIndex = 0;
                oJrnlRow.CostIndex = 0;
                oJrnlRow.OtherNRecord = 0;




                ExecuteStatus = bJrnlRow.btInsert(0);


                if (ExecuteStatus != bts.OK)
                {
                    MessageBox.Show("insert row 1 fail !");
                }
                //else
                //{
                //    MessageBox.Show(" row 1ok");
                //}

                oJrnlRow.ClearRecord();
                oJrnlRow.NRecord = NewNRecord;//unit key 1
                oJrnlRow.LineNo = 1;//第n筆紀錄--->要修改 //unit key 2
                oJrnlRow.TrxType = 0; //unit key 3
                oJrnlRow.AccountIndex = 181;//50010 Cost of Raw Material Sold 銷貨成本
                oJrnlRow.Amount = Amount * -1;
                //add 8/16
                //oJrnlRow.Extension = Amount * -1;

                if (oJrnlRow.Amount == 0)
                {
                    cost = 0;
                }

                oJrnlRow.TrxDate = ImportDate;
                oJrnlRow.JournalID = 7; // Appendix A
                oJrnlRow.StockingQuantity = int.Parse(txtQuantity.Text);//耗用數量----------------->要修改The stocking quantity associated with this row
                                                                        //oJrnlRow.Quantity = double.Parse(txtQuantity.Text);
                oJrnlRow.Quantity = 0;
                oJrnlRow.Description = txtReason.Text;
                //oJrnlRow.JobIndex = 0;
                oJrnlRow.PhaseIndex = 0;
                oJrnlRow.CostIndex = 0;
                oJrnlRow.StockingUnitPrice = cost;
                oJrnlRow.UnitPrice = 0; ;//UnitCost
                //oJrnlRow.UnitPrice = cost; //add by 8/16
                oJrnlRow.CostOfSalesTrx = false;
                oJrnlRow.ItemIndex = lineItems.ItemIndex; ;
                oJrnlRow.IncludeInGL = true;
                oJrnlRow.DateCleared = Convert.ToDateTime("1-1-1900");
                oJrnlRow.HasSerialNumbers = false;
                oJrnlRow.LastUpdateCounter = 0;
                oJrnlRow.GUID = bJrnlRow.NewGUID;

                //add 8/16
                oJrnlRow.UMGUID = "";
                oJrnlRow.LastUpdateCounter = 0;
                oJrnlRow.JournalRowEx = 23;
                oJrnlRow.LinkJournalRowEx = 0;


                //其他
                oJrnlRow.QuantityShipped = 0;
                oJrnlRow.JobIndex = 0;
                oJrnlRow.PhaseIndex = 0;
                oJrnlRow.CostIndex = 0;
                oJrnlRow.OtherNRecord = 0;

                ExecuteStatus = bJrnlRow.btInsert(0);
                if (ExecuteStatus == bts.OK)
                {
                    IncrementBatchCount(7);
                    MessageBox.Show("insert ok");


                }
                else
                {
                    MessageBox.Show(" row 2 fail");
                }

            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
            finally
            {


                bJrnlHdr.btClose();
                bJrnlRow.btClose();
                bLineItem.btClose();

                //bJrnlHdr.btEndTransaction();
                //bJrnlHdr = null;
                //bJrnlRow = null;
                //bLineItem = null;

            }
        }