Example #1
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            if (wm.Instance.IsRunningUnvaluation)
            {
                LoadOldEntityOnBeforeApplyChanges = false;
            }

            base.BeforeApplyChanges(dbHelper, entity);

            if (wm.Instance.IsRunningUnvaluation)
            {
                return;
            }

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify))
            {
                var ghabzOrHavale           = dbHelper.FetchSingleByID("wm.GhabzOrHavale", entity.GetFieldValue <Guid>("GhabzOrHavale"), null);
                var ghabzOrHavaleTypeEntity = wm.Instance.GetGhabzOrHavaleTypeEntity(ghabzOrHavale.GetFieldValue <Guid>("GhabzOrHavaleType"));
                var warehouseDocName        = OptionSetHelper.GetOptionSetItemName(ghabzOrHavaleTypeEntity.GetFieldValue <Guid>("WarehouseDocType"));
                var stuffLocationID         = ghabzOrHavale.GetFieldValue <Guid?>("StuffLocation");
                var stuffLocation           = dbHelper.FetchSingleByID("cmn.StuffLocation", (Guid)stuffLocationID, null);
                var stuff = dbHelper.FetchSingleByID("cmn.Stuff", entity.GetFieldValue <Guid>("Stuff"), null);

                if (entity.FieldExists("Stuff_Entity"))
                {
                    entity.RemoveField("Stuff_Entity");
                }

                if (entity.GetFieldValue <int>("Quantity") < 0)
                {
                    throw new AfwException("تعداد کالای وارد شده در سطر {0} مجاز نمی باشد.",
                                           entity.GetFieldValue <int>("RowNumber"));
                }
                else if (entity.GetFieldValue <int>("Quantity") == 0)
                {
                    //تنها در رسید و حواله تغییر ارزش تعداد 0 مجاز است و در این حالت هم نباید شماره بچ و وضعیت وارد شود
                    if (!string.IsNullOrEmpty(entity.GetFieldValue <string>("BatchNumber")) || entity.GetFieldValue <Guid?>("StuffStatus") != null)
                    {
                        throw new AfwException("تعداد کالای وارد شده در سطر {0} مجاز نمی باشد.",
                                               entity.GetFieldValue <int>("RowNumber"));
                    }
                }

                if (!dbHelper.EntityExists("cmn.StuffPossibleLocation", string.Format("StuffDef = '{0}' and StuffLocation = '{1}'",
                                                                                      stuff.GetFieldValue <Guid>("StuffDef"), stuffLocationID)))
                {
                    throw new AfwException("در تعریف کالای سطر {0}، {1} بعنوان انبار مجاز انتخاب نشده است.",
                                           entity.GetFieldValue <int>("RowNumber"), stuffLocation.GetFieldValue <string>("Name"));
                }

                new GhabzOrHavaleItemBL().ValidateBatchNumbers(entity);
            }
        }
Example #2
0
        public override void AfterApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.AfterApplyChanges(dbHelper, entity);

            if (entity.ChangeStatus == EntityChangeTypes.Delete)
            {
                return;
            }

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

            if (entity.GetFieldValue <Guid?>("Unreserve_RelatedReserveItem") != null)
            {
                relatedReserveItem   = entity.GetFieldValue <Guid>("Unreserve_RelatedReserveItem");
                relatedReserveEntity = dbHelper.FetchSingleByID("wm.WarehouseInventoryReserveListItem", relatedReserveItem, null);
            }
            var unreserve_RelatedItems = dbHelper.FetchMultiple("wm.WarehouseInventoryReserveListItem",
                                                                string.Format("Unreserve_RelatedReserveItem = '{0}'", relatedReserveItem), null, null, null, null);

            var quantitySum = 0;

            for (int i = 0; i < unreserve_RelatedItems.Entities.Count; i++)
            {
                quantitySum += unreserve_RelatedItems.Entities[i].GetFieldValue <int>("Quantity");
            }

            if (quantitySum > relatedReserveEntity.GetFieldValue <int>("Quantity"))
            {
                throw new AfwException("تعداد کل کالاهای برگشتی این رزرو بیشتر از تعداد اولیه رزرو است");
            }
        }
