public GoodsInInventoryBase(Guid transactionId, string accountCode) { this.fIsRelatedStrategy = false; this.fAccountCode = accountCode; this.fTransactionId = transactionId; this.fFinancialTransactionData = new ETL_GoodsInInventoryTransaction(); this.fFinancialTransformData = new ETL_GoodsInInventoryTransformData(); }
public GoodsInInventoryBase() { this.fIsRelatedStrategy = false; this.fAccountCode = string.Empty; this.fTransactionId = Guid.Empty; this.fFinancialTransactionData = new ETL_GoodsInInventoryTransaction(); this.fFinancialTransformData = new ETL_GoodsInInventoryTransformData(); }
protected ETL_GoodsInInventoryTransformData TransformTransaction ( Session session, ETL_GoodsInInventoryTransaction transaction, string AccountCode) { Util util = new Util(); ETL_GoodsInInventoryTransformData result = new ETL_GoodsInInventoryTransformData(); Account account = util.GetXpoObjectByFieldName <Account, string>(session, "Code", AccountCode, BinaryOperatorType.Equal); if (account == null) { return(null); } if (transaction == null) { return(null); } ETL_GoodsInInventoryTransaction etlTransaction = transaction; string subMainAccount = string.Empty; List <ETL_GoodsInInventoryDetail> detail = new List <ETL_GoodsInInventoryDetail>(); try { ETLAccountingBO accountingBO = new ETLAccountingBO(); FinancialLiabilityBO liabilityBO = new FinancialLiabilityBO(); List <ETL_GeneralJournal> JournalListJoined = JoinJournal(session, etlTransaction.GeneralJournalList); List <ETL_GeneralJournal> FinishJournalList = liabilityBO.ClearJournalList(session, JournalListJoined, account.AccountId); foreach (ETL_GeneralJournal journal in etlTransaction.GeneralJournalList) { ETL_GoodsInInventoryDetail temp = new ETL_GoodsInInventoryDetail(); temp.AccountCode = string.Empty; temp.CorrespondAccountCode = string.Empty; if (accountingBO.IsRelateAccount(session, account.AccountId, journal.AccountId)) { temp.AccountCode = subMainAccount = session.GetObjectByKey <Account>(journal.AccountId).Code; } else { temp.CorrespondAccountCode = session.GetObjectByKey <Account>(journal.AccountId).Code; } temp.CurrencyCode = session.GetObjectByKey <Currency>(journal.CurrencyId).Code; temp.IsBalanceForward = etlTransaction.IsBalanceForward; temp.IssueDate = etlTransaction.IssuedDate; temp.OwnerOrgId = etlTransaction.OwnerOrgId; temp.TransactionId = etlTransaction.TransactionId; temp.Credit = (decimal)journal.Credit; temp.Debit = (decimal)journal.Debit; temp.ArtifactId = transaction.ArtifactId; if (etlTransaction.Price > 0) { temp.Quantity = temp.Debit == 0 ? (double)temp.Credit / (double)etlTransaction.Price : (double)temp.Debit / (double)etlTransaction.Price; } else { temp.Quantity = 0; } detail.Add(temp); } result.MainAccountCode = subMainAccount; result.ETL_DetailList = detail; } catch (Exception) { return(null); } return(result); }
public ETL_GoodsInInventoryTransaction ExtractTransaction(Session session, Guid TransactionId, string AccountCode) { ETL_GoodsInInventoryTransaction resultTransaction = null; try { bool Acceptable = false; CriteriaOperator criteria_RowStatus = new BinaryOperator("RowStatus", Constant.ROWSTATUS_ACTIVE, BinaryOperatorType.GreaterOrEqual); CriteriaOperator criteria_Code = new BinaryOperator("Code", AccountCode, BinaryOperatorType.Equal); CriteriaOperator criteria = CriteriaOperator.And(criteria_Code, criteria_RowStatus); Account account = session.FindObject <Account>(criteria); Organization defaultOrg = Organization.GetDefault(session, OrganizationEnum.NAAN_DEFAULT); Organization currentDeployOrg = Organization.GetDefault(session, OrganizationEnum.QUASAPHARCO); Account defaultAccount = Account.GetDefault(session, DefaultAccountEnum.NAAN_DEFAULT); Transaction transaction = session.GetObjectByKey <Transaction>(TransactionId); if (transaction == null) { return(resultTransaction); } resultTransaction = new ETL_GoodsInInventoryTransaction(); if (currentDeployOrg != null) { resultTransaction.OwnerOrgId = currentDeployOrg.OrganizationId; } else { resultTransaction.OwnerOrgId = defaultOrg.OrganizationId; } resultTransaction.TransactionId = transaction.TransactionId; resultTransaction.Amount = transaction.Amount; resultTransaction.Code = transaction.Code; resultTransaction.CreateDate = transaction.CreateDate; resultTransaction.Description = transaction.Description; resultTransaction.IsBalanceForward = (transaction is BalanceForwardTransaction); resultTransaction.IssuedDate = transaction.IssueDate; resultTransaction.UpdateDate = transaction.UpdateDate; resultTransaction.GeneralJournalList = new List <ETL_GeneralJournal>(); double numOfItem = 0; InventoryCommand command = null; if (transaction != null) { InventoryJournal inventoryJournal = null; try { inventoryJournal = transaction.InventoryJournalFinancials.FirstOrDefault().InventoryJournalId; numOfItem = inventoryJournal.Debit > 0 ? inventoryJournal.Debit : inventoryJournal.Credit; command = (inventoryJournal.InventoryTransactionId as InventoryCommandItemTransaction).InventoryCommandId; } catch (Exception) { numOfItem = 0; command = null; } } resultTransaction.Quantity = numOfItem; resultTransaction.ArtifactId = command == null ? Guid.Empty : command.InventoryCommandId; if (numOfItem != 0) { resultTransaction.Price = (decimal)resultTransaction.Amount / (decimal)numOfItem; } else { resultTransaction.Price = 0; } foreach (GeneralJournal journal in transaction.GeneralJournals.Where(i => i.RowStatus == Constant.ROWSTATUS_BOOKED_ENTRY || i.RowStatus == Constant.ROWSTATUS_ACTIVE)) { if ((journal.Debit + journal.Credit) == 0) { continue; } ETL_GeneralJournal tempJournal = new ETL_GeneralJournal(); if (journal.AccountId != null) { tempJournal.AccountId = journal.AccountId.AccountId; } else { tempJournal.AccountId = defaultAccount.AccountId; } tempJournal.CreateDate = journal.CreateDate; tempJournal.Credit = journal.Credit; if (journal.CurrencyId == null) { tempJournal.CurrencyId = CurrencyBO.DefaultCurrency(session).CurrencyId; } else { tempJournal.CurrencyId = journal.CurrencyId.CurrencyId; } tempJournal.Debit = journal.Debit; tempJournal.Description = journal.Description; tempJournal.GeneralJournalId = journal.GeneralJournalId; tempJournal.JournalType = journal.JournalType; resultTransaction.GeneralJournalList.Add(tempJournal); Account tmpAccount = session.GetObjectByKey <Account>(tempJournal.AccountId); bool flgIsLeafAccount = tmpAccount.Accounts == null || tmpAccount.Accounts.Count == 0 ? true : false; if (flgIsLeafAccount && accountingBO.IsRelateAccount(session, account.AccountId, tempJournal.AccountId)) { Acceptable = true; } } if (!Acceptable) { return(null); } } catch (Exception ex) { throw ex; } resultTransaction.AccountCode = AccountCode; return(resultTransaction); }