در تدبیر مؤدیان اطلاعات هر حافظهٔ مالیاتی را میتوان در قالب یک شرکت ثبت کرد. کاربران میتوانند مالک یا عضو شرکتهای متعدد باشند و روی هر شرکت سطح دسترسی متفاوتی داشته باشند.
برنامهنویسان نیز برای ارسال صورتحساب به سامانهٔ مالیاتی باید مشخص کنند که با کدام شرکت کار میکنند.
برای دریافت فهرست شرکتهایی که یک کاربر به آنها دسترسی دارد از متد api/workspace/ex با مقادیر پیشفرض برای ورودیها استفاده کنید.
مقدار بازگشتی از این پارامتر آرایهای از مدل WorkspaceExViewModel تعریف شده مطابق ساختار زیر است:
public class WorkspaceExViewModel
{
/// <summary>
/// workspace information
/// </summary>
public WorkspaceViewModel Workspace { get; set; }
/// <summary>
/// tax info
/// </summary>
public RWorkspaceTaxInfo TaxInfo { get; set; }
}
این خروجی دو بخش دارد. بخش اول (Workspace) اطلاعات پایهای شرکت مانند شناسه (Id) و نام آن را مطابق ساختار WorkspaceViewModel در اختیار میگذارد.
در بخش دوم اطلاعات مالیاتی شرکت در دسترس قرار دارد که مطابق ساختار زیر تعریف میشود:
/// <summary>
/// Workspace tax info
/// </summary>
public class RWorkspaceTaxInfo
{
/// <summary>
/// Id
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// Workspace Id
/// </summary>
public Guid WorkspaceId { get; set; }
/// <summary>
/// Workspace
/// </summary>
public RWorkspace Workspace { get; set; }
/// <summary>
/// brand name (نام متداول برند)
/// </summary>
public string BrandName { get; set; }
/// <summary>
/// Official Name (نام ثبت شدهٔ قانونی)
/// </summary>
public string OfficialName { get; set; }
/// <summary>
/// National Id (شناسهٔ ملی)
/// </summary>
public string NationalId { get; set; }
/// <summary>
/// Tax Payer Identification Number (کد اقتصادی)
/// </summary>
public string EconomicCode { get; set; }
/// <summary>
/// کد شعبهٔ فروشنده
/// </summary>
public string BranchCode { get; set; }
/// <summary>
/// logo image id
/// </summary>
public Guid? LogoImageId { get; set; }
/// <summary>
/// logo image
/// </summary>
public virtual RImage LogoImage { get; set; }
/// <summary>
/// tax memory id
/// </summary>
public string TaxMemoryId { get; set; }
/// <summary>
/// private key
/// </summary>
public string TaxPrivateKey { get; set; }
/// <summary>
/// Governmental / Non-Governmental
/// </summary>
public string OrganizationType { get; set; } = "Non-Governmental";
/// <summary>
/// Subunit 1 in Persian
/// </summary>
public string OrganizationUnitLevel1 { get; set; } = "";
/// <summary>
/// Subunit 2 in Persian
/// </summary>
public string OrganizationUnitLevel2 { get; set; } = "";
/// <summary>
/// Subunit 3 in Persian
/// </summary>
public string OrganizationUnitLevel3 { get; set; } = "";
/// <summary>
/// Organization Unit [Stamp] in English
/// </summary>
/// <smaple>
/// pardazeshmoviazisaman
/// </smaple>
public string OrganizationUnitOrNameFamilyInEnglish { get; set; } = "";
/// <summary>
/// Email
/// </summary>
/// <sample>
/// info@sppc.co.ir
/// </sample>
public string Email { get; set; } = "";
/// <summary>
/// csr first name
/// </summary>
public string FirstName { get; set; }
/// <summary>
/// SurName in Persian
/// </summary>
/// <sample>
/// حسن
/// </sample>
public string Surname { get; set; } = "";
/// <summary>
/// First Name in Persian
/// </summary>
/// <sample>
/// حسینی
/// </sample>
public string GivenName { get; set; } = "";
/// <summary>
/// Provice in Persian
/// </summary>
/// <sample>
/// مرکزی
/// </sample>
public string Province { get; set; } = "";
/// <summary>
/// City in Persian
/// </summary>
/// <sample>
/// اراک
/// </sample>
public string City { get; set; } = "";
/// <summary>
/// Role
/// </summary>
/// <sample>
/// مدیر عامل
/// </sample>
public string Role { get; set; } = "";
/// <summary>
/// نشانی
/// </summary>
public string Address { get; set; }
/// <summary>
/// کد پستی
/// </summary>
public string PostalCode { get; set; }
/// <summary>
/// شماره تلفن
/// </summary>
public string PhoneNumber { get; set; }
/// <summary>
/// نمابر
/// </summary>
public string FaxNumber { get; set; }
/// <summary>
/// متن عمومی قابل استفاده در فاکتور شماره ۱
/// </summary>
public string FactorsNote1 { get; set; }
/// <summary>
/// متن عمومی قابل استفاده در فاکتور شماره ۲
/// </summary>
public string FactorsNote2 { get; set; }
/// <summary>
/// متن عمومی قابل استفاده در فاکتور شماره ۳
/// </summary>
public string FactorsNote3 { get; set; }
/// <summary>
/// stamp image id
/// </summary>
public Guid? StampImageId { get; set; }
/// <summary>
/// stamp image
/// </summary>
public virtual RImage StampImage { get; set; }
/// <summary>
/// ارسال اطلاعات به سندباکس
/// </summary>
public bool SandBox { get; set; }
/// <summary>
/// شماره ثبت شرکت
/// </summary>
public string? RegistrationNumber { get; set; }
/// <summary>
/// کلید عمومی
/// </summary>
public string? TaxPublicKey { get; set; }
/// <summary>
/// درخواست گواهی امضا
/// </summary>
public string? CertificateSignReq { get; set; }
}
برای ایجاد یا ویرایش شرکت میتوانید از متدهای مربوطه ذیل api/workspace استفاده کنید یا ساخت و ویرایش شرکت را به تدبیر مؤدیان واگذار کنید.
برای دریافت فهرست شرکتها میتوانید از کدی مشابه کد زیر استفاده کنید:
using (HttpClient httpClient = new HttpClient())
{
await MoaddiyanSessionChecker.PrepareClientAsync(httpClient);
var response = await httpClient.GetAsync
(
$"https://api.moaddiyan.com/api/workspace/ex?onlyActive=true&onlyOwned=false&onlyMember=false"
);
if (response.StatusCode != HttpStatusCode.OK)
{
MessageBox.Show(JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync()));
return;
}
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
var workspaces = JsonConvert.DeserializeObject<WorkspaceExViewModel[]>(json);
if (workspaces != null)
{
Settings.Default.WorkspacesJson = json;
Settings.Default.Save();
cmbWorkspace.Items.AddRange(workspaces);
return;
}
}
برای ارسال صورتحساب لازم است کاربر شرکتی را انتخاب کند (شرکت جاری). مهمترین ویژگی شرکت جاری شناسهٔ آن در دسترس از طریق WorkspaceExViewModel.WorkspaceViewModel.Id است که از نوع Guid تعریف میشود. این ویژگی را میبایست با متدهای ایجاد و ارسال صورتحساب همراه کنید.