Example #3
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify))
            {
                if (entity.GetFieldValue <Guid?>("FinancialGroup") == null)
                {
                    throw new AfwException("FinancialGroup is not set.(Check in OrgzanizationUnitSetting)");
                }

                ValidateOpDate(entity);
            }

            if (entity.ChangeStatus != EntityChangeTypes.None)
            {
                Guid financialDocTypeID = Guid.Empty;

                if (entity.FieldExists("FinancialDocType"))
                {
                    financialDocTypeID = entity.GetFieldValue <Guid>("FinancialDocType");
                }
                else if (entity.FieldExists("FinancialGroup"))
                {
                    financialDocTypeID = dbHelper.FetchSingleByID("cmn.FinancialGroup", entity.GetFieldValue <Guid>("FinancialGroup"), null)
                                         .GetFieldValue <Guid>("FinancialDocType");
                }

                acc.Instance.CheckFinalDocExistsAtDates(entity.GetFieldValue <Guid>("FinancialYear"),
                                                        financialDocTypeID,
                                                        entity.GetFieldValue <DateTime>(GetOpDateFieldName()),
                                                        (_OldEntity != null ? _OldEntity.GetFieldValue <DateTime>(GetOpDateFieldName()) : null as DateTime?));
            }
        }
Example #4
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify))
            {
                if (String.IsNullOrEmpty(entity.GetFieldValue <string>("SerialNumber")))
                {
                    throw new AfwException("هیچ شماره سریالی وارد نشده است.");
                }

                var redundantExists = dbHelper.EntityExists("wm.StuffSerialNumber",
                                                            string.Format("GhabzOrHavaleItem = '{0}' and SerialNumber = '{1}' and ID <> '{2}'",
                                                                          entity.GetFieldValue <Guid>("GhabzOrHavaleItem"),
                                                                          entity.GetFieldValue <string>("SerialNumber"),
                                                                          entity.GetFieldValue <Guid>("ID")));

                if (redundantExists)
                {
                    var rowNumber = dbHelper.FetchSingleByID("wm.GhabzOrHavaleItem",
                                                             entity.GetFieldValue <Guid>("GhabzOrHavaleItem"), null).GetFieldValue <int>("RowNumber");
                    throw new AfwException("برای کالا در سطر {0} شماره سریال {1} تکراری ثبت شده است.", rowNumber, entity.GetFieldValue <string>("SerialNumber"));
                }
            }
        }
Example #5
0
        private void SetReturnFromBuyNumber(EntityDbHelper dbHelper, Entity entity)
        {
            var id = entity.GetFieldValue <Guid>("ID");
            var financialGroupID = entity.GetFieldValue <Guid>("FinancialGroup");
            var organizationUnit = entity.GetFieldValue <Guid>("OrganizationUnit");
            var financialYearID  = entity.GetFieldValue <Guid>("FinancialYear");

            int?returnFromBuyNumber = cmn.Instance.GetFieldMaxIntValue("ReturnFromBuyNumber", "ps_ReturnFromBuys", string.Format(@"
                OrganizationUnit = '{0}'
                and FinancialGroup = '{1}' 
                and FinancialYear = '{2}'",
                                                                                                                                 organizationUnit,
                                                                                                                                 financialGroupID,
                                                                                                                                 financialYearID));

            if (returnFromBuyNumber != 0)
            {
                returnFromBuyNumber += 1;
            }
            else
            {
                var financialGroupEntity     = dbHelper.FetchSingleByID("cmn.FinancialGroup", financialGroupID, null);
                var returnFromBuyStartNumber = financialGroupEntity.GetFieldValue <int?>("ReturnFromBuyStartNumber");
                returnFromBuyNumber = (returnFromBuyStartNumber == null) ? 1 : (int)returnFromBuyStartNumber;
            }

            entity.SetFieldValue("ReturnFromBuyNumber", returnFromBuyNumber);
            entity.SetFieldValue("InternalNumber1", returnFromBuyNumber);
        }
        public override void AfterApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.AfterApplyChanges(dbHelper, entity);

            //DebugHelper.Break();
            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify))
            {
                CreateGhabzOrHavale(entity, "Havale", entity.ChangeStatus);
                CreateGhabzOrHavale(entity, "Ghabz", entity.ChangeStatus);
            }

            if (entity.ChangeStatus != EntityChangeTypes.Delete)
            {
                if (entity.FieldExists("StuffStatusChangeAndTransferItems") &&
                    entity.GetFieldValue <EntityList>("StuffStatusChangeAndTransferItems") != null)
                {
                    dbHelper.ApplyChanges(entity.GetFieldValue <EntityList>("StuffStatusChangeAndTransferItems"));
                }

                var stuffStatusChangeAndTransferType = dbHelper.FetchSingleByID("wm.StuffStatusChangeAndTransferType", entity.GetFieldValue <Guid>("StuffStatusChangeAndTransferType"), null);
                if (stuffStatusChangeAndTransferType.GetFieldValue <bool>("AccDocIssuing"))
                {
                    CreateStuffStatusChangeAndTransferAccDoc(entity);
                }
            }

            if (entity.ChangeStatus == EntityChangeTypes.Delete)
            {
                //acc.Instance.DeleteAccDocMaster(entity.GetFieldValue<Guid?>("AccDoc"), "wm.StuffStatusChangeAndTransfer", invoiceID);
            }
        }
