BokaMera.API.Host

<back to all web services

CreateSummarizedInvoice

Requires Authentication
The following routes are available for this service:
POST/eaccounting/summarizedinvoiceCreate summarized invoices for customer bookings in a date rangeCreates a single invoice per customer covering all their bookings in the specified date range. Processing is async via queue.
namespace BokaMera.API.ServiceModel.Dtos

open System
open System.IO
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    [<AllowNullLiteral>]
    type SummarizedInvoiceJobResponse() = 
        member val SummarizedInvoiceId:Guid = new Guid() with get,set
        member val CustomerId:Guid = new Guid() with get,set
        member val CustomerName:String = null with get,set
        member val BookingCount:Int32 = new Int32() with get,set

    [<AllowNullLiteral>]
    type CreateSummarizedInvoiceResponse() = 
        member val TotalCustomersQueued:Int32 = new Int32() with get,set
        member val Jobs:ResizeArray<SummarizedInvoiceJobResponse> = null with get,set
        member val ResponseStatus:ResponseStatus = null with get,set

    type EAccountingInvoiceSendTypes =
        | None = 0
        | AutoInvoiceElectronic = 1
        | AutoInvoicePrint = 2
        | AutoInvoiceB2C = 3

    [<ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)>]
    [<ValidateRequest(Validator="IsAuthenticated")>]
    [<AllowNullLiteral>]
    type CreateSummarizedInvoice() = 
        ///<summary>
        ///The company id, if empty will use the company id for the user you are logged in with.
        ///</summary>
        [<ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")>]
        member val CompanyId:Nullable<Guid> = new Nullable<Guid>() with get,set

        ///<summary>
        ///Start date for the booking range to include.
        ///</summary>
        [<ApiMember(Description="Start date for the booking range to include.", IsRequired=true)>]
        member val DateFrom:DateTime = new DateTime() with get,set

        ///<summary>
        ///End date for the booking range to include.
        ///</summary>
        [<ApiMember(Description="End date for the booking range to include.", IsRequired=true)>]
        member val DateTo:DateTime = new DateTime() with get,set

        ///<summary>
        ///Optional customer id. If null, creates one summarized invoice per customer with eligible bookings.
        ///</summary>
        [<ApiMember(Description="Optional customer id. If null, creates one summarized invoice per customer with eligible bookings.")>]
        member val CustomerId:Nullable<Guid> = new Nullable<Guid>() with get,set

        ///<summary>
        ///Optional service/event id filter. Only include bookings for this service.
        ///</summary>
        [<ApiMember(Description="Optional service/event id filter. Only include bookings for this service.")>]
        member val ServiceId:Nullable<Int32> = new Nullable<Int32>() with get,set

        ///<summary>
        ///Optional list of booking status ids to include. If empty, all statuses are included.
        ///</summary>
        [<ApiMember(Description="Optional list of booking status ids to include. If empty, all statuses are included.")>]
        member val BookingStatusIds:ResizeArray<Int32> = null with get,set

        ///<summary>
        ///The terms of payment id from EAccounting.
        ///</summary>
        [<ApiMember(Description="The terms of payment id from EAccounting.", IsRequired=true)>]
        member val TermsOfPaymentId:String = null with get,set

        ///<summary>
        ///Invoice creation type: 'Draft' or 'Invoice'. Defaults to company's EAccounting DefaultCreateType.
        ///</summary>
        [<ApiMember(Description="Invoice creation type: 'Draft' or 'Invoice'. Defaults to company's EAccounting DefaultCreateType.")>]
        member val CreateType:String = null with get,set

        ///<summary>
        ///Send type for final invoices. 0 = None, 1 = AutoInvoiceElectronic, 2 = AutoInvoicePrint, 3 = AutoInvoiceB2C.
        ///</summary>
        [<ApiMember(Description="Send type for final invoices. 0 = None, 1 = AutoInvoiceElectronic, 2 = AutoInvoicePrint, 3 = AutoInvoiceB2C.")>]
        member val SendType:Nullable<EAccountingInvoiceSendTypes> = new Nullable<EAccountingInvoiceSendTypes>() with get,set

        ///<summary>
        ///Override corporate identity number for invoice address.
        ///</summary>
        [<ApiMember(Description="Override corporate identity number for invoice address.")>]
        member val CorporateIdentityNumber:String = null with get,set

        ///<summary>
        ///Override invoice address line 1.
        ///</summary>
        [<ApiMember(Description="Override invoice address line 1.")>]
        member val InvoiceAddress1:String = null with get,set

        ///<summary>
        ///Override invoice address line 2.
        ///</summary>
        [<ApiMember(Description="Override invoice address line 2.")>]
        member val InvoiceAddress2:String = null with get,set

        ///<summary>
        ///Override invoice city.
        ///</summary>
        [<ApiMember(Description="Override invoice city.")>]
        member val InvoiceCity:String = null with get,set

        ///<summary>
        ///Override invoice postal code.
        ///</summary>
        [<ApiMember(Description="Override invoice postal code.")>]
        member val InvoicePostalCode:String = null with get,set

        ///<summary>
        ///Override invoice country code.
        ///</summary>
        [<ApiMember(Description="Override invoice country code.")>]
        member val InvoiceCountryCode:String = null with get,set

F# CreateSummarizedInvoice DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /eaccounting/summarizedinvoice HTTP/1.1 
Host: api.bokamera.se 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	CompanyId: 00000000-0000-0000-0000-000000000000,
	CustomerId: 00000000-0000-0000-0000-000000000000,
	ServiceId: 0,
	BookingStatusIds: 
	[
		0
	],
	TermsOfPaymentId: String,
	CreateType: String,
	SendType: None,
	CorporateIdentityNumber: String,
	InvoiceAddress1: String,
	InvoiceAddress2: String,
	InvoiceCity: String,
	InvoicePostalCode: String,
	InvoiceCountryCode: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	TotalCustomersQueued: 0,
	Jobs: 
	[
		{
			CustomerName: String,
			BookingCount: 0
		}
	],
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	}
}