private void DisplayExtractCount() { var selected = MFBilling.Where(x => x.Selected); txtSelectedCount.Text = $"{selected.Count().ToString("#,##0")} / {MFBilling.Count.ToString("#,##0")}"; lblExtractAmount.Text = selected.Select(x => x.total_price).Sum().ToString("#,##0"); }
private async Task <bool> CreateBillings() { try { var targetBilling = new List <Web.Models.Billing>(); var newCustomer = new List <Web.Models.Customer>(); var targetCount = 0; var legalPersonalities = await Util.GetLegalPersonaritiesAsync(Login); foreach (var mfBilling in MFBilling.Where(x => x.Selected)) { targetCount++; var departmentId = 0; var partner = await client.GetPartnersAsync(mfBilling.partner_id); if (mfBilling.Customer == null) { var newCusotmer = mfBilling.BuildNewCustomer( ExtractSetting, partner, CompanyId, Login.UserId, legalPersonalities); newCustomer.Add(newCusotmer); } else { departmentId = GetStaff(mfBilling.Customer.StaffId).DepartmentId; } var department = partner == null ? null : partner.departments.Where(x => x.id == mfBilling.department_id).FirstOrDefault(); var voneBilling = mfBilling.CreateVOneBilling( departmentId, CompanyId, Login.UserId, CurrencyId, ExtractSetting, department); targetBilling.Add(voneBilling); } var result = await SaveMFBillings(targetBilling.ToArray(), newCustomer.ToArray()); var isSuccess = targetCount == result.Count; return(isSuccess); } catch (Exception ex) { Debug.Fail(ex.ToString()); NLogHandler.WriteErrorLog(this, ex, SessionKey); return(false); } }
private bool CheckForUpdate() { if (!CheckFixedValues()) { return(false); } if (!MFBilling.Any(x => x.Selected)) { ShowWarningDialog(MsgWngNotExistUpdateData, "更新を行うデータ"); return(false); } return(true); }
public Task <MFBilling> SaveAsync(MFBilling billing, CancellationToken token = default(CancellationToken)) { var query = @"INSERT INTO MFBilling( BillingId , CompanyId , Id ) OUTPUT inserted.* VALUES( @BillingId , @CompanyId , @Id ) "; return(dbHelper.ExecuteAsync <MFBilling>(query, billing, token)); }
/// <summary>登録</summary> /// <param name="source">MFC請求書 の ID(ハッシュ文字列)は、<see cref="Billing.CustomerKana"/>へ設定されているものとする</param> /// <param name="token"></param> /// <returns></returns> public async Task <IEnumerable <Billing> > SaveAsync(MFBillingSource source, CancellationToken token = default(CancellationToken)) { var billings = source.Billings; var customers = source.Customers; var newCustomers = new List <Customer>(); var result = new List <Billing>(); using (var scope = transactionScopeBuilder.Create()) { foreach (var c in customers) { newCustomers.Add(await customerProcessor.SaveAsync(c, token: token)); } var staffs = (await staffProcessor.GetAsync(new StaffSearch { Ids = newCustomers.Select(x => x.StaffId).Distinct().ToArray() }, token)).ToDictionary(x => x.Id); foreach (var billing in billings) { if (billing.CustomerId == 0) { var customer = newCustomers.Where(x => x.Code == billing.CustomerCode).FirstOrDefault(); var staff = staffs[customer.StaffId]; billing.CustomerId = customer.Id; billing.StaffId = customer.StaffId; billing.CollectCategoryId = customer.CollectCategoryId; billing.DepartmentId = staff.DepartmentId; } var savedBilling = await billingSaveProcessor.SaveAsync(billing, token); var mfId = billing.CustomerKana; var mfBilling = new MFBilling { BillingId = savedBilling.Id, CompanyId = savedBilling.CompanyId, Id = mfId }; await addMFBillingQueryProcessor.SaveAsync(mfBilling, token); result.Add(savedBilling); } scope.Complete(); } return(result); }