Skip to content

Instantly share code, notes, and snippets.

@monroy95
Created December 14, 2017 19:21
Show Gist options
  • Save monroy95/d555688f21a85218398d82316f04fead to your computer and use it in GitHub Desktop.
Save monroy95/d555688f21a85218398d82316f04fead to your computer and use it in GitHub Desktop.
prueba
frappe.ui.form.on("Sales Invoice", "refresh", function(frm, cdt, cdn) {
// es-GT: Obtiene el numero de Identificacion tributaria ingresado en la hoja del cliente.
// en-US: Fetches the Taxpayer Identification Number entered in the Customer doctype.
cur_frm.add_fetch("customer", "nit_face_customer", "nit_face_customer");
// Funcion para la obtencion del PDF, segun el documento generado.
function pdf_button() {
frappe.call({
// Este metodo verifica, el modo de generacion de PDF para la factura electronica
// retornara 'Manul' o 'Automatico'
method: "factura_electronica.api.save_url_pdf",
callback: function(data) {
if (data.message === 'Manual') {
// Si en la configuracion se encuentra que la generacion de PDF debe ser manual
// Se realizara lo siguiente
//cur_frm.clear_custom_buttons();
console.log(data.message);
frm.add_custom_button(__("Obtener PDF"),
function() {
var cae_fac = frm.doc.cae_factura_electronica;
var link_cae_pdf = "https://www.ingface.net/Ingfacereport/dtefactura.jsp?cae=";
//console.log(cae_fac)
window.open(link_cae_pdf + cae_fac);
}).addClass("btn-primary");
} else {
// Si en la configuracion se encuentra que la generacion de PDF debe ser Automatico
// Se realizara lo siguiente
console.log(data.message);
var cae_fac = frm.doc.cae_factura_electronica;
var link_cae_pdf = "https://www.ingface.net/Ingfacereport/dtefactura.jsp?cae=";
frappe.call({
method: "factura_electronica.api.save_pdf_server",
args: {
file_url: link_cae_pdf + cae_fac,
filename: frm.doc.name,
dt: 'Sales Invoice',
dn: frm.doc.name,
folder: 'Home/Facturas Electronicas',
is_private: 1
}
});
}
}
});
}
// Codigo para Factura Electronica FACE, CFACE
// El codigo se ejecutara segun el estado del documento, puede ser: Pagado, No Pagado, Validado, Atrasado
if (frm.doc.status === "Paid" || frm.doc.status === "Unpaid" || frm.doc.status === "Submitted" || frm.doc.status === "Overdue") {
// SI en el campo de 'cae_factura_electronica' ya se encuentra el dato correspondiente, ocultara el boton
// para generar el documento, para luego mostrar el boton para obtener el PDF del documento ya generado.
if (frm.doc.cae_factura_electronica) {
cur_frm.clear_custom_buttons();
pdf_button();
} else {
var nombre = 'Factura Electronica';
frm.add_custom_button(__(nombre), function() {
frappe.call({
method: "factura_electronica.api.generar_factura_electronica",
args: {
serie_factura: frm.doc.name,
nombre_cliente: frm.doc.customer
},
// El callback recibe como parametro el dato retornado por script python del lado del servidor
callback: function(data) {
// Asignacion del valor retornado por el script python del lado del servidor en el campo
// 'cae_factura_electronica' para ser mostrado del lado del cliente y luego guardado en la DB
cur_frm.set_value("cae_factura_electronica", data.message);
if (frm.doc.cae_factura_electronica) {
cur_frm.clear_custom_buttons();
pdf_button();
}
}
});
}).addClass("btn-primary");
}
}
// Codigo para Notas de Credito NCE
// El codigo se ejecutara segun el estado del documento, puede ser: Retornar
if (frm.doc.status === "Return") {
//var nombre = 'Nota Credito';
// SI en el campo de 'cae_nota_de_credito' ya se encuentra el dato correspondiente, ocultara el boton
// para generar el documento, para luego mostrar el boton para obtener el PDF del documento ya generado.
if (frm.doc.cae_nota_de_credito) {
cur_frm.clear_custom_buttons();
pdf_button();
} else {
frm.add_custom_button(__('Nota Credito'), function() {
frappe.call({
method: "factura_electronica.api.generar_factura_electronica",
args: {
serie_factura: frm.doc.name,
nombre_cliente: frm.doc.customer
},
// El callback recibe como parametro el dato retornado por script python del lado del servidor
callback: function(data) {
// Asignacion del valor retornado por el script python del lado del servidor en el campo
// 'cae_nota_de_credito' para ser mostrado del lado del cliente y luego guardado en la DB
cur_frm.set_value("cae_nota_de_credito", data.message);
if (frm.doc.cae_nota_de_credito) {
cur_frm.clear_custom_buttons();
pdf_button();
}
}
});
}).addClass("btn-primary");
}
}
frappe.ui.form.on("Sales Invoice Item", {
item_code: function(frm, cdt, cdn) { // items_move: function(frm, cdt, cdn) {
frm.add_fetch("item_code", "tax_rate_per_uom", "tax_rate_per_uom");
// A la variable d se cargan todos los datos disponibles en el formulario
// # Locals es un array, y los parametros [cdt][cdn] sirven para ubicar, los campos de este documento cargado en pantalla
// # Locals se refiere a los campos del documento actual en pantalla, o "local".
// # let es lo mismo que var
var d = locals[cdt][cdn];
// var row = frappe.get_doc(cdt, cdn);
//var datos = frappe.get_meta(cdt).fields
//var prueba = frappe.get_meta(cdt)
// No funcion en JS
// var datos = frappe.get_all('Sales Invoice Item', filters = { 'item_code': d.item_code }, fields = ['qty', 'amount'])
var datos = frappe.get_list(cdt, filters = { 'item_code': d.item_code }, fields = ['qty', 'amount', 'stock_qty']);
//console.log(row);
//console.log(row.amount);
//console.log(datos);
console.log(datos);
console.log(datos[0]['amount'])
//let monto = d.amount;
//let cantidad = d.stock_qty;
//let prueba_impuesto = d.tax_rate_per_uom;
//frappe.msgprint(d);
// console.log(d);
// console.log("Usando trigger de Item code");
// console.log("El valor de impuesto es:" + prueba_impuesto);
// console.log("Cantidad:" + row.amount);
// console.log("Monto:" + row.stock_qty);
// Agregar logica para realizar calculos
// frappe.model.set_value, establece un valor al campo que se desee
// recibe como parametros; frappe.model.set_value('doctype', 'docname', 'campo_a_asignar_valor', valor);
//frappe.model.set_value(cdt, cdn, 'importe_gravado', flt(monto) * flt(cantidad));
//cur_frm.refresh_fields();
},
qty: function(frm, cdt, cdn) {
console.log('se ha ejecutado el trigger refresh');
},
refresh: function(frm, cdt, cdn) {
console.log('se ha ejecutado el trigger refresh');
},
onload: function(frm, cdt, cdn) {
console.log('Se ha ejecutado el trigger onload');
},
validate: function(frm, cdt, cdn) {
console.log('Se ha ejecutado el trigger validate');
},
onsubmit: function(frm, cdt, cdn) {
console.log('Se ha ejecutado el trigger onsubmit');
},
onload_post_render: function(frm, cdt, cdn) {
console.log('Se ha ejecutado el trigger onload post render');
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment