protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L2BD_SDLfT_1514 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); //Put your code here ORM_ACC_DUN_Dunning_Model.Query modelQuery = new ORM_ACC_DUN_Dunning_Model.Query(); modelQuery.IsDeleted = false; modelQuery.IsDefaultCustomerModel = true; modelQuery.Tenant_RefID = securityTicket.TenantID; ORM_ACC_DUN_Dunning_Model model = ORM_ACC_DUN_Dunning_Model.Query.Search(Connection, Transaction, modelQuery).First(); if (Parameter.DunningID != null && Parameter.DunningID != Guid.Empty) { ORM_ACC_DUN_Dunning_Level.Query existingLevelQuery = new ORM_ACC_DUN_Dunning_Level.Query(); existingLevelQuery.Tenant_RefID = securityTicket.TenantID; existingLevelQuery.IsDeleted = false; existingLevelQuery.ACC_DUN_Dunning_LevelID = Parameter.DunningID; ORM_ACC_DUN_Dunning_Level existingLevel = ORM_ACC_DUN_Dunning_Level.Query.Search(Connection, Transaction, existingLevelQuery).First(); if (Parameter.Deleting) { existingLevel.IsDeleted = true; } else { existingLevel.GlobalPropertyMatchingID = Parameter.DunningLevelName; existingLevel.ParentLevel_RefID = Parameter.ParentLevelID; Boolean contentExists = false; foreach (var item in existingLevel.DunningLevelName.Contents) { if (item.LanguageID == Parameter.LanguageID) { contentExists = true; } } if (contentExists) { existingLevel.DunningLevelName.UpdateEntry(Parameter.LanguageID, Parameter.DunningLevelName); } else { existingLevel.DunningLevelName.AddEntry(Parameter.LanguageID, Parameter.DunningLevelName); } } ORM_ACC_DUN_DunningLevel_ModelAssignment.Query existingModelAssignmentQuery = new ORM_ACC_DUN_DunningLevel_ModelAssignment.Query(); existingModelAssignmentQuery.Dunning_Level_RefID = existingLevel.ACC_DUN_Dunning_LevelID; existingModelAssignmentQuery.Dunning_Model_RefID = model.ACC_DUN_Dunning_ModelID; existingModelAssignmentQuery.Tenant_RefID = securityTicket.TenantID; existingModelAssignmentQuery.IsDeleted = false; ORM_ACC_DUN_DunningLevel_ModelAssignment existingModelAssignment = ORM_ACC_DUN_DunningLevel_ModelAssignment.Query.Search(Connection, Transaction, existingModelAssignmentQuery).First(); if (Parameter.Deleting) { existingModelAssignment.IsDeleted = true; } else { existingModelAssignment.DunningFee = Parameter.DunningFee; existingModelAssignment.OrderSequence = Parameter.OrderSequence; existingModelAssignment.WaitPeriodToNextDunningLevel_In_Days = Parameter.WaitPeriod; } existingLevel.Save(Connection, Transaction); existingModelAssignment.Save(Connection, Transaction); } else { ORM_ACC_DUN_Dunning_Level newLevel = new ORM_ACC_DUN_Dunning_Level(); newLevel.ACC_DUN_Dunning_LevelID = Guid.NewGuid(); newLevel.ParentLevel_RefID = Parameter.ParentLevelID; newLevel.Tenant_RefID = securityTicket.TenantID; newLevel.Creation_Timestamp = DateTime.Now; newLevel.GlobalPropertyMatchingID = Parameter.DunningLevelName; newLevel.DunningLevelName = new Dict(ORM_ACC_DUN_Dunning_Level.TableName); newLevel.DunningLevelName.AddEntry(Parameter.LanguageID, Parameter.DunningLevelName); newLevel.IsDeleted = false; newLevel.Save(Connection, Transaction); ORM_ACC_DUN_DunningLevel_ModelAssignment newModelAssignment = new ORM_ACC_DUN_DunningLevel_ModelAssignment(); newModelAssignment.ACC_DUN_DunningLevel_ModelAssignmentID = Guid.NewGuid(); newModelAssignment.Tenant_RefID = securityTicket.TenantID; newModelAssignment.IsDeleted = false; newModelAssignment.Creation_Timestamp = DateTime.Now; newModelAssignment.Dunning_Level_RefID = newLevel.ACC_DUN_Dunning_LevelID; newModelAssignment.Dunning_Model_RefID = model.ACC_DUN_Dunning_ModelID; newModelAssignment.WaitPeriodToNextDunningLevel_In_Days = Parameter.WaitPeriod; newModelAssignment.DunningFee = Parameter.DunningFee; newModelAssignment.OrderSequence = Parameter.OrderSequence; newModelAssignment.Save(Connection, Transaction); } return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5BD_SDPLC_1642 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); var details = Parameter.BillHeaderWithDetails.DunningDetails; var bill = Parameter.BillHeaderWithDetails.Bill; //model var model = new ORM_ACC_DUN_Dunning_Model(); model.Load(Connection, Transaction, details.ACC_DUN_Dunning_ModelID); var modelToLevelsAssignmentQuery = new ORM_ACC_DUN_DunningLevel_ModelAssignment.Query(); modelToLevelsAssignmentQuery.Dunning_Model_RefID = model.ACC_DUN_Dunning_ModelID; modelToLevelsAssignmentQuery.Dunning_Level_RefID = Parameter.NextLevelID; modelToLevelsAssignmentQuery.Tenant_RefID = securityTicket.TenantID; var foundModelToLevelsAssignment = ORM_ACC_DUN_DunningLevel_ModelAssignment.Query.Search(Connection, Transaction, modelToLevelsAssignmentQuery).Single(); //dunning process loading var dunningProcess = new ORM_ACC_DUN_DunningProcess(); dunningProcess.Load(Connection, Transaction, details.ACC_DUN_DunningProcessID); dunningProcess.Current_DunningLevel_RefID = Parameter.NextLevelID; dunningProcess.ReachesNextDunningLevelAtDate = DateTime.Now.AddDays(foundModelToLevelsAssignment.WaitPeriodToNextDunningLevel_In_Days); dunningProcess.Save(Connection, Transaction); //get all previous history statuses var historyQuery = new ORM_ACC_DUN_DunningProcess_History.Query(); historyQuery.ACC_DUN_DunningProcess_RefID = dunningProcess.ACC_DUN_DunningProcessID; historyQuery.Tenant_RefID = securityTicket.TenantID; var foundHistories = ORM_ACC_DUN_DunningProcess_History.Query.Search(Connection, Transaction, historyQuery).ToList(); decimal summOfFees = 0; //and set their IsCurrentStep property foreach (var history in foundHistories) { history.IsCurrentStep = false; history.Save(Connection, Transaction); //while iterating, create summ of all fees in histories for dunning process if (history.IsSentToCustomer) { summOfFees += history.DunningProcessFee_IncludingThisDunningLevel; } } var newHistoryEntity = new ORM_ACC_DUN_DunningProcess_History(); newHistoryEntity.ACC_DUN_Dunning_Level_RefID = Parameter.NextLevelID; newHistoryEntity.ACC_DUN_DunningProcess_RefID = dunningProcess.ACC_DUN_DunningProcessID; newHistoryEntity.DunningProcessFee_IncludingThisDunningLevel = Parameter.FeeForLevel; newHistoryEntity.IsCurrentStep = true; newHistoryEntity.Tenant_RefID = securityTicket.TenantID; var savedNewHistoryID = new FR_Guid(newHistoryEntity.Save(Connection, Transaction), newHistoryEntity.ACC_DUN_DunningProcess_HistoryID).Result; var memberBills = new ORM_ACC_DUN_DunningProcess_MemberBill(); memberBills.Load(Connection, Transaction, details.ACC_DUN_DunningProcess_MemberBillID); memberBills.ApplicableProcessDunningFees = summOfFees + newHistoryEntity.DunningProcessFee_IncludingThisDunningLevel; //added fee from new history also #region Save booking line for dunning fee var bookingParam = new CL3_Payments.Complex.Manipulation.P_L3PY_CATfDF_0849 { DunningFee = Parameter.FeeForLevel, BillHeaderID = Parameter.BillHeaderWithDetails.Bill.BIL_BillHeaderID }; CL3_Payments.Complex.Manipulation.cls_Create_AccountingTransaction_for_Dunning_Fee.Invoke(Connection, Transaction, bookingParam, securityTicket); #endregion returnValue.Result = savedNewHistoryID; return(returnValue); #endregion UserCode }