Example #1
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify))
            {
                if (entity.GetFieldValue <DateTime>("FromDate") >= entity.GetFieldValue <DateTime>("ToDate"))
                {
                    throw new AfwException("تاریخ شروع نمیتواند بزرگتر از تاریخ پایان باشد.");
                }

                var entityExists = dbHelper.EntityExists("wm.ArzeshRialiEstandardKala",
                                                         string.Format(@"((FromDate >= '{0}' and ToDate <= '{1}')
                                        or (FromDate >= '{0}' and ToDate >= '{1}')
                                        or (FromDate <= '{0}' and ToDate <= '{1}')
                                        or (FromDate <= '{0}' and ToDate >= '{1}')
                                    )and StuffDef = '{2}'
                                    and ID <> '{3}'",
                                                                       entity.GetFieldValue <DateTime>("FromDate"),
                                                                       entity.GetFieldValue <DateTime>("ToDate"),
                                                                       entity.GetFieldValue <Guid>("StuffDef"),
                                                                       entity.GetFieldValue <Guid>("ID")));

                if (entityExists)
                {
                    throw new AfwException("در بازه مشترک ارزش ریالی استاندارد برای کالا، موجود است.");
                }

                var stuffEntity = dbHelper.FetchSingle("cmn.Stuff", string.Format("StuffDef = '{0}'", entity.GetFieldValue <Guid>("StuffDef")), null);
                entity.SetFieldValue("Stuff", stuffEntity.GetFieldValue <Guid>("ID"));
            }
        }
