/// <summary> /// Расчет комиссии банка /// </summary> /// <param name="senderBank"></param> /// <param name="senderInvoice"></param> /// <param name="recipientInvoice"></param> /// <param name="ammount"></param> /// <returns></returns> public static decimal CalcBankInterested(DbBank senderBank, DbInvoice senderInvoice, DbInvoice recipientInvoice, decimal ammount) { var percent = (IsInternalTransfer(senderInvoice, recipientInvoice)) ? senderBank.InterestInternalTransfer : senderBank.InterestExternalTransfer; return(CalcPercent(ammount, percent)); }
private int SaveOrUpdateInvoiceInDb(Invoice invoice) { if (String.IsNullOrEmpty(invoice.Number) || invoice.IssueDate == DateTime.MinValue || invoice.ContactID <= 0 || invoice.DueDate == DateTime.MinValue || String.IsNullOrEmpty(invoice.Currency) || invoice.ExchangeRate <= 0 || String.IsNullOrEmpty(invoice.Terms)) { throw new ArgumentException(); } var dbEntity = new DbInvoice { Id = invoice.ID, Status = invoice.Status, Number = invoice.Number, IssueDate = _tenantUtil.DateTimeToUtc(invoice.IssueDate), TemplateType = invoice.TemplateType, ContactId = invoice.ContactID, ConsigneeId = invoice.ConsigneeID, EntityType = invoice.EntityType, EntityId = invoice.EntityID, DueDate = _tenantUtil.DateTimeToUtc(invoice.DueDate), Language = invoice.Language, Currency = invoice.Currency, ExchangeRate = invoice.ExchangeRate, PurchaseOrderNumber = invoice.PurchaseOrderNumber, Terms = invoice.Terms, Description = invoice.Description, JsonData = invoice.JsonData, FileId = invoice.FileID, CreateOn = invoice.CreateOn == DateTime.MinValue ? DateTime.UtcNow : invoice.CreateOn, CreateBy = _securityContext.CurrentAccount.ID, LastModifedOn = DateTime.UtcNow, LastModifedBy = _securityContext.CurrentAccount.ID, TenantId = TenantID }; dbEntity.PurchaseOrderNumber = !String.IsNullOrEmpty(invoice.PurchaseOrderNumber) ? invoice.PurchaseOrderNumber : String.Empty; CrmDbContext.Update(dbEntity); CrmDbContext.SaveChanges(); return(dbEntity.Id); }
/// <summary> /// Внутренний ли перевод /// </summary> /// <param name="senderInvoice"></param> /// <param name="recipientInvoice"></param> /// <returns></returns> public static bool IsInternalTransfer(DbInvoice senderInvoice, DbInvoice recipientInvoice) => senderInvoice.BankId == recipientInvoice.BankId;