private void UpdateCreditorAccount() { try { Boolean oldRecordDeleted = false; var db = DDB.NewContext(); var accountRecords = db.tbl_gnt_creditor_account.Where(x => x.gnt_creditor_account_gnt_service_id == selectedRecord.gnt_service_id); if (accountRecords.Count() > 0) { oldRecordDeleted = true; foreach (var record in accountRecords) { db.tbl_gnt_creditor_account.DeleteObject(record); } } db.tbl_gnt_creditor_account.AddObject(new tbl_gnt_creditor_account() { gnt_creditor_account_gnt_service_id = selectedRecord.gnt_service_id, gnt_creditor_account_date = APMDateTime.dateWithNoSlash(selectedRecord.gnt_service_date), gnt_creditor_account_credit = 0, gnt_creditor_account_debt = bindingListArticle.Sum(x => x.gnt_service_article_total_price), gnt_creditor_account_gnt_creditor_id = CurrentCreditor.gnt_creditor_id, gnt_creditor_account_title = string.Format("خدمات خصوصی به شماره سند {0}", selectedRecord.gnt_service_code), gnt_creditor_account_description = selectedRecord.gnt_service_description, gnt_creditor_account_is_public_cost = false, gnt_creditor_account_glb_fiscal_year_id = GlobalVariables.current_fiscal_year_id, gnt_creditor_account_is_opening = false }); db.SaveChanges(); string message = ""; if (oldRecordDeleted) { message = "مبلغ سند قبلی از حساب سهامدار حذف و مبلغ سند جدید به حساب سهامدار افزوده شد"; } else { message = "مبلغ این سند به حساب سهامدار افزوده شد"; } Messages.InformationMessage(message); } catch (Exception exception) { Messages.ErrorMessage("بروز خطا هنگام به روز رسانی حساب سهامدار. متن کامل خطا : \r\n" + exception.CompleteMessages()); } }
public void CreateClosingAndOpeningAccountingDocument() { var db = DDB.NewContext(); var fiscalYears = db.tbl_glb_fiscal_year.OrderByDescending(x => x.glb_fiscal_year_id).ToList(); var newFiscalYear = fiscalYears.First(); if (GlobalVariables.current_fiscal_year_id != newFiscalYear.glb_fiscal_year_id) { throw new Exception(string.Format("سال مالی جاری سال {0} و آخرین سال مالی سال {1} می باشد. لطفا با آخرین سال مالی وارد برنامه شوید.", GlobalVariables.current_fiscal_year_name, newFiscalYear.glb_fiscal_year_name)); } if (fiscalYears.Count == 1) { throw new Exception("برنامه تنها یک سال مالی دارد"); } var oldFiscalYear = fiscalYears[1]; GlobalVariables.current_fiscal_year_id = oldFiscalYear.glb_fiscal_year_id; new BLL <stp_acc_chart_account_calculate_debt_creditResult>().DoDataBaseOperation(); GlobalVariables.current_fiscal_year_id = newFiscalYear.glb_fiscal_year_id; var documents = db.tbl_acc_document.ToList(); Boolean closingDeleted = false; var closings = db.tbl_acc_document .Where ( x => x.acc_document_is_closing == true && x.acc_document_glb_fiscal_year_id == oldFiscalYear.glb_fiscal_year_id ).ToList(); if (closings.Count > 0) { closingDeleted = true; db.tbl_acc_document.DeleteObject(closings.First()); } var openings = db.tbl_acc_document .Where ( x => x.acc_document_is_opening == true && x.acc_document_glb_fiscal_year_id == newFiscalYear.glb_fiscal_year_id ).ToList(); if (openings.Count > 0) { db.tbl_acc_document.DeleteObject(openings.First()); } long newDocumentCode = CreateNewDocumentCode(db, oldFiscalYear.glb_fiscal_year_id); var newDocumentNo = CreateNewDocumentNo(db, oldFiscalYear.glb_fiscal_year_id); if (closingDeleted && newDocumentCode > 1) { newDocumentCode--; } if (closingDeleted && newDocumentNo > 1) { newDocumentNo--; } var closingDocumentType = FindAccDocumentType(db, "اخ"); var openningDocumentType = FindAccDocumentType(db, "اف"); string closingDescription = "سند اختتامیه سال " + oldFiscalYear.glb_fiscal_year_name; string openningDescription = "سند افتتاحیه سال " + newFiscalYear.glb_fiscal_year_name; var closingDocument = new tbl_acc_document() { acc_document_acc_document_type_id = closingDocumentType.acc_document_type_id, acc_document_date = APMDateTime.dateWithNoSlash(APMDateTime.Today), acc_document_description = closingDescription, acc_document_glb_branch_id = GlobalVariables.current_branch_id, acc_document_glb_fiscal_year_id = oldFiscalYear.glb_fiscal_year_id, acc_document_from_inventory = false, acc_document_is_closing = true, acc_document_is_opening = false, acc_document_register_date = APMDateTime.dateWithNoSlash(APMDateTime.Today), acc_document_register_time = APMDateTime.SystemTime, acc_document_registerer_glb_user_id = GlobalVariables.current_user_id, acc_document_status_glb_coding_id = (long)AccDocumentStatus.Temporary, acc_document_code = newDocumentCode.ToString(), acc_document_no = newDocumentNo }; var openningDocument = new tbl_acc_document() { acc_document_acc_document_type_id = openningDocumentType.acc_document_type_id, acc_document_date = APMDateTime.dateWithNoSlash(APMDateTime.Today), acc_document_description = openningDescription, acc_document_glb_branch_id = GlobalVariables.current_branch_id, acc_document_glb_fiscal_year_id = newFiscalYear.glb_fiscal_year_id, acc_document_from_inventory = false, acc_document_is_closing = false, acc_document_is_opening = true, acc_document_register_date = APMDateTime.dateWithNoSlash(APMDateTime.Today), acc_document_register_time = APMDateTime.SystemTime, acc_document_registerer_glb_user_id = GlobalVariables.current_user_id, acc_document_status_glb_coding_id = (long)AccDocumentStatus.Temporary, acc_document_code = (newDocumentCode + 1).ToString(), acc_document_no = 1 }; var accounts = db.tbl_acc_chart_account.ToList(); foreach (tbl_acc_chart_account account in accounts) { if (!account.acc_chart_account_acc_detail_id.HasValue) { continue; } double debt = (account.acc_chart_account_debt.HasValue ? account.acc_chart_account_debt.Value : 0); double credit = (account.acc_chart_account_credit.HasValue ? account.acc_chart_account_credit.Value : 0); double remaining = credit - debt; credit = (remaining > 0 ? remaining : 0); debt = (remaining < 0 ? -remaining : 0); if (debt == credit) { continue; } var closingArticle = new tbl_acc_document_article() { acc_document_article_acc_chart_account_id = account.acc_chart_account_id, acc_document_article_credit = debt, acc_document_article_debt = credit, acc_document_article_description = closingDescription, acc_document_article_glb_branch_id = GlobalVariables.current_branch_id, }; closingDocument.tbl_acc_document_article.Add(closingArticle); var openningArticle = new tbl_acc_document_article() { acc_document_article_acc_chart_account_id = account.acc_chart_account_id, acc_document_article_credit = credit, acc_document_article_debt = debt, acc_document_article_description = openningDescription, acc_document_article_glb_branch_id = GlobalVariables.current_branch_id, }; openningDocument.tbl_acc_document_article.Add(openningArticle); } db.tbl_acc_document.AddObject(closingDocument); db.tbl_acc_document.AddObject(openningDocument); db.SaveChanges(); }
static public object[] RetrieveParametersFromRecord(object Record, MethodInfo storedProcedure, List <RefrencePair> refrencePairs) { int parametersCount = storedProcedure.GetParameters().Count(); // Get count of parameters of calling stored procedure int valuesIndex = 0; // first value is the property and second is the position in values int findedParameters = 0, finded; string notFindedParameters = ""; ParameterInfo[] methodParameters = storedProcedure.GetParameters(); object[] parametersValues = new object[parametersCount]; // Array for Collecting Parameter Values from Record foreach (ParameterInfo parameter in methodParameters) { finded = 1; if (parameter.Name.ToLower() == "fiscal_year_id") { parametersValues[valuesIndex++] = GlobalVariables.current_fiscal_year_id; } else if (parameter.Name.ToLower() == "branch_id") { parametersValues[valuesIndex++] = GlobalVariables.current_branch_id; } else if (parameter.Name.ToLower() == "user_id") { parametersValues[valuesIndex++] = GlobalVariables.current_user_id; } else { finded = 0; foreach (PropertyInfo property in Record.GetType().GetProperties()) { if (parameter.Name.ToLower() == property.Name.ToLower()) // related Prperty finded to get data from. { if (refrencePairs != null && parameter.ParameterType.IsByRef) // this parameter is a refrence(output) property and we must save it. { refrencePairs.Add // saving the property and the position in values. (new RefrencePair() { ValuePosition = valuesIndex, // position of value in parametersValues Property = property // property of record to get output value from S.P. }); } object parameterValue = property.GetValue(Record, null); if (parameterValue != null && property.Name.EndsWith("_password")) { parametersValues[valuesIndex++] = Encryption.EncryptPassword_String(parameterValue.ToString()); } else if ((parameterValue is string) && parameterValue != null && parameterValue.ToString().Trim() == "") { parametersValues[valuesIndex++] = null; } else if (parameterValue != null && property.Name.EndsWith("_date")) { parametersValues[valuesIndex++] = APMDateTime.dateWithNoSlash(parameterValue.ToString()); } else if (property.Name.EndsWith("_id") && (parameterValue is long) && (long)parameterValue == 0) { parametersValues[valuesIndex++] = null; } else { parametersValues[valuesIndex++] = parameterValue; } finded = 1; break; } } } findedParameters += finded; if (finded == 0) { notFindedParameters = notFindedParameters + "," + parameter.Name; } } if (findedParameters < parametersCount) // if finded properties is less than parameters. { Messages.ErrorMessage("." + "با نام فیلد های متناظر در پایگاه داده متفاوت است " + storedProcedure.Name + " نام پارامتر های " + "\n" + " : نام پارامتر های یافت نشده " + "\n" + notFindedParameters); // less parameters is because of the diffrence between // parameters names and Database field Names. return(null); // Operation Failed. } return(parametersValues); }