Exemplo n.º 1
0
        public DataSet PrepareDS(long documentId)
        {
            AdvanceDataSet advanceDs = (AdvanceDataSet)this.PrepareDataToDs(documentId);

            advanceDs.AcceptChanges();
            return(advanceDs);
        }
        public void saveAdvanceItem(Guid txID, long advanceid)
        {
            AdvanceDataSet ds = (AdvanceDataSet)TransactionService.GetDS(txID);

            //insert update delete avadvanceITem
            ScgeAccountingDaoProvider.AvAdvanceItemDao.Persist(ds.AvAdvanceItem);
        }
        public DataTable DeleteAdvanceItemFromTransaction(Guid txID, long advanceItemID)
        {
            AdvanceDataSet advanceDS = (AdvanceDataSet)TransactionService.GetDS(txID);

            AdvanceDataSet.AvAdvanceItemRow advanceItemRow = advanceDS.AvAdvanceItem.FindByAdvanceItemID(advanceItemID);
            advanceItemRow.Delete();
            return(advanceDS.AvAdvanceItem);
        }
        public void updateGrid(Guid txID, AvAdvanceItem avAdvanceItem)
        {
            AdvanceDataSet advanceDS = (AdvanceDataSet)TransactionService.GetDS(txID);

            AdvanceDataSet.AvAdvanceItemRow advanceItemRow = advanceDS.AvAdvanceItem.FindByAdvanceItemID(avAdvanceItem.AdvanceItemID);
            advanceItemRow.BeginEdit();
            advanceItemRow.Amount       = Math.Round((decimal)avAdvanceItem.Amount, 2, MidpointRounding.AwayFromZero);
            advanceItemRow.AmountTHB    = Math.Round((decimal)avAdvanceItem.AmountTHB, 2, MidpointRounding.AwayFromZero);
            advanceItemRow.ExchangeRate = Math.Round((decimal)avAdvanceItem.ExchangeRate, 5, MidpointRounding.AwayFromZero);
            advanceItemRow.EndEdit();
        }
        public void InsertAvAdvanceItem(Guid txID, long advanceID)
        {
            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();

            AdvanceDataSet advanceDS = (AdvanceDataSet)TransactionService.GetDS(txID);

            AvAdvanceDocument avDocument = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.FindProxyByIdentity(advanceID);

            AdvanceDataSet.AvAdvanceItemDataTable insertTable =
                (AdvanceDataSet.AvAdvanceItemDataTable)advanceDS.AvAdvanceItem.GetChanges(DataRowState.Added);

            if (insertTable != null)
            {
                foreach (AdvanceDataSet.AvAdvanceItemRow row in insertTable.Rows)
                {
                    AvAdvanceItem advanceItem = new AvAdvanceItem();
                    advanceItem.AdvanceID = avDocument;

                    if (!row.IsNull(advanceDS.AvAdvanceItem.PaymentTypeColumn.ColumnName))
                    {
                        advanceItem.PaymentType = row.PaymentType;
                    }
                    if (!row.IsNull(advanceDS.AvAdvanceItem.CurrencyIDColumn.ColumnName))
                    {
                        advanceItem.CurrencyID = new SS.DB.DTO.DbCurrency(row.CurrencyID);
                    }
                    if (!row.IsNull(advanceDS.AvAdvanceItem.AmountColumn.ColumnName))
                    {
                        advanceItem.Amount = (double)Math.Round(row.Amount, 2, MidpointRounding.AwayFromZero);
                    }
                    if (!row.IsNull(advanceDS.AvAdvanceItem.ExchangeRateColumn.ColumnName))
                    {
                        advanceItem.ExchangeRate = (double)Math.Round(row.ExchangeRate, 5, MidpointRounding.AwayFromZero);
                    }
                    if (!row.IsNull(advanceDS.AvAdvanceItem.AmountTHBColumn.ColumnName))
                    {
                        advanceItem.AmountTHB = (double)Math.Round(row.AmountTHB, 2, MidpointRounding.AwayFromZero);
                    }
                    advanceItem.Active  = row.Active;
                    advanceItem.CreBy   = UserAccount.UserID;
                    advanceItem.CreDate = DateTime.Now;
                    advanceItem.UpdBy   = UserAccount.UserID;
                    advanceItem.UpdDate = DateTime.Now;
                    advanceItem.UpdPgm  = UserAccount.CurrentProgramCode;

                    // if row.ScheduleID < 0 is new record that no data in database.
                    if (row.AdvanceItemID < 0)
                    {
                        ScgeAccountingDaoProvider.AvAdvanceItemDao.Save(advanceItem);
                    }
                }
            }
        }
