Skip to content

Commit

Permalink
Merge pull request #382 from efeone/aumms_20
Browse files Browse the repository at this point in the history
feat:Create metal ledger and stock ledger from jewellery Job Card
  • Loading branch information
muhammadmp committed May 3, 2024
2 parents 6d5df79 + aca5017 commit 7c9814f
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"field_order": [
"naming_series",
"manufacturing_request",
"manufacturing_stage",
"column_break_kvpp",
"stage",
"status",
Expand All @@ -25,6 +26,7 @@
"expected_weight",
"keep_metal_ledger",
"column_break_ojtc",
"uom",
"required_date",
"uom",
"raw_material_from_previous_stage_only",
Expand Down Expand Up @@ -222,6 +224,10 @@
"label": "Smith Warehouse",
"options": "Warehouse"
},
{
"fieldname": "column_break_ojtc",
"fieldtype": "Column Break"
},
{
"fieldname": "raw_materiel_items_tab",
"fieldtype": "Tab Break",
Expand All @@ -239,26 +245,21 @@
"label": "Scrap Item Details",
"options": "Scrap Item Detail"
},
{
"fieldname": "stage",
"fieldtype": "Link",
"label": "Stage",
"options": "Manufacturing Stage"
},
{
"fieldname": "column_break_ojtc",
"fieldtype": "Column Break"
},
{
"default": "0",
"fieldname": "keep_metal_ledger",
"fieldtype": "Check",
"label": "Keep Metal Ledger"
"label": "Keep Metal ledger"
},
{
"fieldname": "manufacturing_stage",
"fieldtype": "Data",
"label": "Manufacturing Stage"
}
],
"is_submittable": 1,
"links": [],
"modified": "2024-05-03 09:40:41.587688",
"modified": "2024-05-03 11:54:06.129691",
"modified_by": "Administrator",
"module": "AuMMS Manufacturing",
"name": "Jewellery Job Card",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,12 @@ def before_insert(self):

def on_submit(self):
self.mark_as_completed(completed=1)
self.create_metal_ledger()
self.create_stock_ledger()

def on_cancel(self):
self.mark_as_completed(completed=0)

def validate(self):
self.create_metal_ledger()

def update_item_table(self):
if frappe.db.exists('Raw Material Bundle', {'manufacturing_request': self.manufacturing_request}):
raw_material_doc = frappe.get_doc('Raw Material Bundle', {'manufacturing_request': self.manufacturing_request})
Expand All @@ -39,3 +38,41 @@ def mark_as_completed(self, completed):
frappe.db.set_value('Manufacturing Stage', stage.name, 'completed', completed)
manufacturing_request.mark_as_finished()
break

def create_metal_ledger(self) :
if self.keep_metal_ledger:
# if frappe.db.exists('Metal Ledger Entry',{'voucher_type': self.doctype, 'voucher_no': self.name}):
for item in self.item_details:
new_metal_ledger = frappe.new_doc('Metal Ledger Entry')
new_metal_ledger.posting_date = frappe.utils.today()
new_metal_ledger.posting_time = frappe.utils.now()
new_metal_ledger.voucher_type = self.doctype
# new_metal_ledger.voucher_no = self.name
# new_metal_ledger.party_link = self.party_link
new_metal_ledger.item_code = item.item
new_metal_ledger.item_name = item.item
new_metal_ledger.stock_uom = self.uom
new_metal_ledger.item_type = self.type
new_metal_ledger.purity = self.purity
new_metal_ledger.out_qty = item.quantity
new_metal_ledger.balance_qty = 0
new_metal_ledger.insert(ignore_permissions=True)
frappe.msgprint("Metal Ledger Created.", indicator="green", alert=1)

