public static InvoiceAllowance PrepareAllowanceForPayment <TEntity>(this ModelSource <TEntity> models, Payment item, decimal?allowanceAmount = null, String remark = null, DateTime?allowanceDate = null) where TEntity : class, new() { PaymentAllowanceValidator <TEntity> validator = new PaymentAllowanceValidator <TEntity>(models); var exception = validator.Validate(item, allowanceAmount, remark, allowanceDate); if (exception != null) { return(null); } var newItem = validator.Allowance; if (item.InvoiceItem.InvoiceType == (int)Naming.InvoiceTypeDefinition.一般稅額計算之電子發票) { newItem.InvoiceAllowanceDispatch = new InvoiceAllowanceDispatch { } } ; models.GetTable <InvoiceAllowance>().InsertOnSubmit(newItem); item.VoidPayment = new VoidPayment { Remark = remark, Status = (int)Naming.CourseContractStatus.已生效, VoidDate = DateTime.Now }; ///刪除當月已分潤 /// DateTime startDate = DateTime.Today.FirstDayOfMonth(); if (item.PayoffDate >= startDate && item.PayoffDate < startDate.AddMonths(1)) { models.DeleteAllOnSubmit <TuitionAchievement>(t => t.InstallmentID == item.PaymentID); } return(newItem); } }