Example #2
0
        public void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            using (var tranManager = new DbTransactionManager(dbHelper))
            {
                if (entity.ChangeStatus == EntityChangeTypes.Modify)
                {
                    var leadEntity    = dbHelper.FetchSingleByID("crm.Lead", entity.GetFieldValue <Guid>("ID"), null);
                    var workflowStage = leadEntity.GetFieldValue <Guid?>("WorkflowStage");

                    var newWorkflowStage = entity.GetFieldValue <Guid?>("WorkflowStage");

                    if (workflowStage != newWorkflowStage)
                    {
                        var workflowStageEntity = dbHelper.FetchSingle("cmn.WorkflowStage", string.Format("ID = '{0}'", workflowStage.ToString()), null);
                        var workflowDef         = dbHelper.FetchSingle("cmn.WorkflowDef", string.Format("ID = '{0}'", workflowStageEntity.GetFieldValue <Guid>("WorkflowDef").ToString()), null);
                        var systemAction        = workflowStageEntity.GetFieldValue <Guid?>("SystemAction");

                        if (systemAction != null)
                        {
                            //DebugHelper.Break();
                            var systemActionEntity = dbHelper.FetchSingle("cmn.WorkfolwSystemAction", string.Format("ID = '{0}'", systemAction), null);
                            var stages             = dbHelper.FetchMultiple("cmn.WorkflowStage", string.Format("WorkflowDef = '{0}'", workflowDef.GetFieldValue <Guid>("ID")), "StageOrder", null, null, null);
                            for (int i = 0; i < stages.Entities.Count(); i++)
                            {
                                if (stages.Entities[i].GetFieldValue <Guid>("ID") == workflowStage)
                                {
                                    if (stages.Entities[i + 1].GetFieldValue <Guid>("ID") == newWorkflowStage)
                                    {
                                        var systemActionName = systemActionEntity.GetFieldValue <string>("Name");
                                        if (systemActionName == "CreateSalesCase")
                                        {
                                            ValidateLeadForQualify(entity);
                                            DoQualifyLead(entity);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                tranManager.Commit();
            }
        }
Example #3
0
        public void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            //DebugHelper.Break();

            var salesCaseStatus_OpenID = OptionSetHelper.GetOptionSetItemID("crm.SalesCaseStatuses", "Open");
            var salesCaseStatus_WonID  = OptionSetHelper.GetOptionSetItemID("crm.SalesCaseStatuses", "Won");

            if (entity.ChangeStatus == "Delete" ||
                entity.FieldValues["Status"].ToString() == salesCaseStatus_OpenID.ToString() ||
                entity.FieldValues["Status"].ToString() == salesCaseStatus_WonID.ToString())
            {
                var salesCaseLoseInfoEntity = dbHelper.FetchSingle("crm.SalesCaseLoseInfo",
                                                                   string.Format(@"SalesCase = '{0}'", entity.GetFieldValue <Guid>("ID")), null);
                if (salesCaseLoseInfoEntity != null)
                {
                    dbHelper.DeleteEntity(salesCaseLoseInfoEntity);
                }
            }

            if (entity.ChangeStatus == "Delete")
            {
                var salesCaseStageChangeHistoryEntityList = dbHelper.FetchMultiple("crm.SalesCaseStageChangeHistory",
                                                                                   string.Format(@"SalesCase = '{0}'", entity.GetFieldValue <Guid>("ID")), null, null, null, null);
                if (salesCaseStageChangeHistoryEntityList.Entities.Count != 0)
                {
                    foreach (Entity salesCaseStageChangeHistoryEntity in salesCaseStageChangeHistoryEntityList.Entities)
                    {
                        dbHelper.DeleteEntity(salesCaseStageChangeHistoryEntity);
                    }
                }

                var salesCaseOwnerUserChangeHistoryEntityList = dbHelper.FetchMultiple("crm.SalesCaseOwnerUserChangeHistory",
                                                                                       string.Format(@"SalesCase = '{0}'", entity.GetFieldValue <Guid>("ID")), null, null, null, null);
                if (salesCaseOwnerUserChangeHistoryEntityList.Entities.Count != 0)
                {
                    foreach (Entity salesCaseOwnerUserChangeHistoryEntity in salesCaseOwnerUserChangeHistoryEntityList.Entities)
                    {
                        dbHelper.DeleteEntity(salesCaseOwnerUserChangeHistoryEntity);
                    }
                }

                var salesCaseStatusChangeHistoryEntityList = dbHelper.FetchMultiple("crm.SalesCaseStatusChangeHistory",
                                                                                    string.Format(@"SalesCase = '{0}'", entity.GetFieldValue <Guid>("ID")), null, null, null, null);
                if (salesCaseStatusChangeHistoryEntityList.Entities.Count != 0)
                {
                    foreach (Entity salesCaseStatusChangeHistoryEntity in salesCaseStatusChangeHistoryEntityList.Entities)
                    {
                        dbHelper.DeleteEntity(salesCaseStatusChangeHistoryEntity);
                    }
                }
            }
        }
Example #4
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            //DebugHelper.Break();

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify))
            {
                var redundantExists = dbHelper.EntityExists("cmn.FinancialGroup",
                                                            string.Format("Title = '{0}' and ID <> '{1}'",
                                                                          entity.GetFieldValue <string>("Title"),
                                                                          entity.GetFieldValue <Guid>("ID")));

                if (redundantExists)
                {
                    throw new AfwException("این گروه مالی قبلا ثبت شده است.");
                }

                var isDefaultFinancialGroupExists = dbHelper.EntityExists("cmn.FinancialGroup",
                                                                          string.Format("IsDefault = 1 and ID <> '{0}'",
                                                                                        entity.GetFieldValue <Guid>("ID")));

                if (isDefaultFinancialGroupExists && entity.GetFieldValue <bool>("IsDefault"))
                {
                    throw new AfwException("قبلا گروه مالی پیش فرض تعیین شده است.");
                }

                if (entity.GetFieldValue <bool>("IsDefault") == true)
                {
                    var isCurrentYearExists = dbHelper.EntityExists("cmn.FinancialGroup",
                                                                    string.Format("IsDefault = '{0}' and ID <> '{1}'",
                                                                                  entity.GetFieldValue <bool>("IsDefault"),
                                                                                  entity.GetFieldValue <Guid>("ID")));

                    if (isCurrentYearExists)
                    {
                        var financialYearEntity = dbHelper.FetchSingle("cmn.FinancialGroup",
                                                                       string.Format("IsDefault = '{0}' and ID <> '{1}'",
                                                                                     entity.GetFieldValue <bool>("IsDefault"),
                                                                                     entity.GetFieldValue <Guid>("ID")), null);

                        financialYearEntity.ChangeStatus = "Modify";
                        financialYearEntity.SetFieldValue("IsDefault", false);
                        dbHelper.ApplyChanges(financialYearEntity);
                    }
                }
            }
        }
Example #5
0
        //public bool StuffDefHasTaxAndToll(Guid stuffDefId)
        //{
        //    var dbHelper = CoreComponent.Instance.MainDbHelper;

        //    var stuffDef = dbHelper.FetchSingleByID("cmn.StuffDef", stuffDefId, new string[] { "SubCategory.MainCategory" });

        //    if (stuffDef.GetFieldValue<bool>("DarayeMaliatBarArzesheAfzudeh")
        //        || )
        //}

        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.AfterApplyChanges(dbHelper, entity);

            if (entity.ChangeStatus == EntityChangeTypes.Delete)
            {
                //فعلا با ایجاد هر تعریف کالا، یک کالا هم ایجاد می کنیم.
                //با حذف تعریف کالا، ابتدا کالا باید حذف شود
                var stuff = dbHelper.FetchSingle("cmn.Stuff", string.Format("StuffDef = '{0}'", entity.GetFieldValue <Guid>("ID")), null);

                if (stuff != null)
                {
                    dbHelper.DeleteEntity(stuff);
                }
            }
        }
Example #6
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            var receiveReceiptID = entity.GetFieldValue <Guid>("ID");

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify))
            {
                if (dbHelper.EntityExists("rp.ReceiveReceipt",
                                          string.Format("ReceiptNumber = {0} and FinancialYear = '{1}' and ID <> '{2}'",
                                                        entity.GetFieldValue <int>("ReceiptNumber"), entity.GetFieldValue <Guid>("FinancialYear"),
                                                        receiveReceiptID)))
                {
                    throw new AfwException("شماره این رسید قبلا ثبت شده است");
                }

                if (entity.GetFieldValue <int>("ReceiptNumber") < 1)
                {
                    throw new AfwException("شماره رسید نباید منفی باشد");
                }

                CheckPayerChangeEnable(entity);
            }

            if (entity.ChangeStatus == EntityChangeTypes.Delete)
            {
                acc.Instance.DeleteAccDocItems(entity.GetFieldValue <Guid?>("AccDoc"), "RefOp_ReceiveReceipt", receiveReceiptID);

                if (!(entity.GetFieldValue <string>("CreatorOpName") == null ||
                      entity.GetFieldValue <string>("CreatorOpName") == ""))
                {
                    if (entity.GetFieldValue <string>("CreatorOpName") == "krf.Registration")
                    {
                        var membershipFileSettlement = dbHelper.FetchSingle("krf.MembershipFileSettlement",
                                                                            string.Format("ReceiveReceipt = '{0}'", receiveReceiptID), null);

                        if (membershipFileSettlement != null)
                        {
                            dbHelper.DeleteEntity(membershipFileSettlement);
                        }
                    }
                }
            }
        }
