Skip to content

Commit

Permalink
[MOD] add import bom from csv code
Browse files Browse the repository at this point in the history
  • Loading branch information
jayraj-omnia committed Jan 20, 2025
1 parent bdd165f commit bd6e005
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
43 changes: 42 additions & 1 deletion plm_box/models/ir_attachment.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@
import datetime
import logging
import pytz
import json
import os
import base64
import csv

from dateutil import parser
from odoo import _, api, fields, models
Expand Down Expand Up @@ -228,5 +232,42 @@ def getDocumentStateMulty(self):
ret[str(doc.id)] = doc.getDocumentState()
return ret

@api.model
def import_bom_from_csv(self, box_id, doc_id):
if doc_id and box_id:
attachment_id = self.env['ir.attachment'].browse(doc_id)
product_details = self.parse_file_name(attachment_id.name)
if product_details and product_details.get('prefix') == "IMP_BOM":
product_id = self.env['product.product'].search([
("engineering_code","=", product_details.get('part_number'))
])

box_id = self.env['plm.box'].browse(box_id)
csv_column_mapping = json.loads(box_id.csv_structure)
file_content = base64.b64decode(attachment_id.datas)
csv_reader = csv.reader(file_content.decode('utf-8').splitlines())
bom_lines = []
for row in csv_reader:
bom_line_data = {}

return True


# Function to validate and extract details from the file name
@api.model
def parse_file_name(self,fname):
if fname.endswith('.csv'):
parts = fname.split('_')
if parts[0] == 'IMP' or parts[1] == 'BOM':
try:
part_number = parts[2]
revision = parts[3].split('.')[0]
except IndexError:
return "Invalid file: missing part number or revision"

# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
return {
"prefix": f"{parts[0]}_{parts[1]}",
"part_number": part_number,
"revision": revision,
"file_extension": os.path.splitext(fname)[1]
}
2 changes: 2 additions & 0 deletions plm_box/models/plm_box.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ class Plm_box(models.Model):
box_id = fields.Integer(_("Box ID"))
version = fields.Integer(_("Version"))
description = fields.Text(_("Description"))
csv_structure = fields.Text(_('CSV Structure'), default="""{"engineering_code":"","engineering_revision": "","qty":""}""")

document_rel = fields.One2many("ir.attachment", "plm_box_id", "Documents")
plm_box_rel = fields.Many2many(
"plm.box",
Expand Down
3 changes: 3 additions & 0 deletions plm_box/views/non_cad_doc.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@
<page string="Description">
<field name="description"/>
</page>
<page string="Import Bom">
<field name="csv_structure"/>
</page>
</notebook>
</sheet>
<chatter/>
Expand Down

0 comments on commit bd6e005

Please sign in to comment.