Skip to main content

killbill xml builder

Project description

killbill-xml-builder

Installation

pip install killbill-xml-builder

Usage

Import the required classes and create the catalog

from killbill_xml_builder.enums import (
    PhaseType,
    TimeUnit,
    BillingPeriod,
    BillingMode,
    ProductCategory,
    BillingPolicy,
    EntitlementPolicy,
)

from killbill_xml_builder import (
    Currencies,
    Product,
    Phase,
    Price,
    Duration,
    FixedPrice,
    RecurringPrice,
    Plan,
    Catalog,
    Rules,
    ChangePolicyCase,
    CancelPolicyCase,
)

Create currencies

currencies = Currencies(["USD", "GBP"])

Create add-on

oil_slick = Product("OilSlick", ProductCategory.ADD_ON)

remote_control = Product("RemoteControl", ProductCategory.ADD_ON)

Create products

standard = Product("Standard")

sports = Product("Sports", available=[oil_slick, remote_control])

super = Product("Super", included=[oil_slick], available=[remote_control])

Create products phases

Phase trial

phase_trial = Phase(
    type=PhaseType.TRIAL,
    duration=Duration(length=30, time_unit=TimeUnit.DAYS),
    fixed_price=FixedPrice(),
)

Phase standard evergreen

standard_evergreen = Phase(
    type=PhaseType.EVERGREEN,
    duration=Duration(time_unit=TimeUnit.UNLIMITED),
    recurring_price=RecurringPrice(
        prices=[Price("GBP", 75.00), Price("USD", 100.00)],
        billing_period=BillingPeriod.MONTHLY,
    ),
)

Phase sports evergreen

sports_evergreen = Phase(
    type=PhaseType.EVERGREEN,
    duration=Duration(time_unit=TimeUnit.UNLIMITED),
    recurring_price=RecurringPrice(
        prices=[Price("GBP", 375.00), Price("USD", 500.00)],
        billing_period=BillingPeriod.MONTHLY,
    ),
)

Phase super evergreen

super_evergreen = Phase(
    type=PhaseType.EVERGREEN,
    duration=Duration(time_unit=TimeUnit.UNLIMITED),
    recurring_price=RecurringPrice(
        prices=[Price("GBP", 750.00), Price("USD", 1000.00)],
        billing_period=BillingPeriod.MONTHLY,
    ),
)

Phase ADD-ON

add_on_evergreen = Phase(
    type=PhaseType.EVERGREEN,
    duration=Duration(time_unit=TimeUnit.UNLIMITED),
    recurring_price=RecurringPrice(
        prices=[Price("GBP", 15.00), Price("USD", 20.00)],
        billing_period=BillingPeriod.MONTHLY,
    ),
)

Create rules (change and cancel rules are required)

default_change_policy = ChangePolicyCase(policy=BillingPolicy.END_OF_TERM)

default_cancel_policy = CancelPolicyCase(policy=EntitlementPolicy.END_OF_TERM)

rules = Rules(
    change_policy_cases=[default_change_policy],
    cancel_policy_cases=[default_cancel_policy],
)

Create plans

oil_slick_monthly = Plan(
    name="oil-slick-monthly",
    product=oil_slick,
    initial_phases=[],
    final_phase=add_on_evergreen,
)

remote_control_monthly = Plan(
    name="remote-control-monthly",
    product=remote_control,
    initial_phases=[],
    final_phase=add_on_evergreen,
)


standard_monthly = Plan(
    name="standard-monthly",
    product=standard,
    initial_phases=[phase_trial],
    final_phase=standard_evergreen,
)


sports_monthly = Plan(
    name="sports-monthly",
    product=sports,
    initial_phases=[phase_trial],
    final_phase=sports_evergreen,
)


super_monthly = Plan(
    name="super-monthly",
    product=super,
    initial_phases=[phase_trial],
    final_phase=super_evergreen,
)

Create catalog

catalog = Catalog(
    name="SpyCarBasic",
    billing_mode=BillingMode.IN_ADVANCE,
    currencies=currencies,
    products=[standard, sports, super, oil_slick, remote_control],
    rules=rules,
    plans=[
        standard_monthly,
        sports_monthly,
        super_monthly,
        oil_slick_monthly,
        remote_control_monthly,
    ],
)

Get xml content

print(catalog)

Save catalog as file

catalog.write()

TODO

Plans

  • Usage

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

killbill_xml_builder-0.1.0.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

killbill_xml_builder-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file killbill_xml_builder-0.1.0.tar.gz.

File metadata

  • Download URL: killbill_xml_builder-0.1.0.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for killbill_xml_builder-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9e925a79ffd36b9189d9e626306fbe0a3e7715cc349855d74cd5eff62e0e8b88
MD5 d666298cc954bc4a9f01a60735685458
BLAKE2b-256 c55425c69e6c8c23ca5c0063a7428b0d2a4dbace015c599cbfdbacc2a3a2dcc6

See more details on using hashes here.

File details

Details for the file killbill_xml_builder-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for killbill_xml_builder-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 be089c6a8f01511af92701bf2b54bda444fc197eb7cbbafb8124319122994b7e
MD5 b20e535e6b6c665fbfcce227e64e6f7d
BLAKE2b-256 1da617e1d48ce5430ec13ab2cc87dff9cebece72a42b1308974d042846c8bc26

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page