Exemplo n.º 6
0
        public long AddAdvanceDocument(Guid txid, string advanceType)
        {
            AdvanceDataSet ds = (AdvanceDataSet)TransactionService.GetDS(txid);

            AdvanceDataSet.DocumentRow docRow = ds.Document.NewDocumentRow();//create newRow to dataset
            ds.Document.AddDocumentRow(docRow);

            AdvanceDataSet.AvAdvanceDocumentRow avRow = ds.AvAdvanceDocument.NewAvAdvanceDocumentRow();
            avRow.DocumentID  = docRow.DocumentID;
            avRow.AdvanceType = advanceType;
            ds.AvAdvanceDocument.AddAvAdvanceDocumentRow(avRow);
            return(avRow.AdvanceID);
        }
        public void PrepareDataToDataset(AdvanceDataSet advanceDs, long advanceID, bool isCopy)
        {
            IList <AvAdvanceItem> avAdvanceItemList = ScgeAccountingQueryProvider.AvAdvanceItemQuery.FindByAvAdvanceItemAdvanceID(advanceID);

            // Set data to document AvAdvanceItem datatable.
            foreach (AvAdvanceItem avAdvanceItem in avAdvanceItemList)
            {
                AdvanceDataSet.AvAdvanceItemRow itemRow = advanceDs.AvAdvanceItem.NewAvAdvanceItemRow();
                itemRow.AdvanceItemID = avAdvanceItem.AdvanceItemID;
                if (avAdvanceItem.AdvanceID != null)
                {
                    itemRow.AdvanceID = avAdvanceItem.AdvanceID.AdvanceID;
                }

                itemRow.PaymentType = avAdvanceItem.PaymentType;


                if (avAdvanceItem.CurrencyID != null)
                {
                    itemRow.CurrencyID = avAdvanceItem.CurrencyID.CurrencyID;
                }
                itemRow.Amount       = (decimal)avAdvanceItem.Amount;
                itemRow.ExchangeRate = (decimal)avAdvanceItem.ExchangeRate;
                itemRow.AmountTHB    = (decimal)avAdvanceItem.AmountTHB;
                itemRow.Active       = avAdvanceItem.Active;
                itemRow.CreBy        = UserAccount.UserID;
                itemRow.CreDate      = DateTime.Now;
                itemRow.UpdBy        = UserAccount.UserID;
                itemRow.UpdDate      = DateTime.Now;
                itemRow.UpdPgm       = UserAccount.CurrentProgramCode;


                if (avAdvanceItem.ExchangeRateTHB.HasValue)
                {
                    itemRow.ExchangeRateTHB = (decimal)avAdvanceItem.ExchangeRateTHB;
                }

                if (!isCopy)
                {
                    if (avAdvanceItem.MainCurrencyAmount.HasValue)
                    {
                        itemRow.MainCurrencyAmount = (decimal)avAdvanceItem.MainCurrencyAmount;
                    }
                }
                // Add document initiator to datatable advanceDs.
                advanceDs.AvAdvanceItem.AddAvAdvanceItemRow(itemRow);
            }
        }
Exemplo n.º 8
0
        public long SaveAvAdvance(Guid txid, long advanceId)
        {
            AdvanceDataSet advanceDataset = (AdvanceDataSet)TransactionService.GetDS(txid);

            AdvanceDataSet.AvAdvanceDocumentRow row = advanceDataset.AvAdvanceDocument.FindByAdvanceID(advanceId);
            long documentID = row.DocumentID;

            documentID = SCGDocumentService.SaveSCGDocument(txid, documentID);
            //insert update or delete AvAdvanveDocument
            advanceId = ScgeAccountingDaoProvider.AvAdvanceDocumentDao.Persist(advanceDataset.AvAdvanceDocument);

            //inset update or delete AvAdvanceItem
            AvAdvanceItemService.saveAdvanceItem(txid, advanceId);

            return(advanceId);
        }
        public void DeleteAdvanceDocument(Guid txID)
        {
            AdvanceDataSet advanceDS = (AdvanceDataSet)TransactionService.GetDS(txID);

            AdvanceDataSet.AvAdvanceItemDataTable deleteTable =
                (AdvanceDataSet.AvAdvanceItemDataTable)advanceDS.AvAdvanceItem.GetChanges(DataRowState.Deleted);

            if (deleteTable != null)
            {
                foreach (AdvanceDataSet.AvAdvanceItemRow row in deleteTable.Rows)
                {
                    long advanceItemID = Convert.ToInt64(row["AdvanceItemID", DataRowVersion.Original].ToString());
                    if (advanceItemID > 0)
                    {
                        AvAdvanceItem advanceItem = ScgeAccountingDaoProvider.AvAdvanceItemDao.FindProxyByIdentity(advanceItemID);
                        if (advanceItem != null)
                        {
                            ScgeAccountingDaoProvider.AvAdvanceItemDao.Delete(advanceItem);
                        }
                    }
                }
            }
        }
