Merge pull request #25394 from meike289/feature/check-field-subscription-invoice
feat: new check field in subscriptions for (not) submitting invoices
This commit is contained in:
		
						commit
						26920b439a
					
				| @ -36,6 +36,7 @@ | ||||
|   "additional_discount_percentage", | ||||
|   "additional_discount_amount", | ||||
|   "sb_3", | ||||
|   "submit_invoice", | ||||
|   "invoices", | ||||
|   "accounting_dimensions_section", | ||||
|   "cost_center", | ||||
| @ -45,9 +46,7 @@ | ||||
|   { | ||||
|    "allow_on_submit": 1, | ||||
|    "fieldname": "cb_1", | ||||
|    "fieldtype": "Column Break", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "fieldtype": "Column Break" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "status", | ||||
| @ -55,97 +54,73 @@ | ||||
|    "label": "Status", | ||||
|    "no_copy": 1, | ||||
|    "options": "\nTrialling\nActive\nPast Due Date\nCancelled\nUnpaid\nCompleted", | ||||
|    "read_only": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "read_only": 1 | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "subscription_period", | ||||
|    "fieldtype": "Section Break", | ||||
|    "label": "Subscription Period", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Subscription Period" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "cancelation_date", | ||||
|    "fieldtype": "Date", | ||||
|    "label": "Cancelation Date", | ||||
|    "read_only": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "read_only": 1 | ||||
|   }, | ||||
|   { | ||||
|    "allow_on_submit": 1, | ||||
|    "fieldname": "trial_period_start", | ||||
|    "fieldtype": "Date", | ||||
|    "label": "Trial Period Start Date", | ||||
|    "set_only_once": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "set_only_once": 1 | ||||
|   }, | ||||
|   { | ||||
|    "depends_on": "eval:doc.trial_period_start", | ||||
|    "fieldname": "trial_period_end", | ||||
|    "fieldtype": "Date", | ||||
|    "label": "Trial Period End Date", | ||||
|    "set_only_once": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "set_only_once": 1 | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "column_break_11", | ||||
|    "fieldtype": "Column Break", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "fieldtype": "Column Break" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "current_invoice_start", | ||||
|    "fieldtype": "Date", | ||||
|    "label": "Current Invoice Start Date", | ||||
|    "read_only": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "read_only": 1 | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "current_invoice_end", | ||||
|    "fieldtype": "Date", | ||||
|    "label": "Current Invoice End Date", | ||||
|    "read_only": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "read_only": 1 | ||||
|   }, | ||||
|   { | ||||
|    "default": "0", | ||||
|    "description": "Number of days that the subscriber has to pay invoices generated by this subscription", | ||||
|    "fieldname": "days_until_due", | ||||
|    "fieldtype": "Int", | ||||
|    "label": "Days Until Due", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Days Until Due" | ||||
|   }, | ||||
|   { | ||||
|    "default": "0", | ||||
|    "fieldname": "cancel_at_period_end", | ||||
|    "fieldtype": "Check", | ||||
|    "label": "Cancel At End Of Period", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Cancel At End Of Period" | ||||
|   }, | ||||
|   { | ||||
|    "default": "0", | ||||
|    "fieldname": "generate_invoice_at_period_start", | ||||
|    "fieldtype": "Check", | ||||
|    "label": "Generate Invoice At Beginning Of Period", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Generate Invoice At Beginning Of Period" | ||||
|   }, | ||||
|   { | ||||
|    "allow_on_submit": 1, | ||||
|    "fieldname": "sb_4", | ||||
|    "fieldtype": "Section Break", | ||||
|    "label": "Plans", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Plans" | ||||
|   }, | ||||
|   { | ||||
|    "allow_on_submit": 1, | ||||
| @ -153,84 +128,62 @@ | ||||
|    "fieldtype": "Table", | ||||
|    "label": "Plans", | ||||
|    "options": "Subscription Plan Detail", | ||||
|    "reqd": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "reqd": 1 | ||||
|   }, | ||||
|   { | ||||
|    "depends_on": "eval:['Customer', 'Supplier'].includes(doc.party_type)", | ||||
|    "fieldname": "sb_1", | ||||
|    "fieldtype": "Section Break", | ||||
|    "label": "Taxes", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Taxes" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "sb_2", | ||||
|    "fieldtype": "Section Break", | ||||
|    "label": "Discounts", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Discounts" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "apply_additional_discount", | ||||
|    "fieldtype": "Select", | ||||
|    "label": "Apply Additional Discount On", | ||||
|    "options": "\nGrand Total\nNet Total", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "options": "\nGrand Total\nNet Total" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "cb_2", | ||||
|    "fieldtype": "Column Break", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "fieldtype": "Column Break" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "additional_discount_percentage", | ||||
|    "fieldtype": "Percent", | ||||
|    "label": "Additional DIscount Percentage", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Additional DIscount Percentage" | ||||
|   }, | ||||
|   { | ||||
|    "collapsible": 1, | ||||
|    "fieldname": "additional_discount_amount", | ||||
|    "fieldtype": "Currency", | ||||
|    "label": "Additional DIscount Amount", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Additional DIscount Amount" | ||||
|   }, | ||||
|   { | ||||
|    "depends_on": "eval:doc.invoices", | ||||
|    "fieldname": "sb_3", | ||||
|    "fieldtype": "Section Break", | ||||
|    "label": "Invoices", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Invoices" | ||||
|   }, | ||||
|   { | ||||
|    "collapsible": 1, | ||||
|    "fieldname": "invoices", | ||||
|    "fieldtype": "Table", | ||||
|    "label": "Invoices", | ||||
|    "options": "Subscription Invoice", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "options": "Subscription Invoice" | ||||
|   }, | ||||
|   { | ||||
|    "collapsible": 1, | ||||
|    "fieldname": "accounting_dimensions_section", | ||||
|    "fieldtype": "Section Break", | ||||
|    "label": "Accounting Dimensions", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Accounting Dimensions" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "dimension_col_break", | ||||
|    "fieldtype": "Column Break", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "fieldtype": "Column Break" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "party_type", | ||||
| @ -238,9 +191,7 @@ | ||||
|    "label": "Party Type", | ||||
|    "options": "DocType", | ||||
|    "reqd": 1, | ||||
|    "set_only_once": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "set_only_once": 1 | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "party", | ||||
| @ -249,27 +200,21 @@ | ||||
|    "label": "Party", | ||||
|    "options": "party_type", | ||||
|    "reqd": 1, | ||||
|    "set_only_once": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "set_only_once": 1 | ||||
|   }, | ||||
|   { | ||||
|    "depends_on": "eval:doc.party_type === 'Customer'", | ||||
|    "fieldname": "sales_tax_template", | ||||
|    "fieldtype": "Link", | ||||
|    "label": "Sales Taxes and Charges Template", | ||||
|    "options": "Sales Taxes and Charges Template", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "options": "Sales Taxes and Charges Template" | ||||
|   }, | ||||
|   { | ||||
|    "depends_on": "eval:doc.party_type === 'Supplier'", | ||||
|    "fieldname": "purchase_tax_template", | ||||
|    "fieldtype": "Link", | ||||
|    "label": "Purchase Taxes and Charges Template", | ||||
|    "options": "Purchase Taxes and Charges Template", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "options": "Purchase Taxes and Charges Template" | ||||
|   }, | ||||
|   { | ||||
|    "default": "0", | ||||
| @ -277,55 +222,49 @@ | ||||
|    "fieldname": "follow_calendar_months", | ||||
|    "fieldtype": "Check", | ||||
|    "label": "Follow Calendar Months", | ||||
|    "set_only_once": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "set_only_once": 1 | ||||
|   }, | ||||
|   { | ||||
|    "default": "0", | ||||
|    "description": "New invoices will be generated as per schedule even if current invoices are unpaid or past due date", | ||||
|    "fieldname": "generate_new_invoices_past_due_date", | ||||
|    "fieldtype": "Check", | ||||
|    "label": "Generate New Invoices Past Due Date", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "label": "Generate New Invoices Past Due Date" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "end_date", | ||||
|    "fieldtype": "Date", | ||||
|    "label": "Subscription End Date", | ||||
|    "set_only_once": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "set_only_once": 1 | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "start_date", | ||||
|    "fieldtype": "Date", | ||||
|    "label": "Subscription Start Date", | ||||
|    "set_only_once": 1, | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "set_only_once": 1 | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "cost_center", | ||||
|    "fieldtype": "Link", | ||||
|    "label": "Cost Center", | ||||
|    "options": "Cost Center", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "options": "Cost Center" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "company", | ||||
|    "fieldtype": "Link", | ||||
|    "label": "Company", | ||||
|    "options": "Company", | ||||
|    "show_days": 1, | ||||
|    "show_seconds": 1 | ||||
|    "options": "Company" | ||||
|   }, | ||||
|   { | ||||
|    "default": "1", | ||||
|    "fieldname": "submit_invoice", | ||||
|    "fieldtype": "Check", | ||||
|    "label": "Submit Invoice Automatically" | ||||
|   } | ||||
|  ], | ||||
|  "index_web_pages_for_search": 1, | ||||
|  "links": [], | ||||
|  "modified": "2021-02-09 15:44:20.024789", | ||||
|  "modified": "2021-04-19 15:24:27.550797", | ||||
|  "modified_by": "Administrator", | ||||
|  "module": "Accounts", | ||||
|  "name": "Subscription", | ||||
|  | ||||
| @ -276,7 +276,7 @@ class Subscription(Document): | ||||
| 				frappe.throw(_('Subscription End Date is mandatory to follow calendar months')) | ||||
| 
 | ||||
| 			if billing_info[0]['billing_interval'] != 'Month': | ||||
| 				frappe.throw('Billing Interval in Subscription Plan must be Month to follow calendar months') | ||||
| 				frappe.throw(_('Billing Interval in Subscription Plan must be Month to follow calendar months')) | ||||
| 
 | ||||
| 	def after_insert(self): | ||||
| 		# todo: deal with users who collect prepayments. Maybe a new Subscription Invoice doctype? | ||||
| @ -383,7 +383,9 @@ class Subscription(Document): | ||||
| 
 | ||||
| 		invoice.flags.ignore_mandatory = True | ||||
| 		invoice.save() | ||||
| 		invoice.submit() | ||||
| 
 | ||||
| 		if self.submit_invoice: | ||||
| 			invoice.submit() | ||||
| 
 | ||||
| 		return invoice | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user