Example #7
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            //DebugHelper.Break();

            if (entity.ChangeStatus == EntityChangeTypes.Delete)
            {
                var personRoleRelations = dbHelper.FetchMultiple("cmn.PersonRoleRelation", string.Format("Person = '{0}'", entity.FieldValues["ID"].ToString()), null, null, null, null);
                foreach (Entity personRoleRelationEntity in personRoleRelations.Entities)
                {
                    dbHelper.DeleteEntity(personRoleRelationEntity);
                }

                var roles = dbHelper.FetchMultiple("cmn.PersonRole", null, null, null, null, null).Entities;
                foreach (var role in roles)
                {
                    var roleName       = role.GetFieldValue <string>("Name");
                    var roleInfoEntity = dbHelper.FetchSingle("cmn.Person_" + roleName + "Info", string.Format("Person = '{0}'", entity.FieldValues["ID"].ToString()), null);

                    if (roleInfoEntity != null)
                    {
                        dbHelper.DeleteEntity(roleInfoEntity);
                    }
                }

                var personGroupRelations = dbHelper.FetchMultiple("cmn.PersonGroupRelation", string.Format("Person = '{0}'", entity.FieldValues["ID"].ToString()), null, null, null, null);
                foreach (Entity personGroupRelationEntity in personGroupRelations.Entities)
                {
                    dbHelper.DeleteEntity(personGroupRelationEntity);
                }
            }
            else
            {
                entity.SetFieldValue("StoredDisplayText", CalculateStoredDisplayText(entity));
            }

            //else if(entity.ChangeStatus == EntityChangeTypes.Add)
            //{
            //    //var entityList = AreExistPersonCodes(dbHelper, entity);
            //    //if (entityList != null)

            //}
        }
