prod editarProduto:
prod: {
qtd: null,
cfop: null,
CEST: null,
cst: null,
bc_icms: 0,
bc_icms_st: 0,
p_icms: 0,
p_icms_st: 0,
cEnqIPI: null,
cstIpi: 0.00,
bcIPI: 0.00,
aliqIpi: 0.00,
bcPis: 0.00,
aliqPis: 0.00,
bcCofins: null,
aliqCofins: null,
valor_venda: null,
p_red_bc_st: 0,
p_mva_st: 0,
p_cred_sn: 0,
mod_bc_icms_st: 0,
v_icms_st: 0,
v_st: 0,
v_icms: 0,
v_cred_sn: 0,
origICMS: 0,
numeroPedidoCompra: '',
itemPedidoCompra: 0
},
imposto service
export default {
convertToProd(prod) {
return {
descricao: prod.xProd,
codigo: prod.cProd,
ncm_sh: prod.NCM,
qtd: Number(prod.qCom),
cfop: prod.CFOP,
CEST: prod.CEST,
cst: prod.cstICMS,
p_icms: prod.pICMS,
bc_icms: prod.vBCICMS,
p_icms_st: prod.pICMSST,
bc_icms_st: prod.vBCICMSST,
origICMS: prod.origICMS ? prod.origICMS : 0,
cEnqIPI: prod.cEnqIPI,
cstIpi: prod.cstIPI,
bcIPI: prod.vBCIPI,
aliqIpi: prod.pIPI,
bcPis: prod.vBCPIS,
cstPis: prod.cstPIS,
aliqPis: prod.pPIS,
bcCofins: parseFloat(prod.vBCCOFINS),
cstCofins: prod.cstCOFINS,
aliqCofins: prod.pCOFINS,
valor_venda: prod.vUnCom,
numeroPedidoCompra: prod.xPed,
itemPedidoCompra: prod.nItemPed,
p_red_bc_st: parseFloat(prod.pRedBCST),
p_mva_st: prod.pMVAST,
mod_bc_icms_st: parseInt(prod.modBCICMSST),
v_cred_sn: prod.vCredICMSSN,
p_cred_sn: prod.pCredSN,
v_icms_st: prod.vICMSST,
v_st: prod.vST,
v_ipi: prod.vIPI
};
},
calculateTotalProd(produto) {
let bc_icms = 0;
let ipi = 0.00;
let pis = 0.00;
let cofins = 0.00;
if(produto.cEnqIPI && produto.cstIpi && produto.bcIPI && produto.aliqIpi) {
ipi = parseFloat(produto.bcIPI) / 100 * parseFloat(produto.aliqIpi);
ipi = (Math.round((parseFloat(ipi) * 100)) / 100).toFixed(2)
}
if(produto.bcPis && produto.aliqPis) {
pis = parseFloat(produto.bcPis) / 100 * parseFloat(produto.aliqPis);
pis = (Math.round((parseFloat(pis) * 100)) / 100).toFixed(2)
}
if(produto.bcCofins && produto.aliqCofins) {
cofins = parseFloat(produto.bcCofins) / 100 * parseFloat(produto.aliqCofins);
cofins = (Math.round((parseFloat(cofins) * 100)) / 100).toFixed(2)
}
this.calcularImpostos(produto);
let produtoNota = {
cProd: produto.codigo,
xProd: produto.descricao,
qCom: parseFloat(produto.qtd),
vUnCom: Number(parseFloat(produto.valor_venda)),
vProd: Number(parseFloat(produto.valor_venda)) * produto.qtd,
NCM: produto.ncm_sh,
CFOP: produto.cfop ? produto.cfop : produto.codigo.cfop,
CEST: produto.CEST ? produto.CEST : '',
cstICMS: produto.cst ? produto.cst : produto.codigo.cst,
//icms normal
vBCICMS: bc_icms,
pICMS: produto.p_icms,
vICMS: produto.v_icms,
origICMS: produto.origICMS,
//icms st
vICMSST: produto.v_icms_st,
pICMSST: produto.p_icms_st,
vBCICMSST: produto.bc_icms_st,
pRedBCST: parseFloat(produto.p_red_bc_st),
pMVAST: Number(parseFloat(produto.p_mva_st)),
pCredSN: Number(parseFloat(produto.p_cred_sn)),
modBCICMSST: parseInt( produto.mod_bc_icms_st),
vCredICMSSN: produto.v_cred_sn,
vST: produto.v_st,
cEnqIPI: produto.cEnqIPI,
cstIPI: Number(produto.cstIpi),
vBCIPI: Number(produto.bcIPI),
pIPI: Number(produto.aliqIpi),
vIPI: Number(parseFloat(ipi)),
vBCPIS: Number(produto.bcPis),
pPIS: Number(produto.aliqPis),
cstPIS: Number(produto.cstPis),
vPIS: Number(parseFloat(pis)),
vBCCOFINS: Number(produto.bcCofins),
cstCOFINS: Number(produto.cstCofins),
pCOFINS: Number(produto.aliqCofins),
vCOFINS: Number(parseFloat(cofins)),
xPed: produto.numeroPedidoCompra ? produto.numeroPedidoCompra : '',
nItemPed: produto.itemPedidoCompra ? Number(parseFloat(produto.itemPedidoCompra)) : 0
}
return produtoNota;
},
calcularImpostos(prod) {
let quantidade = parseFloat(prod.qtd);
let bcICMS = prod.valor_venda * quantidade;
if(!bcICMS){
bcICMS = 0
}
prod.bc_icms = bcICMS;
let vBCICMSST = bcICMS + (bcICMS * prod.p_mva_st) / 100 - (bcICMS * prod.p_red_bc_st) / 100;
if(!vBCICMSST){
vBCICMSST = 0
}
prod.bc_icms_st = Number(vBCICMSST.toFixed(2));
let vICMSST = (prod.bc_icms_st * prod.p_icms_st) / 100;
if(!vICMSST){
vICMSST = 0
}
prod.v_icms_st = Number(vICMSST.toFixed(2));
let vICMS = (prod.bc_icms * prod.p_icms) / 100;
if(!vICMS){
vICMS = 0
}
prod.v_icms = Number(vICMS.toFixed(2));
let vCREDSN = (bcICMS * prod.p_cred_sn) / 100;
if(!vCREDSN){
vCREDSN = 0
}
prod.v_cred_sn = Number(vCREDSN.toFixed(2));
let vST = Number((prod.v_icms_st).toFixed(2));
if(!vST){
vST = 0
}
prod.v_st = vST;
if (prod.v_st <= 0) {
prod.v_st = 0;
}
return prod;
},
calculateTotalNota(nota) {
nota.vICMS = 0;
nota.vICMSST = 0;
nota.vST = 0;
nota.vBC = 0;
nota.vBCST = 0;
nota.vIPI = 0;
nota.vPIS = 0;
nota.vCOFINS = 0;
nota.bc_icms = 0;
nota.bc_icms_st = 0;
nota.v_icms = 0;
nota.v_icms_st = 0;
let porcentagemDescontoGeral = 0;
if(nota.vDesc){
porcentagemDescontoGeral = Number(parseFloat(nota.vDesc)) / parseFloat(nota.vProd);
}
let porcentagemDespesa = 0;
if(nota.vOutro){
porcentagemDespesa = parseFloat(nota.vOutro) / parseFloat(nota.vProd);
}
nota.vProd = 0;
for(let prod of nota.produtos){
if(prod.cstICMS === 201 || prod.cstICMS === 202 || prod.cstICMS === 203 || prod.cstICMS === 900){
nota.vICMSST += prod.vICMSST;
nota.vBCST += prod.vBCICMSST;
nota.vST += prod.vST;
}
if(prod.cstICMS === 900){
nota.vICMS += prod.vICMS;
nota.vBC += prod.vBCICMS;
}
nota.vIPI += prod.vIPI;
nota.vPIS += prod.vPIS;
nota.vCOFINS += prod.vCOFINS;
prod.vProd = Number(prod.qCom) * prod.vUnCom
nota.vProd += parseFloat(prod.vProd);
let desc_prod = 0;
let despesa_prod = 0;
if(porcentagemDescontoGeral > 0){
desc_prod = Math.round((((prod.qCom * prod.vUnCom)) * (porcentagemDescontoGeral)*100))/100;
prod.vDesc = desc_prod;
}
if(porcentagemDespesa > 0){
despesa_prod = Math.round(((prod.qCom * prod.vUnCom)) * (porcentagemDespesa)*100)/100;
prod.vOutro = despesa_prod;
}
}
if(nota.vDesc < 0) {
return
}
if(nota.vOutro < 0){
return
}
if(nota.vDesc || nota.vOutro) {
let vnf_final_desc
let valor_desc = nota.vDesc ? nota.vDesc : 0;
let valor_outro = nota.vOutro ? nota.vOutro : 0;
vnf_final_desc = parseFloat(nota.vProd.toFixed(2)) - parseFloat(valor_desc) + parseFloat(valor_outro) + parseFloat(nota.vST) + parseFloat(nota.vIPI);
nota.vNF = +vnf_final_desc.toFixed(2)
nota.pagamentos[0].vPag = +vnf_final_desc.toFixed(2)
} else {
let vnf_final
vnf_final = parseFloat(nota.vProd.toFixed(2)) + parseFloat(nota.vST) + parseFloat(nota.vIPI)
nota.vNF = +vnf_final.toFixed(2)
nota.pagamentos[0].vPag = +vnf_final.toFixed(2)
}
return nota;
}
}
Nota Service
import { http } from './HttpService.js'
import { http as httpNode } from '../HttpService.js'
export default {
load(params = '') {
return http.get('nota' + params)
},
sum(params = '') {
return http.get('nota/resumo' + params)
},
show(id) {
return http.get(`nota/${id}`)
},
show(id) {
return http.get(`nota/${id}`)
},
eviarEmail(params = '',data) {
return http.post(`fiscal/email`+params,data)
},
cancelar(id, xJust) {
let just = {
"xJust": xJust
}
return http.post(`fiscal/cancelar/${id}`, just)
},
requestCnf(id, xJust) {
return httpNode.get(`fiscal/cnf`)
},
createOrUpdate(obj, salva, mod) {
let transp = obj.transp;
let nota = {
emit: {
CNPJ: JSON.parse(localStorage.getItem('app_user')).instalacao.cnpj.replace(/\D/g,'')
},
ide: {
natOp: obj.natOp,
cNF: obj.cNF,
verProc: "YoogaApp",
mod: obj.mod || mod,
tpNF: obj.tpNF,
finNFe: obj.finNFe,
refNFes: obj.refNFes
},
dest: {
},
transp: {
"modFrete":obj.modFrete
},
total: {
vProd: obj.vProd,
vNF: obj.vNF,
vBC: obj.vBCICMS,
vICMS: obj.vICMS ? obj.vICMS : 0,
vBCST: obj.vBCST,
vST: obj.vST ? obj.vST : 0,
vDesc: parseFloat(obj.vDesc) ? parseFloat(obj.vDesc) : 0,
vOutro: obj.vOutro ? obj.vOutro : 0,
vIPI: obj.vIPI ? obj.vIPI : 0,
vPIS: obj.vPIS ? obj.vPIS : 0,
vCOFINS: obj.vCOFINS ? obj.vCOFINS : 0
},
det: [
],
pag: [
],
estoque: obj.estoque
}
try {
if(transp && transp.transportadora && transp.transportadora.id) {
nota.transp.transporta = transp.transportadora;
nota.transp.vol = transp.vol
if(nota.transp.transporta.CNPJ) {
delete nota.transp.transporta.CPF;
} else if(nota.transp.transporta.CPF) {
delete nota.transp.transporta.CNPJ;
}
}
} catch(err) {
console.log('Erro transp nota service: ',err)
throw new Error('Erro ao enviar transportadora')
}
if(obj.infCpl){
nota.infAdic = {};
nota.infAdic = {
"infCpl": obj.infCpl
};
}
//===================================================================================================
// Produtos
//===================================================================================================
for(let produto of obj.produtos) {
let obj = {
"cProd": produto.cProd,
"xProd": produto.xProd,
"CEST": produto.CEST ? produto.CEST : '',
"NCM": produto.NCM ? produto.NCM : produto.ncm_sh,
"CFOP": produto.CFOP,
"uCom": this.getUcomEnum(produto.unidade),
"qCom": parseFloat(String(produto.qCom).replace(',','.')) ? parseFloat(String(produto.qCom).replace(',','.')) : 0,
"vUnCom": produto.vUnCom,
"cstICMS": produto.cstICMS ? produto.cstICMS : produto.CST,
"vDesc": produto.vDesc ? produto.vDesc : 0,
"vOutro": produto.vOutro ? produto.vOutro : 0,
"vBCICMS" : parseFloat(produto.vBCICMS) ? parseFloat(produto.vBCICMS) : 0,
"origICMS": parseInt(produto.origICMS) ? parseInt(produto.origICMS) :0,
"pICMS": parseFloat(produto.pICMS) ? parseFloat(produto.pICMS) : 0,
"vICMS": parseFloat(produto.vICMS) ? parseFloat(produto.vICMS) : 0,
"vBCICMSST" : parseFloat(produto.vBCICMSST) ? parseFloat(produto.vBCICMSST) : 0,
"pICMSST": parseFloat(produto.pICMSST) ? parseFloat(produto.pICMSST) : 0,
"vICMSST": parseFloat(produto.vICMSST) ? parseFloat(produto.vICMSST) : 0,
"pIPI": parseFloat(produto.pIPI) ? parseFloat(produto.pIPI) : 0,
"vIPI": parseFloat(produto.vIPI) ? parseFloat(produto.vIPI) : 0,
"cEnqIPI": produto.cEnqIPI ? produto.cEnqIPI : 999,
"cstIPI": produto.cstIPI ? produto.cstIPI : 99,
"vBCIPI": parseFloat(produto.vBCIPI) ? parseFloat(produto.vBCIPI) : 0,
"cstPIS": produto.cstPIS ? produto.cstPIS : 1,
"vBCPIS": parseFloat(produto.vBCPIS) ? parseFloat(produto.vBCPIS) : 0,
"pPIS": parseFloat(produto.pPIS) ? parseFloat(produto.pPIS) : 0,
"vPIS": parseFloat(produto.vPIS) ? parseFloat(produto.vPIS) : 0,
"cstCOFINS": produto.cstCOFINS ? produto.cstCOFINS : 1,
"vBCCOFINS": parseFloat(produto.vBCCOFINS) ? parseFloat(produto.vBCCOFINS) : 0,
"pCOFINS": parseFloat(produto.pCOFINS) ? parseFloat(produto.pCOFINS) : 0,
"vCOFINS": parseFloat(produto.vCOFINS) ? parseFloat(produto.vCOFINS) : 0,
"xPed": produto.xPed,
"nItemPed": parseFloat(produto.nItemPed),
"pRedBCST": parseFloat(produto.pRedBCST) ? parseFloat(produto.pRedBCST) : 0 ,
"pMVAST": parseFloat(produto.pMVAST) ? parseFloat(produto.pMVAST) : 0,
"pCredSN": parseFloat(produto.pCredSN) ? parseFloat(produto.pCredSN) : 0,
"modBCICMSST": parseFloat(produto.modBCICMSST) ? parseFloat(produto.modBCICMSST) : 0,
"vST": parseFloat(produto.vST) ? parseFloat(produto.vST) : 0,
"vCredICMSSN": parseFloat(produto.vCredICMSSN) ? parseFloat(produto.vCredICMSSN): 0,
}
nota.det.push(obj)
}
//===================================================================================================
// Produtos
//===================================================================================================
try {
nota.pag.push({
"tPag": obj.pagamentos[0].tPag,
"vPag": obj.pagamentos[0].vPag,
"xPag": this.getPagNome(obj.pagamentos[0].tPag)
});
} catch(err) {
console.log('Erro pagamentos nota: ', err);
throw new Error(err);
}
nota.dest = obj.destinatario
if(obj.id) {
nota.id = obj.id
nota.codigo = obj.id
return http.post('nota/json?save='+salva, nota)
} else {
return http.post('nota/json?save='+salva, nota)
}
},
getEstado(estado) {
let estados = [
"AC",
"AL",
"AM",
"AP",
"BA",
"CE",
"DF",
"ES",
"GO",
"MA",
"MT",
"MS",
"MG",
"PA",
"PB",
"PR",
"PE",
"PI",
"RJ",
"RN",
"RO",
"RS",
"RR",
"SC",
"SE",
"SP",
"TO"
]
return estados[estado]
},
getEstadoByUf(estado) {
let estados = [
"AC",
"AL",
"AM",
"AP",
"BA",
"CE",
"DF",
"ES",
"GO",
"MA",
"MT",
"MS",
"MG",
"PA",
"PB",
"PR",
"PE",
"PI",
"RJ",
"RN",
"RO",
"RS",
"RR",
"SC",
"SE",
"SP",
"TO"
]
return estados.find(e => e === estado)
},
getEstadoNumber(estado) {
let estados = [
"AC",
"AL",
"AM",
"AP",
"BA",
"CE",
"DF",
"ES",
"GO",
"MA",
"MT",
"MS",
"MG",
"PA",
"PB",
"PR",
"PE",
"PI",
"RJ",
"RN",
"RO",
"RS",
"RR",
"SC",
"SE",
"SP",
"TO"
]
return estados.indexOf(estado)
},
getUcomEnum(ucom) {
switch(ucom) {
case 0:
case 1:
return 'UN'
case 2:
return 'CX'
case 6:
return 'FD'
case 3:
return 'KG'
case 4:
return 'PC'
case 5:
return 'M'
default:
return "UN";
}
},
getPagNome(codigo) {
let pags = [
{
tPag: 1,
xPag: "Dinheiro",
},
{
tPag: 2,
xPag: "Cheque",
},
{
tPag: 3,
xPag: "Cartão de Débito",
},
{
tPag: 4,
xPag: "Cartão de Crédito",
},
{
tPag: 10,
xPag: "Vale Alimentação",
},
{
tPag: 11,
xPag: "Vale Refeição",
},
{
tPag: 12,
xPag: "Vale Presente",
},
{
tPag: 13,
xPag: "Vale Combustível",
},
{
tPag: 15,
xPag: "Boleto Bancário",
},
{
tPag: 90,
xPag: "Sem Pagamento",
},
{
tPag: 99,
xPag: "Outros",
},
]
return pags.find(obj => {
return obj.tPag == codigo
}).xPag
},
autorizar(obj){
return http.put('nota/json/' + obj.id, obj)
},
getNota(obj){
return http.get('nota/' + obj.id)
},
convertApiToLocal(original_object) {
let obj = {
transp: {}
};
obj.destinatario = {
"nome_fantasia": original_object.destinatario.xnome,
"nome_razao": '',
"cpf_cnpj": original_object.destinatario.cpf ? original_object.destinatario.cpf : original_object.destinatario.cnpj,
"rg_ie": null,
"data_nascimento": null,
"endereco": original_object.destinatario.xlgr,
"numero": original_object.destinatario.nro,
"complemento": null,
"bairro": original_object.destinatario.xbairro,
"cidade": original_object.destinatario.xmun,
"codigo_cidade": original_object.destinatario.cmun,
"estado": this.getEstadoByUf(original_object.destinatario.uf),
"cep": original_object.destinatario.cep,
"telefone": original_object.destinatario.fone,
"email": original_object.destinatario.email,
}
let nota = {
"codigo": null,
"natOp": original_object.natOp,
"tipoDest": original_object.destinatario.cpf ? 'C' : 'F',
"produtos": [{
"franchise_id": 0,
"idi": 45,
"codigo": 1934,
"descricao": "Refrigerante Lata",
"atalho": 1,
"tipo_produto": 0,
"tipo_sped": 0,
"unidade": 0,
"categoria_id": 14,
"fornecedor": 0,
"referencia": null,
"ncm_sh": "22021000",
"estoque_atual": 120,
"estoque_maximo": 0,
"estoque_minimo": 0,
"valor_custo": 0,
"lucro": 0,
"valor_venda": 4.5,
"valor_atacado": 0,
"quantidade_atacado": 0,
"ranking": 190,
"complemento": 0,
"url_imagem": "<https://raw.githubusercontent.com/vcslima/banco_de_imagens/master/refrigerante_lata.png>",
"p_bc_icms": 100,
"p_icms": 10,
"cfop": 5102,
"cst": 102,
"cest": null,
"data_inc": null,
"usuario_inc": null,
"data_alt": "2020-04-07 10:48:48",
"usuario_alt": null,
"data_del": null,
"usuario_del": 0,
"composicoes": [],
"label": "Refrigerante Lata",
"quantidade": "8",
"icms_calculado": 0,
"icms_st_calculado": 0
}, {
"franchise_id": 0,
"idi": 45,
"codigo": 1937,
"descricao": "Heineken Lata",
"atalho": 1,
"tipo_produto": 0,
"tipo_sped": 0,
"unidade": 0,
"categoria_id": 10,
"fornecedor": 0,
"referencia": null,
"ncm_sh": "22021000",
"estoque_atual": -100,
"estoque_maximo": 0,
"estoque_minimo": 0,
"valor_custo": 0,
"lucro": 0,
"valor_venda": 5,
"valor_atacado": 0,
"quantidade_atacado": 0,
"ranking": 82,
"complemento": 0,
"url_imagem": "<https://raw.githubusercontent.com/vcslima/banco_de_imagens/master/cerveja_lata_heinenken.jpg>",
"p_bc_icms": 100,
"p_icms": 10,
"cfop": 5102,
"cst": 102,
"cest": null,
"data_inc": null,
"usuario_inc": null,
"data_alt": "2020-03-17 08:43:48",
"usuario_alt": null,
"data_del": null,
"usuario_del": 0,
"composicoes": [],
"label": "Heineken Lata",
"quantidade": "12"
}],
"estoque": false,
"finNFe": 1,
"tpNF": 1,
"modFrete": 9,
"infCpl": "",
"valorNota": 96,
"valorDesconto": 0,
"valorDespesa": 0,
"paymentMethod": "2",
"doc_referencia": "",
transp: {}
};
return nota;
},
imprimir(obj){
return http.get('fiscal/danfe/' + obj.id, { responseType: 'blob' })
},
enviarEmail(obj, email){
return http.get('fiscal/danfe/' + obj.id + "?email=" + email, { responseType: 'blob' })
},
loadCartasCorrecao(params = '') {
return http.get('cce' + params)
},
imprimirCartaCorrecao(obj){
return http.get('fiscal/danfe/cce/' + obj.id, { responseType: 'blob' })
},
createCartaCorrecao(carta) {
return http.post('cce/json', carta );
},
loadNotifications(data) {
let url = process.env.VUE_APP_QUARKUS_FISCAL_URL + '/fiscal/notifications'
return httpNode.get(url, data)
},
}