Example #7
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add, EntityChangeTypes.Modify, EntityChangeTypes.None))
            {
                if (entity.GetFieldValue <Guid>("FinancialOpKind") == Guid.Parse("00000000-0000-0000-0000-000000000000"))
                {
                    entity.SetFieldValue("FinancialOpKind", null);
                }

                var innerEntity = entity.GetFieldValue <Entity>("InnerItem");
                innerEntity.ChangeStatus =
                    entity.ChangeStatus == EntityChangeTypes.None ? EntityChangeTypes.Modify : entity.ChangeStatus;

                dbHelper.ApplyChanges(innerEntity);

                if (entity.ChangeStatus == EntityChangeTypes.Add && entity.GetFieldValue <Guid?>("FinancialItem_Cheque") != null)
                {
                    var payReceipt = dbHelper.FetchSingleByID("rp.PayReceipt", entity.GetFieldValue <Guid>("PayReceipt"), null);
                    new PaidChequeBL().CreateChequeStatusChange(innerEntity, payReceipt);
                }

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

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add))
            {
                if (dbHelper.EntityExists("rp.Tankhah",
                                          string.Format("TankhahNo = {0} and FinancialYear = '{1}' and ID <> '{2}'",
                                                        entity.GetFieldValue <int>("TankhahNo"),
                                                        entity.GetFieldValue <Guid>("FinancialYear"),
                                                        entity.GetFieldValue <Guid>("ID"))))
                {
                    throw new AfwException("شماره تنخواه تکراری است.");
                }
            }

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Modify, EntityChangeTypes.Delete))
            {
                var oldTankhah = dbHelper.FetchSingleByID("rp.Tankhah", entity.GetFieldValue <Guid>("ID"), null);

                if (oldTankhah.GetFieldValue <Guid?>("AccDoc") != null &&
                    entity.GetFieldValue <Guid?>("AccDoc") != null /*except when deleting Doc that sets AccDoc field to null*/)
                {
                    throw new AfwException("امکان تغییر یا حذف این آیتم بدلیل صدور سند حسابداری وجود ندارد.");
                }
            }
        }
Example #9
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            if (entity.ChangeStatus == EntityChangeTypes.Modify)
            {
                var oldEntity = dbHelper.FetchSingleByID("ps.StuffRequest", entity.GetFieldValue <Guid>("ID"), null);
            }
        }
Example #10
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

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

            if (entity.ChangeStatus == EntityChangeTypes.Modify)
            {
                _OldConnectedPersonID = dbHelper.FetchSingleByID("cmn.PersonConnectedPerson", id, null).GetFieldValue <Guid>("ConnectedPerson");
            }
        }
Example #11
0
        public override void AfterApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.AfterApplyChanges(dbHelper, entity);

            if (wm.Instance.IsRunningUnvaluation)
            {
                return;
            }

            var ghabzOrHavale           = dbHelper.FetchSingleByID("wm.GhabzOrHavale", entity.GetFieldValue <Guid>("GhabzOrHavale"), null);
            var ghabzOrHavaleTypeEntity = wm.Instance.GetGhabzOrHavaleTypeEntity(ghabzOrHavale.GetFieldValue <Guid>("GhabzOrHavaleType"));
            var warehouseDocName        = OptionSetHelper.GetOptionSetItemName(ghabzOrHavaleTypeEntity.GetFieldValue <Guid>("WarehouseDocType"));
            var stuffLocationID         = ghabzOrHavale.GetFieldValue <Guid>("StuffLocation");

            if (entity.ChangeStatus == EntityChangeTypes.Delete)
            {
                if (entity.GetFieldValue <Guid>("GhabzOrHavale") != wm.Instance.DeletingGhabzOrHavaleID)
                {
                    wm.Instance.CompareRefDocItemsWithGhabzOrHavaleItems(ghabzOrHavale);
                }
            }
            else
            {
                if (warehouseDocName == "Havale" &&
                    ghabzOrHavaleTypeEntity.GetFieldValue <bool>("Havale_CheckStuffStock"))
                {
                    CheckStuffStock(entity, stuffLocationID,
                                    ghabzOrHavale.GetFieldValue <DateTime>("IssueDate"),
                                    null, null);
                }

                //bool? isValuationActivity = null;
                //if (entity.ChangeStatus == EntityChangeTypes.Modify)
                //{
                //    if (wm.Instance.IsRunningValuation || wm.Instance.IsRunningUnvaluation || wm.Instance.IsEvaluatingDocsForValuation)
                //        isValuationActivity = true;
                //    else
                //    {
                //        var changedFieldNames = cmn.Instance.GetChangedFieldsName(_OldEntity, entity, null);
                //        if (changedFieldNames.Any(o => !o.IsIn("LastModifyTime", "LastModifierUser", "RialiAmount")))
                //            isValuationActivity = true;
                //        else
                //            isValuationActivity = false;
                //    }
                //}
                //else
                //    isValuationActivity = false;

                if (!wm.Instance.InventoryValuationBL.IsInValuationOperation)
                {
                    ApplyItemSerialNumbersChanges(ghabzOrHavale, entity);
                }
            }
        }