Exemplo n.º 10
0
        public AdvanceDataSet PrepareDataToDs(long documentId)
        {
            AdvanceDataSet advanceDs = new AdvanceDataSet();
            //ดึงจาก base มาใส่ใน DataSet
            AvAdvanceDocument avDb = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.GetAvAdvanceByDocumentID(documentId);

            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();

            if (avDb == null)
            {
                errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("NoAvAdvanceFound"));
            }
            if (!errors.IsEmpty)
            {
                throw new ServiceValidationException(errors);
            }
            // Prepare Data to Document datatable.
            SCGDocumentService.PrepareDataToDataset(advanceDs, documentId);

            // Set data to Advance Document row in advanceDs.
            AdvanceDataSet.AvAdvanceDocumentRow avRow = advanceDs.AvAdvanceDocument.NewAvAdvanceDocumentRow();
            avRow.AdvanceID  = avDb.AdvanceID;
            avRow.DocumentID = avDb.DocumentID.DocumentID;
            if (avDb.TADocumentID.HasValue)
            {
                avRow.TADocumentID = avDb.TADocumentID.Value;
            }
            else
            {
                avRow.SetTADocumentIDNull();
            }
            avRow.AdvanceType = avDb.AdvanceType;
            if (avDb.PBID != null && avDb.PBID.Pbid > 0)
            {
                avRow.PBID = avDb.PBID.Pbid;
            }
            else
            {
                avRow.SetPBIDNull();
            }
            if (avDb.ServiceTeamID != null && avDb.ServiceTeamID.ServiceTeamID > 0)
            {
                avRow.ServiceTeamID = avDb.ServiceTeamID.ServiceTeamID;
            }
            else
            {
                avRow.SetServiceTeamIDNull();
            }
            avRow.RequestDateOfAdvance    = avDb.RequestDateOfAdvance;
            avRow.DueDateOfRemittance     = avDb.DueDateOfRemittance;
            avRow.RequestDateOfRemittance = avDb.RequestDateOfRemittance;
            if (avDb.AdvanceType == ZoneType.Foreign)
            {
                avRow.ArrivalDate = avDb.ArrivalDate.Value;
            }
            avRow.Reason           = avDb.Reason;
            avRow.PerDiemExRateUSD = (decimal)avDb.PerDiemExRateUSD;
            avRow.Amount           = (decimal)avDb.Amount;
            avRow.RemittanceAmount = (decimal)avDb.RemittanceAmount;
            avRow.ExpenseAmount    = (decimal)avDb.ExpenseAmount;
            avRow.Active           = avDb.Active;
            avRow.CreBy            = UserAccount.UserID;
            avRow.CreDate          = DateTime.Now;
            avRow.UpdBy            = UserAccount.UserID;
            avRow.UpdDate          = DateTime.Now;
            avRow.UpdPgm           = UserAccount.CurrentProgramCode;

            if (avDb.MainCurrencyID.HasValue && avDb.MainCurrencyID.Value > 0)
            {
                avRow.MainCurrencyID = avDb.MainCurrencyID.Value;
            }
            else
            {
                avRow.SetMainCurrencyIDNull();
            }

            if (avDb.MainCurrencyAmount.HasValue)
            {
                avRow.MainCurrencyAmount = (decimal)avDb.MainCurrencyAmount.Value;
            }
            else
            {
                avRow.SetMainCurrencyAmountNull();
            }

            if (avDb.ExchangeRateForLocalCurrency.HasValue)
            {
                avRow.ExchangeRateForLocalCurrency = (decimal)avDb.ExchangeRateForLocalCurrency.Value;
            }
            else
            {
                avRow.SetExchangeRateForLocalCurrencyNull();
            }

            if (avDb.ExchangeRateMainToTHBCurrency.HasValue)
            {
                avRow.ExchangeRateMainToTHBCurrency = (decimal)avDb.ExchangeRateMainToTHBCurrency.Value;
            }
            else
            {
                avRow.SetExchangeRateMainToTHBCurrencyNull();
            }

            if (avDb.LocalCurrencyAmount.HasValue)
            {
                avRow.LocalCurrencyAmount = (decimal)avDb.LocalCurrencyAmount.Value;
            }
            else
            {
                avRow.SetLocalCurrencyAmountNull();
            }

            if (avDb.IsRepOffice.HasValue)
            {
                avRow.IsRepOffice = avDb.IsRepOffice.Value;
            }
            else
            {
                avRow.SetIsRepOfficeNull();
            }


            if (avDb.RequestDateOfAdvanceApproved.HasValue)
            {
                avRow.RequestDateOfAdvanceApproved = avDb.RequestDateOfAdvanceApproved.Value;
            }
            else
            {
                avRow.SetRequestDateOfAdvanceApprovedNull();
            }

            advanceDs.AvAdvanceDocument.AddAvAdvanceDocumentRow(avRow);

            // Prepare Data to AvAdvanceItem Datatable.
            AvAdvanceItemService.PrepareDataToDataset(advanceDs, avRow.AdvanceID, false);

            advanceDs.AcceptChanges();
            return(advanceDs);
        }
