コード例 #1
0
        static async Task Main(string[] args)
        {
            var companyId   = 0;
            var accessToken = "";

            // Freee AccountingClient を作成
            var accountingClient = new AccountingClient(new TokenCredentials(accessToken));

            // 領収書をアップロード
            var receipt = await accountingClient.Receipts.CreateAsync(companyId, File.OpenRead("receipt.jpg"));

            // 経費精算を作成する
            await accountingClient.ExpenseApplications.CreateAsync(new CreateExpenseApplicationParams
            {
                CompanyId               = companyId,
                Title                   = "テスト経費精算",
                Description             = "これは SDK のテストで作成したデータです",
                IssueDate               = "2019-07-22",
                ExpenseApplicationLines = new[]
                {
                    new CreateExpenseApplicationParamsExpenseApplicationLinesItem
                    {
                        ExpenseApplicationLineTemplateId = null,
                        TransactionDate = "2019-07-20",
                        Amount          = 10000,
                        Description     = "テスト経費",
                        ReceiptId       = receipt.Receipt.Id
                    }
                }
            });
        }
コード例 #2
0
        static async Task Main(string[] args)
        {
            var companyId   = 0;
            var accessToken = "";

            // Freee AccountingClient を作成
            var accountingClient = new AccountingClient(new TokenCredentials(accessToken));

            var trialPl = await accountingClient.TrialBalance.GetTrialPlAsync(companyId, 2019);

            foreach (var balance in trialPl.TrialPl.Balances.OrderBy(x => x.ParentAccountCategoryId).ThenBy(x => x.HierarchyLevel))
            {
                Console.Write(balance.ParentAccountCategoryName);
                if (balance.AccountCategoryName != null)
                {
                    Console.Write($"\t\t{balance.AccountCategoryName}");
                }

                if (balance.AccountItemName != null)
                {
                    Console.Write($"\t\t{balance.AccountItemName}");
                }

                Console.WriteLine($"\t\t\t{balance.ClosingBalance}");
            }
        }
コード例 #3
0
        static async Task Main(string[] args)
        {
            var companyId   = 0;
            var accessToken = "";

            // アクセストークンを指定して、クライアントを作成する
            var accountClient = new AccountingClient(new TokenCredentials(accessToken));

            // 事業所の詳細情報を取得する
            var company = await accountClient.Companies.GetAsync(companyId);

            Console.WriteLine($"事業所名 : {company.Company.DisplayName}");

            // 登録されている口座の一覧を取得する
            var walletablesIndex = await accountClient.Walletables.ListAsync(companyId, true);

            foreach (var walletable in walletablesIndex.Walletables)
            {
                Console.WriteLine($"口座名 : {walletable.Name} / 登録残高 : \\{walletable.WalletableBalance:#,0}");
            }

            // 請求書の一覧を取得する
            var invoicesIndex = await accountClient.Invoices.ListAsync(companyId);

            foreach (var invoice in invoicesIndex.Invoices)
            {
                Console.WriteLine($"売上計上日 : {invoice.BookingDate ?? "未設定"} / 合計金額 : \\{invoice.TotalAmount:#,0}");
            }
        }
コード例 #4
0
        public async Task <Accounting.Decimal> GetBalance(BalanceRequest request, DateTime?deadline = null, CancellationToken context = default)
        {
            var resp = await AccountingClient.BalanceAsync(request, deadline : deadline, cancellationToken : context);

            if (!resp.Verify())
            {
                throw new FormatException("invalid balance response");
            }
            CheckStatus(resp);
            return(resp.Body.Balance);
        }
コード例 #5
0
        public async Task <IActionResult> Me()
        {
            var accessToken = await HttpContext.GetTokenAsync("access_token");

            var accountingClient = new AccountingClient(new TokenCredentials(accessToken));

            var user = await accountingClient.Users.GetMeAsync(companies : true);

            var deals = await accountingClient.Deals.ListAsync(user.User.Companies[0].Id, limit : 5);

            ViewBag.Deals = deals.Deals;

            return(View(user.User));
        }
