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;
}
}