Skip to content

Commit

Permalink
First change v15
Browse files Browse the repository at this point in the history
  • Loading branch information
bvisible committed Oct 30, 2023
1 parent 0925cb2 commit 0f8787d
Show file tree
Hide file tree
Showing 35 changed files with 3,043 additions and 301 deletions.
398 changes: 393 additions & 5 deletions erpnext/accounts/doctype/journal_entry/journal_entry.js

Large diffs are not rendered by default.

22 changes: 19 additions & 3 deletions erpnext/accounts/doctype/loyalty_program/loyalty_program.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ def get_loyalty_details(
condition = ""
if company:
condition = " and company=%s " % frappe.db.escape(company)
if not include_expired_entry:
#//// commented
'''if not include_expired_entry:
condition += " and expiry_date>='%s' " % expiry_date
loyalty_point_details = frappe.db.sql(
Expand All @@ -34,7 +35,21 @@ def get_loyalty_details(
),
(customer, loyalty_program, expiry_date),
as_dict=1,
)'''
#////
#//// replacement
loyalty_point_details = frappe.db.sql(
"""select sum(loyalty_points) as loyalty_points,
sum(purchase_amount) as total_spent from `tabLoyalty Point Entry`
where customer=%s and loyalty_program=%s
{condition}
group by customer""".format(
condition=condition
),
(customer, loyalty_program),
as_dict=1,
)
#////

if loyalty_point_details:
return loyalty_point_details[0]
Expand All @@ -52,6 +67,7 @@ def get_loyalty_program_details_with_points(
include_expired_entry=False,
current_transaction_amount=0,
):
current_transaction_amount = 0 #////
lp_details = get_loyalty_program_details(
customer, loyalty_program, company=company, silent=silent
)
Expand All @@ -63,10 +79,10 @@ def get_loyalty_program_details_with_points(
tier_spent_level = sorted(
[d.as_dict() for d in loyalty_program.collection_rules],
key=lambda rule: rule.min_spent,
reverse=True,
reverse=False, #////True,
)
for i, d in enumerate(tier_spent_level):
if i == 0 or (lp_details.total_spent + current_transaction_amount) <= d.min_spent:
if i == 0 or (lp_details.total_spent + current_transaction_amount) >= d.min_spent: #////<= d.min_spent:
lp_details.tier_name = d.tier_name
lp_details.collection_factor = d.collection_factor
else:
Expand Down
13 changes: 12 additions & 1 deletion erpnext/accounts/doctype/payment_entry/payment_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -2086,7 +2086,12 @@ def get_payment_entry(
party_type=None,
payment_type=None,
reference_date=None,
reference_no=None, #////
mode_of_payment=None, #////
paid_to=None, #////
):
if party_amount: #////
party_amount = flt(party_amount) #////
doc = frappe.get_doc(dt, dn)
over_billing_allowance = frappe.db.get_single_value("Accounts Settings", "over_billing_allowance")
if dt in ("Sales Order", "Purchase Order") and flt(doc.per_billed, 2) >= (
Expand Down Expand Up @@ -2132,7 +2137,8 @@ def get_payment_entry(
pe.cost_center = doc.get("cost_center")
pe.posting_date = nowdate()
pe.reference_date = reference_date
pe.mode_of_payment = doc.get("mode_of_payment")
pe.reference_no = reference_no #////
pe.mode_of_payment = mode_of_payment or doc.get("mode_of_payment") #//// added mode_of_payment or
pe.party_type = party_type
pe.party = doc.get(scrub(party_type))
pe.contact_person = doc.get("contact_person")
Expand All @@ -2147,6 +2153,11 @@ def get_payment_entry(
pe.paid_to_account_currency = (
party_account_currency if payment_type == "Pay" else bank.account_currency
)
pe.paid_to = paid_to or pe.paid_to #//// added line
#//// added if
if paid_to:
pe.paid_to_account_balance = None
pe.paid_to_account_currency = None
pe.paid_amount = paid_amount
pe.received_amount = received_amount
pe.letter_head = doc.get("letter_head")
Expand Down
3 changes: 2 additions & 1 deletion erpnext/accounts/doctype/payment_request/payment_request.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ frappe.ui.form.on("Payment Request", "onload", function(frm, dt, dn){
frappe.ui.form.on("Payment Request", "refresh", function(frm) {
if(frm.doc.payment_request_type == 'Inward' && frm.doc.payment_channel !== "Phone" &&
!in_list(["Initiated", "Paid"], frm.doc.status) && !frm.doc.__islocal && frm.doc.docstatus==1){
frm.add_custom_button(__('Resend Payment Email'), function(){
////renamed button from Resend Payment Email
frm.add_custom_button(__('Send by Email'), function(){
frappe.call({
method: "erpnext.accounts.doctype.payment_request.payment_request.resend_payment_email",
args: {"docname": frm.doc.name},
Expand Down
80 changes: 58 additions & 22 deletions erpnext/accounts/doctype/payment_request/payment_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,11 @@ def on_submit(self):

send_mail = self.payment_gateway_validation() if self.payment_gateway else None
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
if ref_doc.woocommerce_id: #////
send_mail = True #////

if (
hasattr(ref_doc, "order_type") and getattr(ref_doc, "order_type") == "Shopping Cart"
hasattr(ref_doc, "order_type") and getattr(ref_doc, "order_type") == "Shopping Cart" and not ref_doc.woocommerce_id #//// added and not ref_doc.woocommerce_i
) or self.flags.mute_email:
send_mail = False

Expand Down Expand Up @@ -169,6 +171,13 @@ def payment_gateway_validation(self):
return False

def set_payment_request_url(self):
#////
ecommerce = False
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
if ref_doc.woocommerce_id:
ecommerce = True
#////

if self.payment_account and self.payment_channel != "Phone":
self.payment_url = self.get_payment_url()

Expand All @@ -177,7 +186,7 @@ def set_payment_request_url(self):

if (
self.payment_url
or not self.payment_gateway_account
or (not self.payment_gateway_account and not ecommerce) #//// or not self.payment_gateway_account
or (self.payment_gateway_account and self.payment_channel == "Phone")
):
self.db_set("status", "Initiated")
Expand Down Expand Up @@ -411,20 +420,30 @@ def make_payment_request(**args):
)
pr = frappe.get_doc("Payment Request", draft_payment_request)
else:
#//// added if
if args.order_type != "Shopping Cart":
if args.dt == "Sales Order":
existing_payment_request_amount = grand_total
else :
existing_payment_request_amount = get_existing_payment_request_amount(args.dt, args.dn)

if existing_payment_request_amount:
grand_total -= existing_payment_request_amount

pr = frappe.new_doc("Payment Request")
pr.update(
{
"payment_gateway_account": gateway_account.get("name"),
"payment_gateway": gateway_account.get("payment_gateway"),
"payment_account": gateway_account.get("payment_account"),
"payment_channel": gateway_account.get("payment_channel"),
"payment_gateway_account": None if args.get("ecommerce") else gateway_account.get("name"), #//// added None if args.get("ecommerce") else
"payment_gateway": None if args.get("ecommerce") else gateway_account.get("payment_gateway"), #//// added None if args.get("ecommerce") else
"payment_account": None if args.get("ecommerce") else gateway_account.get("payment_account"), #//// added None if args.get("ecommerce") else
"payment_channel": None if args.get("ecommerce") else gateway_account.get("payment_channel"), #//// added None if args.get("ecommerce") else
"payment_request_type": args.get("payment_request_type"),
"currency": ref_doc.currency,
"grand_total": grand_total,
"mode_of_payment": args.mode_of_payment,
"email_to": args.recipient_id or ref_doc.owner,
"subject": _("Payment Request for {0}").format(args.dn),
"message": gateway_account.get("message") or get_dummy_message(ref_doc),
"message": gateway_account.get("message") or get_dummy_message(ref_doc,ecommerce=args.get("ecommerce")), #//// added ,ecommerce=args.get("ecommerce")
"reference_doctype": args.dt,
"reference_name": args.dn,
"party_type": args.get("party_type") or "Customer",
Expand Down Expand Up @@ -453,8 +472,9 @@ def make_payment_request(**args):

if args.order_type == "Shopping Cart":
frappe.db.commit()
frappe.local.response["type"] = "redirect"
frappe.local.response["location"] = pr.get_payment_url()
if not args.get("ecommerce"): #//// added condition
frappe.local.response["type"] = "redirect"
frappe.local.response["location"] = pr.get_payment_url()

if args.return_doc:
return pr
Expand Down Expand Up @@ -522,6 +542,13 @@ def get_gateway_details(args): # nosemgrep
if gateway_account:
return get_payment_gateway_account(gateway_account)

#added if maybe conflict v14
if args.order_type == "Shopping Cart":
if args.get("ecommerce"):
return None
payment_gateway_account = frappe.get_doc("E Commerce Settings").payment_gateway_account
return get_payment_gateway_account(payment_gateway_account)

gateway_account = get_payment_gateway_account({"is_default": 1})

return gateway_account
Expand Down Expand Up @@ -591,23 +618,32 @@ def update_payment_req_status(doc, method):
pay_req_doc.db_set("status", status)


def get_dummy_message(doc):
return frappe.render_template(
"""{% if doc.contact_person -%}
<p>Dear {{ doc.contact_person }},</p>
{%- else %}<p>Hello,</p>{% endif %}
#//// complete replace of function return template
def get_dummy_message(doc, ecommerce=False):
if not ecommerce:
return frappe.render_template(
"""<p>{{ _("Hello") }} {{ doc.customer }},</p>
<p>{{ _("Requesting payment against {0} {1} for amount {2}").format(doc.doctype,
doc.name, doc.get_formatted("grand_total")) }}</p>
<p>{{ _("Please find enclosed the request for a deposit for your {0} {1} of a total of {2}").format(doc.doctype,
doc.name, doc.get_formatted("grand_total")) }}</p>
<a href="{{ payment_url }}">{{ _("Make Payment") }}</a>
<p>{{ _("We remain at your disposal, Sincerely") }}</p>
<p>{{ _("If you have any questions, please get back to us.") }}</p>
""",
dict(doc=doc),
)
return frappe.render_template(
"""<p>{{ _("Hello") }} {{ doc.customer }},</p>
<p>{{ _("Thank you for your business!") }}</p>
""",
dict(doc=doc, payment_url="{{ payment_url }}"),
)
<p>{{ _("Please find enclosed the invoice for your ecommerce order {0} {1} of a total of {2}").format(doc.doctype,
doc.name, doc.get_formatted("grand_total")) }}</p>
<p>{{ _("We remain at your disposal, Sincerely") }}</p>
""",
dict(doc=doc),
)
#////


@frappe.whitelist()
Expand Down
6 changes: 4 additions & 2 deletions erpnext/accounts/doctype/pos_invoice/pos_invoice.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex

company() {
erpnext.accounts.dimensions.update_dimension(this.frm, this.frm.doctype);
this.frm.set_value("set_warehouse", "");
this.frm.set_value("taxes_and_charges", "");
if(!cur_pos) {//// added condition
this.frm.set_value("set_warehouse", "");
this.frm.set_value("taxes_and_charges", "");
}////
}

onload(doc) {
Expand Down
Loading

0 comments on commit 0f8787d

Please sign in to comment.