Esempio n. 1
0
        public void ActionNewFromProposal()
        {
            ActionNew();
            SaleOrderEntities      entity                 = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo       mainObject             = (ARSaleOrdersInfo)entity.MainObject;
            ARProposalsController  objProposalsController = new ARProposalsController();
            List <ARProposalsInfo> proposalList           = objProposalsController.GetAllProposalForOderring();
            guichooseProposal      guiFind                = new guichooseProposal(proposalList);

            guiFind.Module = this;
            guiFind.ShowDialog();
            if (guiFind.DialogResult != DialogResult.OK)
            {
                return;
            }
            ARProposalsInfo objProposalsInfo = (ARProposalsInfo)guiFind.SelectedObjects[0];

            if (objProposalsInfo != null)
            {
                mainObject.FK_ARCustomerID              = objProposalsInfo.FK_ARCustomerID;
                mainObject.FK_ARProposalID              = objProposalsInfo.ARProposalID;
                mainObject.FK_GECurrencyID              = objProposalsInfo.FK_GECurrencyID;
                mainObject.ARSaleOrderDesc              = objProposalsInfo.ARProposalDesc;
                mainObject.ARSaleOrderExchangeRate      = objProposalsInfo.ARProposalExchangeRate;
                mainObject.ARSaleOrderPaymentMethodType = objProposalsInfo.ARProposalPaymentMethod;
                mainObject.ARSaleOrderSubTotalAmount    = objProposalsInfo.ARProposalSubTotalAmount;
                mainObject.ARSaleOrderDiscountPercent   = objProposalsInfo.ARProposalDiscountPerCent;
                mainObject.ARSaleOrderDiscountAmount    = objProposalsInfo.ARProposalDiscountAmount;
                mainObject.ARSaleOrderTaxPercent        = objProposalsInfo.ARProposalTaxPercent;
                mainObject.ARSaleOrderTaxAmount         = objProposalsInfo.ARProposalTaxAmount;
                mainObject.ARSaleOrderTotalAmount       = objProposalsInfo.ARProposalTotalAmount;
            }
            proposalList.Clear();
            proposalList = (List <ARProposalsInfo>)guiFind.SelectedObjects;
            proposalList.ForEach(o =>
            {
                ARProposalItemsController objProposalItemsController = new ARProposalItemsController();
                List <ARProposalItemsInfo> proposalItems             = objProposalItemsController.GetAllItemByProopsalID(o.ARProposalID);
                proposalItems.ForEach(p =>
                {
                    ARSaleOrderItemsInfo objSaleOrderItemsInfo            = new ARSaleOrderItemsInfo();
                    objSaleOrderItemsInfo.FK_ICProductID                  = p.FK_ICProductID;
                    objSaleOrderItemsInfo.FK_ICMeasureUnitID              = p.FK_ICMeasureUnitID;
                    objSaleOrderItemsInfo.ARSaleOrderItemProductNo        = p.ARProposalItemProductNo;
                    objSaleOrderItemsInfo.ARSaleOrderItemProductName      = p.ARProposalItemProductName;
                    objSaleOrderItemsInfo.ARSaleOrderItemProductDesc      = p.ARProposalItemDesc;
                    objSaleOrderItemsInfo.ARSaleOrderItemProductUnitPrice = p.ARProposalItemPrice;
                    objSaleOrderItemsInfo.ARSaleOrderItemProductQty       = p.ARProposalItemQty;
                    objSaleOrderItemsInfo.ARSaleOrderItemDiscountPercent  = p.ARProposalItemDiscountPercent;
                    objSaleOrderItemsInfo.ARSaleOrderItemDiscountAmount   = p.ARProposalItemDiscountAmount;
                    objSaleOrderItemsInfo.ARSaleOrderItemTaxPercent       = p.ARProposalItemTaxPercent;
                    objSaleOrderItemsInfo.ARSaleOrderItemTaxAmount        = p.ARProposalItemTaxAmount;
                    objSaleOrderItemsInfo.ARSaleOrderItemTotalAmount      = p.ARProposalItemTotalAmount;
                    entity.SaleOrderItemsList.Add(objSaleOrderItemsInfo);
                });
            });
            ChangeCustomer(mainObject.FK_ARCustomerID);
            entity.UpdateMainObjectBindingSource();
            entity.SaleOrderItemsList.GridControl.RefreshDataSource();
        }
