예제 #1
0
        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");
        }
예제 #2
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);
            }
        }
예제 #3
0
        private bool CheckForUpdate()
        {
            if (!CheckFixedValues())
            {
                return(false);
            }

            if (!MFBilling.Any(x => x.Selected))
            {
                ShowWarningDialog(MsgWngNotExistUpdateData, "更新を行うデータ");
                return(false);
            }
            return(true);
        }
예제 #4
0
        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));
        }
예제 #5
0
        /// <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);
        }