Example #8
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify))
            {
                var redundantExists = dbHelper.EntityExists("rp.QuickSettlementCashItem",
                                                            string.Format("Cash = '{0}' and Gender = '{1}' and FinancialOpKind = '{2}' and ID <> '{3}'",
                                                                          entity.GetFieldValue <Guid>("Cash"),
                                                                          entity.GetFieldValue <Guid>("Gender"),
                                                                          entity.GetFieldValue <Guid>("FinancialOpKind"),
                                                                          entity.GetFieldValue <Guid>("ID")));

                if (redundantExists)
                {
                    throw new AfwException("این آیتم صندوق در تسویه سریع قبلا ثبت شده است.");
                }

                if (entity.GetFieldValue <bool>("IsDefault") == true)
                {
                    var isDefaultExists = dbHelper.EntityExists("rp.QuickSettlementCashItem",
                                                                string.Format("IsDefault = '{0}' and ID <> '{1}'",
                                                                              entity.GetFieldValue <bool>("IsDefault"),
                                                                              entity.GetFieldValue <Guid>("Gender"),
                                                                              entity.GetFieldValue <Guid>("ID")));

                    if (isDefaultExists)
                    {
                        var beforeQuickSettlementCashItemEntity = dbHelper.FetchSingle("rp.QuickSettlementCashItem",
                                                                                       string.Format("IsDefault = '{0}' and Gender = '{1}' and ID <> '{2}'",
                                                                                                     entity.GetFieldValue <bool>("IsDefault"),
                                                                                                     entity.GetFieldValue <Guid>("Gender"),
                                                                                                     entity.GetFieldValue <Guid>("ID")), null);

                        beforeQuickSettlementCashItemEntity.ChangeStatus = "Modify";
                        beforeQuickSettlementCashItemEntity.SetFieldValue("IsDefault", false);
                        dbHelper.ApplyChanges(beforeQuickSettlementCashItemEntity);
                    }
                }
            }
        }
Example #9
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            //DebugHelper.Break();

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify))
            {
                var redundantExists = dbHelper.EntityExists("ps.PriceList",
                                                            string.Format("Title = '{0}' and ID <> '{1}'",
                                                                          entity.GetFieldValue <string>("Title"),
                                                                          entity.GetFieldValue <Guid>("ID")));

                if (redundantExists)
                {
                    throw new AfwException("این لیست قیمت با این نام قبلا ثبت شده است.");
                }

                if (entity.GetFieldValue <bool>("IsDefault") == true)
                {
                    var isDefaultExists = dbHelper.EntityExists("ps.PriceList",
                                                                string.Format("IsDefault = '{0}' and SaleBuyType = '{1}' and ID <> '{2}'",
                                                                              entity.GetFieldValue <bool>("IsDefault"),
                                                                              entity.GetFieldValue <Guid>("SaleBuyType"),
                                                                              entity.GetFieldValue <Guid>("ID")));

                    if (isDefaultExists)
                    {
                        var priceListEntity = dbHelper.FetchSingle("ps.PriceList",
                                                                   string.Format("IsDefault = '{0}' and SaleBuyType = '{1}' and ID <> '{2}'",
                                                                                 entity.GetFieldValue <bool>("IsDefault"),
                                                                                 entity.GetFieldValue <Guid>("SaleBuyType"),
                                                                                 entity.GetFieldValue <Guid>("ID")), null);

                        priceListEntity.ChangeStatus = "Modify";
                        priceListEntity.SetFieldValue("IsDefault", false);
                        dbHelper.ApplyChanges(priceListEntity);
                    }
                }
            }
        }
        public override void AfterApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.AfterApplyChanges(dbHelper, entity);

            if (entity.ChangeStatus != EntityChangeTypes.Delete)
            {
                new SalesCaseBL().UpdateSalesCaseLastActionTime(entity.GetFieldValue <Guid>("SalesCase"));
            }

            var connectedPersonID = entity.GetFieldValue <Guid>("ConnectedPerson");

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify))
            {
                //ایجاد یا به روز رسانی اشخاص مرتبط در موجودیت مشتری
                var salesCase = dbHelper.FetchSingleByID("crm.SalesCase", entity.GetFieldValue <Guid>("SalesCase"), null);

                var personConnectedPerson = dbHelper.FetchSingle("cmn.PersonConnectedPerson",
                                                                 string.Format("ParentPerson = '{0}' and ConnectedPerson = '{1}'",
                                                                               salesCase.GetFieldValue <Guid>("Customer"), connectedPersonID), null);

                if (personConnectedPerson != null &&
                    personConnectedPerson.GetFieldValue <Guid?>("ConnectedPersonPost") != entity.GetFieldValue <Guid?>("ConnectedPersonPost"))
                {
                    personConnectedPerson.SetFieldValue("ConnectedPersonPost", entity.GetFieldValue <Guid?>("ConnectedPersonPost"));
                    dbHelper.UpdateEntity(personConnectedPerson);
                }
                else
                {
                    personConnectedPerson = dbHelper.CreateNewEntity("cmn.PersonConnectedPerson");
                    personConnectedPerson.SetFieldValue("ParentPerson", salesCase.GetFieldValue <Guid>("Customer"));
                    personConnectedPerson.SetFieldValue("ConnectedPerson", connectedPersonID);
                    personConnectedPerson.SetFieldValue("ConnectedPersonPost", entity.GetFieldValue <Guid?>("ConnectedPersonPost"));
                    dbHelper.InsertEntity(personConnectedPerson);
                }
            }
        }
