Fixed rest of the test cases frappe/frapp#478
This commit is contained in:
parent
d29465029d
commit
9fd50bcfb6
@ -17,7 +17,10 @@ from erpnext.accounts.party import get_party_account, get_due_date
|
||||
class PurchaseInvoice(BuyingController):
|
||||
tname = 'Purchase Invoice Item'
|
||||
fname = 'entries'
|
||||
status_updater = [{
|
||||
|
||||
def __init__(self, arg1, arg2=None):
|
||||
super(PurchaseInvoice, self).__init__(arg1, arg2)
|
||||
self.status_updater = [{
|
||||
'source_dt': 'Purchase Invoice Item',
|
||||
'target_dt': 'Purchase Order Item',
|
||||
'join_field': 'po_detail',
|
||||
|
@ -20,7 +20,10 @@ from erpnext.controllers.selling_controller import SellingController
|
||||
class SalesInvoice(SellingController):
|
||||
tname = 'Sales Invoice Item'
|
||||
fname = 'entries'
|
||||
status_updater = [{
|
||||
|
||||
def __init__(self, arg1, arg2=None):
|
||||
super(SalesInvoice, self).__init__(arg1, arg2)
|
||||
self.status_updater = [{
|
||||
'source_dt': 'Sales Invoice Item',
|
||||
'target_field': 'billed_amt',
|
||||
'target_ref_field': 'amount',
|
||||
|
@ -153,7 +153,7 @@ class PurchaseCommon(BuyingController):
|
||||
status = 'Stopped'""" % (doctype, '%s'), docname)
|
||||
if stopped:
|
||||
frappe.throw("One cannot do any transaction against %s : %s, it's status is 'Stopped'" %
|
||||
(doctype, docname))
|
||||
(doctype, docname), exc=frappe.InvalidStatusError)
|
||||
|
||||
def check_docstatus(self, check, doctype, docname, detail_doctype = ''):
|
||||
if check == 'Next':
|
||||
|
@ -3,17 +3,17 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
from frappe.utils import cstr, flt
|
||||
|
||||
from frappe import msgprint
|
||||
|
||||
|
||||
from erpnext.controllers.buying_controller import BuyingController
|
||||
|
||||
class PurchaseOrder(BuyingController):
|
||||
tname = 'Purchase Order Item'
|
||||
fname = 'po_details'
|
||||
status_updater = [{
|
||||
|
||||
def __init__(self, arg1, arg2=None):
|
||||
super(PurchaseOrder, self).__init__(arg1, arg2)
|
||||
self.status_updater = [{
|
||||
'source_dt': 'Purchase Order Item',
|
||||
'target_dt': 'Material Request Item',
|
||||
'join_field': 'prevdoc_detail_docname',
|
||||
@ -156,7 +156,7 @@ class PurchaseOrder(BuyingController):
|
||||
frappe.db.set(self,'status','Submitted')
|
||||
|
||||
def on_cancel(self):
|
||||
pc_obj = frappe.get_doc(dt = 'Purchase Common')
|
||||
pc_obj = frappe.get_doc('Purchase Common')
|
||||
self.check_for_stopped_status(pc_obj)
|
||||
|
||||
# Check if Purchase Receipt has been submitted against current Purchase Order
|
||||
|
@ -150,7 +150,6 @@ class StatusUpdater(DocListController):
|
||||
"""
|
||||
Checks if there is overflow condering a relaxation tolerance
|
||||
"""
|
||||
|
||||
# check if overflow is within tolerance
|
||||
tolerance, self.tolerance, self.global_tolerance = get_tolerance_for(item['item_code'],
|
||||
self.tolerance, self.global_tolerance)
|
||||
|
@ -79,7 +79,7 @@ def make_feed(feedtype, doctype, name, owner, subject, color):
|
||||
f.subject = subject
|
||||
f.color = color
|
||||
f.full_name = get_fullname(owner)
|
||||
f.save()
|
||||
f.save(ignore_permissions=True)
|
||||
|
||||
def update_feed(doc, method=None):
|
||||
"adds a new feed"
|
||||
|
@ -14,7 +14,10 @@ from erpnext.utilities.transaction_base import TransactionBase
|
||||
class InstallationNote(TransactionBase):
|
||||
tname = 'Installation Note Item'
|
||||
fname = 'installed_item_details'
|
||||
status_updater = [{
|
||||
|
||||
def __init__(self, arg1, arg2=None):
|
||||
super(InstallationNote, self).__init__(arg1, arg2)
|
||||
self.status_updater = [{
|
||||
'source_dt': 'Installation Note Item',
|
||||
'target_dt': 'Delivery Note Item',
|
||||
'target_field': 'installed_qty',
|
||||
|
@ -21,9 +21,9 @@ class TestQuotation(unittest.TestCase):
|
||||
sales_order = make_sales_order(quotation.name)
|
||||
|
||||
self.assertEquals(sales_order.doctype, "Sales Order")
|
||||
self.assertEquals(len(sales_order.get("sales_order_details")), 2)
|
||||
self.assertEquals(sales_order.get("sales_order_details")[0]["doctype"], "Sales Order Item")
|
||||
self.assertEquals(sales_order.get("sales_order_details")[0]["prevdoc_docname"], quotation.name)
|
||||
self.assertEquals(len(sales_order.get("sales_order_details")), 1)
|
||||
self.assertEquals(sales_order.get("sales_order_details")[0].doctype, "Sales Order Item")
|
||||
self.assertEquals(sales_order.get("sales_order_details")[0].prevdoc_docname, quotation.name)
|
||||
self.assertEquals(sales_order.customer, "_Test Customer")
|
||||
|
||||
sales_order.delivery_date = "2014-01-01"
|
||||
|
@ -281,10 +281,10 @@ def make_material_request(source_name, target_doc=None):
|
||||
|
||||
@frappe.whitelist()
|
||||
def make_delivery_note(source_name, target_doc=None):
|
||||
def update_item(obj, target, source_parent):
|
||||
target.base_amount = (flt(obj.qty) - flt(obj.delivered_qty)) * flt(obj.base_rate)
|
||||
target.amount = (flt(obj.qty) - flt(obj.delivered_qty)) * flt(obj.rate)
|
||||
target.qty = flt(obj.qty) - flt(obj.delivered_qty)
|
||||
def update_item(source, target, source_parent):
|
||||
target.base_amount = (flt(source.qty) - flt(source.delivered_qty)) * flt(source.base_rate)
|
||||
target.amount = (flt(source.qty) - flt(source.delivered_qty)) * flt(source.rate)
|
||||
target.qty = flt(source.qty) - flt(source.delivered_qty)
|
||||
|
||||
doclist = get_mapped_doc("Sales Order", source_name, {
|
||||
"Sales Order": {
|
||||
@ -326,10 +326,10 @@ def make_sales_invoice(source_name, target_doc=None):
|
||||
doc.is_pos = 0
|
||||
doc.run_method("onload_post_render")
|
||||
|
||||
def update_item(obj, target, source_parent):
|
||||
target.amount = flt(obj.amount) - flt(obj.billed_amt)
|
||||
def update_item(source, target, source_parent):
|
||||
target.amount = flt(source.amount) - flt(source.billed_amt)
|
||||
target.base_amount = target.amount * flt(source_parent.conversion_rate)
|
||||
target.qty = obj.rate and target.amount / flt(obj.rate) or obj.qty
|
||||
target.qty = source.rate and target.amount / flt(source.rate) or obj.qty
|
||||
|
||||
doclist = get_mapped_doc("Sales Order", source_name, {
|
||||
"Sales Order": {
|
||||
|
@ -106,7 +106,7 @@ class TestSalesOrder(unittest.TestCase):
|
||||
|
||||
def test_reserved_qty_for_so(self):
|
||||
# reset bin
|
||||
so_item = test_records[0]["sales_order_details"][0]
|
||||
so_item = test_records[0]["sales_order_details"][0].copy()
|
||||
self.delete_bin(so_item["item_code"], so_item["warehouse"])
|
||||
|
||||
# submit
|
||||
@ -120,7 +120,7 @@ class TestSalesOrder(unittest.TestCase):
|
||||
|
||||
def test_reserved_qty_for_partial_delivery(self):
|
||||
# reset bin
|
||||
so_item = test_records[0]["sales_order_details"][0]
|
||||
so_item = test_records[0]["sales_order_details"][0].copy()
|
||||
self.delete_bin(so_item["item_code"], so_item["warehouse"])
|
||||
|
||||
# submit so
|
||||
@ -150,7 +150,7 @@ class TestSalesOrder(unittest.TestCase):
|
||||
|
||||
def test_reserved_qty_for_over_delivery(self):
|
||||
# reset bin
|
||||
so_item = test_records[0]["sales_order_details"][0]
|
||||
so_item = test_records[0]["sales_order_details"][0].copy()
|
||||
self.delete_bin(so_item["item_code"], so_item["warehouse"])
|
||||
|
||||
# submit so
|
||||
|
@ -5,10 +5,14 @@ from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
from frappe.utils.nestedset import NestedSet
|
||||
from frappe.website.website_generator import WebsiteGenerator
|
||||
|
||||
class ItemGroup(NestedSet):
|
||||
class ItemGroup(NestedSet, WebsiteGenerator):
|
||||
nsm_parent_field = 'parent_item_group'
|
||||
|
||||
def autoname(self):
|
||||
self.name = self.item_group_name
|
||||
|
||||
def validate(self):
|
||||
if not self.parent_website_route:
|
||||
self.parent_website_route = frappe.get_website_route("Item Group",
|
||||
@ -16,11 +20,18 @@ class ItemGroup(NestedSet):
|
||||
|
||||
def on_update(self):
|
||||
NestedSet.on_update(self)
|
||||
|
||||
WebsiteGenerator.on_update(self)
|
||||
self.validate_name_with_item()
|
||||
|
||||
self.validate_one_root()
|
||||
|
||||
def after_rename(self, olddn, newdn, merge=False):
|
||||
NestedSet.after_rename(self, olddn, newdn, merge)
|
||||
WebsiteGenerator.after_rename(self, olddn, newdn, merge)
|
||||
|
||||
def on_trash(self):
|
||||
NestedSet.on_trash(self)
|
||||
WebsiteGenerator.on_trash(self)
|
||||
|
||||
def validate_name_with_item(self):
|
||||
if frappe.db.exists("Item", self.name):
|
||||
frappe.msgprint("An item exists with same name (%s), please change the \
|
||||
|
@ -18,7 +18,6 @@ class TestItem(unittest.TestCase):
|
||||
records = test_records[2:]
|
||||
|
||||
for item_group in records:
|
||||
item_group = item_group[0]
|
||||
lft, rgt, parent_item_group = frappe.db.get_value("Item Group", item_group["item_group_name"],
|
||||
["lft", "rgt", "parent_item_group"])
|
||||
|
||||
|
@ -4,9 +4,12 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.utils import cint, cstr, filter_strip_join
|
||||
from frappe.model.document import Document
|
||||
from frappe.website.website_generator import WebsiteGenerator
|
||||
|
||||
class SalesPartner(WebsiteGenerator):
|
||||
def autoname(self):
|
||||
self.name = self.partner_name
|
||||
|
||||
class SalesPartner(Document):
|
||||
def validate(self):
|
||||
if self.partner_website and not self.partner_website.startswith("http"):
|
||||
self.partner_website = "http://" + self.partner_website
|
||||
|
@ -15,7 +15,10 @@ from erpnext.controllers.selling_controller import SellingController
|
||||
class DeliveryNote(SellingController):
|
||||
tname = 'Delivery Note Item'
|
||||
fname = 'delivery_note_details'
|
||||
status_updater = [{
|
||||
|
||||
def __init__(self, arg1, arg2=None):
|
||||
super(DeliveryNote, self).__init__(arg1, arg2)
|
||||
self.status_updater = [{
|
||||
'source_dt': 'Delivery Note Item',
|
||||
'target_dt': 'Sales Order Item',
|
||||
'join_field': 'prevdoc_detail_docname',
|
||||
|
@ -11,7 +11,7 @@ from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import get_gl_
|
||||
|
||||
def _insert_purchase_receipt(item_code=None):
|
||||
if not item_code:
|
||||
item_code = pr_test_records[0][1]["item_code"]
|
||||
item_code = pr_test_records[0]["purchase_receipt_details"][0]["item_code"]
|
||||
|
||||
pr = frappe.copy_doc(pr_test_records[0])
|
||||
pr.get("purchase_receipt_details")[0].item_code = item_code
|
||||
@ -34,10 +34,10 @@ class TestDeliveryNote(unittest.TestCase):
|
||||
dn.submit()
|
||||
si = make_sales_invoice(dn.name)
|
||||
|
||||
self.assertEquals(len(si), len(dn))
|
||||
self.assertEquals(len(si.get("entries")), len(dn.get("delivery_note_details")))
|
||||
|
||||
# modify amount
|
||||
si[1]["rate"] = 200
|
||||
si.get("entries")[0].rate = 200
|
||||
self.assertRaises(frappe.ValidationError, frappe.get_doc(si).insert)
|
||||
|
||||
|
||||
|
@ -3,16 +3,13 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
from frappe.utils import cstr, flt, getdate, now_datetime, formatdate
|
||||
|
||||
from frappe import msgprint, _
|
||||
|
||||
from frappe.model.controller import DocListController
|
||||
from frappe.utils import cstr, flt, getdate, now_datetime, formatdate
|
||||
from frappe.website.website_generator import WebsiteGenerator
|
||||
|
||||
class WarehouseNotSet(Exception): pass
|
||||
|
||||
class Item(DocListController):
|
||||
class Item(WebsiteGenerator):
|
||||
def onload(self):
|
||||
self.set("__sle_exists", self.check_if_sle_exists())
|
||||
|
||||
@ -48,6 +45,7 @@ class Item(DocListController):
|
||||
self.old_page_name = frappe.db.get_value('Item', self.name, 'page_name')
|
||||
|
||||
def on_update(self):
|
||||
super(Item, self).on_update()
|
||||
self.validate_name_with_item_group()
|
||||
self.update_item_price()
|
||||
|
||||
@ -225,6 +223,7 @@ class Item(DocListController):
|
||||
return ret
|
||||
|
||||
def on_trash(self):
|
||||
super(Item, self).on_trash()
|
||||
frappe.db.sql("""delete from tabBin where item_code=%s""", self.item_code)
|
||||
|
||||
def before_rename(self, olddn, newdn, merge=False):
|
||||
@ -242,8 +241,9 @@ class Item(DocListController):
|
||||
frappe.db.sql("delete from `tabBin` where item_code=%s", olddn)
|
||||
|
||||
def after_rename(self, olddn, newdn, merge):
|
||||
frappe.db.set_value("Item", newdn, "item_code", newdn)
|
||||
super(Item, self).after_rename(olddn, newdn, merge)
|
||||
|
||||
frappe.db.set_value("Item", newdn, "item_code", newdn)
|
||||
if merge:
|
||||
self.set_last_purchase_rate(newdn)
|
||||
self.recalculate_bin_qty(newdn)
|
||||
|
@ -169,11 +169,10 @@ def update_completed_qty(doc, method):
|
||||
|
||||
for mr_name, mr_items in material_request_map.items():
|
||||
mr_obj = frappe.get_doc("Material Request", mr_name)
|
||||
mr_doctype = frappe.get_meta("Material Request")
|
||||
|
||||
if mr_obj.status in ["Stopped", "Cancelled"]:
|
||||
frappe.throw(_("Material Request") + ": %s, " % mr_obj.name
|
||||
+ _(mr_doctype.get_label("status")) + " = %s. " % _(mr_obj.status)
|
||||
+ _(mr_obj.meta.get_label("status")) + " = %s. " % _(mr_obj.status)
|
||||
+ _("Cannot continue."), exc=frappe.InvalidStatusError)
|
||||
|
||||
_update_requested_qty(doc, mr_obj, mr_items)
|
||||
|
@ -24,7 +24,7 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
mr.submit()
|
||||
po = make_purchase_order(mr.name)
|
||||
|
||||
self.assertEquals(po["doctype"], "Purchase Order")
|
||||
self.assertEquals(po.doctype, "Purchase Order")
|
||||
self.assertEquals(len(po.get("po_details")), len(mr.get("indent_details")))
|
||||
|
||||
def test_make_supplier_quotation(self):
|
||||
@ -38,7 +38,7 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
mr.submit()
|
||||
sq = make_supplier_quotation(mr.name)
|
||||
|
||||
self.assertEquals(sq["doctype"], "Supplier Quotation")
|
||||
self.assertEquals(sq.doctype, "Supplier Quotation")
|
||||
self.assertEquals(len(sq.get("quotation_items")), len(mr.get("indent_details")))
|
||||
|
||||
|
||||
@ -55,14 +55,9 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
mr.submit()
|
||||
se = make_stock_entry(mr.name)
|
||||
|
||||
self.assertEquals(se["doctype"], "Stock Entry")
|
||||
self.assertEquals(se.doctype, "Stock Entry")
|
||||
self.assertEquals(len(se.get("mtn_details")), len(mr.get("indent_details")))
|
||||
|
||||
def _test_expected(self, doc, expected_values):
|
||||
for i, expected in enumerate(expected_values):
|
||||
for fieldname, val in expected.items():
|
||||
self.assertEquals(val, doc.get(fieldname))
|
||||
|
||||
def _test_requested_qty(self, qty1, qty2):
|
||||
self.assertEqual(flt(frappe.db.get_value("Bin", {"item_code": "_Test Item Home Desktop 100",
|
||||
"warehouse": "_Test Warehouse - _TC"}, "indented_qty")), qty1)
|
||||
@ -116,28 +111,34 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
mr.submit()
|
||||
|
||||
# check if per complete is None
|
||||
self._test_expected(mr, [{"per_ordered": None}, {"ordered_qty": None}, {"ordered_qty": None}])
|
||||
self.assertEquals(mr.per_ordered, None)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
|
||||
# map a purchase order
|
||||
from erpnext.stock.doctype.material_request.material_request import make_purchase_order
|
||||
po_doc = make_purchase_order(mr.name)
|
||||
po_doc["supplier"] = "_Test Supplier"
|
||||
po_doc["transaction_date"] = "2013-07-07"
|
||||
po_doc.get("po_details")[0]["qty"] = 27.0
|
||||
po_doc.get("po_details")[1]["qty"] = 1.5
|
||||
po_doc.get("po_details")[0]["schedule_date"] = "2013-07-09"
|
||||
po_doc.get("po_details")[1]["schedule_date"] = "2013-07-09"
|
||||
po_doc.supplier = "_Test Supplier"
|
||||
po_doc.transaction_date = "2013-07-07"
|
||||
po_doc.get("po_details")[0].qty = 27.0
|
||||
po_doc.get("po_details")[1].qty = 1.5
|
||||
po_doc.get("po_details")[0].schedule_date = "2013-07-09"
|
||||
po_doc.get("po_details")[1].schedule_date = "2013-07-09"
|
||||
|
||||
|
||||
# check for stopped status of Material Request
|
||||
po = frappe.copy_doc(po_doc)
|
||||
po.insert()
|
||||
po.load_from_db()
|
||||
mr.update_status('Stopped')
|
||||
self.assertRaises(frappe.ValidationError, po.submit)
|
||||
self.assertRaises(frappe.ValidationError, po.cancel)
|
||||
self.assertRaises(frappe.InvalidStatusError, po.submit)
|
||||
frappe.db.set(po, "docstatus", 1)
|
||||
self.assertRaises(frappe.InvalidStatusError, po.cancel)
|
||||
|
||||
# resubmit and check for per complete
|
||||
mr.load_from_db()
|
||||
mr.update_status('Submitted')
|
||||
po = frappe.copy_doc(po_doc)
|
||||
po.insert()
|
||||
@ -145,13 +146,18 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
|
||||
# check if per complete is as expected
|
||||
mr.load_from_db()
|
||||
self._test_expected(mr, [{"per_ordered": 50}, {"ordered_qty": 27.0}, {"ordered_qty": 1.5}])
|
||||
self.assertEquals(mr.per_ordered, 50)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 27.0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 1.5)
|
||||
self._test_requested_qty(27.0, 1.5)
|
||||
|
||||
po.cancel()
|
||||
# check if per complete is as expected
|
||||
mr.load_from_db()
|
||||
self._test_expected(mr, [{"per_ordered": None}, {"ordered_qty": None}, {"ordered_qty": None}])
|
||||
self.assertEquals(mr.per_ordered, None)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, None)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, None)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
|
||||
def test_completed_qty_for_transfer(self):
|
||||
@ -165,7 +171,9 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
mr.submit()
|
||||
|
||||
# check if per complete is None
|
||||
self._test_expected(mr, [{"per_ordered": None}, {"ordered_qty": None}, {"ordered_qty": None}])
|
||||
self.assertEquals(mr.per_ordered, None)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
|
||||
@ -198,8 +206,12 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
se = frappe.copy_doc(se_doc)
|
||||
se.insert()
|
||||
mr.update_status('Stopped')
|
||||
self.assertRaises(frappe.ValidationError, se.submit)
|
||||
self.assertRaises(frappe.ValidationError, se.cancel)
|
||||
self.assertRaises(frappe.InvalidStatusError, se.submit)
|
||||
|
||||
mr.update_status('Submitted')
|
||||
se.submit()
|
||||
mr.update_status('Stopped')
|
||||
self.assertRaises(frappe.InvalidStatusError, se.cancel)
|
||||
|
||||
mr.update_status('Submitted')
|
||||
se = frappe.copy_doc(se_doc)
|
||||
@ -208,13 +220,19 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
|
||||
# check if per complete is as expected
|
||||
mr.load_from_db()
|
||||
self._test_expected(mr, [{"per_ordered": 50}, {"ordered_qty": 27.0}, {"ordered_qty": 1.5}])
|
||||
self.assertEquals(mr.per_ordered, 50)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 27.0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 1.5)
|
||||
|
||||
self._test_requested_qty(27.0, 1.5)
|
||||
|
||||
# check if per complete is as expected for Stock Entry cancelled
|
||||
se.cancel()
|
||||
mr.load_from_db()
|
||||
self._test_expected(mr, [{"per_ordered": 0}, {"ordered_qty": 0}, {"ordered_qty": 0}])
|
||||
self.assertEquals(mr.per_ordered, 0)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
|
||||
def test_completed_qty_for_over_transfer(self):
|
||||
@ -228,7 +246,9 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
mr.submit()
|
||||
|
||||
# check if per complete is None
|
||||
self._test_expected(mr, [{"per_ordered": None}, {"ordered_qty": None}, {"ordered_qty": None}])
|
||||
self.assertEquals(mr.per_ordered, None)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
|
||||
@ -261,8 +281,8 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
se = frappe.copy_doc(se_doc)
|
||||
se.insert()
|
||||
mr.update_status('Stopped')
|
||||
self.assertRaises(frappe.ValidationError, se.submit)
|
||||
self.assertRaises(frappe.ValidationError, se.cancel)
|
||||
self.assertRaises(frappe.InvalidStatusError, se.submit)
|
||||
self.assertRaises(frappe.InvalidStatusError, se.cancel)
|
||||
|
||||
mr.update_status('Submitted')
|
||||
se = frappe.copy_doc(se_doc)
|
||||
@ -271,13 +291,19 @@ class TestMaterialRequest(unittest.TestCase):
|
||||
|
||||
# check if per complete is as expected
|
||||
mr.load_from_db()
|
||||
self._test_expected(mr, [{"per_ordered": 100}, {"ordered_qty": 60.0}, {"ordered_qty": 3.0}])
|
||||
|
||||
self.assertEquals(mr.per_ordered, 100)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 60.0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 3.0)
|
||||
self._test_requested_qty(0.0, 0.0)
|
||||
|
||||
# check if per complete is as expected for Stock Entry cancelled
|
||||
se.cancel()
|
||||
mr.load_from_db()
|
||||
self._test_expected(mr, [{"per_ordered": 0}, {"ordered_qty": 0}, {"ordered_qty": 0}])
|
||||
self.assertEquals(mr.per_ordered, 0)
|
||||
self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
|
||||
self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
|
||||
|
||||
self._test_requested_qty(54.0, 3.0)
|
||||
|
||||
def test_incorrect_mapping_of_stock_entry(self):
|
||||
|
@ -14,8 +14,10 @@ from erpnext.controllers.buying_controller import BuyingController
|
||||
class PurchaseReceipt(BuyingController):
|
||||
tname = 'Purchase Receipt Item'
|
||||
fname = 'purchase_receipt_details'
|
||||
count = 0
|
||||
status_updater = [{
|
||||
|
||||
def __init__(self, arg1, arg2=None):
|
||||
super(PurchaseReceipt, self).__init__(arg1, arg2)
|
||||
self.status_updater = [{
|
||||
'source_dt': 'Purchase Receipt Item',
|
||||
'target_dt': 'Purchase Order Item',
|
||||
'join_field': 'prevdoc_detail_docname',
|
||||
|
@ -23,11 +23,11 @@ class TestPurchaseReceipt(unittest.TestCase):
|
||||
pr.submit()
|
||||
pi = make_purchase_invoice(pr.name)
|
||||
|
||||
self.assertEquals(pi["doctype"], "Purchase Invoice")
|
||||
self.assertEquals(pi.doctype, "Purchase Invoice")
|
||||
self.assertEquals(len(pi.get("entries")), len(pr.get("purchase_receipt_details")))
|
||||
|
||||
# modify rate
|
||||
pi.get("entries")[0]["rate"] = 200
|
||||
pi.get("entries")[0].rate = 200
|
||||
self.assertRaises(frappe.ValidationError, frappe.get_doc(pi).submit)
|
||||
|
||||
def test_purchase_receipt_no_gl_entry(self):
|
||||
|
@ -407,14 +407,14 @@ class TestStockEntry(unittest.TestCase):
|
||||
from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice, make_delivery_note
|
||||
|
||||
actual_qty_0 = self._get_actual_qty()
|
||||
|
||||
so = frappe.copy_doc(sales_order_test_records[0])
|
||||
so.get("sales_order_details")[0].item_code = item_code
|
||||
so.get("sales_order_details")[0].qty = 5.0
|
||||
so.insert()
|
||||
so.submit()
|
||||
dn_doc = make_delivery_note(so.name)
|
||||
|
||||
dn = frappe.get_doc(dn_doc)
|
||||
dn = make_delivery_note(so.name)
|
||||
dn.status = "Draft"
|
||||
dn.posting_date = so.delivery_date
|
||||
dn.insert()
|
||||
@ -423,9 +423,7 @@ class TestStockEntry(unittest.TestCase):
|
||||
actual_qty_1 = self._get_actual_qty()
|
||||
self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
|
||||
|
||||
si_doc = make_sales_invoice(so.name)
|
||||
|
||||
si = frappe.get_doc(si_doc)
|
||||
si = make_sales_invoice(so.name)
|
||||
si.posting_date = dn.posting_date
|
||||
si.debit_to = "_Test Customer - _TC"
|
||||
for d in si.get("entries"):
|
||||
|
@ -196,15 +196,14 @@ class TestStockReconciliation(unittest.TestCase):
|
||||
frappe.db.set_value("Item", "_Test Item", "valuation_method", valuation_method)
|
||||
frappe.db.set_default("allow_negative_stock", 1)
|
||||
|
||||
stock_entry = [
|
||||
{
|
||||
stock_entry = {
|
||||
"company": "_Test Company",
|
||||
"doctype": "Stock Entry",
|
||||
"posting_date": "2012-12-12",
|
||||
"posting_time": "01:00",
|
||||
"purpose": "Material Receipt",
|
||||
"fiscal_year": "_Test Fiscal Year 2012",
|
||||
},
|
||||
"mtn_details": [
|
||||
{
|
||||
"conversion_factor": 1.0,
|
||||
"doctype": "Stock Entry Detail",
|
||||
@ -218,8 +217,9 @@ class TestStockReconciliation(unittest.TestCase):
|
||||
"t_warehouse": "_Test Warehouse - _TC",
|
||||
"expense_account": "Stock Adjustment - _TC",
|
||||
"cost_center": "_Test Cost Center - _TC"
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
pr = frappe.copy_doc(stock_entry)
|
||||
pr.insert()
|
||||
|
@ -7,32 +7,32 @@ class TestNewsletter(unittest.TestCase):
|
||||
def test_get_recipients_lead(self):
|
||||
w = frappe.get_doc(test_records[0])
|
||||
w.insert()
|
||||
self.assertTrue("test_lead@example.com" in w.controller.get_recipients())
|
||||
self.assertTrue("test_lead@example.com" in w.get_recipients())
|
||||
frappe.db.sql("""delete from `tabBulk Email`""")
|
||||
w.controller.send_emails()
|
||||
w.send_emails()
|
||||
self.assertTrue(frappe.db.get_value("Bulk Email", {"recipient": "test_lead@example.com"}))
|
||||
|
||||
def test_get_recipients_lead_by_status(self):
|
||||
w = frappe.get_doc(test_records[0])
|
||||
w.lead_status="Converted"
|
||||
w.insert()
|
||||
self.assertTrue("test_lead3@example.com" in w.controller.get_recipients())
|
||||
self.assertTrue("test_lead3@example.com" in w.get_recipients())
|
||||
|
||||
def test_get_recipients_contact_customer(self):
|
||||
w = frappe.get_doc(test_records[1])
|
||||
w.insert()
|
||||
self.assertTrue("test_contact_customer@example.com" in w.controller.get_recipients())
|
||||
self.assertTrue("test_contact_customer@example.com" in w.get_recipients())
|
||||
|
||||
def test_get_recipients_contact_supplier(self):
|
||||
w = frappe.get_doc(test_records[1])
|
||||
w.contact_type="Supplier"
|
||||
w.insert()
|
||||
self.assertTrue("test_contact_supplier@example.com" in w.controller.get_recipients())
|
||||
self.assertTrue("test_contact_supplier@example.com" in w.get_recipients())
|
||||
|
||||
def test_get_recipients_custom(self):
|
||||
w = frappe.get_doc(test_records[2])
|
||||
w.insert()
|
||||
self.assertTrue("test_custom2@example.com" in w.controller.get_recipients())
|
||||
self.assertTrue("test_custom2@example.com" in w.get_recipients())
|
||||
self.assertTrue(frappe.db.get("Lead",
|
||||
{"email_id": "test_custom2@example.com"}))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user