feat: provision to create PR from SCR

This commit is contained in:
s-aga-r 2023-11-28 16:28:54 +05:30
parent 37b3ac7952
commit 8052103197
4 changed files with 68 additions and 41 deletions

View File

@ -122,6 +122,20 @@ frappe.ui.form.on("Purchase Receipt", {
erpnext.accounts.dimensions.update_dimension(frm, frm.doctype);
},
subcontracting_receipt: (frm) => {
if (frm.doc.is_subcontracted === 1 && frm.doc.is_old_subcontracting_flow === 0 && frm.doc.subcontracting_receipt) {
frm.set_value('items', null);
erpnext.utils.map_current_doc({
method: 'erpnext.subcontracting.doctype.subcontracting_receipt.subcontracting_receipt.make_purchase_receipt',
source_name: frm.doc.subcontracting_receipt,
target_doc: frm,
freeze: true,
freeze_message: __('Mapping Purchase Receipt ...'),
});
}
},
toggle_display_account_head: function(frm) {
var enabled = erpnext.is_perpetual_inventory_enabled(frm.doc.company)
frm.fields_dict["items"].grid.set_column_disp(["cost_center"], enabled);

View File

@ -26,27 +26,36 @@ frappe.ui.form.on('Subcontracting Receipt', {
refresh: (frm) => {
if (frm.doc.docstatus === 1) {
frm.add_custom_button(__('Stock Ledger'), () => {
frappe.route_options = {
voucher_no: frm.doc.name,
from_date: frm.doc.posting_date,
to_date: moment(frm.doc.modified).format('YYYY-MM-DD'),
company: frm.doc.company,
show_cancelled_entries: frm.doc.docstatus === 2
}
frappe.set_route('query-report', 'Stock Ledger');
}, __('View'));
frappe.route_options = {
voucher_no: frm.doc.name,
from_date: frm.doc.posting_date,
to_date: moment(frm.doc.modified).format('YYYY-MM-DD'),
company: frm.doc.company,
show_cancelled_entries: frm.doc.docstatus === 2
}
frappe.set_route('query-report', 'Stock Ledger');
}, __('View'));
frm.add_custom_button(__('Accounting Ledger'), () => {
frappe.route_options = {
voucher_no: frm.doc.name,
from_date: frm.doc.posting_date,
to_date: moment(frm.doc.modified).format('YYYY-MM-DD'),
company: frm.doc.company,
group_by: 'Group by Voucher (Consolidated)',
show_cancelled_entries: frm.doc.docstatus === 2
}
frappe.set_route('query-report', 'General Ledger');
}, __('View'));
frappe.route_options = {
voucher_no: frm.doc.name,
from_date: frm.doc.posting_date,
to_date: moment(frm.doc.modified).format('YYYY-MM-DD'),
company: frm.doc.company,
group_by: 'Group by Voucher (Consolidated)',
show_cancelled_entries: frm.doc.docstatus === 2
}
frappe.set_route('query-report', 'General Ledger');
}, __('View'));
frm.add_custom_button(__('Purchase Receipt'), () => {
frappe.model.open_mapped_doc({
method: 'erpnext.subcontracting.doctype.subcontracting_receipt.subcontracting_receipt.make_purchase_receipt',
frm: frm,
freeze: true,
freeze_message: __('Creating Purchase Receipt ...')
});
}, __('Create'));
}
if (!frm.doc.is_return && frm.doc.docstatus === 1 && frm.doc.per_returned < 100) {

View File

@ -542,18 +542,20 @@ def make_subcontract_return(source_name, target_doc=None):
return make_return_doc("Subcontracting Receipt", source_name, target_doc)
def make_purchase_receipt(subcontracting_receipt, save=False, submit=False, notify=False):
if isinstance(subcontracting_receipt, str):
subcontracting_receipt = frappe.get_doc("Subcontracting Receipt", subcontracting_receipt)
@frappe.whitelist()
def make_purchase_receipt(source_name, target_doc=None, save=False, submit=False, notify=False):
if isinstance(source_name, str):
source_name = frappe.get_doc("Subcontracting Receipt", source_name)
if not subcontracting_receipt.is_return:
purchase_receipt = frappe.new_doc("Purchase Receipt")
purchase_receipt.is_subcontracted = 1
purchase_receipt.is_old_subcontracting_flow = 0
if not source_name.is_return:
if not target_doc:
target_doc = frappe.new_doc("Purchase Receipt")
target_doc.is_subcontracted = 1
target_doc.is_old_subcontracting_flow = 0
purchase_receipt = get_mapped_doc(
target_doc = get_mapped_doc(
"Subcontracting Receipt",
subcontracting_receipt.name,
source_name.name,
{
"Subcontracting Receipt": {
"doctype": "Purchase Receipt",
@ -566,12 +568,12 @@ def make_purchase_receipt(subcontracting_receipt, save=False, submit=False, noti
"field_no_map": ["total_qty", "total"],
},
},
purchase_receipt,
target_doc,
ignore_child_tables=True,
)
po_items_details = {}
for item in subcontracting_receipt.items:
for item in source_name.items:
if item.purchase_order and item.purchase_order_item:
if item.purchase_order not in po_items_details:
po_doc = frappe.get_doc("Purchase Order", item.purchase_order)
@ -592,31 +594,33 @@ def make_purchase_receipt(subcontracting_receipt, save=False, submit=False, noti
"purchase_order_item": item.purchase_order_item,
"subcontracting_receipt_item": item.name,
}
purchase_receipt.append("items", item_row)
target_doc.append("items", item_row)
if not purchase_receipt.items:
if not target_doc.items:
frappe.throw(
_("Purchase Order Item reference is missing in Subcontracting Receipt {0}").format(
subcontracting_receipt.name
source_name.name
)
)
if (save or submit) and frappe.has_permission(purchase_receipt.doctype, "create"):
purchase_receipt.save()
target_doc.set_missing_values()
if submit and frappe.has_permission(purchase_receipt.doctype, "submit", purchase_receipt):
if (save or submit) and frappe.has_permission(target_doc.doctype, "create"):
target_doc.save()
if submit and frappe.has_permission(target_doc.doctype, "submit", target_doc):
try:
purchase_receipt.submit()
target_doc.submit()
except Exception as e:
purchase_receipt.add_comment("Comment", _("Submit Action Failed") + "<br><br>" + str(e))
target_doc.add_comment("Comment", _("Submit Action Failed") + "<br><br>" + str(e))
if notify:
frappe.msgprint(
_("Purchase Receipt {0} created.").format(
get_link_to_form(purchase_receipt.doctype, purchase_receipt.name)
get_link_to_form(target_doc.doctype, target_doc.name)
),
indicator="green",
alert=True,
)
return purchase_receipt
return target_doc

View File

@ -3,7 +3,7 @@ from frappe import _
def get_data():
return {
"fieldname": "subcontracting_receipt_no",
"fieldname": "subcontracting_receipt",
"non_standard_fieldnames": {
"Subcontracting Receipt": "return_against",
},