public virtual async Task <HttpResponseMessage> GetChequesToPay() { var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId); ChequeRule chequeRule = new ChequeRule(); var res = await chequeRule.GetChequesToPay(organId); return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = ZhivarEnums.ResultCode.Successful, data = res })); }
public virtual async Task <HttpResponseMessage> GetChequesAndStats([FromBody] ZhivarEnums.ChequeType type) { try { var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId); ChequeRule chequeRule = new ChequeRule(); var chequeQuery = await chequeRule.GetAllByOrganIdAsync(organId); chequeQuery = chequeQuery.Where(x => x.Type == type).OrderByDescending(x => x.ID).ToList(); return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = ZhivarEnums.ResultCode.Successful, data = chequeQuery })); } catch (Exception ex) { throw; } }
private async Task <Document> CreateDocumentChangeChequeStatus(ChequesAndStatsVM chequesAndStatsVM, int organId) { FinanYearRule finanYearRule = new FinanYearRule(); var finanYears = await finanYearRule.GetAllByOrganIdAsync(organId); var finanYear = finanYears.Where(x => x.Closed == false).SingleOrDefault(); ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(chequesAndStatsVM.chequeId); DocumentRule documentRule = new DocumentRule(); Document document = new Document(); document.Credit = cheque.Amount; document.DateTime = PersianDateUtils.ToDateTime(chequesAndStatsVM.date); document.Debit = cheque.Amount; document.Description = chequesAndStatsVM.description; document.DisplayDate = chequesAndStatsVM.date; document.IsManual = false; document.Status = ZhivarEnums.DocumentStatus.TaeedShode; document.Number = await documentRule.createNumberDocumentAsync(organId); document.Number2 = await documentRule.createNumberDocumentAsync(organId); document.StatusString = "تایید شده"; document.OrganId = organId; document.FinanYear = finanYear; document.FinanYearId = finanYear.ID; document.Type = ZhivarEnums.NoeDoc.Recive; List <Transaction> transactions = new List <Transaction>(); AccountRule accountRule = new AccountRule(); var accounts = await accountRule.GetAllByOrganIdAsync(organId); switch (chequesAndStatsVM.receiveType) { case "cash": { var accountCash = accounts.Where(x => x.ComplteCoding == "1101" + chequesAndStatsVM.detailAccount.Code).SingleOrDefault(); transactions.Add(new Transaction() { //AccDocument = document, AccountId = accountCash.ID, Amount = cheque.Amount, Description = chequesAndStatsVM.description, Credit = 0, Debit = cheque.Amount, IsCredit = false, IsDebit = true, DocumentId = document.ID, Date = PersianDateUtils.ToDateTime(chequesAndStatsVM.date), DisplayDate = chequesAndStatsVM.date }); break; } case "bank": { var accountBank = accounts.Where(x => x.ComplteCoding == "1103" + chequesAndStatsVM.detailAccount.Code).SingleOrDefault(); transactions.Add(new Transaction() { //AccDocument = document, AccountId = accountBank.ID, Amount = cheque.Amount, Description = chequesAndStatsVM.description, Credit = 0, Debit = cheque.Amount, IsCredit = false, IsDebit = true, DocumentId = document.ID, Date = PersianDateUtils.ToDateTime(chequesAndStatsVM.date), DisplayDate = chequesAndStatsVM.date }); break; } } var asnadDreaftaniAccount = accounts.Where(x => x.ComplteCoding == "1105" + cheque.Contact.Code).SingleOrDefault(); transactions.Add(new Transaction() { //AccDocument = document, AccountId = asnadDreaftaniAccount.ID, Amount = cheque.Amount, Credit = cheque.Amount, Debit = 0, Description = chequesAndStatsVM.description, DocumentId = document.ID, IsCredit = true, IsDebit = false, Date = PersianDateUtils.ToDateTime(chequesAndStatsVM.date), DisplayDate = chequesAndStatsVM.date }); document.Transactions = transactions; return(document); }
private async Task <Document> CreateDocumentPaidChequeReceipt(ChequesAndStatsVM chequesAndStatsVM, int organId) { FinanYearRule finanYearRule = new FinanYearRule(); var finanYears = await finanYearRule.GetAllByOrganIdAsync(organId); var finanYear = finanYears.Where(x => x.Closed == false).SingleOrDefault(); ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(chequesAndStatsVM.chequeId); //var chequeBanks = await _chequeBankService.GetAllByOrganIdAsync(organId); var chequeBanks = this.BusinessRule.UnitOfWork.RepositoryAsync <ChequeBank>().Queryable().Where(x => x.OrganId == organId); var chequeBank = chequeBanks.Where(x => x.ChequeId == cheque.ID).SingleOrDefault(); BankRule bankRule = new BankRule(); var bank = await bankRule.FindAsync(chequeBank.BankId); DocumentRule documentRule = new DocumentRule(); Document document = new Document(); document.Credit = cheque.Amount; document.DateTime = PersianDateUtils.ToDateTime(chequesAndStatsVM.date); document.Debit = cheque.Amount; document.Description = chequesAndStatsVM.description; document.DisplayDate = chequesAndStatsVM.date; document.IsManual = false; document.Status = ZhivarEnums.DocumentStatus.TaeedShode; document.Number = await documentRule.createNumberDocumentAsync(organId); document.Number2 = await documentRule.createNumberDocumentAsync(organId); document.StatusString = "تایید شده"; document.OrganId = organId; document.FinanYear = finanYear; document.FinanYearId = finanYear.ID; document.Type = ZhivarEnums.NoeDoc.Recive; List <Transaction> transactions = new List <Transaction>(); AccountRule accountRule = new AccountRule(); var accounts = await accountRule.GetAllByOrganIdAsync(organId); var accountPay = accounts.Where(x => x.ComplteCoding == "2102" + bank.Code).SingleOrDefault(); transactions.Add(new Transaction() { //AccDocument = document, AccountId = accountPay.ID, Amount = cheque.Amount, Description = chequesAndStatsVM.description, Credit = 0, Debit = cheque.Amount, IsCredit = false, IsDebit = true, DocumentId = document.ID, Date = PersianDateUtils.ToDateTime(chequesAndStatsVM.date), DisplayDate = chequesAndStatsVM.date }); var accountBank = accounts.Where(x => x.ComplteCoding == "1103" + bank.Code).SingleOrDefault(); transactions.Add(new Transaction() { //AccDocument = document, AccountId = accountBank.ID, Amount = cheque.Amount, Credit = cheque.Amount, Debit = 0, Description = chequesAndStatsVM.description, DocumentId = document.ID, IsCredit = true, IsDebit = false, Date = PersianDateUtils.ToDateTime(chequesAndStatsVM.date), DisplayDate = chequesAndStatsVM.date }); document.Transactions = transactions; return(document); }
public virtual async Task <HttpResponseMessage> ChangeChequeStatus([FromBody] ChequesAndStatsVM chequesAndStatsVM) { var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId); ChequeVM chequeVM = new ChequeVM(); switch (chequesAndStatsVM.change) { // وصول چک پرداختی case "PaidChequeReceipt": { chequesAndStatsVM.description = " وصول چک پرداختی"; var doucument = await CreateDocumentPaidChequeReceipt(chequesAndStatsVM, organId); ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(chequesAndStatsVM.chequeId); cheque.Status = ZhivarEnums.ChequeStatus.Passed; chequeRule.Update(cheque); await chequeRule.SaveChangesAsync(); DocumentRule documentRule = new DocumentRule(); await documentRule.InsertAsync(doucument, organId); await documentRule.SaveChangesAsync(); //AccountNumber: "" chequeVM.Amount = cheque.Amount; chequeVM.BankBranch = cheque.BankBranch; //chequeVM.BankDetailAccount: null chequeVM.BankName = cheque.BankName; chequeVM.ChequeNumber = cheque.ChequeNumber; chequeVM.Contact = cheque.Contact; chequeVM.Date = cheque.Date; chequeVM.DepositBank = cheque.DepositBank; //chequeVM.DepositDate = cheque.DepositBank; chequeVM.DisplayDate = cheque.DisplayDate; chequeVM.ID = cheque.ID; //chequeVM.MyCheque = cheque.DepositBank; //chequeVM.Overdue = cheque.Overdue; //chequeVM.Payee = cheque.Payee; //chequeVM.Payer = cheque.Payer; chequeVM.ReceiptDate = cheque.ReceiptDate; //chequeVM.ReturnDate = cheque.ReturnDate; chequeVM.Status = cheque.Status; chequeVM.StatusString = "وصول شده"; break; } // وصول چک دریافتی case "ReceivedChequeReceipt": { chequesAndStatsVM.description = " وصول چک دریافتی"; var doucument = await CreateDocumentChangeChequeStatus(chequesAndStatsVM, organId); ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(chequesAndStatsVM.chequeId); cheque.Status = ZhivarEnums.ChequeStatus.Passed; chequeRule.Update(cheque); await chequeRule.SaveChangesAsync(); DocumentRule documentRule = new DocumentRule(); await documentRule.InsertAsync(doucument, organId); await documentRule.SaveChangesAsync(); //AccountNumber: "" chequeVM.Amount = cheque.Amount; chequeVM.BankBranch = cheque.BankBranch; //chequeVM.BankDetailAccount: null chequeVM.BankName = cheque.BankName; chequeVM.ChequeNumber = cheque.ChequeNumber; chequeVM.Contact = cheque.Contact; chequeVM.Date = cheque.Date; chequeVM.DepositBank = cheque.DepositBank; //chequeVM.DepositDate = cheque.DepositBank; chequeVM.DisplayDate = cheque.DisplayDate; chequeVM.ID = cheque.ID; //chequeVM.MyCheque = cheque.DepositBank; //chequeVM.Overdue = cheque.Overdue; //chequeVM.Payee = cheque.Payee; //chequeVM.Payer = cheque.Payer; chequeVM.ReceiptDate = cheque.ReceiptDate; //chequeVM.ReturnDate = cheque.ReturnDate; chequeVM.Status = cheque.Status; chequeVM.StatusString = "وصول شده"; break; } // وصول چک واگذار شده به بانک case "DepositChequeReceipt": { chequesAndStatsVM.description = "وصول چک واگذار شده به بانک"; var doucument = await CreateDocumentDepositChequeReceipt(chequesAndStatsVM, organId); ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(chequesAndStatsVM.chequeId); cheque.Status = ZhivarEnums.ChequeStatus.Passed; chequeRule.Update(cheque); await chequeRule.SaveChangesAsync(); DocumentRule documentRule = new DocumentRule(); await documentRule.InsertAsync(doucument, organId); await documentRule.SaveChangesAsync(); //AccountNumber: "" chequeVM.Amount = cheque.Amount; chequeVM.BankBranch = cheque.BankBranch; //chequeVM.BankDetailAccount: null chequeVM.BankName = cheque.BankName; chequeVM.ChequeNumber = cheque.ChequeNumber; chequeVM.Contact = cheque.Contact; chequeVM.Date = cheque.Date; chequeVM.DepositBank = cheque.DepositBank; //chequeVM.DepositDate = cheque.DepositBank; chequeVM.DisplayDate = cheque.DisplayDate; chequeVM.ID = cheque.ID; //chequeVM.MyCheque = cheque.DepositBank; //chequeVM.Overdue = cheque.Overdue; //chequeVM.Payee = cheque.Payee; //chequeVM.Payer = cheque.Payer; chequeVM.ReceiptDate = cheque.ReceiptDate; //chequeVM.ReturnDate = cheque.ReturnDate; chequeVM.Status = cheque.Status; chequeVM.StatusString = "وصول شده"; break; } // واگذاری چک به بانک case "ReceivedChequeDeposit": { chequesAndStatsVM.description = "واگذاری چک به بانک"; var doucument = await CreateDocumentReceivedChequeDeposit(chequesAndStatsVM, organId); ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(chequesAndStatsVM.chequeId); cheque.Status = ZhivarEnums.ChequeStatus.InProgress; BankRule bankRule = new BankRule(); var banks = await bankRule.GetAllByOrganIdAsync(organId); var bank = banks.Where(x => x.Code == chequesAndStatsVM.detailAccount.Code).SingleOrDefault(); cheque.DepositBankId = bank.ID; chequeRule.Update(cheque); await chequeRule.SaveChangesAsync(); DocumentRule documentRule = new DocumentRule(); await documentRule.InsertAsync(doucument, organId); await documentRule.SaveChangesAsync(); //AccountNumber: "" chequeVM.Amount = cheque.Amount; chequeVM.BankBranch = cheque.BankBranch; //chequeVM.BankDetailAccount: null chequeVM.BankName = cheque.BankName; chequeVM.ChequeNumber = cheque.ChequeNumber; chequeVM.Contact = cheque.Contact; chequeVM.Date = cheque.Date; chequeVM.DepositBank = cheque.DepositBank; //chequeVM.DepositDate = cheque.DepositBank; chequeVM.DisplayDate = cheque.DisplayDate; chequeVM.ID = cheque.ID; //chequeVM.MyCheque = cheque.DepositBank; //chequeVM.Overdue = cheque.Overdue; //chequeVM.Payee = cheque.Payee; //chequeVM.Payer = cheque.Payer; chequeVM.ReceiptDate = cheque.ReceiptDate; //chequeVM.ReturnDate = cheque.ReturnDate; chequeVM.Status = cheque.Status; chequeVM.StatusString = "وصول شده"; break; } // عودت دادن چک پرداختی case "PaidChequeReturn": { //chequesAndStatsVM.description = "عودت دادن چک پرداختی"; var doucument = await CreateDocumentPaidChequeReturn(chequesAndStatsVM, organId); ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(chequesAndStatsVM.chequeId); cheque.Status = ZhivarEnums.ChequeStatus.ChequeReturn; chequeRule.Update(cheque); await chequeRule.SaveChangesAsync(); DocumentRule documentRule = new DocumentRule(); await documentRule.InsertAsync(doucument, organId); await documentRule.SaveChangesAsync(); //AccountNumber: "" chequeVM.Amount = cheque.Amount; chequeVM.BankBranch = cheque.BankBranch; //chequeVM.BankDetailAccount: null chequeVM.BankName = cheque.BankName; chequeVM.ChequeNumber = cheque.ChequeNumber; chequeVM.Contact = cheque.Contact; chequeVM.Date = cheque.Date; chequeVM.DepositBank = cheque.DepositBank; //chequeVM.DepositDate = cheque.DepositBank; chequeVM.DisplayDate = cheque.DisplayDate; chequeVM.ID = cheque.ID; //chequeVM.MyCheque = cheque.DepositBank; //chequeVM.Overdue = cheque.Overdue; //chequeVM.Payee = cheque.Payee; //chequeVM.Payer = cheque.Payer; chequeVM.ReceiptDate = cheque.ReceiptDate; //chequeVM.ReturnDate = cheque.ReturnDate; chequeVM.Status = cheque.Status; chequeVM.StatusString = "وصول شده"; break; } // عودت دادن چک دریافتی case "ReceivedChequeReturn": { chequesAndStatsVM.description = "عودت دادن چک دریافتی"; var doucument = await CreateDocumentReceivedChequeReturn(chequesAndStatsVM, organId); ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(chequesAndStatsVM.chequeId); cheque.Status = ZhivarEnums.ChequeStatus.ChequeReturn; chequeRule.Update(cheque); await chequeRule.SaveChangesAsync(); DocumentRule documentRule = new DocumentRule(); await documentRule.InsertAsync(doucument, organId); await documentRule.SaveChangesAsync(); //AccountNumber: "" chequeVM.Amount = cheque.Amount; chequeVM.BankBranch = cheque.BankBranch; //chequeVM.BankDetailAccount: null chequeVM.BankName = cheque.BankName; chequeVM.ChequeNumber = cheque.ChequeNumber; chequeVM.Contact = cheque.Contact; chequeVM.Date = cheque.Date; chequeVM.DepositBank = cheque.DepositBank; //chequeVM.DepositDate = cheque.DepositBank; chequeVM.DisplayDate = cheque.DisplayDate; chequeVM.ID = cheque.ID; //chequeVM.MyCheque = cheque.DepositBank; //chequeVM.Overdue = cheque.Overdue; //chequeVM.Payee = cheque.Payee; //chequeVM.Payer = cheque.Payer; chequeVM.ReceiptDate = cheque.ReceiptDate; //chequeVM.ReturnDate = cheque.ReturnDate; chequeVM.Status = cheque.Status; chequeVM.StatusString = "وصول شده"; break; } // تغییر وضعیت چک پرداختی به پاس نشده case "PaidChequeToNotPass": { chequesAndStatsVM.description = "تغییر وضعیت چک پرداختی به پاس نشده"; chequesAndStatsVM.date = PersianDateUtils.ToPersianDate(DateTime.Now); var doucument = await CreateDocumentPaidChequeToNotPass(chequesAndStatsVM, organId); ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(chequesAndStatsVM.chequeId); cheque.Status = ZhivarEnums.ChequeStatus.Normal; chequeRule.Update(cheque); await chequeRule.SaveChangesAsync(); DocumentRule documentRule = new DocumentRule(); await documentRule.InsertAsync(doucument, organId); await documentRule.SaveChangesAsync(); //AccountNumber: "" chequeVM.Amount = cheque.Amount; chequeVM.BankBranch = cheque.BankBranch; //chequeVM.BankDetailAccount: null chequeVM.BankName = cheque.BankName; chequeVM.ChequeNumber = cheque.ChequeNumber; chequeVM.Contact = cheque.Contact; chequeVM.Date = cheque.Date; chequeVM.DepositBank = cheque.DepositBank; //chequeVM.DepositDate = cheque.DepositBank; chequeVM.DisplayDate = cheque.DisplayDate; chequeVM.ID = cheque.ID; //chequeVM.MyCheque = cheque.DepositBank; //chequeVM.Overdue = cheque.Overdue; //chequeVM.Payee = cheque.Payee; //chequeVM.Payer = cheque.Payer; chequeVM.ReceiptDate = cheque.ReceiptDate; //chequeVM.ReturnDate = cheque.ReturnDate; chequeVM.Status = cheque.Status; chequeVM.StatusString = "وصول شده"; break; } // تغییر وضعیت چک دریافتی به وصول نشده case "ReceivedChequeToNotPass": { chequesAndStatsVM.description = "تغییر وضعیت چک دریافتی به وصول نشده"; ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(chequesAndStatsVM.chequeId); PayRecevieRule payRecevieRule = new PayRecevieRule(); List <Document> doucuments = await payRecevieRule.GetDoucumentIDByChequeIdAsync(chequesAndStatsVM.chequeId); cheque.Status = ZhivarEnums.ChequeStatus.Normal; chequeRule.Update(cheque); Document newDocument = new Document(); DocumentRule documentRule = new DocumentRule(); foreach (var document in doucuments) { newDocument = new Document() { Credit = document.Credit, Description = chequesAndStatsVM.description, Debit = document.Debit, DateTime = DateTime.Now, DisplayDate = PersianDateUtils.ToPersianDate(DateTime.Now), FinanYear = document.FinanYear, FinanYearId = document.FinanYearId, IsFirsDocument = document.IsFirsDocument, IsManual = document.IsManual, Number = await documentRule.createNumberDocumentAsync(organId), Number2 = await documentRule.createNumberDocumentAsync(organId), OrganId = organId, Status = ZhivarEnums.DocumentStatus.TaeedShode, StatusString = document.StatusString, Type = ZhivarEnums.NoeDoc.Pay }; TransactionRule transactionRule = new TransactionRule(); var transactions = await transactionRule.GetAllByOrganIdAsync(organId); transactions = transactions.Where(x => x.DocumentId == document.ID).ToList(); newDocument.Transactions = new List <Transaction>(); Transaction newTransaction = new Transaction(); foreach (var transaction in transactions) { //newTransaction.AccDocument = newDocument; //newTransaction.Account = transaction.Account; newTransaction.AccountId = transaction.AccountId; newTransaction.Amount = transaction.Amount; newTransaction.Cheque = transaction.Cheque; newTransaction.ChequeId = transaction.ChequeId; newTransaction.ContactId = transaction.ContactId; newTransaction.Credit = transaction.Debit; newTransaction.Date = DateTime.Now; newTransaction.Debit = transaction.Credit; newTransaction.Description = chequesAndStatsVM.description; newTransaction.DisplayDate = PersianDateUtils.ToPersianDate(DateTime.Now); newTransaction.DocumentId = newDocument.ID; newTransaction.InvoiceId = transaction.InvoiceId; newTransaction.IsCredit = transaction.IsDebit; newTransaction.IsDebit = transaction.IsCredit; newTransaction.PaymentMethod = transaction.PaymentMethod; newTransaction.PaymentMethodString = transaction.PaymentMethodString; newTransaction.Reference = transaction.Reference; newTransaction.RefTrans = transaction.RefTrans; newTransaction.Remaining = transaction.Remaining; newTransaction.RemainingType = transaction.RemainingType; newTransaction.RowNumber = transaction.RowNumber; newTransaction.Stock = transaction.Stock; newTransaction.TransactionTypeString = transaction.TransactionTypeString; newTransaction.Type = transaction.Type; newTransaction.UnitPrice = transaction.UnitPrice; newDocument.Transactions.Add(newTransaction); } } await documentRule.InsertAsync(newDocument, organId); await documentRule.SaveChangesAsync(); //AccountNumber: "" chequeVM.Amount = cheque.Amount; chequeVM.BankBranch = cheque.BankBranch; //chequeVM.BankDetailAccount: null chequeVM.BankName = cheque.BankName; chequeVM.ChequeNumber = cheque.ChequeNumber; chequeVM.Contact = cheque.Contact; chequeVM.Date = cheque.Date; chequeVM.DepositBank = cheque.DepositBank; //chequeVM.DepositDate = cheque.DepositBank; chequeVM.DisplayDate = cheque.DisplayDate; chequeVM.ID = cheque.ID; //chequeVM.MyCheque = cheque.DepositBank; //chequeVM.Overdue = cheque.Overdue; //chequeVM.Payee = cheque.Payee; //chequeVM.Payer = cheque.Payer; chequeVM.ReceiptDate = cheque.ReceiptDate; //chequeVM.ReturnDate = cheque.ReturnDate; chequeVM.Status = cheque.Status; chequeVM.StatusString = "وصول شده"; break; } default: break; } return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = ZhivarEnums.ResultCode.Successful, data = chequeVM })); }
public async Task <HttpResponseMessage> SaveReceiveAndPay([FromBody] PayRecevie payRecevie) { try { var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId); FinanYearRule finanYearRule = new FinanYearRule(); var finanYerar = await finanYearRule.GetCurrentFinanYear(organId); var documentNumber = 0; int payRecevieNumber = 0; if (payRecevie.ID > 0) { PayRecevie temp = new PayRecevie(); temp = payRecevie; PayRecevieRule payRecevieRule = new PayRecevieRule(); payRecevieRule.Delete(payRecevie.ID); documentNumber = payRecevie.Document.Number; payRecevieNumber = payRecevie.Number; await payRecevieRule.SaveChangesAsync(); } payRecevie.ID = -1; if (payRecevie.Contact != null) { payRecevie.ContactId = payRecevie.Contact.ID; payRecevie.Contact.ObjectState = OMF.Common.Enums.ObjectState.Unchanged; } if (payRecevie.Invoice != null) { payRecevie.InvoiceId = payRecevie.Invoice.ID; payRecevie.Invoice.ObjectState = OMF.Common.Enums.ObjectState.Unchanged; } if (payRecevie.Cost != null) { payRecevie.CostId = payRecevie.Cost.ID; payRecevie.Cost.ObjectState = OMF.Common.Enums.ObjectState.Unchanged; } payRecevie.OrganId = organId; payRecevie.Type = payRecevie.Type; payRecevie.Date = PersianDateUtils.ToDateTime(payRecevie.DisplayDate); payRecevie.DisplayDate = payRecevie.DisplayDate; // payRecevie.Date = DateTime.Now; //payRecevie.DisplayDate = Utilities.PersianDateUtils.ToPersianDate(DateTime.Now); decimal amount = 0; foreach (var item in payRecevie.Items) { amount += item.Amount; if (item.Cash != null) { item.CashId = item.Cash.ID; } else if (item.Bank != null) { item.BankId = item.Bank.ID; } else if (item.Cheque != null && item.Type == ZhivarEnums.DetailPayReceiveType.Cheque) { Cheque cheque = new Cheque() { Amount = item.Amount, BankBranch = item.Cheque.BankBranch, BankName = item.Cheque.BankName, ChequeNumber = item.Cheque.ChequeNumber, Contact = payRecevie.Contact, ContactId = payRecevie.Contact.ID, Date = PersianDateUtils.ToDateTime(item.Cheque.DisplayDate), OrganId = organId, Status = ZhivarEnums.ChequeStatus.Normal, DisplayDate = item.Cheque.DisplayDate, }; if (payRecevie.IsReceive) { cheque.Type = ZhivarEnums.ChequeType.Dareaftani; } else { cheque.Type = ZhivarEnums.ChequeType.Pardakhtani; } if (item.Cheque.ReceiptDate != null) { cheque.ReceiptDate = item.Cheque.ReceiptDate; } item.Cheque = cheque; item.ChequeId = item.Cheque.ID; item.Cheque.ObjectState = OMF.Common.Enums.ObjectState.Added; if (!payRecevie.IsReceive) { var temp = item.ChequeBank.ID; item.ChequeBank = new ChequeBank() { BankId = temp, ChequeId = item.Cheque.ID, OrganId = organId }; item.ChequeBank.ObjectState = OMF.Common.Enums.ObjectState.Added; item.ChequeBankId = item.ChequeBank.ID; } item.ObjectState = OMF.Common.Enums.ObjectState.Added; } if (item.Type == ZhivarEnums.DetailPayReceiveType.KharjCheque) { ChequeRule chequeRule = new ChequeRule(); var cheque = await chequeRule.FindAsync(item.Cheque.ID); cheque.Status = ZhivarEnums.ChequeStatus.Sold; chequeRule.Update(cheque); await chequeRule.SaveChangesAsync(); item.Cheque.ContactId = item.Cheque.Contact.ID; } item.ObjectState = OMF.Common.Enums.ObjectState.Added; } payRecevie.Amount = amount; if (payRecevie.Invoice != null) { //if (payRecevie.Invoice.Contact != null) payRecevie.Invoice.ContactId = payRecevie.Invoice.ContactId; //payRecevie.Invoice.FinanYear = finanYerar; //payRecevie.Invoice.FinanYearId = finanYerar.ID; var invoice = payRecevie.Invoice; invoice.Rest -= amount; invoice.Paid += amount; if (invoice.Rest <= 0) { invoice.Status = ZhivarEnums.NoeInsertFactor.Received; } this.BusinessRule.UnitOfWork.RepositoryAsync <Invoice>().Update(invoice); } if (payRecevie.Cost != null) { //if (payRecevie.Cost.Contact != null) payRecevie.Cost.ContactId = payRecevie.Cost.ContactId; var cost = payRecevie.Cost; cost.Rest -= amount; cost.Paid += amount; if (cost.Rest <= 0) { cost.Status = ZhivarEnums.CostStatus.Paid; } this.BusinessRule.UnitOfWork.RepositoryAsync <Cost>().Update(cost); } payRecevie.Document = await createDocument(payRecevie, organId, documentNumber); if (payRecevieNumber > 0) { payRecevie.Number = payRecevieNumber; } else { var payRecevies = await Rule.GetAllByOrganIdAsync(organId); var lastPayRecevies = payRecevies.OrderByDescending(x => x.ID).FirstOrDefault(); if (lastPayRecevies != null) { payRecevie.Number = lastPayRecevies.Number + 1; } else { payRecevie.Number = 1; } } foreach (var transaction in payRecevie.Document.Transactions) { transaction.ObjectState = OMF.Common.Enums.ObjectState.Added; //if (transaction.AccDocument != null) // transaction.AccDocument.ObjectState = OMF.Common.Enums.ObjectState.Unchanged; if (transaction.Account != null) { transaction.Account.ObjectState = OMF.Common.Enums.ObjectState.Unchanged; } // transaction.Transactions = null; } payRecevie.Document.ObjectState = OMF.Common.Enums.ObjectState.Added; payRecevie.ObjectState = OMF.Common.Enums.ObjectState.Added; this.BusinessRule.UnitOfWork.RepositoryAsync <PayRecevie>().InsertOrUpdateGraph(payRecevie); await this.BusinessRule.UnitOfWork.SaveChangesAsync(); return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)ZhivarEnums.ResultCode.Successful, data = payRecevie })); } catch (Exception ex) { throw; } }