syntax = "proto3";
package invoice;
option go_package = "code.hackerspace.pl/hscloud/bgpwtf/invoice/proto";

import "bgpwtf/invoice/proto/invoice.proto";

// Subscription is the subscription to a service for which we want to generate
// monthly (at least for now) invoices.
message Subscription {
    // Template is the data that will be used to emit the invoice. It will be
    // used verbatim in a CreateInvoice request, apart from the following
    // changes:
    // - if 'date' is not set, the current date will be substituted instead
    // - for every item in the invoice, any %Y and %M value in its title will
    //   be replaced by the year and month of the billing cycle. The billing
    //   cycle is defined in relation to the date in the Cycle enum below..
    InvoiceData template = 1;

    // Cycle defines the billing cycle policy for this subscription.
    enum Cycle {
        CYCLE_INVALID = 0;
        // The subscription is billed for the month that it is invoiced for.
        // Eg., if the invoice has a date of April 1st, April 15th or April
        // 30th, the %M in title will be replaced with 04.
        //
        // This is used for subscriptions that are invoiced a month in advance,
        // with invoices being sent out in the beginning of the month.
        //
        // In the future, the meaning of this enum value might change to 'bill
        // at beginning of month/cycle', but currently we only bill once per
        // month.
        CYCLE_CURRENT = 1;
        // The subscription is billed for the month from when it was invoiced.
        // Eg., if the invoice has a date of April 1st, April 15th or April
        // 30th, the %M in the title will be replaced with 03.
        // This is used for subscriptions that are invoiced right after a month
        // ends.
        // In the future, the meaning of this enum value might change to 'bill
        // at end of month/cycle', but currently we only bill once per month.
        CYCLE_PREV = 2;
    }
    Cycle cycle = 2;
}

// Configuration is a prototext defining subscriptions. Currently it's read
// from a file by //bgpwtf/invoice/recurrent. In The future this might be
// broken up into a database schema.
message Configuration {
    repeated Subscription subscription = 1;
}