Example #12
0
        public override void AfterApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.AfterApplyChanges(dbHelper, entity);

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

            if (entity.ChangeStatus == EntityChangeTypes.Add)
            {
                var afwOrganizationUnit = dbHelper.CreateNewEntity("afw.OrganizationUnit");
                afwOrganizationUnit.SetFieldValue("ID", id);
                afwOrganizationUnit.SetFieldValue("Name", entity.GetFieldValue <string>("Name"));
                afwOrganizationUnit.SetFieldValue("ParentOrganizationUnit", entity.GetFieldValue <Guid>("ParentOrganizationUnit"));

                dbHelper.InsertEntity(afwOrganizationUnit);
            }
            if (entity.ChangeStatus == EntityChangeTypes.Modify)
            {
                var afwOrganizationUnit = dbHelper.FetchSingleByID("afw.OrganizationUnit", id, null);

                if (afwOrganizationUnit == null)
                {
                    throw new AfwException("afwOrganizationUnit not found!");
                }

                afwOrganizationUnit.SetFieldValue("Name", entity.GetFieldValue <string>("Name"));
                afwOrganizationUnit.SetFieldValue("ParentOrganizationUnit", entity.GetFieldValue <Guid>("ParentOrganizationUnit"));

                dbHelper.UpdateEntity(afwOrganizationUnit);
            }
            if (entity.ChangeStatus == EntityChangeTypes.Delete)
            {
                var afwOrganizationUnit = dbHelper.FetchSingleByID("afw.OrganizationUnit", id, null);

                if (afwOrganizationUnit == null)
                {
                    throw new AfwException("afwOrganizationUnit not found!");
                }

                dbHelper.DeleteEntity(afwOrganizationUnit);
            }
        }
Example #13
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            var onTheWayStuffInfoID = entity.GetFieldValue <Guid>("OnTheWayStuffInfo");

            Entity onTheWayStuffInfoEntity = dbHelper.FetchSingleByID("wm.OnTheWayStuffInfo", onTheWayStuffInfoID, null);
            int    notReceivedNumber       = new OnTheWayStuffInfoBL().GetNotReceivedStuffNumber(onTheWayStuffInfoEntity);

            if (notReceivedNumber < entity.GetFieldValue <int>("CurrentPartyReceivedQuantity"))
            {
                throw new AfwException("تعداد رسیده در این دریافت بیشتر از تعداد دریافت نشده در اطلاعات کالا در راه است ");
            }
        }
Example #14
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Modify, EntityChangeTypes.Delete))
            {
                var tankhah = dbHelper.FetchSingleByID("rp.Tankhah", entity.GetFieldValue <Guid>("Tankhah"), null);

                if (tankhah.GetFieldValue <Guid?>("AccDoc") != null)
                {
                    throw new AfwException("امکان تغییر یا حذف این آیتم بدلیل صدور سند حسابداری وجود ندارد.");
                }
            }
        }
Example #15
0
        private void DeleteFinancialItem(EntityDbHelper dbHelper, Entity itemEntity)
        {
            try
            {
                var receiveTypeName = new ReceiveTypeBL().GetReceiveTypeName(itemEntity.GetFieldValue <Guid>("ReceiveType"));
                var fieldName       = "";
                var entityFullName  = "";
                switch (receiveTypeName)
                {
                case "Cheque":
                    entityFullName = "rp.ReceivedCheque";
                    fieldName      = "FinancialItem_Cheque";
                    break;

                case "Safte":
                    entityFullName = "rp.SafteDaryafti";
                    fieldName      = "FinancialItem_Safte";
                    break;

                case "Havale":
                    entityFullName = "rp.HavaleDaryafti";
                    fieldName      = "FinancialItem_Havale";
                    break;

                case "Naghd":
                    entityFullName = "rp.NaghdeDaryafti";
                    fieldName      = "FinancialItem_Naghd";
                    break;

                case "ChekeZemanat":
                    entityFullName = "rp.ChekeZemanateDaryafti";
                    fieldName      = "FinancialItem_ChekeZemanat";
                    break;

                case "Pos":
                    entityFullName = "rp.ReceivedPos";
                    fieldName      = "FinancialItem_Pos";
                    break;
                }

                var financialItemEntity = dbHelper.FetchSingleByID(entityFullName, itemEntity.GetFieldValue <Guid>(fieldName), null);
                dbHelper.DeleteEntity(financialItemEntity);
            }
            catch (Exception ex)
            {
                throw new Exception("Error in Delete ReceiveReceiptFinancialItem.", ex);
            }
        }
