Get valuation rate from historical SLE even if it is zero (#13129)
* Don't overwrite start and end date comes from payroll entry
* Get valuation rate from historical SLE even if it is zero, if records exists
* Valid till should be autoset if not any default value
* Set status of expense claim based on is_paid check
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index 9462211..d0c4a46 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -45,10 +45,11 @@
}[cstr(self.docstatus or 0)]
paid_amount = flt(self.total_amount_reimbursed) + flt(self.total_advance_amount)
- if self.total_sanctioned_amount > 0 and self.total_sanctioned_amount == paid_amount\
+ if (self.is_paid or (flt(self.total_sanctioned_amount) > 0
+ and flt(self.total_sanctioned_amount) == paid_amount)) \
and self.docstatus == 1 and self.approval_status == 'Approved':
- self.status = "Paid"
- elif self.total_sanctioned_amount > 0 and self.docstatus == 1 and self.approval_status == 'Approved':
+ self.status = "Paid"
+ elif flt(self.total_sanctioned_amount) > 0 and self.docstatus == 1 and self.approval_status == 'Approved':
self.status = "Unpaid"
elif self.docstatus == 1 and self.approval_status == 'Rejected':
self.status = 'Rejected'
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index a474569..b9371e3 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -156,9 +156,10 @@
})
def get_date_details(self):
- date_details = get_start_end_dates(self.payroll_frequency, self.start_date or self.posting_date)
- self.start_date = date_details.start_date
- self.end_date = date_details.end_date
+ if not self.end_date:
+ date_details = get_start_end_dates(self.payroll_frequency, self.start_date or self.posting_date)
+ self.start_date = date_details.start_date
+ self.end_date = date_details.end_date
def check_sal_struct(self, joining_date, relieving_date):
cond = ''
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 8417642..081d4db 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -41,7 +41,7 @@
var me = this;
- if (doc.__islocal) {
+ if (doc.__islocal && !doc.valid_till) {
this.frm.set_value('valid_till', frappe.datetime.add_months(doc.transaction_date, 1))
}
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 874a382..db9c2a6 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -452,22 +452,22 @@
where item_code = %s and valuation_rate > 0
order by posting_date desc, posting_time desc, name desc limit 1""", item_code)
- valuation_rate = flt(last_valuation_rate[0][0]) if last_valuation_rate else 0
+ if last_valuation_rate:
+ return flt(last_valuation_rate[0][0]) # as there is previous records, it might come with zero rate
+
+ # If negative stock allowed, and item delivered without any incoming entry,
+ # system does not found any SLE, then take valuation rate from Item
+ valuation_rate = frappe.db.get_value("Item", item_code, "valuation_rate")
if not valuation_rate:
- # If negative stock allowed, and item delivered without any incoming entry,
- # syste does not found any SLE, then take valuation rate from Item
- valuation_rate = frappe.db.get_value("Item", item_code, "valuation_rate")
+ # try Item Standard rate
+ valuation_rate = frappe.db.get_value("Item", item_code, "standard_rate")
if not valuation_rate:
- # try Item Standard rate
- valuation_rate = frappe.db.get_value("Item", item_code, "standard_rate")
-
- if not valuation_rate:
- # try in price list
- valuation_rate = frappe.db.get_value('Item Price',
- dict(item_code=item_code, buying=1, currency=currency),
- 'price_list_rate')
+ # try in price list
+ valuation_rate = frappe.db.get_value('Item Price',
+ dict(item_code=item_code, buying=1, currency=currency),
+ 'price_list_rate')
if not allow_zero_rate and not valuation_rate \
and cint(erpnext.is_perpetual_inventory_enabled(company)):