def test_movement(self): asset = create_asset() if asset.docstatus == 0: asset.submit() movement1 = create_asset_movement( asset, target_warehouse="_Test Warehouse 1 - _TC") self.assertEqual(frappe.db.get_value("Asset", asset.name, "warehouse"), "_Test Warehouse 1 - _TC") movement2 = create_asset_movement( asset, target_warehouse="_Test Warehouse 2 - _TC") self.assertEqual(frappe.db.get_value("Asset", asset.name, "warehouse"), "_Test Warehouse 2 - _TC") movement1.cancel() self.assertEqual(frappe.db.get_value("Asset", asset.name, "warehouse"), "_Test Warehouse 2 - _TC") movement2.cancel() self.assertEqual(frappe.db.get_value("Asset", asset.name, "warehouse"), "_Test Warehouse - _TC") asset.load_from_db() asset.cancel() frappe.delete_doc("Asset", asset.name)
def test_increase_in_asset_value_due_to_repair_cost_capitalisation(self): asset = create_asset(calculate_depreciation=1, submit=1) initial_asset_value = get_asset_value(asset) asset_repair = create_asset_repair(asset=asset, capitalize_repair_cost=1, submit=1) asset.reload() increase_in_asset_value = get_asset_value(asset) - initial_asset_value self.assertEqual(asset_repair.repair_cost, increase_in_asset_value)
def test_increase_in_asset_life(self): asset = create_asset(calculate_depreciation=1, submit=1) initial_num_of_depreciations = num_of_depreciations(asset) create_asset_repair(asset=asset, capitalize_repair_cost=1, submit=1) asset.reload() self.assertEqual((initial_num_of_depreciations + 1), num_of_depreciations(asset)) self.assertEqual(asset.schedules[-1].accumulated_depreciation_amount, asset.finance_books[0].value_after_depreciation)
def test_increase_in_asset_value_due_to_stock_consumption(self): asset = create_asset(calculate_depreciation=1, submit=1) initial_asset_value = get_asset_value(asset) asset_repair = create_asset_repair(asset=asset, stock_consumption=1, submit=1) asset.reload() increase_in_asset_value = get_asset_value(asset) - initial_asset_value self.assertEqual(asset_repair.stock_items[0].total_value, increase_in_asset_value)
def test_update_status(self): asset = create_asset(submit=1) initial_status = asset.status asset_repair = create_asset_repair(asset=asset) if asset_repair.repair_status == "Pending": asset.reload() self.assertEqual(asset.status, "Out of Order") asset_repair.repair_status = "Completed" asset_repair.save() asset_status = frappe.db.get_value("Asset", asset_repair.asset, "status") self.assertEqual(asset_status, initial_status)
def test_movement(self): asset = create_asset() if asset.docstatus == 0: asset.submit() movement1 = create_asset_movement(asset, target_warehouse="_Test Warehouse 1 - _TC") self.assertEqual(frappe.db.get_value("Asset", asset.name, "warehouse"), "_Test Warehouse 1 - _TC") movement2 = create_asset_movement(asset, target_warehouse="_Test Warehouse 2 - _TC") self.assertEqual(frappe.db.get_value("Asset", asset.name, "warehouse"), "_Test Warehouse 2 - _TC") movement1.cancel() self.assertEqual(frappe.db.get_value("Asset", asset.name, "warehouse"), "_Test Warehouse 2 - _TC") movement2.cancel() self.assertEqual(frappe.db.get_value("Asset", asset.name, "warehouse"), "_Test Warehouse - _TC") asset.load_from_db() asset.cancel() frappe.delete_doc("Asset", asset.name)
def create_asset_repair(**args): from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse args = frappe._dict(args) if args.asset: asset = args.asset else: asset = create_asset(is_existing_asset=1, submit=1) asset_repair = frappe.new_doc("Asset Repair") asset_repair.update({ "asset": asset.name, "asset_name": asset.asset_name, "failure_date": nowdate(), "description": "Test Description", "repair_cost": 0, "company": asset.company }) if args.stock_consumption: asset_repair.stock_consumption = 1 asset_repair.warehouse = create_warehouse("Test Warehouse", company=asset.company) asset_repair.append( "stock_items", { "item": args.item or args.item_code or "_Test Item", "valuation_rate": args.rate if args.get("rate") is not None else 100, "consumed_quantity": args.qty or 1 }) asset_repair.insert(ignore_if_duplicate=True) if args.submit: asset_repair.repair_status = "Completed" asset_repair.cost_center = "_Test Cost Center - _TC" if args.stock_consumption: stock_entry = frappe.get_doc({ "doctype": "Stock Entry", "stock_entry_type": "Material Receipt", "company": asset.company }) stock_entry.append( 'items', { "t_warehouse": asset_repair.warehouse, "item_code": asset_repair.stock_items[0].item, "qty": asset_repair.stock_items[0].consumed_quantity }) stock_entry.submit() if args.capitalize_repair_cost: asset_repair.capitalize_repair_cost = 1 asset_repair.repair_cost = 1000 if asset.calculate_depreciation: asset_repair.increase_in_asset_life = 12 asset_repair.purchase_invoice = make_purchase_invoice().name asset_repair.submit() return asset_repair