Exemplo n.º 11
0
        public DataSet PrepareDS()
        {
            AdvanceDataSet ds = new AdvanceDataSet();

            return(ds.Clone());
        }
Exemplo n.º 12
0
        public void UpdateAvDocumentTransaction(AvAdvanceDocument avAdvanceDoc, Guid txid)
        {
            bool           isRepOffice          = false;
            IList <object> advanceEditableField = new List <object>();
            string         mode = string.Empty;

            if (UserAccount.CurrentProgramCode == "AdvanceForeignForm")
            {
                mode = "FR";
            }
            else if (UserAccount.CurrentProgramCode == "AdvanceDomesticForm")
            {
                mode = "DM";
            }
            if (avAdvanceDoc.DocumentID != null)
            {
                advanceEditableField = GetEditableFields(avAdvanceDoc.DocumentID.DocumentID, null);
            }
            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();
            AdvanceDataSet ds = (AdvanceDataSet)TransactionService.GetDS(txid);

            AdvanceDataSet.AvAdvanceDocumentRow rowAdvance = (AdvanceDataSet.AvAdvanceDocumentRow)ds.AvAdvanceDocument.FindByAdvanceID(avAdvanceDoc.AdvanceID);
            SS.Standard.WorkFlow.DTO.WorkFlow   workFlow   = WorkFlowQueryProvider.WorkFlowQuery.GetWorkFlowByDocumentID(avAdvanceDoc.DocumentID.DocumentID);

            AdvanceDataSet.DocumentRow rowDocument = (AdvanceDataSet.DocumentRow)ds.Document.FindByDocumentID(rowAdvance.DocumentID);
            if (!rowAdvance.IsIsRepOfficeNull())
            {
                isRepOffice = rowAdvance.IsRepOffice;
            }
            //IList<AvAdvanceItem> advanceItem = ScgeAccountingQueryProvider.AvAdvanceItemQuery.FindByAvAdvanceItemAdvanceID(rowAdvance.AdvanceID);
            //ds.AvAdvanceItem.FindByAdvanceID(rowAdvance.AdvanceID);
            DataRow[] drItem = ds.AvAdvanceItem.Select(string.Format("AdvanceID={0}", rowAdvance.AdvanceID));
            rowAdvance.BeginEdit();
            // Validate Amount.
            if (avAdvanceDoc.AdvanceType == ZoneType.Domestic)
            {
                Dbpb pb = ScgDbQueryProvider.DbPBQuery.FindByIdentity(avAdvanceDoc.PBID == null ? 0 : avAdvanceDoc.PBID.Pbid);

                if (!isRepOffice)
                {
                    if (avAdvanceDoc.Amount == 0)
                    {
                        errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("AmountDomesticIsRequired"));
                    }
                    //เกินวงเงินของ counter cashier
                    if (avAdvanceDoc.PaymentType == PaymentType.CA)
                    {
                        if (pb != null && avAdvanceDoc.Amount > pb.PettyCashLimit && pb.PettyCashLimit != 0)
                        {
                            errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("AmountDomesticIsOverPettyCashLimit"));
                        }
                    }
                }
                else
                {
                    if (avAdvanceDoc.LocalCurrencyAmount == 0)
                    {
                        errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("AmountIsRequired"));
                    }

                    if (avAdvanceDoc.PaymentType == PaymentType.CA)
                    {
                        if (avAdvanceDoc.MainCurrencyAmount > pb.PettyCashLimit && pb.PettyCashLimit != 0)
                        {
                            errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("AmountDomesticIsOverPettyCashLimit"));
                        }
                    }
                }
                //ถ้าเป็นไม่เป้นเงินโอน ต้องใส่ค่า dbpb
                if (drItem.Length > 0)
                {
                    if (!drItem[0]["PaymentType"].ToString().Equals(PaymentType.TR))
                    {
                        if (avAdvanceDoc.PBID == null || avAdvanceDoc.PBID.Pbid == 0)
                        {
                            errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("CounterCashierIsRequired"));
                        }
                    }
                }
                // Validate Service Team
                if (avAdvanceDoc.ServiceTeamID.ServiceTeamID == 0)
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("ServiceTeamIsRequired"));
                }
            }
            else
            {
                if (avAdvanceDoc.ArrivalDate == null)
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("ArrivalDateIsRequired"));
                }
                if (avAdvanceDoc.ArrivalDate.Equals(DateTime.MinValue))
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("ArrivalDateIsMoreThanRequestDateofAdvance"));
                }
                // Validate Counter Cashier
                if (avAdvanceDoc.PBID == null || avAdvanceDoc.PBID.Pbid == 0)
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("CounterCashierFNIsRequired"));
                }
                if ((workFlow != null && workFlow.CurrentState.Name == WorkFlowStateFlag.WaitVerify) && advanceEditableField.Contains(AdvanceFieldGroup.ExchangeRateForPerDiemCalculation) && avAdvanceDoc.PerDiemExRateUSD < 0)
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("ExchangeRateforPerDiemCalculationIsRequired"));
                }
            }

            // Validate Request date of advance
            if (avAdvanceDoc.RequestDateOfAdvance.Equals(DateTime.MinValue))
            {
                errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("RequestDateofAdvanceIsRequired"));
            }
            else if ((workFlow != null && workFlow.CurrentState.Name == WorkFlowStateFlag.WaitVerify) && (!string.IsNullOrEmpty(rowAdvance["RequestDateOfAdvanceApproved"].ToString()) && avAdvanceDoc.RequestDateOfAdvance < rowAdvance.RequestDateOfAdvanceApproved))
            {
                errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("RequestDateofAdvanceMustMoreOrEqualThanApproved"));
            }
            else if (!avAdvanceDoc.RequestDateOfAdvance.Equals(DateTime.MinValue) && !avAdvanceDoc.RequestDateOfAdvance.Equals(DateTime.MaxValue))
            {
                if (DbHolidayProfileService.CheckDay(avAdvanceDoc.RequestDateOfAdvance, mode))
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("SystemNotAllowRequestDateOfAdvanceOnHoliday"));
                }
            }
            // Validate Request date of advance

            if (avAdvanceDoc.DocumentID.DocumentID == -1 || workFlow.CurrentState.Name.Equals(WorkFlowStateFlag.Draft))
            {
                if (avAdvanceDoc.RequestDateOfAdvance.Date.CompareTo(DateTime.Today) < 0)
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("RequestDateofAdvanceMustBeLaterThanToday"));
                }
            }

            // Validate Request date of Remittance
            if (avAdvanceDoc.RequestDateOfRemittance.Equals(DateTime.MinValue))
            {
                errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("RequestDateofRemittanceIsRequired"));
            }
            // Validate Reason
            if (avAdvanceDoc.RequestDateOfRemittance.CompareTo(avAdvanceDoc.DueDateOfRemittance) > 0)
            {
                if (string.IsNullOrEmpty(avAdvanceDoc.Reason))
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("ReasonIsRequired"));
                }
            }
            // Validate request date of remittance ; check request date between advance date and advance date + x Day
            // use maxValue ในการ check ถ้าส่งมาเป้น max value แปลว่า วันที่เลือกมาอยู่นอกช่วงที่กำหนด
            if (avAdvanceDoc.RequestDateOfRemittance.Equals(DateTime.MaxValue))
            {
                errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("RequestDateofRemittanceIsNotIntime"));
            }
            else if (!avAdvanceDoc.RequestDateOfRemittance.Equals(DateTime.MaxValue) && !avAdvanceDoc.RequestDateOfRemittance.Equals(DateTime.MinValue))
            {
                if (DbHolidayProfileService.CheckDay(avAdvanceDoc.RequestDateOfRemittance, mode))
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("SystemNotAllowRequestDateOfRemittanceOnHoliday"));
                }
            }
            if (!errors.IsEmpty)
            {
                throw new ServiceValidationException(errors);
            }

            rowAdvance.DocumentID = avAdvanceDoc.DocumentID.DocumentID;
            if (avAdvanceDoc.TADocumentID.HasValue)
            {
                rowAdvance.TADocumentID = avAdvanceDoc.TADocumentID.Value;
            }
            else
            {
                rowAdvance.SetTADocumentIDNull();
            }
            if (avAdvanceDoc.PBID != null)
            {
                rowAdvance.PBID = avAdvanceDoc.PBID.Pbid;
            }
            else
            {
                rowAdvance.SetPBIDNull();
            }
            rowAdvance.AdvanceType = avAdvanceDoc.AdvanceType;
            if (avAdvanceDoc.ServiceTeamID != null)
            {
                rowAdvance.ServiceTeamID = avAdvanceDoc.ServiceTeamID.ServiceTeamID;
            }
            else
            {
                rowAdvance.SetServiceTeamIDNull();
            }
            rowAdvance.RequestDateOfAdvance    = avAdvanceDoc.RequestDateOfAdvance;
            rowAdvance.DueDateOfRemittance     = avAdvanceDoc.DueDateOfRemittance;
            rowAdvance.RequestDateOfRemittance = avAdvanceDoc.RequestDateOfRemittance;
            if (avAdvanceDoc.ArrivalDate != null)
            {
                rowAdvance.ArrivalDate = avAdvanceDoc.ArrivalDate.Value;
            }
            else
            {
                rowAdvance.ArrivalDate = DateTime.MinValue;
            }
            rowAdvance.Reason = avAdvanceDoc.Reason;

            if (workFlow == null || workFlow.CurrentState.Name == WorkFlowStateFlag.Draft)
            {
                rowAdvance.PerDiemExRateUSD = 0;
            }
            else
            {
                rowAdvance.PerDiemExRateUSD = Math.Round((decimal)avAdvanceDoc.PerDiemExRateUSD, 5, MidpointRounding.AwayFromZero);
            }
            rowAdvance.Amount           = Math.Round((decimal)avAdvanceDoc.Amount, 2, MidpointRounding.AwayFromZero);
            rowAdvance.RemittanceAmount = Math.Round((decimal)avAdvanceDoc.RemittanceAmount, 2, MidpointRounding.AwayFromZero);
            rowAdvance.ExpenseAmount    = Math.Round((decimal)avAdvanceDoc.ExpenseAmount, 2, MidpointRounding.AwayFromZero);
            rowAdvance.Active           = avAdvanceDoc.Active;
            rowAdvance.CreBy            = UserAccount.UserID;
            rowAdvance.CreDate          = DateTime.Now;
            rowAdvance.UpdBy            = UserAccount.UserID;
            rowAdvance.UpdDate          = DateTime.Now;
            rowAdvance.UpdPgm           = UserAccount.CurrentProgramCode;

            if (avAdvanceDoc.IsRepOffice.HasValue)
            {
                rowAdvance.IsRepOffice = avAdvanceDoc.IsRepOffice.Value;
            }

            if (avAdvanceDoc.MainCurrencyID.HasValue && avAdvanceDoc.MainCurrencyID.Value > 0)
            {
                rowAdvance.MainCurrencyID = avAdvanceDoc.MainCurrencyID.Value;
            }
            else
            {
                rowAdvance.SetMainCurrencyIDNull();
            }

            if (avAdvanceDoc.MainCurrencyAmount.HasValue)
            {
                rowAdvance.MainCurrencyAmount = (decimal)avAdvanceDoc.MainCurrencyAmount.Value;
            }
            else
            {
                rowAdvance.SetMainCurrencyAmountNull();
            }

            if (avAdvanceDoc.ExchangeRateForLocalCurrency.HasValue)
            {
                rowAdvance.ExchangeRateForLocalCurrency = (decimal)avAdvanceDoc.ExchangeRateForLocalCurrency.Value;
            }
            else
            {
                rowAdvance.SetExchangeRateForLocalCurrencyNull();
            }

            if (avAdvanceDoc.ExchangeRateMainToTHBCurrency.HasValue)
            {
                rowAdvance.ExchangeRateMainToTHBCurrency = (decimal)avAdvanceDoc.ExchangeRateMainToTHBCurrency.Value;
            }
            else
            {
                rowAdvance.SetExchangeRateMainToTHBCurrencyNull();
            }


            if (avAdvanceDoc.LocalCurrencyAmount.HasValue)
            {
                rowAdvance.LocalCurrencyAmount = (decimal)avAdvanceDoc.LocalCurrencyAmount.Value;
            }
            else
            {
                rowAdvance.SetLocalCurrencyAmountNull();
            }

            rowAdvance.EndEdit();
        }
