
| Path : /home/gujo45me/public_html/mediperu1/public/js/compra/ |
| Disable Functions : exec,passthru,shell_exec,system System : Linux server-604606.appsiete.com 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 [ Home ][ Zone-h ][ Jumping ][ Symlink ][ Mass Depes ][ Command ] |
| Current File : /home/gujo45me/public_html/mediperu1/public/js/compra/nuevo.js |
$(function () {
/******************************************************************************/
/* validacion de modal 1
/******************************************************************************/
$('[data-tab="one"]').form({
keyboardShortcuts: false,
fields: {
id_local: {
rules: [{ type : 'empty', prompt : 'Seleccione una opción'}]
},
id_proveedor: {
rules: [{ type : 'empty', prompt : 'Seleccione una opción'}]
},
id_tipo_comprobante: {
rules: [{ type : 'empty', prompt : 'Seleccione una opción'}]
},
numero_comprobante: {
rules: [{ type : 'empty', prompt : 'Complete este campo'}]
},
fecha_compra: {
rules: [{ type : 'empty', prompt : 'Complete este campo'}]
},
numero_comprobante: {
rules: [
{ type : 'integer', prompt : 'Ingrese solo números'},
{ type : 'empty', prompt : 'Complete este campo'}
]
},
serie_comprobante: {
rules: [{ type : 'empty', prompt : 'Complete este campo'}]
},
},
inline : true,
});
$('.tab_two').on('click', function() {
if ($('[data-tab="one"]').form('is valid')) {
$.tab('change tab', 'two');
} else {
$('[data-tab="one"]').form('validate form');
}
});
$('[name="tipo_compra"]').change(function() {
var option= $("option:selected", this).val();
if (option == "CONTADO") {
$('#fecha_pago').css('visibility', 'hidden');
$('[data-tab="one"]').form('remove fields', ['fecha_pago']);
$('[data-tab="one"]').form('remove prompt', ['fecha_pago']);
$('[name="fecha_pago"]').val('');
}
if (option == "CREDITO") {
$('#fecha_pago').css('visibility', 'visible');
$('[data-tab="one"]').form('add rule', 'fecha_pago', {
rules: [{ type : 'empty', prompt : 'Ingrese una fecha de pago'}]
});
}
});
$('[name="fecha_pago"]').on('change', function(){
if ($('[name="fecha_pago"]').val() !== '' ) {
$('[data-tab="one"]').form('remove prompt', ['fecha_pago']);
}
});
/******************************************************************************/
/* validacion de modal 2
/******************************************************************************/
$('[data-tab="two"]').form({
keyboardShortcuts: false,
fields: {
/*id_prod: {
rules: [{ type : 'empty', prompt : 'Seleccione un producto'}]
},
cant: {
rules: [
{ type : 'empty', prompt : 'Complete este campo'},
{ type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese una cantidad valida'},
]
},
stock_alert: {
rules: [
{ type : 'empty', prompt : 'Complete este campo'},
{ type : 'integer', prompt : 'Ingrese un numero entero'},
]
},
precio_compra_tot: {
rules: [
{ type : 'empty', prompt : 'Complete este campo'},
{ type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un precio valido'},
]
},
precio_venta_unit: {
rules: [
{ type : 'empty', prompt : 'Complete este campo'},
{ type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un precio valido'},
]
}*/
},
inline : true,
});
$('.tab_one').on('click', function() {
$.tab('change tab', 'one');
});
/*********************************************************************************************************/
/* registra datos de compra
/*********************************************************************************************************/
$('.btn_registrar').on('click', function() {
var count=$("#tbody tr:first > td").length;
if (count > 0 && ($('#total_compra') !== "")) {
if ($('#total_compra').val() !== "") {
if ($('[data-tab="two"]').form('is valid')) {
$('#register_modal').modal({
closable: false,
onApprove : function() {
sendForm();
}
}).modal('show');
} else {
$('[data-tab="two"]').form('validate form');
}
} else {
swal("Los precios", "de los productos no son validos", "warning");
}
} else {
swal("Por favor", "agregue algun producto a la lista", "warning");
}
});
function sendForm() {
var data = $('#frmNuevo').serialize();
$.requestApi('/compra/registrar', data, 'POST', function (resolve) {
if (resolve) {
$.showMessages(resolve, true, APP_URL+'/compra/detalles/'+resolve.id_compra);
}
});
return false;
};
/******************************************************************************/
/* buscar proveedor con Keypress
/******************************************************************************/
$('#numero_documento').on('keyup', function(){
$(this).val($(this).val().trim());
});
$('#numero_documento').on('keypress', function(e){
if (e.keyCode == 13){
var num = $('#numero_documento').val();
buscarDocumentoCliente(num);
}
});
$('#loading_doc').on('click', function() {
var num = $('#numero_documento').val();
buscarDocumentoCliente(num);
});
function buscarDocumentoCliente(num)
{
var option= $('select[name=id_tipo_documento]').val();
if ( option == 1 && num.length == 11 ) // FACTURA
{
$("#loading_doc").addClass('loading');
$._requestApi('/cliente/getRucByApi', {'numero_documento' : num }, 'GET', function (resolve) {
if (resolve.nombre) {
$('#nombre_proveedor').val(resolve.nombre);
resolve.direccion !== '-' ? $('#direccion').val(resolve.direccion) : $('#direccion').val(' ');
}
else {
$('#nombre_proveedor').val('');
$('#direccion').val('');
}
$("#loading_doc").removeClass('loading');
}, function () {
$("#loading_doc").removeClass('loading');
});
}
if ( option == 2 && num.length == 8 ) // BOLETA
{
$("#loading_doc").addClass('loading');
$._requestApi('/cliente/getDniByApi', {'numero_documento' : num }, 'GET', function (resolve) {
if (resolve.nombre) {
$('#nombre_proveedor').val(resolve.nombre.trim());
resolve.nombre.trim() !== '' ? $('#direccion').val(' ') : $('#direccion').val('');
}
else {
$('#nombre_proveedor').val('');
$('#direccion').val('');
}
$("#loading_doc").removeClass('loading');
}, function () {
$("#loading_doc").removeClass('loading');
});
}
}
/******************************************************************************/
/* start: muestra oculta tipo de cambio
/******************************************************************************/
$('#moneda').change(function() {
var option= $("option:selected", this).val();
if (option != "SOLES") {
$('.tipo_cambio').css('visibility', 'visible');
$('#valor_cambio').val("3.30");
$('[data-tab="two"]').form('add rule', 'valor_cambio', {
rules: [{ type : 'empty', prompt : 'Ingrese valor de cambio'},
{ type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un valor valido'}]
});
calcularTotal();
} else {
$('.tipo_cambio').css('visibility', 'hidden');
$('#valor_cambio').val("1.00");
$('[data-tab="two"]').form('remove fields', ['valor_cambio']);
$('[data-tab="two"]').form('remove prompt', ['valor_cambio']);
calcularTotal();
}
});
/******************************************************************************/
/* validacion igv de situacion impuesto
/******************************************************************************/
$('[name="situacion_impuesto"]').on('change', function(){
if ($('[name="situacion_impuesto"]').val() !== 'AFECTO' ) {
$('[name="valor_impuesto"]').val("0.00");
//$('[name="valor_impuesto"]').attr('readonly', true);
}
else {
$('[name="valor_impuesto"]').val(_IGV);
//$('[name="valor_impuesto"]').attr('readonly', false);
}
});
/*********************************************************************************************************/
/* modal mostrar todos los productos
/*********************************************************************************************************/
function buscarNombreProducto(producto) {
$._requestApi('/producto_local/getByNombre', {'search' : producto }, 'GET', function (resolve) {
if (resolve) {
var datos = [];
for( var i=0; i< resolve.length; i++ ){
resolve[i]['i'] = i+1;
if(resolve[i]){
datos.push(renderProductos(resolve[i]));
}
}
$('#tbody_productos').html(datos.join(''));
}
$("#btn_buscar_prod").removeClass('loading');
});
};
$('.btn_buscar_producto').on('click', function() {
$('#buscar_producto_modal').modal('show');
$('#buscar_producto').val('');
//resetearTablaProducto();
});
$('#buscar_producto').on('keypress', function(e){
if (e.keyCode == 13){
$("#btn_buscar_prod").addClass('loading');
var producto = $('#buscar_producto').val();
buscarNombreProducto(producto);
}
});
$('#btn_buscar_prod').on('click', function() {
$("#btn_buscar_prod").addClass('loading');
var producto = $('#buscar_producto').val();
buscarNombreProducto(producto);
});
$('body').on('click', '.btn_seleccionar_producto', function(){
var id = $(this).data("id");
$("#loader_busqueda").removeClass('disabled');
$("#loader_busqueda").addClass('active');
$._requestApi('/producto/getById2', {id_producto : id }, 'GET', function (resolve) {
if (resolve) {
if (resolve.id_producto) {
agregarTabla(resolve);
}
$("#loader_busqueda").removeClass('active');
$("#loader_busqueda").addClass('disabled');
$('#buscar_producto_modal').modal('hide');
}
});
});
/*********************************************************************************************************/
/* funcion agregar a tabla
/*********************************************************************************************************/
function agregarTabla(data) {
//console.log(data);
if (verificaExite(data.id_producto)) {
cant = parseFloat($('#cant'+data.id_producto).val());
$('#cant'+data.id_producto).val(cant + 1);
calculaSubtotal(data.id_producto);
calcularTotal();
} else {
agregarFila(data);
}
}
function agregarFila(data) {
var nuevoProducto=''+
'<tr class="rows" id="'+data.id_producto+'">'+
'<td><input type="hidden" name="id_producto[]" value="'+data.id_producto+'"/>'+data.nombre+' '+(data.descripcion !== null ? data.descripcion : '')+'</td>'+
'<td><input type="text" name="cantidad[]" class="cant '+data.id_producto+'" id="cant'+data.id_producto+'" value="0" size="1"></td>'+
'<td><input type="text" name="precio_compra_unitario[]" class="prec '+data.id_producto+'" id="prec'+data.id_producto+'" value="'+(data.precio_compra !== null ? data.precio_compra : '') +'" size="2"/></td>'+
'<td><input type="text" name="precio_compra_total[]" readonly class="subt '+data.id_producto+'" id="subt'+data.id_producto+'" size="2"/></td>'+
'<td style="display:none"><input type="hidden" name="precio_venta_unitario[]" class="prec_v '+data.id_producto+'" id="prec_v'+data.id_producto+'" value="'+data.precio+'" /></td>'+
'<td ><div class="ui mini vertical animated red button" onclick="quitarTabla(this)" title="Quitar de la lista"><div class="hidden content">Quitar</div><div class="visible content"><i class="times icon"></i></div></div></td>'+
'</tr>';
$("#tbody").append(nuevoProducto);
calcularTotal();
}
/*********************************************************************************************************/
/* start: calcula precios al presionar tecla
/*********************************************************************************************************/
$('body').on('click', '.subt', function(){
$(this).attr("readonly", false);
});
$('body').on('keyup', '.cant', function(){
$(this).val($(this).val().trim());
var arr = $(this).attr('class').split(" ");
calculaSubtotal(arr[1]);
calcularTotal();
});
$('body').on('keyup', '.prec', function(){
$(this).val($(this).val().trim());
var arr = $(this).attr('class').split(" ");
calculaSubtotal(arr[1]);
calcularTotal();
});
$('body').on('keyup', '.subt', function(){
$(this).val($(this).val().trim());
calcularTotal();
});
/*********************************************************************************************************/
/* modal agregar proveedor
/*********************************************************************************************************/
$('.btn_nuevo_proveedor').on('click', function() {
$('#nuevo_proveedor_modal').modal({
closable: false
}).modal('show');
});
$.fn.form.settings.rules.docExiste = function(value) {
return (verificaExiste('numero_documento', value) > 0 ? false : true);
};
function verificaExiste(field, param) {
var count;
$.ajax({
async: false,
url: APP_URL+'/proveedor/existeCampo',
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
type: 'GET',
dataType: 'json',
data: { campo: field, valor: param},
success: function (data) {
count = data;
}
});
return count;
};
$('#frmNevoProveedor').form({
keyboardShortcuts: false,
fields: {
nombre: {
rules: [{ type : 'empty', prompt : 'Complete este campo'}]
},
numero_documento: {
rules: [
{ type : 'docExiste', prompt : 'El numero de documento ya fue registrado'},
{ type : 'empty', prompt : 'Complete este campo'},
{ type : 'integer', prompt : 'Ingrese solo números'}
]
},
id_tipo_documento: {
rules: [{ type : 'empty', prompt : 'Seleccione una opción'}]
},
telefono: {
optional: true,
rules: [{ type : 'integer', prompt : 'Ingrese solo números'}]
},
email: {
optional: true,
rules: [{ type : 'email', prompt : 'Ingrese un email válido'}]
},
},
inline : true,
});
$('[name="id_tipo_documento"]').change(function() {
var option= $("option:selected", this).text();
if (option == "RUC") {
$('input[name="numero_documento"]').attr('maxlength', 11);
$('#frmNevoProveedor').form('add rule', 'numero_documento', {
rules: [
{ type : 'docExiste', prompt : 'El numero de documento ya fue registrado'},
{ type : 'integer', prompt : 'Ingrese solo números'},
{ type : 'exactLength[11]', prompt : 'El RUC debe tener {ruleValue} digitos'}
]
});
}
if (option == "DNI") {
$('input[name="numero_documento"]').attr('maxlength', 8);
$('#frmNevoProveedor').form('add rule', 'numero_documento', {
rules: [
{ type : 'docExiste', prompt : 'El numero de documento ya fue registrado'},
{ type : 'integer', prompt : 'Ingrese solo números'},
{ type : 'exactLength[8]', prompt : 'El DNI debe tener {ruleValue} digitos'}
]
});
}
});
$('.btn_registrar_proveedor').on('click', function() {
if ($('#frmNevoProveedor').form('is valid')) {
$("#loader_proveedor").removeClass('disabled');
$("#loader_proveedor").addClass('active');
var data = $('#frmNevoProveedor').serialize();
$._requestApi('/proveedor/registrar', data, 'POST', function (resolve) {
if (resolve) {
if (resolve.message === "success") {
$("select[name='id_proveedor']").append($('<option>', {
value: resolve.id_proveedor,
text: resolve.nombre+' ('+resolve.numero_documento+')',
selected: true
}));
$.Helper.clearFields("#frmNevoProveedor");
$('#nuevo_proveedor_modal').modal('hide');
}
$("#loader_proveedor").removeClass('active');
$("#loader_proveedor").addClass('disabled');
}
});
} else {
$('#frmNevoProveedor').form('validate form');
}
});
/******************************************************************************/
/* validacion porcentaje en precio de compra y venta de modal productos
/******************************************************************************/
$('[name="tipo_precio"]').change(function() {
var option= $("option:selected", this).val();
if (option == "1") {
$('#frmNuevoProducto').form('remove fields', ['precio_compra']);
$('#frmNuevoProducto').form('remove prompt', ['precio_compra']);
$('#frmNuevoProducto').form('add rule', 'precio_compra', {
optional: true,
rules: [{type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un valor valido'}]
});
}
if (option == "2") {
$('#frmNuevoProducto').form('add rule', 'precio_compra', {
rules: [
{ type : 'empty', prompt : 'Complete este campo'},
{ type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un valor valido'},
]
});
}
});
$('[name="tipo_precio"]').on('change', function(){
if ($('[name="precio_compra"]').val() !== '' ) {
$('#frmNuevoProducto').form('remove prompt', ['precio_compra']);
}
});
/******************************************************************************/
/* validacion porcentaje en precio de compra y venta por mayor
/******************************************************************************/
$('[name="tipo_precio_2"]').change(function() {
var option= $("option:selected", this).val();
if (option == "1") {
$('#frmNuevoProducto').form('remove fields', ['precio_compra']);
$('#frmNuevoProducto').form('remove prompt', ['precio_compra']);
$('#frmNuevoProducto').form('add rule', 'precio_compra', {
optional: true,
rules: [{type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un valor valido'}]
});
}
if (option == "2") {
$('#frmNuevoProducto').form('add rule', 'precio_compra', {
rules: [
{ type : 'empty', prompt : 'Complete este campo'},
{ type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un valor valido'},
]
});
}
});
$('[name="tipo_precio_2"]').on('change', function(){
if ($('[name="precio_compra"]').val() !== '' ) {
$('#frmNuevoProducto').form('remove prompt', ['precio_compra']);
}
});
/*********************************************************************************************************/
/* modal agregar producto
/*********************************************************************************************************/
$('.btn_nuevo_producto').on('click', function() {
$('#nuevo_producto_modal').modal('show');
});
$.fn.form.settings.rules.codigoExiste = function(value) {
return (verificaExiste('codigo_barras', value) > 0 ? false : true);
};
$('#frmNuevoProducto').form({
keyboardShortcuts: false,
fields: {
nombre: {
rules: [{ type : 'empty', prompt : 'Complete este campo'}]
},
situacion_impuesto: {
rules: [{ type : 'empty', prompt : 'Seleccione una opcion'}]
},
tipo_impuesto: {
rules: [{ type : 'empty', prompt : 'Seleccione una opcion'}]
},
valor_impuesto: {
rules: [
{ type : 'empty', prompt : 'Complete este campo'},
{ type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un valor valido'},
]
},
precio: {
rules: [
{ type : 'empty', prompt : 'Complete este campo'},
{ type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un valor valido'},
]
},
precio_mayorista: {
optional: true,
rules: [
{ type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un valor valido'},
]
},
precio_compra: {
optional: true,
rules: [
{ type : 'regExp[/^[0-9]+([\.]{1}[0-9]+)?$/]', prompt : 'Ingrese un valor valido'},
]
},
codigo_barras: {
optional: true,
//rules: [{ type : 'codigoExiste', prompt : 'Este codigo ya fue registrado en otro producto'}]
},
},
inline : true,
});
function verificaExiste(field, param) {
var count;
$.ajax({
async: false,
url: APP_URL+'/producto/existeCampo',
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
type: 'GET',
dataType: 'json',
data: { campo: field, valor: param},
success: function (data) {
count = data;
}
});
return count;
};
$('.btn_registrar_producto').on('click', function() {
if ($('#frmNuevoProducto').form('is valid')) {
if ( $('[name="precio"]').val() != 0 ) {
$("#loader_producto").removeClass('disabled');
$("#loader_producto").addClass('active');
var data = $('#frmNuevoProducto').serialize();
$._requestApi('/producto/registrar', data, 'POST', function (resolve) {
if (resolve) {
if (resolve.message === "success") {
agregarTabla(resolve);
$.Helper.clearFields("#frmNuevoProducto", ["valor_impuesto"]);
$('#nuevo_producto_modal').modal('hide');
}
$("#loader_producto").removeClass('active');
$("#loader_producto").addClass('disabled');
}
});
} else {
swal("El precio de venta", "NO puede ser cero", "warning");
}
} else {
$('#frmNuevoProducto').form('validate form');
}
});
});
/*********************************************************************************************************/
/* funciones de calculo
/*********************************************************************************************************/
function calculaSubtotal(id) {
var subt = (parseFloat($('#prec'+id).val()).toFixed(2)*parseFloat($('#cant'+id).val()).toFixed(2));
$('#subt'+id).val(validaNumero($('#prec'+id).val()) && validaNumero($('#cant'+id).val()) ? subt.toFixed(2) : '');
}
function validaNumero(valor) {
var expresion=/^[0-9]+([\.]{1}[0-9]+)?$/;
return !expresion.test(valor) ? false : true;
}
function verificaExite(id) {
exist = false;
$('#tbody tr').each(function() {
if (this.id == id) {
exist = true;
}
});
return exist;
}
function calcularTotal() {
var total = 0;
$('#tbody').find('tr').each(function(index, element) {
$(element).find('input').each(function(index1, element1) {
if(index1==3) { //Index empieza en 0 incluye hiddens
temp = parseFloat($(element1).val());
total+= temp;
}
});
});
$('#total_compra').val(!isNaN(total) ? total.toFixed(2) : '');
}
function quitarTabla(elem) {
var elementoEliminar=$(elem).parent().parent();
$(elementoEliminar).remove();
calcularTotal();
}
function renderProductos(resolve){
var arr = [];
arr = [
'<tr data-table="'+resolve.id_producto+'">',
'<td>',resolve.i,'</td>',
'<td>',resolve.producto.codigo_barras,'</td>',
'<td>',resolve.producto.nombre,'</td>',
'<td>',resolve.producto.descripcion,'</td>',
'<td>',resolve.producto.tipo_presentacion.nombre,'</td>',
'<td>',resolve.producto.precio,'</td>',
'<td>', (resolve.producto.fecha_vencimiento !== '' ? resolve.producto.fecha_vencimiento : "Sin fecha") ,'</td>',
'<td><div class="ui mini vertical animated positive button btn_seleccionar_producto" title="Seleccionar este producto" data-id="',resolve.id_producto,'"><div class="hidden content">Elegir</div><div class="visible content"><i class="check icon"></i></div></div></td>',
'</tr>',
];
return arr.join('');
}