public bool SetETLBusinessObjectStatus(Session session, Guid jobId, Guid RefId, short rowstatus) { bool result = true; try { BusinessObjectBO businessObjectBO = new BusinessObjectBO(); BusinessObject businessObject = businessObjectBO.GetBusinessObjectByRefId(session, RefId); if (businessObjectBO == null) { return(false); } ETLBusinessObject etlBusinessObject = GetETLBusinessObject(session, jobId, businessObject.BusinessObjectId); if (etlBusinessObject == null) { result = false; return(result); } etlBusinessObject.RowStatus = rowstatus; etlBusinessObject.Save(); } catch (Exception) { return(result); } return(result); }
public Guid ETLGetNextProcessObject(Session session, Guid jobId, List <int> objectType) { Guid result = Guid.Empty; ETLEntryObjectHistoryBO entryHistoryBO = new ETLEntryObjectHistoryBO(); BusinessObjectBO businessObjectBO = new BusinessObjectBO(); ObjectEntryLogBO objectEntryLogBO = new ObjectEntryLogBO(); ETLLogBO etlLogBO = new ETLLogBO(); try { #region Logic BusinessObject businessObject = businessObjectBO.GetOldestUnprocessedObject(session, jobId, objectType); if (businessObject == null) { return(result); } result = businessObject.RefId; etlLogBO.CreateETLBusinessObject(session, jobId, businessObject.BusinessObjectId); entryHistoryBO.CreatETLEntryObjectHistory(session, jobId, businessObject.BusinessObjectId, 0); XPCollection <ETLBusinessObject> etlBusinessObjectCollection = etlLogBO.GetNewerETLBusinessObject(session, jobId, businessObject.BusinessObjectId); foreach (ETLBusinessObject etlBO in etlBusinessObjectCollection) { etlBO.RowStatus = Utility.Constant.ROWSTATUS_DELETED; etlBO.Save(); } #endregion } catch (Exception) { return(result); } return(result); }
public bool SetETLEntryObjectHistoryStatus(Session session, Guid jobId, Guid RefId, short rowstatus) { bool result = true; try { BusinessObjectBO businessObjectBO = new BusinessObjectBO(); BusinessObject businessObject = businessObjectBO.GetBusinessObjectByRefId(session, RefId); if (businessObjectBO == null) { return(false); } ETLEntryObjectHistory etlEntryObjectHistory = GetETLEntryObjectHistory(session, jobId, businessObject.BusinessObjectId); if (etlEntryObjectHistory == null) { result = false; return(result); } etlEntryObjectHistory.RowStatus = rowstatus; etlEntryObjectHistory.RowTimeStamp = DateTime.Now; etlEntryObjectHistory.Save(); } catch (Exception) { return(result); } return(result); }
public void Load() { //if (Stop == true) return; //Console.WriteLine("Load"); ETLEntryObjectHistoryBO _ETLEntryObjectHistoryBO = new ETLEntryObjectHistoryBO(); ObjectEntryLogBO _ObjectEntryLogBO = new ObjectEntryLogBO(); ETLJobBO _ETLJobBO = new ETLJobBO(); ETLLogBO _ETLLogBO = new ETLLogBO(); BusinessObjectBO _BusinessObjectBO = new BusinessObjectBO(); if (RefId != Guid.Empty) { _ETLLogBO.JobLog(session, JobId, "State1", "Status1"); _ETLLogBO.SetETLBusinessObjectStatus(session, JobId, RefId, 1); _ETLEntryObjectHistoryBO.SetETLEntryObjectHistoryStatus(session, JobId, RefId, 1); } }
public void Transform() { //if (Stop == true) return; //Console.WriteLine("Transform"); if (RefId == Guid.Empty) { return; } ETLEntryObjectHistoryBO _ETLEntryObjectHistoryBO = new ETLEntryObjectHistoryBO(); ObjectEntryLogBO _ObjectEntryLogBO = new ObjectEntryLogBO(); ETLJobBO _ETLJobBO = new ETLJobBO(); ETLLogBO _ETLLogBO = new ETLLogBO(); BusinessObjectBO _BusinessObjectBO = new BusinessObjectBO(); _ETLLogBO.JobLog(session, JobId, "Running", "Status1"); ETLInventoryBO etlBO = new ETLInventoryBO(); etlBO.RepairCOGSByTransaction(session, RefId); //etlBO.RepairCOGS(session, RefId); }
public double GetAccountingBalanceAtTime(Session session, Guid AccountingId, Guid CurrencyId, DateTime time) { double result = 0; try { Currency currentCurrency = session.GetObjectByKey <Currency>(CurrencyId); CriteriaOperator criteria_0 = new BinaryOperator("RowStatus", Utility.Constant.ROWSTATUS_ACTIVE, BinaryOperatorType.GreaterOrEqual); CriteriaOperator criteria_1; criteria_1 = new BinaryOperator("TransactionId.IssueDate", time, BinaryOperatorType.LessOrEqual); CriteriaOperator criteria_2 = new BinaryOperator("AccountId!Key", AccountingId, BinaryOperatorType.Equal); CriteriaOperator criteria_3 = new BinaryOperator("CurrencyId.CurrencyTypeId", currentCurrency.CurrencyTypeId, BinaryOperatorType.Equal); CriteriaOperator criteria = new GroupOperator(GroupOperatorType.And, criteria_0, criteria_1, criteria_2, criteria_3); XPCollection <GeneralLedger> ledgerList = new XPCollection <GeneralLedger>(session, criteria); if (ledgerList == null || ledgerList.Count == 0) { return(0); } ledgerList.Sorting.Add(new SortProperty("IssuedDate", SortingDirection.Descending)); ledgerList.Sorting.Add(new SortProperty("CreateDate", SortingDirection.Descending)); result = ledgerList.FirstOrDefault().Balance; foreach (GeneralLedger ledger in ledgerList) { Util util = new Util(); BusinessObjectBO businessObjectBO = new BusinessObjectBO(); BusinessObject businessObject = util.GetXpoObjectByFieldName <BusinessObject, Guid>(session, "RefId", ledger.TransactionId.TransactionId, BinaryOperatorType.Equal); ETLJob etlJob = util.GetXpoObjectByFieldName <ETLJob, string>(session, "Code", "GeneralJournalToGeneralLedgerJob", BinaryOperatorType.Equal); //Console.WriteLine("Test:" + businessObject.BusinessObjectId + " " + ledger.TransactionId.TransactionId); if (!businessObjectBO.NeedToBeProcessed(session, businessObject.BusinessObjectId, etlJob.ETLJobId)) { result = ledger.Balance; return(result); } } } catch (Exception) { throw; } return(result); }
static void Main(string[] args) { try { ETLUtils etlUtil = new ETLUtils(); //etlUtil.logs("d:/logs/history.txt", "Start"); string FilePath = Application.StartupPath + "\\"; session = Utility.ETL.DatabaseHelper.GetNewSession(etlUtil.GetValFromXML(FilePath + "dbConfig.xml", "ID"), etlUtil.GetValFromXML(FilePath + "dbConfig.xml", "DBName")); //session = Utility.ETL.DatabaseHelper.GetNewSession(etlUtil.GetValFromXML("../../dbConfig.xml", "ID"), etlUtil.GetValFromXML("../../dbConfig.xml", "DBName")); //session = Utility.ETL.DatabaseHelper.GetNewSession("192.168.1.150","ERPCore_Vuong"); ProcessHelper processHelper = new ProcessHelper(); ETLUtils util = new ETLUtils(); Util ETLUtil = new Util(); Util.Populate(session); //etlUtil.logs("d:/logs/history.txt", "Start Launch"); #region TestLogic #endregion #region Init TempData For Testing #endregion #region InitBO ETLEntryObjectHistoryBO _ETLEntryObjectHistoryBO = new ETLEntryObjectHistoryBO(); ObjectEntryLogBO _ObjectEntryLogBO = new ObjectEntryLogBO(); ETLJobBO _ETLJobBO = new ETLJobBO(); ETLLogBO _ETLLogBO = new ETLLogBO(); BusinessObjectBO _BusinessObjectBO = new BusinessObjectBO(); ETL_DiaryJournal _ETL_DiaryJournal = new ETL_DiaryJournal(); #endregion #region TestETL //FinancialSupplierLiabilityBO bo = new FinancialSupplierLiabilityBO(); //ETLAccountingBO bo1 = new ETLAccountingBO(); //ETLInventoryBO inventoryBO = new ETLInventoryBO(); //double crbl = bo1.GetAccountingBalanceAtTime(session, Guid.Parse("11000000-0000-0000-0000-000000000001"), Guid.Parse("00110000-0000-0000-0000-000000000001"), DateTime.Parse("2014-01-03 12:00:00")); //COGS cogs = inventoryBO.GetPreviousCOGS(session, Guid.Parse("12300000-0000-0000-0000-000000000002")); //InventoryLedger crledger = session.GetObjectByKey<InventoryLedger>(Guid.Parse("e6be6f9a-a661-498a-a389-471945bde8c6")); //InventoryLedger preledger; //XPQuery<COGS> COGSQuery = new XPQuery<COGS>(session); //IQueryable<COGS> COGSCol = (from c in COGSQuery // where c.InventoryTransactionId.RowStatus >= Constant.ROWSTATUS_ACTIVE // select c); //preledger = inventoryBO.GetPreviousInventoryLedger(session, crledger); //XPQuery<InventoryLedger> ledgerQuery = new XPQuery<InventoryLedger>(session); //var TransactionList = (from r in ledgerQuery // select r.InventoryTransactionId).Distinct(); //ETL_Transaction tran = bo1.ExtractTransaction(session, Guid.Parse("5cbaa5b8-9e7c-48ed-b2a7-7353f4a15fc4"),"131"); //List<ETL_FinnancialSupplierLiabilityDetail> detail = bo.TransformTransactionToSupplierLiabilityDetail(session, tran, "131"); //bo.LoadFinancialSupplierLiabilityDetail(session, detail, "131"); //List<ETL_GeneralJournal> jl = new List<ETL_GeneralJournal>(); //ETL_GeneralJournal jo1 = new ETL_GeneralJournal(); //ETL_GeneralJournal jo2 = new ETL_GeneralJournal(); //ETL_GeneralJournal jo3 = new ETL_GeneralJournal(); //ETL_GeneralJournal jo4 = new ETL_GeneralJournal(); //jo1.AccountId = Guid.Parse("2B7F3BA9-4AE4-42E7-8568-F5D5B8A009EB");//111 //jo1.CreateDate = DateTime.Now; //jo1.Credit = 100; //jo1.Debit = 0; //jo1.Description = "111"; //jo1.JournalType = 'C'; //jl.Add(jo1); //jo2.AccountId = Guid.Parse("B107C675-2895-40B6-BD33-B4D501BBB0D9");//331 //jo2.CreateDate = DateTime.Now; //jo2.Credit = 100; //jo2.Debit = 0; //jo2.Description = "331"; //jo2.JournalType = 'C'; //jl.Add(jo2); //jo3.AccountId = Guid.Parse("BDEF51E0-5318-42AA-BA2C-D5F713EA0711");//121 //jo3.CreateDate = DateTime.Now; //jo3.Credit = 400; //jo3.Debit = 0; //jo3.Description = "121"; //jo3.JournalType = 'C'; //jl.Add(jo3); //jo4.AccountId = Guid.Parse("E573B446-D70D-46A3-9AE3-9E7F8A3C71C7");//521 //jo4.CreateDate = DateTime.Now; //jo4.Credit = 0; //jo4.Debit = 600; //jo4.Description = "521"; //jo4.JournalType = 'C'; //jl.Add(jo4); //List<ETL_GeneralJournal> rs = _ETL_DiaryJournal.JoinJournalList(session, jl); //ETL_Transaction transaction = new ETL_Transaction(); //transaction.Amount = 0; //transaction.Code = "ABC"; //transaction.CreateDate = DateTime.Now; //transaction.Description = "Description"; //transaction.GeneralJournalList = rs; //transaction.IsBalanceForward = false; //transaction.IssuedDate = DateTime.Now; //transaction.OwnerOrgId = Guid.Empty; //transaction.TransactionId = Guid.NewGuid(); //List<DJ_Fact> djList = _ETL_DiaryJournal.TransformToDiaryJournal(session, transaction); //List<ETL_GeneralJournal> rs = bo.JoinJournal(session, jl); //List<ETL_GeneralJournal> rs1 = bo.ClearJournalList(session, rs, Guid.Parse("C32268A6-5843-4199-A840-F6042B66686A")); //List<int> BusinessObjectTypeId = new List<int> { Constant.BusinessObjectType_Transaction, // Constant.BusinessObjectType_FinancialTransaction, // Constant.BusinessObjectType_InputInventoryCommandFinancialTransaction, // Constant.BusinessObjectType_OutputInventoryCommandFinancialTransaction, // Constant.BusinessObjectType_PaymentVoucherTransaction, // Constant.BusinessObjectType_PurcharseFinancialTransaction, // Constant.BusinessObjectType_ReceiptVoucherTransaction, // Constant.BusinessObjectType_SalesFinancialTransaction }; //Guid refid = _ETLJobBO.ETLGetNextProcessObject(session, Guid.Parse("7688b739-f90e-43ac-8ccb-5c0663e30d0b"), BusinessObjectTypeId); #endregion bool checkDependency = true; bool checkService = true; checkService = processHelper.IsExistMutex(Utility.Constant.Process_Running_Mutex_Name_ETLService); //Check service running //if (!checkService) //{ // Console.WriteLine("You can't start NAS_ETLMaster without ETLService.\n2s to close..."); // //Thread.Sleep(2000); // return; //} checkDependency = processHelper.IsExistMutex(Utility.Constant.Process_Running_Mutex_Name_ETLMaster); if (checkDependency) { Console.WriteLine("Another NAS_ETLMaster Process Is Running.\nCan't open more than one NAS_ETLMaster Process...\n2s to close"); return; } Mutex ETLMasterMutex = new Mutex(true, Utility.Constant.Process_Running_Mutex_Name_ETLMaster); Console.WriteLine("ETLMaster Running"); bool running = true; bool processRunning = false; do { for (int i = 0; i < processName.Length; i++) { if (run[i]) { processRunning = processHelper.IsExistMutex(Utility.Constant.Process_Running_Mutex_Name_ETLProcess + "_" + processName[i]); if (!processRunning) { Console.WriteLine("Calling {0}", processName[i]); CallProcess(processName[i]); } } } checkService = processHelper.IsExistMutex(Utility.Constant.Process_Running_Mutex_Name_ETLService); running = !processHelper.IsExistMutex(Utility.Constant.Process_Stop_Mutex_Name_ETLMaster) && running;// && checkService; Thread.Sleep(10000); }while (running); ETLMasterMutex.Dispose(); ETLMasterMutex.Close(); } catch (Exception ex) { ETLUtils etlUtil = new ETLUtils(); etlUtil.logs("d:/logs/history.txt", DateTime.Now.ToString() + " : Master Error:" + ex.Message); //Console.WriteLine(ex.ToString()); } finally { } }
/// <summary> /// Ghi sổ tài chính phiếu kho /// </summary> /// <param name="_InventoryCommand"></param> public void BookFinancialEntriesOfInventoryCommand(Guid _InventoryCommand) { UnitOfWork uow = null; try { uow = XpoHelper.GetNewUnitOfWork(); NAS.BO.Accounting.Journal.TransactionBOBase transactionBOBase = new TransactionBOBase(); InventoryCommand command = uow.GetObjectByKey <InventoryCommand>(_InventoryCommand); if (command == null) { throw new Exception("The InventoryCommand is not exist in system"); } InventoryCommandBO CheckBO = new InventoryCommandBO(); if (CheckBO.IsBookedEntriesForInventoryCommand(uow, _InventoryCommand)) { throw new Exception(string.Format("Không thể tiến hành vì Phiếu '{0}' đã hạch toán từ trước!", command.Code)); } int objectFinacialType = int.MinValue; int objectItemType = int.MinValue; Bill billArtifact = GetSourceArtifactFromInventoryCommand(uow, command.InventoryCommandId); if (command.CommandType == INVENTORY_COMMAND_TYPE.IN) { objectFinacialType = Utility.Constant.BusinessObjectType_InputInventoryCommandFinancialTransaction; objectItemType = Utility.Constant.BusinessObjectType_InputInventoryCommandItemTransaction; } else if (command.CommandType == INVENTORY_COMMAND_TYPE.OUT) { objectFinacialType = Utility.Constant.BusinessObjectType_OutputInventoryCommandFinancialTransaction; objectItemType = Utility.Constant.BusinessObjectType_OutputInventoryCommandItemTransaction; } if (command.InventoryCommandFinancialTransactions != null && command.InventoryCommandFinancialTransactions.Count > 0) { foreach (InventoryCommandFinancialTransaction t in command.InventoryCommandFinancialTransactions) { if (t.RowStatus != Utility.Constant.ROWSTATUS_BOOKED_ENTRY && t.RowStatus != Utility.Constant.ROWSTATUS_ACTIVE) { continue; } CanBookingEntryReturnValue rs = transactionBOBase.CanBookingEntry(t.TransactionId, true); if (rs == CanBookingEntryReturnValue.DEBIT_CREDIT_ZERO) { throw new Exception(string.Format("Bút toán '{0}' không hợp lệ! Nợ = Có = 0", t.Code)); } else if (rs == CanBookingEntryReturnValue.HAVE_NO_JOURNAL) { throw new Exception(string.Format("Bút toán '{0}' không chưa nhập định khoản", t.Code)); } else if (rs == CanBookingEntryReturnValue.INVALID_TRANSACTION_STATUS) { throw new Exception(string.Format("Bút toán '{0}' có trạng thái không hợp lệ", t.Code)); } else if (rs == CanBookingEntryReturnValue.MANY_SIDE) { throw new Exception(string.Format("Bút toán '{0}' không hợp lệ vì có nhiều tài khoản nợ và nhiều tài khoản có", t.Code)); } else if (rs == CanBookingEntryReturnValue.NOT_BALANCED) { throw new Exception(string.Format("Bút toán '{0}' chưa cân bằng", t.Code)); } } } foreach (InventoryCommandFinancialTransaction t in command.InventoryCommandFinancialTransactions) { if (t.RowStatus != Utility.Constant.ROWSTATUS_BOOKED_ENTRY && t.RowStatus != Utility.Constant.ROWSTATUS_ACTIVE) { continue; } if (!transactionBOBase.BookEntry(uow, t.TransactionId)) { throw new Exception("Xử lý ghi sổ phát sinh lỗi"); } t.AccountingPeriodId = AccountingPeriodBO.GetAccountingPeriod(uow, t.IssueDate); uow.FlushChanges(); } foreach (InventoryTransaction t in command.InventoryCommandItemTransactions) { if (t.RowStatus != Utility.Constant.ROWSTATUS_BOOKED_ENTRY && t.RowStatus != Utility.Constant.ROWSTATUS_ACTIVE) { continue; } if (billArtifact != null) { CurrencyBO currencyBO = new CurrencyBO(); COGSBO CogsBO = new COGSBO(); COGSBussinessBO COGSInventoryCommandBO = new COGSBussinessBO(); foreach (InventoryJournal j in t.InventoryJournals) { #region setting COGS if (command.CommandType == INVENTORY_COMMAND_TYPE.IN) { if (j.JournalType.Equals('A') && j.Debit > 0 && j.Credit == 0) { BillItem billItem = billArtifact.BillItems.Where( i => i.RowStatus == Utility.Constant.ROWSTATUS_ACTIVE && i.ItemUnitId == j.ItemUnitId).FirstOrDefault(); if (billItem == null) { throw new Exception("The ItemUnit is not exist in Bill"); } COGSInventoryCommandBO.CreateCOGS( uow, 0, j.Debit, DateTime.Now, billItem.Price, t.IssueDate, t.InventoryTransactionId, command.RelevantInventoryId.InventoryId, j.ItemUnitId.ItemUnitId, currencyBO.GetDefaultCurrency(uow).CurrencyId); } } else if (command.CommandType == INVENTORY_COMMAND_TYPE.OUT) { if (!j.JournalType.Equals('A') && j.Debit == 0 && j.Credit > 0) { COGS LastCogs = CogsBO.GetLastCOGS( uow, j.ItemUnitId.ItemUnitId, currencyBO.GetDefaultCurrency(uow).CurrencyId, command.RelevantInventoryId.InventoryId); COGSInventoryCommandBO.CreateCOGS( uow, j.Credit, 0, DateTime.Now, LastCogs == null ? 0 : LastCogs.COGSPrice, t.IssueDate, t.InventoryTransactionId, command.RelevantInventoryId.InventoryId, j.ItemUnitId.ItemUnitId, currencyBO.GetDefaultCurrency(uow).CurrencyId); } } #endregion //j.RowStatus = Utility.Constant.ROWSTATUS_BOOKED_ENTRY; } uow.FlushChanges(); } t.AccountingPeriodId = AccountingPeriodBO.GetAccountingPeriod(uow, t.IssueDate); t.RowStatus = Utility.Constant.ROWSTATUS_BOOKED_ENTRY; } command.RowStatus = Utility.Constant.ROWSTATUS_BOOKED_ENTRY; foreach (InventoryTransaction t in command.InventoryCommandItemTransactions) { if (t.RowStatus != Utility.Constant.ROWSTATUS_BOOKED_ENTRY && t.RowStatus != Utility.Constant.ROWSTATUS_ACTIVE) { continue; } BusinessObjectBO.CreateBusinessObject(uow, objectItemType, t.InventoryTransactionId, t.IssueDate); } foreach (InventoryCommandFinancialTransaction tf in command.InventoryCommandFinancialTransactions) { if (tf.RowStatus != Utility.Constant.ROWSTATUS_BOOKED_ENTRY && tf.RowStatus != Utility.Constant.ROWSTATUS_ACTIVE) { continue; } BusinessObjectBO.CreateBusinessObject(uow, objectFinacialType, tf.TransactionId, tf.IssueDate); } uow.CommitChanges(); } catch (Exception) { throw; } finally { if (uow != null) { uow.Dispose(); } } }
protected void panelBookingEntriesPopup_Callback(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e) { string[] args = e.Parameter.Split('|'); string command = args[0]; NAS.BO.Invoice.PurchaseInvoiceBO purchaseInvoiceBO = new NAS.BO.Invoice.PurchaseInvoiceBO(); switch (command) { case "Show": popupBookingEntriesForm.ShowOnPageLoad = true; BillId = Guid.Parse(args[1]); BindData(); popupBookingEntriesForm.HeaderText = String.Format("Hạch toán phiếu mua hàng - {0}", purchaseInvoiceBO.GetBillById(session, BillId).Code); break; case "Book": popupBookingEntriesForm.ShowOnPageLoad = true; /*2014-02-13 ERP-1417 Duc.Vo INS START*/ BusinessObjectBO BusinessObjectBO = new BusinessObjectBO(); int objectInventoryFinacialType = int.MinValue; //int objectInventoryItemType = int.MinValue; int objectInvoiceFinacialType = int.MinValue; int objectVoucherItemType = int.MinValue; /*2014-02-13 ERP-1417 Duc.Vo INS END*/ string messages = null; UnitOfWork uow = null; try { uow = XpoHelper.GetNewUnitOfWork(); Bill bill = purchaseInvoiceBO.GetBillById(uow, BillId); popupBookingEntriesForm.HeaderText = String.Format("Hạch toán phiếu mua hàng - {0}", bill.Code); if (bill.RowStatus.Equals(Utility.Constant.ROWSTATUS_BOOKED_ENTRY)) { messages = String.Format("Phiếu mua hàng '{0}' đã được ghi sổ", bill.Code); } else { IEnumerable <string> temp; List <string> errorList = new List <string>(); bool canBookEntriesTemp; bool canBookEntries = true; canBookEntriesTemp = gridviewBookingEntriesForm.CanBookEntries(out temp); canBookEntries = canBookEntries & canBookEntriesTemp; errorList.AddRange(temp); canBookEntriesTemp = gridviewVoucherBookingEntriesForm.CanBookEntries(out temp); canBookEntries = canBookEntries & canBookEntriesTemp; errorList.AddRange(temp); canBookEntriesTemp = gridviewInventoryBookingEntriesForm.CanBookEntries(out temp); canBookEntries = canBookEntries & canBookEntriesTemp; errorList.AddRange(temp); /*2014-02-13 ERP-1417 Duc.Vo INS START*/ if (bill is NAS.DAL.Invoice.PurchaseInvoice) { objectInventoryFinacialType = Utility.Constant.BusinessObjectType_InputInventoryCommandFinancialTransaction; //objectInventoryItemType = Utility.Constant.BusinessObjectType_InputInventoryCommandItemTransaction; objectInvoiceFinacialType = Utility.Constant.BusinessObjectType_PurcharseFinancialTransaction; objectVoucherItemType = Utility.Constant.BusinessObjectType_PaymentVoucherTransaction; } else if (bill is NAS.DAL.Invoice.SalesInvoice) { objectInventoryFinacialType = Utility.Constant.BusinessObjectType_OutputInventoryCommandFinancialTransaction; //objectInventoryItemType = Utility.Constant.BusinessObjectType_OutputInventoryCommandItemTransaction; objectInvoiceFinacialType = Utility.Constant.BusinessObjectType_SalesFinancialTransaction; objectVoucherItemType = Utility.Constant.BusinessObjectType_ReceiptVoucherTransaction; } /*2014-02-13 ERP-1417 Duc.Vo INS END*/ if (canBookEntries) { TransactionBOBase transactionBOBase = new TransactionBOBase(); bill.RowStatus = Utility.Constant.ROWSTATUS_BOOKED_ENTRY; //Book entries //var transactions = new XPCollection<Transaction>(uow, // gridviewBookingEntriesForm.GetDataSource()); var transactions1 = gridviewBookingEntriesForm.GetDataSource(); foreach (var transaction in transactions1) { transactionBOBase.BookEntry(uow, transaction.TransactionId); } var transactions2 = gridviewVoucherBookingEntriesForm.GetDataSource(); foreach (var transaction in transactions2) { transactionBOBase.BookEntry(uow, transaction.TransactionId); } var transactions3 = gridviewInventoryBookingEntriesForm.GetDataSource(); foreach (var transaction in transactions3) { transactionBOBase.BookEntry(uow, transaction.TransactionId); } /*2014-02-13 ERP-1417 Duc.Vo INS START*/ foreach (var transaction in transactions1) { BusinessObjectBO.CreateBusinessObject(uow, objectInvoiceFinacialType, transaction.TransactionId, transaction.IssueDate); } foreach (var transaction in transactions2) { BusinessObjectBO.CreateBusinessObject(uow, objectVoucherItemType, transaction.TransactionId, transaction.IssueDate); } foreach (var transaction in transactions3) { BusinessObjectBO.CreateBusinessObject(uow, objectInventoryFinacialType, transaction.TransactionId, transaction.IssueDate); } /*2014-02-13 ERP-1417 Duc.Vo INS END*/ } else { foreach (var message in errorList) { messages += message + "\n"; } } } uow.CommitChanges(); BindData(); } catch (Exception) { throw; } finally { if (uow != null) { uow.Dispose(); } if (messages != null) { panelBookingEntriesPopup.JSProperties["cpError"] = messages; } } break; case "Cancel": popupBookingEntriesForm.ShowOnPageLoad = false; BillId = Guid.Empty; panelBookingEntriesPopup.JSProperties["cpEvent"] = "Closing"; break; default: break; } }