Exemplo n.º 13
0
        public AdvanceDataSet PrepareDataToDsTA(long taDocumentID)
        {
            AdvanceDataSet advanceDs = new AdvanceDataSet();
            //ดึงจาก base มาใส่ใน DataSet
            TADocument taDoc = ScgeAccountingQueryProvider.TADocumentQuery.FindProxyByIdentity(taDocumentID);

            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();

            if (taDoc == null)
            {
                errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("NoTADocumentFound"));
            }
            if (!errors.IsEmpty)
            {
                throw new ServiceValidationException(errors);
            }
            // Prepare Data to Document datatable.

            AdvanceDataSet.DocumentRow docRow = advanceDs.Document.NewDocumentRow();
            docRow.ApproverID  = taDoc.DocumentID.ApproverID.Userid;
            docRow.RequesterID = taDoc.DocumentID.RequesterID.Userid;
            docRow.RequesterID = taDoc.DocumentID.RequesterID.Userid;
            docRow.CreatorID   = taDoc.DocumentID.CreatorID.Userid;
            docRow.CompanyID   = taDoc.DocumentID.CompanyID.CompanyID;
            advanceDs.Document.AddDocumentRow(docRow);


            IList <DocumentInitiator> documentInitiatorList = new List <DocumentInitiator>();

            documentInitiatorList = ScgeAccountingQueryProvider.DocumentInitiatorQuery.GetDocumentInitiatorByDocumentID(taDoc.DocumentID.DocumentID);
            foreach (DocumentInitiator initiator in documentInitiatorList)
            {
                // Set data to document initiator datatable.
                AdvanceDataSet.DocumentInitiatorRow docInitial = advanceDs.DocumentInitiator.NewDocumentInitiatorRow();
                //docInitial.ini = initiator.InitiatorID;
                //if (initiator.DocumentID != null)
                //{
                //    initiatorRow["DocumentID"] = initiator.DocumentID.DocumentID;
                //}
                docInitial.InitiatorType = initiator.InitiatorType;
                docInitial.Seq           = initiator.Seq;
                if (initiator.UserID != null)
                {
                    docInitial.UserID = initiator.UserID.Userid;
                }
                docInitial.DoApprove = initiator.DoApprove;
                docInitial.Active    = initiator.Active;
                docInitial.CreBy     = initiator.CreBy;
                docInitial.CreDate   = initiator.CreDate;
                docInitial.UpdBy     = initiator.UpdBy;
                docInitial.UpdDate   = initiator.UpdDate;
                docInitial.UpdPgm    = initiator.UpdPgm;

                // Add document initiator to datatable budgetDocumentDS.
                advanceDs.DocumentInitiator.AddDocumentInitiatorRow(docInitial);
            }
            advanceDs.DocumentAttachment.NewDocumentAttachmentRow();

            // Set data to Advance Document row in advanceDs.
            AdvanceDataSet.AvAdvanceDocumentRow avRow = advanceDs.AvAdvanceDocument.NewAvAdvanceDocumentRow();
            //avRow.AdvanceID = -1;
            avRow.DocumentID   = Convert.ToInt64(advanceDs.Document.Rows[0]["DocumentID"].ToString());
            avRow.TADocumentID = taDoc.TADocumentID;
            //avRow.AdvanceType = taDoc.;
            //if (avDb.PBID != null && avDb.PBID.Pbid > 0)
            //    avRow.PBID = avDb.PBID.Pbid;
            //else
            //    avRow.SetPBIDNull();
            //avRow.ServiceTeamID = avDb.ServiceTeamID.ServiceTeamID;
            if (taDoc.TravelBy.Equals(TravellBy.Foreign))
            {
                avRow.ArrivalDate = taDoc.ToDate;
                avRow.AdvanceType = ZoneType.Foreign;
            }
            else
            {
                avRow.AdvanceType = ZoneType.Domestic;
            }
            //avRow.RequestDateOfAdvance = avDb.RequestDateOfAdvance;
            //avRow.DueDateOfRemittance = avDb.DueDateOfRemittance;
            //avRow.RequestDateOfRemittance = avDb.RequestDateOfRemittance;
            //if (avDb.AdvanceType == ZoneType.Foreign)
            //    avRow.ArrivalDate = avDb.ArrivalDate.Value;
            //avRow.Reason = avDb.Reason;
            //avRow.PerDiemExRateUSD = (decimal)avDb.PerDiemExRateUSD;
            //avRow.Amount = (decimal)avDb.Amount;
            //avRow.RemittanceAmount = (decimal)avDb.RemittanceAmount;
            //avRow.ExpenseAmount = (decimal)avDb.ExpenseAmount;
            avRow.Active  = true;
            avRow.CreBy   = UserAccount.UserID;
            avRow.CreDate = DateTime.Now;
            avRow.UpdBy   = UserAccount.UserID;
            avRow.UpdDate = DateTime.Now;
            avRow.UpdPgm  = UserAccount.CurrentProgramCode;
            advanceDs.AvAdvanceDocument.AddAvAdvanceDocumentRow(avRow);

            // Prepare Data to AvAdvanceItem Datatable.
            AvAdvanceItemService.PrepareDataToDataset(advanceDs, avRow.AdvanceID, false);

            //advanceDs.AcceptChanges();
            return(advanceDs);
        }
