| POST | /eaccounting/invoicedraft |
|---|
import 'package:servicestack/servicestack.dart';
class InvoiceAddressResponse implements IConvertible
{
String InvoiceAddressId = "";
String? UserId;
String CorporateIdentityNumber = "";
String InvoiceAddress1 = "";
String InvoiceAddress2 = "";
String InvoiceCity = "";
String InvoicePostalCode = "";
String InvoiceCountryCode = "";
InvoiceAddressResponse({this.InvoiceAddressId,this.UserId,this.CorporateIdentityNumber,this.InvoiceAddress1,this.InvoiceAddress2,this.InvoiceCity,this.InvoicePostalCode,this.InvoiceCountryCode});
InvoiceAddressResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
InvoiceAddressId = json['InvoiceAddressId'];
UserId = json['UserId'];
CorporateIdentityNumber = json['CorporateIdentityNumber'];
InvoiceAddress1 = json['InvoiceAddress1'];
InvoiceAddress2 = json['InvoiceAddress2'];
InvoiceCity = json['InvoiceCity'];
InvoicePostalCode = json['InvoicePostalCode'];
InvoiceCountryCode = json['InvoiceCountryCode'];
return this;
}
Map<String, dynamic> toJson() => {
'InvoiceAddressId': InvoiceAddressId,
'UserId': UserId,
'CorporateIdentityNumber': CorporateIdentityNumber,
'InvoiceAddress1': InvoiceAddress1,
'InvoiceAddress2': InvoiceAddress2,
'InvoiceCity': InvoiceCity,
'InvoicePostalCode': InvoicePostalCode,
'InvoiceCountryCode': InvoiceCountryCode
};
getTypeName() => "InvoiceAddressResponse";
TypeContext? context = _ctx;
}
enum GreenTechnologyType
{
None,
SolarCellInstallation,
ElectricEnergyStorageInstallation,
ElectricVehicleChargingPointInstallation,
}
class ContributionMargin implements IConvertible
{
int? Amount;
int? Percentage;
ContributionMargin({this.Amount,this.Percentage});
ContributionMargin.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Amount = json['Amount'];
Percentage = json['Percentage'];
return this;
}
Map<String, dynamic> toJson() => {
'Amount': Amount,
'Percentage': Percentage
};
getTypeName() => "ContributionMargin";
TypeContext? context = _ctx;
}
class InvoiceDraftLineQueryResponse implements IConvertible
{
String ArticleNumber = "";
String ArticleId = "";
bool? IsServiceArticle;
double AmountNoVat = 0;
double PercentVat = 0;
int? LineNumber;
bool IsTextRow;
String Text = "";
double? UnitPrice;
String UnitAbbreviation = "";
String UnitAbbreviationEnglish = "";
double? DiscountPercentage;
double? Quantity;
bool IsWorkCost;
bool IsVatFree;
String CostCenterItemId1 = "";
String CostCenterItemId2 = "";
String CostCenterItemId3 = "";
String UnitId = "";
String ProjectId = "";
int? WorkCostType;
double? WorkHours;
double? MaterialCosts;
GreenTechnologyType? GreenTechnologyType;
ContributionMargin ContributionMargin;
InvoiceDraftLineQueryResponse({this.ArticleNumber,this.ArticleId,this.IsServiceArticle,this.AmountNoVat,this.PercentVat,this.LineNumber,this.IsTextRow,this.Text,this.UnitPrice,this.UnitAbbreviation,this.UnitAbbreviationEnglish,this.DiscountPercentage,this.Quantity,this.IsWorkCost,this.IsVatFree,this.CostCenterItemId1,this.CostCenterItemId2,this.CostCenterItemId3,this.UnitId,this.ProjectId,this.WorkCostType,this.WorkHours,this.MaterialCosts,this.GreenTechnologyType,this.ContributionMargin});
InvoiceDraftLineQueryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ArticleNumber = json['ArticleNumber'];
ArticleId = json['ArticleId'];
IsServiceArticle = json['IsServiceArticle'];
AmountNoVat = JsonConverters.toDouble(json['AmountNoVat']);
PercentVat = JsonConverters.toDouble(json['PercentVat']);
LineNumber = json['LineNumber'];
IsTextRow = json['IsTextRow'];
Text = json['Text'];
UnitPrice = JsonConverters.toDouble(json['UnitPrice']);
UnitAbbreviation = json['UnitAbbreviation'];
UnitAbbreviationEnglish = json['UnitAbbreviationEnglish'];
DiscountPercentage = JsonConverters.toDouble(json['DiscountPercentage']);
Quantity = JsonConverters.toDouble(json['Quantity']);
IsWorkCost = json['IsWorkCost'];
IsVatFree = json['IsVatFree'];
CostCenterItemId1 = json['CostCenterItemId1'];
CostCenterItemId2 = json['CostCenterItemId2'];
CostCenterItemId3 = json['CostCenterItemId3'];
UnitId = json['UnitId'];
ProjectId = json['ProjectId'];
WorkCostType = json['WorkCostType'];
WorkHours = JsonConverters.toDouble(json['WorkHours']);
MaterialCosts = JsonConverters.toDouble(json['MaterialCosts']);
GreenTechnologyType = JsonConverters.fromJson(json['GreenTechnologyType'],'GreenTechnologyType',context!);
ContributionMargin = JsonConverters.fromJson(json['ContributionMargin'],'ContributionMargin',context!);
return this;
}
Map<String, dynamic> toJson() => {
'ArticleNumber': ArticleNumber,
'ArticleId': ArticleId,
'IsServiceArticle': IsServiceArticle,
'AmountNoVat': AmountNoVat,
'PercentVat': PercentVat,
'LineNumber': LineNumber,
'IsTextRow': IsTextRow,
'Text': Text,
'UnitPrice': UnitPrice,
'UnitAbbreviation': UnitAbbreviation,
'UnitAbbreviationEnglish': UnitAbbreviationEnglish,
'DiscountPercentage': DiscountPercentage,
'Quantity': Quantity,
'IsWorkCost': IsWorkCost,
'IsVatFree': IsVatFree,
'CostCenterItemId1': CostCenterItemId1,
'CostCenterItemId2': CostCenterItemId2,
'CostCenterItemId3': CostCenterItemId3,
'UnitId': UnitId,
'ProjectId': ProjectId,
'WorkCostType': WorkCostType,
'WorkHours': WorkHours,
'MaterialCosts': MaterialCosts,
'GreenTechnologyType': JsonConverters.toJson(GreenTechnologyType,'GreenTechnologyType',context!),
'ContributionMargin': JsonConverters.toJson(ContributionMargin,'ContributionMargin',context!)
};
getTypeName() => "InvoiceDraftLineQueryResponse";
TypeContext? context = _ctx;
}
class Person implements IConvertible
{
String Ssn = "";
int Amount = 0;
Person({this.Ssn,this.Amount});
Person.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Ssn = json['Ssn'];
Amount = json['Amount'];
return this;
}
Map<String, dynamic> toJson() => {
'Ssn': Ssn,
'Amount': Amount
};
getTypeName() => "Person";
TypeContext? context = _ctx;
}
class EAccountingInvoiceAddress implements IConvertible
{
String CorporateIdentityNumber = "";
String InvoiceAddress1 = "";
String InvoiceAddress2 = "";
String InvoiceCity = "";
String InvoicePostalCode = "";
String InvoiceCountryCode = "";
EAccountingInvoiceAddress({this.CorporateIdentityNumber,this.InvoiceAddress1,this.InvoiceAddress2,this.InvoiceCity,this.InvoicePostalCode,this.InvoiceCountryCode});
EAccountingInvoiceAddress.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
CorporateIdentityNumber = json['CorporateIdentityNumber'];
InvoiceAddress1 = json['InvoiceAddress1'];
InvoiceAddress2 = json['InvoiceAddress2'];
InvoiceCity = json['InvoiceCity'];
InvoicePostalCode = json['InvoicePostalCode'];
InvoiceCountryCode = json['InvoiceCountryCode'];
return this;
}
Map<String, dynamic> toJson() => {
'CorporateIdentityNumber': CorporateIdentityNumber,
'InvoiceAddress1': InvoiceAddress1,
'InvoiceAddress2': InvoiceAddress2,
'InvoiceCity': InvoiceCity,
'InvoicePostalCode': InvoicePostalCode,
'InvoiceCountryCode': InvoiceCountryCode
};
getTypeName() => "EAccountingInvoiceAddress";
TypeContext? context = _ctx;
}
class NoteQueryResponse implements IConvertible
{
String Id = "";
String Text = "";
DateTime CreatedUtc = DateTime(0);
DateTime ModifiedUtc = DateTime(0);
NoteQueryResponse({this.Id,this.Text,this.CreatedUtc,this.ModifiedUtc});
NoteQueryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Id = json['Id'];
Text = json['Text'];
CreatedUtc = JsonConverters.fromJson(json['CreatedUtc'],'DateTime',context!);
ModifiedUtc = JsonConverters.fromJson(json['ModifiedUtc'],'DateTime',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Id': Id,
'Text': Text,
'CreatedUtc': JsonConverters.toJson(CreatedUtc,'DateTime',context!),
'ModifiedUtc': JsonConverters.toJson(ModifiedUtc,'DateTime',context!)
};
getTypeName() => "NoteQueryResponse";
TypeContext? context = _ctx;
}
class InvoiceDraftQueryResponse implements IConvertible
{
String InvoiceId = "";
DateTime? CreatedDate;
double? TotalAmount;
double? TotalVatAmount;
String CustomerId = "";
List<InvoiceDraftLineQueryResponse> Rows = [];
String InvoiceDate = "";
String DueDate = "";
DateTime? DeliveryDate;
List<Person> Persons = [];
String InvoiceCustomerName = "";
EAccountingInvoiceAddress InvoiceAddress;
bool CustomerIsPrivatePerson;
String CustomerNumber = "";
List<NoteQueryResponse> Notes = [];
List<String> NoteIds = [];
DateTime CreatedUtc = DateTime(0);
bool IncludesVat;
String PriceSign = "";
String? BookingId;
InvoiceDraftQueryResponse({this.InvoiceId,this.CreatedDate,this.TotalAmount,this.TotalVatAmount,this.CustomerId,this.Rows,this.InvoiceDate,this.DueDate,this.DeliveryDate,this.Persons,this.InvoiceCustomerName,this.InvoiceAddress,this.CustomerIsPrivatePerson,this.CustomerNumber,this.Notes,this.NoteIds,this.CreatedUtc,this.IncludesVat,this.PriceSign,this.BookingId});
InvoiceDraftQueryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
InvoiceId = json['InvoiceId'];
CreatedDate = JsonConverters.fromJson(json['CreatedDate'],'DateTime',context!);
TotalAmount = JsonConverters.toDouble(json['TotalAmount']);
TotalVatAmount = JsonConverters.toDouble(json['TotalVatAmount']);
CustomerId = json['CustomerId'];
Rows = JsonConverters.fromJson(json['Rows'],'List<InvoiceDraftLineQueryResponse>',context!);
InvoiceDate = json['InvoiceDate'];
DueDate = json['DueDate'];
DeliveryDate = JsonConverters.fromJson(json['DeliveryDate'],'DateTime',context!);
Persons = JsonConverters.fromJson(json['Persons'],'List<Person>',context!);
InvoiceCustomerName = json['InvoiceCustomerName'];
InvoiceAddress = JsonConverters.fromJson(json['InvoiceAddress'],'EAccountingInvoiceAddress',context!);
CustomerIsPrivatePerson = json['CustomerIsPrivatePerson'];
CustomerNumber = json['CustomerNumber'];
Notes = JsonConverters.fromJson(json['Notes'],'List<NoteQueryResponse>',context!);
NoteIds = JsonConverters.fromJson(json['NoteIds'],'List<String>',context!);
CreatedUtc = JsonConverters.fromJson(json['CreatedUtc'],'DateTime',context!);
IncludesVat = json['IncludesVat'];
PriceSign = json['PriceSign'];
BookingId = json['BookingId'];
return this;
}
Map<String, dynamic> toJson() => {
'InvoiceId': InvoiceId,
'CreatedDate': JsonConverters.toJson(CreatedDate,'DateTime',context!),
'TotalAmount': TotalAmount,
'TotalVatAmount': TotalVatAmount,
'CustomerId': CustomerId,
'Rows': JsonConverters.toJson(Rows,'List<InvoiceDraftLineQueryResponse>',context!),
'InvoiceDate': InvoiceDate,
'DueDate': DueDate,
'DeliveryDate': JsonConverters.toJson(DeliveryDate,'DateTime',context!),
'Persons': JsonConverters.toJson(Persons,'List<Person>',context!),
'InvoiceCustomerName': InvoiceCustomerName,
'InvoiceAddress': JsonConverters.toJson(InvoiceAddress,'EAccountingInvoiceAddress',context!),
'CustomerIsPrivatePerson': CustomerIsPrivatePerson,
'CustomerNumber': CustomerNumber,
'Notes': JsonConverters.toJson(Notes,'List<NoteQueryResponse>',context!),
'NoteIds': JsonConverters.toJson(NoteIds,'List<String>',context!),
'CreatedUtc': JsonConverters.toJson(CreatedUtc,'DateTime',context!),
'IncludesVat': IncludesVat,
'PriceSign': PriceSign,
'BookingId': BookingId
};
getTypeName() => "InvoiceDraftQueryResponse";
TypeContext? context = _ctx;
}
class CreateInvoiceDraftQueryResponse implements IConvertible
{
InvoiceDraftQueryResponse Invoice;
String InvoiceUri = "";
ResponseStatus ResponseStatus;
CreateInvoiceDraftQueryResponse({this.Invoice,this.InvoiceUri,this.ResponseStatus});
CreateInvoiceDraftQueryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Invoice = JsonConverters.fromJson(json['Invoice'],'InvoiceDraftQueryResponse',context!);
InvoiceUri = json['InvoiceUri'];
ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Invoice': JsonConverters.toJson(Invoice,'InvoiceDraftQueryResponse',context!),
'InvoiceUri': InvoiceUri,
'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!)
};
getTypeName() => "CreateInvoiceDraftQueryResponse";
TypeContext? context = _ctx;
}
enum RotPropertyTypes
{
Apartment,
Property,
}
enum RotReducedInvoicingTypes
{
Normal,
Rot,
Rut,
}
class CreateInvoiceDraft extends InvoiceAddressResponse implements ICompany, IConvertible
{
/**
* The booking id, to be used to create the customer.
*/
// @ApiMember(Description="The booking id, to be used to create the customer.", IsRequired=true)
int BookingId = 0;
/**
* The Term of payment Id, to be used to create the invoice.
*/
// @ApiMember(Description="The Term of payment Id, to be used to create the invoice.", IsRequired=true)
String TermsOfPaymentId = "";
/**
* Note id's to add to this invoice
*/
// @ApiMember(Description="Note id's to add to this invoice")
List<String>? Notes;
/**
* Invoice Customer name
*/
// @ApiMember(Description="Invoice Customer name")
String InvoiceCustomerName = "";
/**
* 1 = Apartment, 2 = Property Leave blank or set to null if you do not intend to use ROT or Green Technology functionality.
*/
// @ApiMember(Description="1 = Apartment, 2 = Property Leave blank or set to null if you do not intend to use ROT or Green Technology functionality.", IsRequired=true)
RotPropertyTypes RotPropertyType;
/**
* 0 = Normal, 1 = Rot, 2 = Rut = ['0', '1', '2']
*/
// @ApiMember(Description="0 = Normal, 1 = Rot, 2 = Rut = ['0', '1', '2']", IsRequired=true)
RotReducedInvoicingTypes RotReducedInvoicingType;
/**
* The company id, if empty will use the company id for the user you are logged in with.
*/
// @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
String? CompanyId;
CreateInvoiceDraft({this.BookingId,this.TermsOfPaymentId,this.Notes,this.InvoiceCustomerName,this.RotPropertyType,this.RotReducedInvoicingType,this.CompanyId});
CreateInvoiceDraft.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
BookingId = json['BookingId'];
TermsOfPaymentId = json['TermsOfPaymentId'];
Notes = JsonConverters.fromJson(json['Notes'],'List<String>',context!);
InvoiceCustomerName = json['InvoiceCustomerName'];
RotPropertyType = JsonConverters.fromJson(json['RotPropertyType'],'RotPropertyTypes',context!);
RotReducedInvoicingType = JsonConverters.fromJson(json['RotReducedInvoicingType'],'RotReducedInvoicingTypes',context!);
CompanyId = json['CompanyId'];
return this;
}
Map<String, dynamic> toJson() => super.toJson()..addAll({
'BookingId': BookingId,
'TermsOfPaymentId': TermsOfPaymentId,
'Notes': JsonConverters.toJson(Notes,'List<String>',context!),
'InvoiceCustomerName': InvoiceCustomerName,
'RotPropertyType': JsonConverters.toJson(RotPropertyType,'RotPropertyTypes',context!),
'RotReducedInvoicingType': JsonConverters.toJson(RotReducedInvoicingType,'RotReducedInvoicingTypes',context!),
'CompanyId': CompanyId
});
getTypeName() => "CreateInvoiceDraft";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'testapi.bokamera.se', types: <String, TypeInfo> {
'InvoiceAddressResponse': TypeInfo(TypeOf.Class, create:() => InvoiceAddressResponse()),
'GreenTechnologyType': TypeInfo(TypeOf.Enum, enumValues:GreenTechnologyType.values),
'ContributionMargin': TypeInfo(TypeOf.Class, create:() => ContributionMargin()),
'InvoiceDraftLineQueryResponse': TypeInfo(TypeOf.Class, create:() => InvoiceDraftLineQueryResponse()),
'Person': TypeInfo(TypeOf.Class, create:() => Person()),
'EAccountingInvoiceAddress': TypeInfo(TypeOf.Class, create:() => EAccountingInvoiceAddress()),
'NoteQueryResponse': TypeInfo(TypeOf.Class, create:() => NoteQueryResponse()),
'InvoiceDraftQueryResponse': TypeInfo(TypeOf.Class, create:() => InvoiceDraftQueryResponse()),
'List<InvoiceDraftLineQueryResponse>': TypeInfo(TypeOf.Class, create:() => <InvoiceDraftLineQueryResponse>[]),
'List<Person>': TypeInfo(TypeOf.Class, create:() => <Person>[]),
'List<NoteQueryResponse>': TypeInfo(TypeOf.Class, create:() => <NoteQueryResponse>[]),
'CreateInvoiceDraftQueryResponse': TypeInfo(TypeOf.Class, create:() => CreateInvoiceDraftQueryResponse()),
'RotPropertyTypes': TypeInfo(TypeOf.Enum, enumValues:RotPropertyTypes.values),
'RotReducedInvoicingTypes': TypeInfo(TypeOf.Enum, enumValues:RotReducedInvoicingTypes.values),
'CreateInvoiceDraft': TypeInfo(TypeOf.Class, create:() => CreateInvoiceDraft()),
});
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /eaccounting/invoicedraft HTTP/1.1
Host: testapi.bokamera.se
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"BookingId":0,"Notes":["String"],"InvoiceCustomerName":"String","RotPropertyType":"0","RotReducedInvoicingType":"Normal","CompanyId":"00000000-0000-0000-0000-000000000000","UserId":"00000000-0000-0000-0000-000000000000","CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length
{"Invoice":{"CreatedDate":"0001-01-01T00:00:00","TotalAmount":0,"TotalVatAmount":0,"CustomerId":"String","Rows":[{"ArticleNumber":"String","ArticleId":"String","IsServiceArticle":false,"AmountNoVat":0,"PercentVat":0,"LineNumber":0,"IsTextRow":false,"Text":"String","UnitPrice":0,"UnitAbbreviation":"String","UnitAbbreviationEnglish":"String","DiscountPercentage":0,"Quantity":0,"IsWorkCost":false,"IsVatFree":false,"CostCenterItemId1":"String","CostCenterItemId2":"String","CostCenterItemId3":"String","UnitId":"String","ProjectId":"String","WorkCostType":0,"WorkHours":0,"MaterialCosts":0,"GreenTechnologyType":"None","ContributionMargin":{"Amount":0,"Percentage":0}}],"InvoiceDate":"String","DueDate":"String","DeliveryDate":"0001-01-01T00:00:00","Persons":[{"Ssn":"String","Amount":0}],"InvoiceCustomerName":"String","InvoiceAddress":{"CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"CustomerIsPrivatePerson":false,"CustomerNumber":"String","Notes":[{"Id":"String","Text":"String"}],"NoteIds":["String"],"IncludesVat":false,"PriceSign":"String","BookingId":"String"},"InvoiceUri":"String","ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}