codacy review
This commit is contained in:
parent
9e863b9572
commit
e13570f343
@ -1,8 +1,2 @@
|
|||||||
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
||||||
// For license information, please see license.txt
|
// For license information, please see license.txt
|
||||||
|
|
||||||
frappe.ui.form.on('Subscriber', {
|
|
||||||
refresh: function(frm) {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
# For license information, please see license.txt
|
# For license information, please see license.txt
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
|
||||||
class Subscriber(Document):
|
class Subscriber(Document):
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
# See license.txt
|
# See license.txt
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import frappe
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
class TestSubscriber(unittest.TestCase):
|
class TestSubscriber(unittest.TestCase):
|
||||||
|
@ -1,8 +1,2 @@
|
|||||||
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
||||||
// For license information, please see license.txt
|
// For license information, please see license.txt
|
||||||
|
|
||||||
frappe.ui.form.on('Subscription Invoice', {
|
|
||||||
refresh: function(frm) {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
# For license information, please see license.txt
|
# For license information, please see license.txt
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
|
||||||
class SubscriptionInvoice(Document):
|
class SubscriptionInvoice(Document):
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
# See license.txt
|
# See license.txt
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import frappe
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
class TestSubscriptionInvoice(unittest.TestCase):
|
class TestSubscriptionInvoice(unittest.TestCase):
|
||||||
|
@ -1,8 +1,2 @@
|
|||||||
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
||||||
// For license information, please see license.txt
|
// For license information, please see license.txt
|
||||||
|
|
||||||
frappe.ui.form.on('Subscription Plan', {
|
|
||||||
refresh: function(frm) {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
# See license.txt
|
# See license.txt
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import frappe
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
class TestSubscriptionPlan(unittest.TestCase):
|
class TestSubscriptionPlan(unittest.TestCase):
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
# For license information, please see license.txt
|
# For license information, please see license.txt
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
|
||||||
class SubscriptionPlanDetail(Document):
|
class SubscriptionPlanDetail(Document):
|
||||||
|
@ -1,8 +1,2 @@
|
|||||||
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
||||||
// For license information, please see license.txt
|
// For license information, please see license.txt
|
||||||
|
|
||||||
frappe.ui.form.on('Subscription Settings', {
|
|
||||||
refresh: function(frm) {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
# For license information, please see license.txt
|
# For license information, please see license.txt
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
|
||||||
class SubscriptionSettings(Document):
|
class SubscriptionSettings(Document):
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
# See license.txt
|
# See license.txt
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import frappe
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
class TestSubscriptionSettings(unittest.TestCase):
|
class TestSubscriptionSettings(unittest.TestCase):
|
||||||
|
@ -29,9 +29,8 @@ class Subscriptions(Document):
|
|||||||
|
|
||||||
def set_current_invoice_start(self, date=None):
|
def set_current_invoice_start(self, date=None):
|
||||||
"""
|
"""
|
||||||
This sets the date of the beginning of the current billing period.
|
This sets the date of the beginning of the current billing period.
|
||||||
|
If the `date` parameter is not given , it will be automatically set as today's
|
||||||
If the `date` parameter is not given , it will be automatically set as today's
|
|
||||||
date.
|
date.
|
||||||
"""
|
"""
|
||||||
if self.trial_period_start and self.is_trialling():
|
if self.trial_period_start and self.is_trialling():
|
||||||
@ -49,7 +48,7 @@ class Subscriptions(Document):
|
|||||||
trial period.
|
trial period.
|
||||||
|
|
||||||
If is not in a trial period, it will be `x` days from the beginning of the
|
If is not in a trial period, it will be `x` days from the beginning of the
|
||||||
current billing period where `x` is the billing interval from the
|
current billing period where `x` is the billing interval from the
|
||||||
`Subscription Plan` in the `Subscription`.
|
`Subscription Plan` in the `Subscription`.
|
||||||
"""
|
"""
|
||||||
if self.is_trialling():
|
if self.is_trialling():
|
||||||
@ -63,7 +62,7 @@ class Subscriptions(Document):
|
|||||||
|
|
||||||
def get_billing_cycle(self):
|
def get_billing_cycle(self):
|
||||||
"""
|
"""
|
||||||
Returns a dict containing billing cycle information deduced from the
|
Returns a dict containing billing cycle information deduced from the
|
||||||
`Subscription Plan` in the `Subscription`.
|
`Subscription Plan` in the `Subscription`.
|
||||||
"""
|
"""
|
||||||
return self.get_billing_cycle_data()
|
return self.get_billing_cycle_data()
|
||||||
@ -125,7 +124,7 @@ class Subscriptions(Document):
|
|||||||
"""
|
"""
|
||||||
Sets the `Subscription` `status` based on the preference set in `Subscription Settings`.
|
Sets the `Subscription` `status` based on the preference set in `Subscription Settings`.
|
||||||
|
|
||||||
Used when the `Subscription` needs to decide what to do after the current generated
|
Used when the `Subscription` needs to decide what to do after the current generated
|
||||||
invoice is past it's due date and grace period.
|
invoice is past it's due date and grace period.
|
||||||
"""
|
"""
|
||||||
subscription_settings = frappe.get_single('Subscription Settings')
|
subscription_settings = frappe.get_single('Subscription Settings')
|
||||||
@ -262,7 +261,7 @@ class Subscriptions(Document):
|
|||||||
|
|
||||||
# Due date
|
# Due date
|
||||||
invoice.append(
|
invoice.append(
|
||||||
'payment_schedule',
|
'payment_schedule',
|
||||||
{
|
{
|
||||||
'due_date': add_days(self.current_invoice_end, cint(self.days_until_due)),
|
'due_date': add_days(self.current_invoice_end, cint(self.days_until_due)),
|
||||||
'invoice_portion': 100
|
'invoice_portion': 100
|
||||||
@ -276,8 +275,7 @@ class Subscriptions(Document):
|
|||||||
if self.additional_discount_amount:
|
if self.additional_discount_amount:
|
||||||
invoice.additional_discount_amount = self.additional_discount_amount
|
invoice.additional_discount_amount = self.additional_discount_amount
|
||||||
|
|
||||||
if (self.additional_discount_percentage or self.additional_discount_amount) \
|
if not self.apply_additional_discount and (self.additional_discount_percentage or self.additional_discount_amount):
|
||||||
and not self.apply_additional_discount:
|
|
||||||
self.apply_additional_discount = 'Grand Total'
|
self.apply_additional_discount = 'Grand Total'
|
||||||
|
|
||||||
invoice.save()
|
invoice.save()
|
||||||
@ -331,7 +329,7 @@ class Subscriptions(Document):
|
|||||||
|
|
||||||
def process_for_active(self):
|
def process_for_active(self):
|
||||||
"""
|
"""
|
||||||
Called by `process` if the status of the `Subscription` is 'Active'.
|
Called by `process` if the status of the `Subscription` is 'Active'.
|
||||||
|
|
||||||
The possible outcomes of this method are:
|
The possible outcomes of this method are:
|
||||||
1. Generate a new invoice
|
1. Generate a new invoice
|
||||||
@ -359,8 +357,8 @@ class Subscriptions(Document):
|
|||||||
|
|
||||||
def process_for_past_due_date(self):
|
def process_for_past_due_date(self):
|
||||||
"""
|
"""
|
||||||
Called by `process` if the status of the `Subscription` is 'Past Due Date'.
|
Called by `process` if the status of the `Subscription` is 'Past Due Date'.
|
||||||
|
|
||||||
The possible outcomes of this method are:
|
The possible outcomes of this method are:
|
||||||
1. Change the `Subscription` status to 'Active'
|
1. Change the `Subscription` status to 'Active'
|
||||||
2. Change the `Subscription` status to 'Canceled'
|
2. Change the `Subscription` status to 'Canceled'
|
||||||
|
@ -10,45 +10,48 @@ from erpnext.accounts.doctype.subscriptions.subscriptions import get_prorata_fac
|
|||||||
from frappe.utils.data import nowdate, add_days, add_to_date, add_months, date_diff
|
from frappe.utils.data import nowdate, add_days, add_to_date, add_months, date_diff
|
||||||
|
|
||||||
|
|
||||||
|
def create_plan():
|
||||||
|
if not frappe.db.exists('Subscription Plan', '_Test Plan Name'):
|
||||||
|
plan = frappe.new_doc('Subscription Plan')
|
||||||
|
plan.plan_name = '_Test Plan Name'
|
||||||
|
plan.item = '_Test Non Stock Item'
|
||||||
|
plan.cost = 900
|
||||||
|
plan.billing_interval = 'Month'
|
||||||
|
plan.billing_interval_count = 1
|
||||||
|
plan.insert()
|
||||||
|
|
||||||
|
if not frappe.db.exists('Subscription Plan', '_Test Plan Name 2'):
|
||||||
|
plan = frappe.new_doc('Subscription Plan')
|
||||||
|
plan.plan_name = '_Test Plan Name 2'
|
||||||
|
plan.item = '_Test Non Stock Item'
|
||||||
|
plan.cost = 1999
|
||||||
|
plan.billing_interval = 'Month'
|
||||||
|
plan.billing_interval_count = 1
|
||||||
|
plan.insert()
|
||||||
|
|
||||||
|
if not frappe.db.exists('Subscription Plan', '_Test Plan Name 3'):
|
||||||
|
plan = frappe.new_doc('Subscription Plan')
|
||||||
|
plan.plan_name = '_Test Plan Name 3'
|
||||||
|
plan.item = '_Test Non Stock Item'
|
||||||
|
plan.cost = 1999
|
||||||
|
plan.billing_interval = 'Day'
|
||||||
|
plan.billing_interval_count = 14
|
||||||
|
plan.insert()
|
||||||
|
|
||||||
|
|
||||||
|
def create_subscriber():
|
||||||
|
if not frappe.db.exists('Subscriber', '_Test Customer'):
|
||||||
|
subscriber = frappe.new_doc('Subscriber')
|
||||||
|
subscriber.subscriber_name = '_Test Customer'
|
||||||
|
subscriber.customer = '_Test Customer'
|
||||||
|
subscriber.insert()
|
||||||
|
|
||||||
|
|
||||||
class TestSubscriptions(unittest.TestCase):
|
class TestSubscriptions(unittest.TestCase):
|
||||||
def create_plan(self):
|
|
||||||
if not frappe.db.exists('Subscription Plan', '_Test Plan Name'):
|
|
||||||
plan = frappe.new_doc('Subscription Plan')
|
|
||||||
plan.plan_name = '_Test Plan Name'
|
|
||||||
plan.item = '_Test Non Stock Item'
|
|
||||||
plan.cost = 900
|
|
||||||
plan.billing_interval = 'Month'
|
|
||||||
plan.billing_interval_count = 1
|
|
||||||
plan.insert()
|
|
||||||
|
|
||||||
if not frappe.db.exists('Subscription Plan', '_Test Plan Name 2'):
|
|
||||||
plan = frappe.new_doc('Subscription Plan')
|
|
||||||
plan.plan_name = '_Test Plan Name 2'
|
|
||||||
plan.item = '_Test Non Stock Item'
|
|
||||||
plan.cost = 1999
|
|
||||||
plan.billing_interval = 'Month'
|
|
||||||
plan.billing_interval_count = 1
|
|
||||||
plan.insert()
|
|
||||||
|
|
||||||
if not frappe.db.exists('Subscription Plan', '_Test Plan Name 3'):
|
|
||||||
plan = frappe.new_doc('Subscription Plan')
|
|
||||||
plan.plan_name = '_Test Plan Name 3'
|
|
||||||
plan.item = '_Test Non Stock Item'
|
|
||||||
plan.cost = 1999
|
|
||||||
plan.billing_interval = 'Day'
|
|
||||||
plan.billing_interval_count = 14
|
|
||||||
plan.insert()
|
|
||||||
|
|
||||||
def create_subscriber(self):
|
|
||||||
if not frappe.db.exists('Subscriber', '_Test Customer'):
|
|
||||||
subscriber = frappe.new_doc('Subscriber')
|
|
||||||
subscriber.subscriber_name = '_Test Customer'
|
|
||||||
subscriber.customer = '_Test Customer'
|
|
||||||
subscriber.insert()
|
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_plan()
|
create_plan()
|
||||||
self.create_subscriber()
|
create_subscriber()
|
||||||
|
|
||||||
def test_create_subscription_with_trial_with_correct_period(self):
|
def test_create_subscription_with_trial_with_correct_period(self):
|
||||||
subscription = frappe.new_doc('Subscriptions')
|
subscription = frappe.new_doc('Subscriptions')
|
||||||
@ -161,7 +164,7 @@ class TestSubscriptions(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertEqual(subscription.status, 'Past Due Date')
|
self.assertEqual(subscription.status, 'Past Due Date')
|
||||||
|
|
||||||
subscription.process()
|
subscription.process()
|
||||||
# This should change status to Canceled since grace period is 0
|
# This should change status to Canceled since grace period is 0
|
||||||
self.assertEqual(subscription.status, 'Canceled')
|
self.assertEqual(subscription.status, 'Canceled')
|
||||||
|
|
||||||
@ -245,7 +248,7 @@ class TestSubscriptions(unittest.TestCase):
|
|||||||
self.assertEqual(subscription.current_invoice_start, nowdate())
|
self.assertEqual(subscription.current_invoice_start, nowdate())
|
||||||
self.assertEqual(subscription.current_invoice_end, add_to_date(nowdate(), months=1, days=-1))
|
self.assertEqual(subscription.current_invoice_end, add_to_date(nowdate(), months=1, days=-1))
|
||||||
self.assertEqual(len(subscription.invoices), 0)
|
self.assertEqual(len(subscription.invoices), 0)
|
||||||
|
|
||||||
subscription.process() # no changes expected still
|
subscription.process() # no changes expected still
|
||||||
self.assertEqual(subscription.status, 'Active')
|
self.assertEqual(subscription.status, 'Active')
|
||||||
self.assertEqual(subscription.current_invoice_start, nowdate())
|
self.assertEqual(subscription.current_invoice_start, nowdate())
|
||||||
@ -358,7 +361,7 @@ class TestSubscriptions(unittest.TestCase):
|
|||||||
self.assertEqual(subscription.status, 'Past Due Date')
|
self.assertEqual(subscription.status, 'Past Due Date')
|
||||||
self.assertEqual(len(subscription.invoices), invoices)
|
self.assertEqual(len(subscription.invoices), invoices)
|
||||||
|
|
||||||
subscription.cancel_subscription()
|
subscription.cancel_subscription()
|
||||||
self.assertEqual(subscription.status, 'Canceled')
|
self.assertEqual(subscription.status, 'Canceled')
|
||||||
self.assertEqual(len(subscription.invoices), invoices)
|
self.assertEqual(len(subscription.invoices), invoices)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user