[fixes] code clean-up
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index 03d0180..6d137a5 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -136,10 +136,6 @@
this.frm.refresh_fields();
},
- tc_name: function() {
- this.get_terms();
- },
-
items_add: function(doc, cdt, cdn) {
var row = frappe.get_doc(cdt, cdn);
this.frm.script_manager.copy_from_first_row("items", row,
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 14f157e..3cdb0e7 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -53,18 +53,11 @@
# validate stock items
if (self.update_stock == 1):
- pc_obj = frappe.get_doc('Purchase Common')
- pc_obj.validate_for_items(self)
-
self.validate_purchase_return()
self.validate_rejected_warehouse()
self.validate_accepted_rejected_qty()
-
- # sub-contracting
- # self.validate_for_subcontracting()
- # self.create_raw_materials_supplied("supplied_items")
- # self.set_landed_cost_voucher_amount()
- # self.update_valuation_rate("items")
+ pc_obj = frappe.get_doc('Purchase Common')
+ pc_obj.validate_for_items(self)
self.check_active_purchase_items()
self.check_conversion_rate()
@@ -88,37 +81,6 @@
- flt(self.base_grand_total) > 1/(10**(self.precision("base_grand_total") + 1)):
frappe.throw(_("""Paid amount + Write Off Amount can not be greater than Grand Total"""))
- def validate_purchase_return(self):
- for d in self.get("items"):
- if self.is_return and flt(d.rejected_qty) != 0:
- frappe.throw(_("Row #{0}: Rejected Qty can not be entered in Purchase Return").format(d.idx))
-
- # validate rate with ref PR
-
- def validate_rejected_warehouse(self):
- for d in self.get("items"):
- if flt(d.rejected_qty) and not d.rejected_warehouse:
- d.rejected_warehouse = self.rejected_warehouse
- if not d.rejected_warehouse:
- frappe.throw(_("Row #{0}: Rejected Warehouse is mandatory against rejected Item {1}").format(d.idx, d.item_code))
-
- # validate accepted and rejected qty
- def validate_accepted_rejected_qty(self):
- for d in self.get("items"):
- if not flt(d.received_qty) and flt(d.qty):
- d.received_qty = flt(d.qty) - flt(d.rejected_qty)
-
- elif not flt(d.qty) and flt(d.rejected_qty):
- d.qty = flt(d.received_qty) - flt(d.rejected_qty)
-
- elif not flt(d.rejected_qty):
- d.rejected_qty = flt(d.received_qty) - flt(d.qty)
-
- # Check Received Qty = Accepted Qty + Rejected Qty
- if ((flt(d.qty) + flt(d.rejected_qty)) != flt(d.received_qty)):
- frappe.throw(_("Accepted + Rejected Qty must be equal to Received quantity for Item {0}").format(d.item_code))
-
-
def create_remarks(self):
if not self.remarks:
if self.bill_no and self.bill_date:
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index 5dcb012..79eaeeb 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -117,7 +117,6 @@
if ((doc.doctype == "Purchase Receipt") || (doc.doctype == "Purchase Invoice" && doc.update_stock)) {
var item = frappe.get_doc(cdt, cdn);
frappe.model.round_floats_in(item, ["qty", "received_qty"]);
-
if(!(item.received_qty || item.rejected_qty) && item.qty) {
item.received_qty = item.qty;
}
@@ -153,6 +152,7 @@
__(frappe.meta.get_label(item.doctype, "received_qty", item.name))]));
item.qty = item.rejected_qty = 0.0;
} else {
+
item.qty = flt(item.received_qty - item.rejected_qty, precision("qty", item));
}
@@ -235,6 +235,10 @@
erpnext.utils.get_address_display(this.frm, "shipping_address",
"shipping_address_display", is_your_company_address=true)
+ },
+
+ tc_name: function() {
+ this.get_terms();
}
});
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index abd1764..1bb968c 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -262,6 +262,36 @@
frappe.throw(_("Row {0}: Conversion Factor is mandatory").format(d.idx))
d.stock_qty = flt(d.qty) * flt(d.conversion_factor)
+ def validate_purchase_return(self):
+ for d in self.get("items"):
+ if self.is_return and flt(d.rejected_qty) != 0:
+ frappe.throw(_("Row #{0}: Rejected Qty can not be entered in Purchase Return").format(d.idx))
+
+ # validate rate with ref PR
+
+ def validate_rejected_warehouse(self):
+ for d in self.get("items"):
+ if flt(d.rejected_qty) and not d.rejected_warehouse:
+ d.rejected_warehouse = self.rejected_warehouse
+ if not d.rejected_warehouse:
+ frappe.throw(_("Row #{0}: Rejected Warehouse is mandatory against rejected Item {1}").format(d.idx, d.item_code))
+
+ # validate accepted and rejected qty
+ def validate_accepted_rejected_qty(self):
+ for d in self.get("items"):
+ if not flt(d.received_qty) and flt(d.qty):
+ d.received_qty = flt(d.qty) - flt(d.rejected_qty)
+
+ elif not flt(d.qty) and flt(d.rejected_qty):
+ d.qty = flt(d.received_qty) - flt(d.rejected_qty)
+
+ elif not flt(d.rejected_qty):
+ d.rejected_qty = flt(d.received_qty) - flt(d.qty)
+
+ # Check Received Qty = Accepted Qty + Rejected Qty
+ if ((flt(d.qty) + flt(d.rejected_qty)) != flt(d.received_qty)):
+ frappe.throw(_("Accepted + Rejected Qty must be equal to Received quantity for Item {0}").format(d.item_code))
+
def update_stock_ledger(self, allow_negative_stock=False, via_landed_cost_voucher=False):
sl_entries = []
stock_items = self.get_stock_items()
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index c2bbfbf..332dc63 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -24,7 +24,6 @@
}
});
-
erpnext.stock.PurchaseReceiptController = erpnext.buying.BuyingController.extend({
refresh: function() {
this._super();
@@ -90,10 +89,6 @@
})
},
- tc_name: function() {
- this.get_terms();
- },
-
close_purchase_receipt: function() {
cur_frm.cscript.update_status("Closed");
},
@@ -200,8 +195,6 @@
cur_frm.email_doc(frappe.boot.notification_settings.purchase_receipt_message);
}
-
-
frappe.provide("erpnext.buying");
frappe.ui.form.on("Purchase Receipt", "is_subcontracted", function(frm) {
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index d16dd39..1bdbc15 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -77,37 +77,6 @@
where docstatus = 1 and purchase_receipt_item = %s""", d.name)
d.landed_cost_voucher_amount = lc_voucher_amount[0][0] if lc_voucher_amount else 0.0
- def validate_purchase_return(self):
- for d in self.get("items"):
- if self.is_return and flt(d.rejected_qty) != 0:
- frappe.throw(_("Row #{0}: Rejected Qty can not be entered in Purchase Return").format(d.idx))
-
- # validate rate with ref PR
-
- def validate_rejected_warehouse(self):
- for d in self.get("items"):
- if flt(d.rejected_qty) and not d.rejected_warehouse:
- d.rejected_warehouse = self.rejected_warehouse
- if not d.rejected_warehouse:
- frappe.throw(_("Row #{0}: Rejected Warehouse is mandatory against rejected Item {1}").format(d.idx, d.item_code))
-
- # validate accepted and rejected qty
- def validate_accepted_rejected_qty(self):
- for d in self.get("items"):
- if not flt(d.received_qty) and flt(d.qty):
- d.received_qty = flt(d.qty) - flt(d.rejected_qty)
-
- elif not flt(d.qty) and flt(d.rejected_qty):
- d.qty = flt(d.received_qty) - flt(d.rejected_qty)
-
- elif not flt(d.rejected_qty):
- d.rejected_qty = flt(d.received_qty) - flt(d.qty)
-
- # Check Received Qty = Accepted Qty + Rejected Qty
- if ((flt(d.qty) + flt(d.rejected_qty)) != flt(d.received_qty)):
- frappe.throw(_("Accepted + Rejected Qty must be equal to Received quantity for Item {0}").format(d.item_code))
-
-
def validate_with_previous_doc(self):
super(PurchaseReceipt, self).validate_with_previous_doc({
"Purchase Order": {