コード例 #6
0
 public void InitializeClient()
 {
     accountingClient = new AccountingClient();
     accountingClient.Open();
 }
コード例 #7
0
        static async Task Main(string[] args)
        {
            var companyId   = 0;
            var accessToken = "";

            // Freee AccountingClient を作成
            var accountingClient = new AccountingClient(new TokenCredentials(accessToken));

            // 各種マスタの取得
            var accountItems = await accountingClient.AccountItems.ListAsync(companyId);

            var taxesCodes = await accountingClient.Taxes.ListTaxCodesAsync();

            var partners = await accountingClient.Partners.ListAsync(companyId);

            var sections = await accountingClient.Sections.ListAsync(companyId);

            var items = await accountingClient.Items.ListAsync(companyId);

            var tags = await accountingClient.Tags.ListAsync(companyId);

            // ユーザー入力
            var selectedAccountItem = Prompt.Select("勘定科目", accountItems.AccountItems, valueSelector: x => x.Name);
            var selectedTaxesCode   = Prompt.Select("税区分コード", taxesCodes.Taxes, valueSelector: x => x.NameJa);
            var selectedPartner     = Prompt.Select("取引先", partners.Partners, valueSelector: x => x.Name);
            var selectedSection     = Prompt.Select("部門", sections.Sections, valueSelector: x => x.Name);
            var selectedItem        = Prompt.Select("品目", items.Items, valueSelector: x => x.Name);
            var selectedTag         = Prompt.Select("タグ", tags.Tags, valueSelector: x => x.Name);

            var amount = Prompt.Input <int>("取引金額");

            // 未決済取引の作成
            var dealResponse = await accountingClient.Deals.CreateAsync(new CreateDealParams
            {
                CompanyId = companyId,
                IssueDate = "2019-07-01",
                DueDate   = "2019-08-31",
                Details   = new[]
                {
                    new CreateDealParamsDetailsItem
                    {
                        AccountItemId = selectedAccountItem.Id,
                        Amount        = amount,
                        ItemId        = selectedItem?.Id,
                        SectionId     = selectedSection?.Id,
                        TagIds        = new[] { selectedTag?.Id },
                        TaxCode       = selectedTaxesCode?.Code
                    }
                },
                PartnerId = selectedPartner?.Id,
                RefNumber = "100",
                Type      = "income"
            });

            var newDeal = dealResponse.Deal;

            Console.WriteLine("取引(未決済)を作成しました。");

            // ユーザー入力
            var walletables = await accountingClient.Walletables.ListAsync(companyId);

            var selectedWalletable = Prompt.Select("決済口座", walletables.Walletables, valueSelector: x => x.Name);

            // 決済の登録
            var paymentResponse = await accountingClient.Payments.CreateDealAsync(newDeal.Id, new DealPaymentParams
            {
                CompanyId          = companyId,
                Amount             = amount,
                Date               = "2019-07-30",
                FromWalletableId   = selectedWalletable.Id,
                FromWalletableType = selectedWalletable.Type
            });

            Console.WriteLine("決済を登録しました。");

            var updateDeal = paymentResponse.Deal;

            // 更新の登録
            await accountingClient.Renews.CreateDealAsync(updateDeal.Id, new RenewsCreateParams
            {
                CompanyId     = companyId,
                UpdateDate    = "2019-07-30",
                RenewTargetId = updateDeal.Details[0].Id,
                Details       = new[]
                {
                    new RenewsCreateDetailParams
                    {
                        AccountItemId = selectedAccountItem.Id,
                        Amount        = amount,
                        ItemId        = selectedItem?.Id,
                        SectionId     = selectedSection?.Id,
                        TagIds        = new[] { selectedTag?.Id },
                        TaxCode       = selectedTaxesCode.Code
                    }
                }
            });
        }