Example #16
0
        public virtual void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            _OldEntity = null;

            if (entity.EntityDefID == null)
                throw new AfwException("entity.EntityDefID is not set.");

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Modify, EntityChangeTypes.Delete))
            {
                if (LoadOldEntityOnBeforeApplyChanges)
                    _OldEntity = dbHelper.FetchSingleByID((Guid)entity.EntityDefID, entity.GetFieldValue<Guid>("ID"), null);
            }

            if (entity.FieldExists("IssueDate") && entity.FieldExists("FinancialYear"))
                CheckIssueDateAndFinancialYearConsistency(entity);
        }
Example #17
0
        public override void AfterApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.AfterApplyChanges(dbHelper, entity);

            var salesCase = dbHelper.FetchSingleByID("crm.SalesCase", entity.GetFieldValue <Guid>("SalesCase"), null);

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Add))
            {
                var salesCaseStatus_LostID = OptionSetHelper.GetOptionSetItemID("crm.SalesCaseStatuses", "Lost");
                salesCase.FieldValues["Status"] = salesCaseStatus_LostID;
            }

            salesCase.FieldValues["LastActionTime"] = CoreComponent.Instance.GetServerDateTime();
            salesCase.ChangeStatus = EntityChangeTypes.Modify;

            dbHelper.ApplyChanges(salesCase);
        }
Example #18
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 #19
0
        private void SetReturnFromSalesNumber(EntityDbHelper dbHelper, Entity entity)
        {
            var id = entity.GetFieldValue <Guid>("ID");
            var financialGroupID   = entity.GetFieldValue <Guid>("FinancialGroup");
            var financialDocTypeID = entity.GetFieldValue <Guid>("FinancialDocType");
            var organizationUnit   = entity.GetFieldValue <Guid>("OrganizationUnit");
            var financialYearID    = entity.GetFieldValue <Guid>("FinancialYear");
            var isAmani            = entity.GetFieldValue <bool>("IsAmani");

            int?returnFromSalesNumber = cmn.Instance.GetFieldMaxIntValue("ReturnFromSalesNumber", "ps_ReturnFromSales", string.Format(@"
                OrganizationUnit = '{0}' 
                and FinancialDocType = '{1}' 
                and FinancialYear = '{2}'
                and IsAmani = {3}",
                                                                                                                                      organizationUnit,
                                                                                                                                      financialDocTypeID,
                                                                                                                                      financialYearID,
                                                                                                                                      isAmani == true ? 1 : 0));

            if (returnFromSalesNumber != 0)
            {
                returnFromSalesNumber += 1;
            }
            else
            {
                var financialGroupEntity            = dbHelper.FetchSingleByID("cmn.FinancialGroup", financialGroupID, null);
                var returnFromSalesStartNumber      = financialGroupEntity.GetFieldValue <int?>("ReturnFromSalesStartNumber");
                var amaniReturnFromSalesStartNumber = financialGroupEntity.GetFieldValue <int?>("AmaniReturnFromSalesStartNumber");

                if (isAmani)
                {
                    returnFromSalesNumber = (amaniReturnFromSalesStartNumber == null) ? 1 : (int)amaniReturnFromSalesStartNumber;
                }
                else
                {
                    returnFromSalesNumber = (returnFromSalesStartNumber == null) ? 1 : (int)returnFromSalesStartNumber;
                }
            }

            entity.SetFieldValue("ReturnFromSalesNumber", returnFromSalesNumber);
            entity.SetFieldValue("InternalNumber1", returnFromSalesNumber);
        }
