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 } } }); }
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}"); } }
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}"); } }
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); }
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)); }
public void InitializeClient() { accountingClient = new AccountingClient(); accountingClient.Open(); }
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 } } }); }