Пример #1
0
        public ETL_Voucher ExtractReceiptVoucher(Session session, Guid VoucherId, bool ExtractTransaction)
        {
            ETL_Voucher result = null;

            try
            {
                ReceiptVouches voucher = session.GetObjectByKey <ReceiptVouches>(VoucherId);
                if (voucher == null)
                {
                    return(null);
                }
                result           = new ETL_Voucher();
                result.Credit    = (decimal)voucher.SumOfCredit;
                result.Debit     = (decimal)voucher.SumOfDebit;
                result.IssueDate = voucher.IssuedDate;
                result.VoucherId = voucher.VouchesId;
                if (ExtractTransaction)
                {
                    ETLAccountingBO etlAccountingBO = new ETLAccountingBO();
                    result.FinancialTransactionList = new List <Accounting.TempData.ETL_Transaction>();
                    foreach (ReceiptVouchesTransaction transaction in voucher.ReceiptVouchesTransactions)
                    {
                        ETL_Transaction temp = new ETL_Transaction();
                        temp = etlAccountingBO.ExtractTransaction(session, transaction.TransactionId);
                        result.FinancialTransactionList.Add(temp);
                    }
                }
            }
            catch (Exception)
            {
            }
            return(result);
        }
Пример #2
0
        public ETL_GeneralJournal GetJournal(Session session, List <ETL_GeneralJournal> journalList, string AccountCode)
        {
            ETLAccountingBO    accountingBO = new ETLAccountingBO();
            ETL_GeneralJournal result       = new ETL_GeneralJournal();

            try
            {
                if (journalList == null)
                {
                    return(null);
                }
                Util    util    = new Util();
                Account account = util.GetXpoObjectByFieldName <Account, string>(session, "Code", AccountCode, BinaryOperatorType.Equal);
                if (account == null)
                {
                    return(null);
                }
                foreach (ETL_GeneralJournal journal in journalList)
                {
                    if (accountingBO.IsRelateAccount(session, journal.AccountId, account.AccountId))
                    {
                        return(journal);
                    }
                }
                return(null);
            }
            catch (Exception)
            {
                return(null);
            }
            return(result);
        }
        private FinancialSalesOrManufactureExpenseSummary_Fact CreateFinancialSalesOrManufactureExpenseSummary(
            Session session,
            Guid OwnerOrgId,
            DateTime IssueDate,
            bool IsBalanceForward
            )
        {
            FinancialSalesOrManufactureExpenseSummary_Fact result = new FinancialSalesOrManufactureExpenseSummary_Fact(session);

            try
            {
                ETLAccountingBO accountingBO = new ETLAccountingBO();
                DimBO           dimBO        = new DimBO();
                result.MonthDimId    = dimBO.GetMonthDim(session, (short)IssueDate.Month);
                result.YearDimId     = dimBO.GetYearDim(session, (short)IssueDate.Year);
                result.OwnerOrgDimId = dimBO.GetOwnerOrgDim(session, OwnerOrgId);
                result.RowStatus     = Constant.ROWSTATUS_ACTIVE;
                if (result.MonthDimId == null || result.YearDimId == null || result.OwnerOrgDimId == null)
                {
                    return(null);
                }
                result.Save();
                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #4
0
        public List <ETL_GeneralJournal> JoinJournal(Session session, List <ETL_GeneralJournal> journalList)
        {
            List <ETL_GeneralJournal> result = new List <ETL_GeneralJournal>();

            try
            {
                ETLAccountingBO accountingBO = new ETLAccountingBO();
                foreach (ETL_GeneralJournal journal in journalList)
                {
                    ETL_GeneralJournal rsJournal = GetJournal(session, result, journal.AccountId);
                    if (rsJournal == null)
                    {
                        rsJournal             = new ETL_GeneralJournal();
                        rsJournal.AccountId   = accountingBO.GetHighestAccount(session, journal.AccountId).AccountId;
                        rsJournal.CreateDate  = journal.CreateDate;
                        rsJournal.Credit      = journal.Credit;
                        rsJournal.CurrencyId  = journal.CurrencyId;
                        rsJournal.Debit       = journal.Debit;
                        rsJournal.JournalType = journal.JournalType;
                        result.Add(rsJournal);
                    }
                    else
                    {
                        rsJournal.Credit += journal.Credit;
                        rsJournal.Debit  += journal.Debit;
                    }
                }
                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
            return(result);
        }
Пример #5
0
        public List <ETL_FinancialOnTheWayBuyingGoodDetail> TransformTransactionOnTheWayBuyingGoodDetail(Session session, ETL_Transaction transaction, string AccountCode)
        {
            Util    util    = new Util();
            Account account = util.GetXpoObjectByFieldName <Account, string>(session, "Code", AccountCode, BinaryOperatorType.Equal);

            if (account == null)
            {
                return(null);
            }
            if (transaction == null)
            {
                return(null);
            }
            ETL_Transaction etlTransaction = transaction;
            List <ETL_FinancialOnTheWayBuyingGoodDetail> detailList = new List <ETL_FinancialOnTheWayBuyingGoodDetail>();

            try
            {
                ETLAccountingBO      accountingBO          = new ETLAccountingBO();
                FinancialLiabilityBO liabilityBO           = new FinancialLiabilityBO();
                ETL_FinancialOnTheWayBuyingGoodDetail temp = null;
                List <ETL_GeneralJournal>             JournalListJoined = liabilityBO.JoinJournal(session, etlTransaction.GeneralJournalList);
                List <ETL_GeneralJournal>             FinishJournalList = liabilityBO.ClearJournalList(session, JournalListJoined, account.AccountId);
                foreach (ETL_GeneralJournal journal in JournalListJoined)
                {
                    temp                       = new ETL_FinancialOnTheWayBuyingGoodDetail();
                    temp.AccountCode           = "";
                    temp.CorrespondAccountCode = "";
                    if (accountingBO.IsRelateAccount(session, account.AccountId, journal.AccountId))
                    {
                        temp.AccountCode = session.GetObjectByKey <Account>(journal.AccountId).Code;
                    }
                    else
                    {
                        temp.CorrespondAccountCode = session.GetObjectByKey <Account>(journal.AccountId).Code;
                    }
                    temp.ActualPrice             = (transaction as ETL_TransactionS04a6DN).ActualPrice;
                    temp.BookedPrice             = (transaction as ETL_TransactionS04a6DN).BookedPrice;
                    temp.IssueDate               = etlTransaction.IssuedDate;
                    temp.OwnerOrgId              = etlTransaction.OwnerOrgId;
                    temp.TransactionId           = etlTransaction.TransactionId;
                    temp.Credit                  = journal.Credit;
                    temp.Debit                   = journal.Debit;
                    temp.Credit                  = journal.Credit;
                    temp.Debit                   = journal.Debit;
                    temp.CurrencyCode            = session.GetObjectByKey <Currency>(journal.CurrencyId).Code;
                    temp.TransactionId           = etlTransaction.TransactionId;
                    temp.IsBalanceForward        = etlTransaction.IsBalanceForward;
                    temp.PurchaseInvoiceId       = (transaction as ETL_TransactionS04a6DN).PurchaseInvoiceId;
                    temp.InputInventoryCommandId = (transaction as ETL_TransactionS04a6DN).InputInventoryCommandId;
                    detailList.Add(temp);
                }
            }
            catch (Exception)
            {
                return(null);
            }
            return(detailList);
        }
        private List <ETL_GeneralJournal> JoinJournal(Session session, List <ETL_GeneralJournal> journalList, string mainAccountCode)
        {
            List <ETL_GeneralJournal> result = new List <ETL_GeneralJournal>();

            CriteriaOperator criteria_RowStatus = new BinaryOperator("RowStatus", Constant.ROWSTATUS_ACTIVE, BinaryOperatorType.GreaterOrEqual);
            CriteriaOperator criteria_Code      = new BinaryOperator("Code", mainAccountCode, BinaryOperatorType.Equal);
            CriteriaOperator criteria           = CriteriaOperator.And(criteria_Code, criteria_RowStatus);
            Account          mainAccount        = session.FindObject <Account>(criteria);

            if (mainAccount == null)
            {
                return(null);
            }
            try
            {
                ETLAccountingBO accountingBO = new ETLAccountingBO();
                foreach (ETL_GeneralJournal journal in journalList)
                {
                    if (accountingBO.IsRelateAccount(session, mainAccount.AccountId, journal.AccountId))
                    {
                        ETL_GeneralJournal masterJournal = new ETL_GeneralJournal();
                        masterJournal.AccountId   = journal.AccountId;
                        masterJournal.CreateDate  = journal.CreateDate;
                        masterJournal.Credit      = journal.Credit;
                        masterJournal.Debit       = journal.Debit;
                        masterJournal.CurrencyId  = journal.CurrencyId;
                        masterJournal.JournalType = journal.JournalType;
                        result.Add(masterJournal);
                    }
                    else
                    {
                        ETL_GeneralJournal rsJournal = GetJournal(session, result, journal.AccountId);
                        if (rsJournal == null)
                        {
                            rsJournal             = new ETL_GeneralJournal();
                            rsJournal.AccountId   = accountingBO.GetHighestAccount(session, journal.AccountId).AccountId;
                            rsJournal.CreateDate  = journal.CreateDate;
                            rsJournal.Credit      = journal.Credit;
                            rsJournal.CurrencyId  = journal.CurrencyId;
                            rsJournal.Debit       = journal.Debit;
                            rsJournal.JournalType = journal.JournalType;
                            result.Add(rsJournal);
                        }
                        else
                        {
                            rsJournal.Credit += journal.Credit;
                            rsJournal.Debit  += journal.Debit;
                        }
                    }
                }

                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #7
0
        public List <DiaryJournalTemplate> TransformTransactionToTemplateArea(Session session, ETL_Transaction transaction, string AccountCode)
        {
            Util    util    = new Util();
            Account account = util.GetXpoObjectByFieldName <Account, string>(session, "Code", AccountCode, BinaryOperatorType.Equal);

            if (account == null)
            {
                return(null);
            }
            if (transaction == null)
            {
                return(null);
            }
            ETL_Transaction etlTransaction = transaction;

            List <DiaryJournalTemplate> detail = new List <DiaryJournalTemplate>();

            try
            {
                ETLAccountingBO           accountingBO      = new ETLAccountingBO();
                List <ETL_GeneralJournal> JournalListJoined = JoinJournal(session, etlTransaction.GeneralJournalList);
                List <ETL_GeneralJournal> FinishJournalList = ClearJournalList(session, JournalListJoined, account.AccountId);
                foreach (ETL_GeneralJournal journal in FinishJournalList)
                {
                    DiaryJournalTemplate temp = new DiaryJournalTemplate();

                    temp.FinancialAccountDimCode           = "";
                    temp.CorrespondFinancialAccountDimCode = "";
                    if (accountingBO.IsRelateAccount(session, account.AccountId, journal.AccountId))
                    {
                        temp.FinancialAccountDimCode = session.GetObjectByKey <Account>(journal.AccountId).Code;
                    }
                    else
                    {
                        temp.CorrespondFinancialAccountDimCode = session.GetObjectByKey <Account>(journal.AccountId).Code;
                    }
                    temp.CurrencyDimCode = session.GetObjectByKey <Currency>(journal.CurrencyId).Code;
                    temp.IssueDate       = etlTransaction.IssuedDate;
                    temp.OwnerOrgId      = etlTransaction.OwnerOrgId;

                    temp.TransactionId = etlTransaction.TransactionId;
                    temp.Credit        = (double)journal.Credit;
                    temp.Debit         = (double)journal.Debit;

                    detail.Add(temp);
                }
            }
            catch (Exception)
            {
                return(null);
            }

            return(detail);
        }
Пример #8
0
        private GoodsInTransitForSaleSummary_Fact CreateGoodsInTransitForSaleSummary_Fact(Session session,
                                                                                          Guid OwnerOrgId,
                                                                                          DateTime IssueDate,
                                                                                          string FinancialAccountCode,
                                                                                          bool IsBalanceForward)
        {
            GoodsInTransitForSaleSummary_Fact result = new GoodsInTransitForSaleSummary_Fact(session);

            try
            {
                ETLAccountingBO accountingBO = new ETLAccountingBO();
                DimBO           dimBO        = new DimBO();
                result.BeginCreditBalance    = 0;
                result.BeginDebitBalance     = 0;
                result.CreditSum             = 0;
                result.DebitSum              = 0;
                result.EndCreditBalance      = 0;
                result.EndDebitBalance       = 0;
                result.FinancialAccountDimId = accountingBO.GetFinancialAccountDim(session, FinancialAccountCode);
                result.MonthDimId            = dimBO.GetMonthDim(session, (short)IssueDate.Month);
                result.YearDimId             = dimBO.GetYearDim(session, (short)IssueDate.Year);
                result.OwnerOrgDimId         = dimBO.GetOwnerOrgDim(session, OwnerOrgId);
                result.RowStatus             = Constant.ROWSTATUS_ACTIVE;
                if (result.FinancialAccountDimId == null ||
                    result.MonthDimId == null ||
                    result.YearDimId == null ||
                    result.OwnerOrgDimId == null)
                {
                    return(null);
                }

                var date = new DateTime(IssueDate.Year, IssueDate.Month, 1);
                GoodsInTransitForSaleSummary_Fact previousSummary = GetGoodsInTransitForSaleSummary_Fact(session,
                                                                                                         OwnerOrgId, date.AddMonths(-1), FinancialAccountCode);

                if (previousSummary != null)
                {
                    result.BeginDebitBalance  = previousSummary.EndDebitBalance;
                    result.BeginCreditBalance = previousSummary.EndCreditBalance;
                }
                result.Save();

                result.Save();
                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #9
0
        public ETL_Transaction ExtractDiaryJournalTransaction(Session session, Guid TransactionId)
        {
            ETL_Transaction result = null;

            try
            {
                ETLAccountingBO accountingBO = new ETLAccountingBO();
                result = accountingBO.ExtractTransaction(session, TransactionId);
            }
            catch (Exception)
            {
                return(null);
            }
            return(result);
        }
Пример #10
0
        public bool IsJoinableJournals(Session session, ETL_GeneralJournal journal1, ETL_GeneralJournal journal2)
        {
            bool            result       = false;
            ETLAccountingBO accountingBO = new ETLAccountingBO();

            try
            {
                result = (accountingBO.IsRelateAccount(session, journal1.AccountId, journal2.AccountId) || accountingBO.IsRelateAccount(session, journal1.AccountId, journal2.AccountId)) &&
                         ((journal1.Credit * journal2.Credit > 0) || (journal1.Debit * journal2.Debit > 0)) &&
                         (journal1.CurrencyId == journal2.CurrencyId) &&
                         (journal1.JournalType == journal2.JournalType);
            }
            catch (Exception)
            {
                return(false);
            }
            return(result);
        }
Пример #11
0
        public FinancialOnTheWayBuyingGoodSummary CreateFinancialOnTheWayBuyingGoodSummary(Session session,
                                                                                           Guid OwnerOrgId,
                                                                                           DateTime IssueDate,
                                                                                           string FinancialAccountCode)
        {
            FinancialOnTheWayBuyingGoodSummary result = new FinancialOnTheWayBuyingGoodSummary(session);

            try
            {
                ETLAccountingBO     accountingBO = new ETLAccountingBO();
                FinancialAccountDim accountDim   = accountingBO.GetFinancialAccountDim(session, FinancialAccountCode);
                DimBO       dimBO     = new DimBO();
                MonthDim    monthDim  = dimBO.GetMonthDim(session, (short)IssueDate.Month);
                YearDim     yearDim   = dimBO.GetYearDim(session, (short)IssueDate.Year);
                OwnerOrgDim ownOrgDim = dimBO.GetOwnerOrgDim(session, OwnerOrgId);
                result.BeginBalance          = 0;
                result.FinancialAccountDimId = accountDim != null ? accountDim : accountingBO.CreateFinancialAccountDim(session, FinancialAccountCode);
                result.MonthDimId            = monthDim != null ? monthDim : dimBO.CreateMonthDim(session, (short)IssueDate.Month);
                result.YearDimId             = yearDim != null ? yearDim : dimBO.CreateYearDim(session, (short)IssueDate.Year);
                result.OwnerOrgDimId         = ownOrgDim != null ? ownOrgDim : dimBO.CreateOwnerOrgDim(session, OwnerOrgId);
                result.RowStatus             = Constant.ROWSTATUS_ACTIVE;
                if (result.FinancialAccountDimId == null || result.MonthDimId == null || result.YearDimId == null || result.OwnerOrgDimId == null)
                {
                    return(null);
                }
                var date = new DateTime(IssueDate.Year, IssueDate.Month, 1);
                FinancialOnTheWayBuyingGoodSummary previousSummary = GetFinancialOnTheWayBuyingGoodSummary(session,
                                                                                                           OwnerOrgId, date.AddMonths(-1), FinancialAccountCode);

                if (previousSummary != null)
                {
                    result.BeginBalance = previousSummary.EndBalance;
                }
                result.Save();
                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #12
0
        public List <ETL_GeneralJournal> JoinJournalList(Session session, List <ETL_GeneralJournal> journalList)
        {
            List <ETL_GeneralJournal> result = null;

            try
            {
                result = new List <ETL_GeneralJournal>();
                ETLAccountingBO accountingBO = new ETLAccountingBO();

                foreach (ETL_GeneralJournal journal in journalList)
                {
                    if (!IsOffBalanceAccount(session, journal.AccountId))
                    {
                        bool flag = false;
                        foreach (ETL_GeneralJournal rs_journal in result)
                        {
                            if (IsJoinableJournals(session, rs_journal, journal))
                            {
                                flag                 = true;
                                rs_journal.Debit    += journal.Debit;
                                rs_journal.Credit   += journal.Credit;
                                rs_journal.AccountId = accountingBO.GetHighestAccount(session, rs_journal.AccountId).AccountId;
                            }
                        }
                        if (!flag)
                        {
                            ETL_GeneralJournal temp_journal = journal;
                            temp_journal.AccountId = accountingBO.GetHighestAccount(session, temp_journal.AccountId).AccountId;
                            result.Add(temp_journal);
                        }
                    }
                }
            }
            catch (Exception)
            {
                return(null);
            }
            return(result);
        }
Пример #13
0
        public ETL_Bill ExtractSalesInvoice(Session session, Guid BillId, bool ExtractFinancialTransaction, bool ExtractInventoryTransaction)
        {
            ETL_Bill result = null;

            try
            {
                result = ExtractSalesInvoice(session, BillId);
                if (result == null)
                {
                    return(null);
                }
                SalesInvoice invoice = session.GetObjectByKey <SalesInvoice>(BillId);
                if (ExtractFinancialTransaction)
                {
                    ETLAccountingBO _ETLAccountingPeriodBO = new ETLAccountingBO();
                    result.FinancialTranSactionList = new List <ETL_Transaction>();
                    foreach (SaleInvoiceTransaction transaction in invoice.SaleInvoiceTransactions)
                    {
                        ETL_Transaction temp = _ETLAccountingPeriodBO.ExtractTransaction(session, transaction.TransactionId);
                        result.FinancialTranSactionList.Add(temp);
                    }
                }
                if (ExtractInventoryTransaction)
                {
                    ETLInventoryBO _ETLInventoryBO = new ETLInventoryBO();
                    result.InventoryTranSactionList = new List <Inventory.TempData.ETL_InventoryTransaction>();
                    foreach (SalesInvoiceInventoryTransaction transaction in invoice.SalesInvoiceInventoryTransactions)
                    {
                        ETL_InventoryTransaction temp = _ETLInventoryBO.ExtractInventoryTransaction(session, transaction.InventoryTransactionId);
                        result.InventoryTranSactionList.Add(temp);
                    }
                }
            }
            catch (Exception)
            {
                return(null);
            }
            return(result);
        }
Пример #14
0
        public ETL_GeneralJournal JoinJournal(Session session, ETL_GeneralJournal journal1, ETL_GeneralJournal journal2)
        {
            ETL_GeneralJournal result       = null;
            ETLAccountingBO    accountingBO = new ETLAccountingBO();

            try
            {
                if (!IsJoinableJournals(session, journal1, journal2))
                {
                    return(null);
                }
                result           = journal1;
                result.Debit    += journal2.Debit;
                result.Credit   += journal2.Credit;
                result.AccountId = accountingBO.GetHighestAccount(session, journal1.AccountId).AccountId;
                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
            return(result);
        }
Пример #15
0
        public FinancialSupplierLiabilitySummary_Fact CreateFinnancialSupplierLiabilitySummaryFact(Session session,
                                                                                                   Guid OwnerOrgId,
                                                                                                   Guid SupplierOrgId,
                                                                                                   DateTime IssueDate,
                                                                                                   string FinancialAccountCode,
                                                                                                   bool IsBalanceForward)
        {
            FinancialSupplierLiabilitySummary_Fact result = new FinancialSupplierLiabilitySummary_Fact(session);

            try
            {
                ETLAccountingBO accountingBO = new ETLAccountingBO();
                DimBO           dimBO        = new DimBO();
                result.BeginCreditBalance    = 0;
                result.BeginDebitBalance     = 0;
                result.CreditSum             = 0;
                result.DebitSum              = 0;
                result.EndCreditBalance      = 0;
                result.EndDebitBalance       = 0;
                result.FinancialAccountDimId = accountingBO.GetFinancialAccountDim(session, FinancialAccountCode);
                result.MonthDimId            = dimBO.GetMonthDim(session, (short)IssueDate.Month);
                result.YearDimId             = dimBO.GetYearDim(session, (short)IssueDate.Year);
                result.OwnerOrgDimId         = dimBO.GetOwnerOrgDim(session, OwnerOrgId);
                result.RowStatus             = Constant.ROWSTATUS_ACTIVE;
                result.SupplierOrgDimId      = dimBO.GetSupplierOrgDim(session, SupplierOrgId);
                if (result.FinancialAccountDimId == null || result.MonthDimId == null || result.YearDimId == null || result.OwnerOrgDimId == null || result.SupplierOrgDimId == null)
                {
                    return(null);
                }
                result.Save();
                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #16
0
        // Create
        public DiaryJournal_Fact CreateDiaryJournalFact(Session session,
                                                        Guid OwnerOrgId,
                                                        DateTime IssueDate,
                                                        DiaryJournalTemplate diaryJournal,
                                                        string accountCode)
        {
            DiaryJournal_Fact result = new DiaryJournal_Fact(session);

            try
            {
                ETLAccountingBO accountingBO = new ETLAccountingBO();
                DimBO           dimBO        = new DimBO();
                result.FinancialAccountDimId = accountingBO.GetFinancialAccountDim(session, accountCode);
                result.MonthDimId            = dimBO.GetMonthDim(session, (short)IssueDate.Month);
                result.YearDimId             = dimBO.GetYearDim(session, (short)IssueDate.Year);
                result.OwnerOrgDimId         = dimBO.GetOwnerOrgDim(session, OwnerOrgId);
                //result.CreditSum = 0;
                //result.DebitSum = 0;
                //result.BeginCreditBalance = 0;
                //result.BeginDebitBalance = 0;
                //result.EndCreditBalance = 0;
                //result.EndDebitBalance = 0;

                if (result.FinancialAccountDimId == null || result.MonthDimId == null || result.YearDimId == null || result.OwnerOrgDimId == null)
                {
                    return(null);
                }
                result.Save();
            }
            catch (Exception)
            {
                return(null);
            }

            return(result);
        }
Пример #17
0
        public bool IsExistInJournalList(Session session, List <ETL_GeneralJournal> journalList, string AccountCode)
        {
            ETLAccountingBO accountingBO = new ETLAccountingBO();

            if (journalList == null)
            {
                return(false);
            }
            if (journalList.Count == 0)
            {
                return(false);
            }
            bool result = false;

            try
            {
                Util    util    = new Util();
                Account account = util.GetXpoObjectByFieldName <Account, string>(session, "Code", AccountCode, BinaryOperatorType.Equal);
                if (account == null)
                {
                    return(false);
                }
                foreach (ETL_GeneralJournal journal in journalList)
                {
                    if (accountingBO.IsRelateAccount(session, journal.AccountId, account.AccountId))
                    {
                        return(true);
                    }
                }
            }
            catch (Exception)
            {
                return(false);
            }
            return(result);
        }
Пример #18
0
        private void CreateFinancialActualPriceDetail(
            Session session,
            ETL_FinanciaActualPriceDetail Detail,
            string MainAccountCode)
        {
            try
            {
                Util util = new Util();
                CorrespondFinancialAccountDim defaultCorrespondindAcc = CorrespondFinancialAccountDim.GetDefault(session, CorrespondFinancialAccountDimEnum.NAAN_DEFAULT);
                FinancialAccountDim           defaultFinancialAcc     = FinancialAccountDim.GetDefault(session, FinancialAccountDimEnum.NAAN_DEFAULT);
                ETLAccountingBO accountingBO               = new ETLAccountingBO();
                FinancialActualPriceSummary_Fact Fact      = GetFinancialActualPriceSummaryFact(session, Detail.OwnerOrgId, Detail.IssueDate, MainAccountCode);
                FinancialActualPriceDetail       newDetail = new FinancialActualPriceDetail(session);
                if (Fact == null)
                {
                    Fact = CreateFinancialActualPriceSummaryFact(session, Detail.OwnerOrgId, Detail.IssueDate, MainAccountCode, Detail.IsBalanceForward);
                    if (Fact == null)
                    {
                        return;
                    }
                }
                else
                {
                    var date = new DateTime(Detail.IssueDate.Year, Detail.IssueDate.Month, 1);
                    FinancialActualPriceSummary_Fact previousSummary = GetFinancialActualPriceSummaryFact(session,
                                                                                                          Detail.OwnerOrgId, date.AddMonths(-1), MainAccountCode);

                    if (previousSummary != null)
                    {
                        Fact.BeginDebitBalance  = previousSummary.EndDebitBalance;
                        Fact.BeginCreditBalance = previousSummary.EndCreditBalance;
                    }
                }

                CorrespondFinancialAccountDim correspondFinancialAccountDim = null;
                FinancialAccountDim           financialAccountDim           = null;

                if (!Detail.CorrespondAccountCode.Equals(string.Empty))
                {
                    correspondFinancialAccountDim = util.GetXpoObjectByFieldName <CorrespondFinancialAccountDim, string>(session, "Code", Detail.CorrespondAccountCode, BinaryOperatorType.Equal);
                }
                if (!MainAccountCode.Equals(string.Empty))
                {
                    financialAccountDim = util.GetXpoObjectByFieldName <FinancialAccountDim, string>(session, "Code", MainAccountCode, BinaryOperatorType.Equal);
                }

                FinancialTransactionDim financialTransactionDim = util.GetXpoObjectByFieldName <FinancialTransactionDim, Guid>(session, "RefId", Detail.TransactionId, BinaryOperatorType.Equal);

                CurrencyDim currencyDim = util.GetXpoObjectByFieldName <CurrencyDim, string>(session, "Code", Detail.CurrencyCode, BinaryOperatorType.Equal);

                if (financialTransactionDim == null)
                {
                    financialTransactionDim = accountingBO.CreateFinancialTransactionDim(session, Detail.TransactionId);
                    if (financialTransactionDim == null)
                    {
                        return;
                    }
                }

                if (financialAccountDim == null && !MainAccountCode.Equals(string.Empty))
                {
                    financialAccountDim = accountingBO.CreateFinancialAccountDim(session, MainAccountCode);
                }
                if (correspondFinancialAccountDim == null && !Detail.CorrespondAccountCode.Equals(string.Empty))
                {
                    correspondFinancialAccountDim = accountingBO.CreateCorrespondFinancialAccountDim(session, Detail.CorrespondAccountCode);
                }

                if (currencyDim == null && !Detail.CurrencyCode.Equals(string.Empty))
                {
                    currencyDim = accountingBO.CreateCurrencyDim(session, Detail.CurrencyCode);
                }

                newDetail.CorrespondFinancialAccountDimId = correspondFinancialAccountDim;
                newDetail.Credit                             = Detail.Credit;
                newDetail.Debit                              = Detail.Debit;
                newDetail.CurrencyDimId                      = currencyDim;
                newDetail.FinancialAccountDimId              = financialAccountDim;
                newDetail.FinancialTransactionDimId          = financialTransactionDim;
                newDetail.FinancialActualPriceSummary_FactId = Fact;

                /*2014-02-22 ERP-1417 Duc.Vo INS START*/

                if (newDetail.FinancialAccountDimId == null)
                {
                    newDetail.FinancialAccountDimId = defaultFinancialAcc;
                }
                if (newDetail.CorrespondFinancialAccountDimId == null)
                {
                    newDetail.CorrespondFinancialAccountDimId = defaultCorrespondindAcc;
                }
                /*2014-02-22 ERP-1417 Duc.Vo INS END*/

                newDetail.RowStatus = Constant.ROWSTATUS_ACTIVE;
                newDetail.Save();

                if (Detail.IsBalanceForward)
                {
                    Fact.BeginCreditBalance = Fact.EndCreditBalance = Detail.Credit;
                    Fact.BeginDebitBalance  = Fact.EndDebitBalance = Detail.Debit;
                    Fact.CreditSum          = 0;
                    Fact.DebitSum           = 0;
                }
                else
                {
                    Fact.CreditSum = Fact.FinancialActualPriceDetails.Where(i => i.RowStatus == 1 &&
                                                                            i.Credit > 0 && i.CorrespondFinancialAccountDimId == defaultCorrespondindAcc).Sum(d => d.Credit);

                    Fact.DebitSum = Fact.FinancialActualPriceDetails.Where(i => i.RowStatus == 1 &&
                                                                           i.Debit > 0 && i.CorrespondFinancialAccountDimId == defaultCorrespondindAcc).Sum(d => d.Debit);

                    Fact.EndCreditBalance = Fact.BeginCreditBalance + Fact.CreditSum - Fact.DebitSum;
                    Fact.EndDebitBalance  = Fact.BeginDebitBalance + Fact.DebitSum - Fact.CreditSum;
                }
                Fact.Save();
            }
            catch (Exception)
            {
                return;
            }
        }
Пример #19
0
        protected ETL_FinanciaActualPriceTransformData TransformTransactionFinancialActualPriceDetail
        (
            Session session,
            ETL_ActualPriceTransaction transaction,
            string AccountCode)
        {
            Util util = new Util();
            ETL_FinanciaActualPriceTransformData result = new ETL_FinanciaActualPriceTransformData();
            Account account = util.GetXpoObjectByFieldName <Account, string>(session, "Code", AccountCode, BinaryOperatorType.Equal);

            if (account == null)
            {
                return(null);
            }
            if (transaction == null)
            {
                return(null);
            }
            ETL_Transaction etlTransaction = transaction;

            string subMainAccount = string.Empty;

            List <ETL_FinanciaActualPriceDetail> detail = new List <ETL_FinanciaActualPriceDetail>();

            try
            {
                ETLAccountingBO      accountingBO = new ETLAccountingBO();
                FinancialLiabilityBO liabilityBO  = new FinancialLiabilityBO();
                //List<ETL_GeneralJournal> JournalListJoined = JoinJournal(session, etlTransaction.GeneralJournalList, AccountCode);
                List <ETL_GeneralJournal> FinishJournalList = liabilityBO.ClearJournalList(session, etlTransaction.GeneralJournalList, account.AccountId);
                foreach (ETL_GeneralJournal journal in FinishJournalList)
                {
                    ETL_FinanciaActualPriceDetail temp = new ETL_FinanciaActualPriceDetail();
                    temp.AccountCode           = "";
                    temp.CorrespondAccountCode = "";
                    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;
                    detail.Add(temp);
                }

                result.ETL_DetailList = detail;
                result.AccountCode    = subMainAccount;
            }
            catch (Exception)
            {
                return(null);
            }
            return(result);
        }
Пример #20
0
        public void CreateDiaryJournalDetail(Session session, DiaryJournalTemplate diaryJournal, string accountCode, char debitOrCredit)
        {
            try
            {
                Util            util         = new Util();
                ETLAccountingBO accountingBO = new ETLAccountingBO();

                DiaryJournal_Fact   Fact      = GetDiaryJournalFact(session, diaryJournal.OwnerOrgId, diaryJournal.IssueDate, accountCode);
                DiaryJournal_Detail newDetail = new DiaryJournal_Detail(session);
                if (Fact == null)
                {
                    Fact = CreateDiaryJournalFact(session, diaryJournal.OwnerOrgId, diaryJournal.IssueDate, diaryJournal, accountCode);
                    if (Fact == null)
                    {
                        return;
                    }
                }
                CorrespondFinancialAccountDim correspondFinancialAccountDim = util.GetXpoObjectByFieldName <CorrespondFinancialAccountDim, string>(session, "Code", diaryJournal.CorrespondFinancialAccountDimCode, BinaryOperatorType.Equal);
                FinancialAccountDim           financialAccountDim           = util.GetXpoObjectByFieldName <FinancialAccountDim, string>(session, "Code", accountCode, BinaryOperatorType.Equal);
                FinancialTransactionDim       financialTransactionDim       = util.GetXpoObjectByFieldName <FinancialTransactionDim, Guid>(session, "RefId", diaryJournal.TransactionId, BinaryOperatorType.Equal);
                CurrencyDim currencyDim = util.GetXpoObjectByFieldName <CurrencyDim, string>(session, "Code", diaryJournal.CurrencyDimCode, BinaryOperatorType.Equal);
                if (financialTransactionDim == null)
                {
                    financialTransactionDim = accountingBO.CreateFinancialTransactionDim(session, diaryJournal.TransactionId);
                    if (financialTransactionDim == null)
                    {
                        return;
                    }
                }
                if (financialAccountDim == null)
                {
                    financialAccountDim = accountingBO.CreateFinancialAccountDim(session, accountCode);
                }
                if (correspondFinancialAccountDim == null)
                {
                    correspondFinancialAccountDim = accountingBO.CreateCorrespondFinancialAccountDim(session, diaryJournal.CorrespondFinancialAccountDimCode);
                }
                if (currencyDim == null)
                {
                    currencyDim = accountingBO.CreateCurrencyDim(session, diaryJournal.CurrencyDimCode);
                }

                Fact.Save();
                if (correspondFinancialAccountDim.Code == "131")
                {
                    newDetail.Credit = diaryJournal.Credit;
                }

                if (correspondFinancialAccountDim != null)
                {
                    if (correspondFinancialAccountDim.Code == "")
                    {
                        if (debitOrCredit == 'C')
                        {
                            newDetail.Credit = diaryJournal.Credit;
                        }
                        else
                        {
                            newDetail.Debit = diaryJournal.Debit;
                        }
                        newDetail.FinancialAccountDimId = financialAccountDim;
                    }
                    else
                    {
                        if (debitOrCredit == 'C')
                        {
                            newDetail.Debit = diaryJournal.Debit;
                        }
                        else
                        {
                            newDetail.Credit = diaryJournal.Credit;
                        }
                        newDetail.CorrespondFinancialAccountDimId = correspondFinancialAccountDim;
                    }
                }

                newDetail.CurrencyDimId             = currencyDim;
                newDetail.DiaryJournal_FactId       = Fact;
                newDetail.FinancialTransactionDimId = financialTransactionDim;
                newDetail.Save();
            }
            catch (Exception)
            {
                return;
            }
        }
        public void CreateFinancialSalesOrManufacturerExpenseDetail(
            Session session,
            ETL_SalesOrManufacturerExpenseDetail Detail,
            string MainAccountCode, string HighestAccountCode)
        {
            try
            {
                if (Detail == null ||
                    MainAccountCode.Equals(string.Empty) ||
                    Detail.OwnerOrgId.Equals(Guid.Empty) ||
                    Detail.IssueDate == null)
                {
                    return;
                }

                #region prepare Summary header data
                Util            util         = new Util();
                ETLAccountingBO accountingBO = new ETLAccountingBO();
                FinancialSalesOrManufactureExpenseSummary_Fact summary =
                    GetFinancialSalesOrManufactureExpenseSummary(
                        session,
                        Detail.OwnerOrgId,
                        Detail.IssueDate);

                FinancialSalesOrManufactureExpenseDetail newDetail = new FinancialSalesOrManufactureExpenseDetail(session);
                if (summary == null)
                {
                    summary =
                        CreateFinancialSalesOrManufactureExpenseSummary(
                            session,
                            Detail.OwnerOrgId,
                            Detail.IssueDate,
                            Detail.IsBalanceForward);
                    if (summary == null)
                    {
                        return;
                    }
                }
                #endregion

                #region prepare group data
                CorrespondFinancialAccountDim correspondFinancialAccountDim = null;
                FinancialAccountDim           financialAccountDim           = null;
                FinancialAccountDim           GroupAccountDim = null;

                if (!HighestAccountCode.Equals(string.Empty))
                {
                    GroupAccountDim = util.GetXpoObjectByFieldName <FinancialAccountDim, string>(
                        session,
                        "Code",
                        HighestAccountCode,
                        BinaryOperatorType.Equal);
                }

                if (!MainAccountCode.Equals(string.Empty))
                {
                    financialAccountDim = util.GetXpoObjectByFieldName <FinancialAccountDim, string>(
                        session,
                        "Code",
                        MainAccountCode,
                        BinaryOperatorType.Equal);
                }

                if (!Detail.CorrespondAccountCode.Equals(string.Empty))
                {
                    correspondFinancialAccountDim = util.GetXpoObjectByFieldName <CorrespondFinancialAccountDim, string>(
                        session,
                        "Code",
                        Detail.CorrespondAccountCode,
                        BinaryOperatorType.Equal);
                }

                if (GroupAccountDim == null && !HighestAccountCode.Equals(string.Empty))
                {
                    GroupAccountDim = accountingBO.CreateFinancialAccountDim(session, HighestAccountCode);
                }


                if (financialAccountDim == null && !MainAccountCode.Equals(string.Empty))
                {
                    financialAccountDim = accountingBO.CreateFinancialAccountDim(session, MainAccountCode);
                }

                if (correspondFinancialAccountDim == null && !Detail.CorrespondAccountCode.Equals(string.Empty))
                {
                    correspondFinancialAccountDim = accountingBO.CreateCorrespondFinancialAccountDim(session, Detail.CorrespondAccountCode);
                }

                SalesOrManufactureExpenseByGroup group =
                    GetSalesOrManufactureExpenseByGroup(
                        session,
                        summary.FinancialSalesOrManufactureExpenseSummary_FactId,
                        HighestAccountCode);

                if (group == null)
                {
                    group = CreateSalesOrManufactureExpenseByGroup(
                        session,
                        summary.FinancialSalesOrManufactureExpenseSummary_FactId,
                        HighestAccountCode);

                    if (group == null)
                    {
                        return;
                    }
                }

                #endregion

                #region prepare Detail
                CurrencyDim currencyDim = util.GetXpoObjectByFieldName <CurrencyDim, string>(
                    session,
                    "Code",
                    Detail.CurrencyCode,
                    BinaryOperatorType.Equal);

                if (currencyDim == null && !Detail.CurrencyCode.Equals(string.Empty))
                {
                    currencyDim = accountingBO.CreateCurrencyDim(session, Detail.CurrencyCode);
                }

                FinancialTransactionDim financialTransactionDim = util.GetXpoObjectByFieldName <FinancialTransactionDim, Guid>(
                    session,
                    "RefId",
                    Detail.TransactionId,
                    BinaryOperatorType.Equal);

                if (financialTransactionDim == null)
                {
                    financialTransactionDim = accountingBO.CreateFinancialTransactionDim(session, Detail.TransactionId);
                    if (financialTransactionDim == null)
                    {
                        return;
                    }
                }
                newDetail.Credit                             = Detail.Credit;
                newDetail.Debit                              = Detail.Debit;
                newDetail.CurrencyDimId                      = currencyDim;
                newDetail.FinancialTransactionDimId          = financialTransactionDim;
                newDetail.FinancialAccountDimId              = financialAccountDim;
                newDetail.CorrespondFinancialAccountDimId    = correspondFinancialAccountDim;
                newDetail.SalesOrManufactureExpenseByGroupId = group;
                CorrespondFinancialAccountDim defaultCorrespondindAcc = CorrespondFinancialAccountDim.GetDefault(session, CorrespondFinancialAccountDimEnum.NAAN_DEFAULT);
                FinancialAccountDim           defaultFinancialAcc     = FinancialAccountDim.GetDefault(session, FinancialAccountDimEnum.NAAN_DEFAULT);

                if (newDetail.FinancialAccountDimId == null)
                {
                    newDetail.FinancialAccountDimId = defaultFinancialAcc;
                }
                if (newDetail.CorrespondFinancialAccountDimId == null)
                {
                    newDetail.CorrespondFinancialAccountDimId = defaultCorrespondindAcc;
                }

                newDetail.RowStatus = Constant.ROWSTATUS_ACTIVE;
                newDetail.Save();
                #endregion

                if (Detail.IsBalanceForward)
                {
                    group.SumExpense = Detail.Credit;
                }
                else
                {
                    group.SumExpense = group.FinancialSalesOrManufactureExpenseDetails.Where(i => i.RowStatus >= 1 && i.Debit > 0).
                                       Sum(r => r.Debit);
                    group.Save();
                }

                group.Save();
                summary.Save();
            }
            catch (Exception)
            {
                return;
            }
        }
Пример #22
0
        public List <ETL_GeneralJournal> ClearJournalList(Session session, List <ETL_GeneralJournal> journalList, Guid AccountId)
        {
            List <ETL_GeneralJournal> result = new List <ETL_GeneralJournal>();

            try
            {
                char            AccountSide     = 'N';
                char            MainAccountSide = 'C';
                short           DebitCount      = 0;
                short           CreditCount     = 0;
                ETLAccountingBO accountingBO    = new ETLAccountingBO();
                foreach (ETL_GeneralJournal journal in journalList)
                {
                    if (journal.Credit > 0)
                    {
                        if (accountingBO.IsRelateAccount(session, AccountId, journal.AccountId))
                        {
                            AccountSide = 'C';
                        }
                        CreditCount++;
                    }
                    else
                    {
                        if (accountingBO.IsRelateAccount(session, AccountId, journal.AccountId))
                        {
                            AccountSide = 'D';
                        }
                        DebitCount++;
                    }
                }
                if (DebitCount == 1)
                {
                    MainAccountSide = 'D';
                }
                if (MainAccountSide == AccountSide)
                {
                    return(journalList);
                }

                ETL_GeneralJournal mainJournal = new ETL_GeneralJournal();

                if (MainAccountSide == 'C')
                {
                    mainJournal = journalList.Where(r => r.Credit > 0).FirstOrDefault();
                    result.Add(mainJournal);
                    foreach (ETL_GeneralJournal journal in journalList)
                    {
                        if (journal.Debit > 0)
                        {
                            if (!accountingBO.IsRelateAccount(session, AccountId, journal.AccountId))
                            {
                                mainJournal.Credit -= journal.Debit;
                            }
                            else
                            {
                                result.Add(journal);
                            }
                        }
                    }
                }
                if (MainAccountSide == 'D')
                {
                    mainJournal = journalList.Where(r => r.Debit > 0).FirstOrDefault();
                    result.Add(mainJournal);
                    foreach (ETL_GeneralJournal journal in journalList)
                    {
                        if (journal.Credit > 0)
                        {
                            if (!accountingBO.IsRelateAccount(session, AccountId, journal.AccountId))
                            {
                                mainJournal.Debit -= journal.Credit;
                            }
                            else
                            {
                                result.Add(journal);
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                return(null);
            }

            return(result);
        }
Пример #23
0
        public void CreateGoodsInInventoryDetail(
            Session session,
            ETL_GoodsInInventoryDetail Detail,
            string MainAccountCode)
        {
            try
            {
                Util util = new Util();
                CorrespondFinancialAccountDim defaultCorrespondindAcc = CorrespondFinancialAccountDim.GetDefault(session, CorrespondFinancialAccountDimEnum.NAAN_DEFAULT);
                FinancialAccountDim           defaultFinancialAcc     = FinancialAccountDim.GetDefault(session, FinancialAccountDimEnum.NAAN_DEFAULT);
                ETLAccountingBO accountingBO           = new ETLAccountingBO();
                GoodsInInventorySummary_Fact Fact      = GetGoodsInInventorySummaryFact(session, Detail.OwnerOrgId, Detail.IssueDate, MainAccountCode);
                GoodsInInventoryDetail       newDetail = new GoodsInInventoryDetail(session);
                if (Fact == null)
                {
                    Fact = CreateGoodsInInventorySummaryFact(session, Detail.OwnerOrgId, Detail.IssueDate, MainAccountCode, Detail.IsBalanceForward);
                    if (Fact == null)
                    {
                        return;
                    }
                }
                else
                {
                    var date = new DateTime(Detail.IssueDate.Year, Detail.IssueDate.Month, 1);
                    GoodsInInventorySummary_Fact previousSummary = GetGoodsInInventorySummaryFact(session,
                                                                                                  Detail.OwnerOrgId, date.AddMonths(-1), MainAccountCode);

                    if (previousSummary != null)
                    {
                        Fact.BeginCreditBalance = previousSummary.EndCreditBalance;
                        Fact.BeginDebitBalance  = previousSummary.EndDebitBalance;
                    }
                }

                CorrespondFinancialAccountDim correspondFinancialAccountDim = null;
                FinancialAccountDim           financialAccountDim           = null;

                if (!Detail.CorrespondAccountCode.Equals(string.Empty))
                {
                    correspondFinancialAccountDim = util.GetXpoObjectByFieldName <CorrespondFinancialAccountDim, string>(session, "Code", Detail.CorrespondAccountCode, BinaryOperatorType.Equal);
                }
                if (!MainAccountCode.Equals(string.Empty))
                {
                    financialAccountDim = util.GetXpoObjectByFieldName <FinancialAccountDim, string>(session, "Code", MainAccountCode, BinaryOperatorType.Equal);
                }

                FinancialTransactionDim financialTransactionDim = util.GetXpoObjectByFieldName <FinancialTransactionDim, Guid>(session, "RefId", Detail.TransactionId, BinaryOperatorType.Equal);

                CurrencyDim currencyDim = util.GetXpoObjectByFieldName <CurrencyDim, string>(session, "Code", Detail.CurrencyCode, BinaryOperatorType.Equal);

                InventoryCommandDim inventoryCommandDim = null;
                if (!Detail.ArtifactId.Equals(Guid.Empty))
                {
                    inventoryCommandDim = util.GetXpoObjectByFieldName <InventoryCommandDim, Guid>(session, "RefId", Detail.ArtifactId, BinaryOperatorType.Equal);
                    if (inventoryCommandDim == null)
                    {
                        DimBO dimBO = new DimBO();
                        inventoryCommandDim = dimBO.GetInventoryCommandDim(session, Detail.ArtifactId);
                    }
                }
                else
                {
                    inventoryCommandDim = InventoryCommandDim.GetDefault(session, InventoryCommandDimEnum.UNKNOWN);
                }

                if (financialTransactionDim == null)
                {
                    financialTransactionDim = accountingBO.CreateFinancialTransactionDim(session, Detail.TransactionId);
                    if (financialTransactionDim == null)
                    {
                        return;
                    }
                }

                if (financialAccountDim == null && !MainAccountCode.Equals(string.Empty))
                {
                    financialAccountDim = accountingBO.CreateFinancialAccountDim(session, MainAccountCode);
                }

                if (correspondFinancialAccountDim == null && !Detail.CorrespondAccountCode.Equals(string.Empty))
                {
                    correspondFinancialAccountDim = accountingBO.CreateCorrespondFinancialAccountDim(session, Detail.CorrespondAccountCode);
                }

                if (currencyDim == null && !Detail.CurrencyCode.Equals(string.Empty))
                {
                    currencyDim = accountingBO.CreateCurrencyDim(session, Detail.CurrencyCode);
                }

                if (Detail.IsBalanceForward)
                {
                    Fact.BeginCreditBalance = Fact.EndCreditBalance = Detail.Credit;
                    Fact.BeginDebitBalance  = Fact.EndDebitBalance = Detail.Debit;
                    Fact.CreditSum          = 0;
                    Fact.DebitSum           = 0;
                }
                else
                {
                    Fact.CreditSum = Fact.GoodsInInventoryDetails.Where(i => i.RowStatus == 1 &&
                                                                        i.Credit > 0 && i.CorrespondFinancialAccountDimId == defaultCorrespondindAcc).Sum(d => d.Credit);

                    Fact.DebitSum = Fact.GoodsInInventoryDetails.Where(i => i.RowStatus == 1 &&
                                                                       i.Debit > 0 && i.CorrespondFinancialAccountDimId == defaultCorrespondindAcc).Sum(d => d.Debit);

                    Fact.EndCreditBalance = Fact.BeginCreditBalance + Fact.CreditSum - Fact.DebitSum;
                    Fact.EndDebitBalance  = Fact.BeginDebitBalance + Fact.DebitSum - Fact.CreditSum;
                }

                Fact.Save();
                newDetail.CorrespondFinancialAccountDimId = correspondFinancialAccountDim;
                newDetail.Credit                          = Detail.Credit;
                newDetail.Debit                           = Detail.Debit;
                newDetail.Quantity                        = Detail.Quantity;
                newDetail.CurrencyDimId                   = currencyDim;
                newDetail.FinancialAccountDimId           = financialAccountDim;
                newDetail.GoodsInInventorySummary_FacftId = Fact;
                newDetail.FinancialTransactionDimId       = financialTransactionDim;
                newDetail.InventoryCommandDimId           = inventoryCommandDim;

                if (newDetail.FinancialAccountDimId == null)
                {
                    newDetail.FinancialAccountDimId = defaultFinancialAcc;
                }
                if (newDetail.CorrespondFinancialAccountDimId == null)
                {
                    newDetail.CorrespondFinancialAccountDimId = defaultCorrespondindAcc;
                }

                newDetail.RowStatus = Constant.ROWSTATUS_ACTIVE;
                newDetail.Save();
            }
            catch (Exception)
            {
                return;
            }
        }
Пример #24
0
        public void CreateFinancialOnTheWayBuyingGoodDetail(Session session, ETL_FinancialOnTheWayBuyingGoodDetail Detail, string MainAccountCode)
        {
            try
            {
                if (Detail == null ||
                    MainAccountCode.Equals(string.Empty) ||
                    Detail.PurchaseInvoiceId.Equals(Guid.Empty) ||
                    Detail.InputInventoryCommandId.Equals(Guid.Empty) ||
                    Detail.OwnerOrgId.Equals(Guid.Empty) ||
                    Detail.IssueDate == null)
                {
                    return;
                }

                //bool flgNewSummary = false;
                Util util = new Util();
                CorrespondFinancialAccountDim defaultCorrespondindAcc = CorrespondFinancialAccountDim.GetDefault(session, CorrespondFinancialAccountDimEnum.NAAN_DEFAULT);
                FinancialAccountDim           defaultFinancialAcc     = FinancialAccountDim.GetDefault(session, FinancialAccountDimEnum.NAAN_DEFAULT);
                ETLAccountingBO accountingBO = new ETLAccountingBO();
                FinancialOnTheWayBuyingGoodSummary summary   = GetFinancialOnTheWayBuyingGoodSummary(session, Detail.OwnerOrgId, Detail.IssueDate, MainAccountCode);
                FinancialOnTheWayBuyingGoodDetail  newDetail = new FinancialOnTheWayBuyingGoodDetail(session);
                if (summary == null)
                {
                    summary = CreateFinancialOnTheWayBuyingGoodSummary(session, Detail.OwnerOrgId, Detail.IssueDate, MainAccountCode);
                    if (summary == null)
                    {
                        return;
                    }
                }
                else
                {
                    var date = new DateTime(Detail.IssueDate.Year, Detail.IssueDate.Month, 1);
                    FinancialOnTheWayBuyingGoodSummary previousSummary = GetFinancialOnTheWayBuyingGoodSummary(session,
                                                                                                               Detail.OwnerOrgId, date.AddMonths(-1), MainAccountCode);

                    if (previousSummary != null)
                    {
                        summary.BeginBalance = previousSummary.EndBalance;
                    }
                }
                /*2014/02/22 Duc.Vo MOD START*/
                CorrespondFinancialAccountDim correspondFinancialAccountDim = null;
                FinancialAccountDim           financialAccountDim           = null;
                InventoryCommand InputCommand = null;
                NAS.DAL.Invoice.PurchaseInvoice PurchaseInvoice = null;

                if (!Detail.CorrespondAccountCode.Equals(string.Empty))
                {
                    correspondFinancialAccountDim = util.GetXpoObjectByFieldName <CorrespondFinancialAccountDim, string>(session, "Code", Detail.CorrespondAccountCode, BinaryOperatorType.Equal);
                }

                if (!MainAccountCode.Equals(string.Empty))
                {
                    financialAccountDim = util.GetXpoObjectByFieldName <FinancialAccountDim, string>(session, "Code", MainAccountCode, BinaryOperatorType.Equal);
                }

                if (!Detail.InputInventoryCommandId.Equals(Guid.Empty))
                {
                    InputCommand = util.GetXpoObjectByFieldName <InventoryCommand, Guid>(session, "InventoryCommandId", Detail.InputInventoryCommandId, BinaryOperatorType.Equal);
                    if (InputCommand == null)
                    {
                        return;
                    }
                }
                if (!Detail.PurchaseInvoiceId.Equals(Guid.Empty))
                {
                    PurchaseInvoice = util.GetXpoObjectByFieldName <NAS.DAL.Invoice.PurchaseInvoice, Guid>(session, "BillId", Detail.PurchaseInvoiceId, BinaryOperatorType.Equal);
                    if (PurchaseInvoice == null)
                    {
                        return;
                    }
                }

                OnTheWayBuyingGoodArtifact artifact = GetOnTheWayBuyingGoodArtifact(
                    session,
                    summary.FinancialOnTheWayBuyingGoodSummaryId,
                    PurchaseInvoice.BillId,
                    InputCommand.InventoryCommandId);

                if (artifact == null)
                {
                    artifact = CreateOnTheWayBuyingGoodArtifact(
                        session,
                        summary.FinancialOnTheWayBuyingGoodSummaryId,
                        PurchaseInvoice.BillId,
                        InputCommand.InventoryCommandId);

                    if (artifact == null)
                    {
                        return;
                    }
                }

                /*2014/02/22 Duc.Vo INS START*/
                if (financialAccountDim == null && !MainAccountCode.Equals(string.Empty))
                {
                    financialAccountDim = accountingBO.CreateFinancialAccountDim(session, MainAccountCode);
                }

                if (correspondFinancialAccountDim == null && !Detail.CorrespondAccountCode.Equals(string.Empty))
                {
                    correspondFinancialAccountDim = accountingBO.CreateCorrespondFinancialAccountDim(session, Detail.CorrespondAccountCode);
                }

                CurrencyDim currencyDim = util.GetXpoObjectByFieldName <CurrencyDim, string>(
                    session,
                    "Code",
                    Detail.CurrencyCode,
                    BinaryOperatorType.Equal);

                if (currencyDim == null && !Detail.CurrencyCode.Equals(string.Empty))
                {
                    currencyDim = accountingBO.CreateCurrencyDim(session, Detail.CurrencyCode);
                }

                FinancialTransactionDim financialTransactionDim = util.GetXpoObjectByFieldName <FinancialTransactionDim, Guid>(
                    session,
                    "RefId",
                    Detail.TransactionId,
                    BinaryOperatorType.Equal);

                if (financialTransactionDim == null)
                {
                    financialTransactionDim = accountingBO.CreateFinancialTransactionDim(session, Detail.TransactionId);
                    if (financialTransactionDim == null)
                    {
                        return;
                    }
                }

                newDetail.CorrespondFinancialAccountDimId = correspondFinancialAccountDim;
                newDetail.Credit                       = Detail.Credit;
                newDetail.Debit                        = Detail.Debit;
                newDetail.ActuaPrice                   = Detail.ActualPrice;
                newDetail.BookingPrice                 = Detail.BookedPrice;
                newDetail.FinancialAccountDimId        = financialAccountDim;
                newDetail.OnTheWayBuyingGoodArtifactId = artifact;
                newDetail.FinancialTransactionDimId    = financialTransactionDim;
                newDetail.CurrencyDimId                = currencyDim;
                /*2014-02-22 ERP-1417 Duc.Vo INS START*/

                if (newDetail.FinancialAccountDimId == null)
                {
                    newDetail.FinancialAccountDimId = defaultFinancialAcc;
                }
                if (newDetail.CorrespondFinancialAccountDimId == null)
                {
                    newDetail.CorrespondFinancialAccountDimId = defaultCorrespondindAcc;
                }
                /*2014-02-22 ERP-1417 Duc.Vo INS END*/
                newDetail.RowStatus = Constant.ROWSTATUS_ACTIVE;
                newDetail.Save();

                if (Detail.IsBalanceForward)
                {
                    summary.BeginBalance = summary.EndBalance = (decimal)Detail.Debit;
                    summary.CreditSum    = summary.DebitSum = 0;
                }
                else
                {
                    CorrespondFinancialAccountDim defaultAccDim = CorrespondFinancialAccountDim.GetDefault(session, CorrespondFinancialAccountDimEnum.NAAN_DEFAULT);
                    summary.CreditSum = (decimal)summary.OnTheWayBuyingGoodArtifacts.SelectMany(t => t.FinancialOnTheWayBuyingGoodDetails).
                                        Where(i => i.RowStatus == 1 &&
                                              i.Credit > 0 && i.CorrespondFinancialAccountDimId == defaultCorrespondindAcc).Sum(i => i.Credit);

                    summary.DebitSum = (decimal)summary.OnTheWayBuyingGoodArtifacts.SelectMany(t => t.FinancialOnTheWayBuyingGoodDetails).
                                       Where(i => i.RowStatus == 1 &&
                                             i.Debit > 0 && i.CorrespondFinancialAccountDimId == defaultCorrespondindAcc).Sum(i => i.Debit);

                    summary.BeginBalance = summary.BeginBalance + summary.DebitSum - summary.CreditSum;
                }

                summary.Save();
            }
            catch (Exception)
            {
                return;
            }
        }