66from enum import Enum
77
88import frappe
9+ from erpnext .accounts .doctype .sales_invoice .sales_invoice import SalesInvoice
10+ from erpnext .accounts .party import get_party_details
911from frappe import _
1012from frappe .model .document import Document
11-
12- from erpnext .accounts .doctype .sales_invoice .sales_invoice import SalesInvoice
13+ from frappe .utils import today
1314
1415
1516class Frequency (Enum ):
@@ -47,6 +48,7 @@ def create_invoice(self, from_date: date, to_date: date) -> SalesInvoice:
4748 invoice = frappe .new_doc ("Sales Invoice" )
4849 invoice .company = self .company
4950 invoice .customer = self .customer
51+ invoice .selling_price_list = self .get_price_list ()
5052 for row in self .items :
5153 invoice .append (
5254 "items" ,
@@ -62,6 +64,28 @@ def create_invoice(self, from_date: date, to_date: date) -> SalesInvoice:
6264 invoice .set_missing_values ()
6365 return invoice .insert ()
6466
67+ def get_price_list (self ) -> str | None :
68+ currency = self .currency or frappe .get_cached_value ("Company" , self .company , "default_currency" )
69+
70+ party_details = get_party_details (
71+ party = self .customer ,
72+ account = None ,
73+ party_type = "Customer" ,
74+ company = self .company ,
75+ posting_date = today (),
76+ currency = currency ,
77+ doctype = "Sales Invoice" ,
78+ fetch_payment_terms_template = False ,
79+ )
80+
81+ price_list = (
82+ party_details .selling_price_list
83+ or frappe .db .get_single_value ("Selling Settings" , "selling_price_list" )
84+ or frappe .db .get_value ("Price List" , {"selling" : 1 , "currency" : currency , "enabled" : 1 })
85+ )
86+
87+ return price_list or None
88+
6589
6690@frappe .whitelist ()
6791def create_current_invoice (subscription_name : str , silent = False ):
0 commit comments