fix: Multiple subscription fixes (#39005)
fix: Multiple subscription fixes (#39005) (cherry picked from commit 3b4b2275de7a49ba48b09f7229bee45f1e890ac9) Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
This commit is contained in:
parent
2e919344df
commit
5158884dc9
@ -148,13 +148,13 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "additional_discount_percentage",
|
"fieldname": "additional_discount_percentage",
|
||||||
"fieldtype": "Percent",
|
"fieldtype": "Percent",
|
||||||
"label": "Additional DIscount Percentage"
|
"label": "Additional Discount Percentage"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"collapsible": 1,
|
"collapsible": 1,
|
||||||
"fieldname": "additional_discount_amount",
|
"fieldname": "additional_discount_amount",
|
||||||
"fieldtype": "Currency",
|
"fieldtype": "Currency",
|
||||||
"label": "Additional DIscount Amount"
|
"label": "Additional Discount Amount"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"collapsible": 1,
|
"collapsible": 1,
|
||||||
@ -267,7 +267,7 @@
|
|||||||
"link_fieldname": "subscription"
|
"link_fieldname": "subscription"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"modified": "2023-09-18 17:48:21.900252",
|
"modified": "2023-12-28 17:20:42.687789",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Subscription",
|
"name": "Subscription",
|
||||||
|
@ -356,18 +356,20 @@ class Subscription(Document):
|
|||||||
self,
|
self,
|
||||||
from_date: Optional[Union[str, datetime.date]] = None,
|
from_date: Optional[Union[str, datetime.date]] = None,
|
||||||
to_date: Optional[Union[str, datetime.date]] = None,
|
to_date: Optional[Union[str, datetime.date]] = None,
|
||||||
|
posting_date: Optional[Union[str, datetime.date]] = None,
|
||||||
) -> Document:
|
) -> Document:
|
||||||
"""
|
"""
|
||||||
Creates a `Invoice` for the `Subscription`, updates `self.invoices` and
|
Creates a `Invoice` for the `Subscription`, updates `self.invoices` and
|
||||||
saves the `Subscription`.
|
saves the `Subscription`.
|
||||||
Backwards compatibility
|
Backwards compatibility
|
||||||
"""
|
"""
|
||||||
return self.create_invoice(from_date=from_date, to_date=to_date)
|
return self.create_invoice(from_date=from_date, to_date=to_date, posting_date=posting_date)
|
||||||
|
|
||||||
def create_invoice(
|
def create_invoice(
|
||||||
self,
|
self,
|
||||||
from_date: Optional[Union[str, datetime.date]] = None,
|
from_date: Optional[Union[str, datetime.date]] = None,
|
||||||
to_date: Optional[Union[str, datetime.date]] = None,
|
to_date: Optional[Union[str, datetime.date]] = None,
|
||||||
|
posting_date: Optional[Union[str, datetime.date]] = None,
|
||||||
) -> Document:
|
) -> Document:
|
||||||
"""
|
"""
|
||||||
Creates a `Invoice`, submits it and returns it
|
Creates a `Invoice`, submits it and returns it
|
||||||
@ -385,11 +387,13 @@ class Subscription(Document):
|
|||||||
invoice = frappe.new_doc(self.invoice_document_type)
|
invoice = frappe.new_doc(self.invoice_document_type)
|
||||||
invoice.company = company
|
invoice.company = company
|
||||||
invoice.set_posting_time = 1
|
invoice.set_posting_time = 1
|
||||||
invoice.posting_date = (
|
|
||||||
self.current_invoice_start
|
if self.generate_invoice_at == "Beginning of the current subscription period":
|
||||||
if self.generate_invoice_at == "Beginning of the current subscription period"
|
invoice.posting_date = self.current_invoice_start
|
||||||
else self.current_invoice_end
|
elif self.generate_invoice_at == "Days before the current subscription period":
|
||||||
)
|
invoice.posting_date = posting_date or self.current_invoice_start
|
||||||
|
else:
|
||||||
|
invoice.posting_date = self.current_invoice_end
|
||||||
|
|
||||||
invoice.cost_center = self.cost_center
|
invoice.cost_center = self.cost_center
|
||||||
|
|
||||||
@ -413,6 +417,7 @@ class Subscription(Document):
|
|||||||
# Subscription is better suited for service items. I won't update `update_stock`
|
# Subscription is better suited for service items. I won't update `update_stock`
|
||||||
# for that reason
|
# for that reason
|
||||||
items_list = self.get_items_from_plans(self.plans, is_prorate())
|
items_list = self.get_items_from_plans(self.plans, is_prorate())
|
||||||
|
|
||||||
for item in items_list:
|
for item in items_list:
|
||||||
item["cost_center"] = self.cost_center
|
item["cost_center"] = self.cost_center
|
||||||
invoice.append("items", item)
|
invoice.append("items", item)
|
||||||
@ -556,7 +561,7 @@ class Subscription(Document):
|
|||||||
if not self.is_current_invoice_generated(
|
if not self.is_current_invoice_generated(
|
||||||
self.current_invoice_start, self.current_invoice_end
|
self.current_invoice_start, self.current_invoice_end
|
||||||
) and self.can_generate_new_invoice(posting_date):
|
) and self.can_generate_new_invoice(posting_date):
|
||||||
self.generate_invoice()
|
self.generate_invoice(posting_date=posting_date)
|
||||||
self.update_subscription_period(add_days(self.current_invoice_end, 1))
|
self.update_subscription_period(add_days(self.current_invoice_end, 1))
|
||||||
|
|
||||||
if self.cancel_at_period_end and (
|
if self.cancel_at_period_end and (
|
||||||
|
@ -225,6 +225,11 @@ class AccountsController(TransactionBase):
|
|||||||
apply_pricing_rule_on_transaction(self)
|
apply_pricing_rule_on_transaction(self)
|
||||||
|
|
||||||
self.set_total_in_words()
|
self.set_total_in_words()
|
||||||
|
self.set_default_letter_head()
|
||||||
|
|
||||||
|
def set_default_letter_head(self):
|
||||||
|
if hasattr(self, "letter_head") and not self.letter_head:
|
||||||
|
self.letter_head = frappe.db.get_value("Company", self.company, "default_letter_head")
|
||||||
|
|
||||||
def init_internal_values(self):
|
def init_internal_values(self):
|
||||||
# init all the internal values as 0 on sa
|
# init all the internal values as 0 on sa
|
||||||
|
Loading…
x
Reference in New Issue
Block a user