def create_stock_ledger(self):
if self.keep_metal_ledger:
for item in self.item_details:
new_stock_ledger = frappe.new_doc('Stock Ledger Entry')
new_stock_ledger.posting_date = frappe.utils.today()
new_stock_ledger.posting_time = frappe.utils.now()
new_stock_ledger.voucher_type = self.doctype
new_stock_ledger.voucher_no = self.name
new_stock_ledger.item_code = item.item
# new_stock_ledger.item_name = item.item
new_stock_ledger.stock_uom = self.uom
new_stock_ledger.warehouse = self.smith_warehouse
new_stock_ledger.purity = self.purity
new_stock_ledger.actual_qty = item.quantity
new_stock_ledger.balance_qty = 0
new_stock_ledger.insert(ignore_permissions=True)
frappe.msgprint("Stock Ledger Created.", indicator="green", alert=1)
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ frappe.ui.form.on("Manufacturing Stage", {
'manufacturing_request': frm.doc.name,
'stage' : row.manufacturing_stage,
'manufacturing_stage' : row.name,
'expected_execution_time' : row.required_time
})
},
create_job_card: function(frm, cdt, cdn) {
Expand All @@ -51,6 +52,14 @@ frappe.ui.form.on("Manufacturing Stage", {
row.previous_stage = r.message
frm.refresh_fields()
})
frm.call('update_previous_stage_product', {idx:row.idx}).then(r=>{
row.previous_stage_product = r.message
frm.refresh_fields()
})
frm.call('update_previous_stage_weight', {idx:row.idx}).then(r=>{
row.previous_stage_weight = r.message
frm.refresh_fields()
})
}
},
raw_material_available: function(frm, cdt, cdn) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,6 @@
"label": "Weight"
},
{
"default": "All Smith Warehouse - SJL",
"fieldname": "supervisor_warehouse",
"fieldtype": "Link",
"label": "Supervisor Warehouse",
Expand Down Expand Up @@ -252,7 +251,7 @@
"link_fieldname": "manufacturing_request"
}
],
"modified": "2024-05-02 15:30:51.957904",
"modified": "2024-05-03 14:12:21.910906",
"modified_by": "Administrator",
"module": "AuMMS Manufacturing",
"name": "Manufacturing Request",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from frappe import _
from frappe.model.document import Document
from frappe.desk.form.assign_to import add as add_assignment
from aumms.aumms.utils import create_notification_log

class ManufacturingRequest(Document):

Expand Down Expand Up @@ -44,6 +45,7 @@ def send_notification_to_owner(self):
for_user = self.owner
create_notification_log(self.doctype, self.name, for_user, subject, content, 'Alert')


def mark_as_finished(self):
finished=1
for stage in self.manufacturing_stages:
Expand Down Expand Up @@ -89,6 +91,26 @@ def update_previous_stage(self, idx):
if row.idx == prev_row:
return row.manufacturing_stage

@frappe.whitelist()
def update_previous_stage_product(self, idx):
for stage in self.manufacturing_stages:
if stage.idx == idx:
if stage.previous_stage_completed:
prev_row = stage.idx - 1
for row in self.manufacturing_stages:
if row.idx == prev_row:
return row.product

@frappe.whitelist()
def update_previous_stage_weight(self, idx):
for stage in self.manufacturing_stages:
if stage.idx == idx:
if stage.previous_stage_completed:
prev_row = stage.idx - 1
for row in self.manufacturing_stages:
if row.idx == prev_row:
return row.weight

@frappe.whitelist()
def create_jewellery_job_card(self, stage_row_id):
stage = frappe.get_doc('Manufacturing Stage', stage_row_id)
Expand All @@ -107,7 +129,7 @@ def create_jewellery_job_card(self, stage_row_id):
new_jewellery_job_card.category = self.category
new_jewellery_job_card.smith_warehouse = stage.smith_warehouse
new_jewellery_job_card.expected_execution_time = stage.expected_execution_time
new_jewellery_job_card.manufacturing_request = stage.manufacturing_stage
new_jewellery_job_card.manufacturing_stage = stage.manufacturing_stage
new_jewellery_job_card.stage = stage.manufacturing_stage
new_jewellery_job_card.supervisor_warehouse = self.supervisor_warehouse
new_jewellery_job_card.raw_material_from_previous_stage_only = stage.is_raw_material_from_previous_stage_only
Expand Down

0 comments on commit 7c9814f

Please sign in to comment.