/*frappe.ui.form.on(“Sales Invoice Item”, {
qty: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt, cdn, “rate”, parseFloat(doc.rate - doc.qty2));
}
});*/
/*
frappe.ui.form.on(“Sales Invoice”, {
after_save : function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
if(frm.doc.customer_address == frm.doc.shipping_address_name){
frappe.model.set_value(cdt,cdn,“print_format_selector”, “SI”, frm.save() ? 0 : 1);
location.reload();
}
}
});
frappe.ui.form.on(“Sales Invoice”, {
after_save : function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
if(frm.doc.customer_address != frm.doc.shipping_address_name){
frappe.model.set_value(cdt,cdn,“print_format_selector”, “Sales Invoice 4”, frm.save() ? 0 : 1);
location.reload();
}
}
});
*/
/*frappe.ui.form.on(“Sales Invoice”, “validate”, function(frm) {
var date = frappe.datetime.add_days(get_today(), -3);
if (frm.doc.posting_date <= date) {
msgprint(__(“You can not select this date”));
validated = false;
}
});
*/
/*
// same as upper script but if condition user wise format
frappe.ui.form.on(“Sales Invoice”, “validate”, function(frm) {
if(frappe.user=="spricstech@gmail.com"){
var date = frappe.datetime.add_days(get_today(), -3);
if (frm.doc.posting_date <= date) {
msgprint(__(“You can not select this date”));
validated = false;
}
}
if(frappe.user=="spricstech@gmail.com"){
var date = frappe.datetime.add_days(get_today(), -3);
if (frm.doc.posting_date <= date) {
msgprint(__(“You can not select this date”));
validated = false;
}
}
});*/
/*
frappe.ui.form.on(‘Sales Invoice’, {
refresh(frm) {
if(frm.doc.customer_address == frm.doc.shipping_address_name){
cur_frm.add_custom_button(__(“SI → Format”), function() {
cur_frm.set_value(“print_format_selector”,“SI”)
cur_frm.print_doc();
frm.save();
});
}
if(frm.doc.customer_address != frm.doc.shipping_address_name){
cur_frm.add_custom_button(__(“Sales Invoice 4 → Format”), function() {
cur_frm.set_value(“print_format_selector”,“Sales Invoice 4”)
cur_frm.print_doc();
frm.save();
});
}
}
});
*/
$.extend(frappe.meta, {
get_print_formats: function(doctype) {
var print_format_list = [“Standard”];
var default_print_format = locals.DocType[doctype].default_print_format;
let enable_raw_printing = frappe.model.get_doc(“:Print Settings”, “Print Settings”).enable_raw_printing;
var print_formats = frappe.get_list(“Print Format”, {doc_type: doctype})
.sort(function(a, b) { return (a > b) ? 1 : -1; });
$.each(print_formats, function(i, d) {
if (
!in_list(print_format_list, d.name)
&& d.print_format_type !== ‘JS’
&& (cint(enable_raw_printing) || !d.raw_printing)
) {
print_format_list.push(d.name);
}
});
if(default_print_format && default_print_format != “Standard”) {
var index = print_format_list.indexOf(default_print_format);
print_format_list.splice(index, 1).sort();
print_format_list.unshift(default_print_format);
}
if(cur_frm.doc.print_format_selector){ //newly added if condition
var print_format = [cur_frm.doc.print_format_selector]
return print_format
}
else{
return print_format_list;
}
},
});
/*
frappe.ui.form.on(‘Sales Invoice’, {
refresh(frm) {
setTimeout(() => {
frm.remove_custom_button(‘Sales Invoice 4 → Format’);
frm.remove_custom_button(‘SI → Format’);
}, 10);
}
})
*/
/*
frappe.ui.form.on(“Sales Invoice”, “refresh”, function(frm){
frm.add_custom_button(“Custom Button → General Ledger”,
function(){
window.location.href = “Frappe Cloud”; //Opening in the same tab:
// var myWin = window.open(‘Frappe Cloud’); //Opening a new tab:
}).addClass(“btn-success”);
});
*/
/*frappe.ui.form.on(“Sales Order Item”,
{
item_code: function(frm, cdt, cdn)
{
var d = locals[cdt][cdn];
console.log("Costo : " + d.costo + " y Item Code: " + d.item_code);
frappe.call(
{
method: “frappe.client.get_value”,
args: {
doctype: “Item Price”,
filters: {
// price_list: frm.doc.mrp_price_list,
price_list: frm.doc.selling_price_list,
item_code: d.item_code
},
fieldname:[“price_list_rate”]
},
callback: function(r)
{
if(r.message)
{
var item_price = r.message;
console.log("discount_amount: " + item_price.price_list_rate);
d.discount_amount = item_price.price_list_rate/100;
}
}
});
}
}
);
*/
/*frappe.ui.form.on(‘Sales Order’, {
refresh: function(frm) {
if(frm.doc.company == ‘SPRICS TECHNOLOGIES PRIVATE LIMITED’) {
frm.set_value(“tc_name”,“DC”);
}
}
});
*/
/*frappe.ui.form.on(“Sales Order Item”, {
qty2: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt, cdn, “rate”, parseFloat(doc.rate - doc.qty2));
}
});
*/
/*
frappe.ui.form.on(‘Sales Order’, {
on_submit: function(frm){
// console.log(‘reloaded doc on submit’)
location.reload()
},
onload_post_render: function(frm){
// var bt = [‘Delivery’, ‘Work Order’, ‘Invoice’, ‘Material Request’, ‘Request for Raw Materials’, ‘Purchase Order’, ‘Payment Request’, ‘Payment’, ‘Project’, ‘Subscription’]
// bt.forEach(function(bt){
// frm.page.remove_inner_button(bt, ‘Create’)
// });
frm.page.add_inner_button(‘Create WO’, () => cur_frm.cscript.make_work_order())
}
}
);*/
/*frappe.ui.form.on(‘Material Request’, {
refresh: function(frm) {
frm.page.sidebar.remove(); // this removes the sidebar
frm.dashboard.wrapper.remove(); // dashboard remove
frm.page.wrapper.find(“.layout-main-section-wrapper”).removeClass(“col-md-10”); // this removes class “col-md-10” from content block, which sets width to 83%
}
});
*/
frappe.ui.form.on(‘Material Request’, {
refresh: function(frm) {
if(frm.doc.material_request_type == “Manufacture” && frm.doc.docstatus==1) {
frm.add_custom_button(__(‘Create WO’), () => {
(frm.doc.items || []).forEach((d) => {
frappe.call({
method: “frappe.client.get”,
args: {
doctype:“Item”,
name:d.item_code
},
callback: function (r) {
// if (r.message.inspection_required_before_delivery) {
frappe.call({
method: “frappe.client.insert”,
args: {
doc: {
doctype: “Work Order”,
production_item: d.item_code,
bom_no: d.default_bom,
// bom_no: frappe.db.get_value(“Item”, item, “variant_of”),
qty: d.qty
},
},
callback: function (r) {
console.log(r);
if(r.message){
frappe.msgprint("WO Created: "+r.message.name);
// frappe.msgprint("WO Created: " + ‘’ +r.message.name + ‘’);
}
}
});
// }
}
});
});
});
}
}
});
frappe.ui.form.on(‘Material Request Item’,{
item_code: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
cur_frm.add_fetch(‘item_code’,‘default_bom’,‘default_bom’);
}
});
frappe.ui.form.on(‘Material Request Item’,{
item_code: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
cur_frm.add_fetch(‘item_code’,‘variant_of’,‘variant_of’);
}
});
frappe.ui.form.on(‘Material Request’, {
refresh(frm) {
setTimeout(() => {
frm.remove_custom_button(‘Work Order’, ‘Create’);
}, 10);
}
})
/*
frappe.ui.form.on(‘Work Order’,{
onload: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt,cdn,“production_item”,“Box-SIZE 24”);
}
});
*/
frappe.ui.form.on(‘Delivery Note’, {
refresh(frm) {
if (frm.doc.docstatus==1) {
setTimeout(() => {
cur_frm.add_custom_button(__(‘Create Invoice’), () => cur_frm.cscript.make_sales_invoice());
}, 10);
}
}
});
frappe.ui.form.on(‘Delivery Note’, {
refresh: function(frm) {
frm.add_custom_button(__(‘Add Quality Inspection’), () => {
(frm.doc.items || []).forEach((d) => {
frappe.call({
method: “frappe.client.get”,
args: {
doctype:“Item”,
name:d.item_code
},
callback: function (r) {
// if (r.message.inspection_required_before_delivery) {
frappe.call({
method: “frappe.client.insert”,
args: {
doc: {
doctype: “Quality Inspection”,
inspection_type: “In Process”,
reference_type: “Delivery Note”,
reference_name: frm.doc.name,
sample_size: 0.0,
item_code: d.item_code,
// description: d.description,
// item_name: d.item_name,
inspected_by: “support@sprics.com”,
status:“Accepted”
// custom_ref:frm.doc.name.concat(d.item_code)
},
},
callback: function (r) {
console.log(r);
if(r.message){
frappe.msgprint(“Quality Insepection Created:”+r.message.name)
}
}
});
// }
}
})
})
});
}
});
frappe.ui.form.on(“Purchase Order”, “onload”, function(frm)
{
if(!frm.doc.__islocal)
if(frm.doc.company==‘SPRICS TECHNOLOGIES PRIVATE LIMITED’)
frm.disable_save();
else
frm.enable_save();
frm.refresh();
}
);
//Back date po not issue
frappe.ui.form.on(“Purchase Order”, “validate”, function(frm) {
var date = frappe.datetime.add_days(get_today(), -4);
if (frm.doc.transaction_date <= date) {
msgprint(__(“You can not select this date”));
validated = false;
}
});
/*frappe.ui.form.on(“Purchase Order”, “validate”, function(frm) {
if (frm.doc.base_discount_amount <= 100) {
frappe.msgprint(__(“You can not over discount”));
validated = false;
}
});*/
frappe.ui.form.on(‘Purchase Order’, function(doc, dt, dn) {
cur_frm.cscript.custom_menu; {
if (doc.docstatus==1) {
cur_frm.clear_custom_buttons();
}
}
});
frappe.ui.form.on(‘Purchase Order Item’, {
s_rate: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt,cdn,“rate”,parseFloat(doc.s_rate)*parseFloat(doc.manufacturer_part_no));
}
});
/* frappe.ui.form.on(‘Purchase Order Item’, {
s_qty: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt,cdn,“qty”,parseFloat(doc.s_qty)*parseFloat(1/(doc.conversion_factor)));
}
}); */
/*
frappe.ui.form.on(“Purchase Order”, “additional_discount_percentage1”, function(frm, cdt, cdn){
var d = locals[cdt][cdn];
frappe.model.set_value(d.doctype, d.name, “additional_discount_amount1”, flt(d.additional_discount_percentage1 * d.grand_total/100));
});*/
/*
//Full Width Screen
frappe.ui.form.on(‘Purchase Order’, {
refresh: function(frm) {
frm.page.sidebar.remove(); // this removes the sidebar
frm.page.wrapper.find(“.layout-main-section-wrapper”).removeClass(“col-md-10”); // this removes class “col-md-10” from content block, which sets width to 83%
}
});*/
/*
frappe.ui.form.on(‘Purchase Order’, {
refresh(frm) {
cur_frm.add_custom_button(__(“PO - SPRICS → Format”), function() {
cur_frm.set_value(“print_format_selector”,“PO - SPRICS”)
cur_frm.print_doc();
frm.save();
});
cur_frm.add_custom_button(__(“PO M → Format”), function() {
cur_frm.set_value(“print_format_selector”,“PO M”)
cur_frm.print_doc();
frm.save();
});
}
})
$.extend(frappe.meta, {
get_print_formats: function(doctype) {
var print_format_list = [“Standard”];
var default_print_format = locals.DocType[doctype].default_print_format;
let enable_raw_printing = frappe.model.get_doc(“:Print Settings”, “Print Settings”).enable_raw_printing;
var print_formats = frappe.get_list(“Print Format”, {doc_type: doctype})
.sort(function(a, b) { return (a > b) ? 1 : -1; });
$.each(print_formats, function(i, d) {
if (
!in_list(print_format_list, d.name)
&& d.print_format_type !== ‘JS’
&& (cint(enable_raw_printing) || !d.raw_printing)
) {
print_format_list.push(d.name);
}
});
if(default_print_format && default_print_format != “Standard”) {
var index = print_format_list.indexOf(default_print_format);
print_format_list.splice(index, 1).sort();
print_format_list.unshift(default_print_format);
}
if(cur_frm.doc.print_format_selector){ //newly added if condition
var print_format = [cur_frm.doc.print_format_selector]
return print_format
}
else{
return print_format_list;
}
},
});
*/
frappe.ui.form.on(‘Purchase Receipt Item’, {
s_rate: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt,cdn,“rate”,parseFloat(doc.s_rate)*parseFloat(doc.manufacturer_part_no));
}
});
frappe.ui.form.on(‘Purchase Invoice Item’, {
s_rate: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt,cdn,“rate”,parseFloat(doc.s_rate)*parseFloat(doc.manufacturer_part_no));
}
});
/*
frappe.ui.form.on(“Purchase Invoice”, “refresh”, function(frm){
frm.add_custom_button(“Stock Ledger Report”, function(){
window.location.href = “Frappe Cloud”;
});
});*/
/*
frappe.ui.form.on(“Purchase Invoice”, “validate”, function(frm) {
if (frm.doc.discount_amount > 100) {
frappe.msgprint(__(“You cannot give more than 100 Rs. discount.”));
validated = false;
}
if (frm.doc.discount_amount < -100) {
frappe.msgprint(__(“You cannot give less than -100 Rs. discount.”));
validated = false;
}
});
*/
/*
frappe.ui.form.on(‘Payment Schedule’, {
payment_term: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
if(doc.payment_term == “50% Advance”){
frappe.model.set_value(cdt,cdn,“pay_amt”,frm.doc.total*0.5);
}
if(doc.payment_term == “30% After Trial”){
frappe.model.set_value(cdt,cdn,“pay_amt”,frm.doc.total*0.3);
}
if(doc.payment_term == “20% after 1 month of Production”){
frappe.model.set_value(cdt,cdn,“pay_amt”,frm.doc.grand_total - (frm.doc.total0.5 + frm.doc.total0.3));
}
}
});*/
frappe.ui.form.on(‘Payment Schedule’, {
invoice_portion: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
if(doc.payment_term == “50% Advance”){
frappe.model.set_value(cdt,cdn,“payment_amount”,frm.doc.total*0.5);
}
if(doc.payment_term == “30% After Trial”){
frappe.model.set_value(cdt,cdn,“payment_amount”,frm.doc.total*0.3);
}
if(doc.payment_term == “20% after 1 month of Production”){
frappe.model.set_value(cdt,cdn,“payment_amount”,frm.doc.grand_total - (frm.doc.total0.5 + frm.doc.total0.3));
}
}
});
frappe.ui.form.on(“Appraisal”, “goals_on_form_rendered”, function(frm, grid_row, cdt, cdn){
var grid_row = cur_frm.open_grid_row();
if(frm.doc.status == “Draft”){
grid_row.grid_form.fields_dict.score.df.read_only = true;
grid_row.grid_form.fields_dict.score.refresh();
refresh(frm.doc.goals);
}
});
frappe.ui.form.on(“Stock Entry”, “mr_no”, function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
frappe.db.get_value(“Material Request”, {“name”: d.mr_no}, “transaction_date”, function(value) {
d.transaction_date = value.transaction_date;
});
});
frappe.ui.form.on(“Stock Entry Detail”, “items_on_form_rendered”, function(frm, grid_row, cdt, cdn){
var grid_row = cur_frm.open_grid_row();
if(frm.doc.workflow_state === “Waiting Verifying”){
grid_row.grid_form.fields_dict.score.df.read_only = true;
grid_row.grid_form.fields_dict.score.refresh();
}
});
frappe.ui.form.on(“Appraisal”, “goals_on_form_rendered”, function(frm, grid_row, cdt, cdn){
var grid_row = cur_frm.open_grid_row();
if(frm.doc.workflow_state === “Waiting Verifying”){
grid_row.grid_form.fields_dict.score.df.read_only = true;
grid_row.grid_form.fields_dict.score.refresh();
}
});
frappe.ui.form.on(‘Stock Entry Detail’, {
refresh(frm) {
// your code here
}
})
/*frappe.ui.form.on(‘Lead’, {
refresh(frm) {
let d = new frappe.ui.Dialog({
title: ‘Enter details’,
fields: [
{
label: ‘Person Name’,
fieldname: ‘lead_name’,
fieldtype: ‘Data’
},
{
label: ‘Organization Name’,
fieldname: ‘company_name’,
fieldtype: ‘Data’
}
],
primary_action_label: ‘Submit’,
primary_action(values) {
console.log(values);
d.hide();
}
});
d.show();
}
});*/
/*frappe.ui.form.on(‘Lead’, {
refresh(frm) {
cur_frm.add_fetch(“sales_partner”,“primary_address”,“address”)
}
});*/
frappe.ui.form.on(“Lead”, “to_ship_address”, function(frm, cdt, cdn) {
if(frm.doc.to_ship_address){
return frm.call({
method: “frappe.contacts.doctype.address.address.get_address_display”,
args: {
“address_dict”: frm.doc.to_ship_address
},
callback: function(r) {
if(r.message)
frm.set_value(“to_ship_address_display”, r.message);
}
});
}
else{
frm.set_value(“to_ship_address_display”, “”);
}
});
frappe.ui.form.on(‘Timesheet Detail’, {
log: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
if(doc.activity_type == ‘Normal’){
frappe.model.set_value(cdt,cdn,“hours”,parseFloat(doc.log)*1);
}
if(doc.activity_type == ‘Overtime’){
frappe.model.set_value(cdt,cdn,“hours”,parseFloat(doc.log)*1.25);
}
}
});
/*
frappe.ui.form.on(‘Item’, {
refresh(frm) {
cur_frm.fields_dict[‘quality’].get_query = function(doc) {
doc = cur_frm.doc;
var cond = ‘’;
if(doc.base_material!=“” && doc.is_rm!=“”){
cond = ‘tabQuality
.base_material = "’+doc.base_material+
‘" and tabQuality
.is_rm = "’+doc.is_rm+‘" and’ ;
}
else if (doc.is_rm == “” && doc.base_material != “”){
cond = ‘tabQuality
.base_material = "’+doc.base_material+
‘" and tabQuality
.is_rm = “No” and’ ;
}
else if (doc.is_rm != “” && doc.base_material == “”){
cond = ‘tabQuality
.is_rm = "’+doc.is_rm+‘" and’ ;
}
return repl('SELECT DISTINCT tabQuality
.name
, base_material, is_rm, code \
FROM tabQuality
WHERE %(cond)s tabQuality
.%(key)s LIKE “%s” \
ORDER BY tabQuality
.name
DESC LIMIT 50’,
{company:doc.company,cond:cond})
}
}
})
*/
frappe.ui.form.on(‘Sales Order’, {
refresh(frm) {
cur_frm.cscript.customer = function(doc) {
return frappe.call({
method: “erpnext.accounts.utils.get_balance_on”,
args: {date: doc.posting_date, party_type: ‘Customer’, party: doc.customer},
callback: function(r) {
doc.outstanding_balance = format_currency(r.message, erpnext.get_currency(doc.company));
refresh_field(‘outstanding_balance’, ‘accounts’);
}
});
}
}
})
/*frappe.ui.form.on(“Sales Invoice Item”, “item_code”, function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
frappe.db.get_value(“Item”, {“name”: d.item_code}, “qty_in_box”, function(value) {
d.qty_in_box = d.qty / value.qty_in_box;
});
});
frappe.ui.form.on(“Sales Invoice Item”, “qty”, function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
frappe.db.get_value(“Item”, {“name”: d.item_code}, “qty_in_box”, function(value) {
d.qty_in_box = d.qty / value.qty_in_box;
});
});
frappe.ui.form.on(“Sales Invoice Item”, “item_code”, function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
frappe.db.get_value(“Item”, {“name”: d.item_code}, “qty_in_case”, function(value) {
d.qty_in_case = d.qty / value.qty_in_case;
});
});
frappe.ui.form.on(“Sales Invoice Item”, “qty”, function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
frappe.db.get_value(“Item”, {“name”: d.item_code}, “qty_in_case”, function(value) {
d.qty_in_case = d.qty / value.qty_in_case;
});
});
frappe.ui.form.on(“Sales Invoice Item”, “item_code”, function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
frappe.db.get_value(“Item”, {“name”: d.item_code}, “qty_in_case”, function(value) {
d.packs_shipper = value.qty_in_case / d.units_pack;
});
});
/*
frappe.ui.form.on(“Sales Invoice Item”, “form_render”, function(frm, cdt, cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt, cdn, ‘cbm’,parseFloat(doc.length * doc.breadth * doc.height) / 1000000);
});
frappe.ui.form.on(“Sales Invoice Item”, “form_render”, function(frm, cdt, cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt, cdn, ‘total_cbm’, parseFloat(doc.cbm * doc.qty_in_case));
});
frappe.ui.form.on(“Sales Invoice Item”, “form_render”, function(frm, cdt, cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt, cdn, ‘total_net_wt’, parseFloat(doc.net_wt_per_shipper * doc.qty_in_case));
});
frappe.ui.form.on(“Sales Invoice Item”, “form_render”, function(frm, cdt, cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt, cdn, ‘total_gross_wt’, parseFloat(doc.gross_wt_per_shipper * doc.qty_in_case));
});
*/
/*
frappe.ui.form.on(“Sales Invoice Item”, “validate”, function(frm, cdt, cdn) {
var doc = locals[cdt][cdn];
frappe.model.set_value(cdt, cdn, ‘total_cbm’, parseFloat((doc.qty / doc.total_qty_per_shipper) * ((doc.length * doc.breadth * doc.height) / 1000000)));
});*/
frappe.ui.form.on(‘Sales Invoice Item’,{
free_item: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
if(doc.free_item == 1){
frappe.model.set_value(cdt, cdn, ‘price_list_rate’, 0);
}
}
});
frappe.ui.form.on(‘Sales Invoice’,{
before_save: function(frm,cdt,cdn) {
var doc = locals[cdt][cdn];
if(!frm.doc.date_removal){
frappe.model.set_value(cdt, cdn, ‘date_removal’, doc.posting_date);
}
}
});
frappe.ui.form.on(“Sales Invoice”, “validate”, function(frm, cdt, cdn) {
$.each(frm.doc.items || [], function(i, d) {
if(d.rate <= 0 && d.free_item != 1) {
frappe.msgprint(‘’+d.item_code+‘’ +" Rate is 0");
validated = false;
}
})
});
frappe.ui.form.on(“Sales Invoice”, “notify_party_address”, function(frm, cdt, cdn) {
if(frm.doc.notify_party_address){
return frm.call({
method: “frappe.contacts.doctype.address.address.get_address_display”,
args: {
“address_dict”: frm.doc.notify_party_address
},
callback: function(r) {
if(r.message)
frm.set_value(“notify_address”, r.message);
}
});
}
else{
frm.set_value(“notify_address”, “”);
}
});
frappe.ui.form.on(“Sales Invoice”, {
setup: function(frm) {
frm.set_query(“notify_party_address”, function()
{
return {
filters: [
[“Dynamic Link”,“link_doctype”, “=”, “Customer”],
[“Dynamic Link”,“link_name”, “=”, frm.doc.customer]
]
}
});
}
});
frappe.ui.form.on(“Sales Invoice”, “bank_account_address”, function(frm, cdt, cdn) {
if(frm.doc.bank_account_address){
return frm.call({
method: “frappe.contacts.doctype.address.address.get_address_display”,
args: {
“address_dict”: frm.doc.bank_account_address
},
callback: function(r) {
if(r.message)
frm.set_value(“bank_address”, r.message);
}
});
}
else{
frm.set_value(“bank_address”, “”);
}
});
frappe.ui.form.on(“Sales Invoice”, {
setup: function(frm) {
frm.set_query(“bank_account_address”, function()
{
return {
filters: [
[“Dynamic Link”,“link_doctype”, “=”, “Bank Account”]
/*,
[“Dynamic Link”,“link_name”, “=”, frm.doc.customer]*/
]
}
});
}
});
frappe.ui.form.on(“Sales Invoice Item”,
{
item_code: function(frm, cdt, cdn)
{
var d = locals[cdt][cdn];
console.log("Costo : " + d.costo + " y Item Code: " + d.item_code);
frappe.call(
{
method: “frappe.client.get_value”,
args: {
doctype: “Item Price”,
filters: {
// price_list: frm.doc.mrp_price_list,
price_list: “MRP”,
item_code: d.item_code
},
fieldname:[“price_list_rate”]
},
callback: function(r)
{
if(r.message)
{
var item_price = r.message;
console.log("mrp: " + item_price.price_list_rate);
d.mrp = item_price.price_list_rate;
}
}
});
}
}
);
<----------------------Server Script ---------------------->
if not(doc.shipping_city):
doc.shipping_city=doc.customer_city
if (doc.naming_series[-10:-6] != (str(doc.fiscal_year[2:4])+str(doc.fiscal_year[7:9]))):
frappe.throw(_(“CHANGE SEIRES -Not Match With Financial Year”))
invo = doc.name
if (len(str(doc.inv1)) > 4):
frappe.throw(_(“Invalid Number - Enter upto 4 Digit Number”))
if not(doc.inv1):
if invo[-2] == “-” :
doc.invoice_no = invo[0:len(invo)-12] +“-” + str(invo[-6:-2]).zfill(4)
else:
doc.invoice_no = invo[0:len(invo)-10] +“-” + str(invo[-4:]).zfill(4)
else:
if invo[-2] == “-” :
doc.invoice_no = invo[0:len(invo)-12] +“-” + str(doc.inv1).zfill(4)
else:
doc.invoice_no = invo[0:len(invo)-10] +“-” + str(doc.inv1).zfill(4)
pi = frappe.db.sql(‘’‘select name from tabSales Invoice
where
invoice_no = %(invoice_no)s
and name != %(name)s
and fiscal_year = %(fiscal_year)s
and docstatus < 2’‘’, {
“invoice_no”: doc.invoice_no,
“name”: doc.name,
“fiscal_year”: doc.fiscal_year
})
if pi:
pi = pi[0][0]
frappe.throw(_(“Duplicate Number”))
for d in doc.get(‘items’):
if(d.price_list_rate != 0):
d.gross_amount = d.qty * d.price_list_rate
if(d.gross_amount != 0):
d.discount_amount_total = (d.gross_amount * d.discount_percentage)/100
if(d.item_tax_template == “CGST AND SGST 18 %”):
d.gst_amount = d.amount * 0.18
if(d.item_tax_template == “CGST AND SGST 28 %”):
d.gst_amount = d.amount * 0.28
if(d.item_tax_template == “CGST AND SGST 12 %”):
d.gst_amount = d.amount * 0.12
if(d.item_tax_template == “CGST AND SGST 5 %”):
d.gst_amount = d.amount * 0.05
if(d.item_tax_template == “CGST AND SGST 0.1 %”):
d.gst_amount = d.amount * 0.001
if(d.item_tax_template == “CGST AND SGST 0 %”):
d.gst_amount = d.amount * 0
if(d.item_tax_template == “IGST 18 %”):
d.gst_amount = d.amount * 0.18
if(d.item_tax_template == “IGST 28 %”):
d.gst_amount = d.amount * 0.28
if(d.item_tax_template == “IGST 12 %”):
d.gst_amount = d.amount * 0.12
if(d.item_tax_template == “IGST 5 %”):
d.gst_amount = d.amount * 0.05
if(d.item_tax_template == “IGST 0.1 %”):
d.gst_amount = d.amount * 0.001
if(d.item_tax_template == “IGST 0 %”):
d.gst_amount = d.amount * 0
d.net_amount_total = d.amount + d.gst_amount
if(d.total_qty_per_shipper != 0):
d.qty_in_case = d.qty / d.total_qty_per_shipper
d.qty_in_box = d.qty / d.units_pack
d.packs_shipper = d.total_qty_per_shipper / d.units_pack
d.cbm = (d.length * d.breadth * d.height) / 1000000
d.total_cbm = d.cbm * d.qty_in_case
d.total_net_wt = d.net_wt_per_shipper * d.qty_in_case
d.total_gross_wt = d.gross_wt_per_shipper * d.qty_in_case
d.case_wt = d.weight_per_unit * d.qty_in_case
for t in doc.get(‘taxes’):
if(t.account_head == “CGST - PC”):
doc.invoice_amount_with_tax = doc.total + (t.tax_amount + t.tax_amount)
if(t.account_head == “IGST - PC”):
doc.invoice_amount_with_tax = doc.total + t.tax_amount
if(doc.total_taxes_and_charges == 0):
doc.invoice_amount_with_tax = doc.total
if(doc.tax_category == “Export”):
doc.invoice_amount_with_tax = doc.total
/BOM/
doc.total_qty = (frappe.db.sql(‘’‘select
sum(bi.qty)
from tabBOM
as b, tabBOM Item
as bi
where bi.parent
= b.name
and b.name = %(name)s
group by b.name’‘’, {
“name”: doc.name})[0][0])