Esempio n. 2
0
        public void ChangeCustomer(int customerID)
        {
            if (Toolbar.IsNullOrNoneAction() || customerID <= 0)
            {
                return;
            }

            SaleOrderEntities     entity                 = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo      mainObject             = (ARSaleOrdersInfo)CurrentModuleEntity.MainObject;
            ARCustomersController objCustomersController = new ARCustomersController();
            ARCustomersInfo       objCustomersInfo       = objCustomersController.GetObjectByID(customerID) as ARCustomersInfo;

            if (objCustomersInfo == null)
            {
                return;
            }
            if (objCustomersInfo.ARCustomerActiveCheck == false)
            {
                MessageBox.Show("Khách hàng này đã bỏ hoạt động!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            mainObject.FK_ARCustomerID                    = customerID;
            mainObject.ARSaleOrderCustomerName            = objCustomersInfo.ARCustomerName;
            mainObject.ARSaleOrderCustomerPhone           = string.IsNullOrEmpty(objCustomersInfo.ARCustomerContactPhone1) ? (string.IsNullOrEmpty(objCustomersInfo.ARCustomerContactPhone2) ? string.Empty : objCustomersInfo.ARCustomerContactPhone2) : objCustomersInfo.ARCustomerContactPhone1;
            mainObject.FK_GECurrencyID                    = objCustomersInfo.FK_GECurrencyID;
            mainObject.FK_GEPaymentTermID                 = objCustomersInfo.FK_GEPaymentTermID;
            mainObject.ARSaleOrderPaymentMethodType       = string.IsNullOrEmpty(objCustomersInfo.ARCustomerPaymentMethod) ? string.Empty : objCustomersInfo.ARCustomerPaymentMethod;
            mainObject.ARSaleOrderCustomerTaxCode         = objCustomersInfo.ARCustomerTaxNumber;
            mainObject.ARSaleOrderCustomerAddress         = objCustomersInfo.ARCustomerContactAddress;
            mainObject.ARSaleOrderCustomerDeliveryName    = objCustomersInfo.ARCustomerName;
            mainObject.ARSaleOrderCustomerDeliveryPhone   = mainObject.ARSaleOrderCustomerPhone;
            mainObject.ARSaleOrderCustomerDeliveryAddress = mainObject.ARSaleOrderCustomerAddress;
            mainObject.ARSaleOrderCustomerDeliveryAddress = mainObject.ARSaleOrderCustomerAddress;
            entity.UpdateMainObjectBindingSource();
        }
Esempio n. 3
0
 public SaleOrderModule()
 {
     this.CurrentModuleName     = "SaleOrder";
     CurrentModuleEntity        = new SaleOrderEntities();
     CurrentModuleEntity.Module = this;
     InitializeModule();
 }
Esempio n. 4
0
        public override void ActionApproved()
        {
            base.ActionApproved();
            SaleOrderEntities           entity                = (SaleOrderEntities)CurrentModuleEntity;
            List <ARSaleOrderItemsInfo> invetoryCheckList     = new List <ARSaleOrderItemsInfo>();
            ICProductsController        objProductsController = new ICProductsController();
            ICProductsInfo objProductsInfo = new ICProductsInfo();

            entity.SaleOrderItemsList.ForEach(o =>
            {
                objProductsInfo = (ICProductsInfo)objProductsController.GetObjectByID(o.FK_ICProductID);
                if (objProductsInfo == null)
                {
                    return;
                }

                if (o.ARSaleOrderItemGrantedFrom == ProductGrantedFrom.Inventory)
                {
                    invetoryCheckList.Add((ARSaleOrderItemsInfo)o.Clone());
                }
            });
            if (!IsValidInventoryStockQty(invetoryCheckList))
            {
                return;
            }
            ARSaleOrdersInfo       mainObject = (ARSaleOrdersInfo)entity.MainObject;
            ARSaleOrdersController objSaleOrdersController = new ARSaleOrdersController();

            mainObject.ARSaleOrderStatus = "Approved";
            entity.UpdateMainObject();
            GLHelper.PostedTransactions(CurrentModuleName, mainObject.ARSaleOrderID, ModulePostingType.SaleOrder);
            InvalidateToolbar();
        }
Esempio n. 5
0
        public void UpdateTotalAmount()
        {
            SaleOrderEntities entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo  mainObject = (ARSaleOrdersInfo)CurrentModuleEntity.MainObject;

            entity.UpdateTotalAmount();
            GeneratePaymentTime(mainObject.FK_GEPaymentTermID);
        }
Esempio n. 6
0
        public override void InitGridControlDataSource()
        {
            SaleOrderEntities entity = (SaleOrderEntities)((BaseModuleERP)Screen.Module).CurrentModuleEntity;
            BindingSource     bds    = new BindingSource();

            bds.DataSource  = entity.SaleOrderPaymentTimeList;
            this.DataSource = bds;
        }
Esempio n. 7
0
        public void InitializeSaleOrderReport(ARSaleOrder report)
        {
            SaleOrderEntities           entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo            mainObject = (ARSaleOrdersInfo)entity.MainObject;
            ARSaleOrderItemsController  objSaleOrderItemsController = new ARSaleOrderItemsController();
            List <ARSaleOrderItemsInfo> soItemList = objSaleOrderItemsController.GetItemForSaleOrderReport(mainObject.ARSaleOrderID);

            report.bsARSaleOrderItems.DataSource = soItemList;
        }
Esempio n. 8
0
        public void DeleteItemFromSaleOrderPaymentTimeList()
        {
            if (Toolbar.IsNullOrNoneAction())
            {
                return;
            }
            SaleOrderEntities entity = (SaleOrderEntities)CurrentModuleEntity;

            entity.SaleOrderPaymentTimeList.RemoveSelectedRowObjectFromList();
        }
Esempio n. 9
0
        public void ChangeTaxPercent()
        {
            if (Toolbar.IsNullOrNoneAction())
            {
                return;
            }

            SaleOrderEntities entity = (SaleOrderEntities)CurrentModuleEntity;

            UpdateTotalAmount();
        }
Esempio n. 10
0
        public void ChangeCurrency(int currencyID)
        {
            SaleOrderEntities entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo  mainObject = (ARSaleOrdersInfo)entity.MainObject;

            mainObject.FK_GECurrencyID = currencyID;
            GECurrenciesInfo objCurrenciesInfo = VinaApp.CurrencyList.Where(o => o.GECurrencyID == currencyID).FirstOrDefault();

            mainObject.ARSaleOrderExchangeRate = objCurrenciesInfo == null ? 1 : objCurrenciesInfo.GECurrencyTransferRate;
            entity.UpdateMainObjectBindingSource();
            ChangeExchangeRate();
        }
Esempio n. 11
0
        public void ChangeDiscountAmount()
        {
            SaleOrderEntities entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo  mainObject = (ARSaleOrdersInfo)entity.MainObject;

            if (mainObject.ARSaleOrderSubTotalAmount != 0)
            {
                mainObject.ARSaleOrderDiscountPercent = 100 * mainObject.ARSaleOrderDiscountAmount / mainObject.ARSaleOrderSubTotalAmount;
            }
            else
            {
                mainObject.ARSaleOrderDiscountPercent = 0;
            }
            mainObject.ARSaleOrderDiscountPercent = Math.Round(mainObject.ARSaleOrderDiscountPercent, 2, MidpointRounding.AwayFromZero);
            UpdateTotalAmount();
        }
Esempio n. 12
0
        public void SaleOrderPaymentMethod(string paymentMethod)
        {
            if (Toolbar.IsNullOrNoneAction())
            {
                return;
            }

            SaleOrderEntities entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo  mainObject = (ARSaleOrdersInfo)entity.MainObject;

            entity.SaleOrderPaymentTimeList.ForEach(o =>
            {
                o.ARSaleOrderPaymentTimePaymentMethod = mainObject.ARSaleOrderPaymentMethodType;
            });
            entity.SaleOrderPaymentTimeList.GridControl.RefreshDataSource();
        }
Esempio n. 13
0
        public void SetDefaultSaleOrderName()
        {
            SaleOrderEntities entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo  mainObject = (ARSaleOrdersInfo)CurrentModuleEntity.MainObject;

            if (!String.IsNullOrWhiteSpace(mainObject.ARSaleOrderName))
            {
                return;
            }

            if (mainObject.FK_ARCustomerID == 0)
            {
                return;
            }

            mainObject.ARSaleOrderName = string.Format("Bán hàng cho {0}", mainObject.ARSaleOrderCustomerName);
        }
Esempio n. 14
0
        public override void InvalidateToolbar()
        {
            base.InvalidateToolbar();
            SaleOrderEntities entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo  mainObject = (ARSaleOrdersInfo)entity.MainObject;

            ParentScreen.SetEnableOfToolbarButton("Approved", false);
            ParentScreen.SetEnableOfToolbarButton(BaseToolbar.ToolbarButtonEdit, true);
            if (mainObject.ARSaleOrderID > 0)
            {
                ParentScreen.SetEnableOfToolbarButton("Approved", true);
                if (mainObject.ARSaleOrderStatus == "Approved")
                {
                    ParentScreen.SetEnableOfToolbarButton(BaseToolbar.ToolbarButtonEdit, false);
                    ParentScreen.SetEnableOfToolbarButton("Approved", false);
                }
            }
        }
Esempio n. 15
0
        protected override void GridView_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            base.GridView_CellValueChanged(sender, e);
            GridView          gridView = (GridView)sender;
            SaleOrderEntities entity   = (SaleOrderEntities)(this.Screen.Module as BaseModuleERP).CurrentModuleEntity;

            if (entity.SaleOrderItemsList.CurrentIndex >= 0)
            {
                ARSaleOrderItemsInfo item = (ARSaleOrderItemsInfo)gridView.GetRow(gridView.FocusedRowHandle);
                if (e.Column.FieldName == "ARSaleOrderItemDiscountAmount")
                {
                    ((SaleOrderModule)Screen.Module).ChangeItemDiscountAmount();
                }
                else if (e.Column.FieldName == "ARSaleOrderItemTaxAmount")
                {
                    ((SaleOrderModule)Screen.Module).ChangeItemTaxAmount();
                }
                ((SaleOrderModule)Screen.Module).ChangeItemFromSaleOrderItemsList(item);
            }
        }
Esempio n. 16
0
        public void ChangeItemFromSaleOrderItemsList(ARSaleOrderItemsInfo objSaleOrderItemsInfo)
        {
            if (Toolbar.IsNullOrNoneAction())
            {
                return;
            }

            SaleOrderEntities entity = (SaleOrderEntities)CurrentModuleEntity;

            if (objSaleOrderItemsInfo == null)
            {
                return;
            }

            objSaleOrderItemsInfo.ARSaleOrderItemDiscountAmount = (objSaleOrderItemsInfo.ARSaleOrderItemDiscountPercent / 100) * (objSaleOrderItemsInfo.ARSaleOrderItemProductQty * objSaleOrderItemsInfo.ARSaleOrderItemProductUnitPrice);
            objSaleOrderItemsInfo.ARSaleOrderItemTaxAmount      = (objSaleOrderItemsInfo.ARSaleOrderItemTaxPercent / 100) * (objSaleOrderItemsInfo.ARSaleOrderItemProductQty * objSaleOrderItemsInfo.ARSaleOrderItemProductUnitPrice - objSaleOrderItemsInfo.ARSaleOrderItemDiscountAmount);
            objSaleOrderItemsInfo.ARSaleOrderItemTotalAmount    = objSaleOrderItemsInfo.ARSaleOrderItemProductQty * objSaleOrderItemsInfo.ARSaleOrderItemProductUnitPrice - objSaleOrderItemsInfo.ARSaleOrderItemDiscountAmount + objSaleOrderItemsInfo.ARSaleOrderItemTaxAmount;
            entity.SaleOrderItemsList.GridControl.RefreshDataSource();
            UpdateTotalAmount();
        }
Esempio n. 17
0
        public void ChangeTaxAmount()
        {
            if (Toolbar.IsNullOrNoneAction())
            {
                return;
            }

            SaleOrderEntities entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo  mainObject = (ARSaleOrdersInfo)entity.MainObject;

            if (mainObject.ARSaleOrderSubTotalAmount - mainObject.ARSaleOrderDiscountAmount != 0)
            {
                mainObject.ARSaleOrderTaxPercent = 100 * mainObject.ARSaleOrderTaxAmount / (mainObject.ARSaleOrderSubTotalAmount - mainObject.ARSaleOrderDiscountAmount);
            }
            else
            {
                mainObject.ARSaleOrderTaxPercent = 0;
            }
            mainObject.ARSaleOrderTaxPercent = Math.Round(mainObject.ARSaleOrderTaxPercent, 2, MidpointRounding.AwayFromZero);
            UpdateTotalAmount();
        }
Esempio n. 18
0
        public void ChangeItemDiscountAmount()
        {
            SaleOrderEntities    entity = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrderItemsInfo objSaleOrderItemsInfo = entity.SaleOrderItemsList[entity.SaleOrderItemsList.CurrentIndex];

            if (objSaleOrderItemsInfo == null)
            {
                return;
            }

            if (objSaleOrderItemsInfo.ARSaleOrderItemDiscountAmount != 0 && (objSaleOrderItemsInfo.ARSaleOrderItemProductQty * objSaleOrderItemsInfo.ARSaleOrderItemProductUnitPrice) != 0)
            {
                objSaleOrderItemsInfo.ARSaleOrderItemDiscountPercent = 100 * objSaleOrderItemsInfo.ARSaleOrderItemDiscountAmount / (objSaleOrderItemsInfo.ARSaleOrderItemProductQty * objSaleOrderItemsInfo.ARSaleOrderItemProductUnitPrice);
            }
            else
            {
                objSaleOrderItemsInfo.ARSaleOrderItemDiscountPercent = 0;
            }
            objSaleOrderItemsInfo.ARSaleOrderItemDiscountPercent = Math.Round(objSaleOrderItemsInfo.ARSaleOrderItemDiscountPercent, 2, MidpointRounding.AwayFromZero);
            entity.SaleOrderItemsList.GridControl.RefreshDataSource();
        }
Esempio n. 19
0
        public void ChangeExchangeRate()
        {
            SaleOrderEntities entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo  mainObject = (ARSaleOrdersInfo)entity.MainObject;

            entity.SaleOrderItemsList.ForEach(o =>
            {
                if (mainObject.ARSaleOrderExchangeRate != 0)
                {
                    o.ARSaleOrderItemProductUnitPrice = o.ARSaleOrderItemProductBasicPrice / mainObject.ARSaleOrderExchangeRate;
                }
                else
                {
                    o.ARSaleOrderItemProductUnitPrice = 0;
                }

                ChangeItemFromSaleOrderItemsList(o);
            });
            entity.SaleOrderItemsList.GridControl.RefreshDataSource();
            UpdateTotalAmount();
        }
Esempio n. 20
0
        public override int ActionSave()
        {
            SaleOrderEntities entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo  mainObject = (ARSaleOrdersInfo)CurrentModuleEntity.MainObject;

            SetDefaultSaleOrderName();
            List <string> errorList = new List <string>();

            if (mainObject.FK_ARCustomerID == 0)
            {
                errorList.Add("Khách hàng không được để trống!");
            }
            if (mainObject.FK_GEPaymentTermID == 0)
            {
                errorList.Add("Điều khoản thanh toán không được bỏ trống!");
            }
            if (string.IsNullOrWhiteSpace(mainObject.ARSaleOrderPaymentMethodType))
            {
                errorList.Add("Phương thức thanh toán không được bỏ trống!");
            }
            if (mainObject.FK_GECurrencyID == 0 || mainObject.ARSaleOrderExchangeRate == 0)
            {
                errorList.Add("Vui lòng chọn loại tiền tề và tỷ giá!");
            }
            entity.SaleOrderItemsList.ForEach(o =>
            {
                if (o.ARSaleOrderItemGrantedFrom == ProductGrantedFrom.Inventory && o.FK_ICStockID == 0)
                {
                    errorList.Add("Vui lòng chọn kho cho sản phẩm có mã: " + o.ARSaleOrderItemProductNo);
                }
            });
            if (errorList.Count() > 0)
            {
                GuiErrorMessage guiError = new GuiErrorMessage(errorList);
                guiError.Module = this;
                guiError.ShowDialog();
                return(0);
            }
            return(base.ActionSave());
        }
Esempio n. 21
0
        public void AddItemFromSaleOrderItemsList(int productID)
        {
            if (Toolbar.IsNullOrNoneAction() || productID <= 0)
            {
                return;
            }

            ICProductsController objProductsController = new ICProductsController();
            ICProductsInfo       objProductsInfo       = objProductsController.GetObjectByID(productID) as ICProductsInfo;

            if (objProductsInfo == null)
            {
                return;
            }

            SaleOrderEntities    entity = CurrentModuleEntity as SaleOrderEntities;
            ARSaleOrderItemsInfo objSaleOrderItemsInfo = objProductsInfo.ToSaleOrderItem();

            entity.SaleOrderItemsList.Add(objSaleOrderItemsInfo);
            entity.SaleOrderItemsList.GridControl.RefreshDataSource();
            UpdateTotalAmount();
        }
Esempio n. 22
0
        public void GeneratePaymentTime(int paymentTermID)
        {
            if (Toolbar.IsNullOrNoneAction())
            {
                return;
            }

            SaleOrderEntities entity     = (SaleOrderEntities)CurrentModuleEntity;
            ARSaleOrdersInfo  mainObject = (ARSaleOrdersInfo)entity.MainObject;

            GEPaymentTermsController objPaymentTermsController = new GEPaymentTermsController();
            GEPaymentTermsInfo       objPaymentTermsInfo       = objPaymentTermsController.GetObjectByID(paymentTermID) as GEPaymentTermsInfo;

            if (objPaymentTermsInfo == null)
            {
                return;
            }

            GEPaymentTermItemsController  objPaymentTermItemsController = new GEPaymentTermItemsController();
            List <GEPaymentTermItemsInfo> paymentTermItems = objPaymentTermItemsController.GetListItemByPaymentTermID(paymentTermID);

            if (paymentTermItems.Count() <= 0)
            {
                return;
            }

            mainObject.FK_GEPaymentTermID = paymentTermID;
            if (entity.SaleOrderPaymentTimeList.Count() > 0)
            {
                entity.SaleOrderPaymentTimeList.Clear();
            }

            if (mainObject.ARSaleOrderTotalAmount == 0)
            {
                return;
            }

            ARSaleOrderPaymentTimesInfo objPayment;

            paymentTermItems.ForEach(o =>
            {
                objPayment = new ARSaleOrderPaymentTimesInfo();
                objPayment.ARSaleOrderPaymentTimePaymentType = o.GEPaymentTermItemPaymentType;
                objPayment.ARSaleOrderPaymentTimeStatus      = "New";
                objPayment.ARSaleOrderPaymentTimeAmount      = mainObject.ARSaleOrderTotalAmount * o.GEPaymentTermItemPaymentPercent / 100;
                objPayment.ARSaleOrderPaymentTimeDueAmount   = mainObject.ARSaleOrderTotalAmount * o.GEPaymentTermItemPaymentPercent / 100;
                objPayment.FK_GEPaymentTermID = paymentTermID;
                objPayment.ARSaleOrderPaymentTimePaymentMethod = mainObject.ARSaleOrderPaymentMethodType;
                objPayment.FK_ARSaleOrderID = mainObject.ARSaleOrderID;
                objPayment.ARSaleOrderPaymentTimePaymentTermItemPaymentTime    = o.GEPaymentTermItemPaymentTime;
                objPayment.ARSaleOrderPaymentTimePaymentTermItemDay            = o.GEPaymentTermItemDay;
                objPayment.ARSaleOrderPaymentTimePaymentTermItemPercentPayment = o.GEPaymentTermItemPaymentPercent;
                objPayment.ARSaleOrderPaymentTimePaymentTermItemPaymentType    = o.GEPaymentTermItemPaymentType;
                objPayment.ARSaleOrderPaymentTimePaymentTermItemType           = o.GEPaymentTermItemPaymentType;
                objPayment.FK_GEPaymentTermItemID = o.GEPaymentTermItemID;
                if (o.GEPaymentTermItemPaymentTime == "IsContract")
                {
                    if (mainObject.ARSaleOrderDate.Date != DateTime.MaxValue.Date && mainObject.ARSaleOrderDate.Date != DateTime.MinValue.Date)
                    {
                        objPayment.ARSaleOrderPaymentTimeDate    = mainObject.ARSaleOrderDate;
                        objPayment.ARSaleOrderPaymentTimeDueDate = mainObject.ARSaleOrderDate;
                    }
                }
                if (o.GEPaymentTermItemPaymentTime == "IsBeforeDelivery")
                {
                    if (mainObject.ARSaleOrderDeliveryDate.Date != DateTime.MaxValue.Date && mainObject.ARSaleOrderDeliveryDate.Date != DateTime.MinValue.Date)
                    {
                        objPayment.ARSaleOrderPaymentTimeDate    = mainObject.ARSaleOrderDeliveryDate.AddDays(-o.GEPaymentTermItemDay);
                        objPayment.ARSaleOrderPaymentTimeDueDate = mainObject.ARSaleOrderDeliveryDate.AddDays(-o.GEPaymentTermItemDay);
                    }
                }
                if (o.GEPaymentTermItemPaymentTime == "IsAfterDelivery")
                {
                    if (mainObject.ARSaleOrderDeliveryDate.Date != DateTime.MaxValue.Date && mainObject.ARSaleOrderDeliveryDate.Date != DateTime.MinValue.Date)
                    {
                        objPayment.ARSaleOrderPaymentTimeDate    = mainObject.ARSaleOrderDeliveryDate.AddDays(o.GEPaymentTermItemDay);
                        objPayment.ARSaleOrderPaymentTimeDueDate = mainObject.ARSaleOrderDeliveryDate.AddDays(o.GEPaymentTermItemDay);
                    }
                }
                if (o.GEPaymentTermItemPaymentTime == "IsSaleOrder")
                {
                    if (mainObject.ARSaleOrderDeliveryDate.Date != DateTime.MaxValue.Date && mainObject.ARSaleOrderDeliveryDate.Date != DateTime.MinValue.Date)
                    {
                        objPayment.ARSaleOrderPaymentTimeDate    = mainObject.ARSaleOrderDeliveryDate.AddDays(o.GEPaymentTermItemDay);
                        objPayment.ARSaleOrderPaymentTimeDueDate = mainObject.ARSaleOrderDeliveryDate.AddDays(o.GEPaymentTermItemDay);
                    }
                }
                VinaApp.RoundByCurrency(objPayment, mainObject.FK_GECurrencyID);
                entity.SaleOrderPaymentTimeList.Add(objPayment);
                entity.SaleOrderPaymentTimeList.GridControl.RefreshDataSource();
            });
        }