Example #20
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("cmn.FinancialYear",
                                                            string.Format("YearNo = '{0}' and ID <> '{1}'",
                                                                          entity.GetFieldValue <string>("YearNo"),
                                                                          entity.GetFieldValue <Guid>("ID")));

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

            if (entity.ChangeStatus == EntityChangeTypes.Modify)
            {
                if (dbHelper.GetCount("acc.AccDoc", string.Format("FinancialYear = '{0}'", entity.GetFieldValue <Guid>("ID"))) != 0)
                {
                    var oldFinancialYear = dbHelper.FetchSingleByID("cmn.FinancialYear", entity.GetFieldValue <Guid>("ID"), null);

                    if (oldFinancialYear.GetFieldValue <int?>("AccSetting_ShomareShorooeAsnadeGhatei") !=
                        entity.GetFieldValue <int?>("AccSetting_ShomareShorooeAsnadeGhatei") ||
                        oldFinancialYear.GetFieldValue <int?>("AccSetting_ShomareShorooeAsnadeGhateiePishnevis") !=
                        entity.GetFieldValue <int?>("AccSetting_ShomareShorooeAsnadeGhateiePishnevis") ||
                        oldFinancialYear.GetFieldValue <int?>("AccSetting_ShomareShorooeAsnadeMovaghateAsli") !=
                        entity.GetFieldValue <int?>("AccSetting_ShomareShorooeAsnadeMovaghateAsli") ||
                        oldFinancialYear.GetFieldValue <int?>("AccSetting_ShomareShorooeAsnadeGhateieAsli") !=
                        entity.GetFieldValue <int?>("AccSetting_ShomareShorooeAsnadeGhateieAsli") ||
                        oldFinancialYear.GetFieldValue <int?>("AccSetting_ShomareShorooeAsnadeMovaghatePishnevis") !=
                        entity.GetFieldValue <int?>("AccSetting_ShomareShorooeAsnadeMovaghatePishnevis") ||
                        oldFinancialYear.GetFieldValue <bool>("AccSetting_ShomareDehieMojazaBeAsnadeGhateieAsli") !=
                        entity.GetFieldValue <bool>("AccSetting_ShomareDehieMojazaBeAsnadeGhateieAsli"))
                    {
                        throw new AfwException("بدلیل وجود سند حسابداری امکان تغییر تنظیمات سال مالی وجود ندارد.");
                    }
                }
            }
        }
Example #21
0
        private void DeleteFinancialItem(EntityDbHelper dbHelper, Entity itemEntity)
        {
            try
            {
                var payTypeName    = new PayTypeBL().GetPayTypeName(itemEntity.GetFieldValue <Guid>("PayType"));
                var fieldName      = "";
                var entityFullName = "";
                switch (payTypeName)
                {
                case "Cheque":
                    entityFullName = "rp.PaidCheque";
                    fieldName      = "FinancialItem_Cheque";
                    break;

                case "Havale":
                    entityFullName = "rp.HavalePardakhti";
                    fieldName      = "FinancialItem_Havale";
                    break;

                case "Naghd":
                    entityFullName = "rp.NaghdePardakhti";
                    fieldName      = "FinancialItem_Naghd";
                    break;

                case "ChekeZemanat":
                    entityFullName = "rp.ChekeZemanatePardakhti";
                    fieldName      = "FinancialItem_ChekeZemanat";
                    break;
                }

                var financialItemEntity = dbHelper.FetchSingleByID(entityFullName, itemEntity.GetFieldValue <Guid>(fieldName), null);
                dbHelper.DeleteEntity(financialItemEntity);
            }
            catch (Exception ex)
            {
                throw new Exception("Error in Delete PayReceiptFinancialItem.", ex);
            }
        }
Example #22
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.BeforeApplyChanges(dbHelper, entity);

            var oldAccDocEntity = dbHelper.FetchSingleByID("acc.AccDoc", entity.GetFieldValue <Guid>("AccDoc"), null);

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Delete, EntityChangeTypes.Modify))
            {
                if (oldAccDocEntity.GetFieldValue <Guid>("DocStatus") == OptionSetHelper.GetOptionSetItemID("acc.DocStatus", "Final"))
                {
                    throw new AfwException("امکان تغییر یا حذف آیتم سند قطعی شده وجود ندارد.");
                }
            }

            var exists = dbHelper.EntityExists("acc.Account",
                                               string.Format("ID = '{0}' and FinancialYear = '{1}'", entity.GetFieldValue <Guid>("Account"), oldAccDocEntity.GetFieldValue <Guid>("FinancialYear")));

            if (!exists)
            {
                throw new AfwException("کدینگ انتخاب شده با سال مالی جاری تطابق ندارد.");
            }

            var debtorAmount   = entity.GetFieldValue <decimal>("DebtorAmount");
            var creditorAmount = entity.GetFieldValue <decimal>("CreditorAmount");

            if (debtorAmount - Math.Truncate(debtorAmount) > 0)
            {
                throw new AfwException("مبلغ بدهکار در ردیف {0} سند {1} دارای اعشار است.{2}",
                                       entity.GetFieldValue <int>("RowNo"), oldAccDocEntity.GetFieldValue <int>("DocNo"), debtorAmount);
            }

            if (creditorAmount - Math.Truncate(creditorAmount) > 0)
            {
                throw new AfwException("مبلغ بستانکار در ردیف {0} سند {1} دارای اعشار است.{2}",
                                       entity.GetFieldValue <int>("RowNo"), oldAccDocEntity.GetFieldValue <int>("DocNo"), creditorAmount);
            }
        }
        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 #24