Example #11
0
        public Entity FetchOrCreatePerson(string personCode, string name, string lastName, string mobilePhoneNumber1OrCommission, string roleName, EntityDbHelper dbHelper)
        {
            var personExists = false;

            if (roleName == "Customer")
            {
                personExists = dbHelper.EntityExists("cmn.Person", string.Format("Name = N'{0}' and LastName = N'{1}' and MobilePhoneNumber1 = '{2}'", name, lastName, mobilePhoneNumber1OrCommission));
            }
            else if (roleName == "Marketer")
            {
                personExists = dbHelper.EntityExists("cmn.Person", string.Format("Name = N'{0}' and LastName = N'{1}'", name, lastName));
            }

            if (personExists == false)
            {
                var personEntity = dbHelper.CreateNewEntity("cmn.Person");
                personEntity.SetFieldValue("Name", name);
                personEntity.SetFieldValue("LastName", lastName);
                if (roleName == "Customer")
                {
                    personEntity.SetFieldValue("MobilePhoneNumber1", mobilePhoneNumber1OrCommission);
                }

                var haghighiID = OptionSetHelper.GetOptionSetItemID("cmn.PersonTypes", "Haghighi");
                personEntity.SetFieldValue("PersonType", haghighiID);

                var person_CustomerInfoEntity = dbHelper.CreateNewEntity("cmn.Person_CustomerInfo");
                var person_MarketerInfoEntity = dbHelper.CreateNewEntity("cmn.Person_MarketerInfo");

                if (roleName == "Customer")
                {
                    person_CustomerInfoEntity.SetFieldValue("PersonCode", personCode);
                    person_CustomerInfoEntity.SetFieldValue("Person", personEntity.GetFieldValue <Guid>("ID"));

                    personEntity.AddField("CustomerInfo", person_CustomerInfoEntity);
                }
                else if (roleName == "Marketer")
                {
                    person_MarketerInfoEntity.SetFieldValue("PersonCode", personCode);
                    person_MarketerInfoEntity.SetFieldValue("Person", personEntity.GetFieldValue <Guid>("ID"));
                    person_MarketerInfoEntity.SetFieldValue("Commission", mobilePhoneNumber1OrCommission);

                    personEntity.AddField("MarketerInfo", person_MarketerInfoEntity);
                }

                var personRoleRelationEntityList = new EntityList();
                var personRoleRelationEntity     = dbHelper.CreateNewEntity("cmn.PersonRoleRelation");
                personRoleRelationEntityList.EntityDefID = personRoleRelationEntity.EntityDefID;
                var personRoleEntity = dbHelper.FetchSingle("cmn.PersonRole", string.Format("Name = '{0}'", roleName), null);
                personRoleRelationEntity.SetFieldValue("PersonRole", personRoleEntity.GetFieldValue <Guid>("ID"));
                personRoleRelationEntity.SetFieldValue("Person", personEntity.GetFieldValue <Guid>("ID"));
                personRoleRelationEntityList.Entities.Add(personRoleRelationEntity);

                personEntity.SetFieldValue("PersonRoleRelations", personRoleRelationEntityList);

                new PersonBL().SavePerson(personEntity);
                return(personEntity);
            }
            else
            {
                var personEntity = dbHelper.CreateNewEntity("cmn.Person");
                if (roleName == "Customer")
                {
                    personEntity = dbHelper.FetchSingle("cmn.Person", string.Format("Name = N'{0}' and LastName = N'{1}' and MobilePhoneNumber1 = '{2}'", name, lastName, mobilePhoneNumber1OrCommission), null);
                }
                else if (roleName == "Marketer")
                {
                    personEntity = dbHelper.FetchSingle("cmn.Person", string.Format("Name = N'{0}' and LastName = N'{1}'", name, lastName), null);
                }

                return(personEntity);
            }
        }
