Week 19 / 2023
Mohamed Saif published on
71 min,
14126 words
Categories: fluent-python frappe/erpnext data-engineering postgreSQL
Docker
- You should not run stateful applications in orchestration tools which are built for stateless apps.
- In general, I’d say don’t use Docker for production databases.
- Database services provided by your cloud provider are a very good way to go for production (and that means also staging due to prod/staging parity) databases.
CH2: An Array of Sequences
- In Python, an iterable is an object that can be iterated over using a loop, such as a for loop. An iterator, on the other hand, is an object that generates values on-the-fly as you iterate over an iterable. In other words, an iterator is an object that provides a way to access the items of an iterable one at a time.
- An object is considered iterable if it has an
__iter__()
method, which returns an iterator object. The iterator object, in turn, should have a__next__()
method, which returns the next value in the iteration sequence. When there are no more items to iterate over, thenext()
method should raise aStopIteration
exception.
# Define an iterable class
class MyIterable:
def __init__(self):
self.data = [1, 2, 3]
def __iter__(self):
return MyIterator(self.data)
# Define an iterator class
class MyIterator:
def __init__(self, data):
self.index = 0
self.data = data
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
self.index += 1
return value
# Use the iterable and iterator
my_iterable = MyIterable()
for value in my_iterable:
print(value)
PostgreSQL
- PostgreSQL uses a message-based protocol for communication between frontends and backends (clients and servers). The protocol is supported over TCP/IP and also over Unix-domain sockets. A frontend can connect to a database server using any number of connections of each connection type.
memray
- refcount leaks?
- quality assurance testing
PyMem_Free
: free memory allocated byPyMem_Malloc()
memray run [options] <file.py> [args]
: run a Python script with memory tracing enabled.memray run [options] -m <module> [args]
: run a Python module with memory tracing enabled.- By default they are saved into a file:
memray-<script>.<pid>.bin
.-o
option can be used to specify a different file name. - Memray supports tracking native C/C++ functions as well as Python functions.
- native tracking is used to track memory allocations made by the Python interpreter itself, as well as by C/C++ extensions. use
--native
option to enable native tracking. - Memray normally tracks allocation and deallocation requests made to the system allocator, but by default it won’t see individual Python objects being created. use
--objects
option to enable object tracking. - That’s because the Python interpreter normally uses its own memory pools for creating most objects, only making calls to the system allocator as needed to grow or shrink its memory pools.
- Memory fragmentation is a phenomenon that occurs when a large block of memory is allocated and deallocated over time, leaving behind small unused gaps of memory. These gaps can accumulate over time and result in a situation where there is not enough contiguous memory available to satisfy a large memory request, even if the total amount of free memory is sufficient.
- Internal fragmentation occurs when a block of memory is allocated to an application, but the application only uses a portion of the allocated memory. The unused portion of the memory is wasted, leading to internal fragmentation.
- External fragmentation occurs when free memory is split into small blocks of varying sizes due to a series of allocations and deallocations. These small blocks of memory cannot be combined to form a larger block, leading to external fragmentation.
- Internal fragmentation is more common in fixed-size memory allocation schemes, where memory is allocated in fixed-size blocks regardless of the size of the application's data. External fragmentation is more common in dynamic memory allocation schemes, where memory is allocated and deallocated based on the size of the application's data.
- The garbage collector uses a technique called reference counting to keep track of how many references or pointers there are to each object. Each time an object is assigned to a variable or passed as a parameter to a function, the garbage collector increments the reference count. When a reference to an object is removed, such as when a variable goes out of scope or is reassigned to a different object, the garbage collector decrements the reference count.
- However, Python also employs a more sophisticated garbage collection technique called cyclic garbage collection, which is used to handle cases where objects reference each other in a circular manner. In these cases, reference counting alone is not sufficient to determine which objects are live, and the cyclic garbage collector is used to detect and deallocate cycles of objects that are no longer accessible by the program.
sys.getrefcount
: returns the reference count of an object. This function is useful for debugging reference counting issues, but it should not be used in production code. (notice that the value returned by this function is always 1 more as the function also has a reference to the object when called)gc.get_count
: returns a tuple of three integers (count0, count1, count3) that represent the current generation counts. These counts are used internally by the cyclic garbage collector to determine when to run a collection cycle. The first two integers represent the number of objects that have been allocated since the last collection cycle, and the third integer represents the number of collection cycles that have occurred. The garbage collector runs a collection cycle when the number of allocations minus the number of deallocations exceeds the threshold value, which is determined by the third integer. The threshold value is initially set to 700, and it is increased by 10% after each collection cycle, up to a maximum value of 781. The garbage collector will not run a collection cycle if the threshold value is less than 700.count0
are the (tracked object allocations - deallocations) that happened since last garbage collection. Sometime after it reaches thegen0
threshold (defaults to 700), agen0
garbage collection will occur, andcount0
will reset.count1
is the number ofgen0
collections since the lastgen1
collection. Upon reaching the threshold (defaults to 10),gen1
collection will occur, andcount1
will reset.count2
is the number ofgen1
collections since the lastgen2
collection. Upon reaching the threshold (defaults to 10 as well),gen2
collection will occur, andcount2
will reset.- You can easily prove this yourself by running
gc.collect(gen)
, and see the thresholds usinggc.get_threshold()
. gc.collect
: runs a collection cycle. This function is useful for debugging reference counting issues, but it should not be used in production code. The garbage collector will run a collection cycle automatically when the number of allocations minus the number of deallocations exceeds the threshold value.- garbage collection design
usage: memray run [-m module | -c cmd | file] [args]
- Python has a layer of abstraction between code that allocates memory and the system allocator (malloc, free, realloc, etc). This layer of abstraction is called the Python Memory Manager. This layer of abstraction allows Python to provide features like automatic garbage collection, which can free up memory that is no longer needed by the program, and the ability to create objects with dynamic sizes. It also allows Python to handle memory management in a platform-independent way, without relying on the specific implementation of the system allocator.
- Pymalloc
- Pymalloc, a specialized object allocator written by Vladimir Marangozov, was a feature added to Python 2.1. Pymalloc is intended to be faster than the system malloc() and to have less memory overhead for allocation patterns typical of Python programs. The allocator uses C's malloc() function to get large pools of memory and then fulfills smaller memory requests from these pools.
- In
2.1
and2.2
,pymalloc
was an experimental feature and wasn't enabled by default; you had to explicitly enable it when compiling Python by providing the--with-pymalloc
option to the configure script. In2.3
, pymalloc has had further enhancements and is now enabled by default; you'll have to supply--without-pymalloc
to disable it. - if memory was allocated using
PyObject_Malloc()
, it has to be freed usingPyObject_Free()
, notfree()
. - How
pymalloc
works?pymalloc
uses a technique called memory pooling to reduce the overhead of allocating and deallocating memory. Memory pooling is a technique where a large block of memory is allocated and then divided into smaller blocks of a fixed size. These smaller blocks are then used to satisfy memory allocation requests. When a block is freed, it is added back to the pool and can be reused to satisfy future memory allocation requests. Requests greater than 512 bytes are routed to the system’s allocator. This means that even if pymalloc is active, it will only affect requests for 512 bytes or less. For those small requests, the pymalloc allocator will allocate big chunks of memory from the system allocator and then subdivide those big chunks. - pymalloc 3 different hierarichal data structures:
blocks
,pools
,arenas
. Arenas: These are chunks of memory thatpymalloc
directly requests from the system allocator usingmmap
. Arenas are always a multiple of 4 kilobytes. Arenas are subdivided into pools of different types. Pools: These are chunks of memory that are allocated from arenas. Pools are always a multiple of 256 bytes. Pools are subdivided into blocks of different sizes. Pools are used to easily find, allocate, and free memory blocks of a given size. Blocks: These are chunks of memory that are allocated from pools. Blocks are always a multiple of 8 bytes. Blocks are subdivided into objects of different sizes. These are the fundamental units of storage. Small allocation requests to pymalloc are always satisfied by returning a pointer to a specific block. - Any request for more than 512 bytes will be made directly using the system allocator.
- When a new allocation request is made,
pymalloc
searches the appropriate arena for a freeblock
of the requested size. If no freeblock
is available, a newarena
is created and added to thearena
list. - Another feature of pymalloc is that it is designed to be thread-safe. Each thread has its own set of freelists and arenas, so memory allocations and deallocations can be performed without interfering with other threads. However, to avoid excessive memory usage, arenas can be shared between threads if necessary.
- What are temporary allocations?
- In the context of memory management in Python, temporary allocations refer to the memory blocks that are expected to have a very short lifetime. These allocations are created and deallocated quickly, and they do not persist for long. The concept of "THRESHOLD" is used to identify whether an allocation is temporary or not. THRESHOLD is a parameter that specifies how many other allocations can occur between the time an allocation is made and the time it is deallocated. If the number of allocations that occur within this window is less than or equal to THRESHOLD, then the allocation is considered temporary. For example, if THRESHOLD is set to 0, then an allocation is considered temporary only if it is immediately deallocated. If THRESHOLD is set to 1, an allocation will be detected as temporary even if one other allocation occurs before it is deallocated.
- Flame graphs are a way to visualize how your program is spending its time.
Optimization Problems
- Optimization problem is a mathematical problem that aims to find the best solution from a set of possible solutions. The goal of optimization is to minimize or maximize an objective function while satisfying certain constraints.
- The objective function represents the quantity that we want to minimize or maximize, and the constraints represent the conditions that must be satisfied in order for a particular solution to be valid.
- The objective function and constraints can be defined mathematically or through a set of rules.
- Optimization problems can be divided into two categories: linear optimization and nonlinear optimization. Linear optimization problems involve linear equations and inequalities, while nonlinear optimization problems involve nonlinear equations and inequalities.
- Optimization problems can be found in a variety of fields, such as engineering, economics, finance, logistics, and computer science. They are often used to optimize resource allocation, production processes, scheduling, and financial portfolios, among others.
CH7: Ingestion
Message and Stream Ingestion Considerations
Ways To Ingest Data
- 1. Direct Database Connection: Most commonly, this connection is made using ODBC or JDBC.
- JDBC provides extraordinary database driver portability. ODBC drivers are shipped as OS and architecture native binaries; database vendors must maintain versions for each architecture/OS version that they wish to support. On the other hand, vendors can ship a single JDBC driver that is compatible with any JVM language (e.g., Java, Scala, Clojure, or Kotlin) and JVM data framework (i.e., Spark.) JDBC has become so popular that it is also used as an interface for non-JVM languages such as Python; the Python ecosystem provides translation tools that allow Python code to talk to a JDBC driver running on a local JVM.
- Many data frameworks can parallelize several simultaneous connections and partition queries to pull data in parallel.
- many databases now support native file export that bypasses JDBC/ODBC and exports data directly in formats such as Parquet, ORC, and Avro. Alternatively, many cloud data warehouses provide direct REST APIs.
- The advantage of synchronous replication is that the secondary database can offload work from the primary database by acting as a read replica; read queries can be redirected to the replica. The query will return the same results that would be returned from the primary database.
- Managed Data Connector: These platforms provide turnkey data connectivity to many data sources; they offer frameworks for writing custom connectors for unsupported data sources.
- These tools aim to provide a standard set of connectors available out of the box to spare data engineers building complicated plumbing to connect to a particular source. Instead of creating and managing a data connector, you outsource this service to a third party.
- Webhooks: A webhook is a mechanism for sending data from one application to another in real time. It is a simple HTTP callback that is triggered by an event. When the event occurs, the source application makes an HTTP request to the URL configured for the webhook. The destination application receives the request and processes the data. reverse API. Webhook-based data ingestion architectures can be brittle, difficult to maintain, and inefficient
- At this scale, the fastest, most efficient way to move data is not over the wire but by truck. Cloud vendors offer the ability to send your data via a physical “box of hard drives.” Simply order a storage device, called a transfer appliance, load your data from your servers, and then send it back to the cloud vendor, which will upload your data.
- Touchless production is an ideal that engineers should strive for, but situations inevitably arise that cannot be fully solved in development and staging environments.
- We often refer to data as a silent killer. If quality, valid data is the foundation of success in today’s businesses, using bad data to make decisions is much worse than having no data. Bad data has caused untold damage to businesses; these data disasters are sometimes called datastrophes.
- One of the inherent differences between DevOps and DataOps is that we expect software regressions only when we deploy changes, while data often presents regressions independently because of events outside our control.
- managed data connectors have simplified the ingestion process, such as Fivetran, Matillion, and Airbyte.
Frappe
frappe.get_doc
is used to retrieve a single document from the database as a frappe.model.Document object, which allows you to perform operations on the document and save it back to the database.frappe.get_list
is used to retrieve a list of documents from the database as a list of dictionaries. It allows you to specify filters, fields to be retrieved, and other options.frappe.get_value
is used to retrieve a single value from the database, such as a count or a sum. It allows you to specify filters and fields to be retrieved.- The main difference between these three functions is the format of the returned data.
frappe.get_doc
returns afrappe.model.Document
object,frappe.get_list
returns a list of dictionaries, andfrappe.get_value
returns a single value. Additionally,frappe.get_list
andfrappe.get_value
allow you to specify filters and fields to be retrieved, whilefrappe.get_doc
retrieves the entire document. ceil(x)
returns the smallest integer that is greater than or equal to x. For example,math.ceil(3.2)
returns 4, andmath.ceil(-3.2)
returns -3.floor(x)
returns the largest integer that is less than or equal to x. For example,math.floor(3.2)
returns 3, andmath.floor(-3.2)
returns -4.- Bin Doctype:
- The primary purpose of the
Bin
doctype is to maintain real-time stock information at the bin level (?). It helps organizations manage inventory efficiently by providing accurate visibility into the quantity of items available in each bin. - Fields:
item_code
,warehouse
,actual_qty
,reserved_qty
(the quantity of the item that is already reserved for orders or transactions). - Bin Management: With the Bin doctype, ERPNext enables users to manage multiple bins within a warehouse. This allows for granular control over stock movements and ensures that inventory is accurately tracked at a specific location level.
- Stock Transactions: The Bin doctype is closely linked to various stock-related transactions in ERPNext, such as stock entry, purchase receipt, sales order, and delivery note. When stock movements occur, such as goods receipt or goods issue, the relevant quantities are updated in the corresponding Bin records.
- Reports and Insights: ERPNext provides various reports and insights based on the Bin data, such as stock balance report, stock ledger, and stock valuation. These reports help users analyze inventory levels, track stock movements, and make informed decisions related to stock management.
- Material Request:
- a doctype used to manage the request for materials or items within an organization. It is typically used to initiate the procurement process by requesting the necessary items to fulfill specific requirements.
- contains information related to the requested materials, such as the item codes, quantities, desired delivery dates, priority levels, and additional details.
- It acts as a formal request from one department or user to another for the procurement or transfer of items.
- to streamline the request and approval process for obtaining necessary items within an organization. It helps to centralize and standardize the procurement workflow.
- Requester and Approver: Each Material Request is associated with a specific requester and can be assigned to an approver.
- Item Details: The doctype allows specifying multiple items within a single request. For each item, the requested quantity, required date, and any specific instructions or comments can be provided.
- Workflow Integration: The Material Request integrates with ERPNext's procurement workflow. Once approved, it can trigger the creation of subsequent documents like Purchase Orders, Material Transfers, or Manufacturing Orders, depending on the organization's setup and requirements.
- Status Tracking: The doctype maintains the status of each request, indicating whether it is pending, approved, partially fulfilled, or completed. This provides visibility into the progress of material requests and helps manage the procurement process efficiently.
- Overall, the Material Request serves as a central hub for managing material requirements within ERPNext. It helps streamline the procurement process, ensures proper documentation and tracking of requests, and facilitates effective communication between different departments or individuals involved in the procurement workflow.
- BOM:
- BOM represents the list of components or materials (with quantities) required to manufacture or assemble a product.
- BOMs are essential in manufacturing processes as they define the hierarchical structure of a product and ensure that all necessary components are available.
- Product Structure: BOMs define the structure of a product, specifying the components and their quantities needed for manufacturing. Each product in ERPNext can have one or more BOMs associated with it.
- Material Planning: BOMs play a crucial role in material planning and inventory management. They enable businesses to accurately calculate the quantity of materials required for production, ensuring efficient procurement and inventory control.
- Costing and Pricing: BOMs help in determining the cost of manufacturing a product by aggregating the costs of its components. This information is valuable for pricing decisions, profit analysis, and cost control.
- Production Orders: BOMs are used to create production orders, which are used to track and manage the manufacturing process. Production orders reference the BOM to generate work orders, schedule operations, and allocate resources.
- Versioning and Revisions: BOMs can have multiple versions, allowing businesses to manage changes in the product structure over time. Revisions to BOMs help maintain accurate records and track modifications made to the manufacturing process.
- Subcontracting and Outsourcing: BOMs can include subcontracted operations or outsourced components, enabling businesses to manage and track work performed by external suppliers or contractors.
- A BOM may also contain the manufacturing operations required to manufacture the Item.
- will help to create other document types like Work Orders and Job Cards.
- Multi-level BOMs: A BOM can have multiple levels, with each level representing a subassembly or component of the product. This allows for a hierarchical representation of the product structure.
- once a BOM is submitted, it cannot be edited.
- BOM Costing: calculated from the Valuation Rate of the raw materials/sub-assemblies involved and the Operation costs. you can update the costs using the Update Cost button. The BOM cost can also be set to be updated automatically via Manufacturing Settings
- Top 3 Challenges faced by Manufacturing Industry and its Possible Solutions:
- 1:
- Hooks:
doctype_js
: This hook is used to add custom JavaScript code to a DocType. The JavaScript code is added to the DocType's form view.extend_bootinfo
: This hook is used to add custom JavaScript code to the bootinfo object. The bootinfo object is a global object that is available to all pages in the Frappe application. The bootinfo object is used to pass data from the server to the client. This hook is used to modify the data that is passed to the client-side JavaScript at the time of page load. It is useful when you want to add some additional data or change the existing data that is available to the client-side code.doc_events
: This hook is used to define custom event handlers for a specific doctype. It allows developers to define custom logic that should be executed when a particular event occurs, such as before or after saving a document.override_whitelisted_methods
: This hook is used to override existing methods of a doctype's controller class. It is useful when you want to customize the behavior of an existing method without modifying the core code.override_doctype_class
: This hook is used to override the controller class of a specific doctype. It is useful when you want to customize the behavior of a doctype without modifying the core code.fixtures
: This hook is used to define fixtures for a specific doctype. It allows developers to define custom data that should be loaded into the database when a new site is created. This hook is used to add or modify fixtures (i.e., default data) for a specific app. It is useful when you want to add some initial data to your app or modify the existing data.jinja
: This hook is used to add custom Jinja filters to the Jinja environment. It is useful when you want to add some custom filters to the Jinja environment.- Timesheet:
- A Timesheet is the record of the number of hours spent by an employee on completion of each task.
- Billing Rate vs Costing Rate?
- Billing Amount vs Costing Amount?
- Sales Invoice vs from Timesheet? A customer can be billed based on the total number of hours an employee has worked for that customer. This can be done by creating a Sales Invoice from the Timesheet. A sales invoice can be generated from each Timesheet submitted by an employee which can be used to bill the customer.
- Project:
- A Project is a planned piece of work that is designed to find information about something, to produce something new, or to improve something.
- Project Template: A Project Template is a predefined set of tasks that can be used to create a new project. It is useful when you want to create similar projects repeatedly.
- Customer details: The Customer details section contains information about the customer who has requested the project.
- Costing and Billing:
- Estimated Cost:
- Total Sales Amount: if project is linked to sales order, then it will be the total amount of the sales order.
- Total Costing Amount:
import pytest
import frappe
import datetime
from hch_customization.overrides.bom import CustomBOM
@pytest.fixture()
def bom_doc():
return {
'name': 'BOM-ITM-ABB-PNL-12075-001',
'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com',
'docstatus': 0,
'idx': 0,
'item': 'ITM-ABB-PNL-12075',
'company': 'HCH Supply For Import & Export LTD',
'uom': 'Nos',
'business_unit': 'ABB',
'bom_type': 'Quotation',
'quantity': 1.0,
'is_active': 1,
'is_default': 1,
'allow_alternative_item': 0,
'set_rate_of_sub_assembly_item_based_on_bom': 1,
'project': 'PROJ-1000',
'project_name': 'trio garden DB ',
'image': None,
'single_line_diagram': None,
'shop_drawing': None,
'rm_cost_as_per': 'Price List',
'buying_price_list': 'ABB Panel Builder',
'price_list_currency': 'EGP', 'plc_conversion_rate': 1.0,
'currency': 'EGP',
'conversion_rate': 1.0,
'notes': None,
'with_operations': 0,
'transfer_material_against': 'Work Order',
'routing': None,
'fg_based_operating_cost': 0,
'operating_cost_per_bom_quantity': 0.0,
'process_loss_percentage': 0.0,
'process_loss_qty': 0.0,
'operating_cost': 0.0,
'raw_material_cost': 95980.72,
'scrap_material_cost': 0.0,
'base_operating_cost': 0.0,
'base_raw_material_cost': 95980.72,
'base_scrap_material_cost': 0.0,
'total_cost': 95980.72,
'selling_price': 117390.0,
'estimated_calculated_margin': 20.0,
'discounted_amount': -2069.17,
'base_total_cost': 95980.72,
'item_name': 'EMCC2',
'description': 'SMDB-BL7M-QS1',
'has_variants': 0,
'inspection_required': 0,
'quality_inspection_template': None, 'show_in_website': 0, 'route': 'bom-itm-abb-pnl-12075-001',
'website_image': None,
'thumbnail': None, 'show_items': 0, 'show_operations': 0, 'web_long_description': None, 'amended_from': None,
'doctype': 'BOM',
'exploded_items': [
{'name': '3d5e172d24', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 708653),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 708653), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 1, 'item_code': '02157', 'item_name': 'Space for D.O.L Motor Starter',
'source_warehouse': None, 'operation': None,
'description': '<div><p>Space for Motor Starter D.O.L up to 5KW</p></div>', 'image': '', 'stock_qty': 2.0,
'rate': 0.0, 'qty_consumed_per_unit': 2.0, 'stock_uom': 'Nos', 'amount': 0.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '41a37fbc0a', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 738353),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 738353), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 2, 'item_code': 'ABB-1SDA067092R1', 'item_name': 'ABB-1SDA067092R1',
'source_warehouse': None, 'operation': None,
'description': 'MCCB-ABB- XT2N 160-4P 63A-EKIP LS/I-36KA Ther. adj.(0.4-1) In,Mag.Adj.(1-10)In',
'image': '', 'stock_qty': 1.0, 'rate': 9738.05, 'qty_consumed_per_unit': 1.0, 'stock_uom': 'Nos',
'amount': 9738.05, 'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'exploded_items', 'parenttype': 'BOM',
'doctype': 'BOM Explosion Item'},
{'name': '448132cea5', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 744579),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 744579), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 3, 'item_code': 'ABB-1SAM451000R1016', 'item_name': 'ABB-1SAM451000R1016',
'source_warehouse': None, 'operation': None,
'description': 'Manual motor starter MS165-54, setting range (40:54) A-22KW', 'image': '',
'stock_qty': 4.0, 'rate': 5718.3, 'qty_consumed_per_unit': 4.0, 'stock_uom': 'Nos', 'amount': 22873.2,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '8eaff28656', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 751463),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 751463), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 4, 'item_code': 'ABB-1SAM201903R1001', 'item_name': 'ABB-1SAM201903R1001',
'source_warehouse': None, 'operation': None, 'description': 'SK1-11 Signal contact For MMS', 'image': '',
'stock_qty': 7.0, 'rate': 369.25, 'qty_consumed_per_unit': 7.0, 'stock_uom': 'Nos', 'amount': 2584.75,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '08d56853b7', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 760795),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 760795), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 5, 'item_code': 'ABB-1SBL367001R1300', 'item_name': 'ABB-1SBL367001R1300',
'source_warehouse': None, 'operation': None,
'description': '3P CONTACTOR ABB AF52-30-00-13 53A @ AC3 100A@AC1 220VAC 50/60HZ', 'image': '',
'stock_qty': 4.0, 'rate': 2077.95, 'qty_consumed_per_unit': 4.0, 'stock_uom': 'Nos', 'amount': 8311.8,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '3154a2393d', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 767021),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 767021), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 6, 'item_code': 'ABB-1SBL347001R1300', 'item_name': 'ABB-1SBL347001R1300',
'source_warehouse': None, 'operation': None,
'description': '3P CONTACTOR ABB AF40-30-00-13 40A @ AC3 70A @ AC1 220VAC 50/60HZ', 'image': '',
'stock_qty': 2.0, 'rate': 1869.35, 'qty_consumed_per_unit': 2.0, 'stock_uom': 'Nos', 'amount': 3738.7,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '7f1b35663d', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 775008),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 775008), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 7, 'item_code': 'ABB-1SBN010120R1011', 'item_name': 'ABB-1SBN010120R1011',
'source_warehouse': None, 'operation': None,
'description': 'Aux. contact block for contactor 1 N.C + 1 N.O CAL4-11 For AF09….AF96 Side', 'image': '',
'stock_qty': 10.0, 'rate': 193.55, 'qty_consumed_per_unit': 10.0, 'stock_uom': 'Nos', 'amount': 1935.5,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '1081c72739', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 782762),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 782762), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 8, 'item_code': 'ABB-1SAM350000R1009', 'item_name': 'ABB-1SAM350000R1009',
'source_warehouse': None, 'operation': None,
'description': 'Manual motor starter MS132-6.3, setting range (4.0:6.3) A-2.2KW', 'image': '',
'stock_qty': 7.0, 'rate': 1271.2, 'qty_consumed_per_unit': 7.0, 'stock_uom': 'Nos', 'amount': 8898.4,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'c61a3446fd', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 788870),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 788870), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 9, 'item_code': 'ABB-1SBL237001R1300', 'item_name': 'ABB-1SBL237001R1300',
'source_warehouse': None, 'operation': None,
'description': '3P CONTACTOR ABB AF26-30-13 26A @ AC3 45A@AC1 COIL 220VAC 50/60HZ', 'image': '',
'stock_qty': 8.0, 'rate': 978.25, 'qty_consumed_per_unit': 8.0, 'stock_uom': 'Nos', 'amount': 7826.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '8251d26cc1', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 809486),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 809486), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 10, 'item_code': 'ABB-1SAM350000R1003', 'item_name': 'ABB-1SAM350000R1003',
'source_warehouse': None, 'operation': None,
'description': 'Manual motor starter MMS132-0.4, setting range (0.25:0.4) A-0.09KW', 'image': '',
'stock_qty': 1.0, 'rate': 1126.3, 'qty_consumed_per_unit': 1.0, 'stock_uom': 'Nos', 'amount': 1126.3,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '217b1cc104', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 818343),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 818343), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 11, 'item_code': 'ABB-1SBL137001R1110',
'item_name': 'AF09-30-10-11 24-60V50/60HZ 20-60VDC Contactor', 'source_warehouse': None, 'operation': None,
'description': '<div><p>AF09-30-10-11 24-60V50/60HZ 20-60VDC Contactor</p></div>', 'image': '',
'stock_qty': 2.0, 'rate': 0.0, 'qty_consumed_per_unit': 2.0, 'stock_uom': 'Nos', 'amount': 0.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'b7312e1f5a', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 826762),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 826762), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 12, 'item_code': 'ABB-1SBN010110R1001', 'item_name': 'ABB-1SBN010110R1001',
'source_warehouse': None, 'operation': None,
'description': 'Aux. contact block for contactor 1 N.C CA1-01 For AF09….AF96 Front', 'image': '',
'stock_qty': 4.0, 'rate': 75.25, 'qty_consumed_per_unit': 4.0, 'stock_uom': 'Nos', 'amount': 301.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'b1661eb5ec', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 838498),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 838498), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 13, 'item_code': 'ABB-1SAM350000R1008', 'item_name': 'ABB-1SAM350000R1008',
'source_warehouse': None, 'operation': None,
'description': 'Manual motor starter MS132-4.0, setting range (2.5:4.0) A-1.5KW', 'image': '',
'stock_qty': 1.0, 'rate': 1271.2, 'qty_consumed_per_unit': 1.0, 'stock_uom': 'Nos', 'amount': 1271.2,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '23cd1f93eb', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 844545),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 844545), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 14, 'item_code': 'ABB-1SAM350000R1005', 'item_name': 'ABB-1SAM350000R1005',
'source_warehouse': None, 'operation': None,
'description': 'Manual motor starter MS132-1.0, setting range (0.63:1.0) A-0.25KW', 'image': '',
'stock_qty': 1.0, 'rate': 1206.1, 'qty_consumed_per_unit': 1.0, 'stock_uom': 'Nos', 'amount': 1206.1,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '0e602f0d31', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 850633),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 850633), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 15, 'item_code': 'ABB-1SAM350000R1007', 'item_name': 'ABB-1SAM350000R1007',
'source_warehouse': None, 'operation': None,
'description': 'Manual motor starter MS132-2.5, setting range (1.6:2.5) A-0.75KW', 'image': '',
'stock_qty': 2.0, 'rate': 1271.2, 'qty_consumed_per_unit': 2.0, 'stock_uom': 'Nos', 'amount': 2542.4,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'ad5e77e24d', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 856446),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 856446), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 16, 'item_code': 'ABB-1SBL137001R1310', 'item_name': 'ABB-1SBL137001R1310',
'source_warehouse': None, 'operation': None,
'description': '3P CONTACTOR ABB-AF09-30-3P-09A ,1NO, 9A @ AC3 25A@AC1 COIL 220VAC 50/60HZ', 'image': '',
'stock_qty': 2.0, 'rate': 546.7, 'qty_consumed_per_unit': 2.0, 'stock_uom': 'Nos', 'amount': 1093.4,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'ef86658118', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 861873),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 861873), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 17, 'item_code': 'ABB-2CDS252001R0204', 'item_name': 'ABB-2CDS252001R0204',
'source_warehouse': None, 'operation': None, 'description': 'MCB-ABB-S202-2P-C20A-10KA.', 'image': '',
'stock_qty': 1.0, 'rate': 252.0, 'qty_consumed_per_unit': 1.0, 'stock_uom': 'Nos', 'amount': 252.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '4531c62ea1', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 870439),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 870439), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 18, 'item_code': 'ABB-1SKE168030C0001', 'item_name': 'ABB-1SKE168030C0001',
'source_warehouse': None, 'operation': None, 'description': 'SR Basic with Mounting plate\xa0 160x80x30',
'image': '', 'stock_qty': 1.0, 'rate': 9983.4, 'qty_consumed_per_unit': 1.0, 'stock_uom': 'Nos',
'amount': 9983.4, 'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'exploded_items', 'parenttype': 'BOM',
'doctype': 'BOM Explosion Item'},
{'name': '0eda911383', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 875885),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 875885), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 19, 'item_code': 'ITM-ABB-00147', 'item_name': 'Pilot lamp red-Kiro',
'source_warehouse': None, 'operation': None, 'description': 'Pilot lamp red', 'image': None,
'stock_qty': 15.0, 'rate': 4.0, 'qty_consumed_per_unit': 15.0, 'stock_uom': 'Nos', 'amount': 60.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'f8e589338e', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 881336),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 881336), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 20, 'item_code': 'ITM-ABB-00120', 'item_name': 'Glass Fuse 4A',
'source_warehouse': None, 'operation': None, 'description': 'Glass Fuse 4A', 'image': None,
'stock_qty': 59.0, 'rate': 0.5, 'qty_consumed_per_unit': 59.0, 'stock_uom': 'Nos', 'amount': 29.5,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '6dc67d4246', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 887714),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 887714), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 21, 'item_code': 'ITM-ABB-00031', 'item_name': 'FUSE TERMINAL BLOCK-PHONIX',
'source_warehouse': None, 'operation': None, 'description': 'FUSE TERMINAL BLOCK-PHONIX', 'image': None,
'stock_qty': 59.0, 'rate': 22.0, 'qty_consumed_per_unit': 59.0, 'stock_uom': 'Nos', 'amount': 1298.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '4efcc4a5ab', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 892450),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 892450), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 22, 'item_code': 'ITM-ABB-00149', 'item_name': 'Pilot lamp green-Kiro',
'source_warehouse': None, 'operation': None, 'description': 'Pilot lamp green', 'image': None,
'stock_qty': 15.0, 'rate': 4.0, 'qty_consumed_per_unit': 15.0, 'stock_uom': 'Nos', 'amount': 60.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '4ae872657f', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 899085),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 899085), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 23, 'item_code': 'ITM-ABB-00148', 'item_name': 'Pilot lamp yellow-kiro',
'source_warehouse': None, 'operation': None, 'description': 'Pilot lamp yellow', 'image': None,
'stock_qty': 15.0, 'rate': 4.0, 'qty_consumed_per_unit': 15.0, 'stock_uom': 'Nos', 'amount': 60.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '83b30f2dde', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 905605),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 905605), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 24, 'item_code': 'ITM-ABB-00151', 'item_name': 'stop push button red-EMAS',
'source_warehouse': None, 'operation': None, 'description': 'stop push button red', 'image': None,
'stock_qty': 14.0, 'rate': 50.0, 'qty_consumed_per_unit': 14.0, 'stock_uom': 'Nos', 'amount': 700.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'c484bbfdad', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 912228),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 912228), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 25, 'item_code': 'ITM-ABB-00150', 'item_name': 'start push button green-Emas',
'source_warehouse': None, 'operation': None, 'description': 'start push button green', 'image': None,
'stock_qty': 14.0, 'rate': 50.0, 'qty_consumed_per_unit': 14.0, 'stock_uom': 'Nos', 'amount': 700.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '7a2a6c42aa', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 917938),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 917938), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 26, 'item_code': 'ITM-ABB-01119', 'item_name': 'Isolating transformer 2KVA 220/220',
'source_warehouse': None, 'operation': None, 'description': 'Isolating transformer 2KVA 220/220',
'image': '', 'stock_qty': 1.0, 'rate': 1.0, 'qty_consumed_per_unit': 1.0, 'stock_uom': 'Nos',
'amount': 1.0, 'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'exploded_items', 'parenttype': 'BOM',
'doctype': 'BOM Explosion Item'},
{'name': 'bd73fcec0e', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 923977),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 923977), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 27, 'item_code': 'ITM-ABB-00140', 'item_name': 'wire cable black 6MM -Elsweedy',
'source_warehouse': None, 'operation': None, 'description': 'wire cable black 6MM -Elsweedy', 'image': '',
'stock_qty': 0.78, 'rate': 3399.0, 'qty_consumed_per_unit': 0.78, 'stock_uom': 'Roll', 'amount': 2651.22,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'a22950c2c1', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 929640),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 929640), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 28, 'item_code': 'ITM-ABB-00142', 'item_name': 'wire cable black 16MM -Elsweedy',
'source_warehouse': None, 'operation': None, 'description': 'wire cable black 16MM -Elsweedy', 'image': '',
'stock_qty': 0.12, 'rate': 8865.0, 'qty_consumed_per_unit': 0.12, 'stock_uom': 'Roll', 'amount': 1063.8,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '1442c2d7d7', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 936014),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 936014), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 29, 'item_code': 'ITM-ABB-00555', 'item_name': 'حامل مراية SR طول 154.5 سم',
'source_warehouse': None, 'operation': None, 'description': 'حامل مراية SR طول 154.5 سم', 'image': '',
'stock_qty': 2.0, 'rate': 135.85, 'qty_consumed_per_unit': 2.0, 'stock_uom': 'Nos', 'amount': 271.7,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'e0e22aff9b', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 941914),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 941914), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 30, 'item_code': 'ITM-ABB-00602', 'item_name': 'مرايا 40 سم سد عرض 80 سم',
'source_warehouse': None, 'operation': None, 'description': 'مرايا 40 سم سد عرض 80 سم', 'image': '',
'stock_qty': 4.0, 'rate': 328.9, 'qty_consumed_per_unit': 4.0, 'stock_uom': 'Nos', 'amount': 1315.6,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'c0f857d007', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 948235),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 948235), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 31, 'item_code': 'ITM-ABB-00134', 'item_name': 'Omega-Bar-2Metr',
'source_warehouse': None, 'operation': None, 'description': 'Omega-Bar-2Metr', 'image': '',
'stock_qty': 2.0, 'rate': 60.0, 'qty_consumed_per_unit': 2.0, 'stock_uom': 'Nos', 'amount': 120.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'c594121c12', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 954180),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 954180), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 32, 'item_code': 'ITM-ABB-00569', 'item_name': 'حامل اوميجا منتشرات 635',
'source_warehouse': None, 'operation': None, 'description': 'حامل اوميجا منتشرات 635', 'image': '',
'stock_qty': 4.0, 'rate': 121.55, 'qty_consumed_per_unit': 4.0, 'stock_uom': 'Nos', 'amount': 486.2,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': 'b7a1950c50', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 959875),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 959875), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 33, 'item_code': 'ITM-ABB-00704', 'item_name': 'Copper Size 5*15',
'source_warehouse': None, 'operation': None, 'description': 'Copper Size 5*15', 'image': '',
'stock_qty': 7.0, 'rate': 270.0, 'qty_consumed_per_unit': 7.0, 'stock_uom': 'Meter', 'amount': 1890.0,
'include_item_in_manufacturing': 1, 'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'exploded_items', 'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'},
{'name': '8da89cb86a', 'owner': None, 'creation': datetime.datetime(2023, 5, 11, 12, 23, 30, 965944),
'modified': datetime.datetime(2023, 5, 11, 12, 23, 30, 965944), 'modified_by': 'Administrator',
'docstatus': 0, 'idx': 34, 'item_code': 'ITM-TMP-00839', 'item_name': 'MISC1000', 'source_warehouse': None,
'operation': None, 'description': 'MISC1000', 'image': '', 'stock_qty': 0.65, 'rate': 1000.0,
'qty_consumed_per_unit': 0.65, 'stock_uom': 'Nos', 'amount': 650.0, 'include_item_in_manufacturing': 1,
'sourced_by_supplier': 0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'exploded_items',
'parenttype': 'BOM', 'doctype': 'BOM Explosion Item'}],
'items': [
{'name': '62fc9f891e', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 1, 'item_code': 'ABB-1SDA067092R1',
'item_name': 'ABB-1SDA067092R1', 'abb_order_code': '1SDA067092R1', 'section': 'Incoming',
'subsection': None, 'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': '', 'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'MCCB-ABB- XT2N 160-4P 63A-EKIP LS/I-36KA Ther. adj.(0.4-1) In,Mag.Adj.(1-10)In',
'image': '', 'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0,
'rate': 9738.05, 'base_rate': 9738.05, 'amount': 9738.05, 'base_amount': 9738.05,
'override_default_cost': 0, 'is_discounted_item': 0, 'list_cost_rate': 9738.05,
'apply_discount_percentage': 0.0, 'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0,
'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': 'ITM-ABB-PNL-12070',
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'items', 'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'f7bf3992cd', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 2, 'item_code': 'ITM-TMP-00001',
'item_name': 'R,S,T', 'abb_order_code': None, 'section': 'Incoming', 'subsection': None, 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': 'BOM-ITM-TMP-00001-001',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Three indicating lamps (R,S,T)</p></div>', 'image': '', 'qty': 1.0, 'uom': 'Nos',
'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 125.0, 'base_rate': 125.0,
'amount': 125.0, 'base_amount': 125.0, 'override_default_cost': 0, 'is_discounted_item': 1,
'list_cost_rate': 79.5, 'apply_discount_percentage': 0.0, 'discounted_amount': -45.5,
'qty_consumed_per_unit': 1.0, 'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'items', 'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '66115e85f3', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 3,
'item_code': 'ABB-1SAM451000R1016', 'item_name': 'ABB-1SAM451000R1016',
'abb_order_code': '1SAM451000R1016', 'section': 'Outgoing', 'subsection': 'Y/D 22KW at 440V Qty.(2)',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Manual motor starter MS165-54, setting range (40:54) A-22KW', 'image': '', 'qty': 2.0,
'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 5718.3,
'base_rate': 5718.3, 'amount': 11436.6, 'base_amount': 11436.6, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 5718.3, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': 'ac7c238b00', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 4,
'item_code': 'ABB-1SAM201903R1001', 'item_name': 'ABB-1SAM201903R1001',
'abb_order_code': '1SAM201903R1001', 'section': 'AUXILARIES',
'subsection': 'Y/D 22KW at 440V Qty.(2)', 'print_hide': 0, 'print_hide_qty': 0,
'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'SK1-11 Signal contact For MMS', 'image': '', 'qty': 2.0,
'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0,
'rate': 369.25, 'base_rate': 369.25, 'amount': 738.5, 'base_amount': 738.5,
'override_default_cost': 0, 'is_discounted_item': 0, 'list_cost_rate': 369.25,
'apply_discount_percentage': 0.0, 'discounted_amount': 0.0,
'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '5b38a7138e', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 5,
'item_code': 'ABB-1SBL367001R1300', 'item_name': 'ABB-1SBL367001R1300',
'abb_order_code': '1SBL367001R1300', 'section': 'Outgoing', 'subsection': 'Y/D 22KW at 440V Qty.(2)',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': '3P CONTACTOR ABB AF52-30-00-13 53A @ AC3 100A@AC1 220VAC 50/60HZ', 'image': '',
'qty': 4.0, 'uom': 'Nos', 'stock_qty': 4.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 2077.95,
'base_rate': 2077.95, 'amount': 8311.8, 'base_amount': 8311.8, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 2077.95, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 4.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '523344c272', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 6,
'item_code': 'ABB-1SBL347001R1300', 'item_name': 'ABB-1SBL347001R1300',
'abb_order_code': '1SBL347001R1300', 'section': 'Outgoing',
'subsection': 'Y/D 22KW at 440V Qty.(2)', 'print_hide': 0, 'print_hide_qty': 0,
'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': '3P CONTACTOR ABB AF40-30-00-13 40A @ AC3 70A @ AC1 220VAC 50/60HZ',
'image': '', 'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 1869.35, 'base_rate': 1869.35, 'amount': 3738.7,
'base_amount': 3738.7, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 1869.35, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '13f549b87c', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 7,
'item_code': 'ABB-1SBN010120R1011', 'item_name': 'ABB-1SBN010120R1011',
'abb_order_code': '1SBN010120R1011', 'section': 'AUXILARIES', 'subsection': 'Y/D 22KW at 440V Qty.(2)',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Aux. contact block for contactor 1 N.C + 1 N.O CAL4-11 For AF09….AF96 Side', 'image': '',
'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 193.55,
'base_rate': 193.55, 'amount': 387.1, 'base_amount': 387.1, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 193.55, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '66be3464f2', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 8,
'item_code': 'ITM-TMP-00013', 'item_name': 'P.B', 'abb_order_code': None,
'section': 'Outgoing', 'subsection': 'Y/D 22KW at 440V Qty.(2)', 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': 'BOM-ITM-TMP-00013-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Two push buttons (ON-OFF)</p></div>', 'image': '',
'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 100.0, 'base_rate': 100.0, 'amount': 200.0,
'base_amount': 200.0, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 100.0, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'dc2ce16dd1', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 9, 'item_code': 'ITM-TMP-00002',
'item_name': 'ON-OFF-TRIP', 'abb_order_code': None, 'section': 'Outgoing',
'subsection': 'Y/D 22KW at 440V Qty.(2)', 'print_hide': 0, 'print_hide_qty': 0, 'operation': None,
'do_not_explode': 0, 'bom_no': 'BOM-ITM-TMP-00002-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Three indicating lamp (ON-OFF-TRIP) with Fuses</p></div>', 'image': '', 'qty': 2.0,
'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 125.0,
'base_rate': 125.0, 'amount': 250.0, 'base_amount': 250.0, 'override_default_cost': 0,
'is_discounted_item': 1, 'list_cost_rate': 79.5, 'apply_discount_percentage': 0.0,
'discounted_amount': -91.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '3de7d256e8', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 10,
'item_code': 'ABB-1SAM350000R1009', 'item_name': 'ABB-1SAM350000R1009',
'abb_order_code': '1SAM350000R1009', 'section': 'Outgoing',
'subsection': 'D.O.L 0.8KW at 220v Qty.(7)', 'print_hide': 0, 'print_hide_qty': 0,
'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Manual motor starter MS132-6.3, setting range (4.0:6.3) A-2.2KW',
'image': '', 'qty': 7.0, 'uom': 'Nos', 'stock_qty': 7.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 1271.2, 'base_rate': 1271.2, 'amount': 8898.4,
'base_amount': 8898.4, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 1271.2, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 7.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'c9440ce5e2', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 11,
'item_code': 'ABB-1SBL237001R1300', 'item_name': 'ABB-1SBL237001R1300',
'abb_order_code': '1SBL237001R1300', 'section': 'Outgoing', 'subsection': 'D.O.L 0.8KW at 220v Qty.(7)',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': '3P CONTACTOR ABB AF26-30-13 26A @ AC3 45A@AC1 COIL 220VAC 50/60HZ', 'image': '',
'qty': 7.0, 'uom': 'Nos', 'stock_qty': 7.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 978.25,
'base_rate': 978.25, 'amount': 6847.75, 'base_amount': 6847.75, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 978.25, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 7.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': 'ee29acbb66', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 12,
'item_code': 'ABB-1SBN010120R1011', 'item_name': 'ABB-1SBN010120R1011',
'abb_order_code': '1SBN010120R1011', 'section': 'AUXILARIES',
'subsection': 'D.O.L 0.8KW at 220v Qty.(7)', 'print_hide': 0, 'print_hide_qty': 0,
'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Aux. contact block for contactor 1 N.C + 1 N.O CAL4-11 For AF09….AF96 Side',
'image': '', 'qty': 7.0, 'uom': 'Nos', 'stock_qty': 7.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 193.55, 'base_rate': 193.55, 'amount': 1354.85,
'base_amount': 1354.85, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 193.55, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 7.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'a6f51bd305', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 13, 'item_code': 'ITM-TMP-00013',
'item_name': 'P.B', 'abb_order_code': None, 'section': 'Outgoing',
'subsection': 'D.O.L 0.8KW at 220v Qty.(7)', 'print_hide': 0, 'print_hide_qty': 0, 'operation': None,
'do_not_explode': 0, 'bom_no': 'BOM-ITM-TMP-00013-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0, 'description': '<div><p>Two push buttons (ON-OFF)</p></div>',
'image': '', 'qty': 7.0, 'uom': 'Nos', 'stock_qty': 7.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0,
'rate': 100.0, 'base_rate': 100.0, 'amount': 700.0, 'base_amount': 700.0, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 100.0, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 7.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '8bde1d8c7f', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 14,
'item_code': 'ITM-TMP-00002', 'item_name': 'ON-OFF-TRIP', 'abb_order_code': None,
'section': 'Outgoing', 'subsection': 'D.O.L 0.8KW at 220v Qty.(7)',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': 'BOM-ITM-TMP-00002-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Three indicating lamp (ON-OFF-TRIP) with Fuses</p></div>',
'image': '', 'qty': 7.0, 'uom': 'Nos', 'stock_qty': 7.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 125.0, 'base_rate': 125.0, 'amount': 875.0,
'base_amount': 875.0, 'override_default_cost': 0, 'is_discounted_item': 1,
'list_cost_rate': 79.5, 'apply_discount_percentage': 0.0,
'discounted_amount': -318.5, 'qty_consumed_per_unit': 7.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '840edd7765', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 15,
'item_code': 'ABB-1SAM350000R1003', 'item_name': 'ABB-1SAM350000R1003',
'abb_order_code': '1SAM350000R1003', 'section': 'Outgoing', 'subsection': 'D.O.L 0.05KW at 220v',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Manual motor starter MMS132-0.4, setting range (0.25:0.4) A-0.09KW', 'image': '',
'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 1126.3,
'base_rate': 1126.3, 'amount': 1126.3, 'base_amount': 1126.3, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 1126.3, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': 'b3f593dbb1', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 16,
'item_code': 'ABB-1SAM201903R1001', 'item_name': 'ABB-1SAM201903R1001',
'abb_order_code': '1SAM201903R1001', 'section': 'AUXILARIES',
'subsection': 'D.O.L 0.05KW at 220v', 'print_hide': 0, 'print_hide_qty': 0,
'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'SK1-11 Signal contact For MMS', 'image': '', 'qty': 1.0,
'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0,
'rate': 369.25, 'base_rate': 369.25, 'amount': 369.25, 'base_amount': 369.25,
'override_default_cost': 0, 'is_discounted_item': 0, 'list_cost_rate': 369.25,
'apply_discount_percentage': 0.0, 'discounted_amount': 0.0,
'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '81dd8477b3', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 17,
'item_code': 'ABB-1SBL137001R1110', 'item_name': 'AF09-30-10-11 24-60V50/60HZ 20-60VDC Contactor',
'abb_order_code': '1SBL137001R1110', 'section': 'Outgoing', 'subsection': 'D.O.L 0.05KW at 220v',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>AF09-30-10-11 24-60V50/60HZ 20-60VDC Contactor</p></div>', 'image': '', 'qty': 1.0,
'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 0.0,
'base_rate': 0.0, 'amount': 0.0, 'base_amount': 0.0, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 0.0, 'apply_discount_percentage': 0.0, 'discounted_amount': 0.0,
'qty_consumed_per_unit': 1.0, 'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'items', 'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '2fd345b31e', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 18,
'item_code': 'ABB-1SBN010110R1001', 'item_name': 'ABB-1SBN010110R1001',
'abb_order_code': '1SBN010110R1001', 'section': 'AUXILARIES', 'subsection': 'D.O.L 0.05KW at 220v',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Aux. contact block for contactor 1 N.C CA1-01 For AF09….AF96 Front', 'image': '',
'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 75.25,
'base_rate': 75.25, 'amount': 75.25, 'base_amount': 75.25, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 75.25, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '1ad108d0d1', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 19,
'item_code': 'ITM-TMP-00013', 'item_name': 'P.B', 'abb_order_code': None,
'section': 'Outgoing', 'subsection': 'D.O.L 0.05KW at 220v', 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': 'BOM-ITM-TMP-00013-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Two push buttons (ON-OFF)</p></div>', 'image': '',
'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 100.0, 'base_rate': 100.0, 'amount': 100.0,
'base_amount': 100.0, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 100.0, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '9a98ffd6ab', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 20, 'item_code': 'ITM-TMP-00002',
'item_name': 'ON-OFF-TRIP', 'abb_order_code': None, 'section': 'Outgoing',
'subsection': 'D.O.L 0.05KW at 220v', 'print_hide': 0, 'print_hide_qty': 0, 'operation': None,
'do_not_explode': 0, 'bom_no': 'BOM-ITM-TMP-00002-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Three indicating lamp (ON-OFF-TRIP) with Fuses</p></div>', 'image': '', 'qty': 1.0,
'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 125.0,
'base_rate': 125.0, 'amount': 125.0, 'base_amount': 125.0, 'override_default_cost': 0,
'is_discounted_item': 1, 'list_cost_rate': 79.5, 'apply_discount_percentage': 0.0,
'discounted_amount': -45.5, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '08e639a195', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 21,
'item_code': 'ABB-1SAM350000R1008', 'item_name': 'ABB-1SAM350000R1008',
'abb_order_code': '1SAM350000R1008', 'section': 'Outgoing',
'subsection': 'D.O.L 0.55KW at 220v', 'print_hide': 0, 'print_hide_qty': 0,
'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Manual motor starter MS132-4.0, setting range (2.5:4.0) A-1.5KW',
'image': '', 'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 1271.2, 'base_rate': 1271.2, 'amount': 1271.2,
'base_amount': 1271.2, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 1271.2, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '0f01348fd1', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 22,
'item_code': 'ABB-1SAM201903R1001', 'item_name': 'ABB-1SAM201903R1001',
'abb_order_code': '1SAM201903R1001', 'section': 'AUXILARIES', 'subsection': 'D.O.L 0.55KW at 220v',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'SK1-11 Signal contact For MMS', 'image': '', 'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0,
'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 369.25, 'base_rate': 369.25, 'amount': 369.25,
'base_amount': 369.25, 'override_default_cost': 0, 'is_discounted_item': 0, 'list_cost_rate': 369.25,
'apply_discount_percentage': 0.0, 'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0,
'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0,
'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '8ef85185f5', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 23,
'item_code': 'ABB-1SBL237001R1300', 'item_name': 'ABB-1SBL237001R1300',
'abb_order_code': '1SBL237001R1300', 'section': 'Outgoing', 'subsection': 'D.O.L 0.55KW at 220v',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': '3P CONTACTOR ABB AF26-30-13 26A @ AC3 45A@AC1 COIL 220VAC 50/60HZ', 'image': '',
'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 978.25,
'base_rate': 978.25, 'amount': 978.25, 'base_amount': 978.25, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 978.25, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '273a70a3fa', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 24,
'item_code': 'ABB-1SBN010120R1011', 'item_name': 'ABB-1SBN010120R1011',
'abb_order_code': '1SBN010120R1011', 'section': 'AUXILARIES',
'subsection': 'D.O.L 0.55KW at 220v', 'print_hide': 0, 'print_hide_qty': 0,
'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Aux. contact block for contactor 1 N.C + 1 N.O CAL4-11 For AF09….AF96 Side',
'image': '', 'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 193.55, 'base_rate': 193.55, 'amount': 193.55,
'base_amount': 193.55, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 193.55, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '9e8675d9a7', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 25, 'item_code': 'ITM-TMP-00013',
'item_name': 'P.B', 'abb_order_code': None, 'section': 'Outgoing', 'subsection': 'D.O.L 0.55KW at 220v',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': 'BOM-ITM-TMP-00013-001', 'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Two push buttons (ON-OFF)</p></div>', 'image': '', 'qty': 1.0, 'uom': 'Nos',
'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 100.0, 'base_rate': 100.0,
'amount': 100.0, 'base_amount': 100.0, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 100.0, 'apply_discount_percentage': 0.0, 'discounted_amount': 0.0,
'qty_consumed_per_unit': 1.0, 'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'items', 'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '9bc9087250', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 26, 'item_code': 'ITM-TMP-00002',
'item_name': 'ON-OFF-TRIP', 'abb_order_code': None, 'section': 'Outgoing',
'subsection': 'D.O.L 0.55KW at 220v', 'print_hide': 0, 'print_hide_qty': 0, 'operation': None,
'do_not_explode': 0, 'bom_no': 'BOM-ITM-TMP-00002-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Three indicating lamp (ON-OFF-TRIP) with Fuses</p></div>', 'image': '', 'qty': 1.0,
'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 125.0,
'base_rate': 125.0, 'amount': 125.0, 'base_amount': 125.0, 'override_default_cost': 0,
'is_discounted_item': 1, 'list_cost_rate': 79.5, 'apply_discount_percentage': 0.0,
'discounted_amount': -45.5, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '5033a05ef7', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 27,
'item_code': 'ABB-1SAM350000R1005', 'item_name': 'ABB-1SAM350000R1005',
'abb_order_code': '1SAM350000R1005', 'section': 'Outgoing',
'subsection': 'D.O.L 0.2KW at 220v', 'print_hide': 0, 'print_hide_qty': 0,
'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Manual motor starter MS132-1.0, setting range (0.63:1.0) A-0.25KW',
'image': '', 'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 1206.1, 'base_rate': 1206.1, 'amount': 1206.1,
'base_amount': 1206.1, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 1206.1, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '0754300fad', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 28,
'item_code': 'ABB-1SAM201903R1001', 'item_name': 'ABB-1SAM201903R1001',
'abb_order_code': '1SAM201903R1001', 'section': 'AUXILARIES', 'subsection': 'D.O.L 0.2KW at 220v',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'SK1-11 Signal contact For MMS', 'image': '', 'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0,
'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 369.25, 'base_rate': 369.25, 'amount': 369.25,
'base_amount': 369.25, 'override_default_cost': 0, 'is_discounted_item': 0, 'list_cost_rate': 369.25,
'apply_discount_percentage': 0.0, 'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0,
'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0,
'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '48db986dfc', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 29,
'item_code': 'ABB-1SBL137001R1110', 'item_name': 'AF09-30-10-11 24-60V50/60HZ 20-60VDC Contactor',
'abb_order_code': '1SBL137001R1110', 'section': 'Outgoing', 'subsection': 'D.O.L 0.2KW at 220v',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>AF09-30-10-11 24-60V50/60HZ 20-60VDC Contactor</p></div>', 'image': '', 'qty': 1.0,
'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 0.0,
'base_rate': 0.0, 'amount': 0.0, 'base_amount': 0.0, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 0.0, 'apply_discount_percentage': 0.0, 'discounted_amount': 0.0,
'qty_consumed_per_unit': 1.0, 'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'items', 'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'a1e671f101', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 30,
'item_code': 'ABB-1SBN010110R1001', 'item_name': 'ABB-1SBN010110R1001',
'abb_order_code': '1SBN010110R1001', 'section': 'AUXILARIES', 'subsection': 'D.O.L 0.2KW at 220v',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Aux. contact block for contactor 1 N.C CA1-01 For AF09….AF96 Front', 'image': '',
'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 75.25,
'base_rate': 75.25, 'amount': 75.25, 'base_amount': 75.25, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 75.25, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '1953505fbf', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 31,
'item_code': 'ITM-TMP-00013', 'item_name': 'P.B', 'abb_order_code': None,
'section': 'Outgoing', 'subsection': 'D.O.L 0.2KW at 220v', 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': 'BOM-ITM-TMP-00013-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Two push buttons (ON-OFF)</p></div>', 'image': '',
'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 100.0, 'base_rate': 100.0, 'amount': 100.0,
'base_amount': 100.0, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 100.0, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'b775b34f97', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 32, 'item_code': 'ITM-TMP-00002',
'item_name': 'ON-OFF-TRIP', 'abb_order_code': None, 'section': 'Outgoing',
'subsection': 'D.O.L 0.2KW at 220v', 'print_hide': 0, 'print_hide_qty': 0, 'operation': None,
'do_not_explode': 0, 'bom_no': 'BOM-ITM-TMP-00002-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Three indicating lamp (ON-OFF-TRIP) with Fuses</p></div>', 'image': '', 'qty': 1.0,
'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 125.0,
'base_rate': 125.0, 'amount': 125.0, 'base_amount': 125.0, 'override_default_cost': 0,
'is_discounted_item': 1, 'list_cost_rate': 79.5, 'apply_discount_percentage': 0.0,
'discounted_amount': -45.5, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': 'd90d3439f9', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 33,
'item_code': 'ABB-1SAM350000R1007', 'item_name': 'ABB-1SAM350000R1007',
'abb_order_code': '1SAM350000R1007', 'section': 'Outgoing',
'subsection': 'D.O.L 0.37KW at 220v Qty.(2)', 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Manual motor starter MS132-2.5, setting range (1.6:2.5) A-0.75KW',
'image': '', 'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 1271.2, 'base_rate': 1271.2, 'amount': 2542.4,
'base_amount': 2542.4, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 1271.2, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'bd2b865718', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 34,
'item_code': 'ABB-1SAM201903R1001', 'item_name': 'ABB-1SAM201903R1001',
'abb_order_code': '1SAM201903R1001', 'section': 'AUXILARIES', 'subsection': 'D.O.L 0.37KW at 220v Qty.(2)',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'SK1-11 Signal contact For MMS', 'image': '', 'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0,
'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 369.25, 'base_rate': 369.25, 'amount': 738.5,
'base_amount': 738.5, 'override_default_cost': 0, 'is_discounted_item': 0, 'list_cost_rate': 369.25,
'apply_discount_percentage': 0.0, 'discounted_amount': 0.0, 'qty_consumed_per_unit': 2.0,
'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0,
'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '5fa67120c9', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 35,
'item_code': 'ABB-1SBL137001R1310', 'item_name': 'ABB-1SBL137001R1310',
'abb_order_code': '1SBL137001R1310', 'section': 'Outgoing', 'subsection': 'D.O.L 0.37KW at 220v Qty.(2)',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': '3P CONTACTOR ABB-AF09-30-3P-09A ,1NO, 9A @ AC3 25A@AC1 COIL 220VAC 50/60HZ', 'image': '',
'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 546.7,
'base_rate': 546.7, 'amount': 1093.4, 'base_amount': 1093.4, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 546.7, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '99aca72e4b', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 36,
'item_code': 'ABB-1SBN010110R1001', 'item_name': 'ABB-1SBN010110R1001',
'abb_order_code': '1SBN010110R1001', 'section': 'AUXILARIES',
'subsection': 'D.O.L 0.37KW at 220v Qty.(2)', 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Aux. contact block for contactor 1 N.C CA1-01 For AF09….AF96 Front',
'image': '', 'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 75.25, 'base_rate': 75.25, 'amount': 150.5,
'base_amount': 150.5, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 75.25, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '82f18ab093', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 37, 'item_code': 'ITM-TMP-00013',
'item_name': 'P.B', 'abb_order_code': None, 'section': 'Outgoing',
'subsection': 'D.O.L 0.37KW at 220v Qty.(2)', 'print_hide': 0, 'print_hide_qty': 0, 'operation': None,
'do_not_explode': 0, 'bom_no': 'BOM-ITM-TMP-00013-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0, 'description': '<div><p>Two push buttons (ON-OFF)</p></div>',
'image': '', 'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0,
'rate': 100.0, 'base_rate': 100.0, 'amount': 200.0, 'base_amount': 200.0, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 100.0, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '598c56ea91', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 38,
'item_code': 'ITM-TMP-00002', 'item_name': 'ON-OFF-TRIP', 'abb_order_code': None,
'section': 'Outgoing', 'subsection': 'D.O.L 0.37KW at 220v Qty.(2)',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': 'BOM-ITM-TMP-00002-001', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': '<div><p>Three indicating lamp (ON-OFF-TRIP) with Fuses</p></div>',
'image': '', 'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 125.0, 'base_rate': 125.0, 'amount': 250.0,
'base_amount': 250.0, 'override_default_cost': 0, 'is_discounted_item': 1,
'list_cost_rate': 79.5, 'apply_discount_percentage': 0.0,
'discounted_amount': -91.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '52ccc6e00f', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 39, 'item_code': 'ITM-ABB-00120',
'item_name': 'Glass Fuse 4A', 'abb_order_code': None, 'section': 'AUXILARIES', 'subsection': '',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0, 'description': 'Glass Fuse 4A',
'image': '', 'qty': 14.0, 'uom': 'Nos', 'stock_qty': 14.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0,
'rate': 1.0, 'base_rate': 1.0, 'amount': 14.0, 'base_amount': 14.0, 'override_default_cost': 0,
'is_discounted_item': 1, 'list_cost_rate': 0.5, 'apply_discount_percentage': 0.0,
'discounted_amount': -7.0, 'qty_consumed_per_unit': 14.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'},
{'name': '78c4b3926f', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 40, 'item_code': 'ITM-ABB-00031',
'item_name': 'FUSE TERMINAL BLOCK-PHONIX', 'abb_order_code': None, 'section': 'AUXILARIES',
'subsection': '', 'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': '', 'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'FUSE TERMINAL BLOCK-PHONIX', 'image': '', 'qty': 14.0, 'uom': 'Nos', 'stock_qty': 14.0,
'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 40.0, 'base_rate': 40.0, 'amount': 560.0,
'base_amount': 560.0, 'override_default_cost': 0, 'is_discounted_item': 1, 'list_cost_rate': 22.0,
'apply_discount_percentage': 0.0, 'discounted_amount': -252.0, 'qty_consumed_per_unit': 14.0,
'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0,
'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'c102da2276', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 41,
'item_code': 'ABB-1SAM451000R1016', 'item_name': 'ABB-1SAM451000R1016',
'abb_order_code': '1SAM451000R1016', 'section': 'Outgoing', 'subsection': 'Spare', 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Manual motor starter MS165-54, setting range (40:54) A-22KW', 'image': '', 'qty': 2.0,
'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 5718.3,
'base_rate': 5718.3, 'amount': 11436.6, 'base_amount': 11436.6, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 5718.3, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '40a34d8248', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 42,
'item_code': '02157', 'item_name': 'Space for D.O.L Motor Starter',
'abb_order_code': None, 'section': 'Outgoing', 'subsection': 'Space',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': '', 'source_warehouse': None, 'allow_alternative_item': 0,
'lock_qty': 0,
'description': '<div><p>Space for Motor Starter D.O.L up to 5KW</p></div>',
'image': '', 'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos',
'conversion_factor': 1.0, 'rate': 0.0, 'base_rate': 0.0, 'amount': 0.0,
'base_amount': 0.0, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 0.0, 'apply_discount_percentage': 0.0, 'discounted_amount': 0.0,
'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '64281ebf3e', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 43, 'item_code': 'ITM-ABB-01119',
'item_name': 'Isolating transformer 2KVA 220/220', 'abb_order_code': None, 'section': 'Outgoing',
'subsection': 'Isolating Transformer:', 'print_hide': 0, 'print_hide_qty': 0, 'operation': None,
'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'Isolating transformer 2KVA 220/220', 'image': '', 'qty': 1.0, 'uom': 'Nos',
'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 1.0, 'base_rate': 1.0,
'amount': 1.0, 'base_amount': 1.0, 'override_default_cost': 0, 'is_discounted_item': 0,
'list_cost_rate': 1.0, 'apply_discount_percentage': 0.0, 'discounted_amount': 0.0,
'qty_consumed_per_unit': 1.0, 'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001',
'parentfield': 'items', 'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '21d41d8895', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 44,
'item_code': 'ABB-2CDS252001R0204', 'item_name': 'ABB-2CDS252001R0204',
'abb_order_code': '2CDS252001R0204', 'section': 'Outgoing', 'subsection': 'Isolating Transformer:',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'MCB-ABB-S202-2P-C20A-10KA.', 'image': '', 'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0,
'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 252.0, 'base_rate': 252.0, 'amount': 252.0,
'base_amount': 252.0, 'override_default_cost': 0, 'is_discounted_item': 0, 'list_cost_rate': 252.0,
'apply_discount_percentage': 0.0, 'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0,
'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0,
'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '37ccd54924', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 45, 'item_code': 'ITM-ABB-00140',
'item_name': 'wire cable black 6MM -Elsweedy', 'abb_order_code': None, 'section': 'Enclosure',
'subsection': '', 'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': '', 'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'wire cable black 6MM -Elsweedy', 'image': '', 'qty': 78.0, 'uom': 'Meter',
'stock_qty': 0.78, 'stock_uom': 'Roll', 'conversion_factor': 0.01, 'rate': 33.99, 'base_rate': 33.99,
'amount': 2651.22, 'base_amount': 2651.22, 'override_default_cost': 0, 'is_discounted_item': 1,
'list_cost_rate': 28.325, 'apply_discount_percentage': 0.0, 'discounted_amount': -441.87,
'qty_consumed_per_unit': 0.78, 'has_variants': 0, 'include_item_in_manufacturing': 1,
'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'f4f6b3c256', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 46, 'item_code': 'ITM-ABB-00142',
'item_name': 'wire cable black 16MM -Elsweedy', 'abb_order_code': None, 'section': 'Enclosure',
'subsection': '', 'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': '', 'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'wire cable black 16MM -Elsweedy', 'image': '', 'qty': 12.0, 'uom': 'Meter',
'stock_qty': 0.12, 'stock_uom': 'Roll', 'conversion_factor': 0.01, 'rate': 88.65, 'base_rate': 88.65,
'amount': 1063.8, 'base_amount': 1063.8, 'override_default_cost': 0, 'is_discounted_item': 1,
'list_cost_rate': 73.875, 'apply_discount_percentage': 0.0, 'discounted_amount': -177.3,
'qty_consumed_per_unit': 0.12, 'has_variants': 0, 'include_item_in_manufacturing': 1,
'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '8b54bbe0af', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 47,
'item_code': 'ABB-1SKE168030C0001', 'item_name': 'ABB-1SKE168030C0001',
'abb_order_code': '1SKE168030C0001', 'section': 'Enclosure', 'subsection': '', 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0, 'description': 'SR Basic with Mounting plate\xa0 160x80x30',
'image': '', 'qty': 1.0, 'uom': 'Nos', 'stock_qty': 1.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0,
'rate': 9983.4, 'base_rate': 9983.4, 'amount': 9983.4, 'base_amount': 9983.4, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 9983.4, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 1.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': 'ffea74a5b2', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 48,
'item_code': 'ITM-ABB-00555', 'item_name': 'حامل مراية SR طول 154.5 سم',
'abb_order_code': None, 'section': 'Enclosure', 'subsection': '', 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'حامل مراية SR طول 154.5 سم', 'image': '', 'qty': 2.0,
'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0,
'rate': 135.85, 'base_rate': 135.85, 'amount': 271.7, 'base_amount': 271.7,
'override_default_cost': 0, 'is_discounted_item': 1, 'list_cost_rate': 104.5,
'apply_discount_percentage': 0.0, 'discounted_amount': -62.7,
'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'ea6bafccf8', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 49, 'item_code': 'ITM-ABB-00602',
'item_name': 'مرايا 40 سم سد عرض 80 سم', 'abb_order_code': None, 'section': 'Enclosure', 'subsection': '',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'مرايا 40 سم سد عرض 80 سم', 'image': '', 'qty': 4.0, 'uom': 'Nos', 'stock_qty': 4.0,
'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 328.9, 'base_rate': 328.9, 'amount': 1315.6,
'base_amount': 1315.6, 'override_default_cost': 0, 'is_discounted_item': 1, 'list_cost_rate': 253.0,
'apply_discount_percentage': 0.0, 'discounted_amount': -303.6, 'qty_consumed_per_unit': 4.0,
'has_variants': 0, 'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0,
'selected_bom': None, 'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': '1db047d70f', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 50, 'item_code': 'ITM-ABB-00134',
'item_name': 'Omega-Bar-2Metr', 'abb_order_code': None, 'section': 'Enclosure', 'subsection': '',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0, 'description': 'Omega-Bar-2Metr',
'image': '', 'qty': 2.0, 'uom': 'Nos', 'stock_qty': 2.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0,
'rate': 60.0, 'base_rate': 60.0, 'amount': 120.0, 'base_amount': 120.0, 'override_default_cost': 0,
'is_discounted_item': 1, 'list_cost_rate': 45.0, 'apply_discount_percentage': 0.0,
'discounted_amount': -30.0, 'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': 'b4bbe90b94', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 51,
'item_code': 'ITM-ABB-00569', 'item_name': 'حامل اوميجا منتشرات 635',
'abb_order_code': None, 'section': 'Enclosure', 'subsection': '', 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0,
'description': 'حامل اوميجا منتشرات 635', 'image': '', 'qty': 4.0, 'uom': 'Nos',
'stock_qty': 4.0, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 121.55,
'base_rate': 121.55, 'amount': 486.2, 'base_amount': 486.2,
'override_default_cost': 0, 'is_discounted_item': 1, 'list_cost_rate': 93.5,
'apply_discount_percentage': 0.0, 'discounted_amount': -112.2,
'qty_consumed_per_unit': 4.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'd63eaf7d14', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 52, 'item_code': 'ITM-ABB-00704',
'item_name': 'Copper Size 5*15', 'abb_order_code': None, 'section': 'Enclosure', 'subsection': 'Main C.B',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '',
'source_warehouse': None, 'allow_alternative_item': 0, 'lock_qty': 0, 'description': 'Copper Size 5*15',
'image': '', 'qty': 5.0, 'uom': 'Meter', 'stock_qty': 5.0, 'stock_uom': 'Meter', 'conversion_factor': 1.0,
'rate': 270.0, 'base_rate': 270.0, 'amount': 1350.0, 'base_amount': 1350.0, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 270.0, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 5.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}, {'name': '3d5511e475', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 53,
'item_code': 'ITM-ABB-00704', 'item_name': 'Copper Size 5*15',
'abb_order_code': None, 'section': 'Enclosure', 'subsection': 'E+N',
'print_hide': 0, 'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0,
'bom_no': '', 'source_warehouse': None, 'allow_alternative_item': 0,
'lock_qty': 0, 'description': 'Copper Size 5*15', 'image': '', 'qty': 2.0,
'uom': 'Meter', 'stock_qty': 2.0, 'stock_uom': 'Meter', 'conversion_factor': 1.0,
'rate': 270.0, 'base_rate': 270.0, 'amount': 540.0, 'base_amount': 540.0,
'override_default_cost': 0, 'is_discounted_item': 0, 'list_cost_rate': 270.0,
'apply_discount_percentage': 0.0, 'discounted_amount': 0.0,
'qty_consumed_per_unit': 2.0, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None,
'sourced_by_supplier': 0, 'selected_bom': None, 'selected_qty': 0.0,
'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items',
'parenttype': 'BOM', 'doctype': 'BOM Item'},
{'name': 'a4a1aa4678', 'owner': 'sherouk.hesham@hch-supply.com',
'creation': datetime.datetime(2023, 2, 22, 14, 39, 19, 688775),
'modified': datetime.datetime(2023, 2, 23, 11, 34, 2, 743510),
'modified_by': 'sherouk.hesham@hch-supply.com', 'docstatus': 0, 'idx': 54, 'item_code': 'ITM-TMP-00839',
'item_name': 'MISC1000', 'abb_order_code': None, 'section': 'Enclosure', 'subsection': '', 'print_hide': 0,
'print_hide_qty': 0, 'operation': None, 'do_not_explode': 0, 'bom_no': '', 'source_warehouse': None,
'allow_alternative_item': 0, 'lock_qty': 0, 'description': 'MISC1000', 'image': '', 'qty': 0.65,
'uom': 'Nos', 'stock_qty': 0.65, 'stock_uom': 'Nos', 'conversion_factor': 1.0, 'rate': 1000.0,
'base_rate': 1000.0, 'amount': 650.0, 'base_amount': 650.0, 'override_default_cost': 0,
'is_discounted_item': 0, 'list_cost_rate': 1000.0, 'apply_discount_percentage': 0.0,
'discounted_amount': 0.0, 'qty_consumed_per_unit': 0.65, 'has_variants': 0,
'include_item_in_manufacturing': 1, 'original_item': None, 'sourced_by_supplier': 0, 'selected_bom': None,
'selected_qty': 0.0, 'parent': 'BOM-ITM-ABB-PNL-12075-001', 'parentfield': 'items', 'parenttype': 'BOM',
'doctype': 'BOM Item'}
],
'scrap_items': [], 'operations': []
}
def test_update_cost(monkeypatch, bom_doc):
def _mocked_get_doc(doctype, name):
if doctype == "BOM":
return bom_doc
elif doctype == "Project":
return {"items_discount": [{"item_code": "Test Item", "discounted_rate": 100}]}
def _mocked_get_all(doctype, filters, fields):
if doctype == "BOM Item":
return [
{
"name": "Test BOM Item",
"item_code": "Test Item",
"rate": 100,
"apply_discount_percentage": 0,
"is_discounted_item": 0,
}
]
def _mocked_get_rm_rate(args):
return 100
monkeypatch.setattr(frappe, "get_doc", _mocked_get_doc)
monkeypatch.setattr(frappe, "get_all", _mocked_get_all)
monkeypatch.setattr(CustomBOM, "get_rm_rate", _mocked_get_rm_rate)
CustomBOM.update_cost(bom_doc)