0
        public override void BeforeApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            if (wm.Instance.IsRunningUnvaluation)
            {
                LoadOldEntityOnBeforeApplyChanges = false;
            }

            base.BeforeApplyChanges(dbHelper, entity);

            if (wm.Instance.IsRunningUnvaluation)
            {
                return;
            }

            var vazeyatRialiNashodeID    = OptionSetHelper.GetOptionSetItemID("wm.VaziyatRialiAsnadAnbar", "RialiNashode");
            var vazeyatRialiSanadShodeID = OptionSetHelper.GetOptionSetItemID("wm.VaziyatRialiAsnadAnbar", "SanadShode");
            var oldGhabzOrHavaleEntity   = dbHelper.FetchSingleByID("wm.GhabzOrHavale", entity.GetFieldValue <Guid>("ID"), null);

            if (entity.ChangeStatus.IsIn(EntityChangeTypes.Delete, EntityChangeTypes.Modify))
            {
                if (oldGhabzOrHavaleEntity.GetFieldValue <Guid>("VazeyatRialiShodan") != vazeyatRialiNashodeID)
                {
                    wm.Instance.InventoryValuationBL.CheckValuationPermission();

                    if (entity.GetFieldValue <Guid>("VazeyatRialiShodan") == vazeyatRialiSanadShodeID &&
                        oldGhabzOrHavaleEntity.GetFieldValue <Guid>("VazeyatRialiShodan") != vazeyatRialiSanadShodeID &&
                        oldGhabzOrHavaleEntity.GetFieldValue <Guid?>("AccDoc") == null)
                    {
                        if (entity.GetFieldValue <Guid?>("AccDoc") == null)
                        {
                            throw new AfwException("AccDoc Is not set but VazeyatRialiShodan is set to 'SanadShode'");
                        }
                    }
                    else if (entity.GetFieldValue <Guid>("VazeyatRialiShodan") != vazeyatRialiNashodeID)
                    {
                        throw new AfwException("برای تغییر سند انبار ابتدا آن را از حالت ریالی خارج نمایید.");
                    }
                }
            }
            else if (entity.ChangeStatus == EntityChangeTypes.Add)
            {
                entity.SetFieldValue("VazeyatRialiShodan", vazeyatRialiNashodeID);
            }

            var ghabzOrHavaleTypeEntity = dbHelper.FetchSingleByID("wm.GhabzOrHavaleType", entity.GetFieldValue <Guid>("GhabzOrHavaleType"), null);
            var warehouseDocName        = OptionSetHelper.GetOptionSetItemName(ghabzOrHavaleTypeEntity.GetFieldValue <Guid>("WarehouseDocType"));
            var stuffLocationID         = entity.GetFieldValue <Guid?>("StuffLocation");

            if (entity.ChangeStatus != EntityChangeTypes.Delete)
            {
                CompareRefDocItemsWithGhabzOrHavaleItems(entity);
            }

            if (entity.ChangeStatus == EntityChangeTypes.Delete)
            {
                string masterOpName;
                Guid?  masterOpId;
                GetMasterOpInfo(entity, out masterOpName, out masterOpId);

                if (masterOpId != null && masterOpId != wm.Instance.DeletingOpID)
                {
                    var referenceDocTypeEntity = dbHelper.FetchSingleByID("wm.ReferenceDocType", entity.GetFieldValue <Guid>("ReferenceDocType"), null);
                    throw new AfwException("امکان حذف و ویرایش رسید/حواله مربوط به '{0}' وجود ندارد.", referenceDocTypeEntity.GetFieldValue <string>("Title"));
                }

                var dependedGhabzOrHavaleEntities = dbHelper.FetchMultiple("wm.GhabzOrHavale", string.Format("WareHouseDocRialiReference = '{0}'", entity.GetFieldValue <Guid>("ID")), null, null, null, null).Entities;

                if (dependedGhabzOrHavaleEntities.Count > 0)
                {
                    string ghabzOrHavaleNumbers = dependedGhabzOrHavaleEntities[0].GetFieldValue <int>("GhabzOrHavaleNumber").ToString();

                    for (int i = 1; i < dependedGhabzOrHavaleEntities.Count; i++)
                    {
                        ghabzOrHavaleNumbers += ", " + dependedGhabzOrHavaleEntities[i].GetFieldValue <int>("GhabzOrHavaleNumber");
                    }

                    throw new AfwException("امکان حذف به دلیل رفرنس ریالی بودن رسید/ حواله انتخاب شده وجود ندارد.\r\nابتدا رسید / حواله به {0} : {1} را حذف نمایید.",
                                           dependedGhabzOrHavaleEntities.Count > 1 ? "شماره های" : "شماره", ghabzOrHavaleNumbers);
                }
            }
        }
