Esempio n. 1
0
 public OnTheWayBuyingGoodArtifact get_OnTheWayBuyingGoodArtifact(Session session, Guid OnTheWayBuyingGoodArtifactId, short RowStatus)
 {
     try
     {
         OnTheWayBuyingGoodArtifact OTWBGA = session.FindObject <OnTheWayBuyingGoodArtifact>(
             CriteriaOperator.And(
                 new BinaryOperator("OnTheWayBuyingGoodArtifactId", OnTheWayBuyingGoodArtifactId, BinaryOperatorType.Equal),
                 new BinaryOperator("RowStatus", RowStatus, BinaryOperatorType.Equal)
                 ));
         if (OTWBGA == null)
         {
             return(null);
         }
         return(OTWBGA);
     }
     catch (Exception) { throw; }
 }
        public OnTheWayBuyingGoodArtifact GetOnTheWayBuyingGoodArtifact(
            Session session,
            Guid FinancialOnTheWayBuyingGoodSummaryId,
            Guid PurchaseInvoiceId,
            Guid InputCommandId)
        {
            OnTheWayBuyingGoodArtifact result = null;

            try
            {
                Util util = new Util();
                FinancialOnTheWayBuyingGoodSummary summary = session.GetObjectByKey <FinancialOnTheWayBuyingGoodSummary>(FinancialOnTheWayBuyingGoodSummaryId);
                NAS.DAL.Invoice.PurchaseInvoice    invoice = util.GetXpoObjectByFieldName <NAS.DAL.Invoice.PurchaseInvoice, Guid>(session, "BillId", PurchaseInvoiceId, BinaryOperatorType.Equal);
                InventoryCommand command = util.GetXpoObjectByFieldName <InventoryCommand, Guid>(session, "InventoryCommandId", InputCommandId, BinaryOperatorType.Equal);


                if (summary == null || invoice == null || command == null)
                {
                    return(null);
                }
                else
                {
                    CriteriaOperator criteria_RowStatus = new BinaryOperator("RowStatus", Constant.ROWSTATUS_ACTIVE, BinaryOperatorType.GreaterOrEqual);
                    CriteriaOperator criteria_summary   = new BinaryOperator("FinancialOnTheWayBuyingGoodSummaryId", summary, BinaryOperatorType.Equal);
                    CriteriaOperator criteria_invoice   = new BinaryOperator("InvoiceCode", invoice.Code, BinaryOperatorType.Equal);
                    CriteriaOperator criteria_command   = new BinaryOperator("LegalInvoiceCode", command.Code, BinaryOperatorType.Equal);
                    CriteriaOperator criteria           = CriteriaOperator.And(criteria_RowStatus, criteria_summary, criteria_invoice, criteria_command);

                    result = session.FindObject <OnTheWayBuyingGoodArtifact>(criteria);

                    return(result);
                }
            }
            catch (Exception)
            {
                return(null);
            }
        }
        public OnTheWayBuyingGoodArtifact CreateOnTheWayBuyingGoodArtifact(Session session,
                                                                           Guid FinancialOnTheWayBuyingGoodSummaryId,
                                                                           Guid PurchaseInvoiceId,
                                                                           Guid InputCommandId)
        {
            OnTheWayBuyingGoodArtifact result = new OnTheWayBuyingGoodArtifact(session);

            try
            {
                Util util = new Util();

                FinancialOnTheWayBuyingGoodSummary summary = session.GetObjectByKey <FinancialOnTheWayBuyingGoodSummary>(FinancialOnTheWayBuyingGoodSummaryId);

                NAS.DAL.Invoice.PurchaseInvoice invoice = util.GetXpoObjectByFieldName <NAS.DAL.Invoice.PurchaseInvoice, Guid>(session, "BillId", PurchaseInvoiceId, BinaryOperatorType.Equal);
                InventoryCommand command = util.GetXpoObjectByFieldName <InventoryCommand, Guid>(session, "InventoryCommandId", InputCommandId, BinaryOperatorType.Equal);


                if (summary == null || invoice == null || command == null)
                {
                    return(null);
                }

                result.RowStatus = Constant.ROWSTATUS_ACTIVE;
                result.FinancialOnTheWayBuyingGoodSummaryId = summary;
                result.InvoiceCode            = invoice.Code;
                result.InvoiceIssuedDate      = invoice.IssuedDate;
                result.LegalInvoiceCode       = command.Code;
                result.LegalInvoiceIssuedDate = command.IssueDate;
                result.Save();
                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Esempio n. 4
0
        public DataTable DT_getValue(int FinancialAccountDimId, int OwnerOrgDimId, int MonthDimId, int YearDimId)
        {
            try
            {
                int       stt = 2;
                DataTable dt  = new DataTable();
                dt.Columns.Add("STT");
                dt.Columns.Add("Description");
                dt.Columns.Add("BeginBalance");
                dt.Columns.Add("LegalInvoiceCode");
                dt.Columns.Add("LegalInvoiceIssuedDate");
                dt.Columns.Add("InvoiceCode");
                dt.Columns.Add("InvoiceIssuedDate");

                #region cac cot tai khoan no 151
                foreach (DataColumn dt_all in DT_get_xp_AllId(FinancialAccountDimId, OwnerOrgDimId, MonthDimId, YearDimId, true, true, true, false).Columns)
                {
                    FinancialOnTheWayBuyingGoodDetail FTBGD = BO.get_FinancialOnTheWayBuyingGoodDetail(session, Guid.Parse(dt_all.ColumnName.ToString()), Utility.Constant.ROWSTATUS_ACTIVE);
                    if (FTBGD != null)
                    {
                        CorrespondFinancialAccountDim CFAD = BO.get_CorrespondFinancialAccountDim(session, FTBGD.CorrespondFinancialAccountDimId.CorrespondFinancialAccountDimId, Utility.Constant.ROWSTATUS_ACTIVE);
                        if (CFAD != null && FTBGD.Debit > 0)
                        {
                            try
                            {
                                if (CFAD.Code.Equals("152"))
                                {
                                    dt.Columns.Add("152ActualPrice");
                                    dt.Columns.Add("152BookingPrice");
                                }
                                else if (CFAD.Code.Equals("153"))
                                {
                                    dt.Columns.Add("153ActualPrice");
                                    dt.Columns.Add("153BookingPrice");
                                }
                                else
                                {
                                    if (!CFAD.Code.Equals("NAAN_DEFAULT"))
                                    {
                                        dt.Columns.Add(CFAD.Code);
                                    }
                                }
                            }
                            catch { continue; }
                        }
                    }
                }
                dt.Columns.Add("congco");
                dt.Columns.Add("EndBalance");
                #endregion

                #region load money Debit vao tung tai khoan - tug Row
                DataRow dr = dt.NewRow();
                #region gan 1 lan BeginBalance
                foreach (DataColumn dc in dt.Columns)
                {
                    if (dc.ColumnName.Equals("STT"))
                    {
                        dr[dc.ColumnName] = stt++;
                    }
                    foreach (DataColumn dt_all in DT_get_xp_AllId(FinancialAccountDimId, OwnerOrgDimId, MonthDimId, YearDimId, true, false, false, false).Columns)
                    {
                        FinancialOnTheWayBuyingGoodSummary fotwbgosu = BO.get_FinancialOntheWayBuyingGoodSummary(session, Guid.Parse(dt_all.ToString()), Utility.Constant.ROWSTATUS_ACTIVE);
                        if (dc.ColumnName.Equals("BeginBalance"))
                        {
                            dr[dc.ColumnName] = fotwbgosu.BeginBalance;
                        }
                    }
                }
                dt.Rows.Add(dr);
                #endregion

                #region gan cac tai khoan no cua 151
                foreach (DataColumn dt_all in DT_get_xp_AllId(FinancialAccountDimId, OwnerOrgDimId, MonthDimId, YearDimId, true, true, false, false).Columns)
                {
                    OnTheWayBuyingGoodArtifact OTWGA = BO.get_OnTheWayBuyingGoodArtifact(session, Guid.Parse(dt_all.ColumnName.ToString()), Utility.Constant.ROWSTATUS_ACTIVE);
                    if (OTWGA != null)
                    {
                        try
                        {
                            dr = dt.NewRow();
                            foreach (DataColumn dc in dt.Columns)
                            {
                                #region lay thong tin chi tiet
                                if (dc.ColumnName.Equals("STT"))
                                {
                                    dr[dc.ColumnName] = stt++;
                                }
                                if (dc.ColumnName.Equals("Description"))
                                {
                                    dr[dc.ColumnName] = OTWGA.Description;
                                }

                                if (dc.ColumnName.Equals("LegalInvoiceCode"))
                                {
                                    dr[dc.ColumnName] = OTWGA.LegalInvoiceCode;
                                }
                                if (dc.ColumnName.Equals("LegalInvoiceIssuedDate"))
                                {
                                    dr[dc.ColumnName] = String.Format("{0:d}", OTWGA.LegalInvoiceIssuedDate);
                                }
                                if (dc.ColumnName.Equals("InvoiceCode"))
                                {
                                    dr[dc.ColumnName] = OTWGA.InvoiceCode;
                                }
                                if (dc.ColumnName.Equals("InvoiceIssuedDate"))
                                {
                                    dr[dc.ColumnName] = String.Format("{0:d}", OTWGA.InvoiceIssuedDate);
                                }
                                XPCollection <FinancialOnTheWayBuyingGoodDetail> fotwbgd = BO.get_xp_FinancialOnTheWayBuyingGoodDetail(session, FinancialAccountDimId, OTWGA.OnTheWayBuyingGoodArtifactId, Utility.Constant.ROWSTATUS_ACTIVE);
                                if (fotwbgd != null)
                                {
                                    foreach (FinancialOnTheWayBuyingGoodDetail ftd in fotwbgd)
                                    {
                                        if (dc.ColumnName.Equals("152ActualPrice"))
                                        {
                                            if (ftd.CorrespondFinancialAccountDimId.Code.Equals("152"))
                                            {
                                                if (ftd.Debit > 0)
                                                {
                                                    dr[dc.ColumnName] = SumAcc(session, ftd.CorrespondFinancialAccountDimId.Code, OTWGA.OnTheWayBuyingGoodArtifactId, false);
                                                }
                                            }
                                        }
                                        if (dc.ColumnName.Equals("152BookingPrice"))
                                        {
                                            if (ftd.CorrespondFinancialAccountDimId.Code.Equals("152"))
                                            {
                                                dr[dc.ColumnName] = 0;
                                            }
                                        }
                                        if (dc.ColumnName.Equals("153ActualPrice"))
                                        {
                                            if (ftd.CorrespondFinancialAccountDimId.Code.Equals("153"))
                                            {
                                                if (ftd.Debit > 0)
                                                {
                                                    dr[dc.ColumnName] = SumAcc(session, ftd.CorrespondFinancialAccountDimId.Code, OTWGA.OnTheWayBuyingGoodArtifactId, false);
                                                }
                                            }
                                        }
                                        if (dc.ColumnName.Equals("153BookingPrice"))
                                        {
                                            if (ftd.CorrespondFinancialAccountDimId.Code.Equals("153"))
                                            {
                                                dr[dc.ColumnName] = 0;
                                            }
                                        }
                                        if (!dc.ColumnName.Equals("NAAN_DEFAULT"))
                                        {
                                            if (ftd.CorrespondFinancialAccountDimId.Code.Equals(dc.ColumnName))
                                            {
                                                if (ftd.Debit > 0)
                                                {
                                                    dr[dc.ColumnName] = SumAcc(session, dc.ColumnName, OTWGA.OnTheWayBuyingGoodArtifactId, false);
                                                }
                                            }
                                        }
                                    }
                                    if (dc.ColumnName.Equals("congco"))
                                    {
                                        dr[dc.ColumnName] = SumAcc(session, "NAAN_DEFAULT", OTWGA.OnTheWayBuyingGoodArtifactId, true);
                                    }
                                }

                                #endregion
                            }
                            dt.Rows.Add(dr);
                        }
                        catch { continue; }
                    }
                }
                #endregion

                #region gan 1 lan EndBanlance
                dr = dt.NewRow();
                foreach (DataColumn dc in dt.Columns)
                {
                    if (dc.ColumnName.Equals("STT"))
                    {
                        dr[dc.ColumnName] = stt++;
                    }
                    foreach (DataColumn dt_all in DT_get_xp_AllId(FinancialAccountDimId, OwnerOrgDimId, MonthDimId, YearDimId, true, false, false, false).Columns)
                    {
                        FinancialOnTheWayBuyingGoodSummary fotwbgosu = BO.get_FinancialOntheWayBuyingGoodSummary(session, Guid.Parse(dt_all.ToString()), Utility.Constant.ROWSTATUS_ACTIVE);
                        if (dc.ColumnName.Equals("EndBalance"))
                        {
                            dr[dc.ColumnName] = fotwbgosu.EndBalance;
                        }
                    }
                }
                dt.Rows.Add(dr);
                #endregion

                #endregion
                return(dt);
            }
            catch (Exception) { throw; }
        }
        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;
            }
        }