Exemplo n.º 14
0
        public DataSet PrepareDSTA(long taDocumentID)
        {
            AdvanceDataSet advanceDs = (AdvanceDataSet)this.PrepareDataToDsTA(taDocumentID);

            return(advanceDs);
        }
        public long AddAdvanceItem(Guid TxID, AvAdvanceItem avAdvanceItem)
        {
            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();

            AdvanceDataSet advanceDs = (AdvanceDataSet)TransactionService.GetDS(TxID);

            //AdvanceDataSet.AvAdvanceItemRow row = advanceDs.AvAdvanceItem.NewAvAdvanceItemRow();
            AdvanceDataSet.AvAdvanceDocumentRow advRow = advanceDs.AvAdvanceDocument.FindByAdvanceID(avAdvanceItem.AdvanceID.AdvanceID);
            // Validate Payment Type is not null.
            if (string.IsNullOrEmpty(avAdvanceItem.PaymentType))
            {
                errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("Payment Type is Required."));
            }
            //// Validate Currency is not null.
            if (advRow.AdvanceType.Equals(ZoneType.Foreign))
            {
                if (avAdvanceItem.CurrencyID == null)
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("Currency is Required."));
                }
            }

            if (!errors.IsEmpty)
            {
                throw new ServiceValidationException(errors);
            }

            AdvanceDataSet.AvAdvanceItemRow row = advanceDs.AvAdvanceItem.NewAvAdvanceItemRow();
            row.AdvanceID   = avAdvanceItem.AdvanceID.AdvanceID;
            row.PaymentType = avAdvanceItem.PaymentType;
            if (avAdvanceItem.CurrencyID != null)
            {
                row.CurrencyID = avAdvanceItem.CurrencyID.CurrencyID;
            }
            if (avAdvanceItem.Amount != 0)
            {
                row.Amount = Math.Round((decimal)avAdvanceItem.Amount, 2, MidpointRounding.AwayFromZero);
            }
            if (avAdvanceItem.ExchangeRate != 0)
            {
                row.ExchangeRate = Math.Round((decimal)avAdvanceItem.ExchangeRate, 5, MidpointRounding.AwayFromZero);
            }
            row.AmountTHB = Math.Round((decimal)avAdvanceItem.AmountTHB, 2, MidpointRounding.AwayFromZero);
            row.Active    = avAdvanceItem.Active;
            row.CreBy     = UserAccount.UserID;
            row.CreDate   = DateTime.Now;
            row.UpdBy     = UserAccount.UserID;
            row.UpdDate   = DateTime.Now;
            row.UpdPgm    = UserAccount.CurrentProgramCode;

            if (avAdvanceItem.ExchangeRateTHB.HasValue)
            {
                row.ExchangeRateTHB = (decimal)avAdvanceItem.ExchangeRateTHB;
            }
            else
            {
                row.SetExchangeRateTHBNull();
            }

            advanceDs.AvAdvanceItem.AddAvAdvanceItemRow(row);
            return(row.AdvanceItemID);
        }
        public void UpdateAdvanceItemTransaction(Guid txID, AvAdvanceItem avAdvanceItem, bool isRepOffice)
        {
            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();

            AdvanceDataSet advanceDS = (AdvanceDataSet)TransactionService.GetDS(txID);

            AdvanceDataSet.AvAdvanceDocumentRow advRow         = advanceDS.AvAdvanceDocument.FindByAdvanceID(avAdvanceItem.AdvanceID.AdvanceID);
            AdvanceDataSet.AvAdvanceItemRow     advanceItemRow = advanceDS.AvAdvanceItem.FindByAdvanceItemID(avAdvanceItem.AdvanceItemID);

            advanceItemRow.BeginEdit();

            //// Validate Currency is not null.
            if (advRow.AdvanceType.Equals(ZoneType.Foreign))
            {
                //if (avAdvanceItem.CurrencyID == null)
                //{
                //    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("CurrencyIsRequired"));
                //}
                if (isRepOffice)
                {
                    if (avAdvanceItem.Amount == 0)
                    {
                        errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("AmountIsRequired"));
                    }
                }
            }
            else
            {
                // Validate AmountTHB is not null.
                if (avAdvanceItem.AmountTHB == 0)
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("AmountTHBIsRequired"));
                }
                // Validate Amount is not null.
                if (avAdvanceItem.PaymentType == null)
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("PaymentTypeIsRequired"));
                }
            }
            if (avAdvanceItem.AdvanceID != null)
            {
                advanceItemRow.AdvanceID = avAdvanceItem.AdvanceID.AdvanceID;
            }

            if (!errors.IsEmpty)
            {
                throw new ServiceValidationException(errors);
            }

            //Dbpb pb = ScgDbQueryProvider.DbPBQuery.FindByIdentity(advRow.PBID);

            advanceItemRow.PaymentType = avAdvanceItem.PaymentType;
            if (advRow.AdvanceType.Equals(ZoneType.Foreign) || isRepOffice)
            {
                advanceItemRow.CurrencyID = avAdvanceItem.CurrencyID.CurrencyID;
            }
            advanceItemRow.Amount       = Math.Round((decimal)avAdvanceItem.Amount, 2, MidpointRounding.AwayFromZero);
            advanceItemRow.ExchangeRate = Math.Round((decimal)avAdvanceItem.ExchangeRate, 5, MidpointRounding.AwayFromZero);
            advanceItemRow.AmountTHB    = Math.Round((decimal)avAdvanceItem.AmountTHB, 2, MidpointRounding.AwayFromZero);
            advanceItemRow.Active       = avAdvanceItem.Active;
            advanceItemRow.CreBy        = UserAccount.UserID;
            advanceItemRow.CreDate      = DateTime.Now;
            advanceItemRow.UpdBy        = UserAccount.UserID;
            advanceItemRow.UpdDate      = DateTime.Now;
            advanceItemRow.UpdPgm       = UserAccount.CurrentProgramCode;
            if (avAdvanceItem.ExchangeRateTHB.HasValue)
            {
                advanceItemRow.ExchangeRateTHB = (decimal)avAdvanceItem.ExchangeRateTHB;
            }

            if (avAdvanceItem.MainCurrencyAmount.HasValue)
            {
                advanceItemRow.MainCurrencyAmount = (decimal)avAdvanceItem.MainCurrencyAmount;
            }
            advanceItemRow.EndEdit();
        }