Example #25
0
        public override void AfterApplyChanges(EntityDbHelper dbHelper, Entity entity)
        {
            base.AfterApplyChanges(dbHelper, entity);

            if (wm.Instance.IsRunningUnvaluation)
            {
                return;
            }

            var ghabzOrHavaleTypeEntity   = dbHelper.FetchSingleByID("wm.GhabzOrHavaleType", entity.GetFieldValue <Guid>("GhabzOrHavaleType"), null);
            var vazeyatRiali_SanadShodeID = OptionSetHelper.GetOptionSetItemID("wm.VaziyatRialiAsnadAnbar", "SanadShode");
            var id = entity.GetFieldValue <Guid>("ID");
            var warehouseDocType = ghabzOrHavaleTypeEntity.GetFieldValue <Guid>("WarehouseDocType");

            if (entity.ChangeStatus == EntityChangeTypes.Add)
            {
                if (dbHelper.AdoDbHelper.ExistsRow(string.Format(@"
                    select 1
                    from wm_GhabzOrHavaleha GhabzOrHavaleh
	                    inner join wm_GhabzOrHavaleTypes GhabzOrHavaleType on GhabzOrHavaleType.ID = GhabzOrHavaleh.GhabzOrHavaleType
                    where GhabzOrHavaleType.WarehouseDocType = '{0}' 
	                    and GhabzOrHavaleh.StuffLocation = '{1}'
                        and GhabzOrHavaleh.GhabzOrHavaleNumber = {2}
                        and GhabzOrHavaleh.ID <> '{3}'",
                                                                 warehouseDocType,
                                                                 entity.GetFieldValue <Guid>("StuffLocation"),
                                                                 entity.GetFieldValue <decimal>("GhabzOrHavaleNumber"),
                                                                 id)))
                {
                    throw new AfwException(string.Format("{0} دیگری با این شماره ثبت شده است.",
                                                         OptionSetHelper.GetOptionSetItemTitle(warehouseDocType)));
                }

                if (entity.GetFieldValue <Guid?>("RefDoc_SalesInvoice") != null)
                {
                    var refDoc_SalesInvoiceID = entity.GetFieldValue <Guid>("RefDoc_SalesInvoice");
                    var salesProformaInvoice  = dbHelper.FetchSingleByID("ps.SalesInvoice", refDoc_SalesInvoiceID, null);
                    salesProformaInvoice.SetFieldValue("HavaleIssuingStatus", OptionSetHelper.GetOptionSetItemID("cmn.HavaleIssuingStatus", "HavaleShodeh"));
                    dbHelper.UpdateEntity(salesProformaInvoice);
                }
            }

            if (entity.ChangeStatus == EntityChangeTypes.Delete)
            {
                if (entity.GetFieldValue <Guid?>("RefDoc_SalesInvoice") != null)
                {
                    var proformaID = entity.GetFieldValue <Guid>("RefDoc_SalesInvoice");

                    if (dbHelper.EntityExists("ps.SalesInvoice",
                                              string.Format("IsProforma = 0 and SourceProforma = '{0}'", proformaID)))
                    {
                        throw new AfwException(string.Format("بدلیل صدور فاکتور امکان حذف حواله وجود ندارد."));
                    }

                    var proforma = dbHelper.FetchSingleByID("ps.SalesInvoice", proformaID, null);
                    proforma.SetFieldValue("HavaleIssuingStatus", OptionSetHelper.GetOptionSetItemID("cmn.HavaleIssuingStatus", "HavaleNashodeh"));
                    dbHelper.UpdateEntity(proforma);
                }
            }

            if (entity.ChangeStatus != EntityChangeTypes.Delete)
            {
                if (entity.FieldExists("GhabzOrHavaleItems") && entity.GetFieldValue <EntityList>("GhabzOrHavaleItems") != null)
                {
                    SaveItems(entity, entity.GetFieldValue <EntityList>("GhabzOrHavaleItems"), ghabzOrHavaleTypeEntity);
                }

                if (!HasItem(id))
                {
                    throw new AfwException("سند انبار فاقد آیتم است.");
                }
            }

            if (!wm.Instance.IsEvaluatingDocsForValuation && !wm.Instance.IsRunningValuation && !wm.Instance.IsRunningUnvaluation &&
                entity.GetFieldValue <Guid>("VazeyatRialiShodan") != vazeyatRiali_SanadShodeID)
            {
                if (wm.Instance.InventoryValuationBL.ValuatedDocExistsAfter(
                        entity.GetFieldValue <DateTime>("IssueDate"), entity.GetFieldValue <DateTime>("CreationTime")))
                {
                    throw new AfwException("سند انبار ریالی شده بعد از این سند انبار موجود است.\r\n" +
                                           " ابتدا رسید /حواله های بعد از این سند انبار را به وضعیت ریالی نشده منتقل کنید.");
                }
            }
        }