Example #12
0
        public Entity FetchOrCreateStuff(ref Entity stuffMainCategory, string stuffCode, string stuffName, EntityDbHelper dbHelper)
        {
            var stuffEntity = dbHelper.CreateNewEntity("cmn.Stuff");

            var stuffDefEntity = dbHelper.FetchSingle("cmn.StuffDef", string.Format("Code = '{0}' and Name = N'{1}'", stuffCode, stuffName), null);

            if (stuffDefEntity == null)
            {
                // دریافت گروه های اصلی کالا که کدینگ حسابداری برای آنها ثبت شده است
                var stuffMainCategoryEntityList = dbHelper.FetchMultiple("cmn.StuffMainCategory", "Account is not null", null, null, null, null);
                if (stuffMainCategoryEntityList.Entities.Count > 0)
                {
                    // اولین گروه اصلی کالا که کدینگ حسابداری برای آن ثبت شده است
                    stuffMainCategory = stuffMainCategoryEntityList.Entities[0];
                    var stuffMainCategoryFirstID = stuffMainCategory.GetFieldValue <Guid>("ID");

                    // دریافت گروه های فرعی کالا که کدینگ حسابداری دارند
                    var stuffSubCategoryEntityList = dbHelper.FetchMultiple("cmn.StuffSubCategory",
                                                                            string.Format("MainCategory = '{0}'", stuffMainCategoryFirstID), null, null, null, null);

                    var mainMeasurementUnitEntityList = dbHelper.FetchMultiple("cmn.MeasurementUnit", null, null, null, null, null);

                    if (stuffSubCategoryEntityList.Entities.Count > 0 && mainMeasurementUnitEntityList.Entities.Count > 0)
                    {
                        // شناسه اولین گروه فرعی کالا
                        var subCategoryID = stuffSubCategoryEntityList.Entities[0].GetFieldValue <Guid>("ID");
                        // شناسه اولین واحد کالا
                        var mainMeasurementUnitID = mainMeasurementUnitEntityList.Entities[0].GetFieldValue <Guid>("ID");

                        var newStuffDef = dbHelper.CreateNewEntity("cmn.StuffDef");
                        newStuffDef.SetFieldValue("Code", stuffCode);
                        newStuffDef.SetFieldValue("Name", stuffName);
                        newStuffDef.SetFieldValue("HideInProforma", 0);
                        newStuffDef.SetFieldValue("HideInInvoice", 0);
                        newStuffDef.SetFieldValue("HideInStockTransfer", 0);
                        newStuffDef.SetFieldValue("DarayeMaliatBarArzesheAfzudeh", 0);
                        newStuffDef.SetFieldValue("SetUnitPriceOnlyFromPricesList", 0);
                        newStuffDef.SetFieldValue("SubCategory", subCategoryID);
                        newStuffDef.SetFieldValue("MainMeasurementUnit", mainMeasurementUnitID);
                        dbHelper.ApplyChanges(newStuffDef);

                        // فعلا در نرم افزار به ازای یک تعریف کالا یک کالا نیز وجود دارد که ما اولین آیتم آن را برمیگردانیم که بعدا قرار است یک لیست برگردانده شود
                        var stuffList = dbHelper.FetchMultiple("cmn.Stuff", string.Format("StuffDef = '{0}'", stuffDefEntity.GetFieldValue <Guid>("ID")), null, null, null, null);
                        stuffEntity = stuffList.Entities[0];
                    }
                }
            }
            else
            {
                // فعلا در نرم افزار به ازای یک تعریف کالا یک کالا نیز وجود دارد که ما اولین آیتم آن را برمیگردانیم که بعدا قرار است یک لیست برگردانده شود
                var stuffList = dbHelper.FetchMultiple("cmn.Stuff", string.Format("StuffDef = '{0}'", stuffDefEntity.GetFieldValue <Guid>("ID")), null, null, null, null);
                stuffEntity = stuffList.Entities[0];

                var subCategoryID    = stuffDefEntity.GetFieldValue <Guid>("SubCategory");
                var stuffSubCategory = dbHelper.FetchSingle("cmn.StuffSubCategory", string.Format("ID = '{0}'", subCategoryID), null);
                stuffMainCategory = dbHelper.FetchSingle("cmn.StuffMainCategory",
                                                         string.Format("ID = '{0}'", stuffSubCategory.GetFieldValue <Guid>("MainCategory")), null);
            }

            return(stuffEntity);
        }