arcadiasuite/plus/public/js/produto.js

640 lines
18 KiB
JavaScript

var EDIT = 0
$(function() {
changeDericadoPetroleo()
changeCardapio()
changeDelivery()
changeVariavel()
changeEcommerce()
changeCombo()
changeMeradoLivre()
changeNuvemShop()
changeWoocommerce()
changeIfood()
changeVendiZap()
if($('#edit').val() == 1){
EDIT = 1
}
if($('.table-variacao tbody tr').length == 0){
$('#inp-variacao_modelo_id').val('').change()
$('#inp-sub_variacao_modelo_id').val('').change()
}
setTimeout(() => {
if($('#inp-padrao_id').val()){
$('#inp-padrao_id').change()
}
$('.select2-group').css('width', '80%')
}, 1100)
})
$('#btn-store').click(() => {
})
$('.btn-store-marca').click(() => {
let item = {
nome: $('#inp-nome_marca').val(),
empresa_id: $('#empresa_id').val()
}
$.post(path_url + "api/produtos/marca-store", item)
.done((result) => {
var newOption = new Option(result.nome, result.id, 1, false);
$('#marca_id').append(newOption);
$('#marca_id').val(result.id).change();
$('#inp-nome_marca').val('')
$('#modal_marca').modal('hide')
swal("Sucesso", "Marca cadastrada!", "success")
})
.fail((err) => {
console.log(err)
swal("Erro", "Erro ao salvar marca", "error")
})
})
$('.btn-store-categoria').click(() => {
let item = {
nome: $('#inp-nome_categoria').val(),
empresa_id: $('#empresa_id').val()
}
$.post(path_url + "api/produtos/categoria-store", item)
.done((result) => {
var newOption = new Option(result.nome, result.id, 1, false);
$('#categoria_id').append(newOption);
$('#categoria_id').val(result.id).change();
$('#inp-nome_categoria').val('')
$('#modal_categoria_produto').modal('hide')
swal("Sucesso", "Categoria cadastrada!", "success")
})
.fail((err) => {
console.log(err)
swal("Erro", "Erro ao salvar categoria", "error")
})
})
$(document).on("click", ".gerar-codigo", function () {
$.get(path_url + "produtos-gerar-codigo-ean")
.done((res) => {
$(this).prev().val(res)
})
.fail((err) => {
swal("Erro", "Erro ao buscar código", "error")
})
});
function gerarCode(inp) {
$.get(path_url + "produtos-gerar-codigo-ean")
.done((res) => {
if(inp == 1){
$('#codigo_barras').val(res)
}else{
$('#codigo_barras'+inp).val(res)
}
})
.fail((err) => {
swal("Erro", "Erro ao buscar código", "error")
})
}
$('.btn-action').click(() => {
addClassRequired()
})
function addClassRequired() {
let isInalid = false
$('.tab-fiscal').trigger('click')
let campos = ""
$("body #form-produto").find('input, select').each(function () {
if ($(this).prop('required')) {
if ($(this).val() == "" || $(this).val() == null) {
$(this).addClass('is-invalid')
isInalid = true
if($(this).prev()[0].textContent){
campos += $(this).prev()[0].textContent + ", "
}
} else {
$(this).removeClass('is-invalid')
}
} else {
$(this).removeClass('is-invalid')
}
})
setTimeout(() => {
if(isInalid){
audioError()
campos = campos.substring(0, campos.length-2)
toastr.error('Campos obrigatórios não preenchidos: ' + campos);
}else{
$body.addClass("loading");
}
}, 50)
}
$("#inp-sub_categoria_id").select2({
minimumInputLength: 2,
language: "pt-BR",
placeholder: "Digite para buscar a subcategoria",
width: "100%",
ajax: {
cache: true,
url: path_url + "api/subcategorias",
dataType: "json",
data: function (params) {
console.clear();
var query = {
pesquisa: params.term,
categoria_id: $('#categoria_id').val()
};
return query;
},
processResults: function (response) {
var results = [];
$.each(response, function (i, v) {
if(!$('#categoria_id').val()){
swal("Alerta", "Selecione a categoria primeiro!", "warning")
return
}
var o = {};
o.id = v.id;
o.text = v.nome
results.push(o);
});
return {
results: results,
};
},
},
});
$(document).on("change", "#inp-padrao_id", function() {
let padrao = $(this).val()
if (padrao) {
$.get(path_url + "api/produtos/padrao", {
padrao: padrao
})
.done((result) => {
if(EDIT == 0){
if(result._ncm){
var newOption = new Option(result._ncm.descricao, result._ncm.codigo, 1, 1);
$('#inp-ncm').append(newOption);
}
// $('#inp-ncm').val(result.ncm)
$('#inp-cest').val(result.cest)
$('#inp-perc_icms').val(result.perc_icms)
$('#inp-perc_pis').val(result.perc_pis)
$('#inp-perc_cofins').val(result.perc_cofins)
$('#inp-perc_ipi').val(result.perc_ipi)
$('#inp-cst_csosn').val(result.cst_csosn).change()
$('#inp-cst_pis').val(result.cst_pis).change()
$('#inp-cst_cofins').val(result.cst_cofins).change()
$('#inp-cst_ipi').val(result.cst_ipi).change()
$('#inp-cEnq').val(result.cEnq).change()
$('#inp-cfop_estadual').val(result.cfop_estadual)
$('#inp-cfop_outro_estado').val(result.cfop_outro_estado)
$('#inp-codigo_beneficio_fiscal').val(result.codigo_beneficio_fiscal)
$('#inp-cfop_entrada_estadual').val(result.cfop_entrada_estadual)
$('#inp-cfop_entrada_outro_estado').val(result.cfop_entrada_outro_estado)
$('#inp-modBCST').val(result.modBCST).change()
$('#inp-pICMSST').val(result.pICMSST)
$('#inp-pMVAST').val(result.pMVAST)
$('#inp-redBCST').val(result.redBCST)
$('#inp-cst_ibscbs').val(result.cst_ibscbs).change()
$('#inp-cclass_trib').val(result.cclass_trib)
$('#inp-perc_ibs_uf').val(result.perc_ibs_uf)
$('#inp-perc_ibs_mun').val(result.perc_ibs_mun)
$('#inp-perc_cbs').val(result.perc_cbs)
$('#inp-perc_dif').val(result.perc_dif)
}else{
EDIT = 0
}
})
.fail((err) => {
console.log(err)
})
}
});
function changeDericadoPetroleo() {
let check = $('#inp-petroleo').is(':checked')
if (check) {
$('.div-petroleo').removeClass('d-none')
} else {
$('.div-petroleo').addClass('d-none')
}
}
$('#inp-petroleo').change(() => {
changeDericadoPetroleo()
})
function changeCardapio() {
let check = $('#inp-cardapio').is(':checked')
if (check) {
$('.div-cardapio').removeClass('d-none')
} else {
$('.div-cardapio').addClass('d-none')
}
}
$('#inp-cardapio').change(() => {
changeCardapio()
})
function changeNuvemShop() {
let check = $('#inp-nuvemshop').is(':checked')
if (check) {
$('.div-nuvemshop').removeClass('d-none')
$('.inp-nuvemshop').attr('required', 1)
} else {
$('.div-nuvemshop').addClass('d-none')
$('.inp-nuvemshop').removeAttr('required')
}
}
$('#inp-nuvemshop').change(() => {
changeNuvemShop()
})
function changeDelivery() {
let check = $('#inp-delivery').is(':checked')
if (check) {
$('.div-delivery').removeClass('d-none')
} else {
$('.div-delivery').addClass('d-none')
}
}
$('#inp-delivery').change(() => {
changeDelivery()
})
function changeEcommerce() {
let check = $('#inp-ecommerce').is(':checked')
if (check) {
$('.div-ecommerce').removeClass('d-none')
} else {
$('.div-ecommerce').addClass('d-none')
}
}
$('#inp-ecommerce').change(() => {
changeEcommerce()
})
function changeWoocommerce() {
let check = $('#inp-woocommerce').is(':checked')
if (check) {
$('.div-woocommerce').removeClass('d-none')
// $('.inp-woocommerce').attr('required', 1)
} else {
$('.div-woocommerce').addClass('d-none')
// $('.inp-woocommerce').removeAttr('required')
}
}
$('#inp-woocommerce').change(() => {
changeWoocommerce()
})
function changeIfood() {
let check = $('#inp-ifood').is(':checked')
if (check) {
$('.div-ifood').removeClass('d-none')
} else {
$('.div-ifood').addClass('d-none')
}
}
$('#inp-ifood').change(() => {
changeIfood()
})
function changeVendiZap() {
let check = $('#inp-vendizap').is(':checked')
if (check) {
$('.div-vendizap').removeClass('d-none')
} else {
$('.div-vendizap').addClass('d-none')
}
}
$('#inp-vendizap').change(() => {
changeVendiZap()
})
function changeMeradoLivre() {
let check = $('#inp-mercadolivre').is(':checked')
if (check) {
$('.div-mercadolivre').removeClass('d-none')
$('.input-ml').attr('required', 1)
getTiposPublicacao()
} else {
$('.div-mercadolivre').addClass('d-none')
$('.input-ml').removeAttr('required')
}
}
function getTiposPublicacao(){
$.get(path_url + "api/mercadolivre/get-tipo-publicacao", {
empresa_id: $('#empresa_id').val()
})
.done((res) => {
if(res.code == 'unauthorized'){
return;
}
$('#inp-mercado_livre_tipo_publicacao').html('')
var newOption = new Option('Selecione', '', false, false);
$('#inp-mercado_livre_tipo_publicacao').append(newOption);
res.map((x) => {
var newOption = new Option(x.name, x.id, false, false);
$('#inp-mercado_livre_tipo_publicacao').append(newOption);
})
setTimeout(() => {
$('#inp-mercado_livre_tipo_publicacao').val($('#tipo_publicacao_hidden').val()).change()
}, 100)
})
.fail((err) => {
console.log(err)
swal("Erro", "Algo deu errado", "error")
})
}
$('#inp-mercadolivre').change(() => {
changeMeradoLivre()
})
$(document).ready(function() {
$("form").bind("keypress", function(e) {
if (e.keyCode == 13) {
return false;
}
});
});
function changeVariavel() {
let variavel = $('#inp-variavel').val()
if (variavel == 1) {
$('.div-variavel').removeClass('d-none')
$('#inp-valor_unitario').val('0')
//$('#inp-valor_compra').val('0')
} else {
$('.div-variavel').addClass('d-none')
}
}
$('#inp-variavel').change(() => {
changeVariavel()
})
function changeCombo() {
let variavel = $('#inp-combo').val()
if (variavel == 1) {
$('.div-combo').removeClass('d-none')
} else {
$('.div-combo').addClass('d-none')
}
}
$('#inp-combo').change(() => {
changeCombo()
})
// variacoes
$(document).on("change", "#inp-variacao_modelo_id", function () {
let variacao_modelo_id = $(this).val()
if(variacao_modelo_id){
$.get(path_url + "api/variacoes/modelo", {
variacao_modelo_id: variacao_modelo_id
})
.done((res) => {
$('.table-variacao tbody').html(res)
$('#inp-sub_variacao_modelo_id').val('').change()
})
.fail((err) => {
console.log(err)
swal("Erro", "Algo deu errado", "error")
})
}
})
$(document).on("change", "#inp-sub_variacao_modelo_id", function () {
let sub_variacao_modelo_id = $(this).val()
let variacao_modelo_id = $('#inp-variacao_modelo_id').val()
if(!sub_variacao_modelo_id) return;
if(variacao_modelo_id){
$.get(path_url + "api/variacoes/modelo-subvariacoes", {
variacao_modelo_id: variacao_modelo_id,
sub_variacao_modelo_id: sub_variacao_modelo_id
})
.done((res) => {
$('.table-variacao tbody').html(res)
})
.fail((err) => {
console.log(err)
swal("Erro", "Algo deu errado", "error")
})
}else{
swal("Erro", "Selecione a variação principal primeiro!", "error")
}
})
$(document).on("blur", "#inp-valor_compra", function () {
let valorCompra = convertMoedaToFloat($(this).val())
$percLucro = $(this).closest('.col-produto').next().find('input');
$valorUnitario = $(this).closest('.col-produto').next().next().find('input');
if($percLucro.val()){
let valor = valorCompra + ((valorCompra*$percLucro.val())/100)
$valorUnitario.val(convertFloatToMoeda(valor))
}
})
$(document).on("blur", "#inp-percentual_lucro", function () {
let percLucro = $(this).val()
$valorCompra = $(this).closest('.col-produto').prev().find('input');
$valorUnitario = $(this).closest('.col-produto').next().find('input');
if($valorCompra.val()){
let vlCompra = convertMoedaToFloat($valorCompra.val())
let valor = vlCompra + ((vlCompra*percLucro)/100)
$valorUnitario.val(convertFloatToMoeda(valor))
}
})
$(document).on("blur", "#inp-valor_unitario", function () {
let valorUnitario = convertMoedaToFloat($(this).val())
$percLucro = $(this).closest('.col-produto').prev().find('input');
$valorCompra = $(this).closest('.col-produto').prev().prev().find('input');
if($valorCompra.val() && valorUnitario){
let vlCompra = convertMoedaToFloat($valorCompra.val())
let dif = (valorUnitario - vlCompra)/vlCompra*100;
$percLucro.val(dif.toFixed(2))
}else{
$percLucro.val('0')
}
})
$(document).on("blur", ".valor-compra-combo", function () {
let valorCompra = convertMoedaToFloat($(this).val())
$subtotal = $(this).closest('td').next().find('input');
$qtd = $(this).closest('td').prev().find('input');
let qtd = $qtd.val()
$subtotal.val(convertFloatToMoeda(valorCompra * qtd))
calcValorCombo()
})
$(document).on("blur", ".qtd-combo", function () {
let qtd = $(this).val()
$subtotal = $(this).closest('td').next().next().find('input');
$valorCompra = $(this).closest('td').next().find('input');
let valorCompra = convertMoedaToFloat($valorCompra.val())
$subtotal.val(convertFloatToMoeda(valorCompra * qtd))
calcValorCombo()
})
$(document).on("blur", "#inp-margem_combo", function () {
calcValorCombo()
})
function calcValorCombo(){
let totalCombo = 0
let margem = $('#inp-margem_combo').val()
$(".subtotal-combo").each(function () {
totalCombo += convertMoedaToFloat($(this).val())
})
$('#inp-valor_compra').val(convertFloatToMoeda(totalCombo))
totalCombo += (totalCombo*(parseFloat(margem)/100))
setTimeout(() => {
$('#inp-valor_combo').val(convertFloatToMoeda(totalCombo))
$('#inp-valor_unitario').val(convertFloatToMoeda(totalCombo))
}, 100)
}
$(document).on("blur", "#inp-valor_unitario", function () {
$('#inp-nuvem_shop_valor').val($(this).val())
})
$(document).on("change", "#inp-produto_combo_id", function () {
let produto_id = $(this).val()
if(produto_id){
$.get(path_url + "api/combos/modelo", {
produto_id: produto_id
})
.done((res) => {
$("#inp-produto_combo_id").val('').change()
$('.table-combo tbody').append(res)
setTimeout(() => {
calcValorCombo()
}, 10)
})
.fail((err) => {
console.log(err)
swal("Erro", "Algo deu errado", "error")
})
}
})
$(document).delegate(".btn-remove-tr-variacao", "click", function (e) {
e.preventDefault();
swal({
title: "Você esta certo?",
text: "Deseja remover esse item mesmo?",
icon: "warning",
buttons: true
}).then(willDelete => {
if (willDelete) {
var trLength = $(this)
.closest("tr")
.closest("tbody")
.find("tr")
.not(".dynamic-form-document").length;
if (!trLength || trLength > 1) {
$(this)
.closest("tr")
.remove();
} else {
swal("Atenção", "Você deve ter ao menos um item na lista", "warning");
}
}
});
});
$(document).delegate(".btn-remove-tr-combo", "click", function (e) {
e.preventDefault();
swal({
title: "Você esta certo?",
text: "Deseja remover esse item mesmo?",
icon: "warning",
buttons: true
}).then(willDelete => {
if (willDelete) {
$(this).closest("tr").remove();
calcValorCombo()
}
});
});
$('.btn-add-tr-variacao').on("click", function () {
console.clear()
var $table = $(this)
.closest(".row")
.prev()
.find(".table-variacao");
console.log($table)
var hasEmpty = false;
$table.find("input, select").each(function () {
if (($(this).val() == "" || $(this).val() == null) && $(this).attr("type") != "hidden" && $(this).attr("type") != "file" && !$(this).hasClass("ignore")) {
hasEmpty = true;
}
});
if (hasEmpty) {
swal(
"Atenção",
"Preencha todos os campos antes de adicionar novos.",
"warning"
);
return;
}
// $table.find("select.select2").select2("destroy");
var $tr = $table.find(".dynamic-form").first();
$tr.find("select.select2").select2("destroy");
var $clone = $tr.clone();
$clone.show();
$clone.find("input,select").val("");
$clone.find("input,select").removeAttr('readonly');
$table.append($clone);
setTimeout(function () {
$("tbody select.select2").select2({
language: "pt-BR",
width: "100%",
theme: "bootstrap4"
});
}, 100);
})