private void SaveDiscount(BillingDiscount bDiscount) { var task = ServiceProxyFactory.LifeTime(async factory => { var billingService = factory.Create <BillingServiceClient>(); CountResult saveResult = await billingService.SaveDiscountAsync(SessionKey, bDiscount); }); ProgressDialog.Start(ParentForm, task, false, SessionKey); }
private async Task <List <BillingDiscount> > PrepareDataForBillingDiscount(BillingImport billingImport, long billingId, int CompanyId, int NewCustomerId, CancellationToken token) { var discounts = new List <BillingDiscount>(); var customerDiscounts = (await customerDiscountQueryProcessor.GetAsync(billingImport.CustomerId, token)).ToList(); foreach (var csDiscount in customerDiscounts) { var discount = new BillingDiscount { BillingId = billingId, DiscountType = csDiscount.Sequence, DiscountAmount = billingImport.BillingAmount * csDiscount.Rate, AssignmentFlag = 0, }; discounts.Add(discount); } return(discounts); }
public async Task <int> SaveAsync(BillingDiscount discount, CancellationToken token = default(CancellationToken)) { var result = 0; using (var scope = transactionScopeBuilder.Create()) { await deleteBillingDiscountQueryProcessor.DeleteAsync(discount.BillingId); if (discount.DiscountAmount1 != 0) { discount.DiscountAmount = discount.DiscountAmount1; discount.DiscountType = 1; result += await addBillingDiscountQueryProcessor.SaveAsync(discount); } if (discount.DiscountAmount2 != 0) { discount.DiscountAmount = discount.DiscountAmount2; discount.DiscountType = 2; result += await addBillingDiscountQueryProcessor.SaveAsync(discount); } if (discount.DiscountAmount3 != 0) { discount.DiscountAmount = discount.DiscountAmount3; discount.DiscountType = 3; result += await addBillingDiscountQueryProcessor.SaveAsync(discount); } if (discount.DiscountAmount4 != 0) { discount.DiscountAmount = discount.DiscountAmount4; discount.DiscountType = 4; result += await addBillingDiscountQueryProcessor.SaveAsync(discount); } if (discount.DiscountAmount5 != 0) { discount.DiscountAmount = discount.DiscountAmount5; discount.DiscountType = 5; result += await addBillingDiscountQueryProcessor.SaveAsync(discount); } scope.Complete(); } return(result); }
public Task <int> SaveAsync(BillingDiscount BillingDiscount, CancellationToken token = default(CancellationToken)) { var query = @" INSERT INTO BillingDiscount (BillingId ,DiscountType ,DiscountAmount ,AssignmentFlag ) VALUES (@BillingId ,@DiscountType ,@DiscountAmount ,@AssignmentFlag); "; return(dbHelper.ExecuteAsync(query, BillingDiscount, token)); }
private void SaveDiscount() { var task = ServiceProxyFactory.LifeTime(async factory => { var service = factory.Create <BillingServiceClient>(); BillingDiscount billDiscount = new BillingDiscount(); billDiscount.BillingId = BillingId; billDiscount.DiscountAmount1 = Discount1; billDiscount.DiscountAmount2 = Discount2; billDiscount.DiscountAmount3 = Discount3; billDiscount.DiscountAmount4 = Discount4; billDiscount.DiscountAmount5 = Discount5; var result = await service.SaveDiscountAsync(SessionKey, billDiscount); }); ProgressDialog.Start(ParentForm, task, false, SessionKey); }
private void Save() { try { if (!checkUpdate()) { ShowWarningDialog(MsgWngNoDataForProcess, "登録"); return; } foreach (Row row in grdDiscoutChousei.Rows) { int check_zero = 0; int billing_id = Convert.ToInt32(row.Cells["celId"].Value); if (Convert.ToDecimal(row.Cells["celDiscountAmount1"].Value) != 0M && row.Cells["celDiscountAmount1"].Value.ToString() != "") { check_zero = 1; } else if (Convert.ToDecimal(row.Cells["celDiscountAmount2"].Value) != 0M && row.Cells["celDiscountAmount2"].Value.ToString() != "") { check_zero = 1; } else if (Convert.ToDecimal(row.Cells["celDiscountAmount3"].Value) != 0M && row.Cells["celDiscountAmount3"].Value.ToString() != "") { check_zero = 1; } else if (Convert.ToDecimal(row.Cells["celDiscountAmount4"].Value) != 0M && row.Cells["celDiscountAmount4"].Value.ToString() != "") { check_zero = 1; } else if (Convert.ToDecimal(row.Cells["celDiscountAmount5"].Value) != 0M && row.Cells["celDiscountAmount5"].Value.ToString() != "") { check_zero = 1; } if (check_zero == 0) { DeleteDiscounts(billing_id); } else { BillingDiscount bd = new BillingDiscount(); bd.AssignmentFlag = 0; bd.BillingId = billing_id; bd.DiscountAmount1 = Convert.ToDecimal(row.Cells["celDiscountAmount1"].Value); bd.DiscountAmount2 = Convert.ToDecimal(row.Cells["celDiscountAmount2"].Value); bd.DiscountAmount3 = Convert.ToDecimal(row.Cells["celDiscountAmount3"].Value); bd.DiscountAmount4 = Convert.ToDecimal(row.Cells["celDiscountAmount4"].Value); bd.DiscountAmount5 = Convert.ToDecimal(row.Cells["celDiscountAmount5"].Value); SaveDiscount(bd); } ParentForm.DialogResult = DialogResult.OK; } } catch (Exception ex) { Debug.Fail(ex.ToString()); NLogHandler.WriteErrorLog(this, ex, SessionKey); } }
public async Task <int> SaveDiscount(BillingDiscount discount, CancellationToken token) => await billingDiscountProcessor.SaveAsync(discount, token);
public async Task <IEnumerable <Billing> > SaveItemsAsync(IEnumerable <Billing> billings, CancellationToken token = default(CancellationToken)) { var source = billings.ToArray(); var result = new List <Billing>(); using (var scope = transactionScopeBuilder.Create()) { BillingInput billingInput = null; var index = 0; if (source[0].BillingInputId == null && source[0].Id == 0) { billingInput = await addBillingInputQueryProcessor.AddAsync(token); } foreach (var billing in source) { if (billingInput != null) { billing.BillingInputId = billingInput.Id; } result.Add(await SaveInnerAsync(billing)); if (billing.UseDiscount) { var discounts = (await customerDiscountQueryProcessor.GetAsync(billing.CustomerId, token)).ToList(); if (discounts.Count > 0) { var discount = new BillingDiscount(); var billingId = result[index].Id; discount.BillingId = billingId; await deleteBillingDiscountQueryProcessor.DeleteAsync(billingId, token); for (var i = 0; i < discounts.Count; i++) { var customerDiscount = discounts[i]; discount.DiscountType = customerDiscount.Sequence; discount.DiscountAmount = customerDiscount.GetRoundingValue(billing.BillingAmount, billing.CurrencyPrecision); await addBillingDiscountQueryProcessor.SaveAsync(discount, token); } } } else if (!billing.UseDiscount && billing.BillingDiscountId != null) { var billingId = result[index].Id; await deleteBillingDiscountQueryProcessor.DeleteAsync(billingId, token); } /* query から見直し updateBilling の 修正が必要 */ var contract = new BillingDivisionContract(); contract.BillingId = result[index].Id; contract.CreateBy = billing.CreateBy; contract.UpdateBy = billing.UpdateBy; contract.CompanyId = billing.CompanyId; contract.CustomerId = billing.CustomerId; contract.ContractNumber = billing.ContractNumber; if (billing.BillingDivisionContract == 1) { await updateBillingDivisionContractQueryProcessor.UpdateBillingAsync(contract, token); } else if (billing.BillingDivisionContract == 2) { await deleteBillingDivisionContractQueryProcessor.DeleteWithBillingIdAsync(billing.Id, token); } else if (billing.BillingDivisionContract == 3) { var newContractNo = await billingDivisionContractQueryProcessor.GetNewContractNumberAsync(contract.CompanyId, token); contract.ContractNumber = newContractNo.ToString(); var setting = await billingDivisionSettingQueryProcessor.GetAsync(billing.CompanyId, token); contract.FirstDateType = setting.FirstDateType; contract.Monthly = setting.Monthly; contract.BasisDay = setting.BasisDay; contract.DivisionCount = setting.DivisionCount; contract.RoundingMode = setting.RoundingMode; contract.RemainsApportionment = setting.RemainsApportionment; contract.Comfirm = 0; contract.CancelDate = null; await addBillingDivisionContractQueryProcessor.SaveAsync(contract, token); } index++; } scope.Complete(); } return(result); }
public async Task <IEnumerable <Billing> > SaveAsync(IEnumerable <Billing> billings, CancellationToken token = default(CancellationToken)) { var results = new List <Billing>(); using (var scope = transactionScopeBuilder.Create()) { var source = billings.ToArray(); var first = source.First(); var userId = first.UpdateBy; var appControl = await applicationControlQueryProcessor.GetAsync(first.CompanyId, token); List <CustomerDiscount> discounts = null; var useDiscount = appControl.UseDiscount == 1; if (useDiscount) { discounts = (await customerDiscountQueryProcessor.GetAsync(first.CustomerId, token)).ToList(); } var useLongTermAdv = appControl.UseLongTermAdvanceReceived == 1; var contractRegistered = appControl.RegisterContractInAdvance == 1; BillingDivisionSetting setting = null; if (useLongTermAdv && !contractRegistered) { setting = await billingDivisionSettingQueryProcessor.GetAsync(first.CompanyId, token); } var inputId = first.BillingInputId; var isInput = first.InputType == (int)BillingInputType.BillingInput || first.InputType == (int)BillingInputType.PeriodicBilling; var requireInputId = isInput && !inputId.HasValue; if (requireInputId) { inputId = (await addBillingInputQueryProcessor.AddAsync(token)).Id; foreach (var item in source) { item.BillingInputId = inputId; } } else if (isInput && inputId.HasValue) { var registeredIds = (await billingQueryProcessor.GetByBillingInputIdAsync(inputId.Value)).Select(x => x.Id).ToList(); var deleteSource = new BillingDeleteSource { Ids = registeredIds.Where(x => !source.Any(y => y.Id == x)).ToArray(), CompanyId = first.CompanyId, LoginUserId = userId, }; await billingProcessor.DeleteAsync(deleteSource, token); } var requireDiscount = source.Any(x => x.UseDiscount); foreach (var item in source) { var result = await SaveInnerAsync(item, token); if (useDiscount) { if (!item.UseDiscount && item.BillingDiscountId.HasValue) { await deleteBillingDiscountQueryProcessor.DeleteAsync(result.Id, token); } if (item.UseDiscount && discounts.Any()) { await deleteBillingDiscountQueryProcessor.DeleteAsync(result.Id, token); var billingDiscount = new BillingDiscount { BillingId = result.Id }; foreach (var x in discounts) { billingDiscount.DiscountType = x.Sequence; billingDiscount.DiscountAmount = x.GetRoundingValue(item.BillingAmount, item.CurrencyPrecision); await addBillingDiscountQueryProcessor.SaveAsync(billingDiscount, token); } } } if (useLongTermAdv && item.BillingDiscountId > 0) { var contract = new BillingDivisionContract { BillingId = result.Id, CreateBy = userId, UpdateBy = userId, CompanyId = item.CompanyId, CustomerId = item.CustomerId, ContractNumber = item.ContractNumber, }; if (item.BillingDivisionContract == 1) { await updateBillingDivisionContractQueryProcessor.UpdateBillingAsync(contract, token); } else if (item.BillingDivisionContract == 2) { await deleteBillingDivisionContractQueryProcessor.DeleteWithBillingIdAsync(result.Id, token); } else if (item.BillingDivisionContract == 3) { var newNumber = await billingDivisionContractQueryProcessor.GetNewContractNumberAsync(contract.CompanyId, token); contract.ContractNumber = newNumber.ToString(); contract.FirstDateType = setting.FirstDateType; contract.Monthly = setting.Monthly; contract.BasisDay = setting.BasisDay; contract.DivisionCount = setting.DivisionCount; contract.RoundingMode = setting.RoundingMode; contract.RemainsApportionment = setting.RemainsApportionment; contract.Comfirm = 0; await addBillingDivisionContractQueryProcessor.SaveAsync(contract, token); } } results.Add(result); } scope.Complete(); } return(results); }